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

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 (439) hide show
  1. package/assets/images/gif/mitecLogoIntroMobile.gif +0 -0
  2. package/assets/images/gif/mitecLogoIntroWeb.gif +0 -0
  3. package/assets/images/lang-flags/mx.svg +392 -0
  4. package/assets/images/lang-flags/us.svg +13 -0
  5. package/assets/styles/main.min.css +1 -1
  6. package/assets/styles/main.min.css.map +1 -1
  7. package/assets/svg/neutral_fill.svg +1 -0
  8. package/assets/svg/primary_fill.svg +1 -0
  9. package/esm2022/lib/components/bmb-academic-progress/bmb-academic-progress.component.mjs +87 -0
  10. package/esm2022/lib/components/bmb-accordion/bmb-accordion.component.mjs +159 -0
  11. package/esm2022/lib/components/bmb-account-statement/bmb-account-statement.component.mjs +150 -0
  12. package/esm2022/lib/components/bmb-action-icon/bmb-action-icon.component.mjs +49 -0
  13. package/esm2022/lib/components/bmb-action-menu/bmb-action-menu.component.mjs +31 -0
  14. package/esm2022/lib/components/bmb-advertisement-card/bmb-advertisement-card.component.mjs +35 -0
  15. package/esm2022/lib/components/bmb-advertisement-card/types.mjs +2 -0
  16. package/esm2022/lib/components/bmb-alert-center/bmb-alert-center-ads/bmb-alert-center-ads.component.mjs +40 -0
  17. package/esm2022/lib/components/bmb-alert-center/bmb-alert-center-empty/bmb-alert-center-empty.component.mjs +18 -0
  18. package/esm2022/lib/components/bmb-alert-center/bmb-alert-center-form/bmb-alert-center-form.component.mjs +148 -0
  19. package/esm2022/lib/components/bmb-alert-center/bmb-alert-center-list/bmb-alert-center-list.component.mjs +52 -0
  20. package/esm2022/lib/components/bmb-alert-center/bmb-alert-center.component.mjs +196 -0
  21. package/esm2022/lib/components/bmb-alert-center/bmb-alert-center.service.mjs +62 -0
  22. package/esm2022/lib/components/bmb-alert-center/types.mjs +2 -0
  23. package/esm2022/lib/components/bmb-badge/bmb-badge.component.mjs +26 -0
  24. package/esm2022/lib/components/bmb-balance-overview/bmb-balance-overview.component.mjs +26 -0
  25. package/esm2022/lib/components/bmb-bookmark/bmb-bookmark.component.mjs +27 -0
  26. package/esm2022/lib/components/bmb-bottom-navigation-bar/bmb-bottom-navigation-bar.component.mjs +42 -0
  27. package/esm2022/lib/components/bmb-breadcrumb/bmb-breadcrumb.component.mjs +55 -0
  28. package/esm2022/lib/components/bmb-button-icon/bmb-button-icon.component.mjs +30 -0
  29. package/esm2022/lib/components/bmb-calendar/bmb-calendar.component.mjs +262 -0
  30. package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-header/bmb-calendar-header.component.mjs +96 -0
  31. package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-hour-view/bmb-calendar-hour-view.component.mjs +40 -0
  32. package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-schedule-cards/bmb-calendar-schedule-cards.component.mjs +68 -0
  33. package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-template-day/bmb-calendar-template-day.component.mjs +41 -0
  34. package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-template-event-list/bmb-calendar-template-event-list.component.mjs +63 -0
  35. package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-template-mobile/bmb-calendar-template-mobile.component.mjs +95 -0
  36. package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-template-month/bmb-calendar-template-month.component.mjs +45 -0
  37. package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-template-week/bmb-calendar-template-week.component.mjs +54 -0
  38. package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-time-indicator/bmb-calendar-time-indicator.component.mjs +24 -0
  39. package/esm2022/lib/components/bmb-calendar/types.mjs +2 -0
  40. package/esm2022/lib/components/bmb-calendar/utils.mjs +96 -0
  41. package/esm2022/lib/components/bmb-card/bmb-card.component.mjs +154 -0
  42. package/esm2022/lib/components/bmb-card-button/bmb-card-button.component.mjs +76 -0
  43. package/esm2022/lib/components/bmb-carousel/bmb-carousel.component.mjs +80 -0
  44. package/esm2022/lib/components/bmb-chat-bar/bmb-chat-bar.component.mjs +175 -0
  45. package/esm2022/lib/components/bmb-chat-bar/bot_list.mjs +57 -0
  46. package/esm2022/lib/components/bmb-chat-bar/types.mjs +2 -0
  47. package/esm2022/lib/components/bmb-chat-bubbles/bmb-chat-bubbles.component.mjs +56 -0
  48. package/esm2022/lib/components/bmb-chat-bubbles/types.mjs +2 -0
  49. package/esm2022/lib/components/bmb-check-external-link-button/bmb-check-external-link-button.component.mjs +46 -0
  50. package/esm2022/lib/components/bmb-checkbox/bmb-checkbox.component.mjs +80 -0
  51. package/esm2022/lib/components/bmb-chevron-title-selector/bmb-chevron-title-selector.component.mjs +36 -0
  52. package/esm2022/lib/components/bmb-container/bmb-container.component.mjs +27 -0
  53. package/esm2022/lib/components/bmb-container-button/bmb-container-button.component.mjs +96 -0
  54. package/esm2022/lib/components/bmb-date-range/bmb-date-range.component.mjs +69 -0
  55. package/esm2022/lib/components/bmb-datepicker/bmb-datepicker-modal/bmb-datepicker-modal.component.mjs +211 -0
  56. package/esm2022/lib/components/bmb-datepicker/bmb-datepicker.component.mjs +123 -0
  57. package/esm2022/lib/components/bmb-digital-id/bmb-digital-id.component.mjs +54 -0
  58. package/esm2022/lib/components/bmb-divider/bmb-divider.component.mjs +25 -0
  59. package/esm2022/lib/components/bmb-dot-paginator/bmb-dot-paginator.component.mjs +34 -0
  60. package/esm2022/lib/components/bmb-drawer-overlay/bmb-drawer-overlay.component.mjs +54 -0
  61. package/esm2022/lib/components/bmb-dropdown/bmb-dropdown.component.mjs +200 -0
  62. package/esm2022/lib/components/bmb-dropdown-menu/bmb-dropdown-menu.component.mjs +28 -0
  63. package/esm2022/lib/components/bmb-dropzone/bmb-dropzone.component.mjs +175 -0
  64. package/esm2022/lib/components/bmb-evaluation-rubric/bmb-evaluation-rubric.component.mjs +76 -0
  65. package/esm2022/lib/components/bmb-external-link/bmb-external-link.component.mjs +78 -0
  66. package/esm2022/lib/components/bmb-fab/bmb-fab-.interface.mjs +9 -0
  67. package/esm2022/lib/components/bmb-fab/bmb-fab.component.mjs +37 -0
  68. package/esm2022/lib/components/bmb-filter-card/bmb-filter-card.component.mjs +154 -0
  69. package/esm2022/lib/components/bmb-filter-card/bmb-filter-card.interface.mjs +2 -0
  70. package/esm2022/lib/components/bmb-focus-element/bmb-focus-element.component.mjs +36 -0
  71. package/esm2022/lib/components/bmb-form-validation/bmb-form-validation.component.mjs +159 -0
  72. package/esm2022/lib/components/bmb-form-validator/bmb-form-validator.component.mjs +159 -0
  73. package/esm2022/lib/components/bmb-frequent-apps-selector/bmb-frequent-apps-selector.component.mjs +29 -0
  74. package/esm2022/lib/components/bmb-grade-value/bmb-grade-value.component.mjs +22 -0
  75. package/esm2022/lib/components/bmb-grades/bmb-grades.component.mjs +181 -0
  76. package/esm2022/lib/components/bmb-grades/types.mjs +2 -0
  77. package/esm2022/lib/components/bmb-header-mitec/bmb-header-mitec.component.mjs +55 -0
  78. package/esm2022/lib/components/bmb-header-mobile/bmb-header-mobile.component.mjs +49 -0
  79. package/esm2022/lib/components/bmb-hito-card/bmb-hito-card.component.mjs +77 -0
  80. package/esm2022/lib/components/bmb-hito-list/bmb-hito-list.component.mjs +59 -0
  81. package/esm2022/lib/components/bmb-home-card/bmb-home-card-header/bmb-home-card-header.component.mjs +76 -0
  82. package/esm2022/lib/components/bmb-home-card/bmb-home-card.component.mjs +41 -0
  83. package/esm2022/lib/components/bmb-home-card-chat/bmb-home-card-chat.component.mjs +39 -0
  84. package/esm2022/lib/components/bmb-home-section/bmb-home-section.component.mjs +20 -0
  85. package/esm2022/lib/components/bmb-icon/bmb-icon.component.mjs +49 -0
  86. package/esm2022/lib/components/bmb-icon/types.mjs +2 -0
  87. package/esm2022/lib/components/bmb-icon-item/bmb-icon-item.component.mjs +23 -0
  88. package/esm2022/lib/components/bmb-icon-status/bmb-icon-status.component.mjs +24 -0
  89. package/esm2022/lib/components/bmb-iframe/bmb-iframe.component.mjs +19 -0
  90. package/esm2022/lib/components/bmb-iframe/bmb-iframe.pipe.mjs +21 -0
  91. package/esm2022/lib/components/bmb-image/bmb-image.component.mjs +33 -0
  92. package/esm2022/lib/components/bmb-inner-header/bmb-inner-header.component.mjs +77 -0
  93. package/esm2022/lib/components/bmb-input/bmb-input-content/bmb-input-content.component.mjs +147 -0
  94. package/esm2022/lib/components/bmb-input/bmb-input-validation/bmb-input-validation.component.mjs +162 -0
  95. package/esm2022/lib/components/bmb-input/bmb-input-validation/bmb-input-validation.service.mjs +116 -0
  96. package/esm2022/lib/components/bmb-input/bmb-input-validator/bmb-input-validator.component.mjs +178 -0
  97. package/esm2022/lib/components/bmb-input/bmb-input.component.mjs +85 -0
  98. package/esm2022/lib/components/bmb-input-phone-number/bmb-input-phone-number.component.mjs +219 -0
  99. package/esm2022/lib/components/bmb-input-tags/bmb-input-tags.component.mjs +191 -0
  100. package/esm2022/lib/components/bmb-interactive-icon/bmb-interactive-icon.component.mjs +54 -0
  101. package/esm2022/lib/components/bmb-invoice/bmb-invoice.component.mjs +34 -0
  102. package/esm2022/lib/components/bmb-item/bmb-item.component.mjs +28 -0
  103. package/esm2022/lib/components/bmb-legend/bmb-legend.component.mjs +23 -0
  104. package/esm2022/lib/components/bmb-list-group/bmb-list-group-item/bmb-list-group-item.component.mjs +83 -0
  105. package/esm2022/lib/components/bmb-list-group/bmb-list-group.component.mjs +60 -0
  106. package/esm2022/lib/components/bmb-list-group/bmb-list-group.service.mjs +55 -0
  107. package/esm2022/lib/components/bmb-list-group/types.mjs +2 -0
  108. package/esm2022/lib/components/bmb-list-items/bmb-list-items.component.mjs +83 -0
  109. package/esm2022/lib/components/bmb-loader/bmb-loader.component.mjs +77 -0
  110. package/esm2022/lib/components/bmb-login/bmb-login-content/bmb-login-content.component.mjs +55 -0
  111. package/esm2022/lib/components/bmb-login/bmb-login.component.mjs +66 -0
  112. package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-logged/bmb-login-onboarding-logged.component.mjs +40 -0
  113. package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-login/bmb-login-onboarding-login.component.mjs +20 -0
  114. package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-logout/bmb-login-onboarding-logout.component.mjs +33 -0
  115. package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-stepper/bmb-login-onboarding-stepper-steps/bmb-login-onboarding-stepper-step-four.component.mjs +87 -0
  116. package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-stepper/bmb-login-onboarding-stepper-steps/bmb-login-onboarding-stepper-step-one.component.mjs +88 -0
  117. package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-stepper/bmb-login-onboarding-stepper-steps/bmb-login-onboarding-stepper-step-three.component.mjs +57 -0
  118. package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-stepper/bmb-login-onboarding-stepper-steps/bmb-login-onboarding-stepper-step-two.component.mjs +99 -0
  119. package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-stepper/bmb-login-onboarding-stepper-steps/bmb-login-onboarding-stepper-step.component.mjs +39 -0
  120. package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-stepper/bmb-login-onboarding-stepper.component.mjs +44 -0
  121. package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding.component.mjs +52 -0
  122. package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding.service.mjs +70 -0
  123. package/esm2022/lib/components/bmb-login-onboarding/types.mjs +2 -0
  124. package/esm2022/lib/components/bmb-logo/bmb-logo.component.mjs +43 -0
  125. package/esm2022/lib/components/bmb-media-card/bmb-media-card.component.mjs +64 -0
  126. package/esm2022/lib/components/bmb-mitec-logo-animation/bmb-mitec-logo-animation.component.mjs +14 -0
  127. package/esm2022/lib/components/bmb-mobile-templates/bmb-mobile-templates.component.mjs +88 -0
  128. package/esm2022/lib/components/bmb-modal/bmb-modal.component.mjs +139 -0
  129. package/esm2022/lib/components/bmb-modal/bmb-modal.interface.mjs +2 -0
  130. package/esm2022/lib/components/bmb-modal/bmb-native-modal.component.mjs +113 -0
  131. package/esm2022/lib/components/bmb-multi-dot-paginator/bmb-multi-dot-paginator-item/bmb-multi-dot-paginator-item.component.mjs +15 -0
  132. package/esm2022/lib/components/bmb-multi-dot-paginator/bmb-multi-dot-paginator.component.mjs +59 -0
  133. package/esm2022/lib/components/bmb-navigation-bar/bmb-navigation-bar.component.mjs +30 -0
  134. package/esm2022/lib/components/bmb-notice-card/bmb-notice-card.component.mjs +43 -0
  135. package/esm2022/lib/components/bmb-notification-card/bmb-notification-card.component.mjs +86 -0
  136. package/esm2022/lib/components/bmb-overlay/bmb-overlay.component.mjs +22 -0
  137. package/esm2022/lib/components/bmb-paginator/bmb-paginator.component.mjs +52 -0
  138. package/esm2022/lib/components/bmb-portal/bmb-portal.component.mjs +55 -0
  139. package/esm2022/lib/components/bmb-portal/bmb-projected-content/bmb-projected-content.component.mjs +129 -0
  140. package/esm2022/lib/components/bmb-profile/bmb-profile.component.mjs +153 -0
  141. package/esm2022/lib/components/bmb-progress-bar/bmb-progress-bar.component.mjs +39 -0
  142. package/esm2022/lib/components/bmb-progress-cirlce/bmb-progress-circle.component.mjs +196 -0
  143. package/esm2022/lib/components/bmb-progress-cirlce/bmb-progress-circle.interface.mjs +2 -0
  144. package/esm2022/lib/components/bmb-pull-wedge/bmb-pull-wedge.component.mjs +88 -0
  145. package/esm2022/lib/components/bmb-push-notification/bmb-push-notification-item/bmb-push-notification-item.component.mjs +75 -0
  146. package/esm2022/lib/components/bmb-push-notification/bmb-push-notification.component.mjs +24 -0
  147. package/esm2022/lib/components/bmb-push-notification/types.mjs +2 -0
  148. package/esm2022/lib/components/bmb-radial/bmb-radial.component.mjs +78 -0
  149. package/esm2022/lib/components/bmb-search-input/bmb-search-input.component.mjs +117 -0
  150. package/esm2022/lib/components/bmb-select/bmb-select-item/bmb-select-item.component.mjs +16 -0
  151. package/esm2022/lib/components/bmb-select/bmb-select.component.mjs +55 -0
  152. package/esm2022/lib/components/bmb-server-table/bmb-server-table.component.mjs +82 -0
  153. package/esm2022/lib/components/bmb-sidebar/bmb-sidebar.component.mjs +103 -0
  154. package/esm2022/lib/components/bmb-sidebar/bmb-sidebar.interface.mjs +2 -0
  155. package/esm2022/lib/components/bmb-simple-header/bmb-simple-header.component.mjs +64 -0
  156. package/esm2022/lib/components/bmb-skeleton/bmb-skeleton.component.mjs +16 -0
  157. package/esm2022/lib/components/bmb-sounds-card/bmb-sounds-card.component.mjs +64 -0
  158. package/esm2022/lib/components/bmb-stat-counter/bmb-stat-counter.component.mjs +32 -0
  159. package/esm2022/lib/components/bmb-step-progress-bar/bmb-step-progress-bar.component.mjs +41 -0
  160. package/esm2022/lib/components/bmb-student-activity-card/bmb-student-activity-card.component.mjs +53 -0
  161. package/esm2022/lib/components/bmb-student-activity-selector/bmb-student-activity-tab/bmb-student-activity-tab.component.mjs +27 -0
  162. package/esm2022/lib/components/bmb-switch/bmb-switch.component.mjs +88 -0
  163. package/esm2022/lib/components/bmb-tables/bmb-tables.component.mjs +545 -0
  164. package/esm2022/lib/components/bmb-tables/bmb-tables.interface.mjs +2 -0
  165. package/esm2022/lib/components/bmb-tabs/bmb-tabs.component.mjs +127 -0
  166. package/esm2022/lib/components/bmb-tags/bmb-tags.component.mjs +65 -0
  167. package/esm2022/lib/components/bmb-text-editor/bmb-text-editor.component.mjs +135 -0
  168. package/esm2022/lib/components/bmb-text-link/bmb-text-link.component.mjs +43 -0
  169. package/esm2022/lib/components/bmb-theme/bmb-theme.component.mjs +65 -0
  170. package/esm2022/lib/components/bmb-three-cols/bmb-three-cols.component.mjs +30 -0
  171. package/esm2022/lib/components/bmb-timestream/bmb-timestream-detail/bmb-timestream-detail.component.mjs +74 -0
  172. package/esm2022/lib/components/bmb-timestream/bmb-timestream-error/bmb-timestream-error.component.mjs +13 -0
  173. package/esm2022/lib/components/bmb-timestream/bmb-timestream.component.mjs +238 -0
  174. package/esm2022/lib/components/bmb-timestream/types.mjs +2 -0
  175. package/esm2022/lib/components/bmb-timestream-card/bmb-timestream-card.component.mjs +139 -0
  176. package/esm2022/lib/components/bmb-title-content/bmb-title-content.component.mjs +61 -0
  177. package/esm2022/lib/components/bmb-toast/bmb-toast.component.mjs +47 -0
  178. package/esm2022/lib/components/bmb-tooltip/bmb-tooltip.component.mjs +26 -0
  179. package/esm2022/lib/components/bmb-top-bar/bmb-top-bar-item/bmb-top-bar-item.component.mjs +31 -0
  180. package/esm2022/lib/components/bmb-top-bar/bmb-top-bar-user-section/bmb-top-bar-user-section.component.mjs +56 -0
  181. package/esm2022/lib/components/bmb-top-bar/bmb-top-bar.component.mjs +80 -0
  182. package/esm2022/lib/components/bmb-top-bar/types.mjs +2 -0
  183. package/esm2022/lib/components/bmb-totp/bmb-totp.component.mjs +139 -0
  184. package/esm2022/lib/components/bmb-user-image/bmb-user-image.component.mjs +44 -0
  185. package/esm2022/lib/components/bmb-user-profile/bmb-user-profile-content/bmb-user-profile-content.component.mjs +19 -0
  186. package/esm2022/lib/components/bmb-user-profile/bmb-user-profile.component.mjs +71 -0
  187. package/esm2022/lib/components/bmb-user-summary/bmb-user-summary-content/bmb-user-summary-content.component.mjs +51 -0
  188. package/esm2022/lib/components/bmb-user-summary/bmb-user-summary.component.mjs +28 -0
  189. package/esm2022/lib/components/bmb-value-counter/bmb-value-counter.component.mjs +23 -0
  190. package/esm2022/lib/components/bmb-web-templates/bmb-web-templates.component.mjs +85 -0
  191. package/esm2022/lib/components/bmb-wheel-menu/bmb-wheel-menu.component.mjs +128 -0
  192. package/esm2022/lib/components/utils/bmb-dropdown-content/bmb-dropdown-content.component.mjs +55 -0
  193. package/esm2022/lib/directives/bmb-accordion/bmb-accordion-control.directive.mjs +88 -0
  194. package/esm2022/lib/directives/bmb-button/button.directive.mjs +84 -0
  195. package/esm2022/lib/directives/bmb-button-group/bmb-button-group.directive.mjs +29 -0
  196. package/esm2022/lib/directives/bmb-layout/bmb-layout-item.directive.mjs +51 -0
  197. package/esm2022/lib/directives/bmb-layout/bmb-layout.directive.mjs +36 -0
  198. package/esm2022/lib/directives/bmb-layout/bmb-vertical-layout/bmb-vertical-layout-item.directive.mjs +34 -0
  199. package/esm2022/lib/directives/bmb-layout/bmb-vertical-layout/bmb-vertical-layout.directive.mjs +37 -0
  200. package/esm2022/lib/directives/bmb-layout-grid/bmb-layout-grid.directive.mjs +89 -0
  201. package/esm2022/lib/directives/utils/clickoutside.directive.mjs +41 -0
  202. package/esm2022/lib/ds-ng.component.mjs +11 -0
  203. package/esm2022/lib/ds-ng.service.mjs +14 -0
  204. package/esm2022/lib/services/calendar.service.mjs +51 -0
  205. package/esm2022/lib/services/index.mjs +3 -0
  206. package/esm2022/lib/services/native-modal.service.mjs +60 -0
  207. package/esm2022/lib/services/notification.service.mjs +77 -0
  208. package/esm2022/lib/services/projection.service.mjs +49 -0
  209. package/esm2022/lib/services/tabs.service.mjs +30 -0
  210. package/esm2022/lib/services/theme.service.mjs +30 -0
  211. package/esm2022/lib/services/toast.service.mjs +24 -0
  212. package/esm2022/lib/services/user/profile.service.mjs +26 -0
  213. package/esm2022/lib/types/colors.mjs +2 -0
  214. package/esm2022/lib/types/index.mjs +11 -0
  215. package/esm2022/lib/utils/countryCodes.mjs +1089 -0
  216. package/esm2022/lib/utils/currencyFormat.mjs +7 -0
  217. package/esm2022/lib/utils/dropdown.mjs +85 -0
  218. package/esm2022/lib/utils/formControl.mjs +25 -0
  219. package/esm2022/lib/utils/timestreamFilters.mjs +32 -0
  220. package/esm2022/lib/utils/utils.mjs +66 -0
  221. package/esm2022/public-api.mjs +152 -0
  222. package/esm2022/ti-tecnologico-de-monterrey-oficial-ds-ng.mjs +5 -0
  223. package/fesm2022/ti-tecnologico-de-monterrey-oficial-ds-ng.mjs +3884 -3179
  224. package/fesm2022/ti-tecnologico-de-monterrey-oficial-ds-ng.mjs.map +1 -1
  225. package/index.d.ts +5 -3573
  226. package/lib/components/bmb-academic-progress/bmb-academic-progress.component.d.ts +21 -0
  227. package/lib/components/bmb-accordion/bmb-accordion.component.d.ts +37 -0
  228. package/lib/components/bmb-account-statement/bmb-account-statement.component.d.ts +54 -0
  229. package/lib/components/bmb-action-icon/bmb-action-icon.component.d.ts +23 -0
  230. package/lib/components/bmb-action-menu/bmb-action-menu.component.d.ts +17 -0
  231. package/lib/components/bmb-advertisement-card/bmb-advertisement-card.component.d.ts +13 -0
  232. package/lib/components/bmb-advertisement-card/types.d.ts +21 -0
  233. package/lib/components/bmb-alert-center/bmb-alert-center-ads/bmb-alert-center-ads.component.d.ts +10 -0
  234. package/lib/components/bmb-alert-center/bmb-alert-center-empty/bmb-alert-center-empty.component.d.ts +7 -0
  235. package/lib/components/bmb-alert-center/bmb-alert-center-form/bmb-alert-center-form.component.d.ts +31 -0
  236. package/lib/components/bmb-alert-center/bmb-alert-center-list/bmb-alert-center-list.component.d.ts +20 -0
  237. package/lib/components/bmb-alert-center/bmb-alert-center.component.d.ts +46 -0
  238. package/lib/components/bmb-alert-center/bmb-alert-center.service.d.ts +20 -0
  239. package/lib/components/bmb-alert-center/types.d.ts +64 -0
  240. package/lib/components/bmb-badge/bmb-badge.component.d.ts +11 -0
  241. package/lib/components/bmb-balance-overview/bmb-balance-overview.component.d.ts +15 -0
  242. package/lib/components/bmb-bookmark/bmb-bookmark.component.d.ts +8 -0
  243. package/lib/components/bmb-bottom-navigation-bar/bmb-bottom-navigation-bar.component.d.ts +25 -0
  244. package/lib/components/bmb-breadcrumb/bmb-breadcrumb.component.d.ts +27 -0
  245. package/lib/components/bmb-button-icon/bmb-button-icon.component.d.ts +16 -0
  246. package/lib/components/bmb-calendar/bmb-calendar.component.d.ts +65 -0
  247. package/lib/components/bmb-calendar/common/bmb-calendar-header/bmb-calendar-header.component.d.ts +20 -0
  248. package/lib/components/bmb-calendar/common/bmb-calendar-hour-view/bmb-calendar-hour-view.component.d.ts +13 -0
  249. package/lib/components/bmb-calendar/common/bmb-calendar-schedule-cards/bmb-calendar-schedule-cards.component.d.ts +16 -0
  250. package/lib/components/bmb-calendar/common/bmb-calendar-template-day/bmb-calendar-template-day.component.d.ts +18 -0
  251. package/lib/components/bmb-calendar/common/bmb-calendar-template-event-list/bmb-calendar-template-event-list.component.d.ts +17 -0
  252. package/lib/components/bmb-calendar/common/bmb-calendar-template-mobile/bmb-calendar-template-mobile.component.d.ts +31 -0
  253. package/lib/components/bmb-calendar/common/bmb-calendar-template-month/bmb-calendar-template-month.component.d.ts +18 -0
  254. package/lib/components/bmb-calendar/common/bmb-calendar-template-week/bmb-calendar-template-week.component.d.ts +23 -0
  255. package/lib/components/bmb-calendar/common/bmb-calendar-time-indicator/bmb-calendar-time-indicator.component.d.ts +9 -0
  256. package/lib/components/bmb-calendar/types.d.ts +43 -0
  257. package/lib/components/bmb-calendar/utils.d.ts +12 -0
  258. package/lib/components/bmb-card/bmb-card.component.d.ts +42 -0
  259. package/lib/components/bmb-card-button/bmb-card-button.component.d.ts +50 -0
  260. package/lib/components/bmb-carousel/bmb-carousel.component.d.ts +20 -0
  261. package/lib/components/bmb-chat-bar/bmb-chat-bar.component.d.ts +62 -0
  262. package/lib/components/bmb-chat-bar/bot_list.d.ts +6 -0
  263. package/lib/components/bmb-chat-bar/types.d.ts +9 -0
  264. package/lib/components/bmb-chat-bubbles/bmb-chat-bubbles.component.d.ts +23 -0
  265. package/lib/components/bmb-chat-bubbles/types.d.ts +23 -0
  266. package/lib/components/bmb-check-external-link-button/bmb-check-external-link-button.component.d.ts +21 -0
  267. package/lib/components/bmb-checkbox/bmb-checkbox.component.d.ts +33 -0
  268. package/lib/components/bmb-chevron-title-selector/bmb-chevron-title-selector.component.d.ts +17 -0
  269. package/lib/components/bmb-container/bmb-container.component.d.ts +9 -0
  270. package/lib/components/bmb-container-button/bmb-container-button.component.d.ts +39 -0
  271. package/lib/components/bmb-date-range/bmb-date-range.component.d.ts +35 -0
  272. package/lib/components/bmb-datepicker/bmb-datepicker-modal/bmb-datepicker-modal.component.d.ts +40 -0
  273. package/lib/components/bmb-datepicker/bmb-datepicker.component.d.ts +44 -0
  274. package/lib/components/bmb-digital-id/bmb-digital-id.component.d.ts +26 -0
  275. package/lib/components/bmb-divider/bmb-divider.component.d.ts +8 -0
  276. package/lib/components/bmb-dot-paginator/bmb-dot-paginator.component.d.ts +17 -0
  277. package/lib/components/bmb-drawer-overlay/bmb-drawer-overlay.component.d.ts +24 -0
  278. package/lib/components/bmb-dropdown/bmb-dropdown.component.d.ts +61 -0
  279. package/lib/components/bmb-dropdown-menu/bmb-dropdown-menu.component.d.ts +10 -0
  280. package/lib/components/bmb-dropzone/bmb-dropzone.component.d.ts +49 -0
  281. package/lib/components/bmb-evaluation-rubric/bmb-evaluation-rubric.component.d.ts +45 -0
  282. package/lib/components/bmb-external-link/bmb-external-link.component.d.ts +22 -0
  283. package/lib/components/bmb-fab/bmb-fab-.interface.d.ts +10 -0
  284. package/lib/components/bmb-fab/bmb-fab.component.d.ts +15 -0
  285. package/lib/components/bmb-filter-card/bmb-filter-card.component.d.ts +33 -0
  286. package/lib/components/bmb-filter-card/bmb-filter-card.interface.d.ts +10 -0
  287. package/lib/components/bmb-focus-element/bmb-focus-element.component.d.ts +14 -0
  288. package/lib/components/bmb-form-validation/bmb-form-validation.component.d.ts +34 -0
  289. package/lib/components/bmb-form-validator/bmb-form-validator.component.d.ts +34 -0
  290. package/lib/components/bmb-frequent-apps-selector/bmb-frequent-apps-selector.component.d.ts +13 -0
  291. package/lib/components/bmb-grade-value/bmb-grade-value.component.d.ts +11 -0
  292. package/lib/components/bmb-grades/bmb-grades.component.d.ts +43 -0
  293. package/lib/components/bmb-grades/types.d.ts +25 -0
  294. package/lib/components/bmb-header-mitec/bmb-header-mitec.component.d.ts +17 -0
  295. package/lib/components/bmb-header-mobile/bmb-header-mobile.component.d.ts +23 -0
  296. package/lib/components/bmb-hito-card/bmb-hito-card.component.d.ts +23 -0
  297. package/lib/components/bmb-hito-list/bmb-hito-list.component.d.ts +24 -0
  298. package/lib/components/bmb-home-card/bmb-home-card-header/bmb-home-card-header.component.d.ts +28 -0
  299. package/lib/components/bmb-home-card/bmb-home-card.component.d.ts +27 -0
  300. package/lib/components/bmb-home-card-chat/bmb-home-card-chat.component.d.ts +25 -0
  301. package/lib/components/bmb-home-section/bmb-home-section.component.d.ts +9 -0
  302. package/lib/components/bmb-icon/bmb-icon.component.d.ts +23 -0
  303. package/lib/components/bmb-icon/types.d.ts +1 -0
  304. package/lib/components/bmb-icon-item/bmb-icon-item.component.d.ts +13 -0
  305. package/lib/components/bmb-icon-status/bmb-icon-status.component.d.ts +10 -0
  306. package/lib/components/bmb-iframe/bmb-iframe.component.d.ts +11 -0
  307. package/lib/components/bmb-iframe/bmb-iframe.pipe.d.ts +10 -0
  308. package/lib/components/bmb-image/bmb-image.component.d.ts +19 -0
  309. package/lib/components/bmb-inner-header/bmb-inner-header.component.d.ts +29 -0
  310. package/lib/components/bmb-input/bmb-input-content/bmb-input-content.component.d.ts +53 -0
  311. package/lib/components/bmb-input/bmb-input-validation/bmb-input-validation.component.d.ts +46 -0
  312. package/lib/components/bmb-input/bmb-input-validation/bmb-input-validation.service.d.ts +16 -0
  313. package/lib/components/bmb-input/bmb-input-validator/bmb-input-validator.component.d.ts +45 -0
  314. package/lib/components/bmb-input/bmb-input.component.d.ts +68 -0
  315. package/lib/components/bmb-input-phone-number/bmb-input-phone-number.component.d.ts +52 -0
  316. package/lib/components/bmb-input-tags/bmb-input-tags.component.d.ts +55 -0
  317. package/lib/components/bmb-interactive-icon/bmb-interactive-icon.component.d.ts +23 -0
  318. package/lib/components/bmb-invoice/bmb-invoice.component.d.ts +31 -0
  319. package/lib/components/bmb-item/bmb-item.component.d.ts +16 -0
  320. package/lib/components/bmb-legend/bmb-legend.component.d.ts +9 -0
  321. package/lib/components/bmb-list-group/bmb-list-group-item/bmb-list-group-item.component.d.ts +33 -0
  322. package/lib/components/bmb-list-group/bmb-list-group.component.d.ts +27 -0
  323. package/lib/components/bmb-list-group/bmb-list-group.service.d.ts +18 -0
  324. package/lib/components/bmb-list-group/types.d.ts +1 -0
  325. package/lib/components/bmb-list-items/bmb-list-items.component.d.ts +33 -0
  326. package/lib/components/bmb-loader/bmb-loader.component.d.ts +31 -0
  327. package/lib/components/bmb-login/bmb-login-content/bmb-login-content.component.d.ts +27 -0
  328. package/lib/components/bmb-login/bmb-login.component.d.ts +33 -0
  329. package/lib/components/bmb-login-onboarding/bmb-login-onboarding-logged/bmb-login-onboarding-logged.component.d.ts +14 -0
  330. package/lib/components/bmb-login-onboarding/bmb-login-onboarding-login/bmb-login-onboarding-login.component.d.ts +8 -0
  331. package/lib/components/bmb-login-onboarding/bmb-login-onboarding-logout/bmb-login-onboarding-logout.component.d.ts +12 -0
  332. package/lib/components/bmb-login-onboarding/bmb-login-onboarding-stepper/bmb-login-onboarding-stepper-steps/bmb-login-onboarding-stepper-step-four.component.d.ts +18 -0
  333. package/lib/components/bmb-login-onboarding/bmb-login-onboarding-stepper/bmb-login-onboarding-stepper-steps/bmb-login-onboarding-stepper-step-one.component.d.ts +17 -0
  334. package/lib/components/bmb-login-onboarding/bmb-login-onboarding-stepper/bmb-login-onboarding-stepper-steps/bmb-login-onboarding-stepper-step-three.component.d.ts +11 -0
  335. package/lib/components/bmb-login-onboarding/bmb-login-onboarding-stepper/bmb-login-onboarding-stepper-steps/bmb-login-onboarding-stepper-step-two.component.d.ts +19 -0
  336. package/lib/components/bmb-login-onboarding/bmb-login-onboarding-stepper/bmb-login-onboarding-stepper-steps/bmb-login-onboarding-stepper-step.component.d.ts +19 -0
  337. package/lib/components/bmb-login-onboarding/bmb-login-onboarding-stepper/bmb-login-onboarding-stepper.component.d.ts +15 -0
  338. package/lib/components/bmb-login-onboarding/bmb-login-onboarding.component.d.ts +20 -0
  339. package/lib/components/bmb-login-onboarding/bmb-login-onboarding.service.d.ts +25 -0
  340. package/lib/components/bmb-login-onboarding/types.d.ts +15 -0
  341. package/lib/components/bmb-logo/bmb-logo.component.d.ts +19 -0
  342. package/lib/components/bmb-media-card/bmb-media-card.component.d.ts +34 -0
  343. package/lib/components/bmb-mitec-logo-animation/bmb-mitec-logo-animation.component.d.ts +6 -0
  344. package/lib/components/bmb-mobile-templates/bmb-mobile-templates.component.d.ts +47 -0
  345. package/lib/components/bmb-modal/bmb-modal.component.d.ts +31 -0
  346. package/lib/components/bmb-modal/bmb-modal.interface.d.ts +41 -0
  347. package/lib/components/bmb-modal/bmb-native-modal.component.d.ts +44 -0
  348. package/lib/components/bmb-multi-dot-paginator/bmb-multi-dot-paginator-item/bmb-multi-dot-paginator-item.component.d.ts +7 -0
  349. package/lib/components/bmb-multi-dot-paginator/bmb-multi-dot-paginator.component.d.ts +15 -0
  350. package/lib/components/bmb-navigation-bar/bmb-navigation-bar.component.d.ts +13 -0
  351. package/lib/components/bmb-notice-card/bmb-notice-card.component.d.ts +21 -0
  352. package/lib/components/bmb-notification-card/bmb-notification-card.component.d.ts +27 -0
  353. package/lib/components/bmb-overlay/bmb-overlay.component.d.ts +9 -0
  354. package/lib/components/bmb-paginator/bmb-paginator.component.d.ts +14 -0
  355. package/lib/components/bmb-portal/bmb-portal.component.d.ts +22 -0
  356. package/lib/components/bmb-portal/bmb-projected-content/bmb-projected-content.component.d.ts +42 -0
  357. package/lib/components/bmb-profile/bmb-profile.component.d.ts +34 -0
  358. package/lib/components/bmb-progress-bar/bmb-progress-bar.component.d.ts +19 -0
  359. package/lib/components/bmb-progress-cirlce/bmb-progress-circle.component.d.ts +51 -0
  360. package/lib/components/bmb-progress-cirlce/bmb-progress-circle.interface.d.ts +12 -0
  361. package/lib/components/bmb-pull-wedge/bmb-pull-wedge.component.d.ts +23 -0
  362. package/lib/components/bmb-push-notification/bmb-push-notification-item/bmb-push-notification-item.component.d.ts +18 -0
  363. package/lib/components/bmb-push-notification/bmb-push-notification.component.d.ts +11 -0
  364. package/lib/components/bmb-push-notification/types.d.ts +46 -0
  365. package/lib/components/bmb-radial/bmb-radial.component.d.ts +33 -0
  366. package/lib/components/bmb-search-input/bmb-search-input.component.d.ts +33 -0
  367. package/lib/components/bmb-select/bmb-select-item/bmb-select-item.component.d.ts +6 -0
  368. package/lib/components/bmb-select/bmb-select.component.d.ts +17 -0
  369. package/lib/components/bmb-server-table/bmb-server-table.component.d.ts +26 -0
  370. package/lib/components/bmb-sidebar/bmb-sidebar.component.d.ts +27 -0
  371. package/lib/components/bmb-sidebar/bmb-sidebar.interface.d.ts +10 -0
  372. package/lib/components/bmb-simple-header/bmb-simple-header.component.d.ts +10 -0
  373. package/lib/components/bmb-skeleton/bmb-skeleton.component.d.ts +7 -0
  374. package/lib/components/bmb-sounds-card/bmb-sounds-card.component.d.ts +24 -0
  375. package/lib/components/bmb-stat-counter/bmb-stat-counter.component.d.ts +11 -0
  376. package/lib/components/bmb-step-progress-bar/bmb-step-progress-bar.component.d.ts +20 -0
  377. package/lib/components/bmb-student-activity-card/bmb-student-activity-card.component.d.ts +23 -0
  378. package/lib/components/bmb-student-activity-selector/bmb-student-activity-tab/bmb-student-activity-tab.component.d.ts +10 -0
  379. package/lib/components/bmb-switch/bmb-switch.component.d.ts +25 -0
  380. package/lib/components/bmb-tables/bmb-tables.component.d.ts +104 -0
  381. package/lib/components/bmb-tables/bmb-tables.interface.d.ts +21 -0
  382. package/lib/components/bmb-tabs/bmb-tabs.component.d.ts +41 -0
  383. package/lib/components/bmb-tags/bmb-tags.component.d.ts +25 -0
  384. package/lib/components/bmb-text-editor/bmb-text-editor.component.d.ts +34 -0
  385. package/lib/components/bmb-text-link/bmb-text-link.component.d.ts +17 -0
  386. package/lib/components/bmb-theme/bmb-theme.component.d.ts +19 -0
  387. package/lib/components/bmb-three-cols/bmb-three-cols.component.d.ts +15 -0
  388. package/lib/components/bmb-timestream/bmb-timestream-detail/bmb-timestream-detail.component.d.ts +25 -0
  389. package/lib/components/bmb-timestream/bmb-timestream-error/bmb-timestream-error.component.d.ts +5 -0
  390. package/lib/components/bmb-timestream/bmb-timestream.component.d.ts +67 -0
  391. package/lib/components/bmb-timestream/types.d.ts +54 -0
  392. package/lib/components/bmb-timestream-card/bmb-timestream-card.component.d.ts +29 -0
  393. package/lib/components/bmb-title-content/bmb-title-content.component.d.ts +26 -0
  394. package/lib/components/bmb-toast/bmb-toast.component.d.ts +16 -0
  395. package/lib/components/bmb-tooltip/bmb-tooltip.component.d.ts +15 -0
  396. package/lib/components/bmb-top-bar/bmb-top-bar-item/bmb-top-bar-item.component.d.ts +7 -0
  397. package/lib/components/bmb-top-bar/bmb-top-bar-user-section/bmb-top-bar-user-section.component.d.ts +30 -0
  398. package/lib/components/bmb-top-bar/bmb-top-bar.component.d.ts +44 -0
  399. package/lib/components/bmb-top-bar/types.d.ts +6 -0
  400. package/lib/components/bmb-totp/bmb-totp.component.d.ts +31 -0
  401. package/lib/components/bmb-user-image/bmb-user-image.component.d.ts +19 -0
  402. package/lib/components/bmb-user-profile/bmb-user-profile-content/bmb-user-profile-content.component.d.ts +10 -0
  403. package/lib/components/bmb-user-profile/bmb-user-profile.component.d.ts +19 -0
  404. package/lib/components/bmb-user-summary/bmb-user-summary-content/bmb-user-summary-content.component.d.ts +24 -0
  405. package/lib/components/bmb-user-summary/bmb-user-summary.component.d.ts +14 -0
  406. package/lib/components/bmb-value-counter/bmb-value-counter.component.d.ts +8 -0
  407. package/lib/components/bmb-web-templates/bmb-web-templates.component.d.ts +42 -0
  408. package/lib/components/bmb-wheel-menu/bmb-wheel-menu.component.d.ts +40 -0
  409. package/lib/components/utils/bmb-dropdown-content/bmb-dropdown-content.component.d.ts +16 -0
  410. package/lib/directives/bmb-accordion/bmb-accordion-control.directive.d.ts +22 -0
  411. package/lib/directives/bmb-button/button.directive.d.ts +29 -0
  412. package/lib/directives/bmb-button-group/bmb-button-group.directive.d.ts +10 -0
  413. package/lib/directives/bmb-layout/bmb-layout-item.directive.d.ts +20 -0
  414. package/lib/directives/bmb-layout/bmb-layout.directive.d.ts +15 -0
  415. package/lib/directives/bmb-layout/bmb-vertical-layout/bmb-vertical-layout-item.directive.d.ts +9 -0
  416. package/lib/directives/bmb-layout/bmb-vertical-layout/bmb-vertical-layout.directive.d.ts +14 -0
  417. package/lib/directives/bmb-layout-grid/bmb-layout-grid.directive.d.ts +29 -0
  418. package/lib/directives/utils/clickoutside.directive.d.ts +15 -0
  419. package/lib/ds-ng.component.d.ts +5 -0
  420. package/lib/ds-ng.service.d.ts +6 -0
  421. package/lib/services/calendar.service.d.ts +15 -0
  422. package/lib/services/index.d.ts +2 -0
  423. package/lib/services/native-modal.service.d.ts +18 -0
  424. package/lib/services/notification.service.d.ts +20 -0
  425. package/lib/services/projection.service.d.ts +30 -0
  426. package/lib/services/tabs.service.d.ts +13 -0
  427. package/lib/services/theme.service.d.ts +11 -0
  428. package/lib/services/toast.service.d.ts +9 -0
  429. package/lib/services/user/profile.service.d.ts +9 -0
  430. package/lib/types/colors.d.ts +2 -0
  431. package/lib/types/index.d.ts +127 -0
  432. package/lib/utils/countryCodes.d.ts +7 -0
  433. package/lib/utils/currencyFormat.d.ts +1 -0
  434. package/lib/utils/dropdown.d.ts +6 -0
  435. package/lib/utils/formControl.d.ts +7 -0
  436. package/lib/utils/timestreamFilters.d.ts +2 -0
  437. package/lib/utils/utils.d.ts +12 -0
  438. package/package.json +4 -2
  439. package/public-api.d.ts +143 -0
