@bravobit/bb-foundation 0.33.0 → 0.40.0

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 (444) hide show
  1. package/auth/lib/auth.config.d.ts +5 -0
  2. package/auth/lib/auth.interceptor.d.ts +2 -2
  3. package/auth/lib/auth.module.d.ts +1 -4
  4. package/auth/lib/auth.service.d.ts +2 -2
  5. package/auth/lib/directives/authenticated.directive.d.ts +11 -4
  6. package/auth/lib/guards/anonymous.guard.d.ts +2 -15
  7. package/auth/lib/guards/authenticated.guard.d.ts +2 -15
  8. package/auth/lib/interfaces/config.interface.d.ts +2 -1
  9. package/auth/public_api.d.ts +1 -0
  10. package/collections/lib/collections.module.d.ts +12 -3
  11. package/collections/lib/components/collections-actions/collections-actions.component.d.ts +10 -0
  12. package/collections/lib/components/collections-grid/collections-grid.component.d.ts +18 -0
  13. package/collections/lib/components/collections-pager/collections-pager.component.d.ts +15 -14
  14. package/collections/lib/components/collections-table/collections-table.component.d.ts +24 -0
  15. package/collections/lib/components/collections-table-label/collections-table-label.component.d.ts +11 -0
  16. package/collections/lib/components/collections-table-sorting/collections-table-sorting.component.d.ts +18 -0
  17. package/collections/lib/components/collections-viewer/collections-viewer.component.d.ts +9 -5
  18. package/collections/lib/directives/collections-data-row.directive.d.ts +14 -0
  19. package/collections/lib/directives/collections-data.directive.d.ts +14 -0
  20. package/collections/lib/directives/collections-empty.directive.d.ts +14 -0
  21. package/collections/lib/directives/collections-error.directive.d.ts +14 -0
  22. package/collections/lib/directives/collections-initial.directive.d.ts +11 -0
  23. package/collections/lib/directives/collections-item.directive.d.ts +14 -0
  24. package/collections/public_api.d.ts +11 -1
  25. package/dashboard/lib/dashboard/dashboard.component.d.ts +5 -8
  26. package/dashboard/lib/dashboard-header/dashboard-header.component.d.ts +3 -5
  27. package/dashboard/lib/dashboard-menu/dashboard-menu.component.d.ts +1 -1
  28. package/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.d.ts +4 -7
  29. package/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.d.ts +3 -5
  30. package/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.d.ts +6 -11
  31. package/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.d.ts +2 -2
  32. package/dashboard/lib/dashboard.module.d.ts +1 -4
  33. package/dialog/lib/dialog-actions/dialog-actions.component.d.ts +1 -1
  34. package/dialog/lib/dialog-confirm/dialog-confirm.component.d.ts +2 -2
  35. package/dialog/lib/dialog-container/dialog-container.component.d.ts +2 -2
  36. package/dialog/lib/dialog-header/dialog-header.component.d.ts +1 -1
  37. package/dialog/lib/dialog-link/dialog-link.component.d.ts +1 -1
  38. package/dialog/lib/dialog-modal/dialog-modal.component.d.ts +1 -1
  39. package/dialog/lib/dialog-overlay/dialog-overlay.component.d.ts +2 -2
  40. package/dialog/lib/dialog.config.d.ts +3 -0
  41. package/dialog/lib/dialog.insertion.d.ts +1 -1
  42. package/dialog/lib/dialog.interfaces.d.ts +2 -0
  43. package/dialog/lib/dialog.module.d.ts +2 -4
  44. package/dialog/lib/directives/confirm.directive.d.ts +13 -0
  45. package/dialog/public_api.d.ts +2 -0
  46. package/elements/lib/avatar/avatar.component.d.ts +2 -1
  47. package/elements/lib/button/button.component.d.ts +12 -14
  48. package/elements/lib/checkbox/checkbox.component.d.ts +29 -22
  49. package/elements/lib/checkbox-group/checkbox-group.component.d.ts +13 -0
  50. package/elements/lib/date-picker/date-picker.component.d.ts +17 -10
  51. package/elements/lib/directives/addon.directive.d.ts +2 -2
  52. package/elements/lib/directives/extra-error-controls.directive.d.ts +13 -0
  53. package/elements/lib/directives/form-submit.directive.d.ts +1 -1
  54. package/elements/lib/directives/form-submitter.directive.d.ts +1 -1
  55. package/elements/lib/directives/image-upload.directive.d.ts +1 -1
  56. package/elements/lib/directives/input.directive.d.ts +9 -31
  57. package/elements/lib/elements.config.d.ts +84 -0
  58. package/elements/lib/elements.module.d.ts +20 -102
  59. package/elements/lib/file-picker/file-picker.component.d.ts +14 -10
  60. package/elements/lib/form-control/form-control.component.d.ts +8 -9
  61. package/elements/lib/form-error/form-error.component.d.ts +12 -9
  62. package/elements/lib/form-group/form-group.component.d.ts +4 -7
  63. package/elements/lib/icon/icon.component.d.ts +4 -4
  64. package/elements/lib/image-picker/image-picker.component.d.ts +9 -9
  65. package/elements/lib/multi-file-control/multi-file-control.component.d.ts +58 -0
  66. package/elements/lib/pipes/date.pipe.d.ts +9 -0
  67. package/elements/lib/pipes/file-image.pipe.d.ts +1 -1
  68. package/elements/lib/pipes/file-size.pipe.d.ts +1 -1
  69. package/elements/lib/pipes/relative-time.pipe.d.ts +1 -1
  70. package/elements/lib/radio-button/radio-button.component.d.ts +18 -0
  71. package/elements/lib/radio-group/radio-group.component.d.ts +38 -0
  72. package/elements/lib/spinner/spinner.component.d.ts +4 -7
  73. package/elements/public_api.d.ts +8 -3
  74. package/esm2022/auth/lib/auth.config.mjs +16 -0
  75. package/esm2022/auth/lib/auth.interceptor.mjs +10 -7
  76. package/esm2022/auth/lib/auth.module.mjs +9 -19
  77. package/esm2022/auth/lib/auth.service.mjs +22 -13
  78. package/esm2022/auth/lib/directives/authenticated.directive.mjs +45 -11
  79. package/esm2022/auth/lib/guards/anonymous.guard.mjs +27 -51
  80. package/esm2022/auth/lib/guards/authenticated.guard.mjs +30 -54
  81. package/esm2022/auth/lib/helpers/jwt.helper.mjs +2 -2
  82. package/esm2022/auth/lib/interfaces/config.interface.mjs +2 -3
  83. package/esm2022/auth/public_api.mjs +2 -1
  84. package/esm2022/collections/lib/collections.module.mjs +53 -23
  85. package/esm2022/collections/lib/components/collections-actions/collections-actions.component.mjs +39 -0
  86. package/esm2022/collections/lib/components/collections-grid/collections-grid.component.mjs +52 -0
  87. package/esm2022/collections/lib/components/collections-pager/collections-pager.component.mjs +51 -60
  88. package/esm2022/collections/lib/components/collections-table/collections-table.component.mjs +86 -0
  89. package/esm2022/collections/lib/components/collections-table-label/collections-table-label.component.mjs +33 -0
  90. package/esm2022/collections/lib/components/collections-table-sorting/collections-table-sorting.component.mjs +62 -0
  91. package/esm2022/collections/lib/components/collections-viewer/collections-viewer.component.mjs +10 -7
  92. package/esm2022/collections/lib/directives/collections-data-row.directive.mjs +26 -0
  93. package/esm2022/collections/lib/directives/collections-data.directive.mjs +26 -0
  94. package/esm2022/collections/lib/directives/collections-empty.directive.mjs +26 -0
  95. package/esm2022/collections/lib/directives/collections-error.directive.mjs +26 -0
  96. package/esm2022/collections/lib/directives/collections-initial.directive.mjs +22 -0
  97. package/esm2022/collections/lib/directives/collections-item.directive.mjs +26 -0
  98. package/esm2022/collections/public_api.mjs +12 -2
  99. package/esm2022/combobox/combobox/combobox-container.directive.mjs +3 -3
  100. package/esm2022/combobox/combobox/combobox.component.mjs +6 -6
  101. package/esm2022/combobox/combobox-label.directive.mjs +3 -3
  102. package/esm2022/combobox/combobox-option.directive.mjs +3 -3
  103. package/esm2022/combobox/combobox-panel/combobox-panel.component.mjs +5 -5
  104. package/esm2022/dashboard/lib/dashboard/dashboard.component.mjs +17 -24
  105. package/esm2022/dashboard/lib/dashboard-header/dashboard-header.component.mjs +12 -15
  106. package/esm2022/dashboard/lib/dashboard-menu/dashboard-menu.component.mjs +7 -8
  107. package/esm2022/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.mjs +20 -15
  108. package/esm2022/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.mjs +15 -14
  109. package/esm2022/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.mjs +20 -27
  110. package/esm2022/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.mjs +6 -10
  111. package/esm2022/dashboard/lib/dashboard.module.mjs +30 -27
  112. package/esm2022/dialog/lib/dialog-actions/dialog-actions.component.mjs +6 -6
  113. package/esm2022/dialog/lib/dialog-confirm/dialog-confirm.component.mjs +12 -15
  114. package/esm2022/dialog/lib/dialog-container/dialog-container.component.mjs +10 -7
  115. package/esm2022/dialog/lib/dialog-header/dialog-header.component.mjs +5 -6
  116. package/esm2022/dialog/lib/dialog-link/dialog-link.component.mjs +5 -5
  117. package/esm2022/dialog/lib/dialog-modal/dialog-modal.component.mjs +7 -7
  118. package/esm2022/dialog/lib/dialog-overlay/dialog-overlay.component.mjs +11 -7
  119. package/esm2022/dialog/lib/dialog.config.mjs +8 -0
  120. package/esm2022/dialog/lib/dialog.insertion.mjs +6 -5
  121. package/esm2022/dialog/lib/dialog.interfaces.mjs +3 -1
  122. package/esm2022/dialog/lib/dialog.module.mjs +17 -25
  123. package/esm2022/dialog/lib/dialog.service.mjs +8 -5
  124. package/esm2022/dialog/lib/directives/confirm.directive.mjs +50 -0
  125. package/esm2022/dialog/public_api.mjs +3 -1
  126. package/esm2022/elements/lib/avatar/avatar.component.mjs +15 -14
  127. package/esm2022/elements/lib/button/button.component.mjs +37 -32
  128. package/esm2022/elements/lib/checkbox/checkbox.component.mjs +86 -47
  129. package/esm2022/elements/lib/checkbox-group/checkbox-group.component.mjs +36 -0
  130. package/esm2022/elements/lib/date-picker/date-picker.component.mjs +64 -51
  131. package/esm2022/elements/lib/directives/addon.directive.mjs +11 -13
  132. package/esm2022/elements/lib/directives/extra-error-controls.directive.mjs +43 -0
  133. package/esm2022/elements/lib/directives/form-submit.directive.mjs +6 -5
  134. package/esm2022/elements/lib/directives/form-submitter.directive.mjs +6 -5
  135. package/esm2022/elements/lib/directives/image-upload.directive.mjs +6 -5
  136. package/esm2022/elements/lib/directives/input.directive.mjs +21 -110
  137. package/esm2022/elements/lib/elements.config.mjs +42 -0
  138. package/esm2022/elements/lib/elements.module.mjs +38 -77
  139. package/esm2022/elements/lib/file-picker/file-picker.component.mjs +36 -24
  140. package/esm2022/elements/lib/form-control/form-control.component.mjs +21 -24
  141. package/esm2022/elements/lib/form-error/form-error.component.mjs +35 -60
  142. package/esm2022/elements/lib/form-group/form-group.component.mjs +15 -12
  143. package/esm2022/elements/lib/icon/icon.component.mjs +19 -24
  144. package/esm2022/elements/lib/image-picker/image-picker.component.mjs +33 -19
  145. package/esm2022/elements/lib/multi-file-control/multi-file-control.component.mjs +165 -0
  146. package/esm2022/elements/lib/pipes/date.pipe.mjs +30 -0
  147. package/esm2022/elements/lib/pipes/file-image.pipe.mjs +6 -5
  148. package/esm2022/elements/lib/pipes/file-size.pipe.mjs +6 -5
  149. package/esm2022/elements/lib/pipes/relative-time.pipe.mjs +6 -5
  150. package/esm2022/elements/lib/radio-button/radio-button.component.mjs +59 -0
  151. package/esm2022/elements/lib/radio-group/radio-group.component.mjs +102 -0
  152. package/esm2022/elements/lib/spinner/spinner.component.mjs +12 -13
  153. package/esm2022/elements/public_api.mjs +9 -4
  154. package/esm2022/http/lib/http.config.mjs +18 -0
  155. package/esm2022/http/lib/http.interfaces.mjs +4 -2
  156. package/esm2022/http/lib/http.module.mjs +9 -22
  157. package/esm2022/http/lib/interceptors/base-url.interceptor.mjs +9 -5
  158. package/esm2022/http/lib/interceptors/error.interceptor.mjs +10 -6
  159. package/esm2022/http/public_api.mjs +2 -1
  160. package/esm2022/lib/core/miscellaneous/coercion.mjs +5 -0
  161. package/esm2022/lib/core/services/exif.service.mjs +3 -3
  162. package/esm2022/lib/core/services/file-loader.service.mjs +3 -3
  163. package/esm2022/lib/core/services/files.service.mjs +3 -3
  164. package/esm2022/lib/core/services/image-converter.service.mjs +3 -3
  165. package/esm2022/lib/core/services/languages.service.mjs +3 -3
  166. package/esm2022/lib/core/services/network.service.mjs +3 -3
  167. package/esm2022/lib/core/services/patch.service.mjs +3 -3
  168. package/esm2022/localize/lib/interfaces/config.interfaces.mjs +2 -7
  169. package/esm2022/localize/lib/interfaces/functions.interfaces.mjs +6 -6
  170. package/esm2022/localize/lib/localizations/dutch.localization.mjs +19 -1
  171. package/esm2022/localize/lib/localizations/english.localization.mjs +19 -1
  172. package/esm2022/localize/lib/localize.config.mjs +43 -0
  173. package/esm2022/localize/lib/localize.module.mjs +10 -54
  174. package/esm2022/localize/lib/localize.pipe.mjs +6 -5
  175. package/esm2022/localize/lib/localize.service.mjs +26 -13
  176. package/esm2022/localize/lib/localize.tokens.mjs +18 -0
  177. package/esm2022/localize/lib/transforms/interpolate.transform.mjs +3 -2
  178. package/esm2022/localize/lib/transforms/plural.transform.mjs +5 -3
  179. package/esm2022/localize/lib/transforms/reference.transform.mjs +5 -3
  180. package/esm2022/localize/lib/views/localize-string/localize-string.component.mjs +6 -10
  181. package/esm2022/localize/lib/views/localize-template.directive.mjs +6 -5
  182. package/esm2022/localize/public_api.mjs +3 -3
  183. package/esm2022/masking/lib/directives/currency-mask.directive.mjs +6 -5
  184. package/esm2022/masking/lib/directives/date-mask.directive.mjs +6 -5
  185. package/esm2022/masking/lib/directives/input-mask.directive.mjs +6 -5
  186. package/esm2022/masking/lib/masking.module.mjs +6 -6
  187. package/esm2022/masking/lib/masking.service.mjs +3 -3
  188. package/esm2022/notifications/lib/notifications-item/notifications-item.component.mjs +7 -9
  189. package/esm2022/notifications/lib/notifications-list/notifications-list.component.mjs +8 -8
  190. package/esm2022/notifications/lib/notifications.config.mjs +8 -0
  191. package/esm2022/notifications/lib/notifications.interfaces.mjs +3 -1
  192. package/esm2022/notifications/lib/notifications.module.mjs +8 -18
  193. package/esm2022/notifications/lib/notifications.service.mjs +14 -8
  194. package/esm2022/notifications/public_api.mjs +2 -1
  195. package/esm2022/permissions/lib/directives/permission.directive.mjs +6 -5
  196. package/esm2022/permissions/lib/guards/permission.guard.mjs +23 -54
  197. package/esm2022/permissions/lib/permissions.config.mjs +20 -0
  198. package/esm2022/permissions/lib/permissions.interface.mjs +3 -1
  199. package/esm2022/permissions/lib/permissions.module.mjs +9 -23
  200. package/esm2022/permissions/lib/permissions.service.mjs +8 -5
  201. package/esm2022/permissions/public_api.mjs +2 -1
  202. package/esm2022/public_api.mjs +2 -10
  203. package/esm2022/recaptcha/lib/recaptcha/recaptcha.component.mjs +12 -13
  204. package/esm2022/recaptcha/lib/recaptcha-loader.service.mjs +21 -36
  205. package/esm2022/recaptcha/lib/recaptcha.config.mjs +8 -0
  206. package/esm2022/recaptcha/lib/recaptcha.module.mjs +8 -8
  207. package/esm2022/recaptcha/public_api.mjs +2 -1
  208. package/esm2022/select/bravobit-bb-foundation-select.mjs +5 -0
  209. package/esm2022/select/lib/select/select.component.mjs +210 -0
  210. package/esm2022/select/lib/select-label.directive.mjs +17 -0
  211. package/esm2022/select/lib/select-option-group.directive.mjs +17 -0
  212. package/esm2022/select/lib/select-option.directive.mjs +17 -0
  213. package/esm2022/select/lib/select.module.mjs +35 -0
  214. package/esm2022/select/public_api.mjs +6 -0
  215. package/esm2022/storage/lib/storage.service.mjs +3 -3
  216. package/esm2022/storage/lib/strategies/polyfill-storage.strategy.mjs +2 -5
  217. package/esm2022/table/lib/components/table/table.component.mjs +21 -22
  218. package/esm2022/table/lib/components/table-cell/table-cell.component.mjs +5 -5
  219. package/esm2022/table/lib/components/table-header-cell/table-header-cell.component.mjs +14 -14
  220. package/esm2022/table/lib/components/table-pager/table-pager.component.mjs +15 -17
  221. package/esm2022/table/lib/table.module.mjs +23 -21
  222. package/esm2022/tooltip/lib/tooltip-container/tooltip-container.component.mjs +11 -17
  223. package/esm2022/tooltip/lib/tooltip.directive.mjs +17 -27
  224. package/esm2022/tooltip/lib/tooltip.module.mjs +7 -22
  225. package/esm2022/tooltip/public_api.mjs +2 -2
  226. package/esm2022/utils/lib/directives/autosize.directive.mjs +9 -7
  227. package/esm2022/utils/lib/directives/focus-trap.directive.mjs +6 -5
  228. package/esm2022/utils/lib/directives/focus.directive.mjs +6 -5
  229. package/esm2022/utils/lib/directives/template.directive.mjs +6 -5
  230. package/esm2022/utils/lib/utils.module.mjs +6 -6
  231. package/fesm2022/bravobit-bb-foundation-auth.mjs +140 -175
  232. package/fesm2022/bravobit-bb-foundation-auth.mjs.map +1 -1
  233. package/fesm2022/bravobit-bb-foundation-collections.mjs +451 -106
  234. package/fesm2022/bravobit-bb-foundation-collections.mjs.map +1 -1
  235. package/fesm2022/bravobit-bb-foundation-combobox.mjs +18 -18
  236. package/fesm2022/bravobit-bb-foundation-combobox.mjs.map +1 -1
  237. package/fesm2022/bravobit-bb-foundation-dashboard.mjs +106 -116
  238. package/fesm2022/bravobit-bb-foundation-dashboard.mjs.map +1 -1
  239. package/fesm2022/bravobit-bb-foundation-dialog.mjs +125 -70
  240. package/fesm2022/bravobit-bb-foundation-dialog.mjs.map +1 -1
  241. package/fesm2022/bravobit-bb-foundation-elements.mjs +1652 -1378
  242. package/fesm2022/bravobit-bb-foundation-elements.mjs.map +1 -1
  243. package/fesm2022/bravobit-bb-foundation-http.mjs +38 -27
  244. package/fesm2022/bravobit-bb-foundation-http.mjs.map +1 -1
  245. package/fesm2022/bravobit-bb-foundation-localize.mjs +310 -264
  246. package/fesm2022/bravobit-bb-foundation-localize.mjs.map +1 -1
  247. package/fesm2022/bravobit-bb-foundation-masking.mjs +23 -20
  248. package/fesm2022/bravobit-bb-foundation-masking.mjs.map +1 -1
  249. package/fesm2022/bravobit-bb-foundation-notifications.mjs +67 -62
  250. package/fesm2022/bravobit-bb-foundation-notifications.mjs.map +1 -1
  251. package/fesm2022/bravobit-bb-foundation-permissions.mjs +54 -72
  252. package/fesm2022/bravobit-bb-foundation-permissions.mjs.map +1 -1
  253. package/fesm2022/bravobit-bb-foundation-recaptcha.mjs +44 -54
  254. package/fesm2022/bravobit-bb-foundation-recaptcha.mjs.map +1 -1
  255. package/fesm2022/bravobit-bb-foundation-select.mjs +288 -0
  256. package/fesm2022/bravobit-bb-foundation-select.mjs.map +1 -0
  257. package/fesm2022/bravobit-bb-foundation-storage.mjs +4 -7
  258. package/fesm2022/bravobit-bb-foundation-storage.mjs.map +1 -1
  259. package/fesm2022/bravobit-bb-foundation-table.mjs +67 -66
  260. package/fesm2022/bravobit-bb-foundation-table.mjs.map +1 -1
  261. package/fesm2022/bravobit-bb-foundation-tooltip.mjs +31 -61
  262. package/fesm2022/bravobit-bb-foundation-tooltip.mjs.map +1 -1
  263. package/fesm2022/bravobit-bb-foundation-utils.mjs +28 -23
  264. package/fesm2022/bravobit-bb-foundation-utils.mjs.map +1 -1
  265. package/fesm2022/bravobit-bb-foundation.mjs +27 -144
  266. package/fesm2022/bravobit-bb-foundation.mjs.map +1 -1
  267. package/http/lib/http.config.d.ts +5 -0
  268. package/http/lib/http.interfaces.d.ts +3 -0
  269. package/http/lib/http.module.d.ts +2 -6
  270. package/http/public_api.d.ts +1 -0
  271. package/lib/core/miscellaneous/coercion.d.ts +2 -0
  272. package/localize/lib/interfaces/config.interfaces.d.ts +1 -1
  273. package/localize/lib/interfaces/functions.interfaces.d.ts +0 -2
  274. package/localize/lib/localizations/dutch.localization.d.ts +18 -0
  275. package/localize/lib/localizations/english.localization.d.ts +18 -0
  276. package/localize/lib/localize.config.d.ts +6 -0
  277. package/localize/lib/localize.module.d.ts +2 -7
  278. package/localize/lib/localize.pipe.d.ts +1 -1
  279. package/localize/lib/localize.service.d.ts +4 -4
  280. package/localize/lib/localize.tokens.d.ts +11 -0
  281. package/localize/lib/views/localize-string/localize-string.component.d.ts +1 -1
  282. package/localize/lib/views/localize-template.directive.d.ts +1 -1
  283. package/localize/public_api.d.ts +2 -2
  284. package/masking/lib/directives/currency-mask.directive.d.ts +1 -1
  285. package/masking/lib/directives/date-mask.directive.d.ts +1 -1
  286. package/masking/lib/directives/input-mask.directive.d.ts +1 -1
  287. package/masking/lib/masking.module.d.ts +1 -1
  288. package/notifications/lib/notifications-item/notifications-item.component.d.ts +1 -1
  289. package/notifications/lib/notifications-list/notifications-list.component.d.ts +1 -1
  290. package/notifications/lib/notifications.config.d.ts +3 -0
  291. package/notifications/lib/notifications.interfaces.d.ts +2 -1
  292. package/notifications/lib/notifications.module.d.ts +1 -5
  293. package/notifications/public_api.d.ts +1 -0
  294. package/package.json +28 -33
  295. package/permissions/lib/directives/permission.directive.d.ts +1 -1
  296. package/permissions/lib/guards/permission.guard.d.ts +3 -15
  297. package/permissions/lib/permissions.config.d.ts +3 -0
  298. package/permissions/lib/permissions.interface.d.ts +2 -1
  299. package/permissions/lib/permissions.module.d.ts +1 -1
  300. package/permissions/public_api.d.ts +1 -0
  301. package/public_api.d.ts +1 -9
  302. package/recaptcha/lib/recaptcha/recaptcha.component.d.ts +4 -7
  303. package/recaptcha/lib/recaptcha-loader.service.d.ts +9 -13
  304. package/recaptcha/lib/recaptcha.config.d.ts +3 -0
  305. package/recaptcha/lib/recaptcha.module.d.ts +2 -2
  306. package/recaptcha/public_api.d.ts +1 -0
  307. package/{theming → select}/index.d.ts +1 -1
  308. package/select/lib/select/select.component.d.ts +75 -0
  309. package/select/lib/select-label.directive.d.ts +8 -0
  310. package/select/lib/select-option-group.directive.d.ts +8 -0
  311. package/select/lib/select-option.directive.d.ts +8 -0
  312. package/select/lib/select.module.d.ts +10 -0
  313. package/select/public_api.d.ts +5 -0
  314. package/styles/colors.scss +20 -0
  315. package/styles/grid.scss +98 -0
  316. package/styles/reset.scss +65 -0
  317. package/styles/theme.scss +88 -0
  318. package/table/lib/components/table/table.component.d.ts +4 -6
  319. package/table/lib/components/table-cell/table-cell.component.d.ts +1 -1
  320. package/table/lib/components/table-header-cell/table-header-cell.component.d.ts +4 -7
  321. package/table/lib/components/table-pager/table-pager.component.d.ts +4 -8
  322. package/table/lib/table.module.d.ts +1 -5
  323. package/tooltip/lib/tooltip-container/tooltip-container.component.d.ts +3 -4
  324. package/tooltip/lib/tooltip.directive.d.ts +8 -17
  325. package/tooltip/lib/tooltip.module.d.ts +2 -5
  326. package/tooltip/public_api.d.ts +1 -1
  327. package/utils/lib/directives/autosize.directive.d.ts +2 -1
  328. package/utils/lib/directives/focus-trap.directive.d.ts +1 -1
  329. package/utils/lib/directives/focus.directive.d.ts +1 -1
  330. package/utils/lib/directives/template.directive.d.ts +1 -1
  331. package/utils/lib/utils.module.d.ts +1 -1
  332. package/auth/lib/directives/abstract.directive.d.ts +0 -12
  333. package/collections/lib/components/collections.directive.d.ts +0 -17
  334. package/controls/index.d.ts +0 -5
  335. package/controls/lib/checkbox/checkbox/checkbox.component.d.ts +0 -51
  336. package/controls/lib/checkbox/checkbox-group/checkbox-group.component.d.ts +0 -23
  337. package/controls/lib/checkbox/checkbox.module.d.ts +0 -10
  338. package/controls/lib/control-error/control-error/control-error.animation.d.ts +0 -1
  339. package/controls/lib/control-error/control-error/control-error.component.d.ts +0 -17
  340. package/controls/lib/control-error/control-error-submit.directive.d.ts +0 -15
  341. package/controls/lib/control-error/control-error.defaults.d.ts +0 -2
  342. package/controls/lib/control-error/control-error.interface.d.ts +0 -12
  343. package/controls/lib/control-error/control-error.module.d.ts +0 -9
  344. package/controls/lib/control-error/control-error.utils.d.ts +0 -3
  345. package/controls/lib/controls.interfaces.d.ts +0 -4
  346. package/controls/lib/controls.module.d.ts +0 -14
  347. package/controls/lib/form-control/form-control/form-control.component.d.ts +0 -29
  348. package/controls/lib/form-control/form-control-addon/form-control-addon.component.d.ts +0 -6
  349. package/controls/lib/form-control/form-control-input.directive.d.ts +0 -35
  350. package/controls/lib/form-control/form-control.module.d.ts +0 -12
  351. package/controls/lib/radio/radio-button/radio-button.component.d.ts +0 -24
  352. package/controls/lib/radio/radio-group/radio-group.component.d.ts +0 -53
  353. package/controls/lib/radio/radio.module.d.ts +0 -11
  354. package/controls/lib/toggle/toggle/toggle.component.d.ts +0 -45
  355. package/controls/lib/toggle/toggle-group/toggle-group.component.d.ts +0 -23
  356. package/controls/lib/toggle/toggle.module.d.ts +0 -10
  357. package/controls/public_api.d.ts +0 -20
  358. package/elements/lib/dropdown/dropdown.component.d.ts +0 -21
  359. package/elements/lib/tag/tag.component.d.ts +0 -7
  360. package/esm2022/auth/lib/directives/abstract.directive.mjs +0 -40
  361. package/esm2022/collections/lib/components/collections.directive.mjs +0 -43
  362. package/esm2022/controls/bravobit-bb-foundation-controls.mjs +0 -5
  363. package/esm2022/controls/lib/checkbox/checkbox/checkbox.component.mjs +0 -178
  364. package/esm2022/controls/lib/checkbox/checkbox-group/checkbox-group.component.mjs +0 -68
  365. package/esm2022/controls/lib/checkbox/checkbox.module.mjs +0 -20
  366. package/esm2022/controls/lib/control-error/control-error/control-error.animation.mjs +0 -14
  367. package/esm2022/controls/lib/control-error/control-error/control-error.component.mjs +0 -63
  368. package/esm2022/controls/lib/control-error/control-error-submit.directive.mjs +0 -47
  369. package/esm2022/controls/lib/control-error/control-error.defaults.mjs +0 -26
  370. package/esm2022/controls/lib/control-error/control-error.interface.mjs +0 -3
  371. package/esm2022/controls/lib/control-error/control-error.module.mjs +0 -19
  372. package/esm2022/controls/lib/control-error/control-error.utils.mjs +0 -20
  373. package/esm2022/controls/lib/controls.interfaces.mjs +0 -2
  374. package/esm2022/controls/lib/controls.module.mjs +0 -62
  375. package/esm2022/controls/lib/form-control/form-control/form-control.component.mjs +0 -79
  376. package/esm2022/controls/lib/form-control/form-control-addon/form-control-addon.component.mjs +0 -22
  377. package/esm2022/controls/lib/form-control/form-control-input.directive.mjs +0 -124
  378. package/esm2022/controls/lib/form-control/form-control.module.mjs +0 -34
  379. package/esm2022/controls/lib/radio/radio-button/radio-button.component.mjs +0 -75
  380. package/esm2022/controls/lib/radio/radio-group/radio-group.component.mjs +0 -168
  381. package/esm2022/controls/lib/radio/radio.module.mjs +0 -21
  382. package/esm2022/controls/lib/toggle/toggle/toggle.component.mjs +0 -153
  383. package/esm2022/controls/lib/toggle/toggle-group/toggle-group.component.mjs +0 -62
  384. package/esm2022/controls/lib/toggle/toggle.module.mjs +0 -20
  385. package/esm2022/controls/public_api.mjs +0 -21
  386. package/esm2022/elements/lib/dropdown/dropdown.component.mjs +0 -100
  387. package/esm2022/elements/lib/tag/tag.component.mjs +0 -18
  388. package/esm2022/lib/core/mixins/can-disable.mjs +0 -16
  389. package/esm2022/lib/core/mixins/can-hide-errors.mjs +0 -16
  390. package/esm2022/lib/core/mixins/can-load.mjs +0 -16
  391. package/esm2022/lib/core/mixins/constructor.mjs +0 -2
  392. package/esm2022/lib/core/mixins/has-error.mjs +0 -16
  393. package/esm2022/lib/core/mixins/is-focused.mjs +0 -16
  394. package/esm2022/lib/core/mixins/is-grouped.mjs +0 -16
  395. package/esm2022/lib/core/mixins/is-readonly.mjs +0 -16
  396. package/esm2022/lib/core/mixins/is-required.mjs +0 -16
  397. package/esm2022/localize/lib/interfaces/transforms.interfaces.mjs +0 -3
  398. package/esm2022/localize/lib/locale.token.mjs +0 -14
  399. package/esm2022/theming/bravobit-bb-foundation-theming.mjs +0 -5
  400. package/esm2022/theming/lib/themes/checkbox-group.theme.mjs +0 -17
  401. package/esm2022/theming/lib/themes/checkbox.theme.mjs +0 -35
  402. package/esm2022/theming/lib/themes/control-error.theme.mjs +0 -11
  403. package/esm2022/theming/lib/themes/form-control-addon.theme.mjs +0 -6
  404. package/esm2022/theming/lib/themes/form-control.theme.mjs +0 -45
  405. package/esm2022/theming/lib/themes/radio-button.theme.mjs +0 -29
  406. package/esm2022/theming/lib/themes/radio-group.theme.mjs +0 -20
  407. package/esm2022/theming/lib/themes/toggle-group.theme.mjs +0 -17
  408. package/esm2022/theming/lib/themes/toggle.theme.mjs +0 -28
  409. package/esm2022/theming/lib/theming.data.mjs +0 -90
  410. package/esm2022/theming/lib/theming.directive.mjs +0 -38
  411. package/esm2022/theming/lib/theming.interface.mjs +0 -2
  412. package/esm2022/theming/lib/theming.module.mjs +0 -16
  413. package/esm2022/theming/lib/utils/theming.variable.mjs +0 -41
  414. package/esm2022/theming/public_api.mjs +0 -10
  415. package/fesm2022/bravobit-bb-foundation-controls.mjs +0 -1191
  416. package/fesm2022/bravobit-bb-foundation-controls.mjs.map +0 -1
  417. package/fesm2022/bravobit-bb-foundation-theming.mjs +0 -381
  418. package/fesm2022/bravobit-bb-foundation-theming.mjs.map +0 -1
  419. package/lib/core/mixins/can-disable.d.ts +0 -6
  420. package/lib/core/mixins/can-hide-errors.d.ts +0 -6
  421. package/lib/core/mixins/can-load.d.ts +0 -6
  422. package/lib/core/mixins/constructor.d.ts +0 -1
  423. package/lib/core/mixins/has-error.d.ts +0 -6
  424. package/lib/core/mixins/is-focused.d.ts +0 -6
  425. package/lib/core/mixins/is-grouped.d.ts +0 -6
  426. package/lib/core/mixins/is-readonly.d.ts +0 -6
  427. package/lib/core/mixins/is-required.d.ts +0 -6
  428. package/localize/lib/interfaces/transforms.interfaces.d.ts +0 -3
  429. package/localize/lib/locale.token.d.ts +0 -3
  430. package/theming/lib/themes/checkbox-group.theme.d.ts +0 -16
  431. package/theming/lib/themes/checkbox.theme.d.ts +0 -32
  432. package/theming/lib/themes/control-error.theme.d.ts +0 -9
  433. package/theming/lib/themes/form-control-addon.theme.d.ts +0 -5
  434. package/theming/lib/themes/form-control.theme.d.ts +0 -32
  435. package/theming/lib/themes/radio-button.theme.d.ts +0 -26
  436. package/theming/lib/themes/radio-group.theme.d.ts +0 -17
  437. package/theming/lib/themes/toggle-group.theme.d.ts +0 -16
  438. package/theming/lib/themes/toggle.theme.d.ts +0 -25
  439. package/theming/lib/theming.data.d.ts +0 -17
  440. package/theming/lib/theming.directive.d.ts +0 -13
  441. package/theming/lib/theming.interface.d.ts +0 -34
  442. package/theming/lib/theming.module.d.ts +0 -7
  443. package/theming/lib/utils/theming.variable.d.ts +0 -16
  444. package/theming/public_api.d.ts +0 -9
