@bravobit/bb-foundation 0.15.4 → 0.16.1

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 (377) hide show
  1. package/auth/lib/auth.interceptor.d.ts +1 -1
  2. package/auth/lib/auth.service.d.ts +1 -1
  3. package/auth/package.json +5 -5
  4. package/collections/package.json +5 -5
  5. package/controls/bravobit-bb-foundation-controls.d.ts +5 -0
  6. package/controls/lib/checkbox/checkbox.component.d.ts +27 -0
  7. package/controls/lib/checkbox/checkbox.module.d.ts +9 -0
  8. package/controls/lib/controls.module.d.ts +7 -0
  9. package/controls/package.json +10 -0
  10. package/controls/public_api.d.ts +3 -0
  11. package/dashboard/package.json +5 -5
  12. package/dialog/package.json +5 -5
  13. package/elements/package.json +5 -5
  14. package/{esm2015/auth/bravobit-bb-foundation-auth.js → esm2020/auth/bravobit-bb-foundation-auth.mjs} +0 -0
  15. package/esm2020/auth/lib/auth.interceptor.mjs +94 -0
  16. package/{esm2015/auth/lib/auth.module.js → esm2020/auth/lib/auth.module.mjs} +5 -5
  17. package/esm2020/auth/lib/auth.service.mjs +276 -0
  18. package/esm2020/auth/lib/auth.session.mjs +131 -0
  19. package/{esm2015/auth/lib/directives/authenticated.directive.js → esm2020/auth/lib/directives/authenticated.directive.mjs} +5 -6
  20. package/esm2020/auth/lib/directives/permission.directive.mjs +80 -0
  21. package/esm2020/auth/lib/directives/role.directive.mjs +37 -0
  22. package/esm2020/auth/lib/guards/anonymous.guard.mjs +34 -0
  23. package/esm2020/auth/lib/guards/authenticated.guard.mjs +35 -0
  24. package/{esm2015/auth/lib/helpers/jwt.helper.js → esm2020/auth/lib/helpers/jwt.helper.mjs} +3 -3
  25. package/{esm2015/auth/lib/helpers/mapper.helper.js → esm2020/auth/lib/helpers/mapper.helper.mjs} +4 -4
  26. package/{esm2015/auth/lib/interfaces/config.interface.js → esm2020/auth/lib/interfaces/config.interface.mjs} +0 -0
  27. package/{esm2015/auth/lib/interfaces/mapper.interface.js → esm2020/auth/lib/interfaces/mapper.interface.mjs} +0 -0
  28. package/{esm2015/auth/lib/interfaces/provider.interface.js → esm2020/auth/lib/interfaces/provider.interface.mjs} +0 -0
  29. package/{esm2015/auth/lib/interfaces/token.interface.js → esm2020/auth/lib/interfaces/token.interface.mjs} +0 -0
  30. package/esm2020/auth/lib/permissions.service.mjs +56 -0
  31. package/esm2020/auth/lib/providers/email.provider.mjs +25 -0
  32. package/esm2020/auth/lib/providers/verify.provider.mjs +19 -0
  33. package/{esm2015/auth/lib/tokens/use-authorization.token.js → esm2020/auth/lib/tokens/use-authorization.token.mjs} +0 -0
  34. package/{esm2015/auth/public_api.js → esm2020/auth/public_api.mjs} +0 -0
  35. package/{esm2015/bravobit-bb-foundation.js → esm2020/bravobit-bb-foundation.mjs} +0 -0
  36. package/{esm2015/collections/bravobit-bb-foundation-collections.js → esm2020/collections/bravobit-bb-foundation-collections.mjs} +0 -0
  37. package/esm2020/collections/lib/collection.mjs +98 -0
  38. package/{esm2015/collections/lib/collections.module.js → esm2020/collections/lib/collections.module.mjs} +5 -5
  39. package/esm2020/collections/lib/components/collections-pager/collections-pager.component.mjs +123 -0
  40. package/esm2020/collections/lib/components/collections-viewer/collections-viewer.component.mjs +31 -0
  41. package/{esm2015/collections/lib/components/collections.directive.js → esm2020/collections/lib/components/collections.directive.mjs} +13 -13
  42. package/{esm2015/collections/lib/interfaces/collection.interface.js → esm2020/collections/lib/interfaces/collection.interface.mjs} +0 -0
  43. package/esm2020/collections/lib/providers/api-collection.provider.mjs +68 -0
  44. package/esm2020/collections/lib/providers/collection.provider.mjs +13 -0
  45. package/{esm2015/collections/lib/providers/local-collection.provider.js → esm2020/collections/lib/providers/local-collection.provider.mjs} +0 -0
  46. package/{esm2015/collections/public_api.js → esm2020/collections/public_api.mjs} +0 -0
  47. package/esm2020/controls/bravobit-bb-foundation-controls.mjs +5 -0
  48. package/esm2020/controls/lib/checkbox/checkbox.component.mjs +86 -0
  49. package/esm2020/controls/lib/checkbox/checkbox.module.mjs +19 -0
  50. package/esm2020/controls/lib/controls.module.mjs +16 -0
  51. package/esm2020/controls/public_api.mjs +4 -0
  52. package/{esm2015/dashboard/bravobit-bb-foundation-dashboard.js → esm2020/dashboard/bravobit-bb-foundation-dashboard.mjs} +0 -0
  53. package/esm2020/dashboard/lib/dashboard/dashboard.component.mjs +56 -0
  54. package/esm2020/dashboard/lib/dashboard-header/dashboard-header.component.mjs +30 -0
  55. package/esm2020/dashboard/lib/dashboard-menu/dashboard-menu.component.mjs +31 -0
  56. package/esm2020/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.mjs +29 -0
  57. package/esm2020/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.mjs +75 -0
  58. package/esm2020/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.mjs +99 -0
  59. package/esm2020/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.mjs +62 -0
  60. package/{esm2015/dashboard/lib/dashboard.module.js → esm2020/dashboard/lib/dashboard.module.mjs} +5 -5
  61. package/{esm2015/dashboard/public_api.js → esm2020/dashboard/public_api.mjs} +0 -0
  62. package/{esm2015/dialog/bravobit-bb-foundation-dialog.js → esm2020/dialog/bravobit-bb-foundation-dialog.mjs} +0 -0
  63. package/esm2020/dialog/lib/dialog-actions/dialog-actions.component.mjs +12 -0
  64. package/esm2020/dialog/lib/dialog-confirm/dialog-confirm.component.mjs +37 -0
  65. package/{esm2015/dialog/lib/dialog-container/dialog-container.component.js → esm2020/dialog/lib/dialog-container/dialog-container.component.mjs} +6 -15
  66. package/esm2020/dialog/lib/dialog-header/dialog-header.component.mjs +25 -0
  67. package/esm2020/dialog/lib/dialog-link/dialog-link.component.mjs +11 -0
  68. package/esm2020/dialog/lib/dialog-modal/dialog-modal.component.mjs +46 -0
  69. package/esm2020/dialog/lib/dialog-overlay/dialog-overlay.component.mjs +134 -0
  70. package/{esm2015/dialog/lib/dialog.injector.js → esm2020/dialog/lib/dialog.injector.mjs} +0 -0
  71. package/{esm2015/dialog/lib/dialog.insertion.js → esm2020/dialog/lib/dialog.insertion.mjs} +4 -4
  72. package/{esm2015/dialog/lib/dialog.interfaces.js → esm2020/dialog/lib/dialog.interfaces.mjs} +0 -0
  73. package/{esm2015/dialog/lib/dialog.module.js → esm2020/dialog/lib/dialog.module.mjs} +5 -9
  74. package/{esm2015/dialog/lib/dialog.ref.js → esm2020/dialog/lib/dialog.ref.mjs} +0 -0
  75. package/{esm2015/dialog/lib/dialog.service.js → esm2020/dialog/lib/dialog.service.mjs} +5 -5
  76. package/{esm2015/dialog/public_api.js → esm2020/dialog/public_api.mjs} +0 -0
  77. package/{esm2015/elements/bravobit-bb-foundation-elements.js → esm2020/elements/bravobit-bb-foundation-elements.mjs} +0 -0
  78. package/esm2020/elements/lib/avatar/avatar.component.mjs +142 -0
  79. package/esm2020/elements/lib/button/button.component.mjs +61 -0
  80. package/esm2020/elements/lib/checkbox/checkbox.component.mjs +73 -0
  81. package/esm2020/elements/lib/date-picker/date-picker.component.mjs +304 -0
  82. package/{esm2015/elements/lib/directives/addon.directive.js → esm2020/elements/lib/directives/addon.directive.mjs} +7 -7
  83. package/esm2020/elements/lib/directives/autosize.directive.mjs +72 -0
  84. package/{esm2015/elements/lib/directives/focus-trap.directive.js → esm2020/elements/lib/directives/focus-trap.directive.mjs} +4 -4
  85. package/{esm2015/elements/lib/directives/focus.directive.js → esm2020/elements/lib/directives/focus.directive.mjs} +4 -4
  86. package/esm2020/elements/lib/directives/form-submit.directive.mjs +50 -0
  87. package/esm2020/elements/lib/directives/input.directive.mjs +136 -0
  88. package/{esm2015/elements/lib/directives/template.directive.js → esm2020/elements/lib/directives/template.directive.mjs} +4 -4
  89. package/esm2020/elements/lib/dropdown/dropdown.component.mjs +100 -0
  90. package/{esm2015/elements/lib/elements.interfaces.js → esm2020/elements/lib/elements.interfaces.mjs} +0 -0
  91. package/{esm2015/elements/lib/elements.module.js → esm2020/elements/lib/elements.module.mjs} +5 -5
  92. package/esm2020/elements/lib/file-picker/file-picker.component.mjs +236 -0
  93. package/esm2020/elements/lib/form-control/form-control.component.mjs +49 -0
  94. package/esm2020/elements/lib/form-error/form-error.component.mjs +108 -0
  95. package/esm2020/elements/lib/form-group/form-group.component.mjs +18 -0
  96. package/esm2020/elements/lib/icon/icon.component.mjs +102 -0
  97. package/esm2020/elements/lib/image-picker/image-picker.component.mjs +106 -0
  98. package/esm2020/elements/lib/pipes/file-image.pipe.mjs +42 -0
  99. package/{esm2015/elements/lib/pipes/file-size.pipe.js → esm2020/elements/lib/pipes/file-size.pipe.mjs} +4 -4
  100. package/esm2020/elements/lib/pipes/relative-time.pipe.mjs +94 -0
  101. package/esm2020/elements/lib/spinner/spinner.component.mjs +25 -0
  102. package/esm2020/elements/lib/tag/tag.component.mjs +18 -0
  103. package/{esm2015/elements/public_api.js → esm2020/elements/public_api.mjs} +0 -0
  104. package/{esm2015/http/bravobit-bb-foundation-http.js → esm2020/http/bravobit-bb-foundation-http.mjs} +0 -0
  105. package/esm2020/http/lib/classes/http.config.mjs +29 -0
  106. package/esm2020/http/lib/classes/http.error.mjs +20 -0
  107. package/{esm2015/http/lib/http.interfaces.js → esm2020/http/lib/http.interfaces.mjs} +0 -0
  108. package/{esm2015/http/lib/http.module.js → esm2020/http/lib/http.module.mjs} +5 -5
  109. package/esm2020/http/lib/interceptors/base-url.interceptor.mjs +50 -0
  110. package/esm2020/http/lib/interceptors/error.interceptor.mjs +32 -0
  111. package/{esm2015/http/public_api.js → esm2020/http/public_api.mjs} +0 -0
  112. package/{esm2015/lib/core/coercions/boolean-coercion.js → esm2020/lib/core/coercions/boolean-coercion.mjs} +0 -0
  113. package/{esm2015/lib/core/miscellaneous/regex.js → esm2020/lib/core/miscellaneous/regex.mjs} +0 -0
  114. package/esm2020/lib/core/miscellaneous/validator.mjs +85 -0
  115. package/{esm2015/lib/core/mixins/can-disable.js → esm2020/lib/core/mixins/can-disable.mjs} +0 -0
  116. package/{esm2015/lib/core/mixins/can-hide-errors.js → esm2020/lib/core/mixins/can-hide-errors.mjs} +0 -0
  117. package/{esm2015/lib/core/mixins/can-load.js → esm2020/lib/core/mixins/can-load.mjs} +0 -0
  118. package/{esm2015/lib/core/mixins/constructor.js → esm2020/lib/core/mixins/constructor.mjs} +0 -0
  119. package/{esm2015/lib/core/mixins/has-error.js → esm2020/lib/core/mixins/has-error.mjs} +0 -0
  120. package/{esm2015/lib/core/mixins/is-focused.js → esm2020/lib/core/mixins/is-focused.mjs} +0 -0
  121. package/{esm2015/lib/core/mixins/is-grouped.js → esm2020/lib/core/mixins/is-grouped.mjs} +0 -0
  122. package/{esm2015/lib/core/mixins/is-readonly.js → esm2020/lib/core/mixins/is-readonly.mjs} +0 -0
  123. package/{esm2015/lib/core/mixins/is-required.js → esm2020/lib/core/mixins/is-required.mjs} +0 -0
  124. package/esm2020/lib/core/services/clipboard.service.mjs +70 -0
  125. package/esm2020/lib/core/services/exif.service.mjs +163 -0
  126. package/esm2020/lib/core/services/file-loader.service.mjs +87 -0
  127. package/esm2020/lib/core/services/image-converter.service.mjs +123 -0
  128. package/{esm2015/lib/core/services/languages.service.js → esm2020/lib/core/services/languages.service.mjs} +4 -4
  129. package/{esm2015/lib/core/services/network.service.js → esm2020/lib/core/services/network.service.mjs} +5 -6
  130. package/esm2020/lib/core/services/patch.service.mjs +63 -0
  131. package/{esm2015/lib/core/services/platform.service.js → esm2020/lib/core/services/platform.service.mjs} +5 -5
  132. package/{esm2015/lib/core/tokens/accept-language.token.js → esm2020/lib/core/tokens/accept-language.token.mjs} +0 -0
  133. package/{esm2015/lib/core/tokens/base-url.token.js → esm2020/lib/core/tokens/base-url.token.mjs} +0 -0
  134. package/{esm2015/lib/core/tokens/cookie.token.js → esm2020/lib/core/tokens/cookie.token.mjs} +0 -0
  135. package/{esm2015/lib/core/tokens/location.token.js → esm2020/lib/core/tokens/location.token.mjs} +0 -0
  136. package/{esm2015/lib/core/tokens/navigator.token.js → esm2020/lib/core/tokens/navigator.token.mjs} +0 -0
  137. package/{esm2015/lib/core/tokens/window.token.js → esm2020/lib/core/tokens/window.token.mjs} +0 -0
  138. package/{esm2015/localize/bravobit-bb-foundation-localize.js → esm2020/localize/bravobit-bb-foundation-localize.mjs} +0 -0
  139. package/{esm2015/localize/lib/functions/date.function.js → esm2020/localize/lib/functions/date.function.mjs} +0 -0
  140. package/{esm2015/localize/lib/functions/lowercase.function.js → esm2020/localize/lib/functions/lowercase.function.mjs} +0 -0
  141. package/{esm2015/localize/lib/functions/uppercase.function.js → esm2020/localize/lib/functions/uppercase.function.mjs} +0 -0
  142. package/{esm2015/localize/lib/handlers/missing.handler.js → esm2020/localize/lib/handlers/missing.handler.mjs} +0 -0
  143. package/{esm2015/localize/lib/interfaces/config.interfaces.js → esm2020/localize/lib/interfaces/config.interfaces.mjs} +0 -0
  144. package/{esm2015/localize/lib/interfaces/dictionary.interfaces.js → esm2020/localize/lib/interfaces/dictionary.interfaces.mjs} +0 -0
  145. package/{esm2015/localize/lib/interfaces/functions.interfaces.js → esm2020/localize/lib/interfaces/functions.interfaces.mjs} +0 -0
  146. package/{esm2015/localize/lib/interfaces/handlers.interfaces.js → esm2020/localize/lib/interfaces/handlers.interfaces.mjs} +0 -0
  147. package/{esm2015/localize/lib/interfaces/options.interfaces.js → esm2020/localize/lib/interfaces/options.interfaces.mjs} +0 -0
  148. package/{esm2015/localize/lib/localizations/dutch.localization.js → esm2020/localize/lib/localizations/dutch.localization.mjs} +0 -0
  149. package/{esm2015/localize/lib/localizations/english.localization.js → esm2020/localize/lib/localizations/english.localization.mjs} +0 -0
  150. package/esm2020/localize/lib/localize.dictionary.mjs +135 -0
  151. package/{esm2015/localize/lib/localize.module.js → esm2020/localize/lib/localize.module.mjs} +5 -5
  152. package/{esm2015/localize/lib/localize.pipe.js → esm2020/localize/lib/localize.pipe.mjs} +5 -5
  153. package/esm2020/localize/lib/localize.service.mjs +277 -0
  154. package/esm2020/localize/lib/views/localize-string/localize-string.component.mjs +88 -0
  155. package/{esm2015/localize/lib/views/localize-template-or-string.directive.js → esm2020/localize/lib/views/localize-template-or-string.directive.mjs} +4 -4
  156. package/{esm2015/localize/lib/views/localize-template.directive.js → esm2020/localize/lib/views/localize-template.directive.mjs} +4 -4
  157. package/{esm2015/localize/public_api.js → esm2020/localize/public_api.mjs} +0 -0
  158. package/{esm2015/notifications/bravobit-bb-foundation-notifications.js → esm2020/notifications/bravobit-bb-foundation-notifications.mjs} +0 -0
  159. package/esm2020/notifications/lib/notifications-item/notifications-item.component.mjs +100 -0
  160. package/esm2020/notifications/lib/notifications-list/notifications-list.component.mjs +47 -0
  161. package/{esm2015/notifications/lib/notifications.animations.js → esm2020/notifications/lib/notifications.animations.mjs} +0 -0
  162. package/{esm2015/notifications/lib/notifications.injector.js → esm2020/notifications/lib/notifications.injector.mjs} +0 -0
  163. package/{esm2015/notifications/lib/notifications.interfaces.js → esm2020/notifications/lib/notifications.interfaces.mjs} +0 -0
  164. package/{esm2015/notifications/lib/notifications.module.js → esm2020/notifications/lib/notifications.module.mjs} +6 -7
  165. package/{esm2015/notifications/lib/notifications.service.js → esm2020/notifications/lib/notifications.service.mjs} +5 -5
  166. package/{esm2015/notifications/public_api.js → esm2020/notifications/public_api.mjs} +0 -0
  167. package/{esm2015/public_api.js → esm2020/public_api.mjs} +0 -0
  168. package/{esm2015/recaptcha/bravobit-bb-foundation-recaptcha.js → esm2020/recaptcha/bravobit-bb-foundation-recaptcha.mjs} +0 -0
  169. package/esm2020/recaptcha/lib/recaptcha/recaptcha.component.mjs +185 -0
  170. package/esm2020/recaptcha/lib/recaptcha-loader.service.mjs +90 -0
  171. package/{esm2015/recaptcha/lib/recaptcha.interface.js → esm2020/recaptcha/lib/recaptcha.interface.mjs} +0 -0
  172. package/{esm2015/recaptcha/lib/recaptcha.module.js → esm2020/recaptcha/lib/recaptcha.module.mjs} +5 -5
  173. package/{esm2015/recaptcha/public_api.js → esm2020/recaptcha/public_api.mjs} +0 -0
  174. package/{esm2015/rxjs/bravobit-bb-foundation-rxjs.js → esm2020/rxjs/bravobit-bb-foundation-rxjs.mjs} +0 -0
  175. package/esm2020/rxjs/lib/operators/combine-latest-map.operator.mjs +10 -0
  176. package/{esm2015/rxjs/lib/operators/filter-nil.operator.js → esm2020/rxjs/lib/operators/filter-nil.operator.mjs} +0 -0
  177. package/{esm2015/rxjs/public_api.js → esm2020/rxjs/public_api.mjs} +0 -0
  178. package/{esm2015/storage/bravobit-bb-foundation-storage.js → esm2020/storage/bravobit-bb-foundation-storage.mjs} +0 -0
  179. package/{esm2015/storage/lib/interfaces/attributes.interface.js → esm2020/storage/lib/interfaces/attributes.interface.mjs} +0 -0
  180. package/{esm2015/storage/lib/interfaces/memory.interface.js → esm2020/storage/lib/interfaces/memory.interface.mjs} +0 -0
  181. package/{esm2015/storage/lib/interfaces/strategy.interface.js → esm2020/storage/lib/interfaces/strategy.interface.mjs} +0 -0
  182. package/esm2020/storage/lib/storage.service.mjs +109 -0
  183. package/esm2020/storage/lib/strategies/cookie-storage.strategy.mjs +142 -0
  184. package/{esm2015/storage/lib/strategies/memory-storage.strategy.js → esm2020/storage/lib/strategies/memory-storage.strategy.mjs} +2 -2
  185. package/esm2020/storage/lib/strategies/polyfill-storage.strategy.mjs +102 -0
  186. package/{esm2015/storage/public_api.js → esm2020/storage/public_api.mjs} +0 -0
  187. package/{esm2015/table/bravobit-bb-foundation-table.js → esm2020/table/bravobit-bb-foundation-table.mjs} +0 -0
  188. package/esm2020/table/lib/components/table/table.component.mjs +191 -0
  189. package/esm2020/table/lib/components/table-cell/table-cell.component.mjs +11 -0
  190. package/esm2020/table/lib/components/table-header-cell/table-header-cell.component.mjs +131 -0
  191. package/esm2020/table/lib/components/table-pager/table-pager.component.mjs +136 -0
  192. package/esm2020/table/lib/data/datasource.data.mjs +32 -0
  193. package/esm2020/table/lib/data/generic.data.mjs +72 -0
  194. package/{esm2015/table/lib/interfaces/datasource.interface.js → esm2020/table/lib/interfaces/datasource.interface.mjs} +0 -0
  195. package/{esm2015/table/lib/interfaces/table.interfaces.js → esm2020/table/lib/interfaces/table.interfaces.mjs} +0 -0
  196. package/{esm2015/table/lib/table.module.js → esm2020/table/lib/table.module.mjs} +5 -5
  197. package/{esm2015/table/public_api.js → esm2020/table/public_api.mjs} +0 -0
  198. package/fesm2015/{bravobit-bb-foundation-auth.js → bravobit-bb-foundation-auth.mjs} +79 -68
  199. package/fesm2015/bravobit-bb-foundation-auth.mjs.map +1 -0
  200. package/fesm2015/{bravobit-bb-foundation-collections.js → bravobit-bb-foundation-collections.mjs} +33 -47
  201. package/fesm2015/bravobit-bb-foundation-collections.mjs.map +1 -0
  202. package/fesm2015/bravobit-bb-foundation-controls.mjs +123 -0
  203. package/fesm2015/bravobit-bb-foundation-controls.mjs.map +1 -0
  204. package/fesm2015/bravobit-bb-foundation-dashboard.mjs +416 -0
  205. package/fesm2015/bravobit-bb-foundation-dashboard.mjs.map +1 -0
  206. package/fesm2015/{bravobit-bb-foundation-dialog.js → bravobit-bb-foundation-dialog.mjs} +45 -106
  207. package/fesm2015/bravobit-bb-foundation-dialog.mjs.map +1 -0
  208. package/fesm2015/{bravobit-bb-foundation-elements.js → bravobit-bb-foundation-elements.mjs} +193 -302
  209. package/fesm2015/bravobit-bb-foundation-elements.mjs.map +1 -0
  210. package/fesm2015/{bravobit-bb-foundation-http.js → bravobit-bb-foundation-http.mjs} +18 -16
  211. package/fesm2015/bravobit-bb-foundation-http.mjs.map +1 -0
  212. package/fesm2015/{bravobit-bb-foundation-localize.js → bravobit-bb-foundation-localize.mjs} +63 -69
  213. package/fesm2015/bravobit-bb-foundation-localize.mjs.map +1 -0
  214. package/fesm2015/bravobit-bb-foundation-notifications.mjs +377 -0
  215. package/fesm2015/bravobit-bb-foundation-notifications.mjs.map +1 -0
  216. package/fesm2015/{bravobit-bb-foundation-recaptcha.js → bravobit-bb-foundation-recaptcha.mjs} +40 -47
  217. package/fesm2015/bravobit-bb-foundation-recaptcha.mjs.map +1 -0
  218. package/fesm2015/{bravobit-bb-foundation-rxjs.js → bravobit-bb-foundation-rxjs.mjs} +1 -1
  219. package/fesm2015/bravobit-bb-foundation-rxjs.mjs.map +1 -0
  220. package/fesm2015/{bravobit-bb-foundation-storage.js → bravobit-bb-foundation-storage.mjs} +12 -10
  221. package/fesm2015/bravobit-bb-foundation-storage.mjs.map +1 -0
  222. package/fesm2015/bravobit-bb-foundation-table.mjs +603 -0
  223. package/fesm2015/bravobit-bb-foundation-table.mjs.map +1 -0
  224. package/fesm2015/{bravobit-bb-foundation.js → bravobit-bb-foundation.mjs} +74 -64
  225. package/fesm2015/bravobit-bb-foundation.mjs.map +1 -0
  226. package/fesm2020/bravobit-bb-foundation-auth.mjs +928 -0
  227. package/fesm2020/bravobit-bb-foundation-auth.mjs.map +1 -0
  228. package/fesm2020/bravobit-bb-foundation-collections.mjs +434 -0
  229. package/fesm2020/bravobit-bb-foundation-collections.mjs.map +1 -0
  230. package/fesm2020/bravobit-bb-foundation-controls.mjs +121 -0
  231. package/fesm2020/bravobit-bb-foundation-controls.mjs.map +1 -0
  232. package/fesm2020/bravobit-bb-foundation-dashboard.mjs +404 -0
  233. package/fesm2020/bravobit-bb-foundation-dashboard.mjs.map +1 -0
  234. package/fesm2020/bravobit-bb-foundation-dialog.mjs +584 -0
  235. package/fesm2020/bravobit-bb-foundation-dialog.mjs.map +1 -0
  236. package/fesm2020/bravobit-bb-foundation-elements.mjs +1993 -0
  237. package/fesm2020/bravobit-bb-foundation-elements.mjs.map +1 -0
  238. package/fesm2020/bravobit-bb-foundation-http.mjs +168 -0
  239. package/fesm2020/bravobit-bb-foundation-http.mjs.map +1 -0
  240. package/fesm2020/bravobit-bb-foundation-localize.mjs +832 -0
  241. package/fesm2020/bravobit-bb-foundation-localize.mjs.map +1 -0
  242. package/fesm2020/bravobit-bb-foundation-notifications.mjs +375 -0
  243. package/fesm2020/bravobit-bb-foundation-notifications.mjs.map +1 -0
  244. package/fesm2020/bravobit-bb-foundation-recaptcha.mjs +300 -0
  245. package/fesm2020/bravobit-bb-foundation-recaptcha.mjs.map +1 -0
  246. package/fesm2020/bravobit-bb-foundation-rxjs.mjs +21 -0
  247. package/fesm2020/bravobit-bb-foundation-rxjs.mjs.map +1 -0
  248. package/fesm2020/bravobit-bb-foundation-storage.mjs +413 -0
  249. package/fesm2020/bravobit-bb-foundation-storage.mjs.map +1 -0
  250. package/fesm2020/bravobit-bb-foundation-table.mjs +592 -0
  251. package/fesm2020/bravobit-bb-foundation-table.mjs.map +1 -0
  252. package/fesm2020/bravobit-bb-foundation.mjs +895 -0
  253. package/fesm2020/bravobit-bb-foundation.mjs.map +1 -0
  254. package/http/package.json +5 -5
  255. package/localize/package.json +5 -5
  256. package/notifications/package.json +5 -5
  257. package/package.json +125 -8
  258. package/recaptcha/package.json +5 -5
  259. package/rxjs/package.json +5 -5
  260. package/storage/package.json +5 -5
  261. package/table/lib/components/table/table.component.d.ts +3 -0
  262. package/table/package.json +5 -5
  263. package/bundles/bravobit-bb-foundation-auth.umd.js +0 -1483
  264. package/bundles/bravobit-bb-foundation-auth.umd.js.map +0 -1
  265. package/bundles/bravobit-bb-foundation-collections.umd.js +0 -868
  266. package/bundles/bravobit-bb-foundation-collections.umd.js.map +0 -1
  267. package/bundles/bravobit-bb-foundation-dashboard.umd.js +0 -876
  268. package/bundles/bravobit-bb-foundation-dashboard.umd.js.map +0 -1
  269. package/bundles/bravobit-bb-foundation-dialog.umd.js +0 -716
  270. package/bundles/bravobit-bb-foundation-dialog.umd.js.map +0 -1
  271. package/bundles/bravobit-bb-foundation-elements.umd.js +0 -2768
  272. package/bundles/bravobit-bb-foundation-elements.umd.js.map +0 -1
  273. package/bundles/bravobit-bb-foundation-http.umd.js +0 -535
  274. package/bundles/bravobit-bb-foundation-http.umd.js.map +0 -1
  275. package/bundles/bravobit-bb-foundation-localize.umd.js +0 -1292
  276. package/bundles/bravobit-bb-foundation-localize.umd.js.map +0 -1
  277. package/bundles/bravobit-bb-foundation-notifications.umd.js +0 -794
  278. package/bundles/bravobit-bb-foundation-notifications.umd.js.map +0 -1
  279. package/bundles/bravobit-bb-foundation-recaptcha.umd.js +0 -683
  280. package/bundles/bravobit-bb-foundation-recaptcha.umd.js.map +0 -1
  281. package/bundles/bravobit-bb-foundation-rxjs.umd.js +0 -29
  282. package/bundles/bravobit-bb-foundation-rxjs.umd.js.map +0 -1
  283. package/bundles/bravobit-bb-foundation-storage.umd.js +0 -799
  284. package/bundles/bravobit-bb-foundation-storage.umd.js.map +0 -1
  285. package/bundles/bravobit-bb-foundation-table.umd.js +0 -1070
  286. package/bundles/bravobit-bb-foundation-table.umd.js.map +0 -1
  287. package/bundles/bravobit-bb-foundation.umd.js +0 -1440
  288. package/bundles/bravobit-bb-foundation.umd.js.map +0 -1
  289. package/esm2015/auth/lib/auth.interceptor.js +0 -95
  290. package/esm2015/auth/lib/auth.service.js +0 -299
  291. package/esm2015/auth/lib/auth.session.js +0 -136
  292. package/esm2015/auth/lib/directives/permission.directive.js +0 -81
  293. package/esm2015/auth/lib/directives/role.directive.js +0 -38
  294. package/esm2015/auth/lib/guards/anonymous.guard.js +0 -35
  295. package/esm2015/auth/lib/guards/authenticated.guard.js +0 -36
  296. package/esm2015/auth/lib/permissions.service.js +0 -58
  297. package/esm2015/auth/lib/providers/email.provider.js +0 -26
  298. package/esm2015/auth/lib/providers/verify.provider.js +0 -20
  299. package/esm2015/collections/lib/collection.js +0 -104
  300. package/esm2015/collections/lib/components/collections-pager/collections-pager.component.js +0 -136
  301. package/esm2015/collections/lib/components/collections-viewer/collections-viewer.component.js +0 -39
  302. package/esm2015/collections/lib/providers/api-collection.provider.js +0 -69
  303. package/esm2015/collections/lib/providers/collection.provider.js +0 -14
  304. package/esm2015/dashboard/lib/dashboard/dashboard.component.js +0 -64
  305. package/esm2015/dashboard/lib/dashboard-header/dashboard-header.component.js +0 -41
  306. package/esm2015/dashboard/lib/dashboard-menu/dashboard-menu.component.js +0 -39
  307. package/esm2015/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.js +0 -38
  308. package/esm2015/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.js +0 -83
  309. package/esm2015/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.js +0 -110
  310. package/esm2015/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.js +0 -71
  311. package/esm2015/dialog/lib/dialog-actions/dialog-actions.component.js +0 -20
  312. package/esm2015/dialog/lib/dialog-confirm/dialog-confirm.component.js +0 -45
  313. package/esm2015/dialog/lib/dialog-header/dialog-header.component.js +0 -33
  314. package/esm2015/dialog/lib/dialog-link/dialog-link.component.js +0 -19
  315. package/esm2015/dialog/lib/dialog-modal/dialog-modal.component.js +0 -54
  316. package/esm2015/dialog/lib/dialog-overlay/dialog-overlay.component.js +0 -143
  317. package/esm2015/elements/lib/avatar/avatar.component.js +0 -151
  318. package/esm2015/elements/lib/button/button.component.js +0 -79
  319. package/esm2015/elements/lib/checkbox/checkbox.component.js +0 -83
  320. package/esm2015/elements/lib/date-picker/date-picker.component.js +0 -322
  321. package/esm2015/elements/lib/directives/autosize.directive.js +0 -74
  322. package/esm2015/elements/lib/directives/form-submit.directive.js +0 -53
  323. package/esm2015/elements/lib/directives/input.directive.js +0 -139
  324. package/esm2015/elements/lib/dropdown/dropdown.component.js +0 -111
  325. package/esm2015/elements/lib/file-picker/file-picker.component.js +0 -247
  326. package/esm2015/elements/lib/form-control/form-control.component.js +0 -58
  327. package/esm2015/elements/lib/form-error/form-error.component.js +0 -116
  328. package/esm2015/elements/lib/form-group/form-group.component.js +0 -27
  329. package/esm2015/elements/lib/icon/icon.component.js +0 -110
  330. package/esm2015/elements/lib/image-picker/image-picker.component.js +0 -119
  331. package/esm2015/elements/lib/pipes/file-image.pipe.js +0 -45
  332. package/esm2015/elements/lib/pipes/relative-time.pipe.js +0 -96
  333. package/esm2015/elements/lib/spinner/spinner.component.js +0 -34
  334. package/esm2015/elements/lib/tag/tag.component.js +0 -26
  335. package/esm2015/http/lib/classes/http.config.js +0 -31
  336. package/esm2015/http/lib/classes/http.error.js +0 -21
  337. package/esm2015/http/lib/interceptors/base-url.interceptor.js +0 -52
  338. package/esm2015/http/lib/interceptors/error.interceptor.js +0 -33
  339. package/esm2015/lib/core/miscellaneous/validator.js +0 -86
  340. package/esm2015/lib/core/services/clipboard.service.js +0 -72
  341. package/esm2015/lib/core/services/exif.service.js +0 -168
  342. package/esm2015/lib/core/services/file-loader.service.js +0 -90
  343. package/esm2015/lib/core/services/image-converter.service.js +0 -130
  344. package/esm2015/lib/core/services/patch.service.js +0 -65
  345. package/esm2015/localize/lib/localize.dictionary.js +0 -137
  346. package/esm2015/localize/lib/localize.service.js +0 -282
  347. package/esm2015/localize/lib/views/localize-string/localize-string.component.js +0 -99
  348. package/esm2015/notifications/lib/notifications-item/notifications-item.component.js +0 -108
  349. package/esm2015/notifications/lib/notifications-list/notifications-list.component.js +0 -56
  350. package/esm2015/recaptcha/lib/recaptcha/recaptcha.component.js +0 -199
  351. package/esm2015/recaptcha/lib/recaptcha-loader.service.js +0 -93
  352. package/esm2015/rxjs/lib/operators/combine-latest-map.operator.js +0 -7
  353. package/esm2015/storage/lib/storage.service.js +0 -111
  354. package/esm2015/storage/lib/strategies/cookie-storage.strategy.js +0 -143
  355. package/esm2015/storage/lib/strategies/polyfill-storage.strategy.js +0 -102
  356. package/esm2015/table/lib/components/table/table.component.js +0 -196
  357. package/esm2015/table/lib/components/table-cell/table-cell.component.js +0 -19
  358. package/esm2015/table/lib/components/table-header-cell/table-header-cell.component.js +0 -141
  359. package/esm2015/table/lib/components/table-pager/table-pager.component.js +0 -146
  360. package/esm2015/table/lib/data/datasource.data.js +0 -32
  361. package/esm2015/table/lib/data/generic.data.js +0 -73
  362. package/fesm2015/bravobit-bb-foundation-auth.js.map +0 -1
  363. package/fesm2015/bravobit-bb-foundation-collections.js.map +0 -1
  364. package/fesm2015/bravobit-bb-foundation-dashboard.js +0 -468
  365. package/fesm2015/bravobit-bb-foundation-dashboard.js.map +0 -1
  366. package/fesm2015/bravobit-bb-foundation-dialog.js.map +0 -1
  367. package/fesm2015/bravobit-bb-foundation-elements.js.map +0 -1
  368. package/fesm2015/bravobit-bb-foundation-http.js.map +0 -1
  369. package/fesm2015/bravobit-bb-foundation-localize.js.map +0 -1
  370. package/fesm2015/bravobit-bb-foundation-notifications.js +0 -393
  371. package/fesm2015/bravobit-bb-foundation-notifications.js.map +0 -1
  372. package/fesm2015/bravobit-bb-foundation-recaptcha.js.map +0 -1
  373. package/fesm2015/bravobit-bb-foundation-rxjs.js.map +0 -1
  374. package/fesm2015/bravobit-bb-foundation-storage.js.map +0 -1
  375. package/fesm2015/bravobit-bb-foundation-table.js +0 -626
  376. package/fesm2015/bravobit-bb-foundation-table.js.map +0 -1
  377. package/fesm2015/bravobit-bb-foundation.js.map +0 -1
