structra-ui 0.1.12 → 0.1.15

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 (293) hide show
  1. package/package.json +28 -8
  2. package/app/_utils/date-pt-br.utils.d.ts +0 -24
  3. package/app/_utils/decimal-br.utils.d.ts +0 -52
  4. package/app/_utils/estados-br.data.d.ts +0 -10
  5. package/app/_utils/integer-br.utils.d.ts +0 -17
  6. package/app/_utils/integer-value.utils.d.ts +0 -5
  7. package/app/_utils/scroll/body-scroll-lock.util.d.ts +0 -44
  8. package/app/app-shell/_models/breadcrumb-item.model.d.ts +0 -13
  9. package/app/app-shell/app-shell-sidebar-template.directive.d.ts +0 -19
  10. package/app/app-shell/app-shell.component.d.ts +0 -41
  11. package/app/app-shell/breadcrumb/breadcrumb.component.d.ts +0 -10
  12. package/app/app-shell/index.d.ts +0 -19
  13. package/app/app-shell/sidebar/app-sidebar-toolbar.directive.d.ts +0 -14
  14. package/app/app-shell/sidebar/shell-sidebar-toggle.component.d.ts +0 -19
  15. package/app/app-shell/sidebar/sidebar.component.d.ts +0 -36
  16. package/app/app-shell/sidebar-reveal.constants.d.ts +0 -8
  17. package/app/app-shell/topbar/topbar.component.d.ts +0 -8
  18. package/app/app-shell/user-menu/user-menu.component.d.ts +0 -25
  19. package/app/buttons/base-button/base-button.component.d.ts +0 -43
  20. package/app/buttons/index.d.ts +0 -1
  21. package/app/data-display/_models/card-item-view.model.d.ts +0 -8
  22. package/app/data-display/_models/data-display.models.d.ts +0 -11
  23. package/app/data-display/_models/data-grid-column.model.d.ts +0 -13
  24. package/app/data-display/_models/index.d.ts +0 -2
  25. package/app/data-display/adaptive-data-view/adaptive-data-view.component.d.ts +0 -53
  26. package/app/data-display/card-list/card-list.component.d.ts +0 -70
  27. package/app/data-display/dashboard-section/dashboard-section.component.d.ts +0 -12
  28. package/app/data-display/data-card/data-card.component.d.ts +0 -16
  29. package/app/data-display/data-grid/data-grid-actions-cell-renderer.component.d.ts +0 -21
  30. package/app/data-display/data-grid/data-grid.component.d.ts +0 -76
  31. package/app/data-display/data-list/data-list.component.d.ts +0 -18
  32. package/app/data-display/data-toolbar/data-toolbar.component.d.ts +0 -6
  33. package/app/data-display/details-field/details-field.component.d.ts +0 -10
  34. package/app/data-display/details-view/details-view.component.d.ts +0 -26
  35. package/app/data-display/empty-state/empty-state-overlay.util.d.ts +0 -5
  36. package/app/data-display/empty-state/empty-state.component.d.ts +0 -13
  37. package/app/data-display/index.d.ts +0 -20
  38. package/app/data-display/list-item/list-item.component.d.ts +0 -22
  39. package/app/data-display/stat-card/stat-card.component.d.ts +0 -23
  40. package/app/data-display/status-badge/status-badge.component.d.ts +0 -17
  41. package/app/data-display/table-empty-state/table-empty-state.component.d.ts +0 -14
  42. package/app/data-display/table-toolbar/table-toolbar.component.d.ts +0 -11
  43. package/app/dialogs/_models/lib-dialog-size.model.d.ts +0 -6
  44. package/app/dialogs/_utils/app-lib-light-block-scroll-strategy.d.ts +0 -12
  45. package/app/dialogs/_utils/lib-dialog-panel-classes.d.ts +0 -3
  46. package/app/dialogs/app-dialog/app-dialog.component.d.ts +0 -71
  47. package/app/dialogs/app-dialog/dialog-footer.directive.d.ts +0 -6
  48. package/app/dialogs/confirm-dialog/confirm-dialog-data.model.d.ts +0 -13
  49. package/app/dialogs/confirm-dialog/confirm-dialog.component.d.ts +0 -20
  50. package/app/dialogs/confirm-dialog/confirm-dialog.service.d.ts +0 -17
  51. package/app/dialogs/index.d.ts +0 -14
  52. package/app/dialogs/loading-dialog/loading-dialog-data.model.d.ts +0 -7
  53. package/app/dialogs/loading-dialog/loading-dialog.component.d.ts +0 -9
  54. package/app/dialogs/loading-dialog/loading-dialog.service.d.ts +0 -15
  55. package/app/dialogs/toast/toast-host.component.d.ts +0 -13
  56. package/app/dialogs/toast/toast.models.d.ts +0 -26
  57. package/app/dialogs/toast/toast.service.d.ts +0 -17
  58. package/app/fields/checkbox-fields/_base/boolean-field.directive.d.ts +0 -42
  59. package/app/fields/checkbox-fields/checkbox-field/checkbox-field.component.d.ts +0 -8
  60. package/app/fields/checkbox-fields/index.d.ts +0 -3
  61. package/app/fields/checkbox-fields/switch-field/switch-field.component.d.ts +0 -8
  62. package/app/fields/dropdown-fields/_base/dropdown-base/dropdown-base.component.d.ts +0 -62
  63. package/app/fields/dropdown-fields/_base/dropdown-multi-option-field.base.d.ts +0 -40
  64. package/app/fields/dropdown-fields/_base/dropdown-option-field.base.d.ts +0 -47
  65. package/app/fields/dropdown-fields/_base/dropdown-trigger-blur.util.d.ts +0 -18
  66. package/app/fields/dropdown-fields/_models/dropdown-list-bindings.model.d.ts +0 -13
  67. package/app/fields/dropdown-fields/_models/dropdown-search-page-requested.model.d.ts +0 -7
  68. package/app/fields/dropdown-fields/_models/index.d.ts +0 -4
  69. package/app/fields/dropdown-fields/_models/select-option.model.d.ts +0 -5
  70. package/app/fields/dropdown-fields/_models/select-pagination.model.d.ts +0 -6
  71. package/app/fields/dropdown-fields/dropdown-search-field/dropdown-search-field.component.d.ts +0 -84
  72. package/app/fields/dropdown-fields/index.d.ts +0 -7
  73. package/app/fields/dropdown-fields/multiselect-field/multiselect-field.component.d.ts +0 -49
  74. package/app/fields/dropdown-fields/select-field/select-field.component.d.ts +0 -54
  75. package/app/fields/input-fields/_base/base-field.component.d.ts +0 -60
  76. package/app/fields/input-fields/_base/base-field.directive.d.ts +0 -102
  77. package/app/fields/input-fields/_base/masked-text-field.base.d.ts +0 -34
  78. package/app/fields/input-fields/_base/ng-control-field.directive.d.ts +0 -43
  79. package/app/fields/input-fields/_models/field-common-inputs.model.d.ts +0 -49
  80. package/app/fields/input-fields/_models/index.d.ts +0 -1
  81. package/app/fields/input-fields/_utils/mask-complete.validators.d.ts +0 -18
  82. package/app/fields/input-fields/_utils/mask-format.utils.d.ts +0 -13
  83. package/app/fields/input-fields/cep-field/cep-field.component.d.ts +0 -12
  84. package/app/fields/input-fields/cpf-cnpj-field/cpf-cnpj-field.component.d.ts +0 -20
  85. package/app/fields/input-fields/date-field/date-field.component.d.ts +0 -30
  86. package/app/fields/input-fields/decimal-field/decimal-field.component.d.ts +0 -17
  87. package/app/fields/input-fields/index.d.ts +0 -22
  88. package/app/fields/input-fields/input-mask-field/input-mask-field.component.d.ts +0 -16
  89. package/app/fields/input-fields/integer-field/integer-field.component.d.ts +0 -17
  90. package/app/fields/input-fields/password-field/password-field.component.d.ts +0 -30
  91. package/app/fields/input-fields/phone-field/phone-field.component.d.ts +0 -22
  92. package/app/fields/input-fields/text-field/text-field.component.d.ts +0 -16
  93. package/app/fields/input-fields/textarea-field/textarea-field.component.d.ts +0 -31
  94. package/app/form-layout/_models/form-layout.model.d.ts +0 -41
  95. package/app/form-layout/_models/form-tabs.model.d.ts +0 -1
  96. package/app/form-layout/_models/index.d.ts +0 -3
  97. package/app/form-layout/_models/validation-summary.model.d.ts +0 -8
  98. package/app/form-layout/form-actions/form-actions.component.d.ts +0 -21
  99. package/app/form-layout/form-col/form-col.component.d.ts +0 -25
  100. package/app/form-layout/form-group/form-group.component.d.ts +0 -125
  101. package/app/form-layout/form-group/form-path.utils.d.ts +0 -16
  102. package/app/form-layout/form-group/form-root-invalid-ui-refresh.util.d.ts +0 -8
  103. package/app/form-layout/form-row/form-row.component.d.ts +0 -14
  104. package/app/form-layout/form-section/form-section.component.d.ts +0 -13
  105. package/app/form-layout/form-tab/form-tab.component.d.ts +0 -32
  106. package/app/form-layout/form-tabs/form-tabs.component.d.ts +0 -44
  107. package/app/form-layout/index.d.ts +0 -14
  108. package/app/form-layout/layout-stack/layout-stack.component.d.ts +0 -25
  109. package/app/form-layout/validation-summary/validation-summary.component.d.ts +0 -105
  110. package/app/loading/skeleton-loading/index.d.ts +0 -6
  111. package/app/loading/skeleton-loading/skeleton-block/skeleton-block.component.d.ts +0 -15
  112. package/app/loading/skeleton-loading/skeleton-card/skeleton-card.component.d.ts +0 -10
  113. package/app/loading/skeleton-loading/skeleton-field-shell/skeleton-field-shell.component.d.ts +0 -21
  114. package/app/loading/skeleton-loading/skeleton-list/skeleton-list.component.d.ts +0 -17
  115. package/app/loading/skeleton-loading/skeleton-table/skeleton-table.component.d.ts +0 -16
  116. package/app/loading/skeleton-loading/skeleton-text/skeleton-text.component.d.ts +0 -17
  117. package/app/menus/_models/drawer-side.model.d.ts +0 -6
  118. package/app/menus/_models/drawer-size.model.d.ts +0 -6
  119. package/app/menus/_models/menu-dropdown-placement.model.d.ts +0 -10
  120. package/app/menus/_models/menu-item.model.d.ts +0 -47
  121. package/app/menus/_utils/menu-connected-positions.util.d.ts +0 -4
  122. package/app/menus/_utils/menu-rows.util.d.ts +0 -22
  123. package/app/menus/_utils/submenu-connected-positions.util.d.ts +0 -5
  124. package/app/menus/action-menu/action-menu.component.d.ts +0 -24
  125. package/app/menus/context-menu/context-menu.component.d.ts +0 -32
  126. package/app/menus/drawer/drawer.component.d.ts +0 -38
  127. package/app/menus/dropdown-menu/dropdown-menu.component.d.ts +0 -33
  128. package/app/menus/index.d.ts +0 -11
  129. package/app/menus/menu-divider/menu-divider.component.d.ts +0 -8
  130. package/app/menus/menu-group/menu-group.component.d.ts +0 -13
  131. package/app/menus/menu-list/menu-list.component.d.ts +0 -77
  132. package/app/overlay/_models/overlay-placement.model.d.ts +0 -9
  133. package/app/overlay/_utils/anchored-overlay-positions.util.d.ts +0 -9
  134. package/app/overlay/anchored-overlay/anchored-overlay.component.d.ts +0 -51
  135. package/app/overlay/index.d.ts +0 -20
  136. package/app/overlay/popover/popover-body-template.directive.d.ts +0 -7
  137. package/app/overlay/popover/popover-footer-template.directive.d.ts +0 -7
  138. package/app/overlay/popover/popover-trigger.directive.d.ts +0 -6
  139. package/app/overlay/popover/popover.component.d.ts +0 -38
  140. package/app/overlay/tooltip/tooltip-panel-template.directive.d.ts +0 -10
  141. package/app/overlay/tooltip/tooltip.component.d.ts +0 -40
  142. package/app/theme/app-theme.service.d.ts +0 -25
  143. package/app/theme/index.d.ts +0 -1
  144. package/esm2022/app/_utils/date-pt-br.utils.mjs +0 -82
  145. package/esm2022/app/_utils/decimal-br.utils.mjs +0 -154
  146. package/esm2022/app/_utils/estados-br.data.mjs +0 -37
  147. package/esm2022/app/_utils/integer-br.utils.mjs +0 -48
  148. package/esm2022/app/_utils/integer-value.utils.mjs +0 -19
  149. package/esm2022/app/_utils/scroll/body-scroll-lock.util.mjs +0 -97
  150. package/esm2022/app/app-shell/_models/breadcrumb-item.model.mjs +0 -2
  151. package/esm2022/app/app-shell/app-shell-sidebar-template.directive.mjs +0 -29
  152. package/esm2022/app/app-shell/app-shell.component.mjs +0 -105
  153. package/esm2022/app/app-shell/breadcrumb/breadcrumb.component.mjs +0 -18
  154. package/esm2022/app/app-shell/index.mjs +0 -19
  155. package/esm2022/app/app-shell/sidebar/app-sidebar-toolbar.directive.mjs +0 -23
  156. package/esm2022/app/app-shell/sidebar/shell-sidebar-toggle.component.mjs +0 -36
  157. package/esm2022/app/app-shell/sidebar/sidebar.component.mjs +0 -84
  158. package/esm2022/app/app-shell/sidebar-reveal.constants.mjs +0 -9
  159. package/esm2022/app/app-shell/topbar/topbar.component.mjs +0 -14
  160. package/esm2022/app/app-shell/user-menu/user-menu.component.mjs +0 -52
  161. package/esm2022/app/buttons/base-button/base-button.component.mjs +0 -97
  162. package/esm2022/app/buttons/index.mjs +0 -2
  163. package/esm2022/app/data-display/_models/card-item-view.model.mjs +0 -2
  164. package/esm2022/app/data-display/_models/data-display.models.mjs +0 -2
  165. package/esm2022/app/data-display/_models/data-grid-column.model.mjs +0 -2
  166. package/esm2022/app/data-display/_models/index.mjs +0 -2
  167. package/esm2022/app/data-display/adaptive-data-view/adaptive-data-view.component.mjs +0 -124
  168. package/esm2022/app/data-display/card-list/card-list.component.mjs +0 -208
  169. package/esm2022/app/data-display/dashboard-section/dashboard-section.component.mjs +0 -25
  170. package/esm2022/app/data-display/data-card/data-card.component.mjs +0 -40
  171. package/esm2022/app/data-display/data-grid/data-grid-actions-cell-renderer.component.mjs +0 -41
  172. package/esm2022/app/data-display/data-grid/data-grid.component.mjs +0 -253
  173. package/esm2022/app/data-display/data-list/data-list.component.mjs +0 -40
  174. package/esm2022/app/data-display/data-toolbar/data-toolbar.component.mjs +0 -12
  175. package/esm2022/app/data-display/details-field/details-field.component.mjs +0 -21
  176. package/esm2022/app/data-display/details-view/details-view.component.mjs +0 -44
  177. package/esm2022/app/data-display/empty-state/empty-state-overlay.util.mjs +0 -19
  178. package/esm2022/app/data-display/empty-state/empty-state.component.mjs +0 -30
  179. package/esm2022/app/data-display/index.mjs +0 -19
  180. package/esm2022/app/data-display/list-item/list-item.component.mjs +0 -59
  181. package/esm2022/app/data-display/stat-card/stat-card.component.mjs +0 -59
  182. package/esm2022/app/data-display/status-badge/status-badge.component.mjs +0 -41
  183. package/esm2022/app/data-display/table-empty-state/table-empty-state.component.mjs +0 -31
  184. package/esm2022/app/data-display/table-toolbar/table-toolbar.component.mjs +0 -22
  185. package/esm2022/app/dialogs/_models/lib-dialog-size.model.mjs +0 -8
  186. package/esm2022/app/dialogs/_utils/app-lib-light-block-scroll-strategy.mjs +0 -22
  187. package/esm2022/app/dialogs/_utils/lib-dialog-panel-classes.mjs +0 -6
  188. package/esm2022/app/dialogs/app-dialog/app-dialog.component.mjs +0 -200
  189. package/esm2022/app/dialogs/app-dialog/dialog-footer.directive.mjs +0 -15
  190. package/esm2022/app/dialogs/confirm-dialog/confirm-dialog-data.model.mjs +0 -2
  191. package/esm2022/app/dialogs/confirm-dialog/confirm-dialog.component.mjs +0 -36
  192. package/esm2022/app/dialogs/confirm-dialog/confirm-dialog.service.mjs +0 -47
  193. package/esm2022/app/dialogs/index.mjs +0 -12
  194. package/esm2022/app/dialogs/loading-dialog/loading-dialog-data.model.mjs +0 -2
  195. package/esm2022/app/dialogs/loading-dialog/loading-dialog.component.mjs +0 -19
  196. package/esm2022/app/dialogs/loading-dialog/loading-dialog.service.mjs +0 -38
  197. package/esm2022/app/dialogs/toast/toast-host.component.mjs +0 -65
  198. package/esm2022/app/dialogs/toast/toast.models.mjs +0 -2
  199. package/esm2022/app/dialogs/toast/toast.service.mjs +0 -76
  200. package/esm2022/app/fields/checkbox-fields/_base/boolean-field.directive.mjs +0 -158
  201. package/esm2022/app/fields/checkbox-fields/checkbox-field/checkbox-field.component.mjs +0 -36
  202. package/esm2022/app/fields/checkbox-fields/index.mjs +0 -4
  203. package/esm2022/app/fields/checkbox-fields/switch-field/switch-field.component.mjs +0 -35
  204. package/esm2022/app/fields/dropdown-fields/_base/dropdown-base/dropdown-base.component.mjs +0 -117
  205. package/esm2022/app/fields/dropdown-fields/_base/dropdown-multi-option-field.base.mjs +0 -152
  206. package/esm2022/app/fields/dropdown-fields/_base/dropdown-option-field.base.mjs +0 -149
  207. package/esm2022/app/fields/dropdown-fields/_base/dropdown-trigger-blur.util.mjs +0 -32
  208. package/esm2022/app/fields/dropdown-fields/_models/dropdown-list-bindings.model.mjs +0 -2
  209. package/esm2022/app/fields/dropdown-fields/_models/dropdown-search-page-requested.model.mjs +0 -2
  210. package/esm2022/app/fields/dropdown-fields/_models/index.mjs +0 -2
  211. package/esm2022/app/fields/dropdown-fields/_models/select-option.model.mjs +0 -2
  212. package/esm2022/app/fields/dropdown-fields/_models/select-pagination.model.mjs +0 -2
  213. package/esm2022/app/fields/dropdown-fields/dropdown-search-field/dropdown-search-field.component.mjs +0 -520
  214. package/esm2022/app/fields/dropdown-fields/index.mjs +0 -7
  215. package/esm2022/app/fields/dropdown-fields/multiselect-field/multiselect-field.component.mjs +0 -379
  216. package/esm2022/app/fields/dropdown-fields/select-field/select-field.component.mjs +0 -359
  217. package/esm2022/app/fields/input-fields/_base/base-field.component.mjs +0 -151
  218. package/esm2022/app/fields/input-fields/_base/base-field.directive.mjs +0 -224
  219. package/esm2022/app/fields/input-fields/_base/masked-text-field.base.mjs +0 -135
  220. package/esm2022/app/fields/input-fields/_base/ng-control-field.directive.mjs +0 -127
  221. package/esm2022/app/fields/input-fields/_models/field-common-inputs.model.mjs +0 -2
  222. package/esm2022/app/fields/input-fields/_models/index.mjs +0 -2
  223. package/esm2022/app/fields/input-fields/_utils/mask-complete.validators.mjs +0 -61
  224. package/esm2022/app/fields/input-fields/_utils/mask-format.utils.mjs +0 -40
  225. package/esm2022/app/fields/input-fields/cep-field/cep-field.component.mjs +0 -48
  226. package/esm2022/app/fields/input-fields/cpf-cnpj-field/cpf-cnpj-field.component.mjs +0 -61
  227. package/esm2022/app/fields/input-fields/date-field/date-field.component.mjs +0 -147
  228. package/esm2022/app/fields/input-fields/decimal-field/decimal-field.component.mjs +0 -166
  229. package/esm2022/app/fields/input-fields/index.mjs +0 -22
  230. package/esm2022/app/fields/input-fields/input-mask-field/input-mask-field.component.mjs +0 -52
  231. package/esm2022/app/fields/input-fields/integer-field/integer-field.component.mjs +0 -143
  232. package/esm2022/app/fields/input-fields/password-field/password-field.component.mjs +0 -130
  233. package/esm2022/app/fields/input-fields/phone-field/phone-field.component.mjs +0 -66
  234. package/esm2022/app/fields/input-fields/text-field/text-field.component.mjs +0 -90
  235. package/esm2022/app/fields/input-fields/textarea-field/textarea-field.component.mjs +0 -125
  236. package/esm2022/app/form-layout/_models/form-layout.model.mjs +0 -48
  237. package/esm2022/app/form-layout/_models/form-tabs.model.mjs +0 -2
  238. package/esm2022/app/form-layout/_models/index.mjs +0 -2
  239. package/esm2022/app/form-layout/_models/validation-summary.model.mjs +0 -2
  240. package/esm2022/app/form-layout/form-actions/form-actions.component.mjs +0 -55
  241. package/esm2022/app/form-layout/form-col/form-col.component.mjs +0 -76
  242. package/esm2022/app/form-layout/form-group/form-group.component.mjs +0 -358
  243. package/esm2022/app/form-layout/form-group/form-path.utils.mjs +0 -65
  244. package/esm2022/app/form-layout/form-group/form-root-invalid-ui-refresh.util.mjs +0 -54
  245. package/esm2022/app/form-layout/form-row/form-row.component.mjs +0 -49
  246. package/esm2022/app/form-layout/form-section/form-section.component.mjs +0 -43
  247. package/esm2022/app/form-layout/form-tab/form-tab.component.mjs +0 -67
  248. package/esm2022/app/form-layout/form-tabs/form-tabs.component.mjs +0 -126
  249. package/esm2022/app/form-layout/index.mjs +0 -14
  250. package/esm2022/app/form-layout/layout-stack/layout-stack.component.mjs +0 -56
  251. package/esm2022/app/form-layout/validation-summary/validation-summary.component.mjs +0 -343
  252. package/esm2022/app/loading/skeleton-loading/index.mjs +0 -7
  253. package/esm2022/app/loading/skeleton-loading/skeleton-block/skeleton-block.component.mjs +0 -43
  254. package/esm2022/app/loading/skeleton-loading/skeleton-card/skeleton-card.component.mjs +0 -23
  255. package/esm2022/app/loading/skeleton-loading/skeleton-field-shell/skeleton-field-shell.component.mjs +0 -34
  256. package/esm2022/app/loading/skeleton-loading/skeleton-list/skeleton-list.component.mjs +0 -38
  257. package/esm2022/app/loading/skeleton-loading/skeleton-table/skeleton-table.component.mjs +0 -37
  258. package/esm2022/app/loading/skeleton-loading/skeleton-text/skeleton-text.component.mjs +0 -45
  259. package/esm2022/app/menus/_models/drawer-side.model.mjs +0 -8
  260. package/esm2022/app/menus/_models/drawer-size.model.mjs +0 -8
  261. package/esm2022/app/menus/_models/menu-dropdown-placement.model.mjs +0 -12
  262. package/esm2022/app/menus/_models/menu-item.model.mjs +0 -6
  263. package/esm2022/app/menus/_utils/menu-connected-positions.util.mjs +0 -41
  264. package/esm2022/app/menus/_utils/menu-rows.util.mjs +0 -39
  265. package/esm2022/app/menus/_utils/submenu-connected-positions.util.mjs +0 -23
  266. package/esm2022/app/menus/action-menu/action-menu.component.mjs +0 -48
  267. package/esm2022/app/menus/context-menu/context-menu.component.mjs +0 -112
  268. package/esm2022/app/menus/drawer/drawer.component.mjs +0 -142
  269. package/esm2022/app/menus/dropdown-menu/dropdown-menu.component.mjs +0 -99
  270. package/esm2022/app/menus/index.mjs +0 -11
  271. package/esm2022/app/menus/menu-divider/menu-divider.component.mjs +0 -14
  272. package/esm2022/app/menus/menu-group/menu-group.component.mjs +0 -32
  273. package/esm2022/app/menus/menu-list/menu-list.component.mjs +0 -399
  274. package/esm2022/app/overlay/_models/overlay-placement.model.mjs +0 -11
  275. package/esm2022/app/overlay/_utils/anchored-overlay-positions.util.mjs +0 -84
  276. package/esm2022/app/overlay/anchored-overlay/anchored-overlay.component.mjs +0 -121
  277. package/esm2022/app/overlay/index.mjs +0 -21
  278. package/esm2022/app/overlay/popover/popover-body-template.directive.mjs +0 -17
  279. package/esm2022/app/overlay/popover/popover-footer-template.directive.mjs +0 -17
  280. package/esm2022/app/overlay/popover/popover-trigger.directive.mjs +0 -15
  281. package/esm2022/app/overlay/popover/popover.component.mjs +0 -93
  282. package/esm2022/app/overlay/tooltip/tooltip-panel-template.directive.mjs +0 -20
  283. package/esm2022/app/overlay/tooltip/tooltip.component.mjs +0 -118
  284. package/esm2022/app/theme/app-theme.service.mjs +0 -49
  285. package/esm2022/app/theme/index.mjs +0 -2
  286. package/esm2022/structra-public-api.mjs +0 -18
  287. package/esm2022/structra-ui.mjs +0 -5
  288. package/esm2022/structra-version.mjs +0 -3
  289. package/fesm2022/structra-ui.mjs +0 -8971
  290. package/fesm2022/structra-ui.mjs.map +0 -1
  291. package/index.d.ts +0 -5
  292. package/structra-public-api.d.ts +0 -17
  293. package/structra-version.d.ts +0 -2