@@ -1 +1 @@
1
- {"version":3,"file":"bravobit-bb-foundation-table.mjs","sources":["../../../projects/bb-foundation/table/src/lib/data/datasource.data.ts","../../../projects/bb-foundation/table/src/lib/data/generic.data.ts","../../../projects/bb-foundation/table/src/lib/components/table-pager/table-pager.component.ts","../../../projects/bb-foundation/table/src/lib/components/table-pager/table-pager.component.html","../../../projects/bb-foundation/table/src/lib/components/table/table.component.ts","../../../projects/bb-foundation/table/src/lib/components/table/table.component.html","../../../projects/bb-foundation/table/src/lib/components/table-cell/table-cell.component.ts","../../../projects/bb-foundation/table/src/lib/components/table-cell/table-cell.component.html","../../../projects/bb-foundation/table/src/lib/components/table-header-cell/table-header-cell.component.ts","../../../projects/bb-foundation/table/src/lib/components/table-header-cell/table-header-cell.component.html","../../../projects/bb-foundation/table/src/lib/table.module.ts","../../../projects/bb-foundation/table/src/bravobit-bb-foundation-table.ts"],"sourcesContent":["import {DataSourcePageRequest, DataSourcePageResponse} from '../interfaces/datasource.interface';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport {filter} from 'rxjs/operators';\n\nexport class DataSourceRequest {\n\n // Data.\n private _request$ = new BehaviorSubject<DataSourcePageRequest | null>(null);\n private _loading$ = new BehaviorSubject<boolean>(true);\n\n get loading() {\n return this._loading$.asObservable();\n }\n\n get when() {\n return this._request$.pipe(\n filter(data => !!data)\n );\n }\n\n startLoading() {\n this._loading$.next(true);\n }\n\n stopLoading() {\n this._loading$.next(false);\n }\n\n update(params: Partial<DataSourcePageRequest> = {}) {\n const currentValue = this._request$.getValue();\n\n // Set the page number to 1 if the query or page size was changed.\n if (currentValue && params && (currentValue?.query !== params?.query || currentValue?.pageSize !== params?.pageSize)) {\n params.pageNumber = 1;\n }\n\n this._request$.next({...currentValue, ...params});\n }\n\n}\n\nexport abstract class DataSource<T = any> {\n\n abstract handle(request: DataSourceRequest): Observable<DataSourcePageResponse<T>>;\n\n}\n","import {DataSourcePageRequest} from '../interfaces/datasource.interface';\nimport {BehaviorSubject, combineLatest, Observable, of} from 'rxjs';\nimport {DataSource, DataSourceRequest} from './datasource.data';\nimport {map, share, switchMap, tap} from 'rxjs/operators';\nimport {HttpClient} from '@angular/common/http';\n\nexport class GenericDataSource<T = any> extends DataSource<T> {\n\n private readonly _httpClient: HttpClient;\n private readonly _endpoint$: Observable<string>;\n\n // Data.\n private _items$ = new BehaviorSubject<Observable<{ [key: string]: string } | null>[]>([]);\n private _fn: (data: T[]) => T[] = data => data;\n private _rawFn: ((data: unknown) => void) | null = null;\n\n constructor(httpClient: HttpClient,\n endpoint: Observable<string> | string) {\n super();\n\n this._httpClient = httpClient;\n this._endpoint$ = typeof endpoint === 'string'\n ? of<string>(endpoint)\n : endpoint;\n\n }\n\n append(item: Observable<{ [key: string]: string } | null>) {\n const currentValue = this._items$.getValue();\n const newValue = [...currentValue, item];\n this._items$.next(newValue);\n\n return this;\n }\n\n data(fn: (data: T[]) => T[]) {\n this._fn = fn;\n return this;\n }\n\n raw(fn: (data: unknown) => void) {\n this._rawFn = fn;\n return this;\n }\n\n handle(request: DataSourceRequest) {\n const extraParams$ = this._items$.pipe(\n switchMap(items => items?.length <= 0 ? of([]) : combineLatest(items)),\n map(items => items.reduce((previous, current) => ({...previous, ...(current ?? {})}), {}))\n );\n\n return combineLatest([request.when, this._endpoint$, extraParams$]).pipe(\n switchMap(([params, endpoint, extraParams]) => {\n // Start the loading.\n request.startLoading();\n\n const formattedParams = this.formatParams(params);\n const combinedParams = {...formattedParams, ...extraParams};\n\n return this._httpClient.get(endpoint, {\n params: combinedParams\n }).pipe(\n tap(data => {\n if (!this._rawFn) {\n return;\n }\n this._rawFn(data);\n }),\n map(data => this.formatResponse(data)),\n map(result => ({\n ...result,\n data: this._fn(result?.data ?? [])\n }))\n );\n }),\n share()\n );\n }\n\n private formatResponse = <T = any>(data: unknown) => {\n return {\n pageSize: data?.['page_size'] as number,\n pageNumber: data?.['page_number'] as number,\n totalPages: data?.['total_pages'] as number,\n totalEntries: data?.['total_entries'] as number,\n data: data?.['data'] as T[]\n };\n };\n\n private formatParams = (data: Partial<DataSourcePageRequest>) => {\n const params = {};\n\n params['page'] = `${data?.pageNumber ?? 1}`;\n params['page_size'] = `${data?.pageSize ?? 25}`;\n\n const sort = (data?.sort ?? [])\n .map(({name}) => name)\n .filter(name => !!name)\n .join(',');\n\n const sortDirection = (data?.sort ?? [])\n .map(({direction}) => direction)\n .filter(direction => !!direction)\n .join(',');\n\n if (sort?.length > 0 && sortDirection?.length > 0) {\n params['sort'] = sort;\n params['sort_direction'] = sortDirection;\n }\n\n if (data?.query && data?.query?.length > 0 && data?.queryFields && data?.queryFields?.length > 0) {\n params['query'] = data?.query;\n params['query_fields'] = data?.queryFields?.join(',');\n }\n\n return params;\n };\n\n}\n","import {ChangeDetectionStrategy, Component, forwardRef, Input, OnInit, ViewEncapsulation} from '@angular/core';\nimport {CanDisableConstructor, mixinDisabled} from '@bravobit/bb-foundation';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {BehaviorSubject, combineLatest, Observable} from 'rxjs';\nimport {map, share} from 'rxjs/operators';\n\nclass BbTablePagerBase {\n}\n\nconst BbTablePagerMixinBase: CanDisableConstructor\n & typeof BbTablePagerBase\n = mixinDisabled(BbTablePagerBase);\n\n@Component({\n selector: 'bb-table-pager',\n templateUrl: './table-pager.component.html',\n styleUrls: ['./table-pager.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'bb-table-pager',\n '[class.disabled]': 'disabled'\n },\n inputs: ['disabled'],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n providers: [\n {provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BbTablePager), multi: true}\n ]\n})\nexport class BbTablePager extends BbTablePagerMixinBase implements OnInit, ControlValueAccessor {\n\n // Inputs.\n @Input() amountOfButtons: number = 5;\n @Input() showArrowButtons: boolean = true;\n\n // Observables.\n isPreviousDisabled$: Observable<boolean>;\n isNextDisabled$: Observable<boolean>;\n list$: Observable<{ page: number, active: boolean }[]>;\n\n // Methods.\n onChange: (newValue: number) => void = () => ({});\n onTouched: () => void = () => ({});\n trackByIndex = (_, item) => item.page;\n\n // Data.\n private _totalPages$: BehaviorSubject<number> = new BehaviorSubject<number>(1);\n private _pageNumber$: BehaviorSubject<number> = new BehaviorSubject<number>(1);\n\n ngOnInit() {\n // Validate the previous button is disabled.\n this.isPreviousDisabled$ = this._pageNumber$.pipe(\n map(pageNumber => pageNumber === 1)\n );\n\n // Validate the next button is disabled.\n this.isNextDisabled$ = combineLatest([this._pageNumber$, this._totalPages$]).pipe(\n map(([pageNumber, totalPages]) => pageNumber === totalPages)\n );\n\n // Create the list with page numbers.\n this.list$ = combineLatest([this._pageNumber$, this._totalPages$]).pipe(\n map(([pageNumber, totalPages]) => this.filterActivePages(pageNumber, totalPages)),\n share()\n );\n }\n\n get pageNumber() {\n return this._pageNumber$.getValue();\n }\n\n @Input()\n set pageNumber(newValue: number) {\n this.update(newValue);\n }\n\n get totalPages() {\n return this._totalPages$.getValue();\n }\n\n @Input()\n set totalPages(newValue: number) {\n const newTotalPages = Math.max(1, newValue);\n this._totalPages$.next(newTotalPages);\n }\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n writeValue(newValue: number) {\n this.update(newValue, false);\n }\n\n goToPrevious() {\n const newValue = this._pageNumber$.getValue() - 1;\n return this.update(newValue);\n }\n\n goToNext() {\n const newValue = this._pageNumber$.getValue() + 1;\n return this.update(newValue);\n }\n\n goToIndex(index: number) {\n return this.update(index);\n }\n\n private update(pageNumber: number, notify: boolean = true) {\n // You can only update when not disabled.\n if (this.disabled) {\n return;\n }\n\n // Calculate the new value.\n const newValue = Math.min(\n this.totalPages,\n Math.max(1, pageNumber)\n );\n\n // Don't do anything if the page number is the same.\n if (this._pageNumber$.getValue() === newValue) {\n return;\n }\n\n // Push the new value.\n this._pageNumber$.next(newValue);\n\n if (notify) {\n return this.onChange(pageNumber);\n }\n }\n\n private calculatePages(pageNumber: number) {\n const min = 1;\n const max = this.totalPages;\n const amount = Math.max(1, this.amountOfButtons);\n\n const data = Array(amount)\n .fill(0)\n .map((_, index) => pageNumber + (index - 1));\n\n // Validate if the minimum value less than\n // the first value.\n if (data[0] < min) {\n return data.map(item => item + 1);\n }\n\n // Calculate the difference with the max\n // if this value is higher than 0 we should minus it.\n const lastValueInArray = data[data.length - 1];\n const differenceWithMax = lastValueInArray - max;\n if (differenceWithMax > 0) {\n return data.map(item => item - differenceWithMax);\n }\n\n // Just return the default data.\n return data;\n }\n\n private filterActivePages(pageNumber: number, totalPages: number) {\n return this.calculatePages(pageNumber)\n .filter(page => page > 0 && page <= totalPages)\n .map(page => ({page, active: pageNumber === page}));\n }\n\n}\n","<ul class=\"bb-pager-list\">\n <!-- The previous page arrow button. -->\n <li *ngIf=\"showArrowButtons\"\n class=\"bb-pager-list-item\"\n title=\"Previous page\">\n <button [disabled]=\"isPreviousDisabled$ | async\"\n (click)=\"goToPrevious()\"\n class=\"bb-pager-list-button\"\n type=\"button\">\n <bb-icon src=\"material:keyboard_arrow_left\"></bb-icon>\n </button>\n </li>\n\n <!-- The list of number buttons to navigate through the list. -->\n <ng-container *ngIf=\"list$ | async as list\">\n <li *ngFor=\"let item of list; trackBy: trackByIndex\"\n [title]=\"'Page ' + item?.page\"\n class=\"bb-pager-list-item\">\n <button (click)=\"goToIndex(item?.page)\"\n [class.active]=\"item?.active\"\n class=\"bb-pager-list-button\"\n type=\"button\">\n {{ item?.page }}\n </button>\n </li>\n </ng-container>\n\n <!-- The next page arrow button. -->\n <li *ngIf=\"showArrowButtons\"\n class=\"bb-pager-list-item\"\n title=\"Next page\">\n <button [disabled]=\"isNextDisabled$ | async\"\n (click)=\"goToNext()\"\n class=\"bb-pager-list-button\"\n type=\"button\">\n <bb-icon src=\"material:keyboard_arrow_right\"></bb-icon>\n </button>\n </li>\n</ul>\n","import {\n ChangeDetectionStrategy,\n Component, ContentChild,\n ContentChildren,\n Directive,\n Input,\n OnDestroy,\n OnInit,\n QueryList,\n TemplateRef,\n ViewEncapsulation\n} from '@angular/core';\nimport {catchError, debounceTime, distinctUntilChanged, map, startWith, tap} from 'rxjs/operators';\nimport {DataSourcePageResponse} from '../../interfaces/datasource.interface';\nimport {DataSource, DataSourceRequest} from '../../data/datasource.data';\nimport {combineLatest, Observable, of, Subscription} from 'rxjs';\nimport {FormControl, FormGroup} from '@angular/forms';\n\n@Directive({\n selector: '[bbTableColumnDef]'\n})\nexport class BbTableColumnDef {\n}\n\n@Directive({\n selector: '[bbTableRowDef]'\n})\nexport class BbTableRowDef {\n}\n\n@Component({\n selector: 'bb-table',\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.scss'],\n host: {'class': 'bb-table'},\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false\n})\nexport class BbTable implements OnInit, OnDestroy {\n\n // Content.\n @ContentChildren(BbTableColumnDef, {read: TemplateRef}) tableColumnTemplates: QueryList<TemplateRef<any>>;\n @ContentChild(BbTableRowDef, {read: TemplateRef, static: false}) tableRowTemplate?: TemplateRef<any>;\n\n // Inputs.\n @Input() identifier: string | null = null;\n @Input() dataSource: DataSource;\n @Input() queryFields: string[] = [];\n @Input() sortingStrategy: 'single' | 'multiple' = 'single';\n @Input() header: TemplateRef<any> | boolean = true;\n @Input() footer: TemplateRef<any> | boolean = true;\n\n // Sizes.\n private _sizes: number[] = [25, 50, 75, 100];\n\n get sizes() {\n return this._sizes;\n }\n\n @Input()\n set sizes(newValue: number[]) {\n this.updateSizes(newValue);\n }\n\n // Optimizations.\n trackByFn = (index, item) => this.identifier ? item[this.identifier] : index;\n trackByValue = (_, item) => item;\n\n // Data.\n request: DataSourceRequest;\n data$: Observable<{ state: string, statusCode?: number, result?: DataSourcePageResponse }>;\n isLoading$: Observable<boolean>;\n\n // Form.\n form: FormGroup;\n queryControl = new FormControl('');\n\n // State.\n private _headerCount: number = 0;\n\n // Subscriptions.\n private _subscription: Subscription;\n\n ngOnInit() {\n this.composeForm();\n this.watchDataChanges();\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n get headerCount() {\n return this._headerCount;\n }\n\n get sortControl() {\n return this.form?.get('sort') as FormGroup;\n }\n\n get pageNumberControl() {\n return this.form?.get('pageNumber') as FormControl<number>;\n }\n\n get pageSizeControl() {\n return this.form?.get('pageSize') as FormControl<number>;\n }\n\n refresh() {\n return this.request.update();\n }\n\n setHeaderCount(amount: -1 | 1) {\n this._headerCount += amount;\n }\n\n private updateSizes(newValue: number[]) {\n // Validate the sizes has at least one value.\n if (newValue.length <= 0) {\n throw new Error('Cannot set an empty array as the sizes.');\n }\n\n // Set the new size.\n this._sizes = newValue;\n\n // Validate that the form exists already.\n if (!this.form) {\n return;\n }\n\n // Check if the current selected value is\n // in the new sizes array.\n const pageSizeControl = this.form.get('pageSize');\n if (this._sizes.includes(pageSizeControl.value)) {\n return;\n }\n\n // Set the first value in the array as\n // the new value.\n const firstValue = this._sizes[0];\n pageSizeControl.setValue(firstValue);\n }\n\n private composeForm() {\n // Setup the form.\n this.form = new FormGroup({\n pageSize: new FormControl<number>(this._sizes[0]),\n pageNumber: new FormControl<number>(1),\n sort: new FormGroup({})\n });\n }\n\n private watchDataChanges() {\n // Create a new request.\n this.request = new DataSourceRequest();\n this.isLoading$ = this.request.loading;\n\n if (!this.dataSource) {\n this.data$ = of({state: 'error_datasource'}).pipe(\n tap(() => this.request.stopLoading())\n );\n return;\n }\n\n // Pass the request to the data source.\n this.data$ = this.dataSource.handle(this.request).pipe(\n tap(() => this.request.stopLoading()),\n map(result => {\n const count = (result && result.data && result.data.length) || 0;\n if (count <= 0) {\n return {state: 'empty', result};\n }\n\n return {state: 'success', result};\n }),\n catchError(error => {\n this.request.stopLoading();\n\n const statusCode = error?.status ?? null;\n const states = {\n 0: 'error_down',\n 401: 'error_unauthorized',\n 403: 'error_forbidden',\n 404: 'error_not_found',\n 500: 'error_server'\n };\n\n return of({state: states?.[statusCode] ?? 'error_unknown', statusCode: statusCode});\n })\n );\n\n // Subscribe to the data changes.\n this.subscribeToChanges();\n }\n\n private subscribeToChanges() {\n const form$ = this.getFormChanges();\n const query$ = this.getQueryChanges();\n\n this._subscription = combineLatest([form$, query$]).subscribe(([form, query]) => {\n const {pageNumber, pageSize} = form;\n const sort = Object.keys(form.sort)\n .map(name => ({name, direction: form.sort[name]}))\n .filter(item => ['asc', 'desc'].includes(item.direction));\n\n this.request.startLoading();\n return this.request.update({\n sort,\n query,\n pageSize,\n pageNumber,\n queryFields: this.queryFields\n });\n });\n }\n\n private getQueryChanges() {\n return this.queryControl.valueChanges.pipe(\n debounceTime(400),\n distinctUntilChanged(),\n startWith(this.queryControl.value as string)\n );\n }\n\n private getFormChanges() {\n return this.form.valueChanges.pipe(\n startWith(this.form.value as object)\n );\n }\n\n}\n","<!--\n This is the header of the table. It can be a user\n defined custom header or just the default header.\n-->\n\n<header *ngIf=\"(header === true ? headerTemplate : header) as template\"\n class=\"bb-table-top-actions\">\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n</header>\n\n<!--\n This is the table that contains the\n rows and columns.\n-->\n\n<div class=\"bb-table-wrapper\">\n <div *ngIf=\"isLoading$ | async\"\n class=\"bb-table-progress\">\n <div class=\"bb-table-indeterminate\"></div>\n </div>\n <table class=\"bb-table-container\">\n <thead>\n <tr>\n <ng-content select=\"bb-table-header-cell\"></ng-content>\n </tr>\n </thead>\n <tbody *ngIf=\"data$ | async as data; else isLoadingTemplate\"\n [ngSwitch]=\"data?.state\">\n <ng-container *ngSwitchCase=\"'success'\">\n <ng-container *ngIf=\"!!tableRowTemplate; else tableCellsTemplates\">\n <ng-container\n *ngTemplateOutlet=\"tableRowTemplate; context: {data: data?.result?.data || []}\"></ng-container>\n </ng-container>\n\n <ng-template #tableCellsTemplates>\n <tr *ngFor=\"let item of data?.result?.data; trackBy: trackByFn\">\n <ng-container *ngFor=\"let template of tableColumnTemplates\">\n <ng-container *ngTemplateOutlet=\"template; context: {item: item}\"></ng-container>\n </ng-container>\n </tr>\n </ng-template>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'empty'\">\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'error_datasource'\">\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'error_not_found'\">\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'error_server'\">\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'error_down'\">\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n </ng-container>\n </tbody>\n </table>\n</div>\n\n<footer *ngIf=\"(footer === true ? footerTemplate : footer) as template\"\n class=\"bb-table-bottom-actions\">\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n</footer>\n\n<ng-template #isLoadingTemplate>\n <tr>\n <td [attr.colspan]=\"headerCount\"\n class=\"bb-table-template\">\n <div class=\"bb-table-template-content\">\n {{ 'tables.loading' | bbLocalize }}\n </div>\n </td>\n </tr>\n</ng-template>\n\n<!--\n This is the template that will be used when the user has not\n supplied a custom header template.\n-->\n\n<ng-template #headerTemplate>\n <ng-content></ng-content>\n <bb-form-control>\n <input [formControl]=\"queryControl\"\n [placeholder]=\"'tables.search' | bbLocalize\"\n bbInput\n autocomplete=\"off\">\n <bb-icon *ngIf=\"queryControl?.value?.length <= 0; else closeButtonTemplate\"\n bbSuffix\n src=\"material:search\">\n </bb-icon>\n </bb-form-control>\n</ng-template>\n\n<!--\n This is the template that will be used when the user has not\n supplied a custom footer template.\n-->\n\n<ng-template #footerTemplate>\n <bb-form-control *ngIf=\"sizes?.length > 1\">\n <select [formControl]=\"pageSizeControl\"\n bbInput\n title=\"Sizes\">\n <option *ngFor=\"let item of sizes; trackBy: trackByValue\"\n [ngValue]=\"item\">\n {{ item }} / {{ 'tables.page' | bbLocalize }}\n </option>\n </select>\n </bb-form-control>\n\n <bb-table-pager [totalPages]=\"(data$ | async)?.result?.totalPages\"\n [formControl]=\"pageNumberControl\">\n </bb-table-pager>\n</ng-template>\n\n<!--\n This the template that will be used when the user\n has filled in some data in the query control.\n-->\n\n<ng-template #closeButtonTemplate>\n <button bbSuffix\n (click)=\"queryControl?.patchValue('')\"\n type=\"button\"\n class=\"bb-table-progress-close-query\">\n <bb-icon src=\"material:close\"></bb-icon>\n </button>\n</ng-template>\n\n<ng-template #errorTemplate let-state=\"state\" let-status=\"statusCode\">\n <tr>\n <td [attr.colspan]=\"headerCount\"\n class=\"bb-table-template\">\n <div class=\"bb-table-template-content\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"64\" height=\"41\">\n <g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(0 1)\">\n <ellipse cx=\"32\" cy=\"33\" fill=\"#F5F5F5\" rx=\"32\" ry=\"7\"></ellipse>\n <g fill-rule=\"nonzero\" stroke=\"#D9D9D9\">\n <path\n d=\"M55 12.7605604L44.8543047 1.25739633C44.3674414.47382661 43.6558789 0 42.9067617 0H21.0932383c-.7491172 0-1.4606797.47395025-1.947543 1.25739633L9 12.7605604V22h46v-9.2394396z\"></path>\n <path fill=\"#FAFAFA\"\n d=\"M41.6132813 15.9315c0-1.6056489.9936718-2.931266 2.2264179-2.9315H55v18.1371277C55 33.2589574 53.6793867 35 52.0504297 35H11.94957031C10.32052344 35 9 33.2588404 9 31.1371277V13h11.1603008c1.2327461 0 2.226418 1.3228085 2.226418 2.9284574v.0211809c0 1.6056489 1.0049921 2.9015426 2.2377382 2.9015426h14.751086c1.2327461 0 2.2377383-1.3078298 2.2377383-2.9134788V15.9315z\"></path>\n </g>\n </g>\n </svg>\n <span *ngIf=\"state as stateLabel\">{{ ('tables.' + stateLabel) | bbLocalize }}</span>\n <span *ngIf=\"status as statusCode\"\n class=\"bb-table-template-content-code\">(HTTP {{ statusCode }})</span>\n </div>\n </td>\n </tr>\n</ng-template>\n","import {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\n\n@Component({\n selector: 'bb-table-cell',\n templateUrl: './table-cell.component.html',\n styleUrls: ['./table-cell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {'class': 'bb-table-cell'},\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false\n})\nexport class BbTableCell {\n}\n","<div>\n <ng-content></ng-content>\n</div>","import {\n Attribute,\n ChangeDetectionStrategy,\n Component,\n Host,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n ViewEncapsulation\n} from '@angular/core';\nimport {CanDisable, CanDisableConstructor, mixinDisabled} from '@bravobit/bb-foundation';\nimport {TableColumnSortStrategy} from '../../interfaces/table.interfaces';\nimport {BbTable} from '../table/table.component';\nimport {FormControl} from '@angular/forms';\nimport {startWith} from 'rxjs/operators';\nimport {Observable} from 'rxjs';\n\nclass BbTableHeaderCellBase {\n}\n\nconst BbTableHeaderCellMixinBase: CanDisableConstructor\n & typeof BbTableHeaderCellBase = mixinDisabled(BbTableHeaderCellBase);\n\n@Component({\n selector: 'bb-table-header-cell',\n templateUrl: './table-header-cell.component.html',\n styleUrls: ['./table-header-cell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'bb-table-header-cell',\n '[class.disabled]': 'isDisabled'\n },\n inputs: ['disabled'],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false\n})\nexport class BbTableHeaderCell extends BbTableHeaderCellMixinBase implements OnInit, OnDestroy, CanDisable {\n\n // Constants.\n private readonly _sortDirections: TableColumnSortStrategy[] = ['none', 'asc', 'desc'];\n private readonly _control = new FormControl<TableColumnSortStrategy>(this._sortDirections[0]);\n\n // Data.\n valueChanges$: Observable<string>;\n\n // Sort.\n @Input()\n set sort(value: TableColumnSortStrategy) {\n // Check if the new value is a valid value.\n if (!this._sortDirections.includes(value)) {\n return;\n }\n\n // Set the value.\n this._control.setValue(value);\n }\n\n get sort() {\n return this._control.value;\n }\n\n constructor(@Optional() @Host() private _table?: BbTable,\n @Optional() @Attribute('name') private _name?: string) {\n super();\n }\n\n ngOnInit() {\n // Validate that the name and table are set.\n this._table?.setHeaderCount?.(1);\n if (!this._table || !this._name) {\n return;\n }\n\n // Check if the control already exists in the table.\n if (this._table.sortControl?.contains(this._name)) {\n this.disabled = true;\n return this.logWarning(`BbTableHeaderCell: The name \"${this._name}\" is not unique in the table; Control was not registered.`);\n }\n\n // Register the header cell with the table.\n this._table.sortControl?.addControl(this._name, this._control);\n\n // Get all the value changes.\n this.valueChanges$ = this._control.valueChanges.pipe(\n startWith(this._control.value as string)\n );\n }\n\n ngOnDestroy() {\n this._table?.setHeaderCount?.(-1);\n // Validate that the name and table are set.\n if (!this._table || !this._name) {\n return;\n }\n\n // Un-register the header cell with the table.\n if (this._table?.sortControl?.contains(this._name)) {\n this._table?.sortControl?.removeControl(this._name);\n }\n }\n\n get isDisabled() {\n return this.disabled || !this._name;\n }\n\n @HostListener('click')\n onClick() {\n // Check if the header cell is disabled.\n if (this.isDisabled) {\n return;\n }\n\n // Find the index of the current sort and\n // create the new index.\n const index = this._sortDirections.findIndex(item => item === this._control.value);\n const newIndex = (index + 1) % this._sortDirections.length;\n const newSort = this._sortDirections[newIndex];\n\n // Set the new sort.\n return this.updateTableAndHeaderCell(newSort);\n }\n\n private updateTableAndHeaderCell(value: TableColumnSortStrategy) {\n // Check if the new value is a valid value.\n if (!this._sortDirections.includes(value)) {\n return;\n }\n\n // Validate the table exists.\n if (!this._table) {\n return this._control.setValue(value);\n }\n\n // Handle the single sorting strategy.\n if (this._table.sortingStrategy === 'single') {\n return this.handleSingleSortingStrategy(value);\n }\n\n // Default case when no other strategy\n // is used.\n return this._control.setValue(value);\n }\n\n private handleSingleSortingStrategy(value: string) {\n // Get the sort control.\n const control = this._table.sortControl;\n\n // Set each value to false since we only want to\n // sort on one property at a time with this strategy.\n const newValue = Object.keys(control.controls).reduce((previous, current) => {\n previous[current] = current === this._name ? value : 'none';\n return previous;\n }, {});\n\n // Patch the entire sort value.\n this._table?.sortControl?.patchValue(newValue);\n }\n\n private logWarning = (message: string) => {\n console && console.warn && console.warn(message);\n };\n\n}\n","<!-- The content. -->\n<ng-content></ng-content>\n\n<!-- The indicator for the sort direction. -->\n<ng-container *ngIf=\"valueChanges$ | async as value\">\n <button *ngIf=\"!isDisabled\"\n [class.asc]=\"value === 'asc'\"\n [class.desc]=\"value === 'desc'\"\n class=\"bb-table-header-cell-toggle\"\n type=\"button\"></button>\n</ng-container>\n","import {BbTableHeaderCell} from './components/table-header-cell/table-header-cell.component';\nimport {BbTable, BbTableColumnDef, BbTableRowDef} from './components/table/table.component';\nimport {BbTablePager} from './components/table-pager/table-pager.component';\nimport {BbTableCell} from './components/table-cell/table-cell.component';\nimport {ElementsModule} from '@bravobit/bb-foundation/elements';\nimport {LocalizeModule} from '@bravobit/bb-foundation/localize';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\n\nconst DECLARATIONS_EXPORTS = [\n BbTable,\n BbTableColumnDef,\n BbTableRowDef,\n BbTableHeaderCell,\n BbTableCell,\n BbTablePager\n];\n\n@NgModule({\n imports: [CommonModule, ReactiveFormsModule, ElementsModule, LocalizeModule],\n declarations: [...DECLARATIONS_EXPORTS],\n exports: [...DECLARATIONS_EXPORTS]\n})\nexport class TableModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2","i4.BbTablePager"],"mappings":";;;;;;;;;;;;;;MAIa,iBAAiB,CAAA;AAA9B,IAAA,WAAA,GAAA;;AAGY,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,eAAe,CAA+B,IAAI,CAAC,CAAC;AACpE,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC,CAAC;KA+B1D;AA7BG,IAAA,IAAI,OAAO,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;KACxC;AAED,IAAA,IAAI,IAAI,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CACtB,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CACzB,CAAC;KACL;IAED,YAAY,GAAA;AACR,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC7B;IAED,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC9B;IAED,MAAM,CAAC,SAAyC,EAAE,EAAA;QAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;;QAG/C,IAAI,YAAY,IAAI,MAAM,KAAK,YAAY,EAAE,KAAK,KAAK,MAAM,EAAE,KAAK,IAAI,YAAY,EAAE,QAAQ,KAAK,MAAM,EAAE,QAAQ,CAAC,EAAE;AAClH,YAAA,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC;SACzB;AAED,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAC,GAAG,YAAY,EAAE,GAAG,MAAM,EAAC,CAAC,CAAC;KACrD;AAEJ,CAAA;MAEqB,UAAU,CAAA;AAI/B;;ACvCK,MAAO,iBAA2B,SAAQ,UAAa,CAAA;IAUzD,WAAY,CAAA,UAAsB,EACtB,QAAqC,EAAA;AAC7C,QAAA,KAAK,EAAE,CAAC;;AANJ,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,eAAe,CAAiD,EAAE,CAAC,CAAC;AAClF,QAAA,IAAA,CAAA,GAAG,GAAuB,IAAI,IAAI,IAAI,CAAC;QACvC,IAAM,CAAA,MAAA,GAAqC,IAAI,CAAC;AAiEhD,QAAA,IAAA,CAAA,cAAc,GAAG,CAAU,IAAa,KAAI;YAChD,OAAO;AACH,gBAAA,QAAQ,EAAE,IAAI,GAAG,WAAW,CAAW;AACvC,gBAAA,UAAU,EAAE,IAAI,GAAG,aAAa,CAAW;AAC3C,gBAAA,UAAU,EAAE,IAAI,GAAG,aAAa,CAAW;AAC3C,gBAAA,YAAY,EAAE,IAAI,GAAG,eAAe,CAAW;AAC/C,gBAAA,IAAI,EAAE,IAAI,GAAG,MAAM,CAAQ;aAC9B,CAAC;AACN,SAAC,CAAC;AAEM,QAAA,IAAA,CAAA,YAAY,GAAG,CAAC,IAAoC,KAAI;YAC5D,MAAM,MAAM,GAAG,EAAE,CAAC;YAElB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAA,EAAG,IAAI,EAAE,UAAU,IAAI,CAAC,CAAA,CAAE,CAAC;YAC5C,MAAM,CAAC,WAAW,CAAC,GAAG,CAAA,EAAG,IAAI,EAAE,QAAQ,IAAI,EAAE,CAAA,CAAE,CAAC;YAEhD,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE;iBACzB,GAAG,CAAC,CAAC,EAAC,IAAI,EAAC,KAAK,IAAI,CAAC;iBACrB,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC;iBACtB,IAAI,CAAC,GAAG,CAAC,CAAC;YAEf,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE;iBAClC,GAAG,CAAC,CAAC,EAAC,SAAS,EAAC,KAAK,SAAS,CAAC;iBAC/B,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,CAAC;iBAChC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEf,YAAA,IAAI,IAAI,EAAE,MAAM,GAAG,CAAC,IAAI,aAAa,EAAE,MAAM,GAAG,CAAC,EAAE;AAC/C,gBAAA,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;AACtB,gBAAA,MAAM,CAAC,gBAAgB,CAAC,GAAG,aAAa,CAAC;aAC5C;YAED,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,IAAI,IAAI,EAAE,WAAW,IAAI,IAAI,EAAE,WAAW,EAAE,MAAM,GAAG,CAAC,EAAE;AAC9F,gBAAA,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC;AAC9B,gBAAA,MAAM,CAAC,cAAc,CAAC,GAAG,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;aACzD;AAED,YAAA,OAAO,MAAM,CAAC;AAClB,SAAC,CAAC;AAhGE,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;AAC9B,QAAA,IAAI,CAAC,UAAU,GAAG,OAAO,QAAQ,KAAK,QAAQ;AAC1C,cAAE,EAAE,CAAS,QAAQ,CAAC;cACpB,QAAQ,CAAC;KAElB;AAED,IAAA,MAAM,CAAC,IAAkD,EAAA;QACrD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC7C,MAAM,QAAQ,GAAG,CAAC,GAAG,YAAY,EAAE,IAAI,CAAC,CAAC;AACzC,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAE5B,QAAA,OAAO,IAAI,CAAC;KACf;AAED,IAAA,IAAI,CAAC,EAAsB,EAAA;AACvB,QAAA,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;AACd,QAAA,OAAO,IAAI,CAAC;KACf;AAED,IAAA,GAAG,CAAC,EAA2B,EAAA;AAC3B,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACjB,QAAA,OAAO,IAAI,CAAC;KACf;AAED,IAAA,MAAM,CAAC,OAA0B,EAAA;AAC7B,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAClC,SAAS,CAAC,KAAK,IAAI,KAAK,EAAE,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,EACtE,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,OAAO,MAAM,EAAC,GAAG,QAAQ,EAAE,IAAI,OAAO,IAAI,EAAE,GAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAC7F,CAAC;AAEF,QAAA,OAAO,aAAa,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,CACpE,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,KAAI;;YAE1C,OAAO,CAAC,YAAY,EAAE,CAAC;YAEvB,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAClD,MAAM,cAAc,GAAG,EAAC,GAAG,eAAe,EAAE,GAAG,WAAW,EAAC,CAAC;AAE5D,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE;AAClC,gBAAA,MAAM,EAAE,cAAc;AACzB,aAAA,CAAC,CAAC,IAAI,CACH,GAAG,CAAC,IAAI,IAAG;AACP,gBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;oBACd,OAAO;iBACV;AACD,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aACrB,CAAC,EACF,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EACtC,GAAG,CAAC,MAAM,KAAK;AACX,gBAAA,GAAG,MAAM;gBACT,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;aACrC,CAAC,CAAC,CACN,CAAC;AACN,SAAC,CAAC,EACF,KAAK,EAAE,CACV,CAAC;KACL;AAyCJ;;AChHD,MAAM,gBAAgB,CAAA;AACrB,CAAA;AAED,MAAM,qBAAqB,GAErB,aAAa,CAAC,gBAAgB,CAAC,CAAC;AAkBhC,MAAO,YAAa,SAAQ,qBAAqB,CAAA;AAhBvD,IAAA,WAAA,GAAA;;;QAmBa,IAAe,CAAA,eAAA,GAAW,CAAC,CAAC;QAC5B,IAAgB,CAAA,gBAAA,GAAY,IAAI,CAAC;;AAQ1C,QAAA,IAAA,CAAA,QAAQ,GAA+B,OAAO,EAAE,CAAC,CAAC;AAClD,QAAA,IAAA,CAAA,SAAS,GAAe,OAAO,EAAE,CAAC,CAAC;QACnC,IAAY,CAAA,YAAA,GAAG,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC;;AAG9B,QAAA,IAAA,CAAA,YAAY,GAA4B,IAAI,eAAe,CAAS,CAAC,CAAC,CAAC;AACvE,QAAA,IAAA,CAAA,YAAY,GAA4B,IAAI,eAAe,CAAS,CAAC,CAAC,CAAC;AA+HlF,KAAA;IA7HG,QAAQ,GAAA;;QAEJ,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAC7C,GAAG,CAAC,UAAU,IAAI,UAAU,KAAK,CAAC,CAAC,CACtC,CAAC;;AAGF,QAAA,IAAI,CAAC,eAAe,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAC7E,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,KAAK,UAAU,KAAK,UAAU,CAAC,CAC/D,CAAC;;AAGF,QAAA,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CACnE,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,KAAK,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,EACjF,KAAK,EAAE,CACV,CAAC;KACL;AAED,IAAA,IAAI,UAAU,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;KACvC;IAED,IACI,UAAU,CAAC,QAAgB,EAAA;AAC3B,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;KACzB;AAED,IAAA,IAAI,UAAU,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;KACvC;IAED,IACI,UAAU,CAAC,QAAgB,EAAA;QAC3B,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC5C,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;KACzC;AAED,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACpB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACtB;AAED,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACrB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACvB;AAED,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAChC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;KAC9B;AAED,IAAA,UAAU,CAAC,QAAgB,EAAA;AACvB,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;KAChC;IAED,YAAY,GAAA;QACR,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AAClD,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;KAChC;IAED,QAAQ,GAAA;QACJ,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AAClD,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;KAChC;AAED,IAAA,SAAS,CAAC,KAAa,EAAA;AACnB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KAC7B;AAEO,IAAA,MAAM,CAAC,UAAkB,EAAE,MAAA,GAAkB,IAAI,EAAA;;AAErD,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,OAAO;SACV;;AAGD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CACrB,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAC1B,CAAC;;QAGF,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,QAAQ,EAAE;YAC3C,OAAO;SACV;;AAGD,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEjC,IAAI,MAAM,EAAE;AACR,YAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;SACpC;KACJ;AAEO,IAAA,cAAc,CAAC,UAAkB,EAAA;QACrC,MAAM,GAAG,GAAG,CAAC,CAAC;AACd,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC;AAC5B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;AAEjD,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC;aACrB,IAAI,CAAC,CAAC,CAAC;AACP,aAAA,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,UAAU,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;;;AAIjD,QAAA,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE;AACf,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC;SACrC;;;QAID,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC/C,QAAA,MAAM,iBAAiB,GAAG,gBAAgB,GAAG,GAAG,CAAC;AACjD,QAAA,IAAI,iBAAiB,GAAG,CAAC,EAAE;AACvB,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,iBAAiB,CAAC,CAAC;SACrD;;AAGD,QAAA,OAAO,IAAI,CAAC;KACf;IAEO,iBAAiB,CAAC,UAAkB,EAAE,UAAkB,EAAA;AAC5D,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;AACjC,aAAA,MAAM,CAAC,IAAI,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,UAAU,CAAC;AAC9C,aAAA,GAAG,CAAC,IAAI,KAAK,EAAC,IAAI,EAAE,MAAM,EAAE,UAAU,KAAK,IAAI,EAAC,CAAC,CAAC,CAAC;KAC3D;8GA/IQ,YAAY,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,EAJV,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA,EAAC,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,YAAY,CAAC,EAAE,KAAK,EAAE,IAAI,EAAC;AACzF,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3BL,m8CAuCA,EAAA,MAAA,EAAA,CAAA,oiCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,MAAA,EAAA,KAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDVa,YAAY,EAAA,UAAA,EAAA,CAAA;kBAhBxB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAGT,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACF,wBAAA,OAAO,EAAE,gBAAgB;AACzB,wBAAA,kBAAkB,EAAE,UAAU;qBACjC,EACO,MAAA,EAAA,CAAC,UAAU,CAAC,EAAA,aAAA,EACL,iBAAiB,CAAC,IAAI,EAChB,mBAAA,EAAA,KAAK,EACf,SAAA,EAAA;AACP,wBAAA,EAAC,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,kBAAkB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAC;AACzF,qBAAA,EAAA,QAAA,EAAA,m8CAAA,EAAA,MAAA,EAAA,CAAA,oiCAAA,CAAA,EAAA,CAAA;8BAKQ,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBAuCF,UAAU,EAAA,CAAA;sBADb,KAAK;gBAUF,UAAU,EAAA,CAAA;sBADb,KAAK;;;ME3DG,gBAAgB,CAAA;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAhB,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oBAAoB;AACjC,iBAAA,CAAA;;MAOY,aAAa,CAAA;8GAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAb,aAAa,EAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,iBAAiB;AAC9B,iBAAA,CAAA;;MAaY,OAAO,CAAA;AATpB,IAAA,WAAA,GAAA;;QAgBa,IAAU,CAAA,UAAA,GAAkB,IAAI,CAAC;QAEjC,IAAW,CAAA,WAAA,GAAa,EAAE,CAAC;QAC3B,IAAe,CAAA,eAAA,GAA0B,QAAQ,CAAC;QAClD,IAAM,CAAA,MAAA,GAA+B,IAAI,CAAC;QAC1C,IAAM,CAAA,MAAA,GAA+B,IAAI,CAAC;;QAG3C,IAAM,CAAA,MAAA,GAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;;QAY7C,IAAS,CAAA,SAAA,GAAG,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;QAC7E,IAAY,CAAA,YAAA,GAAG,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,CAAC;AASjC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC;;QAG3B,IAAY,CAAA,YAAA,GAAW,CAAC,CAAC;AAwJpC,KAAA;AA/KG,IAAA,IAAI,KAAK,GAAA;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;IAED,IACI,KAAK,CAAC,QAAkB,EAAA;AACxB,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;KAC9B;IAqBD,QAAQ,GAAA;QACJ,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,gBAAgB,EAAE,CAAC;KAC3B;IAED,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE,CAAC;KACrC;AAED,IAAA,IAAI,WAAW,GAAA;QACX,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;AAED,IAAA,IAAI,WAAW,GAAA;QACX,OAAO,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAc,CAAC;KAC9C;AAED,IAAA,IAAI,iBAAiB,GAAA;QACjB,OAAO,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,YAAY,CAAwB,CAAC;KAC9D;AAED,IAAA,IAAI,eAAe,GAAA;QACf,OAAO,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,UAAU,CAAwB,CAAC;KAC5D;IAED,OAAO,GAAA;AACH,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;KAChC;AAED,IAAA,cAAc,CAAC,MAAc,EAAA;AACzB,QAAA,IAAI,CAAC,YAAY,IAAI,MAAM,CAAC;KAC/B;AAEO,IAAA,WAAW,CAAC,QAAkB,EAAA;;AAElC,QAAA,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE;AACtB,YAAA,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;SAC9D;;AAGD,QAAA,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;;AAGvB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACZ,OAAO;SACV;;;QAID,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAClD,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;YAC7C,OAAO;SACV;;;QAID,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAClC,QAAA,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;KACxC;IAEO,WAAW,GAAA;;AAEf,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,SAAS,CAAC;YACtB,QAAQ,EAAE,IAAI,WAAW,CAAS,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACjD,YAAA,UAAU,EAAE,IAAI,WAAW,CAAS,CAAC,CAAC;AACtC,YAAA,IAAI,EAAE,IAAI,SAAS,CAAC,EAAE,CAAC;AAC1B,SAAA,CAAC,CAAC;KACN;IAEO,gBAAgB,GAAA;;AAEpB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,iBAAiB,EAAE,CAAC;QACvC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;AAEvC,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAClB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,EAAC,KAAK,EAAE,kBAAkB,EAAC,CAAC,CAAC,IAAI,CAC7C,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CACxC,CAAC;YACF,OAAO;SACV;;AAGD,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAClD,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,EACrC,GAAG,CAAC,MAAM,IAAG;AACT,YAAA,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC;AACjE,YAAA,IAAI,KAAK,IAAI,CAAC,EAAE;AACZ,gBAAA,OAAO,EAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAC,CAAC;aACnC;AAED,YAAA,OAAO,EAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAC,CAAC;AACtC,SAAC,CAAC,EACF,UAAU,CAAC,KAAK,IAAG;AACf,YAAA,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;AAE3B,YAAA,MAAM,UAAU,GAAG,KAAK,EAAE,MAAM,IAAI,IAAI,CAAC;AACzC,YAAA,MAAM,MAAM,GAAG;AACX,gBAAA,CAAC,EAAE,YAAY;AACf,gBAAA,GAAG,EAAE,oBAAoB;AACzB,gBAAA,GAAG,EAAE,iBAAiB;AACtB,gBAAA,GAAG,EAAE,iBAAiB;AACtB,gBAAA,GAAG,EAAE,cAAc;aACtB,CAAC;AAEF,YAAA,OAAO,EAAE,CAAC,EAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC,IAAI,eAAe,EAAE,UAAU,EAAE,UAAU,EAAC,CAAC,CAAC;SACvF,CAAC,CACL,CAAC;;QAGF,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC7B;IAEO,kBAAkB,GAAA;AACtB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACpC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAEtC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,KAAI;AAC5E,YAAA,MAAM,EAAC,UAAU,EAAE,QAAQ,EAAC,GAAG,IAAI,CAAC;YACpC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9B,iBAAA,GAAG,CAAC,IAAI,KAAK,EAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;AACjD,iBAAA,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AAE9D,YAAA,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;AAC5B,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;gBACvB,IAAI;gBACJ,KAAK;gBACL,QAAQ;gBACR,UAAU;gBACV,WAAW,EAAE,IAAI,CAAC,WAAW;AAChC,aAAA,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;KACN;IAEO,eAAe,GAAA;QACnB,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CACtC,YAAY,CAAC,GAAG,CAAC,EACjB,oBAAoB,EAAE,EACtB,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,KAAe,CAAC,CAC/C,CAAC;KACL;IAEO,cAAc,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAC9B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAe,CAAC,CACvC,CAAC;KACL;8GA9LQ,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAP,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAIF,aAAa,EAAS,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAW,uDAD9B,gBAAgB,EAAA,IAAA,EAAS,WAAW,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1CzD,mvNA0KA,EAAA,MAAA,EAAA,CAAA,6yFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,MAAA,EAAA,KAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDnIa,OAAO,EAAA,UAAA,EAAA,CAAA;kBATnB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,EAGd,IAAA,EAAA,EAAC,OAAO,EAAE,UAAU,EAAC,EAAA,eAAA,EACV,uBAAuB,CAAC,MAAM,EAChC,aAAA,EAAA,iBAAiB,CAAC,IAAI,uBAChB,KAAK,EAAA,QAAA,EAAA,mvNAAA,EAAA,MAAA,EAAA,CAAA,6yFAAA,CAAA,EAAA,CAAA;8BAK8B,oBAAoB,EAAA,CAAA;sBAA3E,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,gBAAgB,EAAE,EAAC,IAAI,EAAE,WAAW,EAAC,CAAA;gBACW,gBAAgB,EAAA,CAAA;sBAAhF,YAAY;uBAAC,aAAa,EAAE,EAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAC,CAAA;gBAGtD,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAUF,KAAK,EAAA,CAAA;sBADR,KAAK;;;MEjDG,WAAW,CAAA;8GAAX,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,gGCXxB,8CAEM,EAAA,MAAA,EAAA,CAAA,ycAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDSO,WAAW,EAAA,UAAA,EAAA,CAAA;kBATvB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAGR,eAAA,EAAA,uBAAuB,CAAC,MAAM,QACzC,EAAC,OAAO,EAAE,eAAe,EAAC,EACjB,aAAA,EAAA,iBAAiB,CAAC,IAAI,uBAChB,KAAK,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,ycAAA,CAAA,EAAA,CAAA;;;AEU9B,MAAM,qBAAqB,CAAA;AAC1B,CAAA;AAED,MAAM,0BAA0B,GACK,aAAa,CAAC,qBAAqB,CAAC,CAAC;AAepE,MAAO,iBAAkB,SAAQ,0BAA0B,CAAA;;IAU7D,IACI,IAAI,CAAC,KAA8B,EAAA;;QAEnC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YACvC,OAAO;SACV;;AAGD,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KACjC;AAED,IAAA,IAAI,IAAI,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;KAC9B;IAED,WAAwC,CAAA,MAAgB,EACL,KAAc,EAAA;AAC7D,QAAA,KAAK,EAAE,CAAC;QAF4B,IAAM,CAAA,MAAA,GAAN,MAAM,CAAU;QACL,IAAK,CAAA,KAAA,GAAL,KAAK,CAAS;;QAvBhD,IAAe,CAAA,eAAA,GAA8B,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QACrE,IAAQ,CAAA,QAAA,GAAG,IAAI,WAAW,CAA0B,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;AAsHtF,QAAA,IAAA,CAAA,UAAU,GAAG,CAAC,OAAe,KAAI;YACrC,OAAO,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACrD,SAAC,CAAC;KAhGD;IAED,QAAQ,GAAA;;QAEJ,IAAI,CAAC,MAAM,EAAE,cAAc,GAAG,CAAC,CAAC,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YAC7B,OAAO;SACV;;AAGD,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC/C,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,OAAO,IAAI,CAAC,UAAU,CAAC,CAAA,6BAAA,EAAgC,IAAI,CAAC,KAAK,CAA2D,yDAAA,CAAA,CAAC,CAAC;SACjI;;AAGD,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;;QAG/D,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAChD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAe,CAAC,CAC3C,CAAC;KACL;IAED,WAAW,GAAA;QACP,IAAI,CAAC,MAAM,EAAE,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC;;QAElC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YAC7B,OAAO;SACV;;AAGD,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAChD,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACvD;KACJ;AAED,IAAA,IAAI,UAAU,GAAA;QACV,OAAO,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;KACvC;IAGD,OAAO,GAAA;;AAEH,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,OAAO;SACV;;;QAID,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACnF,QAAA,MAAM,QAAQ,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;QAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;;AAG/C,QAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;KACjD;AAEO,IAAA,wBAAwB,CAAC,KAA8B,EAAA;;QAE3D,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YACvC,OAAO;SACV;;AAGD,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACd,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SACxC;;QAGD,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,KAAK,QAAQ,EAAE;AAC1C,YAAA,OAAO,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC;SAClD;;;QAID,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KACxC;AAEO,IAAA,2BAA2B,CAAC,KAAa,EAAA;;AAE7C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;;;AAIxC,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,OAAO,KAAI;AACxE,YAAA,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,KAAK,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;AAC5D,YAAA,OAAO,QAAQ,CAAC;SACnB,EAAE,EAAE,CAAC,CAAC;;QAGP,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;KAClD;AAxHQ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,kEA0BS,MAAM,EAAA,SAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AA1BhC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,0QCtC9B,yYAWA,EAAA,MAAA,EAAA,CAAA,kxDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FD2Ba,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAb7B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EAGf,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACF,wBAAA,OAAO,EAAE,sBAAsB;AAC/B,wBAAA,kBAAkB,EAAE,YAAY;qBACnC,EACO,MAAA,EAAA,CAAC,UAAU,CAAC,EAAA,aAAA,EACL,iBAAiB,CAAC,IAAI,uBAChB,KAAK,EAAA,QAAA,EAAA,yYAAA,EAAA,MAAA,EAAA,CAAA,kxDAAA,CAAA,EAAA,CAAA;;0BA2Bb,QAAQ;;0BAAI,IAAI;;0BAChB,QAAQ;;0BAAI,SAAS;2BAAC,MAAM,CAAA;yCAfrC,IAAI,EAAA,CAAA;sBADP,KAAK;gBA4DN,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,OAAO,CAAA;;;AEjGzB,MAAM,oBAAoB,GAAG;IACzB,OAAO;IACP,gBAAgB;IAChB,aAAa;IACb,iBAAiB;IACjB,WAAW;IACX,YAAY;CACf,CAAC;MAOW,WAAW,CAAA;8GAAX,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,iBAbpB,OAAO;YACP,gBAAgB;YAChB,aAAa;YACb,iBAAiB;YACjB,WAAW;YACX,YAAY,CAAA,EAAA,OAAA,EAAA,CAIF,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,cAAc,CAAA,EAAA,OAAA,EAAA,CAT3E,OAAO;YACP,gBAAgB;YAChB,aAAa;YACb,iBAAiB;YACjB,WAAW;YACX,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;AAQH,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,YAJV,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,cAAc,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAIlE,WAAW,EAAA,UAAA,EAAA,CAAA;kBALvB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,OAAO,EAAE,CAAC,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,cAAc,CAAC;AAC5E,oBAAA,YAAY,EAAE,CAAC,GAAG,oBAAoB,CAAC;AACvC,oBAAA,OAAO,EAAE,CAAC,GAAG,oBAAoB,CAAC;AACrC,iBAAA,CAAA;;;ACvBD;;AAEG;;;;"}
1
+ {"version":3,"file":"bravobit-bb-foundation-table.mjs","sources":["../../../projects/bb-foundation/table/src/lib/data/datasource.data.ts","../../../projects/bb-foundation/table/src/lib/data/generic.data.ts","../../../projects/bb-foundation/table/src/lib/components/table-pager/table-pager.component.ts","../../../projects/bb-foundation/table/src/lib/components/table-pager/table-pager.component.html","../../../projects/bb-foundation/table/src/lib/components/table/table.component.ts","../../../projects/bb-foundation/table/src/lib/components/table/table.component.html","../../../projects/bb-foundation/table/src/lib/components/table-cell/table-cell.component.ts","../../../projects/bb-foundation/table/src/lib/components/table-cell/table-cell.component.html","../../../projects/bb-foundation/table/src/lib/components/table-header-cell/table-header-cell.component.ts","../../../projects/bb-foundation/table/src/lib/components/table-header-cell/table-header-cell.component.html","../../../projects/bb-foundation/table/src/lib/table.module.ts","../../../projects/bb-foundation/table/src/bravobit-bb-foundation-table.ts"],"sourcesContent":["import {DataSourcePageRequest, DataSourcePageResponse} from '../interfaces/datasource.interface';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport {filter} from 'rxjs/operators';\n\nexport class DataSourceRequest {\n\n // Data.\n private _request$ = new BehaviorSubject<DataSourcePageRequest | null>(null);\n private _loading$ = new BehaviorSubject<boolean>(true);\n\n get loading() {\n return this._loading$.asObservable();\n }\n\n get when() {\n return this._request$.pipe(\n filter(data => !!data)\n );\n }\n\n startLoading() {\n this._loading$.next(true);\n }\n\n stopLoading() {\n this._loading$.next(false);\n }\n\n update(params: Partial<DataSourcePageRequest> = {}) {\n const currentValue = this._request$.getValue();\n\n // Set the page number to 1 if the query or page size was changed.\n if (currentValue && params && (currentValue?.query !== params?.query || currentValue?.pageSize !== params?.pageSize)) {\n params.pageNumber = 1;\n }\n\n this._request$.next({...currentValue, ...params});\n }\n\n}\n\nexport abstract class DataSource<T = any> {\n\n abstract handle(request: DataSourceRequest): Observable<DataSourcePageResponse<T>>;\n\n}\n","import {DataSourcePageRequest} from '../interfaces/datasource.interface';\nimport {BehaviorSubject, combineLatest, Observable, of} from 'rxjs';\nimport {DataSource, DataSourceRequest} from './datasource.data';\nimport {map, share, switchMap, tap} from 'rxjs/operators';\nimport {HttpClient} from '@angular/common/http';\n\nexport class GenericDataSource<T = any> extends DataSource<T> {\n\n private readonly _httpClient: HttpClient;\n private readonly _endpoint$: Observable<string>;\n\n // Data.\n private _items$ = new BehaviorSubject<Observable<{ [key: string]: string } | null>[]>([]);\n private _fn: (data: T[]) => T[] = data => data;\n private _rawFn: ((data: unknown) => void) | null = null;\n\n constructor(httpClient: HttpClient,\n endpoint: Observable<string> | string) {\n super();\n\n this._httpClient = httpClient;\n this._endpoint$ = typeof endpoint === 'string'\n ? of<string>(endpoint)\n : endpoint;\n\n }\n\n append(item: Observable<{ [key: string]: string } | null>) {\n const currentValue = this._items$.getValue();\n const newValue = [...currentValue, item];\n this._items$.next(newValue);\n\n return this;\n }\n\n data(fn: (data: T[]) => T[]) {\n this._fn = fn;\n return this;\n }\n\n raw(fn: (data: unknown) => void) {\n this._rawFn = fn;\n return this;\n }\n\n handle(request: DataSourceRequest) {\n const extraParams$ = this._items$.pipe(\n switchMap(items => items?.length <= 0 ? of([]) : combineLatest(items)),\n map(items => items.reduce((previous, current) => ({...previous, ...(current ?? {})}), {}))\n );\n\n return combineLatest([request.when, this._endpoint$, extraParams$]).pipe(\n switchMap(([params, endpoint, extraParams]) => {\n // Start the loading.\n request.startLoading();\n\n const formattedParams = this.formatParams(params);\n const combinedParams = {...formattedParams, ...extraParams};\n\n return this._httpClient.get(endpoint, {\n params: combinedParams\n }).pipe(\n tap(data => {\n if (!this._rawFn) {\n return;\n }\n this._rawFn(data);\n }),\n map(data => this.formatResponse(data)),\n map(result => ({\n ...result,\n data: this._fn(result?.data ?? [])\n }))\n );\n }),\n share()\n );\n }\n\n private formatResponse = <T = any>(data: unknown) => {\n return {\n pageSize: data?.['page_size'] as number,\n pageNumber: data?.['page_number'] as number,\n totalPages: data?.['total_pages'] as number,\n totalEntries: data?.['total_entries'] as number,\n data: data?.['data'] as T[]\n };\n };\n\n private formatParams = (data: Partial<DataSourcePageRequest>) => {\n const params = {};\n\n params['page'] = `${data?.pageNumber ?? 1}`;\n params['page_size'] = `${data?.pageSize ?? 25}`;\n\n const sort = (data?.sort ?? [])\n .map(({name}) => name)\n .filter(name => !!name)\n .join(',');\n\n const sortDirection = (data?.sort ?? [])\n .map(({direction}) => direction)\n .filter(direction => !!direction)\n .join(',');\n\n if (sort?.length > 0 && sortDirection?.length > 0) {\n params['sort'] = sort;\n params['sort_direction'] = sortDirection;\n }\n\n if (data?.query && data?.query?.length > 0 && data?.queryFields && data?.queryFields?.length > 0) {\n params['query'] = data?.query;\n params['query_fields'] = data?.queryFields?.join(',');\n }\n\n return params;\n };\n\n}\n","import {booleanAttribute, ChangeDetectionStrategy, Component, forwardRef, Input, OnInit, ViewEncapsulation} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {BehaviorSubject, combineLatest, Observable} from 'rxjs';\nimport {BbIcon} from '@bravobit/bb-foundation/elements';\nimport {map, share} from 'rxjs/operators';\nimport {AsyncPipe} from '@angular/common';\n\n@Component({\n selector: 'bb-table-pager',\n templateUrl: './table-pager.component.html',\n styleUrls: ['./table-pager.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'bb-table-pager',\n '[class.disabled]': 'disabled'\n },\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n providers: [\n {provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BbTablePager), multi: true}\n ],\n standalone: true,\n imports: [AsyncPipe, BbIcon]\n})\nexport class BbTablePager implements OnInit, ControlValueAccessor {\n\n // Inputs.\n @Input() amountOfButtons: number = 5;\n @Input() showArrowButtons: boolean = true;\n @Input({transform: booleanAttribute}) disabled: boolean = false;\n\n // Observables.\n isPreviousDisabled$: Observable<boolean>;\n isNextDisabled$: Observable<boolean>;\n list$: Observable<{ page: number, active: boolean }[]>;\n\n // Methods.\n onChange: (newValue: number) => void = () => ({});\n onTouched: () => void = () => ({});\n\n // Data.\n private _totalPages$: BehaviorSubject<number> = new BehaviorSubject<number>(1);\n private _pageNumber$: BehaviorSubject<number> = new BehaviorSubject<number>(1);\n\n ngOnInit() {\n // Validate the previous button is disabled.\n this.isPreviousDisabled$ = this._pageNumber$.pipe(\n map(pageNumber => pageNumber === 1)\n );\n\n // Validate the next button is disabled.\n this.isNextDisabled$ = combineLatest([this._pageNumber$, this._totalPages$]).pipe(\n map(([pageNumber, totalPages]) => pageNumber === totalPages)\n );\n\n // Create the list with page numbers.\n this.list$ = combineLatest([this._pageNumber$, this._totalPages$]).pipe(\n map(([pageNumber, totalPages]) => this.filterActivePages(pageNumber, totalPages)),\n share()\n );\n }\n\n get pageNumber() {\n return this._pageNumber$.getValue();\n }\n\n @Input()\n set pageNumber(newValue: number) {\n this.update(newValue);\n }\n\n get totalPages() {\n return this._totalPages$.getValue();\n }\n\n @Input()\n set totalPages(newValue: number) {\n const newTotalPages = Math.max(1, newValue);\n this._totalPages$.next(newTotalPages);\n }\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n writeValue(newValue: number) {\n this.update(newValue, false);\n }\n\n goToPrevious() {\n const newValue = this._pageNumber$.getValue() - 1;\n return this.update(newValue);\n }\n\n goToNext() {\n const newValue = this._pageNumber$.getValue() + 1;\n return this.update(newValue);\n }\n\n goToIndex(index: number) {\n return this.update(index);\n }\n\n private update(pageNumber: number, notify: boolean = true) {\n // You can only update when not disabled.\n if (this.disabled) {\n return;\n }\n\n // Calculate the new value.\n const newValue = Math.min(\n this.totalPages,\n Math.max(1, pageNumber)\n );\n\n // Don't do anything if the page number is the same.\n if (this._pageNumber$.getValue() === newValue) {\n return;\n }\n\n // Push the new value.\n this._pageNumber$.next(newValue);\n\n if (notify) {\n return this.onChange(pageNumber);\n }\n }\n\n private calculatePages(pageNumber: number) {\n const min = 1;\n const max = this.totalPages;\n const amount = Math.max(1, this.amountOfButtons);\n\n const data = Array(amount)\n .fill(0)\n .map((_, index) => pageNumber + (index - 1));\n\n // Validate if the minimum value less than\n // the first value.\n if (data[0] < min) {\n return data.map(item => item + 1);\n }\n\n // Calculate the difference with the max\n // if this value is higher than 0 we should minus it.\n const lastValueInArray = data[data.length - 1];\n const differenceWithMax = lastValueInArray - max;\n if (differenceWithMax > 0) {\n return data.map(item => item - differenceWithMax);\n }\n\n // Just return the default data.\n return data;\n }\n\n private filterActivePages(pageNumber: number, totalPages: number) {\n return this.calculatePages(pageNumber)\n .filter(page => page > 0 && page <= totalPages)\n .map(page => ({page, active: pageNumber === page}));\n }\n\n}\n","<ul class=\"bb-pager-list\">\n <!-- The previous page arrow button. -->\n @if (showArrowButtons) {\n <li class=\"bb-pager-list-item\"\n title=\"Previous page\">\n <button [disabled]=\"isPreviousDisabled$ | async\"\n (click)=\"goToPrevious()\"\n class=\"bb-pager-list-button\"\n type=\"button\">\n <bb-icon src=\"material:keyboard_arrow_left\"></bb-icon>\n </button>\n </li>\n }\n\n <!-- The list of number buttons to navigate through the list. -->\n @if (list$ | async; as list) {\n @for (item of list; track $index) {\n <li [title]=\"'Page ' + item?.page\"\n class=\"bb-pager-list-item\">\n <button (click)=\"goToIndex(item?.page)\"\n [class.active]=\"item?.active\"\n class=\"bb-pager-list-button\"\n type=\"button\">\n {{ item?.page }}\n </button>\n </li>\n }\n }\n\n <!-- The next page arrow button. -->\n @if (showArrowButtons) {\n <li class=\"bb-pager-list-item\"\n title=\"Next page\">\n <button [disabled]=\"isNextDisabled$ | async\"\n (click)=\"goToNext()\"\n class=\"bb-pager-list-button\"\n type=\"button\">\n <bb-icon src=\"material:keyboard_arrow_right\"></bb-icon>\n </button>\n </li>\n }\n</ul>\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n Directive,\n Input,\n OnDestroy,\n OnInit,\n QueryList,\n TemplateRef,\n ViewEncapsulation\n} from '@angular/core';\nimport {catchError, debounceTime, distinctUntilChanged, map, startWith, tap} from 'rxjs/operators';\nimport {BbFormControl, BbIcon, BbInput, BbSuffix} from '@bravobit/bb-foundation/elements';\nimport {DataSourcePageResponse} from '../../interfaces/datasource.interface';\nimport {FormControl, FormGroup, ReactiveFormsModule} from '@angular/forms';\nimport {DataSource, DataSourceRequest} from '../../data/datasource.data';\nimport {BbTablePager} from '../table-pager/table-pager.component';\nimport {combineLatest, Observable, of, Subscription} from 'rxjs';\nimport {AsyncPipe, NgTemplateOutlet} from '@angular/common';\nimport {BbLocalize} from '@bravobit/bb-foundation/localize';\n\n@Directive({\n selector: '[bbTableColumnDef]',\n standalone: true\n})\nexport class BbTableColumnDef {\n}\n\n@Directive({\n selector: '[bbTableRowDef]',\n standalone: true\n})\nexport class BbTableRowDef {\n}\n\n@Component({\n selector: 'bb-table',\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.scss'],\n host: {'class': 'bb-table'},\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n standalone: true,\n imports: [NgTemplateOutlet, AsyncPipe, BbLocalize, BbFormControl, BbInput, BbIcon, ReactiveFormsModule, BbSuffix, BbTablePager, BbLocalize]\n})\nexport class BbTable implements OnInit, OnDestroy {\n\n // Content.\n @ContentChildren(BbTableColumnDef, {read: TemplateRef}) tableColumnTemplates: QueryList<TemplateRef<any>>;\n @ContentChild(BbTableRowDef, {read: TemplateRef, static: false}) tableRowTemplate?: TemplateRef<any>;\n\n // Inputs.\n @Input() identifier: string | null = null;\n @Input() dataSource: DataSource;\n @Input() queryFields: string[] = [];\n @Input() sortingStrategy: 'single' | 'multiple' = 'single';\n @Input() header: TemplateRef<any> | boolean = true;\n @Input() footer: TemplateRef<any> | boolean = true;\n\n // Sizes.\n private _sizes: number[] = [25, 50, 75, 100];\n\n get sizes() {\n return this._sizes;\n }\n\n @Input()\n set sizes(newValue: number[]) {\n this.updateSizes(newValue);\n }\n\n // Data.\n request: DataSourceRequest;\n data$: Observable<{ state: string, statusCode?: number, result?: DataSourcePageResponse }>;\n isLoading$: Observable<boolean>;\n\n // Form.\n form: FormGroup;\n queryControl = new FormControl('');\n\n // State.\n private _headerCount: number = 0;\n\n // Subscriptions.\n private _subscription: Subscription;\n\n ngOnInit() {\n this.composeForm();\n this.watchDataChanges();\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n get headerCount() {\n return this._headerCount;\n }\n\n get sortControl() {\n return this.form?.get('sort') as FormGroup;\n }\n\n get pageNumberControl() {\n return this.form?.get('pageNumber') as FormControl<number>;\n }\n\n get pageSizeControl() {\n return this.form?.get('pageSize') as FormControl<number>;\n }\n\n refresh() {\n return this.request.update();\n }\n\n setHeaderCount(amount: -1 | 1) {\n this._headerCount += amount;\n }\n\n private updateSizes(newValue: number[]) {\n // Validate the sizes has at least one value.\n if (newValue.length <= 0) {\n throw new Error('Cannot set an empty array as the sizes.');\n }\n\n // Set the new size.\n this._sizes = newValue;\n\n // Validate that the form exists already.\n if (!this.form) {\n return;\n }\n\n // Check if the current selected value is\n // in the new sizes array.\n const pageSizeControl = this.form.get('pageSize');\n if (this._sizes.includes(pageSizeControl.value)) {\n return;\n }\n\n // Set the first value in the array as\n // the new value.\n const firstValue = this._sizes[0];\n pageSizeControl.setValue(firstValue);\n }\n\n private composeForm() {\n // Setup the form.\n this.form = new FormGroup({\n pageSize: new FormControl<number>(this._sizes[0]),\n pageNumber: new FormControl<number>(1),\n sort: new FormGroup({})\n });\n }\n\n private watchDataChanges() {\n // Create a new request.\n this.request = new DataSourceRequest();\n this.isLoading$ = this.request.loading;\n\n if (!this.dataSource) {\n this.data$ = of({state: 'error_datasource'}).pipe(\n tap(() => this.request.stopLoading())\n );\n return;\n }\n\n // Pass the request to the data source.\n this.data$ = this.dataSource.handle(this.request).pipe(\n tap(() => this.request.stopLoading()),\n map(result => {\n const count = (result && result.data && result.data.length) || 0;\n if (count <= 0) {\n return {state: 'empty', result};\n }\n\n return {state: 'success', result};\n }),\n catchError(error => {\n this.request.stopLoading();\n\n const statusCode = error?.status ?? null;\n const states = {\n 0: 'error_down',\n 401: 'error_unauthorized',\n 403: 'error_forbidden',\n 404: 'error_not_found',\n 500: 'error_server'\n };\n\n return of({state: states?.[statusCode] ?? 'error_unknown', statusCode: statusCode});\n })\n );\n\n // Subscribe to the data changes.\n this.subscribeToChanges();\n }\n\n private subscribeToChanges() {\n const form$ = this.getFormChanges();\n const query$ = this.getQueryChanges();\n\n this._subscription = combineLatest([form$, query$]).subscribe(([form, query]) => {\n const {pageNumber, pageSize} = form;\n const sort = Object.keys(form.sort)\n .map(name => ({name, direction: form.sort[name]}))\n .filter(item => ['asc', 'desc'].includes(item.direction));\n\n this.request.startLoading();\n return this.request.update({\n sort,\n query,\n pageSize,\n pageNumber,\n queryFields: this.queryFields\n });\n });\n }\n\n private getQueryChanges() {\n return this.queryControl.valueChanges.pipe(\n debounceTime(400),\n distinctUntilChanged(),\n startWith(this.queryControl.value as string)\n );\n }\n\n private getFormChanges() {\n return this.form.valueChanges.pipe(\n startWith(this.form.value as object)\n );\n }\n\n}\n","<!--\n This is the header of the table. It can be a user\n defined custom header or just the default header.\n-->\n\n@if ((header === true ? headerTemplate : header); as template) {\n <header class=\"bb-table-top-actions\">\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n </header>\n}\n\n<!--\n This is the table that contains the\n rows and columns.\n-->\n\n<div class=\"bb-table-wrapper\">\n @if (isLoading$ | async) {\n <div class=\"bb-table-progress\">\n <div class=\"bb-table-indeterminate\"></div>\n </div>\n }\n <table class=\"bb-table-container\">\n <thead>\n <tr>\n <ng-content select=\"bb-table-header-cell\"></ng-content>\n </tr>\n </thead>\n <tbody>\n @if (data$ | async; as data) {\n @switch (data?.state) {\n @case ('success') {\n @if (!!tableRowTemplate) {\n <ng-container\n *ngTemplateOutlet=\"tableRowTemplate; context: {data: data?.result?.data ?? []}\"></ng-container>\n } @else {\n @for (item of data?.result?.data; track (identifier ? item[identifier] : $index)) {\n <tr>\n @for (template of tableColumnTemplates; track $index) {\n <ng-container\n *ngTemplateOutlet=\"template; context: {item: item}\"></ng-container>\n }\n </tr>\n }\n }\n }\n @case ('empty') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @case ('error_datasource') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @case ('error_not_found') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @case ('error_server') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @case ('error_down') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @default {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n }\n\n } @else {\n <tr>\n <td [attr.colspan]=\"headerCount\"\n class=\"bb-table-template\">\n <div class=\"bb-table-template-content\">\n {{ 'tables.loading' | bbLocalize }}\n </div>\n </td>\n </tr>\n }\n </tbody>\n </table>\n</div>\n\n@if ((footer === true ? footerTemplate : footer); as template) {\n <footer class=\"bb-table-bottom-actions\">\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n </footer>\n}\n\n<!--\n This is the template that will be used when the user has not\n supplied a custom header template.\n-->\n\n<ng-template #headerTemplate>\n <ng-content></ng-content>\n <bb-form-control>\n <input [formControl]=\"queryControl\"\n [placeholder]=\"'tables.search' | bbLocalize\"\n bbInput\n autocomplete=\"off\">\n @if (queryControl?.value?.length <= 0) {\n <bb-icon bbSuffix\n src=\"material:search\">\n </bb-icon>\n } @else {\n <button (click)=\"queryControl?.patchValue('')\"\n bbSuffix\n type=\"button\"\n class=\"bb-table-progress-close-query\">\n <bb-icon src=\"material:close\"></bb-icon>\n </button>\n }\n </bb-form-control>\n</ng-template>\n\n<!--\n This is the template that will be used when the user has not\n supplied a custom footer template.\n-->\n\n<ng-template #footerTemplate>\n @if (sizes?.length > 1) {\n <bb-form-control>\n <select [formControl]=\"pageSizeControl\"\n bbInput\n title=\"Sizes\">\n @for (item of sizes; track item) {\n <option [ngValue]=\"item\">\n {{ item }} / {{ 'tables.page' | bbLocalize }}\n </option>\n }\n </select>\n </bb-form-control>\n }\n\n <bb-table-pager [totalPages]=\"(data$ | async)?.result?.totalPages\"\n [formControl]=\"pageNumberControl\">\n </bb-table-pager>\n</ng-template>\n\n<ng-template #errorTemplate\n let-state=\"state\"\n let-status=\"statusCode\">\n <tr>\n <td [attr.colspan]=\"headerCount\"\n class=\"bb-table-template\">\n <div class=\"bb-table-template-content\">\n <svg xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 64 41\"\n width=\"4rem\"\n height=\"2.5625rem\">\n <g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(0 1)\">\n <ellipse cx=\"32\" cy=\"33\" fill=\"#F5F5F5\" rx=\"32\" ry=\"7\"></ellipse>\n <g fill-rule=\"nonzero\" stroke=\"#D9D9D9\">\n <path\n d=\"M55 12.7605604L44.8543047 1.25739633C44.3674414.47382661 43.6558789 0 42.9067617 0H21.0932383c-.7491172 0-1.4606797.47395025-1.947543 1.25739633L9 12.7605604V22h46v-9.2394396z\"></path>\n <path fill=\"#FAFAFA\"\n d=\"M41.6132813 15.9315c0-1.6056489.9936718-2.931266 2.2264179-2.9315H55v18.1371277C55 33.2589574 53.6793867 35 52.0504297 35H11.94957031C10.32052344 35 9 33.2588404 9 31.1371277V13h11.1603008c1.2327461 0 2.226418 1.3228085 2.226418 2.9284574v.0211809c0 1.6056489 1.0049921 2.9015426 2.2377382 2.9015426h14.751086c1.2327461 0 2.2377383-1.3078298 2.2377383-2.9134788V15.9315z\"></path>\n </g>\n </g>\n </svg>\n @if (state; as stateLabel) {\n <span>{{ ('tables.' + stateLabel) | bbLocalize }}</span>\n }\n @if (status; as statusCode) {\n <span class=\"bb-table-template-content-code\">(HTTP {{ statusCode }})</span>\n }\n </div>\n </td>\n </tr>\n</ng-template>\n","import {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\n\n@Component({\n selector: 'bb-table-cell',\n templateUrl: './table-cell.component.html',\n styleUrls: ['./table-cell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {'class': 'bb-table-cell'},\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n standalone: true\n})\nexport class BbTableCell {\n}\n","<div>\n <ng-content></ng-content>\n</div>","import {Attribute, booleanAttribute, ChangeDetectionStrategy, Component, Host, HostListener, Input, OnDestroy, OnInit, Optional, ViewEncapsulation} from '@angular/core';\nimport {TableColumnSortStrategy} from '../../interfaces/table.interfaces';\nimport {BbTable} from '../table/table.component';\nimport {FormControl} from '@angular/forms';\nimport {AsyncPipe} from '@angular/common';\nimport {startWith} from 'rxjs/operators';\nimport {Observable} from 'rxjs';\n\n@Component({\n selector: 'bb-table-header-cell',\n templateUrl: './table-header-cell.component.html',\n styleUrls: ['./table-header-cell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'bb-table-header-cell',\n '[class.disabled]': 'isDisabled'\n },\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n standalone: true,\n imports: [AsyncPipe]\n})\nexport class BbTableHeaderCell implements OnInit, OnDestroy {\n\n // Constants.\n private readonly _sortDirections: TableColumnSortStrategy[] = ['none', 'asc', 'desc'];\n private readonly _control = new FormControl<TableColumnSortStrategy>(this._sortDirections[0]);\n\n // Inputs.\n @Input({transform: booleanAttribute}) disabled: boolean = false;\n\n // Data.\n valueChanges$: Observable<string>;\n\n // Sort.\n @Input()\n set sort(value: TableColumnSortStrategy) {\n // Check if the new value is a valid value.\n if (!this._sortDirections.includes(value)) {\n return;\n }\n\n // Set the value.\n this._control.setValue(value);\n }\n\n get sort() {\n return this._control.value;\n }\n\n constructor(@Optional() @Host() private _table?: BbTable,\n @Optional() @Attribute('name') private _name?: string) {\n }\n\n ngOnInit() {\n // Validate that the name and table are set.\n this._table?.setHeaderCount?.(1);\n if (!this._table || !this._name) {\n return;\n }\n\n // Check if the control already exists in the table.\n if (this._table.sortControl?.contains(this._name)) {\n this.disabled = true;\n return this.logWarning(`BbTableHeaderCell: The name \"${this._name}\" is not unique in the table; Control was not registered.`);\n }\n\n // Register the header cell with the table.\n this._table.sortControl?.addControl(this._name, this._control);\n\n // Get all the value changes.\n this.valueChanges$ = this._control.valueChanges.pipe(\n startWith(this._control.value as string)\n );\n }\n\n ngOnDestroy() {\n this._table?.setHeaderCount?.(-1);\n // Validate that the name and table are set.\n if (!this._table || !this._name) {\n return;\n }\n\n // Un-register the header cell with the table.\n if (this._table?.sortControl?.contains(this._name)) {\n this._table?.sortControl?.removeControl(this._name);\n }\n }\n\n get isDisabled() {\n return this.disabled || !this._name;\n }\n\n @HostListener('click')\n onClick() {\n // Check if the header cell is disabled.\n if (this.isDisabled) {\n return;\n }\n\n // Find the index of the current sort and\n // create the new index.\n const index = this._sortDirections.findIndex(item => item === this._control.value);\n const newIndex = (index + 1) % this._sortDirections.length;\n const newSort = this._sortDirections[newIndex];\n\n // Set the new sort.\n return this.updateTableAndHeaderCell(newSort);\n }\n\n private updateTableAndHeaderCell(value: TableColumnSortStrategy) {\n // Check if the new value is a valid value.\n if (!this._sortDirections.includes(value)) {\n return;\n }\n\n // Validate the table exists.\n if (!this._table) {\n return this._control.setValue(value);\n }\n\n // Handle the single sorting strategy.\n if (this._table.sortingStrategy === 'single') {\n return this.handleSingleSortingStrategy(value);\n }\n\n // Default case when no other strategy\n // is used.\n return this._control.setValue(value);\n }\n\n private handleSingleSortingStrategy(value: string) {\n // Get the sort control.\n const control = this._table.sortControl;\n\n // Set each value to false since we only want to\n // sort on one property at a time with this strategy.\n const newValue = Object.keys(control.controls).reduce((previous, current) => {\n previous[current] = current === this._name ? value : 'none';\n return previous;\n }, {});\n\n // Patch the entire sort value.\n this._table?.sortControl?.patchValue(newValue);\n }\n\n private logWarning = (message: string) => {\n console && console.warn && console.warn(message);\n };\n\n}\n","<!-- The content. -->\n<ng-content></ng-content>\n\n<!-- The indicator for the sort direction. -->\n@if (valueChanges$ | async; as value) {\n @if (!isDisabled) {\n <button [class.asc]=\"value === 'asc'\"\n [class.desc]=\"value === 'desc'\"\n class=\"bb-table-header-cell-toggle\"\n type=\"button\"></button>\n }\n}\n","import {BbTableHeaderCell} from './components/table-header-cell/table-header-cell.component';\nimport {BbTable, BbTableColumnDef, BbTableRowDef} from './components/table/table.component';\nimport {BbTablePager} from './components/table-pager/table-pager.component';\nimport {BbTableCell} from './components/table-cell/table-cell.component';\nimport {NgModule} from '@angular/core';\n\n@NgModule({\n imports: [\n BbTable,\n BbTableColumnDef,\n BbTableRowDef,\n BbTableHeaderCell,\n BbTableCell,\n BbTablePager\n ],\n exports: [\n BbTable,\n BbTableColumnDef,\n BbTableRowDef,\n BbTableHeaderCell,\n BbTableCell,\n BbTablePager\n ]\n})\nexport class TableModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -1,63 +1,43 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, HostBinding, Injector, Directive, Input, HostListener, NgModule } from '@angular/core';
3
- import * as i1 from '@bravobit/bb-foundation/utils';
4
- import { UtilsModule } from '@bravobit/bb-foundation/utils';
5
- import { coerceBooleanProperty } from '@angular/cdk/coercion';
2
+ import { InjectionToken, inject, Component, ChangeDetectionStrategy, ViewEncapsulation, HostBinding, ViewContainerRef, ElementRef, Injector, booleanAttribute, Directive, Input, HostListener, NgModule } from '@angular/core';
3
+ import { BbTemplate } from '@bravobit/bb-foundation/utils';
4
+ import { Overlay } from '@angular/cdk/overlay';
6
5
  import { ComponentPortal } from '@angular/cdk/portal';
7
- import * as i1$1 from '@angular/cdk/overlay';
8
- import { OverlayModule } from '@angular/cdk/overlay';
9
6
 
10
7
  const TOOLTIP_DATA = new InjectionToken('Data to display in tooltip');
11
8
  const TOOLTIP_CLASS = new InjectionToken('Class to display in tooltip');
12
9
 
13
10
  class TooltipContainerComponent {
14
- constructor(data, classes) {
15
- this.data = data;
16
- this.classes = classes;
11
+ constructor() {
12
+ this.data = inject(TOOLTIP_DATA);
13
+ this.classes = inject(TOOLTIP_CLASS);
17
14
  }
18
15
  get classBinding() {
19
16
  return [this.classes]
20
17
  .filter(item => !!item)
21
18
  .join(' ');
22
19
  }
23
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: TooltipContainerComponent, deps: [{ token: TOOLTIP_DATA }, { token: TOOLTIP_CLASS }], target: i0.ɵɵFactoryTarget.Component }); }
24
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: TooltipContainerComponent, selector: "bb-tooltip-container", host: { properties: { "class": "this.classBinding" }, classAttribute: "bb-tooltip-container" }, ngImport: i0, template: "<ng-template [bbTemplate]=\"data\">\n {{ data }}\n</ng-template>\n", styles: [".bb-tooltip-container{color:#fff;display:block;font-size:14px;max-width:400px;padding:8px 10px;-webkit-user-select:none;user-select:none;position:relative;border-radius:4px;pointer-events:none;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background-color:#111111e6}.bb-tooltip-container:after{width:0;height:0;content:\"\";display:block;position:absolute;border-style:solid;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}.bb-tooltip-container>small{display:block;font-size:12px;margin-top:4px;color:#fff6}.bb-tooltip-container-bottom,.bb-tooltip-container-top,.bb-tooltip-container-left,.bb-tooltip-container-right{pointer-events:none}.bb-tooltip-container-top .bb-tooltip-container:after{left:50%;top:100%;transform:translate(-50%);border-width:6px 6px 0 6px;border-color:rgba(17,17,17,.9) transparent transparent transparent}.bb-tooltip-container-bottom .bb-tooltip-container:after{left:50%;bottom:100%;transform:translate(-50%);border-width:0 6px 6px 6px;border-color:transparent transparent rgba(17,17,17,.9) transparent}.bb-tooltip-container-left .bb-tooltip-container:after{top:50%;left:100%;transform:translateY(-50%);border-width:6px 0 6px 6px;border-color:transparent transparent transparent rgba(17,17,17,.9)}.bb-tooltip-container-right .bb-tooltip-container:after{top:50%;right:100%;transform:translateY(-50%);border-width:6px 6px 6px 0;border-color:transparent rgba(17,17,17,.9) transparent transparent}\n"], dependencies: [{ kind: "directive", type: i1.BbTemplate, selector: "[bbTemplate]", inputs: ["bbTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
20
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: TooltipContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
21
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.5", type: TooltipContainerComponent, isStandalone: true, selector: "bb-tooltip-container", host: { properties: { "class": "this.classBinding" }, classAttribute: "bb-tooltip-container" }, ngImport: i0, template: "<ng-template [bbTemplate]=\"data\">{{ data }}</ng-template>\n", styles: [".bb-tooltip-container{color:#fff;display:block;max-width:25rem;line-height:1.5;-webkit-user-select:none;user-select:none;position:relative;font-size:.875rem;pointer-events:none;border-radius:.5rem;padding:.5rem .75rem;background-color:#111}.bb-tooltip-container:after{width:0;height:0;content:\"\";display:block;position:absolute;border-style:solid}.bb-tooltip-container>small{display:block;font-size:.75rem;margin-top:.25rem;color:#fff6}.bb-tooltip-container-bottom,.bb-tooltip-container-top,.bb-tooltip-container-left,.bb-tooltip-container-right{pointer-events:none}.bb-tooltip-container-top .bb-tooltip-container:after{left:50%;top:100%;transform:translate(-50%);border-width:.5rem .5rem 0 .5rem;border-color:#111111 transparent transparent transparent}.bb-tooltip-container-bottom .bb-tooltip-container:after{left:50%;bottom:100%;transform:translate(-50%);border-width:0 .5rem .5rem .5rem;border-color:transparent transparent #111111 transparent}.bb-tooltip-container-left .bb-tooltip-container:after{top:50%;left:100%;transform:translateY(-50%);border-width:.5rem 0 .5rem .5rem;border-color:transparent transparent transparent #111111}.bb-tooltip-container-right .bb-tooltip-container:after{top:50%;right:100%;transform:translateY(-50%);border-width:.5rem .5rem .5rem 0;border-color:transparent #111111 transparent transparent}\n"], dependencies: [{ kind: "directive", type: BbTemplate, selector: "[bbTemplate]", inputs: ["bbTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
25
22
  }
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: TooltipContainerComponent, decorators: [{
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: TooltipContainerComponent, decorators: [{
27
24
  type: Component,
28
- args: [{ selector: 'bb-tooltip-container', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { 'class': 'bb-tooltip-container' }, preserveWhitespaces: false, template: "<ng-template [bbTemplate]=\"data\">\n {{ data }}\n</ng-template>\n", styles: [".bb-tooltip-container{color:#fff;display:block;font-size:14px;max-width:400px;padding:8px 10px;-webkit-user-select:none;user-select:none;position:relative;border-radius:4px;pointer-events:none;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background-color:#111111e6}.bb-tooltip-container:after{width:0;height:0;content:\"\";display:block;position:absolute;border-style:solid;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}.bb-tooltip-container>small{display:block;font-size:12px;margin-top:4px;color:#fff6}.bb-tooltip-container-bottom,.bb-tooltip-container-top,.bb-tooltip-container-left,.bb-tooltip-container-right{pointer-events:none}.bb-tooltip-container-top .bb-tooltip-container:after{left:50%;top:100%;transform:translate(-50%);border-width:6px 6px 0 6px;border-color:rgba(17,17,17,.9) transparent transparent transparent}.bb-tooltip-container-bottom .bb-tooltip-container:after{left:50%;bottom:100%;transform:translate(-50%);border-width:0 6px 6px 6px;border-color:transparent transparent rgba(17,17,17,.9) transparent}.bb-tooltip-container-left .bb-tooltip-container:after{top:50%;left:100%;transform:translateY(-50%);border-width:6px 0 6px 6px;border-color:transparent transparent transparent rgba(17,17,17,.9)}.bb-tooltip-container-right .bb-tooltip-container:after{top:50%;right:100%;transform:translateY(-50%);border-width:6px 6px 6px 0;border-color:transparent rgba(17,17,17,.9) transparent transparent}\n"] }]
29
- }], ctorParameters: () => [{ type: undefined, decorators: [{
30
- type: Inject,
31
- args: [TOOLTIP_DATA]
32
- }] }, { type: undefined, decorators: [{
33
- type: Inject,
34
- args: [TOOLTIP_CLASS]
35
- }] }], propDecorators: { classBinding: [{
25
+ args: [{ selector: 'bb-tooltip-container', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { 'class': 'bb-tooltip-container' }, preserveWhitespaces: false, standalone: true, imports: [BbTemplate], template: "<ng-template [bbTemplate]=\"data\">{{ data }}</ng-template>\n", styles: [".bb-tooltip-container{color:#fff;display:block;max-width:25rem;line-height:1.5;-webkit-user-select:none;user-select:none;position:relative;font-size:.875rem;pointer-events:none;border-radius:.5rem;padding:.5rem .75rem;background-color:#111}.bb-tooltip-container:after{width:0;height:0;content:\"\";display:block;position:absolute;border-style:solid}.bb-tooltip-container>small{display:block;font-size:.75rem;margin-top:.25rem;color:#fff6}.bb-tooltip-container-bottom,.bb-tooltip-container-top,.bb-tooltip-container-left,.bb-tooltip-container-right{pointer-events:none}.bb-tooltip-container-top .bb-tooltip-container:after{left:50%;top:100%;transform:translate(-50%);border-width:.5rem .5rem 0 .5rem;border-color:#111111 transparent transparent transparent}.bb-tooltip-container-bottom .bb-tooltip-container:after{left:50%;bottom:100%;transform:translate(-50%);border-width:0 .5rem .5rem .5rem;border-color:transparent transparent #111111 transparent}.bb-tooltip-container-left .bb-tooltip-container:after{top:50%;left:100%;transform:translateY(-50%);border-width:.5rem 0 .5rem .5rem;border-color:transparent transparent transparent #111111}.bb-tooltip-container-right .bb-tooltip-container:after{top:50%;right:100%;transform:translateY(-50%);border-width:.5rem .5rem .5rem 0;border-color:transparent #111111 transparent transparent}\n"] }]
26
+ }], propDecorators: { classBinding: [{
36
27
  type: HostBinding,
37
28
  args: ['class']
38
29
  }] } });
39
30
 
40
31
  class TooltipDirective {
41
- // Disabled.
42
- get bbTooltipDisabled() {
43
- return this._bbTooltipDisabled;
44
- }
45
- set bbTooltipDisabled(value) {
46
- const newValue = coerceBooleanProperty(value);
47
- if (newValue !== this.bbTooltipDisabled) {
48
- this._bbTooltipDisabled = newValue;
49
- this._changeDetectorRef.markForCheck();
50
- }
51
- }
52
- constructor(_overlay, _viewContainer, _elementRef, _changeDetectorRef) {
53
- this._overlay = _overlay;
54
- this._viewContainer = _viewContainer;
55
- this._elementRef = _elementRef;
56
- this._changeDetectorRef = _changeDetectorRef;
32
+ constructor() {
33
+ // Dependencies.
34
+ this._overlay = inject(Overlay);
35
+ this._viewContainer = inject(ViewContainerRef);
36
+ this._elementRef = inject((ElementRef));
57
37
  this.bbTooltipClass = null;
58
38
  this.bbTooltipOrigin = null;
59
39
  this.bbTooltipPositions = [];
60
- this._bbTooltipDisabled = false;
40
+ this.bbTooltipDisabled = false;
61
41
  // State.
62
42
  this._overlayRef = null;
63
43
  }
@@ -138,15 +118,16 @@ class TooltipDirective {
138
118
  }
139
119
  ];
140
120
  }
141
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: TooltipDirective, deps: [{ token: i1$1.Overlay }, { token: i0.ViewContainerRef }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }
142
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.1", type: TooltipDirective, selector: "[bbTooltip]", inputs: { bbTooltip: "bbTooltip", bbTooltipClass: "bbTooltipClass", bbTooltipOrigin: "bbTooltipOrigin", bbTooltipPositions: "bbTooltipPositions", bbTooltipDisabled: "bbTooltipDisabled" }, host: { listeners: { "mouseenter": "showTooltip()", "focus": "showTooltip()", "mouseleave": "hideTooltip()", "blur": "hideTooltip()" } }, ngImport: i0 }); }
121
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: TooltipDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
122
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.0.5", type: TooltipDirective, isStandalone: true, selector: "[bbTooltip]", inputs: { bbTooltip: "bbTooltip", bbTooltipClass: "bbTooltipClass", bbTooltipOrigin: "bbTooltipOrigin", bbTooltipPositions: "bbTooltipPositions", bbTooltipDisabled: ["bbTooltipDisabled", "bbTooltipDisabled", booleanAttribute] }, host: { listeners: { "mouseenter": "showTooltip()", "focus": "showTooltip()", "mouseleave": "hideTooltip()", "blur": "hideTooltip()" } }, ngImport: i0 }); }
143
123
  }
144
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: TooltipDirective, decorators: [{
124
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: TooltipDirective, decorators: [{
145
125
  type: Directive,
146
126
  args: [{
147
- selector: '[bbTooltip]'
127
+ selector: '[bbTooltip]',
128
+ standalone: true
148
129
  }]
149
- }], ctorParameters: () => [{ type: i1$1.Overlay }, { type: i0.ViewContainerRef }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], propDecorators: { bbTooltip: [{
130
+ }], propDecorators: { bbTooltip: [{
150
131
  type: Input
151
132
  }], bbTooltipClass: [{
152
133
  type: Input
@@ -155,7 +136,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
155
136
  }], bbTooltipPositions: [{
156
137
  type: Input
157
138
  }], bbTooltipDisabled: [{
158
- type: Input
139
+ type: Input,
140
+ args: [{ transform: booleanAttribute }]
159
141
  }], showTooltip: [{
160
142
  type: HostListener,
161
143
  args: ['mouseenter']
@@ -171,27 +153,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
171
153
  }] } });
172
154
 
173
155
  class TooltipModule {
174
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: TooltipModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
175
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.1", ngImport: i0, type: TooltipModule, declarations: [TooltipContainerComponent,
176
- TooltipDirective], imports: [UtilsModule,
177
- OverlayModule], exports: [TooltipDirective] }); }
178
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: TooltipModule, imports: [UtilsModule,
179
- OverlayModule] }); }
156
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: TooltipModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
157
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.5", ngImport: i0, type: TooltipModule, imports: [TooltipDirective], exports: [TooltipDirective] }); }
158
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: TooltipModule }); }
180
159
  }