@@ -0,0 +1,262 @@
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 * as i0 from "@angular/core";
15
+ import * as i1 from "../../services/calendar.service";
16
+ import * as i2 from "../../services/native-modal.service";
17
+ import * as i3 from "@angular/common";
18
+ import * as i4 from "@angular/forms";
19
+ const parseFromFormat = (dateString, format) => {
20
+ if (format.toLowerCase() === 'iso')
21
+ return DateTime.fromISO(dateString);
22
+ return DateTime.fromFormat(dateString, format);
23
+ };
24
+ export class BmbCalendarComponent {
25
+ resize() {
26
+ if (window.innerWidth < 1000) {
27
+ this.view.set('day');
28
+ this.isMobileHeader = true;
29
+ }
30
+ else {
31
+ this.isMobileHeader = false;
32
+ }
33
+ }
34
+ constructor(eventsSignal, modalService) {
35
+ this.eventsSignal = eventsSignal;
36
+ this.modalService = modalService;
37
+ this.view = model('week'); // internal
38
+ this.filters = model({});
39
+ this.calendarTimezone = input(Intl.DateTimeFormat().resolvedOptions().timeZone);
40
+ this.clientTimezone = input(Intl.DateTimeFormat().resolvedOptions().timeZone);
41
+ this.lang = input('es-MX');
42
+ this.height = input('100%');
43
+ this.startBusinessHour = input(8);
44
+ this.calendarTitle = input('Mi horario');
45
+ this.dateFormat = input(DEFAULT_DATE_FORMAT);
46
+ this.events = computed(() => this.eventsSignal.getEventList());
47
+ this.showFilterButton = input(false);
48
+ this.visibleDate = model(DateTime.now()); // internal
49
+ this.currentDate = input(''); // Deprecated
50
+ this.onDateChange = output();
51
+ this.onClose = output();
52
+ this.selectedWeek = computed(() => this.visibleDate().weekNumber);
53
+ this.weekNumber = computed(() => this.visibleDate().weekNumber);
54
+ this.renderWeekDays = computed(() => getWeekDays(this.visibleDate()));
55
+ this.isLoading = computed(() => this.eventsSignal.getIsLoading());
56
+ this.selectedEvent = null;
57
+ this.isMobileHeader = false;
58
+ this.orderedEvents = computed(() => {
59
+ const weeks = this.events().reduce((acc, event) => {
60
+ const startDate = parseFromFormat(event.start, this.dateFormat());
61
+ const endDate = parseFromFormat(event.end, this.dateFormat());
62
+ const interval = Interval.fromDateTimes(startDate, endDate);
63
+ const week = startDate.weekNumber;
64
+ const stringDate = startDate.toFormat('yyyy-MM-dd');
65
+ if (!acc[week])
66
+ acc[week] = {};
67
+ if (!acc[week][stringDate])
68
+ acc[week][stringDate] = [];
69
+ acc[week][stringDate].push({ ...event, startDate, endDate, interval });
70
+ if (event.calendar &&
71
+ !acc.calendars?.some((cal) => cal === event.calendar)) {
72
+ acc.calendars?.push(event.calendar);
73
+ }
74
+ return acc;
75
+ }, { calendars: [] });
76
+ const orderedDates = {};
77
+ for (const week in weeks) {
78
+ if (week === 'calendars') {
79
+ orderedDates[week] = weeks[week];
80
+ }
81
+ else {
82
+ orderedDates[week] = {};
83
+ for (const date in weeks[week]) {
84
+ orderedDates[week][date] = weeks[week][date].sort((a, b) => {
85
+ const aDate = a.startDate ?? DateTime.invalid('Invalid Date');
86
+ const bDate = b.startDate ?? DateTime.invalid('Invalid Date');
87
+ return aDate <= bDate ? -1 : 1;
88
+ });
89
+ }
90
+ }
91
+ }
92
+ return orderedDates;
93
+ });
94
+ this.filteredEvents = computed(() => {
95
+ const newEvents = {};
96
+ for (const week in this.orderedEvents()) {
97
+ if (week !== 'calendars') {
98
+ newEvents[week] = {};
99
+ for (const date in this.orderedEvents()[week]) {
100
+ newEvents[week][date] = this.orderedEvents()[week][date].map((event) => ({
101
+ ...event,
102
+ isVisible: Object.keys(this.filters()).length === 0 ||
103
+ this.filters()[event.calendar || 'Default'] !== false,
104
+ }));
105
+ }
106
+ }
107
+ }
108
+ newEvents.calendars = this.orderedEvents().calendars;
109
+ return newEvents;
110
+ });
111
+ this.filterModalId = signal(null);
112
+ this.calendarForm = new FormGroup({});
113
+ this.currentTime = signal(DateTime.now());
114
+ effect(() => {
115
+ const calendars = this.filteredEvents().calendars || [];
116
+ calendars.forEach((calendar) => {
117
+ this.calendarForm.addControl(calendar, new FormControl(this.filters()[calendar] || true));
118
+ });
119
+ });
120
+ }
121
+ ngOnDestroy() {
122
+ if (this.timerId) {
123
+ clearInterval(this.timerId);
124
+ }
125
+ }
126
+ ngAfterViewInit() {
127
+ if (window.innerWidth < 1000) {
128
+ this.view.set('day');
129
+ this.isMobileHeader = true;
130
+ }
131
+ }
132
+ ngOnInit() {
133
+ this.view.update((value) => (window.innerWidth < 1000 ? 'day' : value));
134
+ this.timerId = setInterval(() => {
135
+ this.updateTime();
136
+ }, 60000); // Actualiza cada 60000 milisegundos (1 minuto)
137
+ }
138
+ updateTime() {
139
+ this.currentTime.set(DateTime.now());
140
+ }
141
+ handleDateChange(range, now) {
142
+ this.view.set(range);
143
+ let visibleDates = [];
144
+ switch (range) {
145
+ case 'day':
146
+ visibleDates = getMonthDays(now).map((date) => date.toISO());
147
+ break;
148
+ case 'week':
149
+ visibleDates = getWeekDays(now).map((date) => date.toISO());
150
+ break;
151
+ case 'month':
152
+ visibleDates = getMonthDays(now).map((date) => date.toISO());
153
+ break;
154
+ default:
155
+ break;
156
+ }
157
+ this.onDateChange.emit({
158
+ range,
159
+ now: now.toISO(),
160
+ visibleDates,
161
+ });
162
+ }
163
+ handleCurrentDateChange(newDate) {
164
+ this.visibleDate.set(newDate);
165
+ }
166
+ getDayEvents() {
167
+ const visibleDateStr = this.visibleDate().toFormat('yyyy-MM-dd');
168
+ const events = this.filteredEvents()[this.selectedWeek()]?.[visibleDateStr] ?? [];
169
+ return events;
170
+ }
171
+ handleSelectEvent(newEvent) {
172
+ const { event } = newEvent;
173
+ const title = event.modalTitle ?? event.title;
174
+ const modalTitle = event.status === 'disabled' ? `(Cancelado) ${title}` : title;
175
+ this.selectedEvent = event;
176
+ const data = {
177
+ title: modalTitle,
178
+ subtitle: event.subtitle,
179
+ content: this.detailContent,
180
+ size: 'small',
181
+ };
182
+ this.modalService.openModal(data);
183
+ }
184
+ isAnEventSelected(event) {
185
+ return !!event;
186
+ }
187
+ getHeight(height) {
188
+ if (typeof height === 'number')
189
+ return `${height}px`;
190
+ return height;
191
+ }
192
+ getDuration() {
193
+ if (!this.selectedEvent)
194
+ return '';
195
+ return `${DateTime.fromISO(this.selectedEvent.start).toFormat('hh:mm a')} - ${DateTime.fromISO(this.selectedEvent.end).toFormat('hh:mm a')}`;
196
+ }
197
+ handleClose() {
198
+ this.onClose.emit('close');
199
+ }
200
+ handleShowModalFilter() {
201
+ this.filterModalId.set(this.modalService.openModal({
202
+ title: 'Calendarios',
203
+ subtitle: 'Selecciona los calendarios que quieres ver',
204
+ content: this.modalTemplate,
205
+ size: 'x-small',
206
+ closeModalClicked: (event) => this.handleFormReset(event),
207
+ actions: [
208
+ {
209
+ buttonName: 'save',
210
+ appearance: 'primary',
211
+ label: 'Guardar',
212
+ action: () => this.handleApplyFilters(),
213
+ },
214
+ ],
215
+ }));
216
+ }
217
+ handleFormReset(_) {
218
+ for (const calendar in this.calendarForm.controls) {
219
+ const value = Object.keys(this.filters()).length === 0 || !!this.filters()[calendar];
220
+ this.calendarForm.controls[calendar].setValue(value);
221
+ }
222
+ }
223
+ handleApplyFilters() {
224
+ const selectedCalendars = Object.keys(this.calendarForm.controls).reduce((acc, calendar) => {
225
+ acc[calendar] = this.calendarForm.controls[calendar].value;
226
+ return acc;
227
+ }, {});
228
+ this.filters.set(selectedCalendars);
229
+ this.modalService.closeModal(this.filterModalId());
230
+ this.filterModalId.set(null);
231
+ }
232
+ getFormControl(name) {
233
+ return this.calendarForm.get(name);
234
+ }
235
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BmbCalendarComponent, deps: [{ token: i1.BmbCalendarService }, { token: i2.BmbNativeModalService }], target: i0.ɵɵFactoryTarget.Component }); }
236
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", 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 }, lang: { classPropertyName: "lang", publicName: "lang", 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 }, 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 [lang]=\"lang()\"\n [events]=\"filteredEvents()\"\n (onCurrentDateChange)=\"handleCurrentDateChange($event)\"\n [weekDays]=\"renderWeekDays()\"\n [calendarTitle]=\"calendarTitle()\"\n (onClose)=\"handleClose()\"\n (showFilters)=\"handleShowModalFilter()\"\n />\n } @else {\n <bmb-calendar-header\n [weekDays]=\"renderWeekDays()\"\n [lang]=\"lang()\"\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 [lang]=\"lang()\"\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 [lang]=\"lang()\"\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 <bmb-checkbox\n [inputId]=\"'checkbox_' + item\"\n [name]=\"'checkbox_' + item\"\n [label]=\"item\"\n [control]=\"getFormControl(item)\"\n />\n }\n </form>\n</ng-template>\n", styles: ["@font-face{font-family:Poppins-Thin;font-style:normal;font-weight:100;src:url(/assets/fonts/Poppins/Poppins-Thin.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Light;font-style:normal;font-weight:300;src:url(/assets/fonts/Poppins/Poppins-ExtraLight.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Regular;font-style:normal;font-weight:400;src:url(/assets/fonts/Poppins/Poppins-Regular.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Medium;font-style:normal;font-weight:500;src:url(/assets/fonts/Poppins/Poppins-Medium.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Semibold;font-style:normal;font-weight:600;src:url(/assets/fonts/Poppins/Poppins-SemiBold.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Bold;font-style:normal;font-weight:700;src:url(/assets/fonts/Poppins/Poppins-Bold.ttf) format(\"truetype\")}:root,:host{--font-display: \"Poppins-Regular\", sans-serif}.font-thin-1{font-family:Poppins-Thin,sans-serif;font-size:.625rem}.font-light-1{font-family:Poppins-Light,sans-serif;font-size:.625rem}.font-regular-1{font-family:Poppins-Regular,sans-serif;font-size:.625rem}.font-medium-1{font-family:Poppins-Medium,sans-serif;font-size:.625rem}.font-semibold-1{font-family:Poppins-Semibold,sans-serif;font-size:.625rem}.font-bold-1{font-family:Poppins-Bold,sans-serif;font-size:.625rem}.font-thin-2{font-family:Poppins-Thin,sans-serif;font-size:.6875rem}.font-light-2{font-family:Poppins-Light,sans-serif;font-size:.6875rem}.font-regular-2{font-family:Poppins-Regular,sans-serif;font-size:.6875rem}.font-medium-2{font-family:Poppins-Medium,sans-serif;font-size:.6875rem}.font-semibold-2{font-family:Poppins-Semibold,sans-serif;font-size:.6875rem}.font-bold-2{font-family:Poppins-Bold,sans-serif;font-size:.6875rem}.font-thin-3{font-family:Poppins-Thin,sans-serif;font-size:.75rem}.font-light-3{font-family:Poppins-Light,sans-serif;font-size:.75rem}.font-regular-3{font-family:Poppins-Regular,sans-serif;font-size:.75rem}.font-medium-3{font-family:Poppins-Medium,sans-serif;font-size:.75rem}.font-semibold-3{font-family:Poppins-Semibold,sans-serif;font-size:.75rem}.font-bold-3{font-family:Poppins-Bold,sans-serif;font-size:.75rem}.font-thin-4{font-family:Poppins-Thin,sans-serif;font-size:.875rem}.font-light-4{font-family:Poppins-Light,sans-serif;font-size:.875rem}.font-regular-4{font-family:Poppins-Regular,sans-serif;font-size:.875rem}.font-medium-4{font-family:Poppins-Medium,sans-serif;font-size:.875rem}.font-semibold-4{font-family:Poppins-Semibold,sans-serif;font-size:.875rem}.font-bold-4{font-family:Poppins-Bold,sans-serif;font-size:.875rem}.font-thin-4_5{font-family:Poppins-Thin,sans-serif;font-size:.9375rem}.font-light-4_5{font-family:Poppins-Light,sans-serif;font-size:.9375rem}.font-regular-4_5{font-family:Poppins-Regular,sans-serif;font-size:.9375rem}.font-medium-4_5{font-family:Poppins-Medium,sans-serif;font-size:.9375rem}.font-semibold-4_5{font-family:Poppins-Semibold,sans-serif;font-size:.9375rem}.font-bold-4_5{font-family:Poppins-Bold,sans-serif;font-size:.9375rem}.font-thin-5{font-family:Poppins-Thin,sans-serif;font-size:1rem}.font-light-5{font-family:Poppins-Light,sans-serif;font-size:1rem}.font-regular-5{font-family:Poppins-Regular,sans-serif;font-size:1rem}.font-medium-5{font-family:Poppins-Medium,sans-serif;font-size:1rem}.font-semibold-5{font-family:Poppins-Semibold,sans-serif;font-size:1rem}.font-bold-5{font-family:Poppins-Bold,sans-serif;font-size:1rem}.font-thin-6{font-family:Poppins-Thin,sans-serif;font-size:1.125rem}.font-light-6{font-family:Poppins-Light,sans-serif;font-size:1.125rem}.font-regular-6{font-family:Poppins-Regular,sans-serif;font-size:1.125rem}.font-medium-6{font-family:Poppins-Medium,sans-serif;font-size:1.125rem}.font-semibold-6{font-family:Poppins-Semibold,sans-serif;font-size:1.125rem}.font-bold-6{font-family:Poppins-Bold,sans-serif;font-size:1.125rem}.font-thin-7{font-family:Poppins-Thin,sans-serif;font-size:1.25rem}.font-light-7{font-family:Poppins-Light,sans-serif;font-size:1.25rem}.font-regular-7{font-family:Poppins-Regular,sans-serif;font-size:1.25rem}.font-medium-7{font-family:Poppins-Medium,sans-serif;font-size:1.25rem}.font-semibold-7{font-family:Poppins-Semibold,sans-serif;font-size:1.25rem}.font-bold-7{font-family:Poppins-Bold,sans-serif;font-size:1.25rem}.font-thin-8{font-family:Poppins-Thin,sans-serif;font-size:1.375rem}.font-light-8{font-family:Poppins-Light,sans-serif;font-size:1.375rem}.font-regular-8{font-family:Poppins-Regular,sans-serif;font-size:1.375rem}.font-medium-8{font-family:Poppins-Medium,sans-serif;font-size:1.375rem}.font-semibold-8{font-family:Poppins-Semibold,sans-serif;font-size:1.375rem}.font-bold-8{font-family:Poppins-Bold,sans-serif;font-size:1.375rem}.font-thin-9{font-family:Poppins-Thin,sans-serif;font-size:1.5rem}.font-light-9{font-family:Poppins-Light,sans-serif;font-size:1.5rem}.font-regular-9{font-family:Poppins-Regular,sans-serif;font-size:1.5rem}.font-medium-9{font-family:Poppins-Medium,sans-serif;font-size:1.5rem}.font-semibold-9{font-family:Poppins-Semibold,sans-serif;font-size:1.5rem}.font-bold-9{font-family:Poppins-Bold,sans-serif;font-size:1.5rem}.font-thin-10{font-family:Poppins-Thin,sans-serif;font-size:1.625rem}.font-light-10{font-family:Poppins-Light,sans-serif;font-size:1.625rem}.font-regular-10{font-family:Poppins-Regular,sans-serif;font-size:1.625rem}.font-medium-10{font-family:Poppins-Medium,sans-serif;font-size:1.625rem}.font-semibold-10{font-family:Poppins-Semibold,sans-serif;font-size:1.625rem}.font-bold-10{font-family:Poppins-Bold,sans-serif;font-size:1.625rem}.font-thin-11{font-family:Poppins-Thin,sans-serif;font-size:2.25rem}.font-light-11{font-family:Poppins-Light,sans-serif;font-size:2.25rem}.font-regular-11{font-family:Poppins-Regular,sans-serif;font-size:2.25rem}.font-medium-11{font-family:Poppins-Medium,sans-serif;font-size:2.25rem}.font-semibold-11{font-family:Poppins-Semibold,sans-serif;font-size:2.25rem}.font-bold-11{font-family:Poppins-Bold,sans-serif;font-size:2.25rem}.font-thin-12{font-family:Poppins-Thin,sans-serif;font-size:3rem}.font-light-12{font-family:Poppins-Light,sans-serif;font-size:3rem}.font-regular-12{font-family:Poppins-Regular,sans-serif;font-size:3rem}.font-medium-12{font-family:Poppins-Medium,sans-serif;font-size:3rem}.font-semibold-12{font-family:Poppins-Semibold,sans-serif;font-size:3rem}.font-bold-12{font-family:Poppins-Bold,sans-serif;font-size:3rem}.bmb_calendar{background-color:var(--containers-background);position:relative;overflow:hidden;display:flex;flex-flow:column}@media (min-width: 1001px){.bmb_calendar{padding:var(--bmb-spacing-xl);background-color:var(--containers-main)}}.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: 999px){.bmb_calendar-detail-header{display:none}}.bmb_calendar-detail-header h2{font-family:Poppins-Medium,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-Medium,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: 1001px){.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: 1001px){.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: 1001px){.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-Medium,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: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: BmbCalendarTemplateDayComponent, selector: "bmb-calendar-template-day", inputs: ["lang", "now", "events", "currentTime", "startBusinessHour", "dateFormat"], outputs: ["onSelectEvent"] }, { kind: "component", type: BmbCalendarTemplateWeekComponent, selector: "bmb-calendar-template-week", inputs: ["weekDays", "lang", "now", "dateFormat", "events", "currentTime", "startBusinessHour", "selectedWeek"], outputs: ["onSelectEvent"] }, { kind: "component", type: BmbCalendarTemplateMonthComponent, selector: "bmb-calendar-template-month", inputs: ["lang", "now", "events"], outputs: ["onSelectEvent"] }, { kind: "component", type: BmbCalendarHeaderComponent, selector: "bmb-calendar-header", inputs: ["weekDays", "lang", "view", "currentDate", "showFilterButton"], outputs: ["onRangeChange", "onCurrentDateChange", "showFilters"] }, { kind: "component", type: BmbCalendarTemplateMobileComponent, selector: "bmb-calendar-template-mobile", inputs: ["weekDays", "now", "lang", "events", "calendarTitle"], 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: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
237
+ }
238
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BmbCalendarComponent, decorators: [{
239
+ type: Component,
240
+ args: [{ selector: 'bmb-calendar', standalone: true, imports: [
241
+ CommonModule,
242
+ BmbCalendarTemplateDayComponent,
243
+ BmbCalendarTemplateWeekComponent,
244
+ BmbCalendarTemplateMonthComponent,
245
+ BmbCalendarHeaderComponent,
246
+ BmbCalendarTemplateMobileComponent,
247
+ BmbBadgeComponent,
248
+ BmbLoaderComponent,
249
+ ReactiveFormsModule,
250
+ BmbCheckboxComponent,
251
+ ], 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 [lang]=\"lang()\"\n [events]=\"filteredEvents()\"\n (onCurrentDateChange)=\"handleCurrentDateChange($event)\"\n [weekDays]=\"renderWeekDays()\"\n [calendarTitle]=\"calendarTitle()\"\n (onClose)=\"handleClose()\"\n (showFilters)=\"handleShowModalFilter()\"\n />\n } @else {\n <bmb-calendar-header\n [weekDays]=\"renderWeekDays()\"\n [lang]=\"lang()\"\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 [lang]=\"lang()\"\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 [lang]=\"lang()\"\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 <bmb-checkbox\n [inputId]=\"'checkbox_' + item\"\n [name]=\"'checkbox_' + item\"\n [label]=\"item\"\n [control]=\"getFormControl(item)\"\n />\n }\n </form>\n</ng-template>\n", styles: ["@font-face{font-family:Poppins-Thin;font-style:normal;font-weight:100;src:url(/assets/fonts/Poppins/Poppins-Thin.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Light;font-style:normal;font-weight:300;src:url(/assets/fonts/Poppins/Poppins-ExtraLight.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Regular;font-style:normal;font-weight:400;src:url(/assets/fonts/Poppins/Poppins-Regular.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Medium;font-style:normal;font-weight:500;src:url(/assets/fonts/Poppins/Poppins-Medium.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Semibold;font-style:normal;font-weight:600;src:url(/assets/fonts/Poppins/Poppins-SemiBold.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Bold;font-style:normal;font-weight:700;src:url(/assets/fonts/Poppins/Poppins-Bold.ttf) format(\"truetype\")}:root,:host{--font-display: \"Poppins-Regular\", sans-serif}.font-thin-1{font-family:Poppins-Thin,sans-serif;font-size:.625rem}.font-light-1{font-family:Poppins-Light,sans-serif;font-size:.625rem}.font-regular-1{font-family:Poppins-Regular,sans-serif;font-size:.625rem}.font-medium-1{font-family:Poppins-Medium,sans-serif;font-size:.625rem}.font-semibold-1{font-family:Poppins-Semibold,sans-serif;font-size:.625rem}.font-bold-1{font-family:Poppins-Bold,sans-serif;font-size:.625rem}.font-thin-2{font-family:Poppins-Thin,sans-serif;font-size:.6875rem}.font-light-2{font-family:Poppins-Light,sans-serif;font-size:.6875rem}.font-regular-2{font-family:Poppins-Regular,sans-serif;font-size:.6875rem}.font-medium-2{font-family:Poppins-Medium,sans-serif;font-size:.6875rem}.font-semibold-2{font-family:Poppins-Semibold,sans-serif;font-size:.6875rem}.font-bold-2{font-family:Poppins-Bold,sans-serif;font-size:.6875rem}.font-thin-3{font-family:Poppins-Thin,sans-serif;font-size:.75rem}.font-light-3{font-family:Poppins-Light,sans-serif;font-size:.75rem}.font-regular-3{font-family:Poppins-Regular,sans-serif;font-size:.75rem}.font-medium-3{font-family:Poppins-Medium,sans-serif;font-size:.75rem}.font-semibold-3{font-family:Poppins-Semibold,sans-serif;font-size:.75rem}.font-bold-3{font-family:Poppins-Bold,sans-serif;font-size:.75rem}.font-thin-4{font-family:Poppins-Thin,sans-serif;font-size:.875rem}.font-light-4{font-family:Poppins-Light,sans-serif;font-size:.875rem}.font-regular-4{font-family:Poppins-Regular,sans-serif;font-size:.875rem}.font-medium-4{font-family:Poppins-Medium,sans-serif;font-size:.875rem}.font-semibold-4{font-family:Poppins-Semibold,sans-serif;font-size:.875rem}.font-bold-4{font-family:Poppins-Bold,sans-serif;font-size:.875rem}.font-thin-4_5{font-family:Poppins-Thin,sans-serif;font-size:.9375rem}.font-light-4_5{font-family:Poppins-Light,sans-serif;font-size:.9375rem}.font-regular-4_5{font-family:Poppins-Regular,sans-serif;font-size:.9375rem}.font-medium-4_5{font-family:Poppins-Medium,sans-serif;font-size:.9375rem}.font-semibold-4_5{font-family:Poppins-Semibold,sans-serif;font-size:.9375rem}.font-bold-4_5{font-family:Poppins-Bold,sans-serif;font-size:.9375rem}.font-thin-5{font-family:Poppins-Thin,sans-serif;font-size:1rem}.font-light-5{font-family:Poppins-Light,sans-serif;font-size:1rem}.font-regular-5{font-family:Poppins-Regular,sans-serif;font-size:1rem}.font-medium-5{font-family:Poppins-Medium,sans-serif;font-size:1rem}.font-semibold-5{font-family:Poppins-Semibold,sans-serif;font-size:1rem}.font-bold-5{font-family:Poppins-Bold,sans-serif;font-size:1rem}.font-thin-6{font-family:Poppins-Thin,sans-serif;font-size:1.125rem}.font-light-6{font-family:Poppins-Light,sans-serif;font-size:1.125rem}.font-regular-6{font-family:Poppins-Regular,sans-serif;font-size:1.125rem}.font-medium-6{font-family:Poppins-Medium,sans-serif;font-size:1.125rem}.font-semibold-6{font-family:Poppins-Semibold,sans-serif;font-size:1.125rem}.font-bold-6{font-family:Poppins-Bold,sans-serif;font-size:1.125rem}.font-thin-7{font-family:Poppins-Thin,sans-serif;font-size:1.25rem}.font-light-7{font-family:Poppins-Light,sans-serif;font-size:1.25rem}.font-regular-7{font-family:Poppins-Regular,sans-serif;font-size:1.25rem}.font-medium-7{font-family:Poppins-Medium,sans-serif;font-size:1.25rem}.font-semibold-7{font-family:Poppins-Semibold,sans-serif;font-size:1.25rem}.font-bold-7{font-family:Poppins-Bold,sans-serif;font-size:1.25rem}.font-thin-8{font-family:Poppins-Thin,sans-serif;font-size:1.375rem}.font-light-8{font-family:Poppins-Light,sans-serif;font-size:1.375rem}.font-regular-8{font-family:Poppins-Regular,sans-serif;font-size:1.375rem}.font-medium-8{font-family:Poppins-Medium,sans-serif;font-size:1.375rem}.font-semibold-8{font-family:Poppins-Semibold,sans-serif;font-size:1.375rem}.font-bold-8{font-family:Poppins-Bold,sans-serif;font-size:1.375rem}.font-thin-9{font-family:Poppins-Thin,sans-serif;font-size:1.5rem}.font-light-9{font-family:Poppins-Light,sans-serif;font-size:1.5rem}.font-regular-9{font-family:Poppins-Regular,sans-serif;font-size:1.5rem}.font-medium-9{font-family:Poppins-Medium,sans-serif;font-size:1.5rem}.font-semibold-9{font-family:Poppins-Semibold,sans-serif;font-size:1.5rem}.font-bold-9{font-family:Poppins-Bold,sans-serif;font-size:1.5rem}.font-thin-10{font-family:Poppins-Thin,sans-serif;font-size:1.625rem}.font-light-10{font-family:Poppins-Light,sans-serif;font-size:1.625rem}.font-regular-10{font-family:Poppins-Regular,sans-serif;font-size:1.625rem}.font-medium-10{font-family:Poppins-Medium,sans-serif;font-size:1.625rem}.font-semibold-10{font-family:Poppins-Semibold,sans-serif;font-size:1.625rem}.font-bold-10{font-family:Poppins-Bold,sans-serif;font-size:1.625rem}.font-thin-11{font-family:Poppins-Thin,sans-serif;font-size:2.25rem}.font-light-11{font-family:Poppins-Light,sans-serif;font-size:2.25rem}.font-regular-11{font-family:Poppins-Regular,sans-serif;font-size:2.25rem}.font-medium-11{font-family:Poppins-Medium,sans-serif;font-size:2.25rem}.font-semibold-11{font-family:Poppins-Semibold,sans-serif;font-size:2.25rem}.font-bold-11{font-family:Poppins-Bold,sans-serif;font-size:2.25rem}.font-thin-12{font-family:Poppins-Thin,sans-serif;font-size:3rem}.font-light-12{font-family:Poppins-Light,sans-serif;font-size:3rem}.font-regular-12{font-family:Poppins-Regular,sans-serif;font-size:3rem}.font-medium-12{font-family:Poppins-Medium,sans-serif;font-size:3rem}.font-semibold-12{font-family:Poppins-Semibold,sans-serif;font-size:3rem}.font-bold-12{font-family:Poppins-Bold,sans-serif;font-size:3rem}.bmb_calendar{background-color:var(--containers-background);position:relative;overflow:hidden;display:flex;flex-flow:column}@media (min-width: 1001px){.bmb_calendar{padding:var(--bmb-spacing-xl);background-color:var(--containers-main)}}.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: 999px){.bmb_calendar-detail-header{display:none}}.bmb_calendar-detail-header h2{font-family:Poppins-Medium,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-Medium,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: 1001px){.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: 1001px){.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: 1001px){.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-Medium,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"] }]
252
+ }], ctorParameters: () => [{ type: i1.BmbCalendarService }, { type: i2.BmbNativeModalService }], propDecorators: { detailContent: [{
253
+ type: ViewChild,
254
+ args: ['detailContent', { read: TemplateRef }]
255
+ }], modalTemplate: [{
256
+ type: ViewChild,
257
+ args: ['modalTemplate']
258
+ }], resize: [{
259
+ type: HostListener,
260
+ args: ['window:resize', ['$event']]
261
+ }] } });
262
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm1iLWNhbGVuZGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RzLW5nL3NyYy9saWIvY29tcG9uZW50cy9ibWItY2FsZW5kYXIvYm1iLWNhbGVuZGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RzLW5nL3NyYy9saWIvY29tcG9uZW50cy9ibWItY2FsZW5kYXIvYm1iLWNhbGVuZGFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixZQUFZLEVBQ1osS0FBSyxFQUNMLEtBQUssRUFDTCxTQUFTLEVBQ1QsV0FBVyxFQUNYLE1BQU0sRUFDTixRQUFRLEVBQ1IsTUFBTSxFQUdOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDM0MsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sMEVBQTBFLENBQUM7QUFDNUgsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sd0VBQXdFLENBQUM7QUFDekgsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sNEVBQTRFLENBQUM7QUFDL0gsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDeEcsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sOEVBQThFLENBQUM7QUFDbEksT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFPeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFJekUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1B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QUFhO3NCQURaLFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFFckIsYUFBYTtzQkFBeEMsU0FBUzt1QkFBQyxlQUFlO2dCQUdsQixNQUFNO3NCQURiLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIEhvc3RMaXN0ZW5lcixcbiAgbW9kZWwsXG4gIGlucHV0LFxuICBWaWV3Q2hpbGQsXG4gIFRlbXBsYXRlUmVmLFxuICBvdXRwdXQsXG4gIGNvbXB1dGVkLFxuICBzaWduYWwsXG4gIE9uSW5pdCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgZWZmZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEYXRlVGltZSwgSW50ZXJ2YWwgfSBmcm9tICdsdXhvbic7XG5pbXBvcnQgeyBCbWJDYWxlbmRhclRlbXBsYXRlV2Vla0NvbXBvbmVudCB9IGZyb20gJy4vY29tbW9uL2JtYi1jYWxlbmRhci10ZW1wbGF0ZS13ZWVrL2JtYi1jYWxlbmRhci10ZW1wbGF0ZS13ZWVrLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCbWJDYWxlbmRhclRlbXBsYXRlRGF5Q29tcG9uZW50IH0gZnJvbSAnLi9jb21tb24vYm1iLWNhbGVuZGFyLXRlbXBsYXRlLWRheS9ibWItY2FsZW5kYXItdGVtcGxhdGUtZGF5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCbWJDYWxlbmRhclRlbXBsYXRlTW9udGhDb21wb25lbnQgfSBmcm9tICcuL2NvbW1vbi9ibWItY2FsZW5kYXItdGVtcGxhdGUtbW9udGgvYm1iLWNhbGVuZGFyLXRlbXBsYXRlLW1vbnRoLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCbWJDYWxlbmRhckhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vY29tbW9uL2JtYi1jYWxlbmRhci1oZWFkZXIvYm1iLWNhbGVuZGFyLWhlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQm1iQ2FsZW5kYXJUZW1wbGF0ZU1vYmlsZUNvbXBvbmVudCB9IGZyb20gJy4vY29tbW9uL2JtYi1jYWxlbmRhci10ZW1wbGF0ZS1tb2JpbGUvYm1iLWNhbGVuZGFyLXRlbXBsYXRlLW1vYmlsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQm1iTG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vYm1iLWxvYWRlci9ibWItbG9hZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBJQm1iQ2FsZW5kYXJFdmVudCxcbiAgSUJtYkNhbGVuZGFyRXZlbnRDbGljayxcbiAgSUJtYkNhbGVuZGFyVmlldyxcbiAgSUJtYlBhcnNlZERhdGVzLFxufSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGdldFdlZWtEYXlzLCBnZXRNb250aERheXMsIERFRkFVTFRfREFURV9GT1JNQVQgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IEJtYkNhbGVuZGFyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NhbGVuZGFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQm1iTmF0aXZlTW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbmF0aXZlLW1vZGFsLnNlcnZpY2UnO1xuaW1wb3J0IHsgTW9kYWxEYXRhQ29uZmlnIH0gZnJvbSAnLi4vYm1iLW1vZGFsL2JtYi1tb2RhbC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQm1iQmFkZ2VDb21wb25lbnQgfSBmcm9tICcuLi9ibWItYmFkZ2UvYm1iLWJhZGdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQm1iQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuLi9ibWItY2hlY2tib3gvYm1iLWNoZWNrYm94LmNvbXBvbmVudCc7XG5cbmNvbnN0IHBhcnNlRnJvbUZvcm1hdCA9IChkYXRlU3RyaW5nOiBzdHJpbmcsIGZvcm1hdDogc3RyaW5nKTogRGF0ZVRpbWUgPT4ge1xuICBpZiAoZm9ybWF0LnRvTG93ZXJDYXNlKCkgPT09ICdpc28nKSByZXR1cm4gRGF0ZVRpbWUuZnJvbUlTTyhkYXRlU3RyaW5nKTtcblxuICByZXR1cm4gRGF0ZVRpbWUuZnJvbUZvcm1hdChkYXRlU3RyaW5nLCBmb3JtYXQpO1xufTtcblxuZXhwb3J0IHtcbiAgSUJtYkNhbGVuZGFyRXZlbnQsXG4gIElCbWJDYWxlbmRhckV2ZW50Q2xpY2ssXG4gIElCbWJFdmVudFR5cGUsXG59IGZyb20gJy4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdibWItY2FsZW5kYXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEJtYkNhbGVuZGFyVGVtcGxhdGVEYXlDb21wb25lbnQsXG4gICAgQm1iQ2FsZW5kYXJUZW1wbGF0ZVdlZWtDb21wb25lbnQsXG4gICAgQm1iQ2FsZW5kYXJUZW1wbGF0ZU1vbnRoQ29tcG9uZW50LFxuICAgIEJtYkNhbGVuZGFySGVhZGVyQ29tcG9uZW50LFxuICAgIEJtYkNhbGVuZGFyVGVtcGxhdGVNb2JpbGVDb21wb25lbnQsXG4gICAgQm1iQmFkZ2VDb21wb25lbnQsXG4gICAgQm1iTG9hZGVyQ29tcG9uZW50LFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgQm1iQ2hlY2tib3hDb21wb25lbnQsXG4gIF0sXG4gIHN0eWxlVXJsOiAnLi9ibWItY2FsZW5kYXIuY29tcG9uZW50LnNjc3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vYm1iLWNhbGVuZGFyLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEJtYkNhbGVuZGFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgdmlldyA9IG1vZGVsPElCbWJDYWxlbmRhclZpZXc+KCd3ZWVrJyk7IC8vIGludGVybmFsXG4gIGZpbHRlcnMgPSBtb2RlbDx7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfT4oe30pO1xuICBjYWxlbmRhclRpbWV6b25lID0gaW5wdXQ8c3RyaW5nPihcbiAgICBJbnRsLkRhdGVUaW1lRm9ybWF0KCkucmVzb2x2ZWRPcHRpb25zKCkudGltZVpvbmUsXG4gICk7XG4gIGNsaWVudFRpbWV6b25lID0gaW5wdXQ8c3RyaW5nPihcbiAgICBJbnRsLkRhdGVUaW1lRm9ybWF0KCkucmVzb2x2ZWRPcHRpb25zKCkudGltZVpvbmUsXG4gICk7XG4gIGxhbmcgPSBpbnB1dDxzdHJpbmc+KCdlcy1NWCcpO1xuICBoZWlnaHQgPSBpbnB1dDxudW1iZXIgfCBzdHJpbmc+KCcxMDAlJyk7XG4gIHN0YXJ0QnVzaW5lc3NIb3VyID0gaW5wdXQ8bnVtYmVyPig4KTtcbiAgY2FsZW5kYXJUaXRsZSA9IGlucHV0PHN0cmluZz4oJ01pIGhvcmFyaW8nKTtcbiAgZGF0ZUZvcm1hdCA9IGlucHV0PHN0cmluZz4oREVGQVVMVF9EQVRFX0ZPUk1BVCk7XG4gIGV2ZW50cyA9IGNvbXB1dGVkPElCbWJDYWxlbmRhckV2ZW50W10+KCgpID0+XG4gICAgdGhpcy5ldmVudHNTaWduYWwuZ2V0RXZlbnRMaXN0KCksXG4gICk7XG4gIHNob3dGaWx0ZXJCdXR0b24gPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHZpc2libGVEYXRlID0gbW9kZWw8RGF0ZVRpbWU+KERhdGVUaW1lLm5vdygpKTsgLy8gaW50ZXJuYWxcblxuICBjdXJyZW50RGF0ZSA9IGlucHV0PHN0cmluZz4oJycpOyAvLyBEZXByZWNhdGVkXG5cbiAgb25EYXRlQ2hhbmdlID0gb3V0cHV0PGFueT4oKTtcbiAgb25DbG9zZSA9IG91dHB1dDxhbnk+KCk7XG5cbiAgc2VsZWN0ZWRXZWVrID0gY29tcHV0ZWQoKCkgPT4gdGhpcy52aXNpYmxlRGF0ZSgpLndlZWtOdW1iZXIpO1xuICB3ZWVrTnVtYmVyID0gY29tcHV0ZWQoKCkgPT4gdGhpcy52aXNpYmxlRGF0ZSgpLndlZWtOdW1iZXIpO1xuICByZW5kZXJXZWVrRGF5cyA9IGNvbXB1dGVkKCgpID0+IGdldFdlZWtEYXlzKHRoaXMudmlzaWJsZURhdGUoKSkpO1xuICBpc0xvYWRpbmcgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmV2ZW50c1NpZ25hbC5nZXRJc0xvYWRpbmcoKSk7XG4gIHNlbGVjdGVkRXZlbnQ6IElCbWJDYWxlbmRhckV2ZW50IHwgbnVsbCA9IG51bGw7XG4gIGlzTW9iaWxlSGVhZGVyOiBib29sZWFuID0gZmFsc2U7XG4gIG9yZGVyZWRFdmVudHMgPSBjb21wdXRlZDxJQm1iUGFyc2VkRGF0ZXM+KCgpID0+IHtcbiAgICBjb25zdCB3ZWVrcyA9IHRoaXMuZXZlbnRzKCkucmVkdWNlKFxuICAgICAgKGFjYzogSUJtYlBhcnNlZERhdGVzLCBldmVudCkgPT4ge1xuICAgICAgICBjb25zdCBzdGFydERhdGUgPSBwYXJzZUZyb21Gb3JtYXQoZXZlbnQuc3RhcnQsIHRoaXMuZGF0ZUZvcm1hdCgpKTtcbiAgICAgICAgY29uc3QgZW5kRGF0ZSA9IHBhcnNlRnJvbUZvcm1hdChldmVudC5lbmQsIHRoaXMuZGF0ZUZvcm1hdCgpKTtcbiAgICAgICAgY29uc3QgaW50ZXJ2YWwgPSBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHN0YXJ0RGF0ZSwgZW5kRGF0ZSk7XG4gICAgICAgIGNvbnN0IHdlZWsgPSBzdGFydERhdGUud2Vla051bWJlcjtcbiAgICAgICAgY29uc3Qgc3RyaW5nRGF0ZSA9IHN0YXJ0RGF0ZS50b0Zvcm1hdCgneXl5eS1NTS1kZCcpO1xuXG4gICAgICAgIGlmICghYWNjW3dlZWtdKSBhY2Nbd2Vla10gPSB7fTtcbiAgICAgICAgaWYgKCFhY2Nbd2Vla11bc3RyaW5nRGF0ZV0pIGFjY1t3ZWVrXVtzdHJpbmdEYXRlXSA9IFtdO1xuICAgICAgICBhY2Nbd2Vla11bc3RyaW5nRGF0ZV0ucHVzaCh7IC4uLmV2ZW50LCBzdGFydERhdGUsIGVuZERhdGUsIGludGVydmFsIH0pO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBldmVudC5jYWxlbmRhciAmJlxuICAgICAgICAgICFhY2MuY2FsZW5kYXJzPy5zb21lKChjYWwpID0+IGNhbCA9PT0gZXZlbnQuY2FsZW5kYXIpXG4gICAgICAgICkge1xuICAgICAgICAgIGFjYy5jYWxlbmRhcnM/LnB1c2goZXZlbnQuY2FsZW5kYXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sXG4gICAgICB7IGNhbGVuZGFyczogW10gfSBhcyBJQm1iUGFyc2VkRGF0ZXMsXG4gICAgKTtcblxuICAgIGNvbnN0IG9yZGVyZWREYXRlcyA9IHt9IGFzIElCbWJQYXJzZWREYXRlcztcblxuICAgIGZvciAoY29uc3Qgd2VlayBpbiB3ZWVrcykge1xuICAgICAgaWYgKHdlZWsgPT09ICdjYWxlbmRhcnMnKSB7XG4gICAgICAgIG9yZGVyZWREYXRlc1t3ZWVrXSA9IHdlZWtzW3dlZWtdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3JkZXJlZERhdGVzW3dlZWtdID0ge307XG5cbiAgICAgICAgZm9yIChjb25zdCBkYXRlIGluIHdlZWtzW3dlZWtdKSB7XG4gICAgICAgICAgb3JkZXJlZERhdGVzW3dlZWtdW2RhdGVdID0gd2Vla3Nbd2Vla11bZGF0ZV0uc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgICAgY29uc3QgYURhdGUgPSBhLnN0YXJ0RGF0ZSA/PyBEYXRlVGltZS5pbnZhbGlkKCdJbnZhbGlkIERhdGUnKTtcbiAgICAgICAgICAgIGNvbnN0IGJEYXRlID0gYi5zdGFydERhdGUgPz8gRGF0ZVRpbWUuaW52YWxpZCgnSW52YWxpZCBEYXRlJyk7XG4gICAgICAgICAgICByZXR1cm4gYURhdGUgPD0gYkRhdGUgPyAtMSA6IDE7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gb3JkZXJlZERhdGVzO1xuICB9KTtcbiAgZmlsdGVyZWRFdmVudHMgPSBjb21wdXRlZDxJQm1iUGFyc2VkRGF0ZXM+KCgpID0+IHtcbiAgICBjb25zdCBuZXdFdmVudHMgPSB7fSBhcyBJQm1iUGFyc2VkRGF0ZXM7XG4gICAgZm9yIChjb25zdCB3ZWVrIGluIHRoaXMub3JkZXJlZEV2ZW50cygpKSB7XG4gICAgICBpZiAod2VlayAhPT0gJ2NhbGVuZGFycycpIHtcbiAgICAgICAgbmV3RXZlbnRzW3dlZWtdID0ge307XG4gICAgICAgIGZvciAoY29uc3QgZGF0ZSBpbiB0aGlzLm9yZGVyZWRFdmVudHMoKVt3ZWVrXSkge1xuICAgICAgICAgIG5ld0V2ZW50c1t3ZWVrXVtkYXRlXSA9IHRoaXMub3JkZXJlZEV2ZW50cygpW3dlZWtdW2RhdGVdLm1hcChcbiAgICAgICAgICAgIChldmVudCkgPT4gKHtcbiAgICAgICAgICAgICAgLi4uZXZlbnQsXG4gICAgICAgICAgICAgIGlzVmlzaWJsZTpcbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmZpbHRlcnMoKSkubGVuZ3RoID09PSAwIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJzKClbZXZlbnQuY2FsZW5kYXIgfHwgJ0RlZmF1bHQnXSAhPT0gZmFsc2UsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgbmV3RXZlbnRzLmNhbGVuZGFycyA9IHRoaXMub3JkZXJlZEV2ZW50cygpLmNhbGVuZGFycztcblxuICAgIHJldHVybiBuZXdFdmVudHM7XG4gIH0pO1xuICBmaWx0ZXJNb2RhbElkID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICBjYWxlbmRhckZvcm06IEZvcm1Hcm91cDx7IFtrZXk6IHN0cmluZ106IEZvcm1Db250cm9sPGFueT4gfT4gPSBuZXcgRm9ybUdyb3VwKFxuICAgIHt9LFxuICApO1xuXG4gIEBWaWV3Q2hpbGQoJ2RldGFpbENvbnRlbnQnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIGRldGFpbENvbnRlbnQ/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAVmlld0NoaWxkKCdtb2RhbFRlbXBsYXRlJykgbW9kYWxUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXG4gIHByaXZhdGUgcmVzaXplKCkge1xuICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8IDEwMDApIHtcbiAgICAgIHRoaXMudmlldy5zZXQoJ2RheScpO1xuICAgICAgdGhpcy5pc01vYmlsZUhlYWRlciA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXNNb2JpbGVIZWFkZXIgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGV2ZW50c1NpZ25hbDogQm1iQ2FsZW5kYXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBCbWJOYXRpdmVNb2RhbFNlcnZpY2UsXG4gICkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBjYWxlbmRhcnMgPSB0aGlzLmZpbHRlcmVkRXZlbnRzKCkuY2FsZW5kYXJzIHx8IFtdO1xuICAgICAgY2FsZW5kYXJzLmZvckVhY2goKGNhbGVuZGFyKSA9PiB7XG4gICAgICAgIHRoaXMuY2FsZW5kYXJGb3JtLmFkZENvbnRyb2woXG4gICAgICAgICAgY2FsZW5kYXIsXG4gICAgICAgICAgbmV3IEZvcm1Db250cm9sKHRoaXMuZmlsdGVycygpW2NhbGVuZGFyXSB8fCB0cnVlKSxcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgY3VycmVudFRpbWUgPSBzaWduYWw8RGF0ZVRpbWU+KERhdGVUaW1lLm5vdygpKTtcbiAgcHJpdmF0ZSB0aW1lcklkOiBhbnk7XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMudGltZXJJZCkge1xuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnRpbWVySWQpO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAod2luZG93LmlubmVyV2lkdGggPCAxMDAwKSB7XG4gICAgICB0aGlzLnZpZXcuc2V0KCdkYXknKTtcbiAgICAgIHRoaXMuaXNNb2JpbGVIZWFkZXIgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMudmlldy51cGRhdGUoKHZhbHVlKSA9PiAod2luZG93LmlubmVyV2lkdGggPCAxMDAwID8gJ2RheScgOiB2YWx1ZSkpO1xuXG4gICAgdGhpcy50aW1lcklkID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVUaW1lKCk7XG4gICAgfSwgNjAwMDApOyAvLyBBY3R1YWxpemEgY2FkYSA2MDAwMCBtaWxpc2VndW5kb3MgKDEgbWludXRvKVxuICB9XG5cbiAgdXBkYXRlVGltZSgpIHtcbiAgICB0aGlzLmN1cnJlbnRUaW1lLnNldChEYXRlVGltZS5ub3coKSk7XG4gIH1cblxuICBoYW5kbGVEYXRlQ2hhbmdlKHJhbmdlOiBJQm1iQ2FsZW5kYXJWaWV3LCBub3c6IERhdGVUaW1lKTogdm9pZCB7XG4gICAgdGhpcy52aWV3LnNldChyYW5nZSk7XG4gICAgbGV0IHZpc2libGVEYXRlczogKHN0cmluZyB8IG51bGwpW10gPSBbXTtcblxuICAgIHN3aXRjaCAocmFuZ2UpIHtcbiAgICAgIGNhc2UgJ2RheSc6XG4gICAgICAgIHZpc2libGVEYXRlcyA9IGdldE1vbnRoRGF5cyhub3cpLm1hcCgoZGF0ZSkgPT4gZGF0ZS50b0lTTygpKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3dlZWsnOlxuICAgICAgICB2aXNpYmxlRGF0ZXMgPSBnZXRXZWVrRGF5cyhub3cpLm1hcCgoZGF0ZSkgPT4gZGF0ZS50b0lTTygpKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ21vbnRoJzpcbiAgICAgICAgdmlzaWJsZURhdGVzID0gZ2V0TW9udGhEYXlzKG5vdykubWFwKChkYXRlKSA9PiBkYXRlLnRvSVNPKCkpO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5vbkRhdGVDaGFuZ2UuZW1pdCh7XG4gICAgICByYW5nZSxcbiAgICAgIG5vdzogbm93LnRvSVNPKCksXG4gICAgICB2aXNpYmxlRGF0ZXMsXG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVDdXJyZW50RGF0ZUNoYW5nZShuZXdEYXRlOiBEYXRlVGltZSk6IHZvaWQge1xuICAgIHRoaXMudmlzaWJsZURhdGUuc2V0KG5ld0RhdGUpO1xuICB9XG5cbiAgZ2V0RGF5RXZlbnRzKCk6IElCbWJDYWxlbmRhckV2ZW50W10ge1xuICAgIGNvbnN0IHZpc2libGVEYXRlU3RyID0gdGhpcy52aXNpYmxlRGF0ZSgpLnRvRm9ybWF0KCd5eXl5LU1NLWRkJyk7XG4gICAgY29uc3QgZXZlbnRzID1cbiAgICAgIHRoaXMuZmlsdGVyZWRFdmVudHMoKVt0aGlzLnNlbGVjdGVkV2VlaygpXT8uW3Zpc2libGVEYXRlU3RyXSA/PyBbXTtcbiAgICByZXR1cm4gZXZlbnRzO1xuICB9XG5cbiAgaGFuZGxlU2VsZWN0RXZlbnQobmV3RXZlbnQ6IElCbWJDYWxlbmRhckV2ZW50Q2xpY2spOiB2b2lkIHtcbiAgICBjb25zdCB7IGV2ZW50IH0gPSBuZXdFdmVudDtcbiAgICBjb25zdCB0aXRsZSA9IGV2ZW50Lm1vZGFsVGl0bGUgPz8gZXZlbnQudGl0bGU7XG4gICAgY29uc3QgbW9kYWxUaXRsZSA9XG4gICAgICBldmVudC5zdGF0dXMgPT09ICdkaXNhYmxlZCcgPyBgKENhbmNlbGFkbykgJHt0aXRsZX1gIDogdGl0bGU7XG5cbiAgICB0aGlzLnNlbGVjdGVkRXZlbnQgPSBldmVudDtcblxuICAgIGNvbnN0IGRhdGE6IE1vZGFsRGF0YUNvbmZpZyA9IHtcbiAgICAgIHRpdGxlOiBtb2RhbFRpdGxlLFxuICAgICAgc3VidGl0bGU6IGV2ZW50LnN1YnRpdGxlLFxuICAgICAgY29udGVudDogdGhpcy5kZXRhaWxDb250ZW50LFxuICAgICAgc2l6ZTogJ3NtYWxsJyxcbiAgICB9O1xuICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW5Nb2RhbChkYXRhKTtcbiAgfVxuXG4gIGlzQW5FdmVudFNlbGVjdGVkKGV2ZW50OiBJQm1iQ2FsZW5kYXJFdmVudENsaWNrIHwgbnVsbCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIWV2ZW50O1xuICB9XG5cbiAgZ2V0SGVpZ2h0KGhlaWdodDogc3RyaW5nIHwgbnVtYmVyKTogc3RyaW5nIHtcbiAgICBpZiAodHlwZW9mIGhlaWdodCA9PT0gJ251bWJlcicpIHJldHVybiBgJHtoZWlnaHR9cHhgO1xuXG4gICAgcmV0dXJuIGhlaWdodDtcbiAgfVxuXG4gIGdldER1cmF0aW9uKCkge1xuICAgIGlmICghdGhpcy5zZWxlY3RlZEV2ZW50KSByZXR1cm4gJyc7XG4gICAgcmV0dXJuIGAke0RhdGVUaW1lLmZyb21JU08odGhpcy5zZWxlY3RlZEV2ZW50LnN0YXJ0KS50b0Zvcm1hdCgnaGg6bW0gYScpfSAtICR7RGF0ZVRpbWUuZnJvbUlTTyh0aGlzLnNlbGVjdGVkRXZlbnQuZW5kKS50b0Zvcm1hdCgnaGg6bW0gYScpfWA7XG4gIH1cblxuICBoYW5kbGVDbG9zZSgpIHtcbiAgICB0aGlzLm9uQ2xvc2UuZW1pdCgnY2xvc2UnKTtcbiAgfVxuXG4gIGhhbmRsZVNob3dNb2RhbEZpbHRlcigpIHtcbiAgICB0aGlzLmZpbHRlck1vZGFsSWQuc2V0KFxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3Blbk1vZGFsKHtcbiAgICAgICAgdGl0bGU6ICdDYWxlbmRhcmlvcycsXG4gICAgICAgIHN1YnRpdGxlOiAnU2VsZWNjaW9uYSBsb3MgY2FsZW5kYXJpb3MgcXVlIHF1aWVyZXMgdmVyJyxcbiAgICAgICAgY29udGVudDogdGhpcy5tb2RhbFRlbXBsYXRlLFxuICAgICAgICBzaXplOiAneC1zbWFsbCcsXG4gICAgICAgIGNsb3NlTW9kYWxDbGlja2VkOiAoZXZlbnQ6IHVua25vd24pID0+IHRoaXMuaGFuZGxlRm9ybVJlc2V0KGV2ZW50KSxcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJ1dHRvbk5hbWU6ICdzYXZlJyxcbiAgICAgICAgICAgIGFwcGVhcmFuY2U6ICdwcmltYXJ5JyxcbiAgICAgICAgICAgIGxhYmVsOiAnR3VhcmRhcicsXG4gICAgICAgICAgICBhY3Rpb246ICgpID0+IHRoaXMuaGFuZGxlQXBwbHlGaWx0ZXJzKCksXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBoYW5kbGVGb3JtUmVzZXQoXzogYW55KTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBjYWxlbmRhciBpbiB0aGlzLmNhbGVuZGFyRm9ybS5jb250cm9scykge1xuICAgICAgY29uc3QgdmFsdWUgPVxuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmZpbHRlcnMoKSkubGVuZ3RoID09PSAwIHx8ICEhdGhpcy5maWx0ZXJzKClbY2FsZW5kYXJdO1xuICAgICAgdGhpcy5jYWxlbmRhckZvcm0uY29udHJvbHNbY2FsZW5kYXJdLnNldFZhbHVlKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVBcHBseUZpbHRlcnMoKTogdm9pZCB7XG4gICAgY29uc3Qgc2VsZWN0ZWRDYWxlbmRhcnMgPSBPYmplY3Qua2V5cyh0aGlzLmNhbGVuZGFyRm9ybS5jb250cm9scykucmVkdWNlPHtcbiAgICAgIFtrZXk6IHN0cmluZ106IGJvb2xlYW47XG4gICAgfT4oKGFjYywgY2FsZW5kYXIpID0+IHtcbiAgICAgIGFjY1tjYWxlbmRhcl0gPSB0aGlzLmNhbGVuZGFyRm9ybS5jb250cm9sc1tjYWxlbmRhcl0udmFsdWU7XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIHt9KTtcbiAgICB0aGlzLmZpbHRlcnMuc2V0KHNlbGVjdGVkQ2FsZW5kYXJzKTtcbiAgICB0aGlzLm1vZGFsU2VydmljZS5jbG9zZU1vZGFsKHRoaXMuZmlsdGVyTW9kYWxJZCgpIGFzIHN0cmluZyk7XG4gICAgdGhpcy5maWx0ZXJNb2RhbElkLnNldChudWxsKTtcbiAgfVxuXG4gIGdldEZvcm1Db250cm9sKG5hbWU6IHN0cmluZyk6IEZvcm1Db250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5jYWxlbmRhckZvcm0uZ2V0KG5hbWUpIGFzIEZvcm1Db250cm9sO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYm1iX2NhbGVuZGFyXCIgW25nU3R5bGVdPVwieyBoZWlnaHQ6IGdldEhlaWdodChoZWlnaHQoKSkgfVwiPlxuICBAaWYgKGlzTW9iaWxlSGVhZGVyKSB7XG4gICAgPGJtYi1jYWxlbmRhci10ZW1wbGF0ZS1tb2JpbGVcbiAgICAgIFtub3ddPVwidmlzaWJsZURhdGUoKVwiXG4gICAgICBbbGFuZ109XCJsYW5nKClcIlxuICAgICAgW2V2ZW50c109XCJmaWx0ZXJlZEV2ZW50cygpXCJcbiAgICAgIChvbkN1cnJlbnREYXRlQ2hhbmdlKT1cImhhbmRsZUN1cnJlbnREYXRlQ2hhbmdlKCRldmVudClcIlxuICAgICAgW3dlZWtEYXlzXT1cInJlbmRlcldlZWtEYXlzKClcIlxuICAgICAgW2NhbGVuZGFyVGl0bGVdPVwiY2FsZW5kYXJUaXRsZSgpXCJcbiAgICAgIChvbkNsb3NlKT1cImhhbmRsZUNsb3NlKClcIlxuICAgICAgKHNob3dGaWx0ZXJzKT1cImhhbmRsZVNob3dNb2RhbEZpbHRlcigpXCJcbiAgICAvPlxuICB9IEBlbHNlIHtcbiAgICA8Ym1iLWNhbGVuZGFyLWhlYWRlclxuICAgICAgW3dlZWtEYXlzXT1cInJlbmRlcldlZWtEYXlzKClcIlxuICAgICAgW2xhbmddPVwibGFuZygpXCJcbiAgICAgIFt2aWV3XT1cInZpZXcoKVwiXG4gICAgICBbY3VycmVudERhdGVdPVwidmlzaWJsZURhdGUoKVwiXG4gICAgICAob25SYW5nZUNoYW5nZSk9XCJoYW5kbGVEYXRlQ2hhbmdlKCRldmVudCwgdmlzaWJsZURhdGUoKSlcIlxuICAgICAgKG9uQ3VycmVudERhdGVDaGFuZ2UpPVwiaGFuZGxlQ3VycmVudERhdGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICBbc2hvd0ZpbHRlckJ1dHRvbl09XCJzaG93RmlsdGVyQnV0dG9uKClcIlxuICAgICAgKHNob3dGaWx0ZXJzKT1cImhhbmRsZVNob3dNb2RhbEZpbHRlcigpXCJcbiAgICAvPlxuICB9XG4gIEBzd2l0Y2ggKHZpZXcoKSkge1xuICAgIEBjYXNlIChcImRheVwiKSB7XG4gICAgICA8Ym1iLWNhbGVuZGFyLXRlbXBsYXRlLWRheVxuICAgICAgICBbbm93XT1cInZpc2libGVEYXRlKClcIlxuICAgICAgICBbZXZlbnRzXT1cImdldERheUV2ZW50cygpXCJcbiAgICAgICAgKG9uU2VsZWN0RXZlbnQpPVwiaGFuZGxlU2VsZWN0RXZlbnQoJGV2ZW50KVwiXG4gICAgICAgIFtjdXJyZW50VGltZV09XCJjdXJyZW50VGltZSgpXCJcbiAgICAgICAgW3N0YXJ0QnVzaW5lc3NIb3VyXT1cInN0YXJ0QnVzaW5lc3NIb3VyKClcIlxuICAgICAgICBbZGF0ZUZvcm1hdF09XCJkYXRlRm9ybWF0KClcIlxuICAgICAgICBjbGFzcz1cImJtYl9jYWxlbmRhci1jb250ZW50XCJcbiAgICAgIC8+XG4gICAgfVxuICAgIEBjYXNlIChcIndlZWtcIikge1xuICAgICAgPGJtYi1jYWxlbmRhci10ZW1wbGF0ZS13ZWVrXG4gICAgICAgIFt3ZWVrRGF5c109XCJyZW5kZXJXZWVrRGF5cygpXCJcbiAgICAgICAgW2xhbmddPVwibGFuZygpXCJcbiAgICAgICAgW25vd109XCJ2aXNpYmxlRGF0ZSgpXCJcbiAgICAgICAgW2V2ZW50c109XCJmaWx0ZXJlZEV2ZW50cygpXCJcbiAgICAgICAgKG9uU2VsZWN0RXZlbnQpPVwiaGFuZGxlU2VsZWN0RXZlbnQoJGV2ZW50KVwiXG4gICAgICAgIFtjdXJyZW50VGltZV09XCJjdXJyZW50VGltZSgpXCJcbiAgICAgICAgW3N0YXJ0QnVzaW5lc3NIb3VyXT1cInN0YXJ0QnVzaW5lc3NIb3VyKClcIlxuICAgICAgICBbc2VsZWN0ZWRXZWVrXT1cInNlbGVjdGVkV2VlaygpXCJcbiAgICAgICAgY2xhc3M9XCJibWJfY2FsZW5kYXItY29udGVudFwiXG4gICAgICAvPlxuICAgIH1cbiAgICBAY2FzZSAoXCJtb250aFwiKSB7XG4gICAgICA8Ym1iLWNhbGVuZGFyLXRlbXBsYXRlLW1vbnRoXG4gICAgICAgIFtub3ddPVwidmlzaWJsZURhdGUoKVwiXG4gICAgICAgIFtldmVudHNdPVwiZmlsdGVyZWRFdmVudHMoKVwiXG4gICAgICAgIChvblNlbGVjdEV2ZW50KT1cImhhbmRsZVNlbGVjdEV2ZW50KCRldmVudClcIlxuICAgICAgICBjbGFzcz1cImJtYl9jYWxlbmRhci1jb250ZW50XCJcbiAgICAgIC8+XG4gICAgfVxuICAgIEBkZWZhdWx0IHtcbiAgICAgIDxibWItY2FsZW5kYXItdGVtcGxhdGUtd2Vla1xuICAgICAgICBbd2Vla0RheXNdPVwicmVuZGVyV2Vla0RheXMoKVwiXG4gICAgICAgIFtsYW5nXT1cImxhbmcoKVwiXG4gICAgICAgIFtub3ddPVwidmlzaWJsZURhdGUoKVwiXG4gICAgICAgIFtldmVudHNdPVwiZmlsdGVyZWRFdmVudHMoKVwiXG4gICAgICAgIGNsYXNzPVwiYm1iX2NhbGVuZGFyLWNvbnRlbnRcIlxuICAgICAgLz5cbiAgICB9XG4gIH1cblxuICBAaWYgKGlzTG9hZGluZygpKSB7XG4gICAgPGRpdiBjbGFzcz1cImJtYl9jYWxlbmRhci1sb2FkZXJcIj5cbiAgICAgIDxibWItbG9hZGVyIFtzaG93SW5saW5lXT1cInRydWVcIiAvPlxuICAgIDwvZGl2PlxuICB9XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNkZXRhaWxDb250ZW50PlxuICBAaWYgKHNlbGVjdGVkRXZlbnQpIHtcbiAgICA8c2VjdGlvbj5cbiAgICAgIEBpZiAoc2VsZWN0ZWRFdmVudC50YWdzPy5sZW5ndGgpIHtcbiAgICAgICAgPHAgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBmbGV4LXdyYXA6IHdyYXA7IGdhcDogMC41cmVtXCI+XG4gICAgICAgICAgQGZvciAoaXRlbSBvZiBzZWxlY3RlZEV2ZW50LnRhZ3M7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgPGJtYi1iYWRnZSBbdGV4dF09XCJpdGVtLnRleHRcIiBbYXBwZWFyYW5jZV09XCJpdGVtLmFwcGVhcmFuY2VcIiAvPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9wPlxuICAgICAgfVxuICAgICAgQGlmIChzZWxlY3RlZEV2ZW50LnRpdGxlKSB7XG4gICAgICAgIDxwIGNsYXNzPVwiYm1iX2NhbGVuZGFyLWV2ZW50LW1vZGFsLXRpdGxlXCI+e3sgc2VsZWN0ZWRFdmVudC50aXRsZSB9fTwvcD5cbiAgICAgIH1cbiAgICAgIEBpZiAoc2VsZWN0ZWRFdmVudC5wbGFjZSkge1xuICAgICAgICA8cCBjbGFzcz1cImJtYl9jYWxlbmRhci1ldmVudC1tb2RhbC1wbGFjZVwiPnt7IHNlbGVjdGVkRXZlbnQucGxhY2UgfX08L3A+XG4gICAgICB9XG4gICAgICA8ZGl2IGNsYXNzPVwiYm1iX2NhbGVuZGFyLWV2ZW50LW1vZGFsLWR1cmF0aW9uXCI+e3sgZ2V0RHVyYXRpb24oKSB9fTwvZGl2PlxuICAgIDwvc2VjdGlvbj5cbiAgfVxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNtb2RhbFRlbXBsYXRlPlxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cImNhbGVuZGFyRm9ybVwiPlxuICAgIEBmb3IgKGl0ZW0gb2YgZmlsdGVyZWRFdmVudHMoKS5jYWxlbmRhcnM7IHRyYWNrICRpbmRleCkge1xuICAgICAgPGJtYi1jaGVja2JveFxuICAgICAgICBbaW5wdXRJZF09XCInY2hlY2tib3hfJyArIGl0ZW1cIlxuICAgICAgICBbbmFtZV09XCInY2hlY2tib3hfJyArIGl0ZW1cIlxuICAgICAgICBbbGFiZWxdPVwiaXRlbVwiXG4gICAgICAgIFtjb250cm9sXT1cImdldEZvcm1Db250cm9sKGl0ZW0pXCJcbiAgICAgIC8+XG4gICAgfVxuICA8L2Zvcm0+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -0,0 +1,96 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, ChangeDetectionStrategy, ViewEncapsulation, input, output, } 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 * as i0 from "@angular/core";
10
+ import * as i1 from "@angular/common";
11
+ export class BmbCalendarHeaderComponent {
12
+ constructor() {
13
+ this.weekDays = input([]);
14
+ this.lang = input('es-MX');
15
+ this.view = input('week');
16
+ this.currentDate = input(DateTime.now());
17
+ this.showFilterButton = input(false);
18
+ this.onRangeChange = output();
19
+ this.onCurrentDateChange = output();
20
+ this.showFilters = output();
21
+ }
22
+ getTitle() {
23
+ if (this.view() === 'week') {
24
+ return `${this.weekDays()[0].setLocale(this.lang()).toFormat('LLL dd')} -
25
+ ${this.weekDays()[6].setLocale(this.lang()).toFormat('LLL dd')}`;
26
+ }
27
+ if (this.view() === 'day') {
28
+ return this.currentDate().toLocaleString({
29
+ month: 'long',
30
+ day: 'numeric',
31
+ year: 'numeric',
32
+ });
33
+ }
34
+ return this.currentDate().toLocaleString({ month: 'long' });
35
+ }
36
+ handleRangeChange(event) {
37
+ if (event === 'month') {
38
+ const newDate = DateTime.fromObject({
39
+ month: this.currentDate().month,
40
+ year: this.currentDate().year,
41
+ day: 1,
42
+ });
43
+ this.onCurrentDateChange.emit(newDate);
44
+ }
45
+ this.onRangeChange.emit(event);
46
+ }
47
+ handleChangeDate(event) {
48
+ const modifyDate = ({ config, date }) => {
49
+ if (event === '+') {
50
+ this.onCurrentDateChange.emit(date.plus(config));
51
+ }
52
+ else {
53
+ this.onCurrentDateChange.emit(date.minus(config));
54
+ }
55
+ };
56
+ switch (this.view()) {
57
+ case 'day':
58
+ modifyDate({ config: { days: 1 }, date: this.currentDate() });
59
+ break;
60
+ case 'week':
61
+ modifyDate({ config: { days: 7 }, date: this.currentDate() });
62
+ break;
63
+ case 'month':
64
+ const newDate = DateTime.fromObject({
65
+ month: this.currentDate().month,
66
+ year: this.currentDate().year,
67
+ day: 1,
68
+ });
69
+ modifyDate({ config: { month: 1 }, date: newDate });
70
+ break;
71
+ default:
72
+ break;
73
+ }
74
+ }
75
+ goToToday() {
76
+ this.onCurrentDateChange.emit(DateTime.now());
77
+ }
78
+ handleShowFilters() {
79
+ console.log('click filter');
80
+ this.showFilters.emit();
81
+ }
82
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BmbCalendarHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
83
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: BmbCalendarHeaderComponent, isStandalone: true, selector: "bmb-calendar-header", inputs: { weekDays: { classPropertyName: "weekDays", publicName: "weekDays", isSignal: true, isRequired: false, transformFunction: null }, lang: { classPropertyName: "lang", publicName: "lang", 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()\">Hoy</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 D\u00EDa\n </button>\n <button\n type=\"button\"\n (click)=\"handleRangeChange('week')\"\n [ngClass]=\"{ 'bmb_button-selected': view() === 'week' }\"\n >\n Semana\n </button>\n <button\n type=\"button\"\n (click)=\"handleRangeChange('month')\"\n [ngClass]=\"{ 'bmb_button-selected': view() === 'month' }\"\n >\n Mes\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-Thin;font-style:normal;font-weight:100;src:url(/assets/fonts/Poppins/Poppins-Thin.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Light;font-style:normal;font-weight:300;src:url(/assets/fonts/Poppins/Poppins-ExtraLight.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Regular;font-style:normal;font-weight:400;src:url(/assets/fonts/Poppins/Poppins-Regular.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Medium;font-style:normal;font-weight:500;src:url(/assets/fonts/Poppins/Poppins-Medium.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Semibold;font-style:normal;font-weight:600;src:url(/assets/fonts/Poppins/Poppins-SemiBold.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Bold;font-style:normal;font-weight:700;src:url(/assets/fonts/Poppins/Poppins-Bold.ttf) format(\"truetype\")}:root,:host{--font-display: \"Poppins-Regular\", sans-serif}.font-thin-1{font-family:Poppins-Thin,sans-serif;font-size:.625rem}.font-light-1{font-family:Poppins-Light,sans-serif;font-size:.625rem}.font-regular-1{font-family:Poppins-Regular,sans-serif;font-size:.625rem}.font-medium-1{font-family:Poppins-Medium,sans-serif;font-size:.625rem}.font-semibold-1{font-family:Poppins-Semibold,sans-serif;font-size:.625rem}.font-bold-1{font-family:Poppins-Bold,sans-serif;font-size:.625rem}.font-thin-2{font-family:Poppins-Thin,sans-serif;font-size:.6875rem}.font-light-2{font-family:Poppins-Light,sans-serif;font-size:.6875rem}.font-regular-2{font-family:Poppins-Regular,sans-serif;font-size:.6875rem}.font-medium-2{font-family:Poppins-Medium,sans-serif;font-size:.6875rem}.font-semibold-2{font-family:Poppins-Semibold,sans-serif;font-size:.6875rem}.font-bold-2{font-family:Poppins-Bold,sans-serif;font-size:.6875rem}.font-thin-3{font-family:Poppins-Thin,sans-serif;font-size:.75rem}.font-light-3{font-family:Poppins-Light,sans-serif;font-size:.75rem}.font-regular-3{font-family:Poppins-Regular,sans-serif;font-size:.75rem}.font-medium-3{font-family:Poppins-Medium,sans-serif;font-size:.75rem}.font-semibold-3{font-family:Poppins-Semibold,sans-serif;font-size:.75rem}.font-bold-3{font-family:Poppins-Bold,sans-serif;font-size:.75rem}.font-thin-4{font-family:Poppins-Thin,sans-serif;font-size:.875rem}.font-light-4{font-family:Poppins-Light,sans-serif;font-size:.875rem}.font-regular-4{font-family:Poppins-Regular,sans-serif;font-size:.875rem}.font-medium-4{font-family:Poppins-Medium,sans-serif;font-size:.875rem}.font-semibold-4{font-family:Poppins-Semibold,sans-serif;font-size:.875rem}.font-bold-4{font-family:Poppins-Bold,sans-serif;font-size:.875rem}.font-thin-4_5{font-family:Poppins-Thin,sans-serif;font-size:.9375rem}.font-light-4_5{font-family:Poppins-Light,sans-serif;font-size:.9375rem}.font-regular-4_5{font-family:Poppins-Regular,sans-serif;font-size:.9375rem}.font-medium-4_5{font-family:Poppins-Medium,sans-serif;font-size:.9375rem}.font-semibold-4_5{font-family:Poppins-Semibold,sans-serif;font-size:.9375rem}.font-bold-4_5{font-family:Poppins-Bold,sans-serif;font-size:.9375rem}.font-thin-5{font-family:Poppins-Thin,sans-serif;font-size:1rem}.font-light-5{font-family:Poppins-Light,sans-serif;font-size:1rem}.font-regular-5{font-family:Poppins-Regular,sans-serif;font-size:1rem}.font-medium-5{font-family:Poppins-Medium,sans-serif;font-size:1rem}.font-semibold-5{font-family:Poppins-Semibold,sans-serif;font-size:1rem}.font-bold-5{font-family:Poppins-Bold,sans-serif;font-size:1rem}.font-thin-6{font-family:Poppins-Thin,sans-serif;font-size:1.125rem}.font-light-6{font-family:Poppins-Light,sans-serif;font-size:1.125rem}.font-regular-6{font-family:Poppins-Regular,sans-serif;font-size:1.125rem}.font-medium-6{font-family:Poppins-Medium,sans-serif;font-size:1.125rem}.font-semibold-6{font-family:Poppins-Semibold,sans-serif;font-size:1.125rem}.font-bold-6{font-family:Poppins-Bold,sans-serif;font-size:1.125rem}.font-thin-7{font-family:Poppins-Thin,sans-serif;font-size:1.25rem}.font-light-7{font-family:Poppins-Light,sans-serif;font-size:1.25rem}.font-regular-7{font-family:Poppins-Regular,sans-serif;font-size:1.25rem}.font-medium-7{font-family:Poppins-Medium,sans-serif;font-size:1.25rem}.font-semibold-7{font-family:Poppins-Semibold,sans-serif;font-size:1.25rem}.font-bold-7{font-family:Poppins-Bold,sans-serif;font-size:1.25rem}.font-thin-8{font-family:Poppins-Thin,sans-serif;font-size:1.375rem}.font-light-8{font-family:Poppins-Light,sans-serif;font-size:1.375rem}.font-regular-8{font-family:Poppins-Regular,sans-serif;font-size:1.375rem}.font-medium-8{font-family:Poppins-Medium,sans-serif;font-size:1.375rem}.font-semibold-8{font-family:Poppins-Semibold,sans-serif;font-size:1.375rem}.font-bold-8{font-family:Poppins-Bold,sans-serif;font-size:1.375rem}.font-thin-9{font-family:Poppins-Thin,sans-serif;font-size:1.5rem}.font-light-9{font-family:Poppins-Light,sans-serif;font-size:1.5rem}.font-regular-9{font-family:Poppins-Regular,sans-serif;font-size:1.5rem}.font-medium-9{font-family:Poppins-Medium,sans-serif;font-size:1.5rem}.font-semibold-9{font-family:Poppins-Semibold,sans-serif;font-size:1.5rem}.font-bold-9{font-family:Poppins-Bold,sans-serif;font-size:1.5rem}.font-thin-10{font-family:Poppins-Thin,sans-serif;font-size:1.625rem}.font-light-10{font-family:Poppins-Light,sans-serif;font-size:1.625rem}.font-regular-10{font-family:Poppins-Regular,sans-serif;font-size:1.625rem}.font-medium-10{font-family:Poppins-Medium,sans-serif;font-size:1.625rem}.font-semibold-10{font-family:Poppins-Semibold,sans-serif;font-size:1.625rem}.font-bold-10{font-family:Poppins-Bold,sans-serif;font-size:1.625rem}.font-thin-11{font-family:Poppins-Thin,sans-serif;font-size:2.25rem}.font-light-11{font-family:Poppins-Light,sans-serif;font-size:2.25rem}.font-regular-11{font-family:Poppins-Regular,sans-serif;font-size:2.25rem}.font-medium-11{font-family:Poppins-Medium,sans-serif;font-size:2.25rem}.font-semibold-11{font-family:Poppins-Semibold,sans-serif;font-size:2.25rem}.font-bold-11{font-family:Poppins-Bold,sans-serif;font-size:2.25rem}.font-thin-12{font-family:Poppins-Thin,sans-serif;font-size:3rem}.font-light-12{font-family:Poppins-Light,sans-serif;font-size:3rem}.font-regular-12{font-family:Poppins-Regular,sans-serif;font-size:3rem}.font-medium-12{font-family:Poppins-Medium,sans-serif;font-size:3rem}.font-semibold-12{font-family:Poppins-Semibold,sans-serif;font-size:3rem}.font-bold-12{font-family:Poppins-Bold,sans-serif;font-size:3rem}.bmb_calendar-header{padding-bottom:1rem}@media (max-width: 999px){.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: i1.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"] }, { 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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
84
+ }
85
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BmbCalendarHeaderComponent, decorators: [{
86
+ type: Component,
87
+ args: [{ selector: 'bmb-calendar-header', standalone: true, imports: [
88
+ CommonModule,
89
+ BmbIconComponent,
90
+ BmbButtonGroupDirective,
91
+ BmbLayoutDirective,
92
+ BmbLayoutItemDirective,
93
+ BmbActionIconComponent,
94
+ ], 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()\">Hoy</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 D\u00EDa\n </button>\n <button\n type=\"button\"\n (click)=\"handleRangeChange('week')\"\n [ngClass]=\"{ 'bmb_button-selected': view() === 'week' }\"\n >\n Semana\n </button>\n <button\n type=\"button\"\n (click)=\"handleRangeChange('month')\"\n [ngClass]=\"{ 'bmb_button-selected': view() === 'month' }\"\n >\n Mes\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-Thin;font-style:normal;font-weight:100;src:url(/assets/fonts/Poppins/Poppins-Thin.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Light;font-style:normal;font-weight:300;src:url(/assets/fonts/Poppins/Poppins-ExtraLight.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Regular;font-style:normal;font-weight:400;src:url(/assets/fonts/Poppins/Poppins-Regular.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Medium;font-style:normal;font-weight:500;src:url(/assets/fonts/Poppins/Poppins-Medium.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Semibold;font-style:normal;font-weight:600;src:url(/assets/fonts/Poppins/Poppins-SemiBold.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Bold;font-style:normal;font-weight:700;src:url(/assets/fonts/Poppins/Poppins-Bold.ttf) format(\"truetype\")}:root,:host{--font-display: \"Poppins-Regular\", sans-serif}.font-thin-1{font-family:Poppins-Thin,sans-serif;font-size:.625rem}.font-light-1{font-family:Poppins-Light,sans-serif;font-size:.625rem}.font-regular-1{font-family:Poppins-Regular,sans-serif;font-size:.625rem}.font-medium-1{font-family:Poppins-Medium,sans-serif;font-size:.625rem}.font-semibold-1{font-family:Poppins-Semibold,sans-serif;font-size:.625rem}.font-bold-1{font-family:Poppins-Bold,sans-serif;font-size:.625rem}.font-thin-2{font-family:Poppins-Thin,sans-serif;font-size:.6875rem}.font-light-2{font-family:Poppins-Light,sans-serif;font-size:.6875rem}.font-regular-2{font-family:Poppins-Regular,sans-serif;font-size:.6875rem}.font-medium-2{font-family:Poppins-Medium,sans-serif;font-size:.6875rem}.font-semibold-2{font-family:Poppins-Semibold,sans-serif;font-size:.6875rem}.font-bold-2{font-family:Poppins-Bold,sans-serif;font-size:.6875rem}.font-thin-3{font-family:Poppins-Thin,sans-serif;font-size:.75rem}.font-light-3{font-family:Poppins-Light,sans-serif;font-size:.75rem}.font-regular-3{font-family:Poppins-Regular,sans-serif;font-size:.75rem}.font-medium-3{font-family:Poppins-Medium,sans-serif;font-size:.75rem}.font-semibold-3{font-family:Poppins-Semibold,sans-serif;font-size:.75rem}.font-bold-3{font-family:Poppins-Bold,sans-serif;font-size:.75rem}.font-thin-4{font-family:Poppins-Thin,sans-serif;font-size:.875rem}.font-light-4{font-family:Poppins-Light,sans-serif;font-size:.875rem}.font-regular-4{font-family:Poppins-Regular,sans-serif;font-size:.875rem}.font-medium-4{font-family:Poppins-Medium,sans-serif;font-size:.875rem}.font-semibold-4{font-family:Poppins-Semibold,sans-serif;font-size:.875rem}.font-bold-4{font-family:Poppins-Bold,sans-serif;font-size:.875rem}.font-thin-4_5{font-family:Poppins-Thin,sans-serif;font-size:.9375rem}.font-light-4_5{font-family:Poppins-Light,sans-serif;font-size:.9375rem}.font-regular-4_5{font-family:Poppins-Regular,sans-serif;font-size:.9375rem}.font-medium-4_5{font-family:Poppins-Medium,sans-serif;font-size:.9375rem}.font-semibold-4_5{font-family:Poppins-Semibold,sans-serif;font-size:.9375rem}.font-bold-4_5{font-family:Poppins-Bold,sans-serif;font-size:.9375rem}.font-thin-5{font-family:Poppins-Thin,sans-serif;font-size:1rem}.font-light-5{font-family:Poppins-Light,sans-serif;font-size:1rem}.font-regular-5{font-family:Poppins-Regular,sans-serif;font-size:1rem}.font-medium-5{font-family:Poppins-Medium,sans-serif;font-size:1rem}.font-semibold-5{font-family:Poppins-Semibold,sans-serif;font-size:1rem}.font-bold-5{font-family:Poppins-Bold,sans-serif;font-size:1rem}.font-thin-6{font-family:Poppins-Thin,sans-serif;font-size:1.125rem}.font-light-6{font-family:Poppins-Light,sans-serif;font-size:1.125rem}.font-regular-6{font-family:Poppins-Regular,sans-serif;font-size:1.125rem}.font-medium-6{font-family:Poppins-Medium,sans-serif;font-size:1.125rem}.font-semibold-6{font-family:Poppins-Semibold,sans-serif;font-size:1.125rem}.font-bold-6{font-family:Poppins-Bold,sans-serif;font-size:1.125rem}.font-thin-7{font-family:Poppins-Thin,sans-serif;font-size:1.25rem}.font-light-7{font-family:Poppins-Light,sans-serif;font-size:1.25rem}.font-regular-7{font-family:Poppins-Regular,sans-serif;font-size:1.25rem}.font-medium-7{font-family:Poppins-Medium,sans-serif;font-size:1.25rem}.font-semibold-7{font-family:Poppins-Semibold,sans-serif;font-size:1.25rem}.font-bold-7{font-family:Poppins-Bold,sans-serif;font-size:1.25rem}.font-thin-8{font-family:Poppins-Thin,sans-serif;font-size:1.375rem}.font-light-8{font-family:Poppins-Light,sans-serif;font-size:1.375rem}.font-regular-8{font-family:Poppins-Regular,sans-serif;font-size:1.375rem}.font-medium-8{font-family:Poppins-Medium,sans-serif;font-size:1.375rem}.font-semibold-8{font-family:Poppins-Semibold,sans-serif;font-size:1.375rem}.font-bold-8{font-family:Poppins-Bold,sans-serif;font-size:1.375rem}.font-thin-9{font-family:Poppins-Thin,sans-serif;font-size:1.5rem}.font-light-9{font-family:Poppins-Light,sans-serif;font-size:1.5rem}.font-regular-9{font-family:Poppins-Regular,sans-serif;font-size:1.5rem}.font-medium-9{font-family:Poppins-Medium,sans-serif;font-size:1.5rem}.font-semibold-9{font-family:Poppins-Semibold,sans-serif;font-size:1.5rem}.font-bold-9{font-family:Poppins-Bold,sans-serif;font-size:1.5rem}.font-thin-10{font-family:Poppins-Thin,sans-serif;font-size:1.625rem}.font-light-10{font-family:Poppins-Light,sans-serif;font-size:1.625rem}.font-regular-10{font-family:Poppins-Regular,sans-serif;font-size:1.625rem}.font-medium-10{font-family:Poppins-Medium,sans-serif;font-size:1.625rem}.font-semibold-10{font-family:Poppins-Semibold,sans-serif;font-size:1.625rem}.font-bold-10{font-family:Poppins-Bold,sans-serif;font-size:1.625rem}.font-thin-11{font-family:Poppins-Thin,sans-serif;font-size:2.25rem}.font-light-11{font-family:Poppins-Light,sans-serif;font-size:2.25rem}.font-regular-11{font-family:Poppins-Regular,sans-serif;font-size:2.25rem}.font-medium-11{font-family:Poppins-Medium,sans-serif;font-size:2.25rem}.font-semibold-11{font-family:Poppins-Semibold,sans-serif;font-size:2.25rem}.font-bold-11{font-family:Poppins-Bold,sans-serif;font-size:2.25rem}.font-thin-12{font-family:Poppins-Thin,sans-serif;font-size:3rem}.font-light-12{font-family:Poppins-Light,sans-serif;font-size:3rem}.font-regular-12{font-family:Poppins-Regular,sans-serif;font-size:3rem}.font-medium-12{font-family:Poppins-Medium,sans-serif;font-size:3rem}.font-semibold-12{font-family:Poppins-Semibold,sans-serif;font-size:3rem}.font-bold-12{font-family:Poppins-Bold,sans-serif;font-size:3rem}.bmb_calendar-header{padding-bottom:1rem}@media (max-width: 999px){.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"] }]
95
+ }] });
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm1iLWNhbGVuZGFyLWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kcy1uZy9zcmMvbGliL2NvbXBvbmVudHMvYm1iLWNhbGVuZGFyL2NvbW1vbi9ibWItY2FsZW5kYXItaGVhZGVyL2JtYi1jYWxlbmRhci1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZHMtbmcvc3JjL2xpYi9jb21wb25lbnRzL2JtYi1jYWxlbmRhci9jb21tb24vYm1iLWNhbGVuZGFyLWhlYWRlci9ibWItY2FsZW5kYXItaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsU0FBUyxFQUNULHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBRWpDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9FQUFvRSxDQUFDO0FBQzdHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9EQUFvRCxDQUFDOzs7QUFrQjVGLE1BQU0sT0FBTywwQkFBMEI7SUFoQnZDO1FBaUJFLGFBQVEsR0FBRyxLQUFLLENBQWEsRUFBRSxDQUFDLENBQUM7UUFDakMsU0FBSSxHQUFHLEtBQUssQ0FBUyxPQUFPLENBQUMsQ0FBQztRQUM5QixTQUFJLEdBQUcs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QUNsQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUs7b0JBQy9CLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSTtvQkFDN0IsR0FBRyxFQUFFLENBQUM7aUJBQ1AsQ0FBQyxDQUFDO2dCQUVILFVBQVUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztnQkFDcEQsTUFBTTtZQUVSO2dCQUNFLE1BQU07U0FDVDtJQUNILENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUU1QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzFCLENBQUM7K0dBakZVLDBCQUEwQjttR0FBMUIsMEJBQTBCLDgxQkNoQ3ZDLG9pREE2REEsdW9ORHpDSSxZQUFZLDZIQUNaLGdCQUFnQiw4SkFDaEIsdUJBQXVCLDZGQUN2QixrQkFBa0IsK0hBQ2xCLHNCQUFzQixpSkFDdEIsc0JBQXNCOzs0RkFPYiwwQkFBMEI7a0JBaEJ0QyxTQUFTOytCQUNFLHFCQUFxQixjQUNuQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLHVCQUF1Qjt3QkFDdkIsa0JBQWtCO3dCQUNsQixzQkFBc0I7d0JBQ3RCLHNCQUFzQjtxQkFDdkIsbUJBR2dCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGlucHV0LFxuICBvdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQm1iSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2JtYi1pY29uL2JtYi1pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXRlVGltZSB9IGZyb20gJ2x1eG9uJztcbmltcG9ydCB7IElCbWJDYWxlbmRhclZpZXcgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBCbWJCdXR0b25Hcm91cERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uLy4uL2RpcmVjdGl2ZXMvYm1iLWJ1dHRvbi1ncm91cC9ibWItYnV0dG9uLWdyb3VwLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBCbWJMYXlvdXREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi8uLi9kaXJlY3RpdmVzL2JtYi1sYXlvdXQvYm1iLWxheW91dC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQm1iTGF5b3V0SXRlbURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uLy4uL2RpcmVjdGl2ZXMvYm1iLWxheW91dC9ibWItbGF5b3V0LWl0ZW0uZGlyZWN0aXZlJztcbmltcG9ydCB7IEJtYkFjdGlvbkljb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9ibWItYWN0aW9uLWljb24vYm1iLWFjdGlvbi1pY29uLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JtYi1jYWxlbmRhci1oZWFkZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEJtYkljb25Db21wb25lbnQsXG4gICAgQm1iQnV0dG9uR3JvdXBEaXJlY3RpdmUsXG4gICAgQm1iTGF5b3V0RGlyZWN0aXZlLFxuICAgIEJtYkxheW91dEl0ZW1EaXJlY3RpdmUsXG4gICAgQm1iQWN0aW9uSWNvbkNvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2JtYi1jYWxlbmRhci1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vYm1iLWNhbGVuZGFyLWhlYWRlci5jb21wb25lbnQuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBCbWJDYWxlbmRhckhlYWRlckNvbXBvbmVudCB7XG4gIHdlZWtEYXlzID0gaW5wdXQ8RGF0ZVRpbWVbXT4oW10pO1xuICBsYW5nID0gaW5wdXQ8c3RyaW5nPignZXMtTVgnKTtcbiAgdmlldyA9IGlucHV0PElCbWJDYWxlbmRhclZpZXc+KCd3ZWVrJyk7XG4gIGN1cnJlbnREYXRlID0gaW5wdXQ8RGF0ZVRpbWU+KERhdGVUaW1lLm5vdygpKTtcbiAgc2hvd0ZpbHRlckJ1dHRvbiA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBvblJhbmdlQ2hhbmdlID0gb3V0cHV0PGFueT4oKTtcbiAgb25DdXJyZW50RGF0ZUNoYW5nZSA9IG91dHB1dDxEYXRlVGltZT4oKTtcbiAgc2hvd0ZpbHRlcnMgPSBvdXRwdXQ8dm9pZD4oKTtcblxuICBnZXRUaXRsZSgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnZpZXcoKSA9PT0gJ3dlZWsnKSB7XG4gICAgICByZXR1cm4gYCR7dGhpcy53ZWVrRGF5cygpWzBdLnNldExvY2FsZSh0aGlzLmxhbmcoKSkudG9Gb3JtYXQoJ0xMTCBkZCcpfSAtXG4gICAgICAgICR7dGhpcy53ZWVrRGF5cygpWzZdLnNldExvY2FsZSh0aGlzLmxhbmcoKSkudG9Gb3JtYXQoJ0xMTCBkZCcpfWA7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudmlldygpID09PSAnZGF5Jykge1xuICAgICAgcmV0dXJuIHRoaXMuY3VycmVudERhdGUoKS50b0xvY2FsZVN0cmluZyh7XG4gICAgICAgIG1vbnRoOiAnbG9uZycsXG4gICAgICAgIGRheTogJ251bWVyaWMnLFxuICAgICAgICB5ZWFyOiAnbnVtZXJpYycsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jdXJyZW50RGF0ZSgpLnRvTG9jYWxlU3RyaW5nKHsgbW9udGg6ICdsb25nJyB9KTtcbiAgfVxuXG4gIGhhbmRsZVJhbmdlQ2hhbmdlKGV2ZW50OiBJQm1iQ2FsZW5kYXJWaWV3KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50ID09PSAnbW9udGgnKSB7XG4gICAgICBjb25zdCBuZXdEYXRlID0gRGF0ZVRpbWUuZnJvbU9iamVjdCh7XG4gICAgICAgIG1vbnRoOiB0aGlzLmN1cnJlbnREYXRlKCkubW9udGgsXG4gICAgICAgIHllYXI6IHRoaXMuY3VycmVudERhdGUoKS55ZWFyLFxuICAgICAgICBkYXk6IDEsXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5vbkN1cnJlbnREYXRlQ2hhbmdlLmVtaXQobmV3RGF0ZSk7XG4gICAgfVxuICAgIHRoaXMub25SYW5nZUNoYW5nZS5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIGhhbmRsZUNoYW5nZURhdGUoZXZlbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IG1vZGlmeURhdGUgPSAoeyBjb25maWcsIGRhdGUgfTogYW55KSA9PiB7XG4gICAgICBpZiAoZXZlbnQgPT09ICcrJykge1xuICAgICAgICB0aGlzLm9uQ3VycmVudERhdGVDaGFuZ2UuZW1pdChkYXRlLnBsdXMoY29uZmlnKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9uQ3VycmVudERhdGVDaGFuZ2UuZW1pdChkYXRlLm1pbnVzKGNvbmZpZykpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBzd2l0Y2ggKHRoaXMudmlldygpKSB7XG4gICAgICBjYXNlICdkYXknOlxuICAgICAgICBtb2RpZnlEYXRlKHsgY29uZmlnOiB7IGRheXM6IDEgfSwgZGF0ZTogdGhpcy5jdXJyZW50RGF0ZSgpIH0pO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnd2Vlayc6XG4gICAgICAgIG1vZGlmeURhdGUoeyBjb25maWc6IHsgZGF5czogNyB9LCBkYXRlOiB0aGlzLmN1cnJlbnREYXRlKCkgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgICBjb25zdCBuZXdEYXRlID0gRGF0ZVRpbWUuZnJvbU9iamVjdCh7XG4gICAgICAgICAgbW9udGg6IHRoaXMuY3VycmVudERhdGUoKS5tb250aCxcbiAgICAgICAgICB5ZWFyOiB0aGlzLmN1cnJlbnREYXRlKCkueWVhcixcbiAgICAgICAgICBkYXk6IDEsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIG1vZGlmeURhdGUoeyBjb25maWc6IHsgbW9udGg6IDEgfSwgZGF0ZTogbmV3RGF0ZSB9KTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGdvVG9Ub2RheSgpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ3VycmVudERhdGVDaGFuZ2UuZW1pdChEYXRlVGltZS5ub3coKSk7XG4gIH1cblxuICBoYW5kbGVTaG93RmlsdGVycygpIHtcbiAgICBjb25zb2xlLmxvZygnY2xpY2sgZmlsdGVyJyk7XG5cbiAgICB0aGlzLnNob3dGaWx0ZXJzLmVtaXQoKTtcbiAgfVxufVxuIiwiPHNlY3Rpb25cbiAgY2xhc3M9XCJibWJfY2FsZW5kYXItaGVhZGVyXCJcbiAgYm1iTGF5b3V0XG4gIFtkeW5hbWljQ29sc109XCJ0cnVlXCJcbiAgbWFyZ2luPVwibm9uZVwiXG4gIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuPlxuICA8ZGl2XG4gICAgYm1iTGF5b3V0SXRlbVxuICAgIFtpc0R5bmFtaWNJdGVtXT1cInRydWVcIlxuICAgIGJtYkJ1dHRvbkdyb3VwXG4gICAgYXBwZWFyYW5jZT1cInRyYW5zcGFyZW50XCJcbiAgICBzaXplPVwibGFyZ2VcIlxuICA+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImdvVG9Ub2RheSgpXCI+SG95PC9idXR0b24+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImhhbmRsZUNoYW5nZURhdGUoJy0nKVwiPlxuICAgICAgPGJtYi1pY29uIFtpY29uXT1cIidhcnJvd19iYWNrX2lvcydcIiAvPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJoYW5kbGVDaGFuZ2VEYXRlKCcrJylcIj5cbiAgICAgIDxibWItaWNvbiBbaWNvbl09XCInYXJyb3dfZm9yd2FyZF9pb3MnXCIgLz5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxoMVxuICAgIGJtYkxheW91dEl0ZW1cbiAgICBbaXNEeW5hbWljSXRlbV09XCJ0cnVlXCJcbiAgICBbY29sR3Jvd109XCIxXCJcbiAgICBjbGFzcz1cImJtYl9jYWxlbmRhci1oZWFkZXItdGl0bGVcIlxuICA+XG4gICAge3sgZ2V0VGl0bGUoKSB9fVxuICA8L2gxPlxuICA8ZGl2IGJtYkJ1dHRvbkdyb3VwIGFwcGVhcmFuY2U9XCJzZWNvbmRhcnktb3V0bGluZWRcIiBzaXplPVwibGFyZ2VcIj5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIChjbGljayk9XCJoYW5kbGVSYW5nZUNoYW5nZSgnZGF5JylcIlxuICAgICAgW25nQ2xhc3NdPVwieyAnYm1iX2J1dHRvbi1zZWxlY3RlZCc6IHZpZXcoKSA9PT0gJ2RheScgfVwiXG4gICAgPlxuICAgICAgRMOtYVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgKGNsaWNrKT1cImhhbmRsZVJhbmdlQ2hhbmdlKCd3ZWVrJylcIlxuICAgICAgW25nQ2xhc3NdPVwieyAnYm1iX2J1dHRvbi1zZWxlY3RlZCc6IHZpZXcoKSA9PT0gJ3dlZWsnIH1cIlxuICAgID5cbiAgICAgIFNlbWFuYVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgKGNsaWNrKT1cImhhbmRsZVJhbmdlQ2hhbmdlKCdtb250aCcpXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgJ2JtYl9idXR0b24tc2VsZWN0ZWQnOiB2aWV3KCkgPT09ICdtb250aCcgfVwiXG4gICAgPlxuICAgICAgTWVzXG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICBAaWYgKHNob3dGaWx0ZXJCdXR0b24oKSkge1xuICAgIDxibWItYWN0aW9uLWljb25cbiAgICAgIFtpY29uXT1cIid0dW5lJ1wiXG4gICAgICAoYnV0dG9uQ2xpY2spPVwiaGFuZGxlU2hvd0ZpbHRlcnMoKVwiXG4gICAgICBbaWNvblNpemVdPVwiMjRcIlxuICAgID48L2JtYi1hY3Rpb24taWNvbj5cbiAgfVxuPC9zZWN0aW9uPlxuIl19