@@ -1,65 +0,0 @@
1
- import { FormArray, FormControl, FormGroup } from '@angular/forms';
2
- /** Resolve `a.b.c` a partir da raiz do formulário (normalmente o `FormGroup` do `<form [formGroup]>`). */
3
- export function resolveControlAtPath(root, path) {
4
- const segments = path
5
- .split('.')
6
- .map((s) => s.trim())
7
- .filter((s) => s.length > 0);
8
- let current = root;
9
- for (const seg of segments) {
10
- if (current instanceof FormGroup) {
11
- const childCtrl = current.get(seg);
12
- if (childCtrl === null) {
13
- return null;
14
- }
15
- current = childCtrl;
16
- }
17
- else if (current instanceof FormArray && /^\d+$/.test(seg)) {
18
- current = current.at(Number(seg));
19
- }
20
- else {
21
- return null;
22
- }
23
- }
24
- return current;
25
- }
26
- /**
27
- * Há erro “visível” na subárvore: folho inválido e (`dirty` ou `formSubmitted`).
28
- * `formSubmitted` deve incluir o equivalente a «formulário já enviado» (ex.: `FormGroupDirective.submitted`
29
- * ou passo activo após o evento `submit` do `<form>` em `app-form-group`), para acender o ícone após
30
- * «Salvar» + `markAllAsTouched()` sem exigir `dirty` em cada campo.
31
- * Não usar `touched` sozinho: Tab/blur marca touched sem alterar valor e não deve acender o ícone.
32
- */
33
- export function subtreeHasVisibleInvalid(control, formSubmitted = false) {
34
- if (control instanceof FormControl) {
35
- return !!(control.invalid && (control.dirty || formSubmitted));
36
- }
37
- if (control instanceof FormGroup) {
38
- for (const key of Object.keys(control.controls)) {
39
- const ch = control.controls[key];
40
- if (ch && subtreeHasVisibleInvalid(ch, formSubmitted)) {
41
- return true;
42
- }
43
- }
44
- return false;
45
- }
46
- if (control instanceof FormArray) {
47
- for (let i = 0; i < control.length; i++) {
48
- const ch = control.at(i);
49
- if (ch && subtreeHasVisibleInvalid(ch, formSubmitted)) {
50
- return true;
51
- }
52
- }
53
- return false;
54
- }
55
- return false;
56
- }
57
- /**
58
- * Critério alinhado ao ícone automático de `app-form-group` com `formGroupPath`
59
- * (e reutilizável para aviso por separador, ex. `app-form-tab` + `formGroupName`).
60
- */
61
- export function sectionHasVisibleInvalid(root, path, formSubmitted = false) {
62
- const c = resolveControlAtPath(root, path);
63
- return c ? subtreeHasVisibleInvalid(c, formSubmitted) : false;
64
- }
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1wYXRoLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9mb3JtLWxheW91dC9mb3JtLWdyb3VwL2Zvcm0tcGF0aC51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW1CLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEYsMEdBQTBHO0FBQzFHLE1BQU0sVUFBVSxvQkFBb0IsQ0FDbEMsSUFBcUIsRUFDckIsSUFBWTtJQUVaLE1BQU0sUUFBUSxHQUFHLElBQUk7U0FDbEIsS0FBSyxDQUFDLEdBQUcsQ0FBQztTQUNWLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ3BCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMvQixJQUFJLE9BQU8sR0FBMkIsSUFBSSxDQUFDO0lBQzNDLEtBQUssTUFBTSxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7UUFDM0IsSUFBSSxPQUFPLFlBQVksU0FBUyxFQUFFLENBQUM7WUFDakMsTUFBTSxTQUFTLEdBQTJCLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDM0QsSUFBSSxTQUFTLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQ3ZCLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztZQUNELE9BQU8sR0FBRyxTQUFTLENBQUM7UUFDdEIsQ0FBQzthQUFNLElBQUksT0FBTyxZQUFZLFNBQVMsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDN0QsT0FBTyxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDcEMsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSx3QkFBd0IsQ0FDdEMsT0FBd0IsRUFDeEIsYUFBYSxHQUFHLEtBQUs7SUFFckIsSUFBSSxPQUFPLFlBQVksV0FBVyxFQUFFLENBQUM7UUFDbkMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFDRCxJQUFJLE9BQU8sWUFBWSxTQUFTLEVBQUUsQ0FBQztRQUNqQyxLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDaEQsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNqQyxJQUFJLEVBQUUsSUFBSSx3QkFBd0IsQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDLEVBQUUsQ0FBQztnQkFDdEQsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELElBQUksT0FBTyxZQUFZLFNBQVMsRUFBRSxDQUFDO1FBQ2pDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDeEMsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QixJQUFJLEVBQUUsSUFBSSx3QkFBd0IsQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDLEVBQUUsQ0FBQztnQkFDdEQsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSx3QkFBd0IsQ0FDdEMsSUFBcUIsRUFDckIsSUFBWSxFQUNaLGFBQWEsR0FBRyxLQUFLO0lBRXJCLE1BQU0sQ0FBQyxHQUFHLG9CQUFvQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMzQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDaEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUFycmF5LCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuLyoqIFJlc29sdmUgYGEuYi5jYCBhIHBhcnRpciBkYSByYWl6IGRvIGZvcm11bMOhcmlvIChub3JtYWxtZW50ZSBvIGBGb3JtR3JvdXBgIGRvIGA8Zm9ybSBbZm9ybUdyb3VwXT5gKS4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVDb250cm9sQXRQYXRoKFxyXG4gIHJvb3Q6IEFic3RyYWN0Q29udHJvbCxcclxuICBwYXRoOiBzdHJpbmcsXHJcbik6IEFic3RyYWN0Q29udHJvbCB8IG51bGwge1xyXG4gIGNvbnN0IHNlZ21lbnRzID0gcGF0aFxyXG4gICAgLnNwbGl0KCcuJylcclxuICAgIC5tYXAoKHMpID0+IHMudHJpbSgpKVxyXG4gICAgLmZpbHRlcigocykgPT4gcy5sZW5ndGggPiAwKTtcclxuICBsZXQgY3VycmVudDogQWJzdHJhY3RDb250cm9sIHwgbnVsbCA9IHJvb3Q7XHJcbiAgZm9yIChjb25zdCBzZWcgb2Ygc2VnbWVudHMpIHtcclxuICAgIGlmIChjdXJyZW50IGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XHJcbiAgICAgIGNvbnN0IGNoaWxkQ3RybDogQWJzdHJhY3RDb250cm9sIHwgbnVsbCA9IGN1cnJlbnQuZ2V0KHNlZyk7XHJcbiAgICAgIGlmIChjaGlsZEN0cmwgPT09IG51bGwpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG4gICAgICBjdXJyZW50ID0gY2hpbGRDdHJsO1xyXG4gICAgfSBlbHNlIGlmIChjdXJyZW50IGluc3RhbmNlb2YgRm9ybUFycmF5ICYmIC9eXFxkKyQvLnRlc3Qoc2VnKSkge1xyXG4gICAgICBjdXJyZW50ID0gY3VycmVudC5hdChOdW1iZXIoc2VnKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIGN1cnJlbnQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBIw6EgZXJybyDigJx2aXPDrXZlbOKAnSBuYSBzdWLDoXJ2b3JlOiBmb2xobyBpbnbDoWxpZG8gZSAoYGRpcnR5YCBvdSBgZm9ybVN1Ym1pdHRlZGApLlxyXG4gKiBgZm9ybVN1Ym1pdHRlZGAgZGV2ZSBpbmNsdWlyIG8gZXF1aXZhbGVudGUgYSDCq2Zvcm11bMOhcmlvIGrDoSBlbnZpYWRvwrsgKGV4LjogYEZvcm1Hcm91cERpcmVjdGl2ZS5zdWJtaXR0ZWRgXHJcbiAqIG91IHBhc3NvIGFjdGl2byBhcMOzcyBvIGV2ZW50byBgc3VibWl0YCBkbyBgPGZvcm0+YCBlbSBgYXBwLWZvcm0tZ3JvdXBgKSwgcGFyYSBhY2VuZGVyIG8gw61jb25lIGFww7NzXHJcbiAqIMKrU2FsdmFywrsgKyBgbWFya0FsbEFzVG91Y2hlZCgpYCBzZW0gZXhpZ2lyIGBkaXJ0eWAgZW0gY2FkYSBjYW1wby5cclxuICogTsOjbyB1c2FyIGB0b3VjaGVkYCBzb3ppbmhvOiBUYWIvYmx1ciBtYXJjYSB0b3VjaGVkIHNlbSBhbHRlcmFyIHZhbG9yIGUgbsOjbyBkZXZlIGFjZW5kZXIgbyDDrWNvbmUuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gc3VidHJlZUhhc1Zpc2libGVJbnZhbGlkKFxyXG4gIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCxcclxuICBmb3JtU3VibWl0dGVkID0gZmFsc2UsXHJcbik6IGJvb2xlYW4ge1xyXG4gIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUNvbnRyb2wpIHtcclxuICAgIHJldHVybiAhIShjb250cm9sLmludmFsaWQgJiYgKGNvbnRyb2wuZGlydHkgfHwgZm9ybVN1Ym1pdHRlZCkpO1xyXG4gIH1cclxuICBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xyXG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoY29udHJvbC5jb250cm9scykpIHtcclxuICAgICAgY29uc3QgY2ggPSBjb250cm9sLmNvbnRyb2xzW2tleV07XHJcbiAgICAgIGlmIChjaCAmJiBzdWJ0cmVlSGFzVmlzaWJsZUludmFsaWQoY2gsIGZvcm1TdWJtaXR0ZWQpKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbiAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29udHJvbC5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCBjaCA9IGNvbnRyb2wuYXQoaSk7XHJcbiAgICAgIGlmIChjaCAmJiBzdWJ0cmVlSGFzVmlzaWJsZUludmFsaWQoY2gsIGZvcm1TdWJtaXR0ZWQpKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbiAgcmV0dXJuIGZhbHNlO1xyXG59XHJcblxyXG4vKipcclxuICogQ3JpdMOpcmlvIGFsaW5oYWRvIGFvIMOtY29uZSBhdXRvbcOhdGljbyBkZSBgYXBwLWZvcm0tZ3JvdXBgIGNvbSBgZm9ybUdyb3VwUGF0aGBcclxuICogKGUgcmV1dGlsaXrDoXZlbCBwYXJhIGF2aXNvIHBvciBzZXBhcmFkb3IsIGV4LiBgYXBwLWZvcm0tdGFiYCArIGBmb3JtR3JvdXBOYW1lYCkuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gc2VjdGlvbkhhc1Zpc2libGVJbnZhbGlkKFxyXG4gIHJvb3Q6IEFic3RyYWN0Q29udHJvbCxcclxuICBwYXRoOiBzdHJpbmcsXHJcbiAgZm9ybVN1Ym1pdHRlZCA9IGZhbHNlLFxyXG4pOiBib29sZWFuIHtcclxuICBjb25zdCBjID0gcmVzb2x2ZUNvbnRyb2xBdFBhdGgocm9vdCwgcGF0aCk7XHJcbiAgcmV0dXJuIGMgPyBzdWJ0cmVlSGFzVmlzaWJsZUludmFsaWQoYywgZm9ybVN1Ym1pdHRlZCkgOiBmYWxzZTtcclxufVxyXG4iXX0=
@@ -1,54 +0,0 @@
1
- import { fromEvent, merge, timer } from 'rxjs';
2
- import { debounceTime, switchMap } from 'rxjs/operators';
3
- /**
4
- * Um `FormGroup` raiz partilhado por vários `app-form-group` com `formGroupPath`: uma única
5
- * subscrição agregada evita `merge` duplicados e garante `markForCheck` em todos os anfitriões.
6
- *
7
- * Usa-se só `valueChanges` / `statusChanges` do **raiz**: ao alterar um filho, o Angular propaga
8
- * `updateValueAndValidity` para os ascendentes e o raiz volta a emitir `statusChanges` / `valueChanges`
9
- * (comportamento de {@link AbstractControl#updateValueAndValidity}). Subscrever cada folho
10
- * multiplicava observables (dezenas por formulário) e deixava o runtime pesado em formulários grandes.
11
- */
12
- const rootRefreshRegistry = new WeakMap();
13
- function markAllCdrs(entry) {
14
- for (const c of entry.cdRefs) {
15
- c.markForCheck();
16
- }
17
- }
18
- /**
19
- * Mantém ícones / getters que dependem do estado reactivo actualizados com OnPush.
20
- * `markAllAsTouched()` pode não emitir `valueChanges` no raiz; o `submit` do `<form>` (após um tick)
21
- * cobre o caso de submissão — alinhado a {@link FormGroupComponent} `setupFormPathInvalidTracking`.
22
- */
23
- export function subscribeMarkForCheckOnInvalidUiRefresh(rootCtrl, hostElement, cdr, destroyRef) {
24
- let entry = rootRefreshRegistry.get(rootCtrl);
25
- if (!entry) {
26
- entry = { cdRefs: new Set(), sub: null };
27
- rootRefreshRegistry.set(rootCtrl, entry);
28
- }
29
- entry.cdRefs.add(cdr);
30
- if (!entry.sub) {
31
- const streams = [rootCtrl.valueChanges, rootCtrl.statusChanges];
32
- const formEl = hostElement.closest('form') ?? hostElement.querySelector('form');
33
- if (formEl) {
34
- streams.push(fromEvent(formEl, 'submit').pipe(switchMap(() => timer(0))));
35
- }
36
- /** Agrupa rajadas síncronas (ex.: um `patchValue` que dispara valor + estado no mesmo turno). */
37
- entry.sub = merge(...streams)
38
- .pipe(debounceTime(0))
39
- .subscribe(() => markAllCdrs(entry));
40
- }
41
- destroyRef.onDestroy(() => {
42
- const e = rootRefreshRegistry.get(rootCtrl);
43
- if (!e) {
44
- return;
45
- }
46
- e.cdRefs.delete(cdr);
47
- if (e.cdRefs.size === 0) {
48
- e.sub?.unsubscribe();
49
- e.sub = null;
50
- rootRefreshRegistry.delete(rootCtrl);
51
- }
52
- });
53
- }
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1yb290LWludmFsaWQtdWktcmVmcmVzaC51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9mb3JtLWxheW91dC9mb3JtLWdyb3VwL2Zvcm0tcm9vdC1pbnZhbGlkLXVpLXJlZnJlc2gudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQTRCLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFPekQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLG1CQUFtQixHQUFHLElBQUksT0FBTyxFQUFrQyxDQUFDO0FBRTFFLFNBQVMsV0FBVyxDQUFDLEtBQW9CO0lBQ3ZDLEtBQUssTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzdCLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNuQixDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsdUNBQXVDLENBQ3JELFFBQXlCLEVBQ3pCLFdBQXdCLEVBQ3hCLEdBQXNCLEVBQ3RCLFVBQXNCO0lBRXRCLElBQUksS0FBSyxHQUFHLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM5QyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDWCxLQUFLLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDekMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBQ0QsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNmLE1BQU0sT0FBTyxHQUEwQixDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXZGLE1BQU0sTUFBTSxHQUNWLFdBQVcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksV0FBVyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuRSxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsT0FBTyxDQUFDLElBQUksQ0FDVixTQUFTLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDNUQsQ0FBQztRQUNKLENBQUM7UUFFRCxpR0FBaUc7UUFDakcsS0FBSyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxPQUFPLENBQUM7YUFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNyQixTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLEtBQU0sQ0FBQyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ3hCLE1BQU0sQ0FBQyxHQUFHLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDUCxPQUFPO1FBQ1QsQ0FBQztRQUNELENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDeEIsQ0FBQyxDQUFDLEdBQUcsRUFBRSxXQUFXLEVBQUUsQ0FBQztZQUNyQixDQUFDLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQztZQUNiLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2QyxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIERlc3Ryb3lSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgZnJvbUV2ZW50LCBtZXJnZSwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG50eXBlIFJlZ2lzdHJ5RW50cnkgPSB7XG4gIGNkUmVmczogU2V0PENoYW5nZURldGVjdG9yUmVmPjtcbiAgc3ViOiBTdWJzY3JpcHRpb24gfCBudWxsO1xufTtcblxuLyoqXG4gKiBVbSBgRm9ybUdyb3VwYCByYWl6IHBhcnRpbGhhZG8gcG9yIHbDoXJpb3MgYGFwcC1mb3JtLWdyb3VwYCBjb20gYGZvcm1Hcm91cFBhdGhgOiB1bWEgw7puaWNhXG4gKiBzdWJzY3Jpw6fDo28gYWdyZWdhZGEgZXZpdGEgYG1lcmdlYCBkdXBsaWNhZG9zIGUgZ2FyYW50ZSBgbWFya0ZvckNoZWNrYCBlbSB0b2RvcyBvcyBhbmZpdHJpw7Vlcy5cbiAqXG4gKiBVc2Etc2Ugc8OzIGB2YWx1ZUNoYW5nZXNgIC8gYHN0YXR1c0NoYW5nZXNgIGRvICoqcmFpeioqOiBhbyBhbHRlcmFyIHVtIGZpbGhvLCBvIEFuZ3VsYXIgcHJvcGFnYVxuICogYHVwZGF0ZVZhbHVlQW5kVmFsaWRpdHlgIHBhcmEgb3MgYXNjZW5kZW50ZXMgZSBvIHJhaXogdm9sdGEgYSBlbWl0aXIgYHN0YXR1c0NoYW5nZXNgIC8gYHZhbHVlQ2hhbmdlc2BcbiAqIChjb21wb3J0YW1lbnRvIGRlIHtAbGluayBBYnN0cmFjdENvbnRyb2wjdXBkYXRlVmFsdWVBbmRWYWxpZGl0eX0pLiBTdWJzY3JldmVyIGNhZGEgZm9saG9cbiAqIG11bHRpcGxpY2F2YSBvYnNlcnZhYmxlcyAoZGV6ZW5hcyBwb3IgZm9ybXVsw6FyaW8pIGUgZGVpeGF2YSBvIHJ1bnRpbWUgcGVzYWRvIGVtIGZvcm11bMOhcmlvcyBncmFuZGVzLlxuICovXG5jb25zdCByb290UmVmcmVzaFJlZ2lzdHJ5ID0gbmV3IFdlYWtNYXA8QWJzdHJhY3RDb250cm9sLCBSZWdpc3RyeUVudHJ5PigpO1xuXG5mdW5jdGlvbiBtYXJrQWxsQ2RycyhlbnRyeTogUmVnaXN0cnlFbnRyeSk6IHZvaWQge1xuICBmb3IgKGNvbnN0IGMgb2YgZW50cnkuY2RSZWZzKSB7XG4gICAgYy5tYXJrRm9yQ2hlY2soKTtcbiAgfVxufVxuXG4vKipcbiAqIE1hbnTDqW0gw61jb25lcyAvIGdldHRlcnMgcXVlIGRlcGVuZGVtIGRvIGVzdGFkbyByZWFjdGl2byBhY3R1YWxpemFkb3MgY29tIE9uUHVzaC5cbiAqIGBtYXJrQWxsQXNUb3VjaGVkKClgIHBvZGUgbsOjbyBlbWl0aXIgYHZhbHVlQ2hhbmdlc2Agbm8gcmFpejsgbyBgc3VibWl0YCBkbyBgPGZvcm0+YCAoYXDDs3MgdW0gdGljaylcbiAqIGNvYnJlIG8gY2FzbyBkZSBzdWJtaXNzw6NvIOKAlCBhbGluaGFkbyBhIHtAbGluayBGb3JtR3JvdXBDb21wb25lbnR9IGBzZXR1cEZvcm1QYXRoSW52YWxpZFRyYWNraW5nYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN1YnNjcmliZU1hcmtGb3JDaGVja09uSW52YWxpZFVpUmVmcmVzaChcbiAgcm9vdEN0cmw6IEFic3RyYWN0Q29udHJvbCxcbiAgaG9zdEVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICBkZXN0cm95UmVmOiBEZXN0cm95UmVmLFxuKTogdm9pZCB7XG4gIGxldCBlbnRyeSA9IHJvb3RSZWZyZXNoUmVnaXN0cnkuZ2V0KHJvb3RDdHJsKTtcbiAgaWYgKCFlbnRyeSkge1xuICAgIGVudHJ5ID0geyBjZFJlZnM6IG5ldyBTZXQoKSwgc3ViOiBudWxsIH07XG4gICAgcm9vdFJlZnJlc2hSZWdpc3RyeS5zZXQocm9vdEN0cmwsIGVudHJ5KTtcbiAgfVxuICBlbnRyeS5jZFJlZnMuYWRkKGNkcik7XG5cbiAgaWYgKCFlbnRyeS5zdWIpIHtcbiAgICBjb25zdCBzdHJlYW1zOiBPYnNlcnZhYmxlPHVua25vd24+W10gPSBbcm9vdEN0cmwudmFsdWVDaGFuZ2VzLCByb290Q3RybC5zdGF0dXNDaGFuZ2VzXTtcblxuICAgIGNvbnN0IGZvcm1FbCA9XG4gICAgICBob3N0RWxlbWVudC5jbG9zZXN0KCdmb3JtJykgPz8gaG9zdEVsZW1lbnQucXVlcnlTZWxlY3RvcignZm9ybScpO1xuICAgIGlmIChmb3JtRWwpIHtcbiAgICAgIHN0cmVhbXMucHVzaChcbiAgICAgICAgZnJvbUV2ZW50KGZvcm1FbCwgJ3N1Ym1pdCcpLnBpcGUoc3dpdGNoTWFwKCgpID0+IHRpbWVyKDApKSksXG4gICAgICApO1xuICAgIH1cblxuICAgIC8qKiBBZ3J1cGEgcmFqYWRhcyBzw61uY3JvbmFzIChleC46IHVtIGBwYXRjaFZhbHVlYCBxdWUgZGlzcGFyYSB2YWxvciArIGVzdGFkbyBubyBtZXNtbyB0dXJubykuICovXG4gICAgZW50cnkuc3ViID0gbWVyZ2UoLi4uc3RyZWFtcylcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSgwKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gbWFya0FsbENkcnMoZW50cnkhKSk7XG4gIH1cblxuICBkZXN0cm95UmVmLm9uRGVzdHJveSgoKSA9PiB7XG4gICAgY29uc3QgZSA9IHJvb3RSZWZyZXNoUmVnaXN0cnkuZ2V0KHJvb3RDdHJsKTtcbiAgICBpZiAoIWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZS5jZFJlZnMuZGVsZXRlKGNkcik7XG4gICAgaWYgKGUuY2RSZWZzLnNpemUgPT09IDApIHtcbiAgICAgIGUuc3ViPy51bnN1YnNjcmliZSgpO1xuICAgICAgZS5zdWIgPSBudWxsO1xuICAgICAgcm9vdFJlZnJlc2hSZWdpc3RyeS5kZWxldGUocm9vdEN0cmwpO1xuICAgIH1cbiAgfSk7XG59XG4iXX0=
@@ -1,49 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, HostBinding, Input, booleanAttribute, } from '@angular/core';
2
- import { FormRowAlign, FormRowGap, FormRowJustify } from '../_models/form-layout.model';
3
- import * as i0 from "@angular/core";
4
- export class FormRowComponent {
5
- constructor() {
6
- this.gap = FormRowGap.Md;
7
- this.align = FormRowAlign.Stretch;
8
- this.justify = FormRowJustify.Start;
9
- this.wrap = true;
10
- this.stackOnMobile = true;
11
- }
12
- get hostClass() {
13
- const parts = [
14
- 'form-row',
15
- `form-row--gap-${this.gap}`,
16
- `form-row--align-${this.align}`,
17
- `form-row--justify-${this.justify}`,
18
- ];
19
- if (this.wrap) {
20
- parts.push('form-row--wrap');
21
- }
22
- if (this.stackOnMobile) {
23
- parts.push('form-row--stack-mobile');
24
- }
25
- return parts.join(' ');
26
- }
27
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormRowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
28
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.12", type: FormRowComponent, isStandalone: true, selector: "app-form-row", inputs: { gap: "gap", align: "align", justify: "justify", wrap: ["wrap", "wrap", booleanAttribute], stackOnMobile: ["stackOnMobile", "stackOnMobile", booleanAttribute] }, host: { properties: { "class": "this.hostClass" } }, ngImport: i0, template: "<div class=\"form-row__grid\">\r\n <ng-content />\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;min-width:0;box-sizing:border-box}.form-row__grid{display:grid;width:100%;min-width:0;box-sizing:border-box;grid-template-columns:repeat(12,minmax(0,1fr));align-items:stretch}:host(.form-row--gap-xs) .form-row__grid{gap:.35rem .5rem}:host(.form-row--gap-sm) .form-row__grid{gap:.5rem .75rem}:host(.form-row--gap-md) .form-row__grid{gap:.75rem 1.25rem}:host(.form-row--gap-lg) .form-row__grid{gap:1rem 1.5rem}:host(.form-row--align-start) .form-row__grid{align-items:start}:host(.form-row--align-center) .form-row__grid{align-items:center}:host(.form-row--align-end) .form-row__grid{align-items:end}:host(.form-row--align-stretch) .form-row__grid{align-items:stretch}:host(.form-row--justify-start) .form-row__grid{justify-items:stretch;justify-content:start}:host(.form-row--justify-center) .form-row__grid{justify-content:center}:host(.form-row--justify-end) .form-row__grid{justify-content:end}:host(.form-row--justify-between) .form-row__grid{justify-content:space-between}@media (max-width: 39.98rem){:host(.form-row--stack-mobile) .form-row__grid{grid-template-columns:1fr}:host(.form-row--stack-mobile) .form-row__grid ::ng-deep>app-form-col{grid-column:1/-1!important}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
29
- }
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormRowComponent, decorators: [{
31
- type: Component,
32
- args: [{ selector: 'app-form-row', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"form-row__grid\">\r\n <ng-content />\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;min-width:0;box-sizing:border-box}.form-row__grid{display:grid;width:100%;min-width:0;box-sizing:border-box;grid-template-columns:repeat(12,minmax(0,1fr));align-items:stretch}:host(.form-row--gap-xs) .form-row__grid{gap:.35rem .5rem}:host(.form-row--gap-sm) .form-row__grid{gap:.5rem .75rem}:host(.form-row--gap-md) .form-row__grid{gap:.75rem 1.25rem}:host(.form-row--gap-lg) .form-row__grid{gap:1rem 1.5rem}:host(.form-row--align-start) .form-row__grid{align-items:start}:host(.form-row--align-center) .form-row__grid{align-items:center}:host(.form-row--align-end) .form-row__grid{align-items:end}:host(.form-row--align-stretch) .form-row__grid{align-items:stretch}:host(.form-row--justify-start) .form-row__grid{justify-items:stretch;justify-content:start}:host(.form-row--justify-center) .form-row__grid{justify-content:center}:host(.form-row--justify-end) .form-row__grid{justify-content:end}:host(.form-row--justify-between) .form-row__grid{justify-content:space-between}@media (max-width: 39.98rem){:host(.form-row--stack-mobile) .form-row__grid{grid-template-columns:1fr}:host(.form-row--stack-mobile) .form-row__grid ::ng-deep>app-form-col{grid-column:1/-1!important}}\n"] }]
33
- }], propDecorators: { gap: [{
34
- type: Input
35
- }], align: [{
36
- type: Input
37
- }], justify: [{
38
- type: Input
39
- }], wrap: [{
40
- type: Input,
41
- args: [{ transform: booleanAttribute }]
42
- }], stackOnMobile: [{
43
- type: Input,
44
- args: [{ transform: booleanAttribute }]
45
- }], hostClass: [{
46
- type: HostBinding,
47
- args: ['class']
48
- }] } });
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1yb3cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9mb3JtLWxheW91dC9mb3JtLXJvdy9mb3JtLXJvdy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2Zvcm0tbGF5b3V0L2Zvcm0tcm93L2Zvcm0tcm93LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFdBQVcsRUFDWCxLQUFLLEVBQ0wsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLDhCQUE4QixDQUFDOztBQVN4RixNQUFNLE9BQU8sZ0JBQWdCO0lBUDdCO1FBUVcsUUFBRyxHQUFlLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDaEMsVUFBSyxHQUFpQixZQUFZLENBQUMsT0FBTyxDQUFDO1FBQzNDLFlBQU8sR0FBbUIsY0FBYyxDQUFDLEtBQUssQ0FBQztRQUNoQixTQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ1osa0JBQWEsR0FBRyxJQUFJLENBQUM7S0FrQjlEO0lBaEJDLElBQ0ksU0FBUztRQUNYLE1BQU0sS0FBSyxHQUFHO1lBQ1osVUFBVTtZQUNWLGlCQUFpQixJQUFJLENBQUMsR0FBRyxFQUFFO1lBQzNCLG1CQUFtQixJQUFJLENBQUMsS0FBSyxFQUFFO1lBQy9CLHFCQUFxQixJQUFJLENBQUMsT0FBTyxFQUFFO1NBQ3BDLENBQUM7UUFDRixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNkLEtBQUssQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUMvQixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkIsS0FBSyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekIsQ0FBQzsrR0F0QlUsZ0JBQWdCO21HQUFoQixnQkFBZ0IsaUlBSVAsZ0JBQWdCLHFEQUNoQixnQkFBZ0Isa0ZDckJ0QyxrRUFHQTs7NEZEYWEsZ0JBQWdCO2tCQVA1QixTQUFTOytCQUNFLGNBQWMsY0FDWixJQUFJLG1CQUdDLHVCQUF1QixDQUFDLE1BQU07OEJBR3RDLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNrQyxJQUFJO3NCQUEzQyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNFLGFBQWE7c0JBQXBELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBR2xDLFNBQVM7c0JBRFosV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDb21wb25lbnQsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgSW5wdXQsXHJcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybVJvd0FsaWduLCBGb3JtUm93R2FwLCBGb3JtUm93SnVzdGlmeSB9IGZyb20gJy4uL19tb2RlbHMvZm9ybS1sYXlvdXQubW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtZm9ybS1yb3cnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tcm93LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vZm9ybS1yb3cuY29tcG9uZW50LnNjc3MnLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9ybVJvd0NvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgZ2FwOiBGb3JtUm93R2FwID0gRm9ybVJvd0dhcC5NZDtcclxuICBASW5wdXQoKSBhbGlnbjogRm9ybVJvd0FsaWduID0gRm9ybVJvd0FsaWduLlN0cmV0Y2g7XHJcbiAgQElucHV0KCkganVzdGlmeTogRm9ybVJvd0p1c3RpZnkgPSBGb3JtUm93SnVzdGlmeS5TdGFydDtcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgd3JhcCA9IHRydWU7XHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHN0YWNrT25Nb2JpbGUgPSB0cnVlO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcclxuICBnZXQgaG9zdENsYXNzKCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBwYXJ0cyA9IFtcclxuICAgICAgJ2Zvcm0tcm93JyxcclxuICAgICAgYGZvcm0tcm93LS1nYXAtJHt0aGlzLmdhcH1gLFxyXG4gICAgICBgZm9ybS1yb3ctLWFsaWduLSR7dGhpcy5hbGlnbn1gLFxyXG4gICAgICBgZm9ybS1yb3ctLWp1c3RpZnktJHt0aGlzLmp1c3RpZnl9YCxcclxuICAgIF07XHJcbiAgICBpZiAodGhpcy53cmFwKSB7XHJcbiAgICAgIHBhcnRzLnB1c2goJ2Zvcm0tcm93LS13cmFwJyk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zdGFja09uTW9iaWxlKSB7XHJcbiAgICAgIHBhcnRzLnB1c2goJ2Zvcm0tcm93LS1zdGFjay1tb2JpbGUnKTtcclxuICAgIH1cclxuICAgIHJldHVybiBwYXJ0cy5qb2luKCcgJyk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJmb3JtLXJvd19fZ3JpZFwiPlxyXG4gIDxuZy1jb250ZW50IC8+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -1,43 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, HostBinding, Input, booleanAttribute, } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class FormSectionComponent {
4
- constructor() {
5
- this.subtitulo = '';
6
- this.dense = false;
7
- this.withDivider = true;
8
- }
9
- get hostClass() {
10
- const parts = ['form-section'];
11
- if (this.dense) {
12
- parts.push('form-section--dense');
13
- }
14
- if (this.withDivider) {
15
- parts.push('form-section--divider');
16
- }
17
- return parts.join(' ');
18
- }
19
- get showHeader() {
20
- return this.titulo.trim().length > 0 || this.subtitulo.trim().length > 0;
21
- }
22
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormSectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
23
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: FormSectionComponent, isStandalone: true, selector: "app-form-section", inputs: { titulo: "titulo", subtitulo: "subtitulo", dense: ["dense", "dense", booleanAttribute], withDivider: ["withDivider", "withDivider", booleanAttribute] }, host: { properties: { "class": "this.hostClass" } }, ngImport: i0, template: "@if (showHeader) {\r\n<header class=\"form-section__header\">\r\n @if (titulo.trim()) {\r\n <h2 class=\"form-section__title\">{{ titulo }}</h2>\r\n }\r\n @if (subtitulo.trim()) {\r\n <p class=\"form-section__subtitle\">{{ subtitulo }}</p>\r\n }\r\n</header>\r\n}\r\n<div class=\"form-section__body\">\r\n <ng-content />\r\n</div>", styles: [":host{display:block;width:100%;min-width:0;box-sizing:border-box}.form-section__header{margin:0 0 1.25rem;padding:0}.form-section__title{margin:0 0 .35rem;font-size:1.25rem;font-weight:600;line-height:1.3;color:var(--ui-field-label-color, #1a1a1a)}.form-section__subtitle{margin:0;font-size:.9rem;line-height:1.45;color:#525252}.form-section__body{display:flex;flex-direction:column;gap:1rem;min-width:0}:host.form-section--dense .form-section__header{margin-bottom:.75rem}:host.form-section--dense .form-section__title{font-size:1.1rem}:host.form-section--dense .form-section__body{gap:.65rem}:host.form-section--divider{padding-bottom:1.75rem;margin-bottom:1.75rem;border-bottom:1px solid #e5e5e5}:host.form-section--dense.form-section--divider{padding-bottom:1.25rem;margin-bottom:1.25rem}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
24
- }
25
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormSectionComponent, decorators: [{
26
- type: Component,
27
- args: [{ selector: 'app-form-section', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (showHeader) {\r\n<header class=\"form-section__header\">\r\n @if (titulo.trim()) {\r\n <h2 class=\"form-section__title\">{{ titulo }}</h2>\r\n }\r\n @if (subtitulo.trim()) {\r\n <p class=\"form-section__subtitle\">{{ subtitulo }}</p>\r\n }\r\n</header>\r\n}\r\n<div class=\"form-section__body\">\r\n <ng-content />\r\n</div>", styles: [":host{display:block;width:100%;min-width:0;box-sizing:border-box}.form-section__header{margin:0 0 1.25rem;padding:0}.form-section__title{margin:0 0 .35rem;font-size:1.25rem;font-weight:600;line-height:1.3;color:var(--ui-field-label-color, #1a1a1a)}.form-section__subtitle{margin:0;font-size:.9rem;line-height:1.45;color:#525252}.form-section__body{display:flex;flex-direction:column;gap:1rem;min-width:0}:host.form-section--dense .form-section__header{margin-bottom:.75rem}:host.form-section--dense .form-section__title{font-size:1.1rem}:host.form-section--dense .form-section__body{gap:.65rem}:host.form-section--divider{padding-bottom:1.75rem;margin-bottom:1.75rem;border-bottom:1px solid #e5e5e5}:host.form-section--dense.form-section--divider{padding-bottom:1.25rem;margin-bottom:1.25rem}\n"] }]
28
- }], propDecorators: { titulo: [{
29
- type: Input,
30
- args: [{ required: true }]
31
- }], subtitulo: [{
32
- type: Input
33
- }], dense: [{
34
- type: Input,
35
- args: [{ transform: booleanAttribute }]
36
- }], withDivider: [{
37
- type: Input,
38
- args: [{ transform: booleanAttribute }]
39
- }], hostClass: [{
40
- type: HostBinding,
41
- args: ['class']
42
- }] } });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zZWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZm9ybS1sYXlvdXQvZm9ybS1zZWN0aW9uL2Zvcm0tc2VjdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2Zvcm0tbGF5b3V0L2Zvcm0tc2VjdGlvbi9mb3JtLXNlY3Rpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsV0FBVyxFQUNYLEtBQUssRUFDTCxnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7O0FBU3ZCLE1BQU0sT0FBTyxvQkFBb0I7SUFQakM7UUFTVyxjQUFTLEdBQUcsRUFBRSxDQUFDO1FBRWdCLFVBQUssR0FBRyxLQUFLLENBQUM7UUFDZCxnQkFBVyxHQUFHLElBQUksQ0FBQztLQWlCNUQ7SUFmQyxJQUNJLFNBQVM7UUFDWCxNQUFNLEtBQUssR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQy9CLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2YsS0FBSyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3BDLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixLQUFLLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQzNFLENBQUM7K0dBckJVLG9CQUFvQjttR0FBcEIsb0JBQW9CLGtJQUlYLGdCQUFnQiwrQ0FDaEIsZ0JBQWdCLGtGQ3BCdEMsa1ZBWU07OzRGREdPLG9CQUFvQjtrQkFQaEMsU0FBUzsrQkFDRSxrQkFBa0IsY0FDaEIsSUFBSSxtQkFHQyx1QkFBdUIsQ0FBQyxNQUFNOzhCQUdwQixNQUFNO3NCQUFoQyxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFDaEIsU0FBUztzQkFBakIsS0FBSztnQkFFa0MsS0FBSztzQkFBNUMsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRSxXQUFXO3NCQUFsRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUdsQyxTQUFTO3NCQURaLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIElucHV0LFxyXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1mb3JtLXNlY3Rpb24nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tc2VjdGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2Zvcm0tc2VjdGlvbi5jb21wb25lbnQuc2NzcycsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtU2VjdGlvbkNvbXBvbmVudCB7XHJcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgdGl0dWxvITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHN1YnRpdHVsbyA9ICcnO1xyXG5cclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgZGVuc2UgPSBmYWxzZTtcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgd2l0aERpdmlkZXIgPSB0cnVlO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcclxuICBnZXQgaG9zdENsYXNzKCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBwYXJ0cyA9IFsnZm9ybS1zZWN0aW9uJ107XHJcbiAgICBpZiAodGhpcy5kZW5zZSkge1xyXG4gICAgICBwYXJ0cy5wdXNoKCdmb3JtLXNlY3Rpb24tLWRlbnNlJyk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy53aXRoRGl2aWRlcikge1xyXG4gICAgICBwYXJ0cy5wdXNoKCdmb3JtLXNlY3Rpb24tLWRpdmlkZXInKTtcclxuICAgIH1cclxuICAgIHJldHVybiBwYXJ0cy5qb2luKCcgJyk7XHJcbiAgfVxyXG5cclxuICBnZXQgc2hvd0hlYWRlcigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnRpdHVsby50cmltKCkubGVuZ3RoID4gMCB8fCB0aGlzLnN1YnRpdHVsby50cmltKCkubGVuZ3RoID4gMDtcclxuICB9XHJcbn1cclxuIiwiQGlmIChzaG93SGVhZGVyKSB7XHJcbjxoZWFkZXIgY2xhc3M9XCJmb3JtLXNlY3Rpb25fX2hlYWRlclwiPlxyXG4gIEBpZiAodGl0dWxvLnRyaW0oKSkge1xyXG4gIDxoMiBjbGFzcz1cImZvcm0tc2VjdGlvbl9fdGl0bGVcIj57eyB0aXR1bG8gfX08L2gyPlxyXG4gIH1cclxuICBAaWYgKHN1YnRpdHVsby50cmltKCkpIHtcclxuICA8cCBjbGFzcz1cImZvcm0tc2VjdGlvbl9fc3VidGl0bGVcIj57eyBzdWJ0aXR1bG8gfX08L3A+XHJcbiAgfVxyXG48L2hlYWRlcj5cclxufVxyXG48ZGl2IGNsYXNzPVwiZm9ybS1zZWN0aW9uX19ib2R5XCI+XHJcbiAgPG5nLWNvbnRlbnQgLz5cclxuPC9kaXY+Il19
@@ -1,67 +0,0 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostBinding, Input, booleanAttribute, inject, } from '@angular/core';
2
- import { FormTabsComponent } from '../form-tabs/form-tabs.component';
3
- import * as i0 from "@angular/core";
4
- export class FormTabComponent {
5
- constructor() {
6
- /** Sem `host: true`: o pai está no injetor normal (filho de `app-form-tabs`). */
7
- this.tabs = inject(FormTabsComponent, { optional: true });
8
- this.cdr = inject(ChangeDetectorRef);
9
- this.disabled = false;
10
- this.warning = false;
11
- }
12
- ngOnChanges(changes) {
13
- if (!this.tabs ||
14
- (!changes['warning'] && !changes['disabled'] && !changes['tabTitle'])) {
15
- return;
16
- }
17
- this.tabs.onTabHeaderStateChanged();
18
- }
19
- get isActive() {
20
- if (!this.tabs) {
21
- return false;
22
- }
23
- return this.tabs.activeKey === this.key;
24
- }
25
- /**
26
- * Com `[keepAlive]="false"` no `app-form-tabs` pai, painéis inactivos saem do DOM (menos
27
- * custo acumulado em ecrãs com muitas abas ou conteúdo pesado).
28
- */
29
- get detachInactivePanel() {
30
- return !!this.tabs && this.tabs.keepAlive === false;
31
- }
32
- /** Chamado por {@link FormTabsComponent} quando a aba ativa muda (OnPush). */
33
- refreshActiveState() {
34
- this.cdr.markForCheck();
35
- }
36
- get hostClass() {
37
- return 'form-tab';
38
- }
39
- panelId() {
40
- return this.tabs ? this.tabs.panelIdFor(this.key) : `form-tab-panel-${this.key}`;
41
- }
42
- labelledById() {
43
- return this.tabs ? this.tabs.headerIdFor(this.key) : '';
44
- }
45
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormTabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
46
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: FormTabComponent, isStandalone: true, selector: "app-form-tab", inputs: { key: "key", tabTitle: "tabTitle", disabled: ["disabled", "disabled", booleanAttribute], warning: ["warning", "warning", booleanAttribute] }, host: { properties: { "class": "this.hostClass" } }, usesOnChanges: true, ngImport: i0, template: "<div\r\n class=\"form-tab__panel\"\r\n role=\"tabpanel\"\r\n [id]=\"panelId()\"\r\n [attr.aria-labelledby]=\"labelledById() || null\"\r\n [attr.aria-hidden]=\"!isActive\"\r\n [hidden]=\"!isActive\"\r\n [class.form-tab__panel--active]=\"isActive\"\r\n>\r\n @if (!detachInactivePanel || isActive) {\r\n <ng-content />\r\n }\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host.form-tab{display:block;width:100%;box-sizing:border-box}.form-tab__panel{width:100%;min-width:0;box-sizing:border-box}:host ::ng-deep .form-tab__panel app-form-group+app-form-group{margin-top:1rem}.form-tab__panel--active{animation:form-tab-panel-in .28s ease-out}@keyframes form-tab-panel-in{0%{opacity:.72}to{opacity:1}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
47
- }
48
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormTabComponent, decorators: [{
49
- type: Component,
50
- args: [{ selector: 'app-form-tab', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"form-tab__panel\"\r\n role=\"tabpanel\"\r\n [id]=\"panelId()\"\r\n [attr.aria-labelledby]=\"labelledById() || null\"\r\n [attr.aria-hidden]=\"!isActive\"\r\n [hidden]=\"!isActive\"\r\n [class.form-tab__panel--active]=\"isActive\"\r\n>\r\n @if (!detachInactivePanel || isActive) {\r\n <ng-content />\r\n }\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host.form-tab{display:block;width:100%;box-sizing:border-box}.form-tab__panel{width:100%;min-width:0;box-sizing:border-box}:host ::ng-deep .form-tab__panel app-form-group+app-form-group{margin-top:1rem}.form-tab__panel--active{animation:form-tab-panel-in .28s ease-out}@keyframes form-tab-panel-in{0%{opacity:.72}to{opacity:1}}\n"] }]
51
- }], propDecorators: { key: [{
52
- type: Input,
53
- args: [{ required: true }]
54
- }], tabTitle: [{
55
- type: Input,
56
- args: [{ required: true }]
57
- }], disabled: [{
58
- type: Input,
59
- args: [{ transform: booleanAttribute }]
60
- }], warning: [{
61
- type: Input,
62
- args: [{ transform: booleanAttribute }]
63
- }], hostClass: [{
64
- type: HostBinding,
65
- args: ['class']
66
- }] } });
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS10YWIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9mb3JtLWxheW91dC9mb3JtLXRhYi9mb3JtLXRhYi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2Zvcm0tbGF5b3V0L2Zvcm0tdGFiL2Zvcm0tdGFiLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsS0FBSyxFQUdMLGdCQUFnQixFQUNoQixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7O0FBU3JFLE1BQU0sT0FBTyxnQkFBZ0I7SUFQN0I7UUFRRSxpRkFBaUY7UUFDaEUsU0FBSSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRXJELFFBQUcsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQVdULGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFakIsWUFBTyxHQUFHLEtBQUssQ0FBQztLQTRDekQ7SUExQ0MsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQ0UsQ0FBQyxJQUFJLENBQUMsSUFBSTtZQUNWLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsRUFDckUsQ0FBQztZQUNELE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2YsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJLG1CQUFtQjtRQUNyQixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxLQUFLLEtBQUssQ0FBQztJQUN0RCxDQUFDO0lBRUQsOEVBQThFO0lBQzlFLGtCQUFrQjtRQUNoQixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUNJLFNBQVM7UUFDWCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ25GLENBQUM7SUFFRCxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUMxRCxDQUFDOytHQTVEVSxnQkFBZ0I7bUdBQWhCLGdCQUFnQiwrSEFlUCxnQkFBZ0IsbUNBRWhCLGdCQUFnQix1R0NyQ3RDLDZWQWFBOzs0RkRPYSxnQkFBZ0I7a0JBUDVCLFNBQVM7K0JBQ0UsY0FBYyxjQUNaLElBQUksbUJBR0MsdUJBQXVCLENBQUMsTUFBTTs4QkFRcEIsR0FBRztzQkFBN0IsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBT0UsUUFBUTtzQkFBbEMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBRWUsUUFBUTtzQkFBL0MsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFFRSxPQUFPO3NCQUE5QyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQWlDbEMsU0FBUztzQkFEWixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtVGFic0NvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0tdGFicy9mb3JtLXRhYnMuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWZvcm0tdGFiJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tdGFiLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2Zvcm0tdGFiLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1UYWJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAvKiogU2VtIGBob3N0OiB0cnVlYDogbyBwYWkgZXN0w6Egbm8gaW5qZXRvciBub3JtYWwgKGZpbGhvIGRlIGBhcHAtZm9ybS10YWJzYCkuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgdGFicyA9IGluamVjdChGb3JtVGFic0NvbXBvbmVudCwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkga2V5ITogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUZXh0byBkbyBzZXBhcmFkb3IgbmEgbGlzdGEgZGUgYWJhcy5cbiAgICogTsOjbyB1c2FyIG8gbm9tZSBgdGl0bGVgOiBubyBob3N0IGA8YXBwLWZvcm0tdGFiPmAgbyBhdHJpYnV0byBIVE1MIGB0aXRsZWAgZ2VyYSB0b29sdGlwIG5hdGl2b1xuICAgKiBzb2JyZSBvIHBhaW5lbCAoZXguOiBhbyBwYXNzYXIgbyBtb3VzZSBzb2JyZSBvIGNvbnRlw7pkbykuXG4gICAqL1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSB0YWJUaXRsZSE6IHN0cmluZztcblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgZGlzYWJsZWQgPSBmYWxzZTtcblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgd2FybmluZyA9IGZhbHNlO1xuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICAhdGhpcy50YWJzIHx8XG4gICAgICAoIWNoYW5nZXNbJ3dhcm5pbmcnXSAmJiAhY2hhbmdlc1snZGlzYWJsZWQnXSAmJiAhY2hhbmdlc1sndGFiVGl0bGUnXSlcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy50YWJzLm9uVGFiSGVhZGVyU3RhdGVDaGFuZ2VkKCk7XG4gIH1cblxuICBnZXQgaXNBY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLnRhYnMpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudGFicy5hY3RpdmVLZXkgPT09IHRoaXMua2V5O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbSBgW2tlZXBBbGl2ZV09XCJmYWxzZVwiYCBubyBgYXBwLWZvcm0tdGFic2AgcGFpLCBwYWluw6lpcyBpbmFjdGl2b3Mgc2FlbSBkbyBET00gKG1lbm9zXG4gICAqIGN1c3RvIGFjdW11bGFkbyBlbSBlY3LDo3MgY29tIG11aXRhcyBhYmFzIG91IGNvbnRlw7pkbyBwZXNhZG8pLlxuICAgKi9cbiAgZ2V0IGRldGFjaEluYWN0aXZlUGFuZWwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy50YWJzICYmIHRoaXMudGFicy5rZWVwQWxpdmUgPT09IGZhbHNlO1xuICB9XG5cbiAgLyoqIENoYW1hZG8gcG9yIHtAbGluayBGb3JtVGFic0NvbXBvbmVudH0gcXVhbmRvIGEgYWJhIGF0aXZhIG11ZGEgKE9uUHVzaCkuICovXG4gIHJlZnJlc2hBY3RpdmVTdGF0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICBnZXQgaG9zdENsYXNzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdmb3JtLXRhYic7XG4gIH1cblxuICBwYW5lbElkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudGFicyA/IHRoaXMudGFicy5wYW5lbElkRm9yKHRoaXMua2V5KSA6IGBmb3JtLXRhYi1wYW5lbC0ke3RoaXMua2V5fWA7XG4gIH1cblxuICBsYWJlbGxlZEJ5SWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50YWJzID8gdGhpcy50YWJzLmhlYWRlcklkRm9yKHRoaXMua2V5KSA6ICcnO1xuICB9XG59XG4iLCI8ZGl2XHJcbiAgY2xhc3M9XCJmb3JtLXRhYl9fcGFuZWxcIlxyXG4gIHJvbGU9XCJ0YWJwYW5lbFwiXHJcbiAgW2lkXT1cInBhbmVsSWQoKVwiXHJcbiAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImxhYmVsbGVkQnlJZCgpIHx8IG51bGxcIlxyXG4gIFthdHRyLmFyaWEtaGlkZGVuXT1cIiFpc0FjdGl2ZVwiXHJcbiAgW2hpZGRlbl09XCIhaXNBY3RpdmVcIlxyXG4gIFtjbGFzcy5mb3JtLXRhYl9fcGFuZWwtLWFjdGl2ZV09XCJpc0FjdGl2ZVwiXHJcbj5cclxuICBAaWYgKCFkZXRhY2hJbmFjdGl2ZVBhbmVsIHx8IGlzQWN0aXZlKSB7XHJcbiAgICA8bmctY29udGVudCAvPlxyXG4gIH1cclxuPC9kaXY+XHJcbiJdfQ==
@@ -1,126 +0,0 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, EventEmitter, Input, Output, booleanAttribute, forwardRef, inject, } from '@angular/core';
2
- import { FormTabComponent } from '../form-tab/form-tab.component';
3
- import * as i0 from "@angular/core";
4
- export class FormTabsComponent {
5
- constructor() {
6
- this.cdr = inject(ChangeDetectorRef);
7
- this.uid = `ft-${++FormTabsComponent.nextUid}`;
8
- this._activeKey = '';
9
- this.activeKeyChange = new EventEmitter();
10
- /**
11
- * `true` (padrão): todos os painéis permanecem no DOM; inactivos usam `[hidden]` (útil para
12
- * preservar estado de UI puramente client-side dentro da aba).
13
- * `false`: só o painel da aba activa é montado — menos DOM/CD ao alternar; o modelo reactivo
14
- * (`FormGroup` no ascendente) mantém-se; ao voltar à aba, os campos remontam e religam-se.
15
- */
16
- this.keepAlive = true;
17
- this.stretch = false;
18
- this.variant = 'default';
19
- /** Rótulo acessível para a lista de separadores (ex.: “Seções do formulário”). */
20
- this.tablistAriaLabel = 'Separadores do formulário';
21
- }
22
- static { this.nextUid = 0; }
23
- set activeKey(v) {
24
- const next = (v ?? '').trim();
25
- if (next === this._activeKey) {
26
- return;
27
- }
28
- this._activeKey = next;
29
- queueMicrotask(() => this.refreshTabPanels());
30
- }
31
- get activeKey() {
32
- return this._activeKey;
33
- }
34
- ngAfterContentInit() {
35
- this.syncInitialActiveKey();
36
- this.tabQuery.changes.subscribe(() => {
37
- this.syncInitialActiveKey();
38
- this.cdr.markForCheck();
39
- });
40
- }
41
- get tabs() {
42
- return this.tabQuery?.toArray() ?? [];
43
- }
44
- get hostClass() {
45
- const parts = ['form-tabs', `form-tabs--${this.variant}`];
46
- if (this.stretch) {
47
- parts.push('form-tabs--stretch');
48
- }
49
- return parts.join(' ');
50
- }
51
- baseId() {
52
- return `form-tabs-${this.uid}`;
53
- }
54
- headerIdFor(key) {
55
- return `${this.baseId()}-tab-${key}`;
56
- }
57
- panelIdFor(key) {
58
- return `${this.baseId()}-panel-${key}`;
59
- }
60
- selectTab(key) {
61
- const tab = this.tabs.find((t) => t.key === key);
62
- if (!tab || tab.disabled) {
63
- return;
64
- }
65
- if (this._activeKey === key) {
66
- return;
67
- }
68
- this._activeKey = key;
69
- this.activeKeyChange.emit(key);
70
- this.cdr.markForCheck();
71
- this.refreshTabPanels();
72
- }
73
- refreshTabPanels() {
74
- this.tabQuery?.forEach((tab) => tab.refreshActiveState());
75
- }
76
- /**
77
- * Chamado por {@link FormTabComponent} quando inputs que afetam o tablist (ex.: `warning`, `tabTitle`)
78
- * mudam — com OnPush o cabeçalho não voltava a desenhar só com alterações nos filhos projetados.
79
- */
80
- onTabHeaderStateChanged() {
81
- this.cdr.markForCheck();
82
- }
83
- isSelected(key) {
84
- return this._activeKey === key;
85
- }
86
- syncInitialActiveKey() {
87
- const list = this.tabs;
88
- if (!list.length) {
89
- return;
90
- }
91
- const hasActive = !!this._activeKey && list.some((t) => t.key === this._activeKey);
92
- if (hasActive) {
93
- return;
94
- }
95
- const firstEnabled = list.find((t) => !t.disabled) ?? list[0];
96
- if (firstEnabled) {
97
- this._activeKey = firstEnabled.key;
98
- this.activeKeyChange.emit(this._activeKey);
99
- this.refreshTabPanels();
100
- }
101
- }
102
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormTabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
103
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: FormTabsComponent, isStandalone: true, selector: "app-form-tabs", inputs: { activeKey: "activeKey", keepAlive: ["keepAlive", "keepAlive", booleanAttribute], stretch: ["stretch", "stretch", booleanAttribute], variant: "variant", tablistAriaLabel: "tablistAriaLabel" }, outputs: { activeKeyChange: "activeKeyChange" }, queries: [{ propertyName: "tabQuery", predicate: i0.forwardRef(() => FormTabComponent) }], ngImport: i0, template: "<div [class]=\"hostClass\">\n <div class=\"form-tabs__shell\">\n <div class=\"form-tabs__header-scroll\">\n <div\n class=\"form-tabs__tablist\"\n role=\"tablist\"\n [attr.aria-label]=\"tablistAriaLabel\"\n >\n @for (tab of tabs; track tab.key) {\n <button\n type=\"button\"\n class=\"form-tabs__tab\"\n role=\"tab\"\n [id]=\"headerIdFor(tab.key)\"\n [attr.aria-selected]=\"isSelected(tab.key)\"\n [attr.aria-controls]=\"panelIdFor(tab.key)\"\n [attr.tabindex]=\"isSelected(tab.key) ? 0 : -1\"\n [disabled]=\"tab.disabled\"\n [class.form-tabs__tab--active]=\"isSelected(tab.key)\"\n [class.form-tabs__tab--warn]=\"tab.warning\"\n (click)=\"selectTab(tab.key)\"\n >\n <span class=\"form-tabs__tab-label\">{{ tab.tabTitle }}</span>\n @if (tab.warning) {\n <span\n class=\"form-tabs__tab-warn-icon\"\n aria-hidden=\"true\"\n title=\"Existem erros nesta se\u00E7\u00E3o\"\n >\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n </span>\n }\n </button>\n }\n </div>\n </div>\n <div class=\"form-tabs__panels\">\n <ng-content select=\"app-form-tab\" />\n </div>\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;box-sizing:border-box}.form-tabs{display:flex;flex-direction:column;width:100%;box-sizing:border-box}.form-tabs__shell{display:flex;flex-direction:column;gap:0;width:100%;padding:.7rem .85rem .85rem;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));border-radius:16px;background:var(--app-color-surface, #fff);box-sizing:border-box;box-shadow:0 1px 4px var(--app-color-shell-shadow, rgba(26, 47, 69, .05))}.form-tabs__header-scroll{width:100%;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:thin;box-sizing:border-box;padding:.2rem .1rem .55rem}.form-tabs__tablist{display:inline-flex;flex-wrap:nowrap;gap:.5rem;min-width:min-content;box-sizing:border-box}.form-tabs--stretch .form-tabs__tablist{width:100%}.form-tabs--stretch .form-tabs__tab{flex:1 1 0;justify-content:center}.form-tabs__tab{display:inline-flex;align-items:center;gap:.4rem;flex-shrink:0;margin:0;padding:.52rem 1rem;border:1px solid var(--app-color-tab-inactive-border, rgba(182, 204, 229, .75));border-radius:11px;background:var(--app-color-tab-inactive-bg, #f3f6f9);color:var(--app-color-tab-inactive-text, #51667a);font-size:.94rem;font-weight:500;font-family:inherit;line-height:1.25;cursor:pointer;white-space:nowrap;user-select:none;-webkit-user-select:none;transition:background .2s ease,border-color .2s ease,color .2s ease,box-shadow .2s ease}.form-tabs__tab:hover:not(:disabled):not(.form-tabs__tab--active){border-color:var(--app-color-tab-hover-border, rgba(43, 127, 217, .42));background:var(--app-color-tab-hover-bg, #eef3f8);color:var(--app-color-text-primary, #3d5266)}.form-tabs__tab:focus,.form-tabs__tab:focus-visible{outline:none}.form-tabs__tab:disabled{opacity:.55;cursor:not-allowed}.form-tabs__tab--active{border-color:var(--ui-field-float-border-focus, #2b7fd9);background:var(--app-color-surface, #fff);color:var(--ui-field-float-input-text, #0f1b28);font-weight:600;box-shadow:0 2px 8px var(--app-color-tab-shadow, rgba(43, 127, 217, .14)),0 0 0 1px var(--app-color-primary-muted, rgba(43, 127, 217, .07))}.form-tabs__tab--active:hover:not(:disabled){border-color:var(--ui-field-float-border-focus, #2b7fd9);box-shadow:0 3px 10px var(--app-color-tab-shadow, rgba(43, 127, 217, .16)),0 0 0 1px var(--app-color-primary-muted, rgba(43, 127, 217, .08))}.form-tabs__tab-label{max-width:14rem;overflow:hidden;text-overflow:ellipsis}.form-tabs__tab-warn-icon{display:inline-flex;align-items:center;justify-content:center;color:var(--ui-field-input-invalid-border, #b91c1c);font-size:.82rem;flex-shrink:0}.form-tabs__panels{position:relative;width:100%;min-width:0;box-sizing:border-box;margin-top:.1rem;padding-top:.75rem;border-top:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .06))}.form-tabs--pill .form-tabs__tab{border-radius:999px;padding-inline:1.15rem}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
104
- }
105
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormTabsComponent, decorators: [{
106
- type: Component,
107
- args: [{ selector: 'app-form-tabs', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [class]=\"hostClass\">\n <div class=\"form-tabs__shell\">\n <div class=\"form-tabs__header-scroll\">\n <div\n class=\"form-tabs__tablist\"\n role=\"tablist\"\n [attr.aria-label]=\"tablistAriaLabel\"\n >\n @for (tab of tabs; track tab.key) {\n <button\n type=\"button\"\n class=\"form-tabs__tab\"\n role=\"tab\"\n [id]=\"headerIdFor(tab.key)\"\n [attr.aria-selected]=\"isSelected(tab.key)\"\n [attr.aria-controls]=\"panelIdFor(tab.key)\"\n [attr.tabindex]=\"isSelected(tab.key) ? 0 : -1\"\n [disabled]=\"tab.disabled\"\n [class.form-tabs__tab--active]=\"isSelected(tab.key)\"\n [class.form-tabs__tab--warn]=\"tab.warning\"\n (click)=\"selectTab(tab.key)\"\n >\n <span class=\"form-tabs__tab-label\">{{ tab.tabTitle }}</span>\n @if (tab.warning) {\n <span\n class=\"form-tabs__tab-warn-icon\"\n aria-hidden=\"true\"\n title=\"Existem erros nesta se\u00E7\u00E3o\"\n >\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n </span>\n }\n </button>\n }\n </div>\n </div>\n <div class=\"form-tabs__panels\">\n <ng-content select=\"app-form-tab\" />\n </div>\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;box-sizing:border-box}.form-tabs{display:flex;flex-direction:column;width:100%;box-sizing:border-box}.form-tabs__shell{display:flex;flex-direction:column;gap:0;width:100%;padding:.7rem .85rem .85rem;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));border-radius:16px;background:var(--app-color-surface, #fff);box-sizing:border-box;box-shadow:0 1px 4px var(--app-color-shell-shadow, rgba(26, 47, 69, .05))}.form-tabs__header-scroll{width:100%;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:thin;box-sizing:border-box;padding:.2rem .1rem .55rem}.form-tabs__tablist{display:inline-flex;flex-wrap:nowrap;gap:.5rem;min-width:min-content;box-sizing:border-box}.form-tabs--stretch .form-tabs__tablist{width:100%}.form-tabs--stretch .form-tabs__tab{flex:1 1 0;justify-content:center}.form-tabs__tab{display:inline-flex;align-items:center;gap:.4rem;flex-shrink:0;margin:0;padding:.52rem 1rem;border:1px solid var(--app-color-tab-inactive-border, rgba(182, 204, 229, .75));border-radius:11px;background:var(--app-color-tab-inactive-bg, #f3f6f9);color:var(--app-color-tab-inactive-text, #51667a);font-size:.94rem;font-weight:500;font-family:inherit;line-height:1.25;cursor:pointer;white-space:nowrap;user-select:none;-webkit-user-select:none;transition:background .2s ease,border-color .2s ease,color .2s ease,box-shadow .2s ease}.form-tabs__tab:hover:not(:disabled):not(.form-tabs__tab--active){border-color:var(--app-color-tab-hover-border, rgba(43, 127, 217, .42));background:var(--app-color-tab-hover-bg, #eef3f8);color:var(--app-color-text-primary, #3d5266)}.form-tabs__tab:focus,.form-tabs__tab:focus-visible{outline:none}.form-tabs__tab:disabled{opacity:.55;cursor:not-allowed}.form-tabs__tab--active{border-color:var(--ui-field-float-border-focus, #2b7fd9);background:var(--app-color-surface, #fff);color:var(--ui-field-float-input-text, #0f1b28);font-weight:600;box-shadow:0 2px 8px var(--app-color-tab-shadow, rgba(43, 127, 217, .14)),0 0 0 1px var(--app-color-primary-muted, rgba(43, 127, 217, .07))}.form-tabs__tab--active:hover:not(:disabled){border-color:var(--ui-field-float-border-focus, #2b7fd9);box-shadow:0 3px 10px var(--app-color-tab-shadow, rgba(43, 127, 217, .16)),0 0 0 1px var(--app-color-primary-muted, rgba(43, 127, 217, .08))}.form-tabs__tab-label{max-width:14rem;overflow:hidden;text-overflow:ellipsis}.form-tabs__tab-warn-icon{display:inline-flex;align-items:center;justify-content:center;color:var(--ui-field-input-invalid-border, #b91c1c);font-size:.82rem;flex-shrink:0}.form-tabs__panels{position:relative;width:100%;min-width:0;box-sizing:border-box;margin-top:.1rem;padding-top:.75rem;border-top:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .06))}.form-tabs--pill .form-tabs__tab{border-radius:999px;padding-inline:1.15rem}\n"] }]
108
- }], propDecorators: { tabQuery: [{
109
- type: ContentChildren,
110
- args: [forwardRef(() => FormTabComponent), { descendants: false }]
111
- }], activeKey: [{
112
- type: Input
113
- }], activeKeyChange: [{
114
- type: Output
115
- }], keepAlive: [{
116
- type: Input,
117
- args: [{ transform: booleanAttribute }]
118
- }], stretch: [{
119
- type: Input,
120
- args: [{ transform: booleanAttribute }]
121
- }], variant: [{
122
- type: Input
123
- }], tablistAriaLabel: [{
124
- type: Input
125
- }] } });
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS10YWJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZm9ybS1sYXlvdXQvZm9ybS10YWJzL2Zvcm0tdGFicy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2Zvcm0tbGF5b3V0L2Zvcm0tdGFicy9mb3JtLXRhYnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFFTixnQkFBZ0IsRUFDaEIsVUFBVSxFQUNWLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7QUFVbEUsTUFBTSxPQUFPLGlCQUFpQjtJQVA5QjtRQVVtQixRQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFeEMsUUFBRyxHQUFHLE1BQU0sRUFBRSxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUszQyxlQUFVLEdBQUcsRUFBRSxDQUFDO1FBZUwsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRWhFOzs7OztXQUtHO1FBQ3FDLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFFakIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUUvQyxZQUFPLEdBQW9CLFNBQVMsQ0FBQztRQUU5QyxrRkFBa0Y7UUFDekUscUJBQWdCLEdBQUcsMkJBQTJCLENBQUM7S0FpRnpEO2FBeEhnQixZQUFPLEdBQUcsQ0FBQyxBQUFKLENBQUs7SUFXM0IsSUFDSSxTQUFTLENBQUMsQ0FBNEI7UUFDeEMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDOUIsSUFBSSxJQUFJLEtBQUssSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQzdCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsY0FBYyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUNELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBbUJELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ25DLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsTUFBTSxLQUFLLEdBQUcsQ0FBQyxXQUFXLEVBQUUsY0FBYyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUMxRCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQixLQUFLLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDbkMsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsTUFBTTtRQUNKLE9BQU8sYUFBYSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELFdBQVcsQ0FBQyxHQUFXO1FBQ3JCLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVELFVBQVUsQ0FBQyxHQUFXO1FBQ3BCLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsR0FBRyxFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVELFNBQVMsQ0FBQyxHQUFXO1FBQ25CLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3pCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQzVCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUM7UUFDdEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU8sZ0JBQWdCO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRDs7O09BR0c7SUFDSCx1QkFBdUI7UUFDckIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsVUFBVSxLQUFLLEdBQUcsQ0FBQztJQUNqQyxDQUFDO0lBRU8sb0JBQW9CO1FBQzFCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNqQixPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sU0FBUyxHQUNiLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ25FLElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5RCxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxVQUFVLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQztZQUNuQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDM0MsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7K0dBeEhVLGlCQUFpQjttR0FBakIsaUJBQWlCLHlIQWlDUixnQkFBZ0IsbUNBRWhCLGdCQUFnQixxTEE1QkYsZ0JBQWdCLDhCQy9CcEQsbTVDQXlDQTs7NEZEakJhLGlCQUFpQjtrQkFQN0IsU0FBUzsrQkFDRSxlQUFlLGNBQ2IsSUFBSSxtQkFHQyx1QkFBdUIsQ0FBQyxNQUFNOzhCQVUvQyxRQUFRO3NCQURQLGVBQWU7dUJBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFO2dCQU12RSxTQUFTO3NCQURaLEtBQUs7Z0JBYWEsZUFBZTtzQkFBakMsTUFBTTtnQkFRaUMsU0FBUztzQkFBaEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFFRSxPQUFPO3NCQUE5QyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUU3QixPQUFPO3NCQUFmLEtBQUs7Z0JBR0csZ0JBQWdCO3NCQUF4QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlckNvbnRlbnRJbml0LFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBDb250ZW50Q2hpbGRyZW4sXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBRdWVyeUxpc3QsXHJcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcclxuICBmb3J3YXJkUmVmLFxyXG4gIGluamVjdCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybVRhYkNvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0tdGFiL2Zvcm0tdGFiLmNvbXBvbmVudCc7XHJcbmltcG9ydCB0eXBlIHsgRm9ybVRhYnNWYXJpYW50IH0gZnJvbSAnLi4vX21vZGVscy9mb3JtLXRhYnMubW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtZm9ybS10YWJzJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLXRhYnMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9mb3JtLXRhYnMuY29tcG9uZW50LnNjc3MnLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9ybVRhYnNDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcclxuICBwcml2YXRlIHN0YXRpYyBuZXh0VWlkID0gMDtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG5cclxuICByZWFkb25seSB1aWQgPSBgZnQtJHsrK0Zvcm1UYWJzQ29tcG9uZW50Lm5leHRVaWR9YDtcclxuXHJcbiAgQENvbnRlbnRDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IEZvcm1UYWJDb21wb25lbnQpLCB7IGRlc2NlbmRhbnRzOiBmYWxzZSB9KVxyXG4gIHRhYlF1ZXJ5ITogUXVlcnlMaXN0PEZvcm1UYWJDb21wb25lbnQ+O1xyXG5cclxuICBwcml2YXRlIF9hY3RpdmVLZXkgPSAnJztcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgYWN0aXZlS2V5KHY6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwpIHtcclxuICAgIGNvbnN0IG5leHQgPSAodiA/PyAnJykudHJpbSgpO1xyXG4gICAgaWYgKG5leHQgPT09IHRoaXMuX2FjdGl2ZUtleSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLl9hY3RpdmVLZXkgPSBuZXh0O1xyXG4gICAgcXVldWVNaWNyb3Rhc2soKCkgPT4gdGhpcy5yZWZyZXNoVGFiUGFuZWxzKCkpO1xyXG4gIH1cclxuICBnZXQgYWN0aXZlS2V5KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlS2V5O1xyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGFjdGl2ZUtleUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICAvKipcclxuICAgKiBgdHJ1ZWAgKHBhZHLDo28pOiB0b2RvcyBvcyBwYWluw6lpcyBwZXJtYW5lY2VtIG5vIERPTTsgaW5hY3Rpdm9zIHVzYW0gYFtoaWRkZW5dYCAow7p0aWwgcGFyYVxyXG4gICAqIHByZXNlcnZhciBlc3RhZG8gZGUgVUkgcHVyYW1lbnRlIGNsaWVudC1zaWRlIGRlbnRybyBkYSBhYmEpLlxyXG4gICAqIGBmYWxzZWA6IHPDsyBvIHBhaW5lbCBkYSBhYmEgYWN0aXZhIMOpIG1vbnRhZG8g4oCUIG1lbm9zIERPTS9DRCBhbyBhbHRlcm5hcjsgbyBtb2RlbG8gcmVhY3Rpdm9cclxuICAgKiAoYEZvcm1Hcm91cGAgbm8gYXNjZW5kZW50ZSkgbWFudMOpbS1zZTsgYW8gdm9sdGFyIMOgIGFiYSwgb3MgY2FtcG9zIHJlbW9udGFtIGUgcmVsaWdhbS1zZS5cclxuICAgKi9cclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkga2VlcEFsaXZlID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHN0cmV0Y2ggPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgdmFyaWFudDogRm9ybVRhYnNWYXJpYW50ID0gJ2RlZmF1bHQnO1xyXG5cclxuICAvKiogUsOzdHVsbyBhY2Vzc8OtdmVsIHBhcmEgYSBsaXN0YSBkZSBzZXBhcmFkb3JlcyAoZXguOiDigJxTZcOnw7VlcyBkbyBmb3JtdWzDoXJpb+KAnSkuICovXHJcbiAgQElucHV0KCkgdGFibGlzdEFyaWFMYWJlbCA9ICdTZXBhcmFkb3JlcyBkbyBmb3JtdWzDoXJpbyc7XHJcblxyXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3luY0luaXRpYWxBY3RpdmVLZXkoKTtcclxuICAgIHRoaXMudGFiUXVlcnkuY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLnN5bmNJbml0aWFsQWN0aXZlS2V5KCk7XHJcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXQgdGFicygpOiBGb3JtVGFiQ29tcG9uZW50W10ge1xyXG4gICAgcmV0dXJuIHRoaXMudGFiUXVlcnk/LnRvQXJyYXkoKSA/PyBbXTtcclxuICB9XHJcblxyXG4gIGdldCBob3N0Q2xhc3MoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHBhcnRzID0gWydmb3JtLXRhYnMnLCBgZm9ybS10YWJzLS0ke3RoaXMudmFyaWFudH1gXTtcclxuICAgIGlmICh0aGlzLnN0cmV0Y2gpIHtcclxuICAgICAgcGFydHMucHVzaCgnZm9ybS10YWJzLS1zdHJldGNoJyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcGFydHMuam9pbignICcpO1xyXG4gIH1cclxuXHJcbiAgYmFzZUlkKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYGZvcm0tdGFicy0ke3RoaXMudWlkfWA7XHJcbiAgfVxyXG5cclxuICBoZWFkZXJJZEZvcihrZXk6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYCR7dGhpcy5iYXNlSWQoKX0tdGFiLSR7a2V5fWA7XHJcbiAgfVxyXG5cclxuICBwYW5lbElkRm9yKGtleTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgJHt0aGlzLmJhc2VJZCgpfS1wYW5lbC0ke2tleX1gO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0VGFiKGtleTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCB0YWIgPSB0aGlzLnRhYnMuZmluZCgodCkgPT4gdC5rZXkgPT09IGtleSk7XHJcbiAgICBpZiAoIXRhYiB8fCB0YWIuZGlzYWJsZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuX2FjdGl2ZUtleSA9PT0ga2V5KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX2FjdGl2ZUtleSA9IGtleTtcclxuICAgIHRoaXMuYWN0aXZlS2V5Q2hhbmdlLmVtaXQoa2V5KTtcclxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgdGhpcy5yZWZyZXNoVGFiUGFuZWxzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlZnJlc2hUYWJQYW5lbHMoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRhYlF1ZXJ5Py5mb3JFYWNoKCh0YWIpID0+IHRhYi5yZWZyZXNoQWN0aXZlU3RhdGUoKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGFtYWRvIHBvciB7QGxpbmsgRm9ybVRhYkNvbXBvbmVudH0gcXVhbmRvIGlucHV0cyBxdWUgYWZldGFtIG8gdGFibGlzdCAoZXguOiBgd2FybmluZ2AsIGB0YWJUaXRsZWApXHJcbiAgICogbXVkYW0g4oCUIGNvbSBPblB1c2ggbyBjYWJlw6dhbGhvIG7Do28gdm9sdGF2YSBhIGRlc2VuaGFyIHPDsyBjb20gYWx0ZXJhw6fDtWVzIG5vcyBmaWxob3MgcHJvamV0YWRvcy5cclxuICAgKi9cclxuICBvblRhYkhlYWRlclN0YXRlQ2hhbmdlZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgaXNTZWxlY3RlZChrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZUtleSA9PT0ga2V5O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzeW5jSW5pdGlhbEFjdGl2ZUtleSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGxpc3QgPSB0aGlzLnRhYnM7XHJcbiAgICBpZiAoIWxpc3QubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGhhc0FjdGl2ZSA9XHJcbiAgICAgICEhdGhpcy5fYWN0aXZlS2V5ICYmIGxpc3Quc29tZSgodCkgPT4gdC5rZXkgPT09IHRoaXMuX2FjdGl2ZUtleSk7XHJcbiAgICBpZiAoaGFzQWN0aXZlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGZpcnN0RW5hYmxlZCA9IGxpc3QuZmluZCgodCkgPT4gIXQuZGlzYWJsZWQpID8/IGxpc3RbMF07XHJcbiAgICBpZiAoZmlyc3RFbmFibGVkKSB7XHJcbiAgICAgIHRoaXMuX2FjdGl2ZUtleSA9IGZpcnN0RW5hYmxlZC5rZXk7XHJcbiAgICAgIHRoaXMuYWN0aXZlS2V5Q2hhbmdlLmVtaXQodGhpcy5fYWN0aXZlS2V5KTtcclxuICAgICAgdGhpcy5yZWZyZXNoVGFiUGFuZWxzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgW2NsYXNzXT1cImhvc3RDbGFzc1wiPlxuICA8ZGl2IGNsYXNzPVwiZm9ybS10YWJzX19zaGVsbFwiPlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLXRhYnNfX2hlYWRlci1zY3JvbGxcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJmb3JtLXRhYnNfX3RhYmxpc3RcIlxuICAgICAgICByb2xlPVwidGFibGlzdFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidGFibGlzdEFyaWFMYWJlbFwiXG4gICAgICA+XG4gICAgICAgIEBmb3IgKHRhYiBvZiB0YWJzOyB0cmFjayB0YWIua2V5KSB7XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tdGFic19fdGFiXCJcbiAgICAgICAgICAgIHJvbGU9XCJ0YWJcIlxuICAgICAgICAgICAgW2lkXT1cImhlYWRlcklkRm9yKHRhYi5rZXkpXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiaXNTZWxlY3RlZCh0YWIua2V5KVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cInBhbmVsSWRGb3IodGFiLmtleSlcIlxuICAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiaXNTZWxlY3RlZCh0YWIua2V5KSA/IDAgOiAtMVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwidGFiLmRpc2FibGVkXCJcbiAgICAgICAgICAgIFtjbGFzcy5mb3JtLXRhYnNfX3RhYi0tYWN0aXZlXT1cImlzU2VsZWN0ZWQodGFiLmtleSlcIlxuICAgICAgICAgICAgW2NsYXNzLmZvcm0tdGFic19fdGFiLS13YXJuXT1cInRhYi53YXJuaW5nXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RUYWIodGFiLmtleSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9ybS10YWJzX190YWItbGFiZWxcIj57eyB0YWIudGFiVGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICBAaWYgKHRhYi53YXJuaW5nKSB7XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLXRhYnNfX3RhYi13YXJuLWljb25cIlxuICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJFeGlzdGVtIGVycm9zIG5lc3RhIHNlw6fDo29cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS10cmlhbmdsZS1leGNsYW1hdGlvblwiPjwvaT5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS10YWJzX19wYW5lbHNcIj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImFwcC1mb3JtLXRhYlwiIC8+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -1,14 +0,0 @@
1
- export { LayoutStackComponent } from './layout-stack/layout-stack.component';
2
- export { FormActionsComponent } from './form-actions/form-actions.component';
3
- export { FormColComponent } from './form-col/form-col.component';
4
- export { FormGroupComponent } from './form-group/form-group.component';
5
- export { FormRowComponent } from './form-row/form-row.component';
6
- export { FormSectionComponent } from './form-section/form-section.component';
7
- export { ValidationSummaryComponent } from './validation-summary/validation-summary.component';
8
- export { FormTabsComponent } from './form-tabs/form-tabs.component';
9
- export { FormTabComponent } from './form-tab/form-tab.component';
10
- export { LayoutStackAlign, FormActionsAlign, FormGroupVariant, FormRowAlign, FormRowGap, FormRowJustify, } from './_models';
11
- /** Utilitários de formulário reactivo (ícones de grupo, demos avançadas). API estável; não expõe estrutura interna de pastas. */
12
- export { subscribeMarkForCheckOnInvalidUiRefresh } from './form-group/form-root-invalid-ui-refresh.util';
13
- export { resolveControlAtPath, sectionHasVisibleInvalid, subtreeHasVisibleInvalid, } from './form-group/form-path.utils';
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2Zvcm0tbGF5b3V0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQy9GLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2pFLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQixZQUFZLEVBQ1osVUFBVSxFQUNWLGNBQWMsR0FDZixNQUFNLFdBQVcsQ0FBQztBQU9uQixpSUFBaUk7QUFDakksT0FBTyxFQUFFLHVDQUF1QyxFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDekcsT0FBTyxFQUNMLG9CQUFvQixFQUNwQix3QkFBd0IsRUFDeEIsd0JBQXdCLEdBQ3pCLE1BQU0sOEJBQThCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBMYXlvdXRTdGFja0NvbXBvbmVudCB9IGZyb20gJy4vbGF5b3V0LXN0YWNrL2xheW91dC1zdGFjay5jb21wb25lbnQnO1xyXG5leHBvcnQgeyBGb3JtQWN0aW9uc0NvbXBvbmVudCB9IGZyb20gJy4vZm9ybS1hY3Rpb25zL2Zvcm0tYWN0aW9ucy5jb21wb25lbnQnO1xyXG5leHBvcnQgeyBGb3JtQ29sQ29tcG9uZW50IH0gZnJvbSAnLi9mb3JtLWNvbC9mb3JtLWNvbC5jb21wb25lbnQnO1xyXG5leHBvcnQgeyBGb3JtR3JvdXBDb21wb25lbnQgfSBmcm9tICcuL2Zvcm0tZ3JvdXAvZm9ybS1ncm91cC5jb21wb25lbnQnO1xyXG5leHBvcnQgeyBGb3JtUm93Q29tcG9uZW50IH0gZnJvbSAnLi9mb3JtLXJvdy9mb3JtLXJvdy5jb21wb25lbnQnO1xyXG5leHBvcnQgeyBGb3JtU2VjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vZm9ybS1zZWN0aW9uL2Zvcm0tc2VjdGlvbi5jb21wb25lbnQnO1xyXG5leHBvcnQgeyBWYWxpZGF0aW9uU3VtbWFyeUNvbXBvbmVudCB9IGZyb20gJy4vdmFsaWRhdGlvbi1zdW1tYXJ5L3ZhbGlkYXRpb24tc3VtbWFyeS5jb21wb25lbnQnO1xyXG5leHBvcnQgeyBGb3JtVGFic0NvbXBvbmVudCB9IGZyb20gJy4vZm9ybS10YWJzL2Zvcm0tdGFicy5jb21wb25lbnQnO1xyXG5leHBvcnQgeyBGb3JtVGFiQ29tcG9uZW50IH0gZnJvbSAnLi9mb3JtLXRhYi9mb3JtLXRhYi5jb21wb25lbnQnO1xyXG5leHBvcnQge1xyXG4gIExheW91dFN0YWNrQWxpZ24sXHJcbiAgRm9ybUFjdGlvbnNBbGlnbixcclxuICBGb3JtR3JvdXBWYXJpYW50LFxyXG4gIEZvcm1Sb3dBbGlnbixcclxuICBGb3JtUm93R2FwLFxyXG4gIEZvcm1Sb3dKdXN0aWZ5LFxyXG59IGZyb20gJy4vX21vZGVscyc7XHJcbmV4cG9ydCB0eXBlIHtcclxuICBWYWxpZGF0aW9uU3VtbWFyeUl0ZW0sXHJcbiAgVmFsaWRhdGlvblN1bW1hcnlWYXJpYW50LFxyXG4gIEZvcm1UYWJzVmFyaWFudCxcclxufSBmcm9tICcuL19tb2RlbHMnO1xyXG5cclxuLyoqIFV0aWxpdMOhcmlvcyBkZSBmb3JtdWzDoXJpbyByZWFjdGl2byAow61jb25lcyBkZSBncnVwbywgZGVtb3MgYXZhbsOnYWRhcykuIEFQSSBlc3TDoXZlbDsgbsOjbyBleHDDtWUgZXN0cnV0dXJhIGludGVybmEgZGUgcGFzdGFzLiAqL1xyXG5leHBvcnQgeyBzdWJzY3JpYmVNYXJrRm9yQ2hlY2tPbkludmFsaWRVaVJlZnJlc2ggfSBmcm9tICcuL2Zvcm0tZ3JvdXAvZm9ybS1yb290LWludmFsaWQtdWktcmVmcmVzaC51dGlsJztcclxuZXhwb3J0IHtcclxuICByZXNvbHZlQ29udHJvbEF0UGF0aCxcclxuICBzZWN0aW9uSGFzVmlzaWJsZUludmFsaWQsXHJcbiAgc3VidHJlZUhhc1Zpc2libGVJbnZhbGlkLFxyXG59IGZyb20gJy4vZm9ybS1ncm91cC9mb3JtLXBhdGgudXRpbHMnO1xyXG4iXX0=
@@ -1,56 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, HostBinding, Input, booleanAttribute, } from '@angular/core';
2
- import { LayoutStackAlign } from '../_models/form-layout.model';
3
- import * as i0 from "@angular/core";
4
- /** Faixa flexível com projeção de conteúdo (ex.: botões alinhados). */
5
- export class LayoutStackComponent {
6
- constructor() {
7
- /** Distribuição horizontal dos filhos (`justify-content`). */
8
- this.align = LayoutStackAlign.End;
9
- /**
10
- * Em ecrãs estreitos, aplica ajustes leves (ex.: `gap`) mantendo fila + `wrap`.
11
- * Por defeito `true`; não é necessário passar no template na maioria dos casos.
12
- */
13
- this.stackOnMobile = true;
14
- /** Linha separadora acima da faixa. Nome explícito para evitar colisão com o esquema DOM em templates aninhados. */
15
- this.stackDivider = false;
16
- /**
17
- * Quando `true` (por defeito), os filhos repartem a largura da faixa (ex.: um botão a 100%;
18
- * vários com `flex` igual). Use `false` para faixas compactas (largura intrínseca).
19
- */
20
- this.stackFill = true;
21
- }
22
- get hostClass() {
23
- const parts = ['layout-stack', `layout-stack--align-${this.align}`];
24
- if (this.stackOnMobile) {
25
- parts.push('layout-stack--stack-mobile');
26
- }
27
- if (this.stackDivider) {
28
- parts.push('layout-stack--divider');
29
- }
30
- if (this.stackFill) {
31
- parts.push('layout-stack--fill');
32
- }
33
- return parts.join(' ');
34
- }
35
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LayoutStackComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
36
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.12", type: LayoutStackComponent, isStandalone: true, selector: "app-layout-stack", inputs: { align: "align", stackOnMobile: ["stackOnMobile", "stackOnMobile", booleanAttribute], stackDivider: ["stackDivider", "stackDivider", booleanAttribute], stackFill: ["stackFill", "stackFill", booleanAttribute] }, host: { properties: { "class": "this.hostClass" } }, ngImport: i0, template: "<div class=\"layout-stack__track\">\r\n <ng-content />\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;min-width:0;box-sizing:border-box}.layout-stack__track{display:flex;flex-wrap:wrap;width:100%;min-width:0;box-sizing:border-box;align-items:stretch;gap:.5rem .75rem;padding-top:.25rem}:host(.layout-stack--align-start) .layout-stack__track{justify-content:flex-start}:host(.layout-stack--align-center) .layout-stack__track{justify-content:center}:host(.layout-stack--align-end) .layout-stack__track{justify-content:flex-end}:host(.layout-stack--align-space-between) .layout-stack__track{justify-content:space-between}:host(.layout-stack--divider){margin-top:.25rem;padding-top:1rem;border-top:1px solid var(--ui-layout-stack-divider-color, #e8eaed)}:host:not(.layout-stack--fill) .layout-stack__track{align-items:center}:host:not(.layout-stack--fill) ::ng-deep .layout-stack__track>*{flex:0 0 auto;min-width:0;max-width:100%;align-self:center}:host(.layout-stack--fill):not(.layout-stack--align-space-between) .layout-stack__track{flex-wrap:nowrap;justify-content:flex-start}:host(.layout-stack--fill.layout-stack--align-space-between) .layout-stack__track{flex-wrap:nowrap}:host(.layout-stack--fill) ::ng-deep .layout-stack__track>*{flex:1 1 0;min-width:0;max-width:100%;align-self:stretch}:host(.layout-stack--fill) ::ng-deep .layout-stack__track>.base-button:not(.base-button--full-width){flex:0 0 auto;align-self:center}@media (max-width: 39.98rem){:host(.layout-stack--stack-mobile) .layout-stack__track{gap:.45rem .6rem}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
37
- }
38
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LayoutStackComponent, decorators: [{
39
- type: Component,
40
- args: [{ selector: 'app-layout-stack', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"layout-stack__track\">\r\n <ng-content />\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;min-width:0;box-sizing:border-box}.layout-stack__track{display:flex;flex-wrap:wrap;width:100%;min-width:0;box-sizing:border-box;align-items:stretch;gap:.5rem .75rem;padding-top:.25rem}:host(.layout-stack--align-start) .layout-stack__track{justify-content:flex-start}:host(.layout-stack--align-center) .layout-stack__track{justify-content:center}:host(.layout-stack--align-end) .layout-stack__track{justify-content:flex-end}:host(.layout-stack--align-space-between) .layout-stack__track{justify-content:space-between}:host(.layout-stack--divider){margin-top:.25rem;padding-top:1rem;border-top:1px solid var(--ui-layout-stack-divider-color, #e8eaed)}:host:not(.layout-stack--fill) .layout-stack__track{align-items:center}:host:not(.layout-stack--fill) ::ng-deep .layout-stack__track>*{flex:0 0 auto;min-width:0;max-width:100%;align-self:center}:host(.layout-stack--fill):not(.layout-stack--align-space-between) .layout-stack__track{flex-wrap:nowrap;justify-content:flex-start}:host(.layout-stack--fill.layout-stack--align-space-between) .layout-stack__track{flex-wrap:nowrap}:host(.layout-stack--fill) ::ng-deep .layout-stack__track>*{flex:1 1 0;min-width:0;max-width:100%;align-self:stretch}:host(.layout-stack--fill) ::ng-deep .layout-stack__track>.base-button:not(.base-button--full-width){flex:0 0 auto;align-self:center}@media (max-width: 39.98rem){:host(.layout-stack--stack-mobile) .layout-stack__track{gap:.45rem .6rem}}\n"] }]
41
- }], propDecorators: { align: [{
42
- type: Input
43
- }], stackOnMobile: [{
44
- type: Input,
45
- args: [{ transform: booleanAttribute }]
46
- }], stackDivider: [{
47
- type: Input,
48
- args: [{ transform: booleanAttribute }]
49
- }], stackFill: [{
50
- type: Input,
51
- args: [{ transform: booleanAttribute }]
52
- }], hostClass: [{
53
- type: HostBinding,
54
- args: ['class']
55
- }] } });
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LXN0YWNrLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZm9ybS1sYXlvdXQvbGF5b3V0LXN0YWNrL2xheW91dC1zdGFjay5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2Zvcm0tbGF5b3V0L2xheW91dC1zdGFjay9sYXlvdXQtc3RhY2suY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsV0FBVyxFQUNYLEtBQUssRUFDTCxnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7O0FBRWhFLHVFQUF1RTtBQVF2RSxNQUFNLE9BQU8sb0JBQW9CO0lBUGpDO1FBUUUsOERBQThEO1FBQ3JELFVBQUssR0FBcUIsZ0JBQWdCLENBQUMsR0FBRyxDQUFDO1FBRXhEOzs7V0FHRztRQUNxQyxrQkFBYSxHQUFHLElBQUksQ0FBQztRQUU3RCxvSEFBb0g7UUFDNUUsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFFN0Q7OztXQUdHO1FBQ3FDLGNBQVMsR0FBRyxJQUFJLENBQUM7S0FnQjFEO0lBZEMsSUFDSSxTQUFTO1FBQ1gsTUFBTSxLQUFLLEdBQUcsQ0FBQyxjQUFjLEVBQUUsdUJBQXVCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3BFLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3ZCLEtBQUssQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUMzQyxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEIsS0FBSyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQ3RDLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixLQUFLLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDbkMsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6QixDQUFDOytHQWhDVSxvQkFBb0I7bUdBQXBCLG9CQUFvQixnSUFRWCxnQkFBZ0Isa0RBR2hCLGdCQUFnQix5Q0FNaEIsZ0JBQWdCLGtGQ2xDdEMsdUVBR0E7OzRGRGNhLG9CQUFvQjtrQkFQaEMsU0FBUzsrQkFDRSxrQkFBa0IsY0FDaEIsSUFBSSxtQkFHQyx1QkFBdUIsQ0FBQyxNQUFNOzhCQUl0QyxLQUFLO3NCQUFiLEtBQUs7Z0JBTWtDLGFBQWE7c0JBQXBELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBR0UsWUFBWTtzQkFBbkQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFNRSxTQUFTO3NCQUFoRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUdsQyxTQUFTO3NCQURaLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMYXlvdXRTdGFja0FsaWduIH0gZnJvbSAnLi4vX21vZGVscy9mb3JtLWxheW91dC5tb2RlbCc7XG5cbi8qKiBGYWl4YSBmbGV4w612ZWwgY29tIHByb2plw6fDo28gZGUgY29udGXDumRvIChleC46IGJvdMO1ZXMgYWxpbmhhZG9zKS4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1sYXlvdXQtc3RhY2snLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZVVybDogJy4vbGF5b3V0LXN0YWNrLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2xheW91dC1zdGFjay5jb21wb25lbnQuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBMYXlvdXRTdGFja0NvbXBvbmVudCB7XG4gIC8qKiBEaXN0cmlidWnDp8OjbyBob3Jpem9udGFsIGRvcyBmaWxob3MgKGBqdXN0aWZ5LWNvbnRlbnRgKS4gKi9cbiAgQElucHV0KCkgYWxpZ246IExheW91dFN0YWNrQWxpZ24gPSBMYXlvdXRTdGFja0FsaWduLkVuZDtcblxuICAvKipcbiAgICogRW0gZWNyw6NzIGVzdHJlaXRvcywgYXBsaWNhIGFqdXN0ZXMgbGV2ZXMgKGV4LjogYGdhcGApIG1hbnRlbmRvIGZpbGEgKyBgd3JhcGAuXG4gICAqIFBvciBkZWZlaXRvIGB0cnVlYDsgbsOjbyDDqSBuZWNlc3PDoXJpbyBwYXNzYXIgbm8gdGVtcGxhdGUgbmEgbWFpb3JpYSBkb3MgY2Fzb3MuXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc3RhY2tPbk1vYmlsZSA9IHRydWU7XG5cbiAgLyoqIExpbmhhIHNlcGFyYWRvcmEgYWNpbWEgZGEgZmFpeGEuIE5vbWUgZXhwbMOtY2l0byBwYXJhIGV2aXRhciBjb2xpc8OjbyBjb20gbyBlc3F1ZW1hIERPTSBlbSB0ZW1wbGF0ZXMgYW5pbmhhZG9zLiAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc3RhY2tEaXZpZGVyID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFF1YW5kbyBgdHJ1ZWAgKHBvciBkZWZlaXRvKSwgb3MgZmlsaG9zIHJlcGFydGVtIGEgbGFyZ3VyYSBkYSBmYWl4YSAoZXguOiB1bSBib3TDo28gYSAxMDAlO1xuICAgKiB2w6FyaW9zIGNvbSBgZmxleGAgaWd1YWwpLiBVc2UgYGZhbHNlYCBwYXJhIGZhaXhhcyBjb21wYWN0YXMgKGxhcmd1cmEgaW50csOtbnNlY2EpLlxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHN0YWNrRmlsbCA9IHRydWU7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGdldCBob3N0Q2xhc3MoKTogc3RyaW5nIHtcbiAgICBjb25zdCBwYXJ0cyA9IFsnbGF5b3V0LXN0YWNrJywgYGxheW91dC1zdGFjay0tYWxpZ24tJHt0aGlzLmFsaWdufWBdO1xuICAgIGlmICh0aGlzLnN0YWNrT25Nb2JpbGUpIHtcbiAgICAgIHBhcnRzLnB1c2goJ2xheW91dC1zdGFjay0tc3RhY2stbW9iaWxlJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLnN0YWNrRGl2aWRlcikge1xuICAgICAgcGFydHMucHVzaCgnbGF5b3V0LXN0YWNrLS1kaXZpZGVyJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLnN0YWNrRmlsbCkge1xuICAgICAgcGFydHMucHVzaCgnbGF5b3V0LXN0YWNrLS1maWxsJyk7XG4gICAgfVxuICAgIHJldHVybiBwYXJ0cy5qb2luKCcgJyk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJsYXlvdXQtc3RhY2tfX3RyYWNrXCI+XHJcbiAgPG5nLWNvbnRlbnQgLz5cclxuPC9kaXY+XHJcbiJdfQ==