181
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: TooltipModule, decorators: [{
160
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: TooltipModule, decorators: [{
182
161
  type: NgModule,
183
162
  args: [{
184
- imports: [
185
- UtilsModule,
186
- OverlayModule
187
- ],
188
- declarations: [
189
- TooltipContainerComponent,
190
- TooltipDirective
191
- ],
192
- exports: [
193
- TooltipDirective
194
- ]
163
+ imports: [TooltipDirective],
164
+ exports: [TooltipDirective]
195
165
  }]
196
166
  }] });
197
167
 
@@ -1 +1 @@
1
- {"version":3,"file":"bravobit-bb-foundation-tooltip.mjs","sources":["../../../projects/bb-foundation/tooltip/src/lib/tooltip.interfaces.ts","../../../projects/bb-foundation/tooltip/src/lib/tooltip-container/tooltip-container.component.ts","../../../projects/bb-foundation/tooltip/src/lib/tooltip-container/tooltip-container.component.html","../../../projects/bb-foundation/tooltip/src/lib/tooltip.directive.ts","../../../projects/bb-foundation/tooltip/src/lib/tooltip.module.ts","../../../projects/bb-foundation/tooltip/src/bravobit-bb-foundation-tooltip.ts"],"sourcesContent":["import {InjectionToken, TemplateRef} from '@angular/core';\n\nexport type TooltipData = string | TemplateRef<void>;\n\nexport const TOOLTIP_DATA = new InjectionToken<TooltipData>('Data to display in tooltip');\nexport const TOOLTIP_CLASS = new InjectionToken<string>('Class to display in tooltip');\n","import {ChangeDetectionStrategy, Component, HostBinding, Inject, ViewEncapsulation} from '@angular/core';\nimport {TOOLTIP_CLASS, TOOLTIP_DATA, TooltipData} from '../tooltip.interfaces';\n\n@Component({\n selector: 'bb-tooltip-container',\n templateUrl: './tooltip-container.component.html',\n styleUrls: ['./tooltip-container.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-tooltip-container'},\n preserveWhitespaces: false\n\n})\nexport class TooltipContainerComponent {\n\n constructor(@Inject(TOOLTIP_DATA) public data: TooltipData,\n @Inject(TOOLTIP_CLASS) public classes: string) {\n }\n\n @HostBinding('class')\n get classBinding() {\n return [this.classes]\n .filter(item => !!item)\n .join(' ');\n }\n\n}\n","<ng-template [bbTemplate]=\"data\">\n {{ data }}\n</ng-template>\n","import {ChangeDetectorRef, Directive, ElementRef, HostListener, Injector, Input, OnDestroy, TemplateRef, ViewContainerRef} from '@angular/core';\nimport {TooltipContainerComponent} from './tooltip-container/tooltip-container.component';\nimport {ConnectedPosition, Overlay, OverlayRef} from '@angular/cdk/overlay';\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {TOOLTIP_CLASS, TOOLTIP_DATA} from './tooltip.interfaces';\nimport {ComponentPortal} from '@angular/cdk/portal';\n\n@Directive({\n selector: '[bbTooltip]'\n})\nexport class TooltipDirective implements OnDestroy {\n\n // Inputs.\n @Input() bbTooltip!: string | TemplateRef<void>;\n @Input() bbTooltipClass: string | null = null;\n @Input() bbTooltipOrigin: HTMLElement | null = null;\n @Input() bbTooltipPositions: ConnectedPosition[] = [];\n\n // Disabled.\n @Input()\n get bbTooltipDisabled(): boolean {\n return this._bbTooltipDisabled;\n }\n\n set bbTooltipDisabled(value: BooleanInput) {\n const newValue = coerceBooleanProperty(value);\n if (newValue !== this.bbTooltipDisabled) {\n this._bbTooltipDisabled = newValue;\n this._changeDetectorRef.markForCheck();\n }\n }\n\n private _bbTooltipDisabled: boolean = false;\n\n // State.\n private _overlayRef: OverlayRef | null = null;\n\n constructor(private _overlay: Overlay,\n private _viewContainer: ViewContainerRef,\n private _elementRef: ElementRef<HTMLElement>,\n private _changeDetectorRef: ChangeDetectorRef) {\n }\n\n @HostListener('mouseenter')\n @HostListener('focus')\n showTooltip() {\n if (this._overlayRef?.hasAttached() || this.bbTooltipDisabled) {\n return;\n }\n this.attachTooltip();\n }\n\n @HostListener('mouseleave')\n @HostListener('blur')\n hideTooltip() {\n if (!this._overlayRef?.hasAttached()) {\n return;\n }\n this._overlayRef?.detach();\n }\n\n ngOnDestroy() {\n this._overlayRef?.dispose();\n }\n\n private attachTooltip() {\n if (this._overlayRef === null) {\n const positionStrategy = this.getPositionStrategy();\n const scrollStrategy = this._overlay.scrollStrategies.reposition();\n this._overlayRef = this._overlay.create({positionStrategy, scrollStrategy});\n }\n\n const injector = Injector.create({\n providers: [\n {provide: TOOLTIP_DATA, useValue: this.bbTooltip},\n {provide: TOOLTIP_CLASS, useValue: this.bbTooltipClass}\n ]\n });\n const component = new ComponentPortal(TooltipContainerComponent, this._viewContainer, injector);\n this._overlayRef.attach(component);\n }\n\n private getPositionStrategy() {\n const element = this.bbTooltipOrigin ?? this._elementRef;\n const positions = this.getPositions();\n\n return this._overlay\n .position()\n .flexibleConnectedTo(element)\n .withPositions(positions);\n }\n\n private getPositions() {\n if (this.bbTooltipPositions?.length > 0) {\n return this.bbTooltipPositions;\n }\n\n return [\n {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n offsetY: -10,\n panelClass: 'bb-tooltip-container-top'\n },\n {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n offsetY: 10,\n panelClass: 'bb-tooltip-container-bottom'\n },\n {\n originX: 'start',\n originY: 'center',\n overlayX: 'end',\n overlayY: 'center',\n offsetX: -10,\n panelClass: 'bb-tooltip-container-left'\n },\n {\n originX: 'end',\n originY: 'center',\n overlayX: 'start',\n overlayY: 'center',\n offsetX: 10,\n panelClass: 'bb-tooltip-container-right'\n }\n ] satisfies ConnectedPosition[];\n }\n\n static ngAcceptInputType_bbTooltip: string | TemplateRef<void>;\n static ngAcceptInputType_bbTooltipClass: string | null;\n static ngAcceptInputType_bbTooltipOrigin: HTMLElement | null;\n static ngAcceptInputType_bbTooltipDisabled: BooleanInput;\n static ngAcceptInputType_bbTooltipPositions: ConnectedPosition[];\n\n}\n","import {TooltipContainerComponent} from './tooltip-container/tooltip-container.component';\nimport {UtilsModule} from '@bravobit/bb-foundation/utils';\nimport {TooltipDirective} from './tooltip.directive';\nimport {OverlayModule} from '@angular/cdk/overlay';\nimport {NgModule} from '@angular/core';\n\n@NgModule({\n imports: [\n UtilsModule,\n OverlayModule\n ],\n declarations: [\n TooltipContainerComponent,\n TooltipDirective\n ],\n exports: [\n TooltipDirective\n ]\n})\nexport class TooltipModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1"],"mappings":"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"}
1
+ {"version":3,"file":"bravobit-bb-foundation-tooltip.mjs","sources":["../../../projects/bb-foundation/tooltip/src/lib/tooltip.interfaces.ts","../../../projects/bb-foundation/tooltip/src/lib/tooltip-container/tooltip-container.component.ts","../../../projects/bb-foundation/tooltip/src/lib/tooltip-container/tooltip-container.component.html","../../../projects/bb-foundation/tooltip/src/lib/tooltip.directive.ts","../../../projects/bb-foundation/tooltip/src/lib/tooltip.module.ts","../../../projects/bb-foundation/tooltip/src/bravobit-bb-foundation-tooltip.ts"],"sourcesContent":["import {InjectionToken, TemplateRef} from '@angular/core';\n\nexport type TooltipData = string | TemplateRef<void>;\n\nexport const TOOLTIP_DATA = new InjectionToken<TooltipData>('Data to display in tooltip');\nexport const TOOLTIP_CLASS = new InjectionToken<string>('Class to display in tooltip');\n","import {ChangeDetectionStrategy, Component, HostBinding, inject, ViewEncapsulation} from '@angular/core';\nimport {TOOLTIP_CLASS, TOOLTIP_DATA, TooltipData} from '../tooltip.interfaces';\nimport {BbTemplate} from '@bravobit/bb-foundation/utils';\n\n@Component({\n selector: 'bb-tooltip-container',\n templateUrl: './tooltip-container.component.html',\n styleUrls: ['./tooltip-container.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-tooltip-container'},\n preserveWhitespaces: false,\n standalone: true,\n imports: [BbTemplate]\n})\nexport class TooltipContainerComponent {\n\n readonly data: TooltipData = inject(TOOLTIP_DATA);\n readonly classes: string = inject(TOOLTIP_CLASS);\n\n @HostBinding('class')\n get classBinding() {\n return [this.classes]\n .filter(item => !!item)\n .join(' ');\n }\n\n}\n","<ng-template [bbTemplate]=\"data\">{{ data }}</ng-template>\n","import {booleanAttribute, Directive, ElementRef, HostListener, inject, Injector, Input, OnDestroy, TemplateRef, ViewContainerRef} from '@angular/core';\nimport {TooltipContainerComponent} from './tooltip-container/tooltip-container.component';\nimport {ConnectedPosition, Overlay, OverlayRef} from '@angular/cdk/overlay';\nimport {TOOLTIP_CLASS, TOOLTIP_DATA} from './tooltip.interfaces';\nimport {ComponentPortal} from '@angular/cdk/portal';\n\n@Directive({\n selector: '[bbTooltip]',\n standalone: true\n})\nexport class TooltipDirective implements OnDestroy {\n\n // Dependencies.\n private readonly _overlay = inject(Overlay);\n private readonly _viewContainer = inject(ViewContainerRef);\n private readonly _elementRef = inject(ElementRef<HTMLElement>);\n\n // Inputs.\n @Input() bbTooltip!: string | TemplateRef<void>;\n @Input() bbTooltipClass: string | null = null;\n @Input() bbTooltipOrigin: HTMLElement | null = null;\n @Input() bbTooltipPositions: ConnectedPosition[] = [];\n @Input({transform: booleanAttribute}) bbTooltipDisabled: boolean = false;\n\n // State.\n private _overlayRef: OverlayRef | null = null;\n\n @HostListener('mouseenter')\n @HostListener('focus')\n showTooltip() {\n if (this._overlayRef?.hasAttached() || this.bbTooltipDisabled) {\n return;\n }\n this.attachTooltip();\n }\n\n @HostListener('mouseleave')\n @HostListener('blur')\n hideTooltip() {\n if (!this._overlayRef?.hasAttached()) {\n return;\n }\n this._overlayRef?.detach();\n }\n\n ngOnDestroy() {\n this._overlayRef?.dispose();\n }\n\n private attachTooltip() {\n if (this._overlayRef === null) {\n const positionStrategy = this.getPositionStrategy();\n const scrollStrategy = this._overlay.scrollStrategies.reposition();\n this._overlayRef = this._overlay.create({positionStrategy, scrollStrategy});\n }\n\n const injector = Injector.create({\n providers: [\n {provide: TOOLTIP_DATA, useValue: this.bbTooltip},\n {provide: TOOLTIP_CLASS, useValue: this.bbTooltipClass}\n ]\n });\n const component = new ComponentPortal(TooltipContainerComponent, this._viewContainer, injector);\n this._overlayRef.attach(component);\n }\n\n private getPositionStrategy() {\n const element = this.bbTooltipOrigin ?? this._elementRef;\n const positions = this.getPositions();\n\n return this._overlay\n .position()\n .flexibleConnectedTo(element)\n .withPositions(positions);\n }\n\n private getPositions() {\n if (this.bbTooltipPositions?.length > 0) {\n return this.bbTooltipPositions;\n }\n\n return [\n {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n offsetY: -10,\n panelClass: 'bb-tooltip-container-top'\n },\n {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n offsetY: 10,\n panelClass: 'bb-tooltip-container-bottom'\n },\n {\n originX: 'start',\n originY: 'center',\n overlayX: 'end',\n overlayY: 'center',\n offsetX: -10,\n panelClass: 'bb-tooltip-container-left'\n },\n {\n originX: 'end',\n originY: 'center',\n overlayX: 'start',\n overlayY: 'center',\n offsetX: 10,\n panelClass: 'bb-tooltip-container-right'\n }\n ] satisfies ConnectedPosition[];\n }\n\n}\n","import {TooltipDirective} from './tooltip.directive';\nimport {NgModule} from '@angular/core';\n\n@NgModule({\n imports: [TooltipDirective],\n exports: [TooltipDirective]\n})\nexport class TooltipModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}