@@ -0,0 +1,304 @@
1
+ import { mixinDisabled, mixinError, mixinGrouped, mixinHideErrors, mixinReadonly, mixinRequired } from '@bravobit/bb-foundation';
2
+ import { ChangeDetectionStrategy, Component, EventEmitter, forwardRef, Inject, Input, LOCALE_ID, Output, ViewEncapsulation } from '@angular/core';
3
+ import { FormControl, FormGroup, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validators } from '@angular/forms';
4
+ import { BehaviorSubject, combineLatest, of, Subscription } from 'rxjs';
5
+ import { distinctUntilChanged, map, startWith, tap } from 'rxjs/operators';
6
+ import { formatDate } from '@angular/common';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "../form-control/form-control.component";
9
+ import * as i2 from "../form-error/form-error.component";
10
+ import * as i3 from "@angular/common";
11
+ import * as i4 from "../directives/template.directive";
12
+ import * as i5 from "@angular/forms";
13
+ import * as i6 from "../directives/form-submit.directive";
14
+ import * as i7 from "../directives/input.directive";
15
+ class BbDatePickerBase {
16
+ }
17
+ const BbFilePickerMixinBase = mixinRequired(mixinReadonly(mixinDisabled(mixinGrouped(mixinError(mixinHideErrors(BbDatePickerBase))))));
18
+ export class BbDatePicker extends BbFilePickerMixinBase {
19
+ constructor(_localeId) {
20
+ super();
21
+ this._localeId = _localeId;
22
+ // Readonly data.
23
+ this._yearRegex = /^(10|[1-9][0-9])\d{2}$/; // Note: 1000 - 9999
24
+ // Inputs.
25
+ this.label = null;
26
+ this.hint = null;
27
+ this.dayPlaceholder = 'dd';
28
+ this.monthPlaceholder = 'mm';
29
+ this.yearPlaceholder = 'yyyy';
30
+ this.trackByValue = (_, item) => item?.value;
31
+ this.years$ = new BehaviorSubject(null);
32
+ this.valueChange = new EventEmitter();
33
+ // Subscriptions.
34
+ this._subscription = new Subscription();
35
+ this.onTouchedCallback = () => {
36
+ };
37
+ this.onChangeCallback = () => {
38
+ };
39
+ this.formToDateString = ({ year, month, day }) => {
40
+ if (this.form?.invalid) {
41
+ return null;
42
+ }
43
+ const prefixedMonth = this.padString(`${month}`, 2, '0');
44
+ const prefixedDay = this.padString(`${day}`, 2, '0');
45
+ return [year, prefixedMonth, prefixedDay].join('-');
46
+ };
47
+ this.parseYearFormat = (value) => {
48
+ // Transform the value to a definitive string.
49
+ const yearString = `${value}`;
50
+ const currentFullYear = new Date().getFullYear();
51
+ // Handle default "current" syntax.
52
+ if (yearString === 'current') {
53
+ return currentFullYear;
54
+ }
55
+ // Handle "current + {amount}" syntax.
56
+ if (/^current\s?\+\s?\d+$/.test(yearString)) {
57
+ const amount = Number(yearString?.split('+')?.[1]?.trim()) ?? 0;
58
+ return currentFullYear + amount;
59
+ }
60
+ // Handle "current - {amount}" syntax.
61
+ if (/^current\s?-\s?\d+$/.test(yearString)) {
62
+ const amount = Number(yearString?.split('-')?.[1]?.trim()) ?? 0;
63
+ return currentFullYear - amount;
64
+ }
65
+ // Handling the default number case.
66
+ if (/^[0-9]{4}$/.test(yearString)) {
67
+ return Number(yearString);
68
+ }
69
+ // We could not parse it.
70
+ return null;
71
+ };
72
+ this.getDaysInMonth = (month = null, year = null) => {
73
+ if (this.form?.invalid || month === null || year === null) {
74
+ return 31;
75
+ }
76
+ const parsedYear = parseInt(year, 10);
77
+ return new Date(parsedYear, month, 0).getDate();
78
+ };
79
+ this.isValidDateString = (value) => {
80
+ return typeof value === 'string' && /^[0-9]{4}-[0-9]{2}-[0-9]{2}$/.test(value);
81
+ };
82
+ this.padString = (value, maxLength, fillString = '0') => {
83
+ const count = maxLength - value.length;
84
+ for (let index = 0; index < count; index++) {
85
+ value = `${fillString}${value}`;
86
+ }
87
+ return value;
88
+ };
89
+ }
90
+ set years(value) {
91
+ this.parseYears(value);
92
+ }
93
+ get value() {
94
+ return this.formToDateString(this.form?.value);
95
+ }
96
+ set value(value) {
97
+ this.parseDateStringInForm(value);
98
+ this.valueChange.emit(this.value);
99
+ }
100
+ ngOnInit() {
101
+ this.composeForm();
102
+ this.getData();
103
+ this.handleChanges();
104
+ }
105
+ ngOnDestroy() {
106
+ this._subscription?.unsubscribe();
107
+ }
108
+ writeValue(value) {
109
+ this.parseDateStringInForm(value);
110
+ }
111
+ registerOnChange(method) {
112
+ this.onChangeCallback = method;
113
+ }
114
+ registerOnTouched(method) {
115
+ this.onTouchedCallback = method;
116
+ }
117
+ setDisabledState(isDisabled) {
118
+ this.disabled = isDisabled;
119
+ if (this.disabled) {
120
+ this.form?.disable();
121
+ }
122
+ else {
123
+ this.form?.enable();
124
+ }
125
+ }
126
+ onErrorChange(error) {
127
+ this.error = !!error;
128
+ }
129
+ validate({ value }) {
130
+ if (value === null || value === undefined) {
131
+ return null;
132
+ }
133
+ const data = this.parseDateString(value);
134
+ const date = new Date(data?.year, data?.month - 1, data?.day);
135
+ const maxDays = this.getDaysInMonth(data?.month, `${data?.year}`);
136
+ const isInvalidDate = date.toString() === 'Invalid Date';
137
+ const exceededMaxDays = data?.day > maxDays;
138
+ return (isInvalidDate || exceededMaxDays) && {
139
+ invalidDate: true
140
+ };
141
+ }
142
+ handleChanges() {
143
+ const dateOrNull$ = this.form.valueChanges.pipe(map(value => this.formToDateString(value)), distinctUntilChanged());
144
+ const subscription = dateOrNull$.subscribe(() => {
145
+ this.valueChange.emit(this.value);
146
+ this.onChangeCallback(this.value);
147
+ });
148
+ this._subscription.add(subscription);
149
+ }
150
+ getData() {
151
+ const years$ = this.years$.asObservable();
152
+ const months$ = this.getMonthData();
153
+ const days$ = this.getDayData();
154
+ this.data$ = combineLatest([years$, months$, days$]).pipe(map(([years, months, days]) => ({ years, months, days })), tap(data => this.verifyListData(data?.days?.length, data?.years)));
155
+ }
156
+ verifyListData(maxDays, years) {
157
+ const dayControl = this.form.get('day');
158
+ if (dayControl?.value !== null && dayControl?.value > maxDays) {
159
+ dayControl.patchValue(maxDays);
160
+ }
161
+ const yearControl = this.form.get('year');
162
+ if (years !== null && yearControl?.value !== null && this._yearRegex.test(yearControl?.value)) {
163
+ const selectedYear = Number(yearControl?.value);
164
+ const firstYear = Math.min(...years);
165
+ const lastYear = Math.max(...years);
166
+ if (selectedYear < firstYear || selectedYear > lastYear) {
167
+ Promise.resolve().then(() => yearControl.patchValue(null));
168
+ }
169
+ }
170
+ }
171
+ getDayData() {
172
+ const count$ = this.form.valueChanges.pipe(startWith(this.form?.value), map(({ month, year }) => this.getDaysInMonth(month, year)), distinctUntilChanged());
173
+ return count$.pipe(map(count => Array(count).fill(0).map((_, index) => ({
174
+ label: `${index + 1}`,
175
+ value: index + 1
176
+ }))));
177
+ }
178
+ getMonthData() {
179
+ const array = Array(12).fill(0).map((_, month) => {
180
+ const date = new Date(2000, month, 1);
181
+ const label = formatDate(date, 'LLLL', this._localeId);
182
+ return { label, value: month + 1 };
183
+ });
184
+ return of(array);
185
+ }
186
+ composeForm() {
187
+ const { required, pattern, minLength, maxLength } = Validators;
188
+ const yearPattern = pattern(this._yearRegex);
189
+ const yearValidators = [required, yearPattern, minLength(4), maxLength(4)];
190
+ this.form = new FormGroup({
191
+ day: new FormControl(null, required),
192
+ month: new FormControl(null, required),
193
+ year: new FormControl(null, yearValidators)
194
+ });
195
+ }
196
+ parseDateStringInForm(value) {
197
+ // If the date string was not a valid format, reset the form.
198
+ if (!this.isValidDateString(value)) {
199
+ if (value !== null) {
200
+ this.form?.reset({ year: null, month: null, day: null }, { emitEvent: false });
201
+ }
202
+ return;
203
+ }
204
+ // Parse the date string and save in the form.
205
+ const data = this.parseDateString(value);
206
+ const year = data?.year !== null && data?.year !== undefined
207
+ ? this.padString(`${data?.year}`, 4, '0')
208
+ : null;
209
+ const formData = { ...(data ?? {}), year };
210
+ this.form?.patchValue(formData, { emitEvent: false });
211
+ }
212
+ parseDateString(value) {
213
+ if (!this.isValidDateString(value)) {
214
+ return null;
215
+ }
216
+ // Parse the date string.
217
+ const [year, month, day] = value?.split('-');
218
+ return {
219
+ day: day ? parseInt(day, 10) : null,
220
+ month: month ? parseInt(month, 10) : null,
221
+ year: year ? parseInt(year, 10) : null
222
+ };
223
+ }
224
+ parseYears(values) {
225
+ if (!values) {
226
+ return this.years$.next(null);
227
+ }
228
+ // Parse the values to years (in numbers).
229
+ const [first, last] = values;
230
+ const firstYear = this.parseYearFormat(first);
231
+ const lastYear = this.parseYearFormat(last);
232
+ // Check cases in where we cannot parse.
233
+ if (firstYear === null || lastYear === null) {
234
+ return this.years$.next(null);
235
+ }
236
+ const difference = firstYear - lastYear;
237
+ const absoluteDifference = Math.abs(difference) + 1;
238
+ // Create an array with years.
239
+ const years = Array(absoluteDifference)
240
+ .fill(0)
241
+ .map((_, index) => difference < 0 ? (firstYear + index) : (firstYear - index));
242
+ // Validate we have one or more years.
243
+ if (years?.length <= 0) {
244
+ return this.years$.next(null);
245
+ }
246
+ // Push the years.
247
+ return this.years$.next(years);
248
+ }
249
+ }
250
+ BbDatePicker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: BbDatePicker, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Component });
251
+ BbDatePicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.0", type: BbDatePicker, selector: "bb-date-picker", inputs: { required: "required", readonly: "readonly", disabled: "disabled", grouped: "grouped", hideErrors: "hideErrors", label: "label", hint: "hint", dayPlaceholder: "dayPlaceholder", monthPlaceholder: "monthPlaceholder", yearPlaceholder: "yearPlaceholder", years: "years", value: "value" }, outputs: { valueChange: "valueChange" }, host: { properties: { "class.required": "required", "class.readonly": "readonly", "class.disabled": "disabled", "class.grouped": "grouped", "class.error": "error" }, classAttribute: "bb-date-picker" }, providers: [
252
+ {
253
+ provide: NG_VALUE_ACCESSOR,
254
+ useExisting: forwardRef(() => BbDatePicker),
255
+ multi: true
256
+ },
257
+ {
258
+ provide: NG_VALIDATORS,
259
+ useExisting: BbDatePicker,
260
+ multi: true
261
+ }
262
+ ], usesInheritance: true, ngImport: i0, template: "<!-- Label of the date picker. -->\n<label *ngIf=\"label as labelContent\"\n class=\"bb-date-picker-label\">\n <ng-template [bbTemplate]=\"labelContent\">\n {{ labelContent }}\n </ng-template>\n</label>\n\n<!-- The form containing the year/month/day fields. -->\n<form *ngIf=\"data$ | async as data\"\n [formGroup]=\"form\"\n class=\"bb-date-picker-container\"\n novalidate>\n <div class=\"bb-date-picker-item\">\n <bb-form-control hideErrors>\n <select [class.has-value]=\"!!form?.get('day')?.value\"\n bbInput\n autocomplete=\"off\"\n formControlName=\"day\">\n <option [ngValue]=\"null\">{{ dayPlaceholder }}</option>\n <option *ngFor=\"let day of data?.days; trackBy: trackByValue\"\n [ngValue]=\"day?.value\">\n {{ day?.label }}\n </option>\n </select>\n </bb-form-control>\n </div>\n <div class=\"bb-date-picker-item\">\n <bb-form-control hideErrors>\n <select [class.has-value]=\"!!form?.get('month')?.value\"\n bbInput\n autocomplete=\"off\"\n formControlName=\"month\">\n <option [ngValue]=\"null\">{{ monthPlaceholder }}</option>\n <option *ngFor=\"let month of data?.months; trackBy: trackByValue\"\n [ngValue]=\"month?.value\">\n {{ month?.label }}\n </option>\n </select>\n </bb-form-control>\n </div>\n <div class=\"bb-date-picker-item\">\n <bb-form-control hideErrors>\n <select *ngIf=\"data?.years?.length > 0; else defaultYearInputTemplate\"\n [class.has-value]=\"!!form?.get('year')?.value\"\n bbInput\n autocomplete=\"off\"\n formControlName=\"year\">\n <option [ngValue]=\"null\">{{ yearPlaceholder }}</option>\n <option *ngFor=\"let year of data?.years\"\n [value]=\"year\">\n {{ year }}\n </option>\n </select>\n\n <ng-template #defaultYearInputTemplate>\n <input [placeholder]=\"yearPlaceholder\"\n bbInput\n type=\"text\"\n inputmode=\"numeric\"\n minlength=\"4\"\n maxlength=\"4\"\n pattern=\"^[0-9]{4}$\"\n formControlName=\"year\"\n autocomplete=\"off\">\n </ng-template>\n </bb-form-control>\n </div>\n</form>\n\n<!-- The date picker error. -->\n<bb-form-error *ngIf=\"!hideErrors\"\n (errorChange)=\"onErrorChange($event)\">\n</bb-form-error>\n\n<!-- The date picker hint. -->\n<p *ngIf=\"hint as hintContent\"\n class=\"bb-date-picker-hint\">\n <ng-template [bbTemplate]=\"hintContent\">\n {{ hintContent }}\n </ng-template>\n</p>\n", styles: [".bb-date-picker{display:block}.bb-date-picker.required>.bb-date-picker-label:after{content:\"*\";color:#c23934;font-size:12px;line-height:1.5}.bb-date-picker.readonly{pointer-events:none}.bb-date-picker.readonly .bb-form-control-container{cursor:default;border:1px dotted #bdc4c9;background-color:#f9f9f9!important}.bb-date-picker.readonly .bb-form-control-container>select:disabled{opacity:1}.bb-date-picker.grouped{margin-bottom:20px}.bb-date-picker.error>.bb-date-picker-label{color:#c23934}.bb-date-picker.error .bb-form-control-container{border:1px solid #962b26;background-color:#c2393440!important;box-shadow:inset 0 3px #b7bcc233,0 6px 6px -6px #0000001a,0 0 0 3px #c2393466!important}.bb-date-picker-label{color:#000;display:block;font-size:16px;font-weight:500;margin-bottom:4px}.bb-date-picker-container{display:flex}.bb-date-picker-item{flex:1}.bb-date-picker-item>bb-form-control.focused{z-index:1;position:relative}.bb-date-picker-item>.bb-form-control>.bb-form-control-container>select>option:first-child{color:#d2d2d2}.bb-date-picker-item>.bb-form-control>.bb-form-control-container>select:not(.has-value){color:#d2d2d2}.bb-date-picker-item>.bb-form-control>.bb-form-control-container>select:not(.has-value)>option:not(:first-child){color:#000}.bb-date-picker-item:not(:first-child):not(:last-child) .bb-form-control-container{border-radius:0!important}.bb-date-picker-item:first-child .bb-form-control-container{border-right:none!important;border-top-right-radius:0!important;border-bottom-right-radius:0!important}.bb-date-picker-item:last-child .bb-form-control-container{border-left:none!important;border-top-left-radius:0!important;border-bottom-left-radius:0!important}.bb-date-picker-hint{display:block;color:#738694;font-size:13px;margin-top:4px;pointer-events:all}\n"], components: [{ type: i1.BbFormControl, selector: "bb-form-control", inputs: ["grouped", "hideErrors", "label", "hint"] }, { type: i2.BbFormError, selector: "bb-form-error", inputs: ["control"], outputs: ["errorChange"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.BbTemplate, selector: "[bbTemplate]", inputs: ["bbTemplate"] }, { type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i6.BbFormSubmit, selector: "form", exportAs: ["bbForm"] }, { type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i7.BbSelect, selector: "select[bbInput]", inputs: ["disabled", "required"] }, { type: i5.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i7.BbInput, selector: "input[bbInput], textarea[bbInput]", inputs: ["readonly"] }, { type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i5.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { type: i5.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i5.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }], pipes: { "async": i3.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
263
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: BbDatePicker, decorators: [{
264
+ type: Component,
265
+ args: [{ selector: 'bb-date-picker', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [
266
+ {
267
+ provide: NG_VALUE_ACCESSOR,
268
+ useExisting: forwardRef(() => BbDatePicker),
269
+ multi: true
270
+ },
271
+ {
272
+ provide: NG_VALIDATORS,
273
+ useExisting: BbDatePicker,
274
+ multi: true
275
+ }
276
+ ], host: {
277
+ 'class': 'bb-date-picker',
278
+ '[class.required]': 'required',
279
+ '[class.readonly]': 'readonly',
280
+ '[class.disabled]': 'disabled',
281
+ '[class.grouped]': 'grouped',
282
+ '[class.error]': 'error'
283
+ }, inputs: ['required', 'readonly', 'disabled', 'grouped', 'hideErrors'], preserveWhitespaces: false, template: "<!-- Label of the date picker. -->\n<label *ngIf=\"label as labelContent\"\n class=\"bb-date-picker-label\">\n <ng-template [bbTemplate]=\"labelContent\">\n {{ labelContent }}\n </ng-template>\n</label>\n\n<!-- The form containing the year/month/day fields. -->\n<form *ngIf=\"data$ | async as data\"\n [formGroup]=\"form\"\n class=\"bb-date-picker-container\"\n novalidate>\n <div class=\"bb-date-picker-item\">\n <bb-form-control hideErrors>\n <select [class.has-value]=\"!!form?.get('day')?.value\"\n bbInput\n autocomplete=\"off\"\n formControlName=\"day\">\n <option [ngValue]=\"null\">{{ dayPlaceholder }}</option>\n <option *ngFor=\"let day of data?.days; trackBy: trackByValue\"\n [ngValue]=\"day?.value\">\n {{ day?.label }}\n </option>\n </select>\n </bb-form-control>\n </div>\n <div class=\"bb-date-picker-item\">\n <bb-form-control hideErrors>\n <select [class.has-value]=\"!!form?.get('month')?.value\"\n bbInput\n autocomplete=\"off\"\n formControlName=\"month\">\n <option [ngValue]=\"null\">{{ monthPlaceholder }}</option>\n <option *ngFor=\"let month of data?.months; trackBy: trackByValue\"\n [ngValue]=\"month?.value\">\n {{ month?.label }}\n </option>\n </select>\n </bb-form-control>\n </div>\n <div class=\"bb-date-picker-item\">\n <bb-form-control hideErrors>\n <select *ngIf=\"data?.years?.length > 0; else defaultYearInputTemplate\"\n [class.has-value]=\"!!form?.get('year')?.value\"\n bbInput\n autocomplete=\"off\"\n formControlName=\"year\">\n <option [ngValue]=\"null\">{{ yearPlaceholder }}</option>\n <option *ngFor=\"let year of data?.years\"\n [value]=\"year\">\n {{ year }}\n </option>\n </select>\n\n <ng-template #defaultYearInputTemplate>\n <input [placeholder]=\"yearPlaceholder\"\n bbInput\n type=\"text\"\n inputmode=\"numeric\"\n minlength=\"4\"\n maxlength=\"4\"\n pattern=\"^[0-9]{4}$\"\n formControlName=\"year\"\n autocomplete=\"off\">\n </ng-template>\n </bb-form-control>\n </div>\n</form>\n\n<!-- The date picker error. -->\n<bb-form-error *ngIf=\"!hideErrors\"\n (errorChange)=\"onErrorChange($event)\">\n</bb-form-error>\n\n<!-- The date picker hint. -->\n<p *ngIf=\"hint as hintContent\"\n class=\"bb-date-picker-hint\">\n <ng-template [bbTemplate]=\"hintContent\">\n {{ hintContent }}\n </ng-template>\n</p>\n", styles: [".bb-date-picker{display:block}.bb-date-picker.required>.bb-date-picker-label:after{content:\"*\";color:#c23934;font-size:12px;line-height:1.5}.bb-date-picker.readonly{pointer-events:none}.bb-date-picker.readonly .bb-form-control-container{cursor:default;border:1px dotted #bdc4c9;background-color:#f9f9f9!important}.bb-date-picker.readonly .bb-form-control-container>select:disabled{opacity:1}.bb-date-picker.grouped{margin-bottom:20px}.bb-date-picker.error>.bb-date-picker-label{color:#c23934}.bb-date-picker.error .bb-form-control-container{border:1px solid #962b26;background-color:#c2393440!important;box-shadow:inset 0 3px #b7bcc233,0 6px 6px -6px #0000001a,0 0 0 3px #c2393466!important}.bb-date-picker-label{color:#000;display:block;font-size:16px;font-weight:500;margin-bottom:4px}.bb-date-picker-container{display:flex}.bb-date-picker-item{flex:1}.bb-date-picker-item>bb-form-control.focused{z-index:1;position:relative}.bb-date-picker-item>.bb-form-control>.bb-form-control-container>select>option:first-child{color:#d2d2d2}.bb-date-picker-item>.bb-form-control>.bb-form-control-container>select:not(.has-value){color:#d2d2d2}.bb-date-picker-item>.bb-form-control>.bb-form-control-container>select:not(.has-value)>option:not(:first-child){color:#000}.bb-date-picker-item:not(:first-child):not(:last-child) .bb-form-control-container{border-radius:0!important}.bb-date-picker-item:first-child .bb-form-control-container{border-right:none!important;border-top-right-radius:0!important;border-bottom-right-radius:0!important}.bb-date-picker-item:last-child .bb-form-control-container{border-left:none!important;border-top-left-radius:0!important;border-bottom-left-radius:0!important}.bb-date-picker-hint{display:block;color:#738694;font-size:13px;margin-top:4px;pointer-events:all}\n"] }]
284
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
285
+ type: Inject,
286
+ args: [LOCALE_ID]
287
+ }] }]; }, propDecorators: { label: [{
288
+ type: Input
289
+ }], hint: [{
290
+ type: Input
291
+ }], dayPlaceholder: [{
292
+ type: Input
293
+ }], monthPlaceholder: [{
294
+ type: Input
295
+ }], yearPlaceholder: [{
296
+ type: Input
297
+ }], years: [{
298
+ type: Input
299
+ }], value: [{
300
+ type: Input
301
+ }], valueChange: [{
302
+ type: Output
303
+ }] } });
304
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9lbGVtZW50cy9zcmMvbGliL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vZWxlbWVudHMvc3JjL2xpYi9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBYUgsYUFBYSxFQUNiLFVBQVUsRUFDVixZQUFZLEVBQ1osZUFBZSxFQUNmLGFBQWEsRUFDYixhQUFhLEVBQ2hCLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLFNBQVMsRUFHVCxNQUFNLEVBRU4saUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFSCxXQUFXLEVBQ1gsU0FBUyxFQUNULGFBQWEsRUFDYixpQkFBaUIsRUFDakIsVUFBVSxFQUNiLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLGVBQWUsRUFBRSxhQUFhLEVBQWMsRUFBRSxFQUFFLFlBQVksRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNsRixPQUFPLEVBQUMsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7OztBQUUzQyxNQUFNLGdCQUFnQjtDQUNyQjtBQUVELE1BQU0scUJBQXFCLEdBT3JCLGFBQWEsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsZUFBZSxD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RSxTQUFTO3dCQUM1QixlQUFlLEVBQUUsT0FBTztxQkFDM0IsVUFDTyxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxZQUFZLENBQUMsdUJBQ2hELEtBQUs7OzBCQThDYixNQUFNOzJCQUFDLFNBQVM7NENBdENwQixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBR0YsS0FBSztzQkFEUixLQUFLO2dCQXNCRixLQUFLO3NCQURSLEtBQUs7Z0JBTUksV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2FuRGlzYWJsZSxcbiAgICBDYW5EaXNhYmxlQ29uc3RydWN0b3IsXG4gICAgQ2FuSGlkZUVycm9ycyxcbiAgICBDYW5IaWRlRXJyb3JzQ29uc3RydWN0b3IsXG4gICAgSGFzRXJyb3IsXG4gICAgSGFzRXJyb3JDb25zdHJ1Y3RvcixcbiAgICBJc0dyb3VwZWQsXG4gICAgSXNHcm91cGVkQ29uc3RydWN0b3IsXG4gICAgSXNSZWFkb25seSxcbiAgICBJc1JlYWRvbmx5Q29uc3RydWN0b3IsXG4gICAgSXNSZXF1aXJlZCxcbiAgICBJc1JlcXVpcmVkQ29uc3RydWN0b3IsXG4gICAgbWl4aW5EaXNhYmxlZCxcbiAgICBtaXhpbkVycm9yLFxuICAgIG1peGluR3JvdXBlZCxcbiAgICBtaXhpbkhpZGVFcnJvcnMsXG4gICAgbWl4aW5SZWFkb25seSxcbiAgICBtaXhpblJlcXVpcmVkXG59IGZyb20gJ0BicmF2b2JpdC9iYi1mb3VuZGF0aW9uJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBMT0NBTEVfSUQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICAgIEZvcm1Db250cm9sLFxuICAgIEZvcm1Hcm91cCxcbiAgICBOR19WQUxJREFUT1JTLFxuICAgIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIFZhbGlkYXRvcnNcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIG9mLCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBzdGFydFdpdGgsIHRhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtmb3JtYXREYXRlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5jbGFzcyBCYkRhdGVQaWNrZXJCYXNlIHtcbn1cblxuY29uc3QgQmJGaWxlUGlja2VyTWl4aW5CYXNlOiBJc1JlcXVpcmVkQ29uc3RydWN0b3JcbiAgICAmIElzUmVhZG9ubHlDb25zdHJ1Y3RvclxuICAgICYgQ2FuRGlzYWJsZUNvbnN0cnVjdG9yXG4gICAgJiBJc0dyb3VwZWRDb25zdHJ1Y3RvclxuICAgICYgSGFzRXJyb3JDb25zdHJ1Y3RvclxuICAgICYgQ2FuSGlkZUVycm9yc0NvbnN0cnVjdG9yXG4gICAgJiB0eXBlb2YgQmJEYXRlUGlja2VyQmFzZVxuICAgID0gbWl4aW5SZXF1aXJlZChtaXhpblJlYWRvbmx5KG1peGluRGlzYWJsZWQobWl4aW5Hcm91cGVkKG1peGluRXJyb3IobWl4aW5IaWRlRXJyb3JzKEJiRGF0ZVBpY2tlckJhc2UpKSkpKSk7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYmItZGF0ZS1waWNrZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZGF0ZS1waWNrZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEJiRGF0ZVBpY2tlciksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IEJiRGF0ZVBpY2tlcixcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH1cbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ2JiLWRhdGUtcGlja2VyJyxcbiAgICAgICAgJ1tjbGFzcy5yZXF1aXJlZF0nOiAncmVxdWlyZWQnLFxuICAgICAgICAnW2NsYXNzLnJlYWRvbmx5XSc6ICdyZWFkb25seScsXG4gICAgICAgICdbY2xhc3MuZGlzYWJsZWRdJzogJ2Rpc2FibGVkJyxcbiAgICAgICAgJ1tjbGFzcy5ncm91cGVkXSc6ICdncm91cGVkJyxcbiAgICAgICAgJ1tjbGFzcy5lcnJvcl0nOiAnZXJyb3InXG4gICAgfSxcbiAgICBpbnB1dHM6IFsncmVxdWlyZWQnLCAncmVhZG9ubHknLCAnZGlzYWJsZWQnLCAnZ3JvdXBlZCcsICdoaWRlRXJyb3JzJ10sXG4gICAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgQmJEYXRlUGlja2VyIGV4dGVuZHMgQmJGaWxlUGlja2VyTWl4aW5CYXNlIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgT25EZXN0cm95LCBJc1JlcXVpcmVkLCBJc1JlYWRvbmx5LCBDYW5EaXNhYmxlLCBJc0dyb3VwZWQsIEhhc0Vycm9yLCBDYW5IaWRlRXJyb3JzIHtcblxuICAgIC8vIFJlYWRvbmx5IGRhdGEuXG4gICAgcmVhZG9ubHkgX3llYXJSZWdleCA9IC9eKDEwfFsxLTldWzAtOV0pXFxkezJ9JC87IC8vIE5vdGU6IDEwMDAgLSA5OTk5XG5cbiAgICAvLyBJbnB1dHMuXG4gICAgQElucHV0KCkgbGFiZWw6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDtcbiAgICBASW5wdXQoKSBoaW50OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XG4gICAgQElucHV0KCkgZGF5UGxhY2Vob2xkZXI6IHN0cmluZyB8IG51bGwgPSAnZGQnO1xuICAgIEBJbnB1dCgpIG1vbnRoUGxhY2Vob2xkZXI6IHN0cmluZyB8IG51bGwgPSAnbW0nO1xuICAgIEBJbnB1dCgpIHllYXJQbGFjZWhvbGRlcjogc3RyaW5nIHwgbnVsbCA9ICd5eXl5JztcblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IHllYXJzKHZhbHVlOiBbc3RyaW5nIHwgbnVtYmVyLCBzdHJpbmcgfCBudW1iZXJdIHwgbnVsbCkge1xuICAgICAgICB0aGlzLnBhcnNlWWVhcnModmFsdWUpO1xuICAgIH1cblxuICAgIC8vIEZvcm1zLlxuICAgIGZvcm06IEZvcm1Hcm91cDtcbiAgICB0cmFja0J5VmFsdWUgPSAoXywgaXRlbSkgPT4gaXRlbT8udmFsdWU7XG5cbiAgICAvLyBEYXRhLlxuICAgIGRhdGEkOiBPYnNlcnZhYmxlPHtcbiAgICAgICAgZGF5cz86IHsgbGFiZWw6IHN0cmluZywgdmFsdWU6IG51bWJlciB9W10sXG4gICAgICAgIG1vbnRocz86IHsgbGFiZWw6IHN0cmluZywgdmFsdWU6IG51bWJlciB9W10sXG4gICAgICAgIHllYXJzPzogbnVtYmVyW10gfCBudWxsXG4gICAgfT47XG4gICAgeWVhcnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXJbXSB8IG51bGw+KG51bGwpO1xuXG4gICAgZ2V0IHZhbHVlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtVG9EYXRlU3RyaW5nKHRoaXMuZm9ybT8udmFsdWUpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IHZhbHVlKHZhbHVlOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgICAgIHRoaXMucGFyc2VEYXRlU3RyaW5nSW5Gb3JtKHZhbHVlKTtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICAgIH1cblxuICAgIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nIHwgbnVsbD4oKTtcblxuICAgIC8vIFN1YnNjcmlwdGlvbnMuXG4gICAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgY29uc3RydWN0b3IoQEluamVjdChMT0NBTEVfSUQpIHByaXZhdGUgX2xvY2FsZUlkOiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5jb21wb3NlRm9ybSgpO1xuICAgICAgICB0aGlzLmdldERhdGEoKTtcbiAgICAgICAgdGhpcy5oYW5kbGVDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgICAgIHRoaXMucGFyc2VEYXRlU3RyaW5nSW5Gb3JtKHZhbHVlKTtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKG1ldGhvZDogKF86IHN0cmluZyB8IG51bGwpID0+IHZvaWQpIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrID0gbWV0aG9kO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKG1ldGhvZDogKCkgPT4gdm9pZCkge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZENhbGxiYWNrID0gbWV0aG9kO1xuICAgIH1cblxuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcblxuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5mb3JtPy5kaXNhYmxlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZvcm0/LmVuYWJsZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Ub3VjaGVkQ2FsbGJhY2s6ICgpID0+IHZvaWQgPSAoKSA9PiB7XG4gICAgfTtcblxuICAgIG9uQ2hhbmdlQ2FsbGJhY2s6IChfOiBzdHJpbmcgfCBudWxsKSA9PiB2b2lkID0gKCkgPT4ge1xuICAgIH07XG5cbiAgICBvbkVycm9yQ2hhbmdlKGVycm9yOiB7IHRva2VuOiBzdHJpbmcsIGRhdGE/OiBhbnkgfSB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5lcnJvciA9ICEhZXJyb3I7XG4gICAgfVxuXG4gICAgdmFsaWRhdGUoe3ZhbHVlfTogRm9ybUNvbnRyb2wpIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGF0YSA9IHRoaXMucGFyc2VEYXRlU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKGRhdGE/LnllYXIsIGRhdGE/Lm1vbnRoIC0gMSwgZGF0YT8uZGF5KTtcblxuICAgICAgICBjb25zdCBtYXhEYXlzID0gdGhpcy5nZXREYXlzSW5Nb250aChkYXRhPy5tb250aCwgYCR7ZGF0YT8ueWVhcn1gKTtcblxuICAgICAgICBjb25zdCBpc0ludmFsaWREYXRlID0gZGF0ZS50b1N0cmluZygpID09PSAnSW52YWxpZCBEYXRlJztcbiAgICAgICAgY29uc3QgZXhjZWVkZWRNYXhEYXlzID0gZGF0YT8uZGF5ID4gbWF4RGF5cztcblxuICAgICAgICByZXR1cm4gKGlzSW52YWxpZERhdGUgfHwgZXhjZWVkZWRNYXhEYXlzKSAmJiB7XG4gICAgICAgICAgICBpbnZhbGlkRGF0ZTogdHJ1ZVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlQ2hhbmdlcygpIHtcbiAgICAgICAgY29uc3QgZGF0ZU9yTnVsbCQgPSB0aGlzLmZvcm0udmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICBtYXAodmFsdWUgPT4gdGhpcy5mb3JtVG9EYXRlU3RyaW5nKHZhbHVlKSksXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gZGF0ZU9yTnVsbCQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayh0aGlzLnZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQoc3Vic2NyaXB0aW9uKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldERhdGEoKSB7XG4gICAgICAgIGNvbnN0IHllYXJzJCA9IHRoaXMueWVhcnMkLmFzT2JzZXJ2YWJsZSgpO1xuICAgICAgICBjb25zdCBtb250aHMkID0gdGhpcy5nZXRNb250aERhdGEoKTtcbiAgICAgICAgY29uc3QgZGF5cyQgPSB0aGlzLmdldERheURhdGEoKTtcblxuICAgICAgICB0aGlzLmRhdGEkID0gY29tYmluZUxhdGVzdChbeWVhcnMkLCBtb250aHMkLCBkYXlzJF0pLnBpcGUoXG4gICAgICAgICAgICBtYXAoKFt5ZWFycywgbW9udGhzLCBkYXlzXSkgPT4gKHt5ZWFycywgbW9udGhzLCBkYXlzfSkpLFxuICAgICAgICAgICAgdGFwKGRhdGEgPT4gdGhpcy52ZXJpZnlMaXN0RGF0YShkYXRhPy5kYXlzPy5sZW5ndGgsIGRhdGE/LnllYXJzKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHZlcmlmeUxpc3REYXRhKG1heERheXM6IG51bWJlciwgeWVhcnM6IG51bWJlcltdIHwgbnVsbCkge1xuICAgICAgICBjb25zdCBkYXlDb250cm9sID0gdGhpcy5mb3JtLmdldCgnZGF5Jyk7XG4gICAgICAgIGlmIChkYXlDb250cm9sPy52YWx1ZSAhPT0gbnVsbCAmJiBkYXlDb250cm9sPy52YWx1ZSA+IG1heERheXMpIHtcbiAgICAgICAgICAgIGRheUNvbnRyb2wucGF0Y2hWYWx1ZShtYXhEYXlzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHllYXJDb250cm9sID0gdGhpcy5mb3JtLmdldCgneWVhcicpO1xuICAgICAgICBpZiAoeWVhcnMgIT09IG51bGwgJiYgeWVhckNvbnRyb2w/LnZhbHVlICE9PSBudWxsICYmIHRoaXMuX3llYXJSZWdleC50ZXN0KHllYXJDb250cm9sPy52YWx1ZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkWWVhciA9IE51bWJlcih5ZWFyQ29udHJvbD8udmFsdWUpO1xuXG4gICAgICAgICAgICBjb25zdCBmaXJzdFllYXIgPSBNYXRoLm1pbiguLi55ZWFycyk7XG4gICAgICAgICAgICBjb25zdCBsYXN0WWVhciA9IE1hdGgubWF4KC4uLnllYXJzKTtcblxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkWWVhciA8IGZpcnN0WWVhciB8fCBzZWxlY3RlZFllYXIgPiBsYXN0WWVhcikge1xuICAgICAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4geWVhckNvbnRyb2wucGF0Y2hWYWx1ZShudWxsKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldERheURhdGEoKSB7XG4gICAgICAgIGNvbnN0IGNvdW50JCA9IHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgICAgIHN0YXJ0V2l0aCh0aGlzLmZvcm0/LnZhbHVlIGFzIG9iamVjdCksXG4gICAgICAgICAgICBtYXAoKHttb250aCwgeWVhcn0pID0+IHRoaXMuZ2V0RGF5c0luTW9udGgobW9udGgsIHllYXIpKSxcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gY291bnQkLnBpcGUoXG4gICAgICAgICAgICBtYXAoY291bnQgPT4gQXJyYXkoY291bnQpLmZpbGwoMCkubWFwKChfLCBpbmRleCkgPT4gKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogYCR7aW5kZXggKyAxfWAsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGluZGV4ICsgMVxuICAgICAgICAgICAgfSkpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TW9udGhEYXRhKCkge1xuICAgICAgICBjb25zdCBhcnJheSA9IEFycmF5KDEyKS5maWxsKDApLm1hcCgoXywgbW9udGgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgyMDAwLCBtb250aCwgMSk7XG4gICAgICAgICAgICBjb25zdCBsYWJlbCA9IGZvcm1hdERhdGUoZGF0ZSwgJ0xMTEwnLCB0aGlzLl9sb2NhbGVJZCk7XG4gICAgICAgICAgICByZXR1cm4ge2xhYmVsLCB2YWx1ZTogbW9udGggKyAxfTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBvZihhcnJheSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb21wb3NlRm9ybSgpIHtcbiAgICAgICAgY29uc3Qge3JlcXVpcmVkLCBwYXR0ZXJuLCBtaW5MZW5ndGgsIG1heExlbmd0aH0gPSBWYWxpZGF0b3JzO1xuICAgICAgICBjb25zdCB5ZWFyUGF0dGVybiA9IHBhdHRlcm4odGhpcy5feWVhclJlZ2V4KTtcbiAgICAgICAgY29uc3QgeWVhclZhbGlkYXRvcnMgPSBbcmVxdWlyZWQsIHllYXJQYXR0ZXJuLCBtaW5MZW5ndGgoNCksIG1heExlbmd0aCg0KV07XG5cbiAgICAgICAgdGhpcy5mb3JtID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgICAgICBkYXk6IG5ldyBGb3JtQ29udHJvbChudWxsLCByZXF1aXJlZCksXG4gICAgICAgICAgICBtb250aDogbmV3IEZvcm1Db250cm9sKG51bGwsIHJlcXVpcmVkKSxcbiAgICAgICAgICAgIHllYXI6IG5ldyBGb3JtQ29udHJvbChudWxsLCB5ZWFyVmFsaWRhdG9ycylcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwYXJzZURhdGVTdHJpbmdJbkZvcm0odmFsdWU6IHN0cmluZyB8IG51bGwpIHtcbiAgICAgICAgLy8gSWYgdGhlIGRhdGUgc3RyaW5nIHdhcyBub3QgYSB2YWxpZCBmb3JtYXQsIHJlc2V0IHRoZSBmb3JtLlxuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZERhdGVTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0/LnJlc2V0KHt5ZWFyOiBudWxsLCBtb250aDogbnVsbCwgZGF5OiBudWxsfSwge2VtaXRFdmVudDogZmFsc2V9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFBhcnNlIHRoZSBkYXRlIHN0cmluZyBhbmQgc2F2ZSBpbiB0aGUgZm9ybS5cbiAgICAgICAgY29uc3QgZGF0YSA9IHRoaXMucGFyc2VEYXRlU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgY29uc3QgeWVhciA9IGRhdGE/LnllYXIgIT09IG51bGwgJiYgZGF0YT8ueWVhciAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IHRoaXMucGFkU3RyaW5nKGAke2RhdGE/LnllYXJ9YCwgNCwgJzAnKVxuICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICBjb25zdCBmb3JtRGF0YSA9IHsuLi4oZGF0YSA/PyB7fSksIHllYXJ9O1xuXG4gICAgICAgIHRoaXMuZm9ybT8ucGF0Y2hWYWx1ZShmb3JtRGF0YSwge2VtaXRFdmVudDogZmFsc2V9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHBhcnNlRGF0ZVN0cmluZyh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkRGF0ZVN0cmluZyh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUGFyc2UgdGhlIGRhdGUgc3RyaW5nLlxuICAgICAgICBjb25zdCBbeWVhciwgbW9udGgsIGRheV0gPSB2YWx1ZT8uc3BsaXQoJy0nKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGF5OiBkYXkgPyBwYXJzZUludChkYXksIDEwKSA6IG51bGwsXG4gICAgICAgICAgICBtb250aDogbW9udGggPyBwYXJzZUludChtb250aCwgMTApIDogbnVsbCxcbiAgICAgICAgICAgIHllYXI6IHllYXIgPyBwYXJzZUludCh5ZWFyLCAxMCkgOiBudWxsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwYXJzZVllYXJzKHZhbHVlczogW3N0cmluZyB8IG51bWJlciwgc3RyaW5nIHwgbnVtYmVyXSB8IG51bGwpIHtcbiAgICAgICAgaWYgKCF2YWx1ZXMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnllYXJzJC5uZXh0KG51bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUGFyc2UgdGhlIHZhbHVlcyB0byB5ZWFycyAoaW4gbnVtYmVycykuXG4gICAgICAgIGNvbnN0IFtmaXJzdCwgbGFzdF0gPSB2YWx1ZXM7XG4gICAgICAgIGNvbnN0IGZpcnN0WWVhciA9IHRoaXMucGFyc2VZZWFyRm9ybWF0KGZpcnN0KTtcbiAgICAgICAgY29uc3QgbGFzdFllYXIgPSB0aGlzLnBhcnNlWWVhckZvcm1hdChsYXN0KTtcblxuICAgICAgICAvLyBDaGVjayBjYXNlcyBpbiB3aGVyZSB3ZSBjYW5ub3QgcGFyc2UuXG4gICAgICAgIGlmIChmaXJzdFllYXIgPT09IG51bGwgfHwgbGFzdFllYXIgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnllYXJzJC5uZXh0KG51bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGlmZmVyZW5jZSA9IGZpcnN0WWVhciAtIGxhc3RZZWFyO1xuICAgICAgICBjb25zdCBhYnNvbHV0ZURpZmZlcmVuY2UgPSBNYXRoLmFicyhkaWZmZXJlbmNlKSArIDE7XG5cbiAgICAgICAgLy8gQ3JlYXRlIGFuIGFycmF5IHdpdGggeWVhcnMuXG4gICAgICAgIGNvbnN0IHllYXJzID0gQXJyYXkoYWJzb2x1dGVEaWZmZXJlbmNlKVxuICAgICAgICAgICAgLmZpbGwoMClcbiAgICAgICAgICAgIC5tYXAoKF8sIGluZGV4KSA9PiBkaWZmZXJlbmNlIDwgMCA/IChmaXJzdFllYXIgKyBpbmRleCkgOiAoZmlyc3RZZWFyIC0gaW5kZXgpKTtcblxuICAgICAgICAvLyBWYWxpZGF0ZSB3ZSBoYXZlIG9uZSBvciBtb3JlIHllYXJzLlxuICAgICAgICBpZiAoeWVhcnM/Lmxlbmd0aCA8PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy55ZWFycyQubmV4dChudWxsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFB1c2ggdGhlIHllYXJzLlxuICAgICAgICByZXR1cm4gdGhpcy55ZWFycyQubmV4dCh5ZWFycyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb3JtVG9EYXRlU3RyaW5nID0gKHt5ZWFyLCBtb250aCwgZGF5fSkgPT4ge1xuICAgICAgICBpZiAodGhpcy5mb3JtPy5pbnZhbGlkKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByZWZpeGVkTW9udGggPSB0aGlzLnBhZFN0cmluZyhgJHttb250aH1gLCAyLCAnMCcpO1xuICAgICAgICBjb25zdCBwcmVmaXhlZERheSA9IHRoaXMucGFkU3RyaW5nKGAke2RheX1gLCAyLCAnMCcpO1xuXG4gICAgICAgIHJldHVybiBbeWVhciwgcHJlZml4ZWRNb250aCwgcHJlZml4ZWREYXldLmpvaW4oJy0nKTtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBwYXJzZVllYXJGb3JtYXQgPSAodmFsdWU6IHN0cmluZyB8IG51bWJlcikgPT4ge1xuICAgICAgICAvLyBUcmFuc2Zvcm0gdGhlIHZhbHVlIHRvIGEgZGVmaW5pdGl2ZSBzdHJpbmcuXG4gICAgICAgIGNvbnN0IHllYXJTdHJpbmcgPSBgJHt2YWx1ZX1gO1xuICAgICAgICBjb25zdCBjdXJyZW50RnVsbFllYXIgPSBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCk7XG5cbiAgICAgICAgLy8gSGFuZGxlIGRlZmF1bHQgXCJjdXJyZW50XCIgc3ludGF4LlxuICAgICAgICBpZiAoeWVhclN0cmluZyA9PT0gJ2N1cnJlbnQnKSB7XG4gICAgICAgICAgICByZXR1cm4gY3VycmVudEZ1bGxZZWFyO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSGFuZGxlIFwiY3VycmVudCArIHthbW91bnR9XCIgc3ludGF4LlxuICAgICAgICBpZiAoL15jdXJyZW50XFxzP1xcK1xccz9cXGQrJC8udGVzdCh5ZWFyU3RyaW5nKSkge1xuICAgICAgICAgICAgY29uc3QgYW1vdW50ID0gTnVtYmVyKHllYXJTdHJpbmc/LnNwbGl0KCcrJyk/LlsxXT8udHJpbSgpKSA/PyAwO1xuICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRGdWxsWWVhciArIGFtb3VudDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEhhbmRsZSBcImN1cnJlbnQgLSB7YW1vdW50fVwiIHN5bnRheC5cbiAgICAgICAgaWYgKC9eY3VycmVudFxccz8tXFxzP1xcZCskLy50ZXN0KHllYXJTdHJpbmcpKSB7XG4gICAgICAgICAgICBjb25zdCBhbW91bnQgPSBOdW1iZXIoeWVhclN0cmluZz8uc3BsaXQoJy0nKT8uWzFdPy50cmltKCkpID8/IDA7XG4gICAgICAgICAgICByZXR1cm4gY3VycmVudEZ1bGxZZWFyIC0gYW1vdW50O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSGFuZGxpbmcgdGhlIGRlZmF1bHQgbnVtYmVyIGNhc2UuXG4gICAgICAgIGlmICgvXlswLTldezR9JC8udGVzdCh5ZWFyU3RyaW5nKSkge1xuICAgICAgICAgICAgcmV0dXJuIE51bWJlcih5ZWFyU3RyaW5nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFdlIGNvdWxkIG5vdCBwYXJzZSBpdC5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcblxuICAgIHByaXZhdGUgZ2V0RGF5c0luTW9udGggPSAobW9udGg6IG51bWJlciB8IG51bGwgPSBudWxsLCB5ZWFyOiBzdHJpbmcgfCBudWxsID0gbnVsbCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5mb3JtPy5pbnZhbGlkIHx8IG1vbnRoID09PSBudWxsIHx8IHllYXIgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiAzMTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBhcnNlZFllYXIgPSBwYXJzZUludCh5ZWFyLCAxMCk7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZShwYXJzZWRZZWFyLCBtb250aCwgMCkuZ2V0RGF0ZSgpO1xuICAgIH07XG5cbiAgICBwcml2YXRlIGlzVmFsaWREYXRlU3RyaW5nID0gKHZhbHVlOiB1bmtub3duKSA9PiB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIC9eWzAtOV17NH0tWzAtOV17Mn0tWzAtOV17Mn0kLy50ZXN0KHZhbHVlKTtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBwYWRTdHJpbmcgPSAodmFsdWU6IHN0cmluZywgbWF4TGVuZ3RoOiBudW1iZXIsIGZpbGxTdHJpbmc6IHN0cmluZyA9ICcwJykgPT4ge1xuICAgICAgICBjb25zdCBjb3VudCA9IG1heExlbmd0aCAtIHZhbHVlLmxlbmd0aDtcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyBpbmRleCsrKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IGAke2ZpbGxTdHJpbmd9JHt2YWx1ZX1gO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH07XG5cbn1cbiIsIjwhLS0gTGFiZWwgb2YgdGhlIGRhdGUgcGlja2VyLiAtLT5cbjxsYWJlbCAqbmdJZj1cImxhYmVsIGFzIGxhYmVsQ29udGVudFwiXG4gICAgICAgY2xhc3M9XCJiYi1kYXRlLXBpY2tlci1sYWJlbFwiPlxuICAgIDxuZy10ZW1wbGF0ZSBbYmJUZW1wbGF0ZV09XCJsYWJlbENvbnRlbnRcIj5cbiAgICAgICAge3sgbGFiZWxDb250ZW50IH19XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvbGFiZWw+XG5cbjwhLS0gVGhlIGZvcm0gY29udGFpbmluZyB0aGUgeWVhci9tb250aC9kYXkgZmllbGRzLiAtLT5cbjxmb3JtICpuZ0lmPVwiZGF0YSQgfCBhc3luYyBhcyBkYXRhXCJcbiAgICAgIFtmb3JtR3JvdXBdPVwiZm9ybVwiXG4gICAgICBjbGFzcz1cImJiLWRhdGUtcGlja2VyLWNvbnRhaW5lclwiXG4gICAgICBub3ZhbGlkYXRlPlxuICAgIDxkaXYgY2xhc3M9XCJiYi1kYXRlLXBpY2tlci1pdGVtXCI+XG4gICAgICAgIDxiYi1mb3JtLWNvbnRyb2wgaGlkZUVycm9ycz5cbiAgICAgICAgICAgIDxzZWxlY3QgW2NsYXNzLmhhcy12YWx1ZV09XCIhIWZvcm0/LmdldCgnZGF5Jyk/LnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgYmJJbnB1dFxuICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkYXlcIj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIm51bGxcIj57eyBkYXlQbGFjZWhvbGRlciB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGRheSBvZiBkYXRhPy5kYXlzOyB0cmFja0J5OiB0cmFja0J5VmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVmFsdWVdPVwiZGF5Py52YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBkYXk/LmxhYmVsIH19XG4gICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgPC9iYi1mb3JtLWNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImJiLWRhdGUtcGlja2VyLWl0ZW1cIj5cbiAgICAgICAgPGJiLWZvcm0tY29udHJvbCBoaWRlRXJyb3JzPlxuICAgICAgICAgICAgPHNlbGVjdCBbY2xhc3MuaGFzLXZhbHVlXT1cIiEhZm9ybT8uZ2V0KCdtb250aCcpPy52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgIGJiSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibW9udGhcIj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIm51bGxcIj57eyBtb250aFBsYWNlaG9sZGVyIH19PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgbW9udGggb2YgZGF0YT8ubW9udGhzOyB0cmFja0J5OiB0cmFja0J5VmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVmFsdWVdPVwibW9udGg/LnZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IG1vbnRoPy5sYWJlbCB9fVxuICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgIDwvYmItZm9ybS1jb250cm9sPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJiYi1kYXRlLXBpY2tlci1pdGVtXCI+XG4gICAgICAgIDxiYi1mb3JtLWNvbnRyb2wgaGlkZUVycm9ycz5cbiAgICAgICAgICAgIDxzZWxlY3QgKm5nSWY9XCJkYXRhPy55ZWFycz8ubGVuZ3RoID4gMDsgZWxzZSBkZWZhdWx0WWVhcklucHV0VGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaGFzLXZhbHVlXT1cIiEhZm9ybT8uZ2V0KCd5ZWFyJyk/LnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgYmJJbnB1dFxuICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ5ZWFyXCI+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCJudWxsXCI+e3sgeWVhclBsYWNlaG9sZGVyIH19PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgeWVhciBvZiBkYXRhPy55ZWFyc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwieWVhclwiPlxuICAgICAgICAgICAgICAgICAgICB7eyB5ZWFyIH19XG4gICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICA8L3NlbGVjdD5cblxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0WWVhcklucHV0VGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPGlucHV0IFtwbGFjZWhvbGRlcl09XCJ5ZWFyUGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICBiYklucHV0XG4gICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRtb2RlPVwibnVtZXJpY1wiXG4gICAgICAgICAgICAgICAgICAgICAgIG1pbmxlbmd0aD1cIjRcIlxuICAgICAgICAgICAgICAgICAgICAgICBtYXhsZW5ndGg9XCI0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybj1cIl5bMC05XXs0fSRcIlxuICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ5ZWFyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCI+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2JiLWZvcm0tY29udHJvbD5cbiAgICA8L2Rpdj5cbjwvZm9ybT5cblxuPCEtLSBUaGUgZGF0ZSBwaWNrZXIgZXJyb3IuIC0tPlxuPGJiLWZvcm0tZXJyb3IgKm5nSWY9XCIhaGlkZUVycm9yc1wiXG4gICAgICAgICAgICAgICAoZXJyb3JDaGFuZ2UpPVwib25FcnJvckNoYW5nZSgkZXZlbnQpXCI+XG48L2JiLWZvcm0tZXJyb3I+XG5cbjwhLS0gVGhlIGRhdGUgcGlja2VyIGhpbnQuIC0tPlxuPHAgKm5nSWY9XCJoaW50IGFzIGhpbnRDb250ZW50XCJcbiAgIGNsYXNzPVwiYmItZGF0ZS1waWNrZXItaGludFwiPlxuICAgIDxuZy10ZW1wbGF0ZSBbYmJUZW1wbGF0ZV09XCJoaW50Q29udGVudFwiPlxuICAgICAgICB7eyBoaW50Q29udGVudCB9fVxuICAgIDwvbmctdGVtcGxhdGU+XG48L3A+XG4iXX0=
@@ -2,9 +2,9 @@ import { Directive } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export class BbSuffix {
4
4
  }
5
- BbSuffix.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.11", ngImport: i0, type: BbSuffix, deps: [], target: i0.ɵɵFactoryTarget.Directive });
6
- BbSuffix.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.11", type: BbSuffix, selector: "[bbSuffix]", host: { classAttribute: "bb-suffix" }, ngImport: i0 });
7
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.11", ngImport: i0, type: BbSuffix, decorators: [{
5
+ BbSuffix.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: BbSuffix, deps: [], target: i0.ɵɵFactoryTarget.Directive });
6
+ BbSuffix.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.0", type: BbSuffix, selector: "[bbSuffix]", host: { classAttribute: "bb-suffix" }, ngImport: i0 });
7
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: BbSuffix, decorators: [{
8
8
  type: Directive,
9
9
  args: [{
10
10
  selector: '[bbSuffix]',
@@ -15,9 +15,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.11", ngImpo
15
15
  }] });
16
16
  export class BbPrefix {
17
17
  }
18
- BbPrefix.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.11", ngImport: i0, type: BbPrefix, deps: [], target: i0.ɵɵFactoryTarget.Directive });
19
- BbPrefix.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.11", type: BbPrefix, selector: "[bbPrefix]", host: { classAttribute: "bb-prefix" }, ngImport: i0 });
20
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.11", ngImport: i0, type: BbPrefix, decorators: [{
18
+ BbPrefix.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: BbPrefix, deps: [], target: i0.ɵɵFactoryTarget.Directive });
19
+ BbPrefix.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.0", type: BbPrefix, selector: "[bbPrefix]", host: { classAttribute: "bb-prefix" }, ngImport: i0 });
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: BbPrefix, decorators: [{
21
21
  type: Directive,
22
22
  args: [{
23
23
  selector: '[bbPrefix]',
@@ -26,4 +26,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.11", ngImpo
26
26
  }
27
27
  }]
28
28
  }] });
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkb24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9lbGVtZW50cy9zcmMvbGliL2RpcmVjdGl2ZXMvYWRkb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7O0FBUXhDLE1BQU0sT0FBTyxRQUFROztzR0FBUixRQUFROzBGQUFSLFFBQVE7NEZBQVIsUUFBUTtrQkFOcEIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsWUFBWTtvQkFDdEIsSUFBSSxFQUFFO3dCQUNGLE9BQU8sRUFBRSxXQUFXO3FCQUN2QjtpQkFDSjs7QUFVRCxNQUFNLE9BQU8sUUFBUTs7c0dBQVIsUUFBUTswRkFBUixRQUFROzRGQUFSLFFBQVE7a0JBTnBCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLFlBQVk7b0JBQ3RCLElBQUksRUFBRTt3QkFDRixPQUFPLEVBQUUsV0FBVztxQkFDdkI7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2JiU3VmZml4XScsXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAnYmItc3VmZml4J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgQmJTdWZmaXgge1xufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tiYlByZWZpeF0nLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ2JiLXByZWZpeCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEJiUHJlZml4IHtcbn1cbiJdfQ==
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkb24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9lbGVtZW50cy9zcmMvbGliL2RpcmVjdGl2ZXMvYWRkb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7O0FBUXhDLE1BQU0sT0FBTyxRQUFROztxR0FBUixRQUFRO3lGQUFSLFFBQVE7MkZBQVIsUUFBUTtrQkFOcEIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsWUFBWTtvQkFDdEIsSUFBSSxFQUFFO3dCQUNGLE9BQU8sRUFBRSxXQUFXO3FCQUN2QjtpQkFDSjs7QUFVRCxNQUFNLE9BQU8sUUFBUTs7cUdBQVIsUUFBUTt5RkFBUixRQUFROzJGQUFSLFFBQVE7a0JBTnBCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLFlBQVk7b0JBQ3RCLElBQUksRUFBRTt3QkFDRixPQUFPLEVBQUUsV0FBVztxQkFDdkI7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2JiU3VmZml4XScsXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAnYmItc3VmZml4J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgQmJTdWZmaXgge1xufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tiYlByZWZpeF0nLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ2JiLXByZWZpeCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEJiUHJlZml4IHtcbn1cbiJdfQ==
@@ -0,0 +1,72 @@
1
+ import { Directive, HostBinding, HostListener, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class BbAutosize {
4
+ constructor(_renderer, _elementRef) {
5
+ this._renderer = _renderer;
6
+ this._elementRef = _elementRef;
7
+ // Min/max heights for the textarea.
8
+ this.minHeight = null;
9
+ this.maxHeight = null;
10
+ this.rows = 1;
11
+ }
12
+ get element() {
13
+ return this._elementRef?.nativeElement;
14
+ }
15
+ ngAfterViewInit() {
16
+ // Update the styles after the DOM has loaded.
17
+ this.updateStyles();
18
+ }
19
+ onWindowResize() {
20
+ // Update the styles when the window is resized.
21
+ this.updateStyles();
22
+ }
23
+ onInputReceived() {
24
+ // Update the styles after the textarea received input.
25
+ this.updateStyles();
26
+ }
27
+ updateStyles() {
28
+ // Validate the element exists.
29
+ if (!this.element) {
30
+ return;
31
+ }
32
+ // Calculate border height which is not included in the scroll height.
33
+ const borderHeight = this.element?.offsetHeight - this.element?.clientHeight;
34
+ // Reset textarea height to auto that correctly calculate the new height.
35
+ this.setHeight('auto');
36
+ // Set new height.
37
+ this.setHeight(`${this.element?.scrollHeight + borderHeight}px`);
38
+ }
39
+ setHeight(value) {
40
+ this._renderer.setStyle(this.element, 'height', value);
41
+ }
42
+ }
43
+ BbAutosize.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: BbAutosize, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
44
+ BbAutosize.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.0", type: BbAutosize, selector: "textarea[bbAutosize]", inputs: { minHeight: "minHeight", maxHeight: "maxHeight", rows: "rows" }, host: { listeners: { "window:resize": "onWindowResize()", "input": "onInputReceived()" }, properties: { "style.min-height": "this.minHeight", "style.max-height": "this.maxHeight", "rows": "this.rows" } }, ngImport: i0 });
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: BbAutosize, decorators: [{
46
+ type: Directive,
47
+ args: [{
48
+ selector: 'textarea[bbAutosize]'
49
+ }]
50
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }]; }, propDecorators: { minHeight: [{
51
+ type: Input
52
+ }, {
53
+ type: HostBinding,
54
+ args: ['style.min-height']
55
+ }], maxHeight: [{
56
+ type: Input
57
+ }, {
58
+ type: HostBinding,
59
+ args: ['style.max-height']
60
+ }], rows: [{
61
+ type: Input
62
+ }, {
63
+ type: HostBinding,
64
+ args: ['rows']
65
+ }], onWindowResize: [{
66
+ type: HostListener,
67
+ args: ['window:resize']
68
+ }], onInputReceived: [{
69
+ type: HostListener,
70
+ args: ['input']
71
+ }] } });
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b3NpemUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9lbGVtZW50cy9zcmMvbGliL2RpcmVjdGl2ZXMvYXV0b3NpemUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUFjLFdBQVcsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFZLE1BQU0sZUFBZSxDQUFDOztBQUtoSCxNQUFNLE9BQU8sVUFBVTtJQU9uQixZQUFvQixTQUFvQixFQUNwQixXQUF1QjtRQUR2QixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ3BCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBTjNDLG9DQUFvQztRQUNNLGNBQVMsR0FBa0IsSUFBSSxDQUFDO1FBQ2hDLGNBQVMsR0FBa0IsSUFBSSxDQUFDO1FBQzVDLFNBQUksR0FBVyxDQUFDLENBQUM7SUFJL0MsQ0FBQztJQUVELElBQUksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxhQUFvQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxlQUFlO1FBQ1gsOENBQThDO1FBQzlDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBR0QsY0FBYztRQUNWLGdEQUFnRDtRQUNoRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUdELGVBQWU7UUFDWCx1REFBdUQ7UUFDdkQsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFTyxZQUFZO1FBQ2hCLCtCQUErQjtRQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNmLE9BQU87U0FDVjtRQUVELHNFQUFzRTtRQUN0RSxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQztRQUU3RSx5RUFBeUU7UUFDekUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUV2QixrQkFBa0I7UUFDbEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsWUFBWSxHQUFHLFlBQVksSUFBSSxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVPLFNBQVMsQ0FBQyxLQUFhO1FBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzNELENBQUM7O3VHQWxEUSxVQUFVOzJGQUFWLFVBQVU7MkZBQVYsVUFBVTtrQkFIdEIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsc0JBQXNCO2lCQUNuQzt5SEFJNkMsU0FBUztzQkFBbEQsS0FBSzs7c0JBQUksV0FBVzt1QkFBQyxrQkFBa0I7Z0JBQ0UsU0FBUztzQkFBbEQsS0FBSzs7c0JBQUksV0FBVzt1QkFBQyxrQkFBa0I7Z0JBQ1YsSUFBSTtzQkFBakMsS0FBSzs7c0JBQUksV0FBVzt1QkFBQyxNQUFNO2dCQWdCNUIsY0FBYztzQkFEYixZQUFZO3VCQUFDLGVBQWU7Z0JBTzdCLGVBQWU7c0JBRGQsWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIElucHV0LCBSZW5kZXJlcjJ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ3RleHRhcmVhW2JiQXV0b3NpemVdJ1xufSlcbmV4cG9ydCBjbGFzcyBCYkF1dG9zaXplIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgICAvLyBNaW4vbWF4IGhlaWdodHMgZm9yIHRoZSB0ZXh0YXJlYS5cbiAgICBASW5wdXQoKSBASG9zdEJpbmRpbmcoJ3N0eWxlLm1pbi1oZWlnaHQnKSBtaW5IZWlnaHQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAgIEBJbnB1dCgpIEBIb3N0QmluZGluZygnc3R5bGUubWF4LWhlaWdodCcpIG1heEhlaWdodDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gICAgQElucHV0KCkgQEhvc3RCaW5kaW5nKCdyb3dzJykgcm93czogbnVtYmVyID0gMTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZikge1xuICAgIH1cblxuICAgIGdldCBlbGVtZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudCBhcyBIVE1MVGV4dEFyZWFFbGVtZW50O1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgLy8gVXBkYXRlIHRoZSBzdHlsZXMgYWZ0ZXIgdGhlIERPTSBoYXMgbG9hZGVkLlxuICAgICAgICB0aGlzLnVwZGF0ZVN0eWxlcygpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnKVxuICAgIG9uV2luZG93UmVzaXplKCkge1xuICAgICAgICAvLyBVcGRhdGUgdGhlIHN0eWxlcyB3aGVuIHRoZSB3aW5kb3cgaXMgcmVzaXplZC5cbiAgICAgICAgdGhpcy51cGRhdGVTdHlsZXMoKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdpbnB1dCcpXG4gICAgb25JbnB1dFJlY2VpdmVkKCkge1xuICAgICAgICAvLyBVcGRhdGUgdGhlIHN0eWxlcyBhZnRlciB0aGUgdGV4dGFyZWEgcmVjZWl2ZWQgaW5wdXQuXG4gICAgICAgIHRoaXMudXBkYXRlU3R5bGVzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVTdHlsZXMoKSB7XG4gICAgICAgIC8vIFZhbGlkYXRlIHRoZSBlbGVtZW50IGV4aXN0cy5cbiAgICAgICAgaWYgKCF0aGlzLmVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENhbGN1bGF0ZSBib3JkZXIgaGVpZ2h0IHdoaWNoIGlzIG5vdCBpbmNsdWRlZCBpbiB0aGUgc2Nyb2xsIGhlaWdodC5cbiAgICAgICAgY29uc3QgYm9yZGVySGVpZ2h0ID0gdGhpcy5lbGVtZW50Py5vZmZzZXRIZWlnaHQgLSB0aGlzLmVsZW1lbnQ/LmNsaWVudEhlaWdodDtcblxuICAgICAgICAvLyBSZXNldCB0ZXh0YXJlYSBoZWlnaHQgdG8gYXV0byB0aGF0IGNvcnJlY3RseSBjYWxjdWxhdGUgdGhlIG5ldyBoZWlnaHQuXG4gICAgICAgIHRoaXMuc2V0SGVpZ2h0KCdhdXRvJyk7XG5cbiAgICAgICAgLy8gU2V0IG5ldyBoZWlnaHQuXG4gICAgICAgIHRoaXMuc2V0SGVpZ2h0KGAke3RoaXMuZWxlbWVudD8uc2Nyb2xsSGVpZ2h0ICsgYm9yZGVySGVpZ2h0fXB4YCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRIZWlnaHQodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsZW1lbnQsICdoZWlnaHQnLCB2YWx1ZSk7XG4gICAgfVxuXG59XG4iXX0=
@@ -63,9 +63,9 @@ export class BbFocusTrap {
63
63
  return Array(...nodes);
64
64
  }
65
65
  }
66
- BbFocusTrap.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.11", ngImport: i0, type: BbFocusTrap, deps: [{ token: i1.Platform }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
67
- BbFocusTrap.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.11", type: BbFocusTrap, selector: "[bbFocusTrap]", host: { listeners: { "keydown": "onKeydown($event)" } }, ngImport: i0 });
68
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.11", ngImport: i0, type: BbFocusTrap, decorators: [{
66
+ BbFocusTrap.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: BbFocusTrap, deps: [{ token: i1.Platform }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
67
+ BbFocusTrap.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.0", type: BbFocusTrap, selector: "[bbFocusTrap]", host: { listeners: { "keydown": "onKeydown($event)" } }, ngImport: i0 });
68
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: BbFocusTrap, decorators: [{
69
69
  type: Directive,
70
70
  args: [{
71
71
  selector: '[bbFocusTrap]'
@@ -74,4 +74,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.11", ngImpo
74
74
  type: HostListener,
75
75
  args: ['keydown', ['$event']]
76
76
  }] } });
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMtdHJhcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYi1mb3VuZGF0aW9uL2VsZW1lbnRzL3NyYy9saWIvZGlyZWN0aXZlcy9mb2N1cy10cmFwLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFjLFlBQVksRUFBQyxNQUFNLGVBQWUsQ0FBQzs7O0FBTWxFLE1BQU0sT0FBTyxXQUFXO0lBZ0JwQixZQUFvQixTQUFtQixFQUNuQixXQUF1QjtRQUR2QixjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ25CLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBZjFCLHVCQUFrQixHQUFHO1lBQ2xDLFNBQVM7WUFDVCxZQUFZO1lBQ1osK0RBQStEO1lBQy9ELDJDQUEyQztZQUMzQyw2Q0FBNkM7WUFDN0MsMkNBQTJDO1lBQzNDLFFBQVE7WUFDUixRQUFRO1lBQ1IsT0FBTztZQUNQLG1CQUFtQjtZQUNuQixpQ0FBaUM7U0FDcEMsQ0FBQztRQXNETSxVQUFLLEdBQUcsQ0FBQyxPQUFvQixFQUFFLEVBQUU7WUFDckMsT0FBTyxPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdkQsQ0FBQyxDQUFDO1FBRU0sZUFBVSxHQUFHLENBQUMsS0FBb0IsRUFBRSxFQUFFO1lBQzFDLE9BQU8sS0FBSyxDQUFDLEdBQUcsS0FBSyxLQUFLLElBQUksS0FBSyxDQUFDLE9BQU8sS0FBSyxDQUFDLENBQUM7UUFDdEQsQ0FBQyxDQUFDO0lBeERGLENBQUM7SUFHRCxTQUFTLENBQUMsS0FBb0I7UUFDMUIsOEJBQThCO1FBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3pCLE9BQU87U0FDVjtRQUVELHFDQUFxQztRQUNyQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFvQjtRQUMxQixzQ0FBc0M7UUFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFO1lBQzNCLE9BQU87U0FDVjtRQUVELDJCQUEyQjtRQUMzQixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUVoRCxpREFBaUQ7UUFDakQsdUJBQXVCO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDaEQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3hDO1FBRUQsTUFBTSxnQkFBZ0IsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUV4RSxJQUFJLEtBQUssQ0FBQyxRQUFRLElBQUksZ0JBQWdCLEtBQUssQ0FBQyxFQUFFO1lBQzFDLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0RCxPQUFPLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUNqQztRQUVELElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxJQUFJLGdCQUFnQixLQUFLLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ25FLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUIsT0FBTyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDakM7SUFDTCxDQUFDO0lBRUQsSUFBWSxPQUFPO1FBQ2YsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQztJQUMxQyxDQUFDO0lBRU8saUJBQWlCO1FBQ3JCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDckUsT0FBTyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDOzt5R0FsRVEsV0FBVzs2RkFBWCxXQUFXOzRGQUFYLFdBQVc7a0JBSHZCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGVBQWU7aUJBQzVCO3dIQXNCRyxTQUFTO3NCQURSLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lcn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1BsYXRmb3JtfSBmcm9tICdAYnJhdm9iaXQvYmItZm91bmRhdGlvbic7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2JiRm9jdXNUcmFwXSdcbn0pXG5leHBvcnQgY2xhc3MgQmJGb2N1c1RyYXAge1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZm9jdXNhYmxlRWxlbWVudHMgPSBbXG4gICAgICAgICdhW2hyZWZdJyxcbiAgICAgICAgJ2FyZWFbaHJlZl0nLFxuICAgICAgICAnaW5wdXQ6bm90KFtkaXNhYmxlZF0pOm5vdChbdHlwZT1cImhpZGRlblwiXSk6bm90KFthcmlhLWhpZGRlbl0pJyxcbiAgICAgICAgJ3NlbGVjdDpub3QoW2Rpc2FibGVkXSk6bm90KFthcmlhLWhpZGRlbl0pJyxcbiAgICAgICAgJ3RleHRhcmVhOm5vdChbZGlzYWJsZWRdKTpub3QoW2FyaWEtaGlkZGVuXSknLFxuICAgICAgICAnYnV0dG9uOm5vdChbZGlzYWJsZWRdKTpub3QoW2FyaWEtaGlkZGVuXSknLFxuICAgICAgICAnaWZyYW1lJyxcbiAgICAgICAgJ29iamVjdCcsXG4gICAgICAgICdlbWJlZCcsXG4gICAgICAgICdbY29udGVudGVkaXRhYmxlXScsXG4gICAgICAgICdbdGFiaW5kZXhdOm5vdChbdGFiaW5kZXhePVwiLVwiXSknXG4gICAgXTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX3BsYXRmb3JtOiBQbGF0Zm9ybSxcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gICAgb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIC8vIFZhbGlkYXRlIGl0IGlzIGEgdGFiIGV2ZW50LlxuICAgICAgICBpZiAoIXRoaXMuaXNUYWJFdmVudChldmVudCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRyYXAgdGhlIGZvY3VzIGluc2lkZSB0aGUgZWxlbWVudC5cbiAgICAgICAgcmV0dXJuIHRoaXMudHJhcEZvY3VzKGV2ZW50KTtcbiAgICB9XG5cbiAgICB0cmFwRm9jdXMoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgLy8gVmFsaWRhdGUgdGhhdCB0aGUgRE9NIGlzIGF2YWlsYWJsZS5cbiAgICAgICAgaWYgKCF0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEdldCBhbGwgZm9jdXNhYmxlIG5vZGVzLlxuICAgICAgICBjb25zdCBmb2N1c2FibGVOb2RlcyA9IHRoaXMuZ2V0Rm9jdXNhYmxlTm9kZXMoKTtcblxuICAgICAgICAvLyBGb2N1cyB0aGUgZmlyc3QgYXZhaWxhYmxlIGVsZW1lbnQgaWYgdGhlIGZvY3VzXG4gICAgICAgIC8vIGlzIG5vdCBpbiB0aGUgbW9kYWwuXG4gICAgICAgIGlmICghdGhpcy5lbGVtZW50LmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5mb2N1cyhmb2N1c2FibGVOb2Rlc1swXSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmb2N1c2VkSXRlbUluZGV4ID0gZm9jdXNhYmxlTm9kZXMuaW5kZXhPZihkb2N1bWVudC5hY3RpdmVFbGVtZW50KTtcblxuICAgICAgICBpZiAoZXZlbnQuc2hpZnRLZXkgJiYgZm9jdXNlZEl0ZW1JbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5mb2N1cyhmb2N1c2FibGVOb2Rlc1tmb2N1c2FibGVOb2Rlcy5sZW5ndGggLSAxXSk7XG4gICAgICAgICAgICByZXR1cm4gZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghZXZlbnQuc2hpZnRLZXkgJiYgZm9jdXNlZEl0ZW1JbmRleCA9PT0gZm9jdXNhYmxlTm9kZXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgdGhpcy5mb2N1cyhmb2N1c2FibGVOb2Rlc1swXSk7XG4gICAgICAgICAgICByZXR1cm4gZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGVsZW1lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRGb2N1c2FibGVOb2RlcygpIHtcbiAgICAgICAgY29uc3Qgbm9kZXMgPSB0aGlzLmVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCh0aGlzLl9mb2N1c2FibGVFbGVtZW50cyk7XG4gICAgICAgIHJldHVybiBBcnJheSguLi5ub2Rlcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb2N1cyA9IChlbGVtZW50OiBIVE1MRWxlbWVudCkgPT4ge1xuICAgICAgICByZXR1cm4gZWxlbWVudCAmJiBlbGVtZW50LmZvY3VzICYmIGVsZW1lbnQuZm9jdXMoKTtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBpc1RhYkV2ZW50ID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIHJldHVybiBldmVudC5rZXkgPT09ICdUYWInIHx8IGV2ZW50LmtleUNvZGUgPT09IDk7XG4gICAgfTtcblxufVxuIl19
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMtdHJhcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYi1mb3VuZGF0aW9uL2VsZW1lbnRzL3NyYy9saWIvZGlyZWN0aXZlcy9mb2N1cy10cmFwLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFjLFlBQVksRUFBQyxNQUFNLGVBQWUsQ0FBQzs7O0FBTWxFLE1BQU0sT0FBTyxXQUFXO0lBZ0JwQixZQUFvQixTQUFtQixFQUNuQixXQUF1QjtRQUR2QixjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ25CLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBZjFCLHVCQUFrQixHQUFHO1lBQ2xDLFNBQVM7WUFDVCxZQUFZO1lBQ1osK0RBQStEO1lBQy9ELDJDQUEyQztZQUMzQyw2Q0FBNkM7WUFDN0MsMkNBQTJDO1lBQzNDLFFBQVE7WUFDUixRQUFRO1lBQ1IsT0FBTztZQUNQLG1CQUFtQjtZQUNuQixpQ0FBaUM7U0FDcEMsQ0FBQztRQXNETSxVQUFLLEdBQUcsQ0FBQyxPQUFvQixFQUFFLEVBQUU7WUFDckMsT0FBTyxPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdkQsQ0FBQyxDQUFDO1FBRU0sZUFBVSxHQUFHLENBQUMsS0FBb0IsRUFBRSxFQUFFO1lBQzFDLE9BQU8sS0FBSyxDQUFDLEdBQUcsS0FBSyxLQUFLLElBQUksS0FBSyxDQUFDLE9BQU8sS0FBSyxDQUFDLENBQUM7UUFDdEQsQ0FBQyxDQUFDO0lBeERGLENBQUM7SUFHRCxTQUFTLENBQUMsS0FBb0I7UUFDMUIsOEJBQThCO1FBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3pCLE9BQU87U0FDVjtRQUVELHFDQUFxQztRQUNyQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFvQjtRQUMxQixzQ0FBc0M7UUFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFO1lBQzNCLE9BQU87U0FDVjtRQUVELDJCQUEyQjtRQUMzQixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUVoRCxpREFBaUQ7UUFDakQsdUJBQXVCO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDaEQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3hDO1FBRUQsTUFBTSxnQkFBZ0IsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUV4RSxJQUFJLEtBQUssQ0FBQyxRQUFRLElBQUksZ0JBQWdCLEtBQUssQ0FBQyxFQUFFO1lBQzFDLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0RCxPQUFPLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUNqQztRQUVELElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxJQUFJLGdCQUFnQixLQUFLLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ25FLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUIsT0FBTyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDakM7SUFDTCxDQUFDO0lBRUQsSUFBWSxPQUFPO1FBQ2YsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQztJQUMxQyxDQUFDO0lBRU8saUJBQWlCO1FBQ3JCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDckUsT0FBTyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDOzt3R0FsRVEsV0FBVzs0RkFBWCxXQUFXOzJGQUFYLFdBQVc7a0JBSHZCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGVBQWU7aUJBQzVCO3dIQXNCRyxTQUFTO3NCQURSLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lcn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1BsYXRmb3JtfSBmcm9tICdAYnJhdm9iaXQvYmItZm91bmRhdGlvbic7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2JiRm9jdXNUcmFwXSdcbn0pXG5leHBvcnQgY2xhc3MgQmJGb2N1c1RyYXAge1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZm9jdXNhYmxlRWxlbWVudHMgPSBbXG4gICAgICAgICdhW2hyZWZdJyxcbiAgICAgICAgJ2FyZWFbaHJlZl0nLFxuICAgICAgICAnaW5wdXQ6bm90KFtkaXNhYmxlZF0pOm5vdChbdHlwZT1cImhpZGRlblwiXSk6bm90KFthcmlhLWhpZGRlbl0pJyxcbiAgICAgICAgJ3NlbGVjdDpub3QoW2Rpc2FibGVkXSk6bm90KFthcmlhLWhpZGRlbl0pJyxcbiAgICAgICAgJ3RleHRhcmVhOm5vdChbZGlzYWJsZWRdKTpub3QoW2FyaWEtaGlkZGVuXSknLFxuICAgICAgICAnYnV0dG9uOm5vdChbZGlzYWJsZWRdKTpub3QoW2FyaWEtaGlkZGVuXSknLFxuICAgICAgICAnaWZyYW1lJyxcbiAgICAgICAgJ29iamVjdCcsXG4gICAgICAgICdlbWJlZCcsXG4gICAgICAgICdbY29udGVudGVkaXRhYmxlXScsXG4gICAgICAgICdbdGFiaW5kZXhdOm5vdChbdGFiaW5kZXhePVwiLVwiXSknXG4gICAgXTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX3BsYXRmb3JtOiBQbGF0Zm9ybSxcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gICAgb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIC8vIFZhbGlkYXRlIGl0IGlzIGEgdGFiIGV2ZW50LlxuICAgICAgICBpZiAoIXRoaXMuaXNUYWJFdmVudChldmVudCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRyYXAgdGhlIGZvY3VzIGluc2lkZSB0aGUgZWxlbWVudC5cbiAgICAgICAgcmV0dXJuIHRoaXMudHJhcEZvY3VzKGV2ZW50KTtcbiAgICB9XG5cbiAgICB0cmFwRm9jdXMoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgLy8gVmFsaWRhdGUgdGhhdCB0aGUgRE9NIGlzIGF2YWlsYWJsZS5cbiAgICAgICAgaWYgKCF0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEdldCBhbGwgZm9jdXNhYmxlIG5vZGVzLlxuICAgICAgICBjb25zdCBmb2N1c2FibGVOb2RlcyA9IHRoaXMuZ2V0Rm9jdXNhYmxlTm9kZXMoKTtcblxuICAgICAgICAvLyBGb2N1cyB0aGUgZmlyc3QgYXZhaWxhYmxlIGVsZW1lbnQgaWYgdGhlIGZvY3VzXG4gICAgICAgIC8vIGlzIG5vdCBpbiB0aGUgbW9kYWwuXG4gICAgICAgIGlmICghdGhpcy5lbGVtZW50LmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5mb2N1cyhmb2N1c2FibGVOb2Rlc1swXSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmb2N1c2VkSXRlbUluZGV4ID0gZm9jdXNhYmxlTm9kZXMuaW5kZXhPZihkb2N1bWVudC5hY3RpdmVFbGVtZW50KTtcblxuICAgICAgICBpZiAoZXZlbnQuc2hpZnRLZXkgJiYgZm9jdXNlZEl0ZW1JbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5mb2N1cyhmb2N1c2FibGVOb2Rlc1tmb2N1c2FibGVOb2Rlcy5sZW5ndGggLSAxXSk7XG4gICAgICAgICAgICByZXR1cm4gZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghZXZlbnQuc2hpZnRLZXkgJiYgZm9jdXNlZEl0ZW1JbmRleCA9PT0gZm9jdXNhYmxlTm9kZXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgdGhpcy5mb2N1cyhmb2N1c2FibGVOb2Rlc1swXSk7XG4gICAgICAgICAgICByZXR1cm4gZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGVsZW1lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRGb2N1c2FibGVOb2RlcygpIHtcbiAgICAgICAgY29uc3Qgbm9kZXMgPSB0aGlzLmVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCh0aGlzLl9mb2N1c2FibGVFbGVtZW50cyk7XG4gICAgICAgIHJldHVybiBBcnJheSguLi5ub2Rlcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb2N1cyA9IChlbGVtZW50OiBIVE1MRWxlbWVudCkgPT4ge1xuICAgICAgICByZXR1cm4gZWxlbWVudCAmJiBlbGVtZW50LmZvY3VzICYmIGVsZW1lbnQuZm9jdXMoKTtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBpc1RhYkV2ZW50ID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIHJldHVybiBldmVudC5rZXkgPT09ICdUYWInIHx8IGV2ZW50LmtleUNvZGUgPT09IDk7XG4gICAgfTtcblxufVxuIl19
@@ -28,12 +28,12 @@ export class BbFocus {
28
28
  setTimeout(() => this.nativeElement.focus(), 0);
29
29
  }
30
30
  }
31
- BbFocus.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.11", ngImport: i0, type: BbFocus, deps: [{ token: i0.NgZone }, { token: i1.Platform }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
32
- BbFocus.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.11", type: BbFocus, selector: "[bbFocus]", ngImport: i0 });
33
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.11", ngImport: i0, type: BbFocus, decorators: [{
31
+ BbFocus.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: BbFocus, deps: [{ token: i0.NgZone }, { token: i1.Platform }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
32
+ BbFocus.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.0", type: BbFocus, selector: "[bbFocus]", ngImport: i0 });
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: BbFocus, decorators: [{
34
34
  type: Directive,
35
35
  args: [{
36
36
  selector: '[bbFocus]'
37
37
  }]
38
38
  }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1.Platform }, { type: i0.ElementRef }]; } });
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9lbGVtZW50cy9zcmMvbGliL2RpcmVjdGl2ZXMvZm9jdXMuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQzs7O0FBTTNFLE1BQU0sT0FBTyxPQUFPO0lBRWhCLFlBQW9CLEtBQWEsRUFDYixTQUFtQixFQUNuQixXQUF1QjtRQUZ2QixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ2IsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUNuQixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtJQUMzQyxDQUFDO0lBRUQsSUFBWSxhQUFhO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUM7SUFDMUMsQ0FBQztJQUVELGVBQWU7UUFDWCwyQ0FBMkM7UUFDM0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRU8sS0FBSztRQUNULDhDQUE4QztRQUM5QyxxQ0FBcUM7UUFDckMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQzFDLE9BQU87U0FDVjtRQUVELDRFQUE0RTtRQUM1RSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFO1lBQ2xELE9BQU87U0FDVjtRQUVELHlDQUF5QztRQUN6QyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNwRCxDQUFDOztxR0E5QlEsT0FBTzt5RkFBUCxPQUFPOzRGQUFQLE9BQU87a0JBSG5CLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLFdBQVc7aUJBQ3hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIE5nWm9uZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1BsYXRmb3JtfSBmcm9tICdAYnJhdm9iaXQvYmItZm91bmRhdGlvbic7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2JiRm9jdXNdJ1xufSlcbmV4cG9ydCBjbGFzcyBCYkZvY3VzIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF96b25lOiBOZ1pvbmUsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfcGxhdGZvcm06IFBsYXRmb3JtLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBuYXRpdmVFbGVtZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgLy8gUnVuIHRoZSBtZXRob2Qgb3V0c2lkZSB0aGUgQW5ndWxhciB6b25lLlxuICAgICAgICB0aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHRoaXMuZm9jdXMoKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb2N1cygpIHtcbiAgICAgICAgLy8gQ2hlY2sgaWYgc2V0IHRpbWVvdXQgZXhpc3RzIGFuZCB0aGUgdXNlciBpc1xuICAgICAgICAvLyB1c2luZyB0aGUgc2l0ZSBvbiBkZXNrdG9wIGRldmljZXMuXG4gICAgICAgIGlmICghdGhpcy5fcGxhdGZvcm0uaXNEZXNrdG9wIHx8ICFzZXRUaW1lb3V0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaGVjayBpZiB0aGUgZWxlbWVudCBhbmQgdGhlIGZvY3VzIG1ldGhvZCBleGlzdCwgaWYgc28gZm9jdXMgdGhlIGVsZW1lbnQuXG4gICAgICAgIGlmICghdGhpcy5uYXRpdmVFbGVtZW50IHx8ICF0aGlzLm5hdGl2ZUVsZW1lbnQuZm9jdXMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEV4ZWN1dGUgdGhlIGZvY3VzIG1ldGhvZCBpbiBhIHRpbWVvdXQuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5uYXRpdmVFbGVtZW50LmZvY3VzKCksIDApO1xuICAgIH1cblxufVxuIl19
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9lbGVtZW50cy9zcmMvbGliL2RpcmVjdGl2ZXMvZm9jdXMuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQzs7O0FBTTNFLE1BQU0sT0FBTyxPQUFPO0lBRWhCLFlBQW9CLEtBQWEsRUFDYixTQUFtQixFQUNuQixXQUF1QjtRQUZ2QixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ2IsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUNuQixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtJQUMzQyxDQUFDO0lBRUQsSUFBWSxhQUFhO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUM7SUFDMUMsQ0FBQztJQUVELGVBQWU7UUFDWCwyQ0FBMkM7UUFDM0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRU8sS0FBSztRQUNULDhDQUE4QztRQUM5QyxxQ0FBcUM7UUFDckMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQzFDLE9BQU87U0FDVjtRQUVELDRFQUE0RTtRQUM1RSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFO1lBQ2xELE9BQU87U0FDVjtRQUVELHlDQUF5QztRQUN6QyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNwRCxDQUFDOztvR0E5QlEsT0FBTzt3RkFBUCxPQUFPOzJGQUFQLE9BQU87a0JBSG5CLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLFdBQVc7aUJBQ3hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIE5nWm9uZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1BsYXRmb3JtfSBmcm9tICdAYnJhdm9iaXQvYmItZm91bmRhdGlvbic7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2JiRm9jdXNdJ1xufSlcbmV4cG9ydCBjbGFzcyBCYkZvY3VzIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF96b25lOiBOZ1pvbmUsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfcGxhdGZvcm06IFBsYXRmb3JtLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBuYXRpdmVFbGVtZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgLy8gUnVuIHRoZSBtZXRob2Qgb3V0c2lkZSB0aGUgQW5ndWxhciB6b25lLlxuICAgICAgICB0aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHRoaXMuZm9jdXMoKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb2N1cygpIHtcbiAgICAgICAgLy8gQ2hlY2sgaWYgc2V0IHRpbWVvdXQgZXhpc3RzIGFuZCB0aGUgdXNlciBpc1xuICAgICAgICAvLyB1c2luZyB0aGUgc2l0ZSBvbiBkZXNrdG9wIGRldmljZXMuXG4gICAgICAgIGlmICghdGhpcy5fcGxhdGZvcm0uaXNEZXNrdG9wIHx8ICFzZXRUaW1lb3V0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaGVjayBpZiB0aGUgZWxlbWVudCBhbmQgdGhlIGZvY3VzIG1ldGhvZCBleGlzdCwgaWYgc28gZm9jdXMgdGhlIGVsZW1lbnQuXG4gICAgICAgIGlmICghdGhpcy5uYXRpdmVFbGVtZW50IHx8ICF0aGlzLm5hdGl2ZUVsZW1lbnQuZm9jdXMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEV4ZWN1dGUgdGhlIGZvY3VzIG1ldGhvZCBpbiBhIHRpbWVvdXQuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5uYXRpdmVFbGVtZW50LmZvY3VzKCksIDApO1xuICAgIH1cblxufVxuIl19