@theseam/ui-common 0.4.28 → 0.4.30

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 (616) hide show
  1. package/breadcrumbs/breadcrumbs/breadcrumbs.component.scss +1 -1
  2. package/datatable/datatable/datatable.component.d.ts +61 -9
  3. package/datatable/datatable-column-filter-menu/datatable-column-filter-menu.component.d.ts +25 -0
  4. package/datatable/datatable-column-filter-search-date/datatable-column-filter-search-date.component.d.ts +18 -0
  5. package/datatable/datatable-column-filter-search-numeric/datatable-column-filter-search-numeric.component.d.ts +16 -0
  6. package/datatable/datatable-column-filter-search-text/datatable-column-filter-search-text.component.d.ts +15 -0
  7. package/datatable/datatable-menu-bar/datatable-menu-bar.component.d.ts +2 -2
  8. package/datatable/datatable.module.d.ts +29 -20
  9. package/datatable/directives/datatable-column-filter-tpl.directive.d.ts +8 -0
  10. package/datatable/directives/datatable-column-filter.directive.d.ts +10 -0
  11. package/datatable/models/action-item-column-position.d.ts +13 -0
  12. package/datatable/models/columns-data-filter.d.ts +57 -0
  13. package/datatable/models/columns-data-filters/models.d.ts +65 -0
  14. package/datatable/models/columns-data-filters/search-date.columns-data-filter.d.ts +23 -0
  15. package/datatable/models/columns-data-filters/search-numeric.columns-data-filter.d.ts +22 -0
  16. package/datatable/models/columns-data-filters/search-text.columns-data-filter.d.ts +21 -0
  17. package/datatable/models/columns-data-filters/utils.d.ts +15 -0
  18. package/datatable/models/datatable-config.d.ts +97 -0
  19. package/datatable/models/table-column.d.ts +22 -1
  20. package/datatable/public-api.d.ts +14 -0
  21. package/datatable/services/columns-filters.service.d.ts +29 -0
  22. package/datatable/services/columns-manager.service.d.ts +7 -0
  23. package/datatable/utils/create-action-menu-column.d.ts +1 -1
  24. package/esm2020/asset-reader/asset-reader-helper.service.mjs +4 -4
  25. package/esm2020/asset-reader/asset-reader.module.mjs +5 -5
  26. package/esm2020/asset-reader/encrypted-asset-link.directive.mjs +4 -4
  27. package/esm2020/breadcrumbs/breadcrumbs/breadcrumbs.component.mjs +5 -5
  28. package/esm2020/breadcrumbs/breadcrumbs.module.mjs +5 -5
  29. package/esm2020/breadcrumbs/breadcrumbs.service.mjs +4 -4
  30. package/esm2020/buttons/badge-button/badge-button.component.mjs +7 -7
  31. package/esm2020/buttons/button/button.component.mjs +10 -10
  32. package/esm2020/buttons/buttons.module.mjs +5 -5
  33. package/esm2020/buttons/progress-circle-button/progress-circle-button.component.mjs +4 -4
  34. package/esm2020/buttons/toggle-button/toggle-button.component.mjs +4 -4
  35. package/esm2020/card/card-action/card-action.component.mjs +4 -4
  36. package/esm2020/card/card-body/card-body.component.mjs +4 -4
  37. package/esm2020/card/card-footer/card-footer.component.mjs +4 -4
  38. package/esm2020/card/card-header/card-header.component.mjs +4 -4
  39. package/esm2020/card/card.component.mjs +4 -4
  40. package/esm2020/card/card.module.mjs +5 -5
  41. package/esm2020/carousel/carousel-slide.directive.mjs +4 -4
  42. package/esm2020/carousel/carousel.component.mjs +4 -4
  43. package/esm2020/carousel/carousel.module.mjs +5 -5
  44. package/esm2020/checkbox/checkbox.component.mjs +4 -4
  45. package/esm2020/checkbox/checkbox.module.mjs +5 -5
  46. package/esm2020/confirm-dialog/confirm-click.directive.mjs +4 -4
  47. package/esm2020/confirm-dialog/confirm-dialog.component.mjs +4 -4
  48. package/esm2020/confirm-dialog/confirm-dialog.module.mjs +5 -5
  49. package/esm2020/confirm-dialog/confirm-dialog.service.mjs +4 -4
  50. package/esm2020/data-exporter/data-exporter.module.mjs +5 -5
  51. package/esm2020/data-exporter/exporters/csv-exporter.mjs +4 -4
  52. package/esm2020/data-exporter/exporters/xlsx-exporter.mjs +4 -4
  53. package/esm2020/data-filters/data-filters.module.mjs +5 -5
  54. package/esm2020/data-filters/filters/data-filter-search/data-filter-search.component.mjs +4 -4
  55. package/esm2020/data-filters/filters/data-filter-text/data-filter-text.component.mjs +4 -4
  56. package/esm2020/data-filters/filters/data-filter-toggle-buttons/data-filter-toggle-buttons.component.mjs +4 -4
  57. package/esm2020/datatable/datatable/datatable.component.mjs +241 -32
  58. package/esm2020/datatable/datatable-action-menu/datatable-action-menu.component.mjs +5 -5
  59. package/esm2020/datatable/datatable-action-menu-item/datatable-action-menu-item.component.mjs +4 -4
  60. package/esm2020/datatable/datatable-column/datatable-column.component.mjs +4 -4
  61. package/esm2020/datatable/datatable-column-filter-menu/datatable-column-filter-menu.component.mjs +55 -0
  62. package/esm2020/datatable/datatable-column-filter-search-date/datatable-column-filter-search-date.component.mjs +54 -0
  63. package/esm2020/datatable/datatable-column-filter-search-numeric/datatable-column-filter-search-numeric.component.mjs +48 -0
  64. package/esm2020/datatable/datatable-column-filter-search-text/datatable-column-filter-search-text.component.mjs +44 -0
  65. package/esm2020/datatable/datatable-column-preferences/datatable-column-preferences.component.mjs +4 -4
  66. package/esm2020/datatable/datatable-column-preferences-button/datatable-column-preferences-button.component.mjs +4 -4
  67. package/esm2020/datatable/datatable-export-button/datatable-export-button.component.mjs +4 -4
  68. package/esm2020/datatable/datatable-footer/datatable-footer-tpl.directive.mjs +4 -4
  69. package/esm2020/datatable/datatable-footer/datatable-footer.directive.mjs +4 -4
  70. package/esm2020/datatable/datatable-menu-bar/datatable-menu-bar.component.mjs +4 -4
  71. package/esm2020/datatable/datatable-menu-bar-column-center/datatable-menu-bar-column-center.component.mjs +4 -4
  72. package/esm2020/datatable/datatable-menu-bar-column-left/datatable-menu-bar-column-left.component.mjs +4 -4
  73. package/esm2020/datatable/datatable-menu-bar-column-right/datatable-menu-bar-column-right.component.mjs +4 -4
  74. package/esm2020/datatable/datatable-menu-bar-row/datatable-menu-bar-row.component.mjs +4 -4
  75. package/esm2020/datatable/datatable-menu-bar-text/datatable-menu-bar-text.component.mjs +4 -4
  76. package/esm2020/datatable/datatable-row-detail/datatable-row-detail-tpl.directive.mjs +4 -4
  77. package/esm2020/datatable/datatable-row-detail/datatable-row-detail.directive.mjs +4 -4
  78. package/esm2020/datatable/datatable.module.mjs +53 -11
  79. package/esm2020/datatable/directives/datatable-action-menu-item.directive.mjs +4 -4
  80. package/esm2020/datatable/directives/datatable-action-menu-toggle.directive.mjs +4 -4
  81. package/esm2020/datatable/directives/datatable-cell-tpl.directive.mjs +4 -4
  82. package/esm2020/datatable/directives/datatable-column-filter-tpl.directive.mjs +16 -0
  83. package/esm2020/datatable/directives/datatable-column-filter.directive.mjs +26 -0
  84. package/esm2020/datatable/directives/datatable-filter.directive.mjs +4 -4
  85. package/esm2020/datatable/directives/datatable-row-action-item.directive.mjs +4 -4
  86. package/esm2020/datatable/models/action-item-column-position.mjs +5 -0
  87. package/esm2020/datatable/models/columns-data-filter.mjs +10 -0
  88. package/esm2020/datatable/models/columns-data-filters/models.mjs +74 -0
  89. package/esm2020/datatable/models/columns-data-filters/search-date.columns-data-filter.mjs +113 -0
  90. package/esm2020/datatable/models/columns-data-filters/search-numeric.columns-data-filter.mjs +104 -0
  91. package/esm2020/datatable/models/columns-data-filters/search-text.columns-data-filter.mjs +86 -0
  92. package/esm2020/datatable/models/columns-data-filters/utils.mjs +28 -0
  93. package/esm2020/datatable/models/datatable-config.mjs +3 -0
  94. package/esm2020/datatable/models/table-column.mjs +1 -1
  95. package/esm2020/datatable/public-api.mjs +15 -1
  96. package/esm2020/datatable/services/columns-alterations-manager.service.mjs +4 -4
  97. package/esm2020/datatable/services/columns-filters.service.mjs +109 -0
  98. package/esm2020/datatable/services/columns-manager.service.mjs +30 -5
  99. package/esm2020/datatable/services/datatable-column-changes.service.mjs +4 -4
  100. package/esm2020/datatable/services/datatable-preferences.service.mjs +4 -4
  101. package/esm2020/datatable/services/datatable-scrollbar-helper.service.mjs +4 -4
  102. package/esm2020/datatable/utils/create-action-menu-column.mjs +4 -3
  103. package/esm2020/datatable-dynamic/datatable-dynamic-action-menu/datatable-dynamic-action-menu.component.mjs +4 -4
  104. package/esm2020/datatable-dynamic/datatable-dynamic-filter-container/datatable-dynamic-filter-container.component.mjs +4 -4
  105. package/esm2020/datatable-dynamic/datatable-dynamic-menu-bar-content/datatable-dynamic-menu-bar-content.component.mjs +4 -4
  106. package/esm2020/datatable-dynamic/datatable-dynamic.component.mjs +5 -5
  107. package/esm2020/datatable-dynamic/datatable-dynamic.module.mjs +5 -5
  108. package/esm2020/datatable-dynamic/directives/datatable-dynamic-action-menu-item.directive.mjs +4 -4
  109. package/esm2020/datatable-dynamic/dynamic-datatable-def.service.mjs +4 -4
  110. package/esm2020/datatable-dynamic/dynamic-datatable-row-actions.service.mjs +4 -4
  111. package/esm2020/dynamic/action/api/dynamic-action-api.service.mjs +4 -4
  112. package/esm2020/dynamic/action/dynamic-action-helper.service.mjs +4 -4
  113. package/esm2020/dynamic/action/link/dynamic-action-link.service.mjs +4 -4
  114. package/esm2020/dynamic/action/modal/dynamic-action-modal.service.mjs +4 -4
  115. package/esm2020/dynamic/dynamic-value-helper.service.mjs +4 -4
  116. package/esm2020/dynamic/evaluators/exporters-data-evaluator/exporters-data-evaluator.mjs +4 -4
  117. package/esm2020/dynamic/evaluators/jexl-evaluator/jexl-evaluator.mjs +4 -4
  118. package/esm2020/dynamic-component-loader/dynamic-component-loader.module.mjs +5 -5
  119. package/esm2020/dynamic-component-loader/dynamic-component-loader.service.mjs +4 -4
  120. package/esm2020/footer-bar/footer-bar/footer-bar.component.mjs +4 -4
  121. package/esm2020/footer-bar/footer-bar.module.mjs +5 -5
  122. package/esm2020/form-field/form-field-error.directive.mjs +4 -4
  123. package/esm2020/form-field/form-field-help-text.directive.mjs +4 -4
  124. package/esm2020/form-field/form-field-label-tpl.directive.mjs +4 -4
  125. package/esm2020/form-field/form-field-required-indicator.component.mjs +4 -4
  126. package/esm2020/form-field/form-field.component.mjs +4 -4
  127. package/esm2020/form-field/form-field.module.mjs +5 -5
  128. package/esm2020/form-field/input.directive.mjs +4 -4
  129. package/esm2020/form-field-error/form-field-error/form-field-error.component.mjs +4 -4
  130. package/esm2020/form-field-error/form-field-error-list/form-field-error-list-item-tpl.directive.mjs +4 -4
  131. package/esm2020/form-field-error/form-field-error-list/form-field-error-list-item.directive.mjs +4 -4
  132. package/esm2020/form-field-error/form-field-error-list/form-field-error-list.component.mjs +4 -4
  133. package/esm2020/form-field-error/form-field-error.module.mjs +5 -5
  134. package/esm2020/framework/base-layout/base-layout.component.mjs +16 -6
  135. package/esm2020/framework/base-layout/base-layout.module.mjs +10 -5
  136. package/esm2020/framework/base-layout/directives/base-layout-content-footer.directive.mjs +4 -4
  137. package/esm2020/framework/base-layout/directives/base-layout-content-header.directive.mjs +4 -4
  138. package/esm2020/framework/base-layout/directives/base-layout-content.directive.mjs +4 -4
  139. package/esm2020/framework/base-layout/directives/base-layout-nav-toggle.directive.mjs +22 -6
  140. package/esm2020/framework/base-layout/directives/base-layout-side-bar-footer.directive.mjs +4 -4
  141. package/esm2020/framework/base-layout/directives/base-layout-side-bar-header.directive.mjs +16 -0
  142. package/esm2020/framework/base-layout/directives/base-layout-side-bar.directive.mjs +4 -4
  143. package/esm2020/framework/base-layout/directives/base-layout-top-bar.directive.mjs +4 -4
  144. package/esm2020/framework/base-layout/index.mjs +2 -1
  145. package/esm2020/framework/dashboard/dashboard-widget-container/dashboard-widget-container.component.mjs +4 -4
  146. package/esm2020/framework/dashboard/dashboard-widget-template-container/dashboard-widget-template-container.component.mjs +4 -4
  147. package/esm2020/framework/dashboard/dashboard-widgets/dashboard-widget-portal-outlet.directive.mjs +4 -4
  148. package/esm2020/framework/dashboard/dashboard-widgets/dashboard-widgets-preferences.service.mjs +4 -4
  149. package/esm2020/framework/dashboard/dashboard-widgets/dashboard-widgets.component.mjs +4 -4
  150. package/esm2020/framework/dashboard/dashboard-widgets/dashboard-widgets.service.mjs +4 -4
  151. package/esm2020/framework/dashboard/dashboard.component.mjs +4 -4
  152. package/esm2020/framework/dashboard/dashboard.module.mjs +5 -5
  153. package/esm2020/framework/dynamic-router/dynamic-router.module.mjs +5 -5
  154. package/esm2020/framework/dynamic-router/hierarchy-router-outlet/hierarchy-router-outlet.component.mjs +4 -4
  155. package/esm2020/framework/dynamic-router/resolvers/hierarchy-level.resolver.mjs +4 -4
  156. package/esm2020/framework/nav/horizontal-nav/horizontal-nav.component.mjs +55 -0
  157. package/esm2020/framework/nav/index.mjs +6 -0
  158. package/esm2020/framework/nav/nav-item/nav-item.component.mjs +227 -0
  159. package/esm2020/framework/nav/nav-utils.mjs +107 -0
  160. package/esm2020/framework/nav/nav.models.mjs +2 -0
  161. package/esm2020/framework/nav/nav.module.mjs +67 -0
  162. package/esm2020/framework/nav/nav.service.mjs +204 -0
  163. package/esm2020/framework/public-api.mjs +2 -1
  164. package/esm2020/framework/schema-form/schema-form-framework.component.mjs +4 -4
  165. package/esm2020/framework/schema-form/schema-form-framework.mjs +4 -4
  166. package/esm2020/framework/schema-form/schema-form.module.mjs +5 -5
  167. package/esm2020/framework/schema-form-controls/schema-form-checkbox/schema-form-checkbox.component.mjs +4 -4
  168. package/esm2020/framework/schema-form-controls/schema-form-divider/schema-form-divider.component.mjs +4 -4
  169. package/esm2020/framework/schema-form-controls/schema-form-input/schema-form-input.component.mjs +4 -4
  170. package/esm2020/framework/schema-form-controls/schema-form-number/schema-form-number.component.mjs +4 -4
  171. package/esm2020/framework/schema-form-controls/schema-form-select/schema-form-select.component.mjs +4 -4
  172. package/esm2020/framework/schema-form-controls/schema-form-submit/schema-form-submit.component.mjs +4 -4
  173. package/esm2020/framework/schema-form-controls/schema-form-submit-split/schema-form-submit-split.component.mjs +4 -4
  174. package/esm2020/framework/schema-form-controls/schema-form-tel/schema-form-tel.component.mjs +4 -4
  175. package/esm2020/framework/schema-form-controls/schema-form-tiled-select/schema-form-tiled-select.component.mjs +4 -4
  176. package/esm2020/framework/side-nav/side-nav-item/side-nav-item.component.mjs +29 -68
  177. package/esm2020/framework/side-nav/side-nav-toggle/side-nav-toggle.component.mjs +14 -7
  178. package/esm2020/framework/side-nav/side-nav.component.mjs +117 -39
  179. package/esm2020/framework/side-nav/side-nav.models.mjs +1 -1
  180. package/esm2020/framework/side-nav/side-nav.module.mjs +11 -41
  181. package/esm2020/framework/side-nav/side-nav.service.mjs +4 -4
  182. package/esm2020/framework/top-bar/index.mjs +3 -1
  183. package/esm2020/framework/top-bar/top-bar-compact-menu-btn-detail.directive.mjs +16 -0
  184. package/esm2020/framework/top-bar/top-bar-item.directive.mjs +12 -6
  185. package/esm2020/framework/top-bar/top-bar-menu-btn-detail.directive.mjs +4 -4
  186. package/esm2020/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.mjs +8 -6
  187. package/esm2020/framework/top-bar/top-bar-menu.directive.mjs +4 -4
  188. package/esm2020/framework/top-bar/top-bar-nav-toggle-btn-detail.directive.mjs +16 -0
  189. package/esm2020/framework/top-bar/top-bar-title/top-bar-title.component.mjs +4 -4
  190. package/esm2020/framework/top-bar/top-bar.component.mjs +57 -13
  191. package/esm2020/framework/top-bar/top-bar.module.mjs +19 -9
  192. package/esm2020/google-maps/google-maps/google-maps.component.mjs +4 -4
  193. package/esm2020/google-maps/google-maps-api-loader/lazy-google-maps-api-loader.mjs +4 -4
  194. package/esm2020/google-maps/google-maps-api-loader/noop-google-maps-api-loader.mjs +4 -4
  195. package/esm2020/google-maps/google-maps-controls.service.mjs +4 -4
  196. package/esm2020/google-maps/google-maps-places-autocomplete/google-maps-places-autocomplete.component.mjs +5 -5
  197. package/esm2020/google-maps/google-maps-places-autocomplete/google-maps-places-autocomplete.directive.mjs +4 -4
  198. package/esm2020/google-maps/google-maps-recenter-button-control/google-maps-recenter-button-control.component.mjs +4 -4
  199. package/esm2020/google-maps/google-maps-upload-button-control/google-maps-upload-button-control.component.mjs +4 -4
  200. package/esm2020/google-maps/google-maps.module.mjs +5 -5
  201. package/esm2020/google-maps/google-maps.service.mjs +4 -4
  202. package/esm2020/google-maps/map-control.component.mjs +4 -4
  203. package/esm2020/google-maps/map-file-drop/map-file-drop.component.mjs +4 -4
  204. package/esm2020/google-maps/map-value-manager.service.mjs +4 -4
  205. package/esm2020/graphql/datatable/datatable-graphql.service.mjs +4 -4
  206. package/esm2020/graphql/datatable/index.mjs +4 -1
  207. package/esm2020/graphql/datatable/map-filter-states.mjs +1 -1
  208. package/esm2020/graphql/datatable/map-search-date-columns-data-filter-state-to-gql.mjs +139 -0
  209. package/esm2020/graphql/datatable/map-search-numeric-columns-data-filter-state-to-gql.mjs +75 -0
  210. package/esm2020/graphql/datatable/map-search-text-columns-data-filter-state-to-gql.mjs +44 -0
  211. package/esm2020/icon/icon/icon.component.mjs +4 -4
  212. package/esm2020/icon/icon-btn/icon-btn.component.mjs +4 -4
  213. package/esm2020/icon/icon-notification/icon-notification.component.mjs +4 -4
  214. package/esm2020/icon/icon.module.mjs +5 -5
  215. package/esm2020/layout/layout.module.mjs +5 -5
  216. package/esm2020/layout/layout.service.mjs +15 -5
  217. package/esm2020/loading/loading/loading.component.mjs +4 -4
  218. package/esm2020/loading/loading-overlay.service.mjs +4 -4
  219. package/esm2020/loading/loading.module.mjs +5 -5
  220. package/esm2020/menu/menu-divider.component.mjs +4 -4
  221. package/esm2020/menu/menu-footer/menu-footer.component.mjs +4 -4
  222. package/esm2020/menu/menu-footer-action/menu-footer-action.component.mjs +4 -4
  223. package/esm2020/menu/menu-header/menu-header.component.mjs +4 -4
  224. package/esm2020/menu/menu-item.component.mjs +4 -4
  225. package/esm2020/menu/menu-toggle.directive.mjs +9 -4
  226. package/esm2020/menu/menu.component.mjs +4 -4
  227. package/esm2020/menu/menu.module.mjs +5 -5
  228. package/esm2020/modal/directives/modal-close.directive.mjs +4 -4
  229. package/esm2020/modal/directives/modal-footer-tpl.directive.mjs +4 -4
  230. package/esm2020/modal/directives/modal-header-icon-tpl.directive.mjs +4 -4
  231. package/esm2020/modal/directives/modal-header-title-tpl.directive.mjs +4 -4
  232. package/esm2020/modal/directives/modal-title.directive.mjs +4 -4
  233. package/esm2020/modal/directives/modal.directive.mjs +4 -4
  234. package/esm2020/modal/modal/modal.component.mjs +4 -4
  235. package/esm2020/modal/modal-body/modal-body.component.mjs +4 -4
  236. package/esm2020/modal/modal-container/modal-container.component.mjs +4 -4
  237. package/esm2020/modal/modal-footer/modal-footer.component.mjs +4 -4
  238. package/esm2020/modal/modal-header/modal-header.component.mjs +4 -4
  239. package/esm2020/modal/modal.module.mjs +5 -5
  240. package/esm2020/modal/modal.service.mjs +4 -4
  241. package/esm2020/modal/route-modal/route-modal.component.mjs +4 -4
  242. package/esm2020/navigation-reload/navigation-reload.service.mjs +5 -5
  243. package/esm2020/popover/popover/popover.component.mjs +9 -5
  244. package/esm2020/popover/popover.directive.mjs +8 -4
  245. package/esm2020/popover/popover.module.mjs +5 -5
  246. package/esm2020/progress/progress-circle/progress-circle.component.mjs +4 -4
  247. package/esm2020/progress/progress.module.mjs +5 -5
  248. package/esm2020/rich-text/rich-text/rich-text.component.mjs +4 -4
  249. package/esm2020/rich-text/rich-text.module.mjs +5 -5
  250. package/esm2020/scrollbar/overlay-scrollbar.directive.mjs +4 -4
  251. package/esm2020/scrollbar/overlay-scrollbars.service.mjs +4 -4
  252. package/esm2020/scrollbar/scrollbar.module.mjs +5 -5
  253. package/esm2020/services/asset-loader.service.mjs +4 -4
  254. package/esm2020/services/font-loader.service.mjs +4 -4
  255. package/esm2020/services/preferences/preferences-manager.service.mjs +4 -4
  256. package/esm2020/services/router-helpers.service.mjs +4 -4
  257. package/esm2020/shared/components/password-input-reveal/password-input-reveal.component.mjs +4 -4
  258. package/esm2020/shared/directives/auto-focus.directive.mjs +4 -4
  259. package/esm2020/shared/directives/click-outside.directive.mjs +4 -4
  260. package/esm2020/shared/directives/disable-control.directive.mjs +4 -4
  261. package/esm2020/shared/directives/elem-resized.directive.mjs +4 -4
  262. package/esm2020/shared/directives/hover-class-toggle.directive.mjs +4 -4
  263. package/esm2020/shared/directives/hover-class.directive.mjs +4 -4
  264. package/esm2020/shared/directives/ng-select-extra.directive.mjs +4 -4
  265. package/esm2020/shared/directives/ngx-quill-extra.directive.mjs +4 -4
  266. package/esm2020/shared/pipes/mask-chars.pipe.mjs +4 -4
  267. package/esm2020/shared/pipes/truncate.pipe.mjs +4 -4
  268. package/esm2020/shared/shared.module.mjs +5 -5
  269. package/esm2020/storage/local-storage.service.mjs +4 -4
  270. package/esm2020/story-helpers/initial-route.service.mjs +4 -4
  271. package/esm2020/story-helpers/story-empty-with-route.component.mjs +4 -4
  272. package/esm2020/story-helpers/story-empty.component.mjs +4 -4
  273. package/esm2020/story-helpers/story-helper-components.module.mjs +5 -5
  274. package/esm2020/story-helpers/story-initial-route.mjs +5 -5
  275. package/esm2020/story-helpers/story-modal-container.component.mjs +4 -4
  276. package/esm2020/story-helpers/story-preferences-accessor.service.mjs +4 -4
  277. package/esm2020/story-helpers/story-toastr.service.mjs +4 -4
  278. package/esm2020/tabbed/directives/tabbed-tab-content.directive.mjs +4 -4
  279. package/esm2020/tabbed/directives/tabbed-tab.directive.mjs +4 -4
  280. package/esm2020/tabbed/tabbed-content/tabbed-content.component.mjs +4 -4
  281. package/esm2020/tabbed/tabbed-item/tabbed-item.component.mjs +4 -4
  282. package/esm2020/tabbed/tabbed.component.mjs +4 -4
  283. package/esm2020/tabbed/tabbed.module.mjs +5 -5
  284. package/esm2020/tabbed/tabbed.service.mjs +4 -4
  285. package/esm2020/table/public-api.mjs +4 -1
  286. package/esm2020/table/table/table.component.mjs +92 -7
  287. package/esm2020/table/table-cell-tpl.directive.mjs +17 -0
  288. package/esm2020/table/table-column-header-tpl.directive.mjs +17 -0
  289. package/esm2020/table/table-column.component.mjs +68 -0
  290. package/esm2020/table/table.module.mjs +25 -9
  291. package/esm2020/table-cell-type/services/table-cell-types-helpers.service.mjs +4 -4
  292. package/esm2020/table-cell-type/table-cell-type-selector.component.mjs +4 -4
  293. package/esm2020/table-cell-type/table-cell-type.module.mjs +5 -5
  294. package/esm2020/table-cell-types/table-cell-type-currency/table-cell-type-currency.component.mjs +4 -4
  295. package/esm2020/table-cell-types/table-cell-type-date/table-cell-type-date.component.mjs +4 -4
  296. package/esm2020/table-cell-types/table-cell-type-decimal/table-cell-type-decimal.component.mjs +4 -4
  297. package/esm2020/table-cell-types/table-cell-type-icon/table-cell-type-icon.component.mjs +4 -4
  298. package/esm2020/table-cell-types/table-cell-type-integer/table-cell-type-integer.component.mjs +4 -4
  299. package/esm2020/table-cell-types/table-cell-type-phone/table-cell-type-phone.component.mjs +4 -4
  300. package/esm2020/table-cell-types/table-cell-type-progress-circle/table-cell-type-progress-circle.component.mjs +4 -4
  301. package/esm2020/table-cell-types/table-cell-type-progress-circle-icon/table-cell-type-progress-circle-icon.component.mjs +4 -4
  302. package/esm2020/table-cell-types/table-cell-type-string/table-cell-type-string.component.mjs +7 -5
  303. package/esm2020/table-cell-types/table-cell-types.module.mjs +5 -5
  304. package/esm2020/tel-input/phone-number.pipe.mjs +4 -4
  305. package/esm2020/tel-input/tel-input/tel-input.component.mjs +4 -4
  306. package/esm2020/tel-input/tel-input.directive.mjs +4 -4
  307. package/esm2020/tel-input/tel-input.module.mjs +5 -5
  308. package/esm2020/tiled-select/components/tiled-select/tiled-select.component.mjs +4 -4
  309. package/esm2020/tiled-select/components/tiled-select-tile/tiled-select-tile.component.mjs +4 -4
  310. package/esm2020/tiled-select/components/tiled-select-tile-icon/tiled-select-tile-icon.component.mjs +4 -4
  311. package/esm2020/tiled-select/directives/tiled-select-tile-icon-tpl.directive.mjs +4 -4
  312. package/esm2020/tiled-select/directives/tiled-select-tile-label-tpl.directive.mjs +4 -4
  313. package/esm2020/tiled-select/directives/tiled-select-tile-overlay.directive.mjs +4 -4
  314. package/esm2020/tiled-select/tiled-select.module.mjs +5 -5
  315. package/esm2020/toggle-edit/toggle-edit-actions-container/toggle-edit-actions-container.component.mjs +4 -4
  316. package/esm2020/toggle-edit/toggle-edit-display-tpl.directive.mjs +4 -4
  317. package/esm2020/toggle-edit/toggle-edit-keyboard-listener.service.mjs +4 -4
  318. package/esm2020/toggle-edit/toggle-edit.component.mjs +4 -4
  319. package/esm2020/toggle-edit/toggle-edit.module.mjs +5 -5
  320. package/esm2020/toggle-group/toggle-group-option.directive.mjs +4 -4
  321. package/esm2020/toggle-group/toggle-group.directive.mjs +4 -4
  322. package/esm2020/toggle-group/toggle-group.module.mjs +5 -5
  323. package/esm2020/unsaved-changes-dialog/unsaved-changes-can-deactivate.mjs +4 -4
  324. package/esm2020/unsaved-changes-dialog/unsaved-changes-dialog.component.mjs +4 -4
  325. package/esm2020/unsaved-changes-dialog/unsaved-changes-dialog.guard.mjs +4 -4
  326. package/esm2020/unsaved-changes-dialog/unsaved-changes-dialog.module.mjs +5 -5
  327. package/esm2020/utils/geo-json/coerce-feature-collection.mjs +1 -1
  328. package/esm2020/utils/geo-json/is-feature-collection.validator.mjs +1 -1
  329. package/esm2020/utils/geo-json/is-only-geometry-types.mjs +1 -1
  330. package/esm2020/utils/geo-json/merge-polygons.mjs +1 -1
  331. package/esm2020/utils/geo-json/no-inner-rings.validator.mjs +1 -1
  332. package/esm2020/utils/geo-json/split-multi-polygons.mjs +1 -1
  333. package/esm2020/vertical-list-filter/vertical-list-filter.component.mjs +4 -4
  334. package/esm2020/viewers/html-template-viewer/html-template-viewer.component.mjs +4 -4
  335. package/esm2020/viewers/html-template-viewer/html-template-viewer.module.mjs +5 -5
  336. package/esm2020/viewers/pdf-viewer/pdf-page/pdf-page.component.mjs +4 -4
  337. package/esm2020/viewers/pdf-viewer/pdf-renderer.service.mjs +4 -4
  338. package/esm2020/viewers/pdf-viewer/pdf-viewer.component.mjs +4 -4
  339. package/esm2020/viewers/pdf-viewer/pdf-viewer.module.mjs +5 -5
  340. package/esm2020/widget/directives/widget-drag-handle.directive.mjs +4 -4
  341. package/esm2020/widget/directives/widget-icon-tpl.directive.mjs +4 -4
  342. package/esm2020/widget/directives/widget-title-tpl.directive.mjs +4 -4
  343. package/esm2020/widget/preferences/widget-preferences.service.mjs +4 -4
  344. package/esm2020/widget/widget/widget.component.mjs +4 -4
  345. package/esm2020/widget/widget-content-components/widget-button-group/widget-button-group.component.mjs +4 -4
  346. package/esm2020/widget/widget-content-components/widget-button-group/widget-button-group.module.mjs +5 -5
  347. package/esm2020/widget/widget-content-components/widget-content-header/widget-content-header.component.mjs +4 -4
  348. package/esm2020/widget/widget-content-components/widget-content-header/widget-content-header.module.mjs +5 -5
  349. package/esm2020/widget/widget-content-components/widget-description/widget-description.component.mjs +4 -4
  350. package/esm2020/widget/widget-content-components/widget-description/widget-description.module.mjs +5 -5
  351. package/esm2020/widget/widget-content-components/widget-empty-label/widget-empty-label.component.mjs +4 -4
  352. package/esm2020/widget/widget-content-components/widget-empty-label/widget-empty-label.module.mjs +5 -5
  353. package/esm2020/widget/widget-content-components/widget-footer-link/widget-footer-link.component.mjs +4 -4
  354. package/esm2020/widget/widget-content-components/widget-footer-link/widget-footer-link.module.mjs +5 -5
  355. package/esm2020/widget/widget-content-components/widget-footer-text/widget-footer-text.component.mjs +4 -4
  356. package/esm2020/widget/widget-content-components/widget-footer-text/widget-footer-text.module.mjs +5 -5
  357. package/esm2020/widget/widget-content-components/widget-header-badge/widget-header-badge.component.mjs +4 -4
  358. package/esm2020/widget/widget-content-components/widget-header-badge/widget-header-badge.module.mjs +5 -5
  359. package/esm2020/widget/widget-content-components/widget-list-group/widget-list-group-item/widget-list-group-item-icon-tpl.directive.mjs +4 -4
  360. package/esm2020/widget/widget-content-components/widget-list-group/widget-list-group-item/widget-list-group-item.component.mjs +16 -16
  361. package/esm2020/widget/widget-content-components/widget-list-group/widget-list-group.component.mjs +4 -4
  362. package/esm2020/widget/widget-content-components/widget-list-group/widget-list-group.module.mjs +5 -5
  363. package/esm2020/widget/widget-content-components/widget-table/widget-table.component.mjs +4 -4
  364. package/esm2020/widget/widget-content-components/widget-table/widget-table.module.mjs +5 -5
  365. package/esm2020/widget/widget-content-components/widget-tile/widget-tile-footer/widget-tile-footer.component.mjs +4 -4
  366. package/esm2020/widget/widget-content-components/widget-tile/widget-tile-footer-item/widget-tile-footer-item.component.mjs +4 -4
  367. package/esm2020/widget/widget-content-components/widget-tile/widget-tile-group/widget-tile-group.component.mjs +4 -4
  368. package/esm2020/widget/widget-content-components/widget-tile/widget-tile-secondary-icon.directive.mjs +4 -4
  369. package/esm2020/widget/widget-content-components/widget-tile/widget-tile.component.mjs +7 -7
  370. package/esm2020/widget/widget-content-components/widget-tile/widget-tile.module.mjs +5 -5
  371. package/esm2020/widget/widget-content-components/widget-tile-list/widget-tile-list.component.mjs +4 -4
  372. package/esm2020/widget/widget-content-components/widget-tile-list/widget-tile-list.module.mjs +5 -5
  373. package/esm2020/widget/widget-footer/widget-footer.component.mjs +4 -4
  374. package/esm2020/widget/widget-registry.service.mjs +4 -4
  375. package/esm2020/widget/widget.module.mjs +5 -5
  376. package/fesm2015/theseam-ui-common-asset-reader.mjs +10 -10
  377. package/fesm2015/theseam-ui-common-asset-reader.mjs.map +1 -1
  378. package/fesm2015/theseam-ui-common-breadcrumbs.mjs +11 -11
  379. package/fesm2015/theseam-ui-common-breadcrumbs.mjs.map +1 -1
  380. package/fesm2015/theseam-ui-common-buttons.mjs +25 -25
  381. package/fesm2015/theseam-ui-common-buttons.mjs.map +1 -1
  382. package/fesm2015/theseam-ui-common-card.mjs +19 -19
  383. package/fesm2015/theseam-ui-common-card.mjs.map +1 -1
  384. package/fesm2015/theseam-ui-common-carousel.mjs +10 -10
  385. package/fesm2015/theseam-ui-common-carousel.mjs.map +1 -1
  386. package/fesm2015/theseam-ui-common-checkbox.mjs +7 -7
  387. package/fesm2015/theseam-ui-common-checkbox.mjs.map +1 -1
  388. package/fesm2015/theseam-ui-common-confirm-dialog.mjs +13 -13
  389. package/fesm2015/theseam-ui-common-confirm-dialog.mjs.map +1 -1
  390. package/fesm2015/theseam-ui-common-data-exporter.mjs +10 -10
  391. package/fesm2015/theseam-ui-common-data-exporter.mjs.map +1 -1
  392. package/fesm2015/theseam-ui-common-data-filters.mjs +13 -13
  393. package/fesm2015/theseam-ui-common-data-filters.mjs.map +1 -1
  394. package/fesm2015/theseam-ui-common-datatable-dynamic.mjs +26 -26
  395. package/fesm2015/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
  396. package/fesm2015/theseam-ui-common-datatable.mjs +1112 -139
  397. package/fesm2015/theseam-ui-common-datatable.mjs.map +1 -1
  398. package/fesm2015/theseam-ui-common-dynamic-component-loader.mjs +7 -7
  399. package/fesm2015/theseam-ui-common-dynamic-component-loader.mjs.map +1 -1
  400. package/fesm2015/theseam-ui-common-dynamic.mjs +21 -21
  401. package/fesm2015/theseam-ui-common-dynamic.mjs.map +1 -1
  402. package/fesm2015/theseam-ui-common-footer-bar.mjs +7 -7
  403. package/fesm2015/theseam-ui-common-footer-bar.mjs.map +1 -1
  404. package/fesm2015/theseam-ui-common-form-field-error.mjs +16 -16
  405. package/fesm2015/theseam-ui-common-form-field-error.mjs.map +1 -1
  406. package/fesm2015/theseam-ui-common-form-field.mjs +22 -22
  407. package/fesm2015/theseam-ui-common-form-field.mjs.map +1 -1
  408. package/fesm2015/theseam-ui-common-framework.mjs +1026 -277
  409. package/fesm2015/theseam-ui-common-framework.mjs.map +1 -1
  410. package/fesm2015/theseam-ui-common-google-maps.mjs +41 -41
  411. package/fesm2015/theseam-ui-common-google-maps.mjs.map +1 -1
  412. package/fesm2015/theseam-ui-common-graphql.mjs +257 -4
  413. package/fesm2015/theseam-ui-common-graphql.mjs.map +1 -1
  414. package/fesm2015/theseam-ui-common-icon.mjs +13 -13
  415. package/fesm2015/theseam-ui-common-icon.mjs.map +1 -1
  416. package/fesm2015/theseam-ui-common-layout.mjs +18 -9
  417. package/fesm2015/theseam-ui-common-layout.mjs.map +1 -1
  418. package/fesm2015/theseam-ui-common-loading.mjs +10 -10
  419. package/fesm2015/theseam-ui-common-loading.mjs.map +1 -1
  420. package/fesm2015/theseam-ui-common-menu.mjs +30 -25
  421. package/fesm2015/theseam-ui-common-menu.mjs.map +1 -1
  422. package/fesm2015/theseam-ui-common-modal.mjs +43 -43
  423. package/fesm2015/theseam-ui-common-modal.mjs.map +1 -1
  424. package/fesm2015/theseam-ui-common-navigation-reload.mjs +4 -4
  425. package/fesm2015/theseam-ui-common-navigation-reload.mjs.map +1 -1
  426. package/fesm2015/theseam-ui-common-popover.mjs +19 -11
  427. package/fesm2015/theseam-ui-common-popover.mjs.map +1 -1
  428. package/fesm2015/theseam-ui-common-progress.mjs +7 -7
  429. package/fesm2015/theseam-ui-common-progress.mjs.map +1 -1
  430. package/fesm2015/theseam-ui-common-rich-text.mjs +7 -7
  431. package/fesm2015/theseam-ui-common-rich-text.mjs.map +1 -1
  432. package/fesm2015/theseam-ui-common-scrollbar.mjs +10 -10
  433. package/fesm2015/theseam-ui-common-scrollbar.mjs.map +1 -1
  434. package/fesm2015/theseam-ui-common-services.mjs +12 -12
  435. package/fesm2015/theseam-ui-common-services.mjs.map +1 -1
  436. package/fesm2015/theseam-ui-common-shared.mjs +37 -37
  437. package/fesm2015/theseam-ui-common-shared.mjs.map +1 -1
  438. package/fesm2015/theseam-ui-common-storage.mjs +3 -3
  439. package/fesm2015/theseam-ui-common-storage.mjs.map +1 -1
  440. package/fesm2015/theseam-ui-common-story-helpers.mjs +26 -26
  441. package/fesm2015/theseam-ui-common-story-helpers.mjs.map +1 -1
  442. package/fesm2015/theseam-ui-common-tabbed.mjs +22 -22
  443. package/fesm2015/theseam-ui-common-tabbed.mjs.map +1 -1
  444. package/fesm2015/theseam-ui-common-table-cell-type.mjs +10 -10
  445. package/fesm2015/theseam-ui-common-table-cell-type.mjs.map +1 -1
  446. package/fesm2015/theseam-ui-common-table-cell-types.mjs +34 -32
  447. package/fesm2015/theseam-ui-common-table-cell-types.mjs.map +1 -1
  448. package/fesm2015/theseam-ui-common-table.mjs +207 -15
  449. package/fesm2015/theseam-ui-common-table.mjs.map +1 -1
  450. package/fesm2015/theseam-ui-common-tel-input.mjs +13 -13
  451. package/fesm2015/theseam-ui-common-tel-input.mjs.map +1 -1
  452. package/fesm2015/theseam-ui-common-tiled-select.mjs +22 -22
  453. package/fesm2015/theseam-ui-common-tiled-select.mjs.map +1 -1
  454. package/fesm2015/theseam-ui-common-toggle-edit.mjs +16 -16
  455. package/fesm2015/theseam-ui-common-toggle-edit.mjs.map +1 -1
  456. package/fesm2015/theseam-ui-common-toggle-group.mjs +10 -10
  457. package/fesm2015/theseam-ui-common-toggle-group.mjs.map +1 -1
  458. package/fesm2015/theseam-ui-common-unsaved-changes-dialog.mjs +13 -13
  459. package/fesm2015/theseam-ui-common-unsaved-changes-dialog.mjs.map +1 -1
  460. package/fesm2015/theseam-ui-common-utils.mjs.map +1 -1
  461. package/fesm2015/theseam-ui-common-vertical-list-filter.mjs +3 -3
  462. package/fesm2015/theseam-ui-common-vertical-list-filter.mjs.map +1 -1
  463. package/fesm2015/theseam-ui-common-viewers.mjs +20 -20
  464. package/fesm2015/theseam-ui-common-viewers.mjs.map +1 -1
  465. package/fesm2015/theseam-ui-common-widget.mjs +135 -135
  466. package/fesm2015/theseam-ui-common-widget.mjs.map +1 -1
  467. package/fesm2020/theseam-ui-common-asset-reader.mjs +10 -10
  468. package/fesm2020/theseam-ui-common-asset-reader.mjs.map +1 -1
  469. package/fesm2020/theseam-ui-common-breadcrumbs.mjs +11 -11
  470. package/fesm2020/theseam-ui-common-breadcrumbs.mjs.map +1 -1
  471. package/fesm2020/theseam-ui-common-buttons.mjs +25 -25
  472. package/fesm2020/theseam-ui-common-buttons.mjs.map +1 -1
  473. package/fesm2020/theseam-ui-common-card.mjs +19 -19
  474. package/fesm2020/theseam-ui-common-card.mjs.map +1 -1
  475. package/fesm2020/theseam-ui-common-carousel.mjs +10 -10
  476. package/fesm2020/theseam-ui-common-carousel.mjs.map +1 -1
  477. package/fesm2020/theseam-ui-common-checkbox.mjs +7 -7
  478. package/fesm2020/theseam-ui-common-checkbox.mjs.map +1 -1
  479. package/fesm2020/theseam-ui-common-confirm-dialog.mjs +13 -13
  480. package/fesm2020/theseam-ui-common-confirm-dialog.mjs.map +1 -1
  481. package/fesm2020/theseam-ui-common-data-exporter.mjs +10 -10
  482. package/fesm2020/theseam-ui-common-data-exporter.mjs.map +1 -1
  483. package/fesm2020/theseam-ui-common-data-filters.mjs +13 -13
  484. package/fesm2020/theseam-ui-common-data-filters.mjs.map +1 -1
  485. package/fesm2020/theseam-ui-common-datatable-dynamic.mjs +26 -26
  486. package/fesm2020/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
  487. package/fesm2020/theseam-ui-common-datatable.mjs +1096 -139
  488. package/fesm2020/theseam-ui-common-datatable.mjs.map +1 -1
  489. package/fesm2020/theseam-ui-common-dynamic-component-loader.mjs +7 -7
  490. package/fesm2020/theseam-ui-common-dynamic-component-loader.mjs.map +1 -1
  491. package/fesm2020/theseam-ui-common-dynamic.mjs +21 -21
  492. package/fesm2020/theseam-ui-common-dynamic.mjs.map +1 -1
  493. package/fesm2020/theseam-ui-common-footer-bar.mjs +7 -7
  494. package/fesm2020/theseam-ui-common-footer-bar.mjs.map +1 -1
  495. package/fesm2020/theseam-ui-common-form-field-error.mjs +16 -16
  496. package/fesm2020/theseam-ui-common-form-field-error.mjs.map +1 -1
  497. package/fesm2020/theseam-ui-common-form-field.mjs +22 -22
  498. package/fesm2020/theseam-ui-common-form-field.mjs.map +1 -1
  499. package/fesm2020/theseam-ui-common-framework.mjs +1028 -277
  500. package/fesm2020/theseam-ui-common-framework.mjs.map +1 -1
  501. package/fesm2020/theseam-ui-common-google-maps.mjs +41 -41
  502. package/fesm2020/theseam-ui-common-google-maps.mjs.map +1 -1
  503. package/fesm2020/theseam-ui-common-graphql.mjs +257 -4
  504. package/fesm2020/theseam-ui-common-graphql.mjs.map +1 -1
  505. package/fesm2020/theseam-ui-common-icon.mjs +13 -13
  506. package/fesm2020/theseam-ui-common-icon.mjs.map +1 -1
  507. package/fesm2020/theseam-ui-common-layout.mjs +18 -9
  508. package/fesm2020/theseam-ui-common-layout.mjs.map +1 -1
  509. package/fesm2020/theseam-ui-common-loading.mjs +10 -10
  510. package/fesm2020/theseam-ui-common-loading.mjs.map +1 -1
  511. package/fesm2020/theseam-ui-common-menu.mjs +30 -25
  512. package/fesm2020/theseam-ui-common-menu.mjs.map +1 -1
  513. package/fesm2020/theseam-ui-common-modal.mjs +43 -43
  514. package/fesm2020/theseam-ui-common-modal.mjs.map +1 -1
  515. package/fesm2020/theseam-ui-common-navigation-reload.mjs +4 -4
  516. package/fesm2020/theseam-ui-common-navigation-reload.mjs.map +1 -1
  517. package/fesm2020/theseam-ui-common-popover.mjs +19 -11
  518. package/fesm2020/theseam-ui-common-popover.mjs.map +1 -1
  519. package/fesm2020/theseam-ui-common-progress.mjs +7 -7
  520. package/fesm2020/theseam-ui-common-progress.mjs.map +1 -1
  521. package/fesm2020/theseam-ui-common-rich-text.mjs +7 -7
  522. package/fesm2020/theseam-ui-common-rich-text.mjs.map +1 -1
  523. package/fesm2020/theseam-ui-common-scrollbar.mjs +10 -10
  524. package/fesm2020/theseam-ui-common-scrollbar.mjs.map +1 -1
  525. package/fesm2020/theseam-ui-common-services.mjs +12 -12
  526. package/fesm2020/theseam-ui-common-services.mjs.map +1 -1
  527. package/fesm2020/theseam-ui-common-shared.mjs +37 -37
  528. package/fesm2020/theseam-ui-common-shared.mjs.map +1 -1
  529. package/fesm2020/theseam-ui-common-storage.mjs +3 -3
  530. package/fesm2020/theseam-ui-common-storage.mjs.map +1 -1
  531. package/fesm2020/theseam-ui-common-story-helpers.mjs +26 -26
  532. package/fesm2020/theseam-ui-common-story-helpers.mjs.map +1 -1
  533. package/fesm2020/theseam-ui-common-tabbed.mjs +22 -22
  534. package/fesm2020/theseam-ui-common-tabbed.mjs.map +1 -1
  535. package/fesm2020/theseam-ui-common-table-cell-type.mjs +10 -10
  536. package/fesm2020/theseam-ui-common-table-cell-type.mjs.map +1 -1
  537. package/fesm2020/theseam-ui-common-table-cell-types.mjs +34 -32
  538. package/fesm2020/theseam-ui-common-table-cell-types.mjs.map +1 -1
  539. package/fesm2020/theseam-ui-common-table.mjs +205 -15
  540. package/fesm2020/theseam-ui-common-table.mjs.map +1 -1
  541. package/fesm2020/theseam-ui-common-tel-input.mjs +13 -13
  542. package/fesm2020/theseam-ui-common-tel-input.mjs.map +1 -1
  543. package/fesm2020/theseam-ui-common-tiled-select.mjs +22 -22
  544. package/fesm2020/theseam-ui-common-tiled-select.mjs.map +1 -1
  545. package/fesm2020/theseam-ui-common-toggle-edit.mjs +16 -16
  546. package/fesm2020/theseam-ui-common-toggle-edit.mjs.map +1 -1
  547. package/fesm2020/theseam-ui-common-toggle-group.mjs +10 -10
  548. package/fesm2020/theseam-ui-common-toggle-group.mjs.map +1 -1
  549. package/fesm2020/theseam-ui-common-unsaved-changes-dialog.mjs +13 -13
  550. package/fesm2020/theseam-ui-common-unsaved-changes-dialog.mjs.map +1 -1
  551. package/fesm2020/theseam-ui-common-utils.mjs.map +1 -1
  552. package/fesm2020/theseam-ui-common-vertical-list-filter.mjs +3 -3
  553. package/fesm2020/theseam-ui-common-vertical-list-filter.mjs.map +1 -1
  554. package/fesm2020/theseam-ui-common-viewers.mjs +20 -20
  555. package/fesm2020/theseam-ui-common-viewers.mjs.map +1 -1
  556. package/fesm2020/theseam-ui-common-widget.mjs +135 -135
  557. package/fesm2020/theseam-ui-common-widget.mjs.map +1 -1
  558. package/framework/base-layout/base-layout.component.d.ts +4 -2
  559. package/framework/base-layout/base-layout.component.scss +18 -10
  560. package/framework/base-layout/base-layout.module.d.ts +11 -10
  561. package/framework/base-layout/directives/base-layout-nav-toggle.directive.d.ts +8 -3
  562. package/framework/base-layout/directives/base-layout-side-bar-header.directive.d.ts +9 -0
  563. package/framework/base-layout/index.d.ts +1 -0
  564. package/framework/base-layout/styles/_variables.scss +21 -0
  565. package/framework/nav/_nav-theme.scss +4 -0
  566. package/framework/nav/horizontal-nav/horizontal-nav.component.d.ts +25 -0
  567. package/framework/nav/horizontal-nav/horizontal-nav.component.scss +50 -0
  568. package/framework/nav/index.d.ts +5 -0
  569. package/framework/nav/nav-item/nav-item.component.d.ts +74 -0
  570. package/framework/nav/nav-item/nav-item.component.scss +203 -0
  571. package/framework/nav/nav-utils.d.ts +20 -0
  572. package/framework/nav/nav.models.d.ts +77 -0
  573. package/framework/nav/nav.module.d.ts +17 -0
  574. package/framework/nav/nav.service.d.ts +27 -0
  575. package/framework/nav/styles/_themes/light/_variables.scss +56 -0
  576. package/framework/nav/styles/_themes/primary/_variables.scss +56 -0
  577. package/framework/nav/styles/_utilities.scss +3 -0
  578. package/framework/nav/styles/_variables.scss +2 -0
  579. package/framework/public-api.d.ts +1 -0
  580. package/framework/side-nav/side-nav-item/side-nav-item.component.d.ts +7 -14
  581. package/framework/side-nav/side-nav-item/side-nav-item.component.scss +7 -5
  582. package/framework/side-nav/side-nav-toggle/side-nav-toggle.component.d.ts +5 -3
  583. package/framework/side-nav/side-nav-toggle/side-nav-toggle.component.scss +3 -6
  584. package/framework/side-nav/side-nav.component.d.ts +13 -1
  585. package/framework/side-nav/side-nav.component.scss +0 -1
  586. package/framework/side-nav/side-nav.models.d.ts +7 -1
  587. package/framework/side-nav/side-nav.module.d.ts +1 -9
  588. package/framework/side-nav/styles/_themes/light/_variables.scss +24 -14
  589. package/framework/side-nav/styles/_themes/primary/_variables.scss +8 -0
  590. package/framework/top-bar/index.d.ts +2 -0
  591. package/framework/top-bar/top-bar-compact-menu-btn-detail.directive.d.ts +8 -0
  592. package/framework/top-bar/top-bar-item.directive.d.ts +4 -1
  593. package/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.d.ts +5 -2
  594. package/framework/top-bar/top-bar-nav-toggle-btn-detail.directive.d.ts +8 -0
  595. package/framework/top-bar/top-bar.component.d.ts +25 -3
  596. package/framework/top-bar/top-bar.component.scss +7 -2
  597. package/framework/top-bar/top-bar.module.d.ts +10 -8
  598. package/graphql/datatable/datatable-graphql.service.d.ts +1 -1
  599. package/graphql/datatable/index.d.ts +3 -0
  600. package/graphql/datatable/map-filter-states.d.ts +2 -2
  601. package/graphql/datatable/map-search-date-columns-data-filter-state-to-gql.d.ts +4 -0
  602. package/graphql/datatable/map-search-numeric-columns-data-filter-state-to-gql.d.ts +4 -0
  603. package/graphql/datatable/map-search-text-columns-data-filter-state-to-gql.d.ts +4 -0
  604. package/layout/layout.service.d.ts +9 -1
  605. package/menu/menu-toggle.directive.d.ts +2 -1
  606. package/package.json +3 -3
  607. package/popover/popover/popover.component.d.ts +4 -1
  608. package/popover/popover.directive.d.ts +2 -1
  609. package/styles/vendor/ngx-datatable/_ngx-datatable.scss +83 -14
  610. package/styles/vendor/ngx-datatable/_themes/bootstrap/_variables.scss +38 -3
  611. package/table/public-api.d.ts +3 -0
  612. package/table/table/table.component.d.ts +21 -3
  613. package/table/table-cell-tpl.directive.d.ts +7 -0
  614. package/table/table-column-header-tpl.directive.d.ts +7 -0
  615. package/table/table-column.component.d.ts +24 -0
  616. package/table/table.module.d.ts +4 -1
@@ -97,9 +97,9 @@ export class TabbedComponent {
97
97
  }
98
98
  }
99
99
  }
100
- TabbedComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TabbedComponent, deps: [{ token: i1.TabbedService }, { token: i2.Router }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
101
- TabbedComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TabbedComponent, selector: "seam-tabbed", inputs: { direction: "direction", hideTabs: "hideTabs", onlyRouteContent: "onlyRouteContent", activeTabName: "activeTabName" }, outputs: { tabChanged: "tabChanged" }, providers: [TabbedService], queries: [{ propertyName: "tabbedItems", predicate: TabbedItemComponent }], ngImport: i0, template: "<div [fxLayout]=\"(direction === 'horizontal') ? 'column' : 'row'\" fxFlexFill>\n\n <!-- Tabs -->\n <div *ngIf=\"!hideTabs\"\n [fxLayout]=\"(direction === 'horizontal') ? 'row' : 'column'\"\n style=\"position: relative;\">\n <ng-container *ngFor=\"let tabbedItem of tabbedItems$ | async\">\n <div class=\"tabbed-tab pt-2 pb-2 pl-4 pr-4 bg-light text-nowrap\"\n [class.tab-dir-horizontal]=\"direction === 'horizontal'\"\n [class.tab-dir-vertical]=\"direction === 'vertical'\"\n (click)=\"onClickTab($event, tabbedItem)\"\n [class.active]=\"tabbedItem === (selectedTab$ | async)\">\n <ng-template *ngIf=\"tabbedItem.tabbedTabTpl; else tabLabelTpl\" [ngTemplateOutlet]=\"tabbedItem.tabbedTabTpl\"></ng-template>\n <ng-template #tabLabelTpl>{{ tabbedItem?.label }}</ng-template>\n </div>\n </ng-container>\n <!-- <div class=\"active-indicator\"\n [class.active-indicator-horizontal]=\"direction === 'horizontal'\"\n [class.active-indicator-vertical]=\"direction === 'vertical'\">\n </div> -->\n </div>\n\n <!-- Tabs Content -->\n <div class=\"tabbed-tabs-content bg-light\">\n <ng-container *ngIf=\"onlyRouteContent; else notOnlyRouteContent\">\n <!-- <app-slide-over-router-outlet></app-slide-over-router-outlet> -->\n <router-outlet></router-outlet>\n </ng-container>\n <ng-template #notOnlyRouteContent>\n <ng-container *ngIf=\"selectedTab$ | async as selectedTab\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"selectedTab\"></seam-tabbed-content>\n </ng-container>\n </ng-template>\n </div>\n\n</div>\n", styles: [":host{display:block}.tabbed-tab{box-sizing:border-box;font-weight:400;font-size:10pt;min-width:130px;transform:translateZ(0);overflow:hidden;border:1px solid #dee2e6}.tabbed-tab:not(.active){background-color:#fff!important}.tabbed-tab.active{font-weight:700;color:#357ebd}.tabbed-tab:hover{cursor:pointer}.tabbed-tab.tab-dir-horizontal{border-bottom:0}.tabbed-tab.tab-dir-horizontal:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-horizontal:last-child{border-top-right-radius:.25rem}.tabbed-tab.tab-dir-horizontal:not(:last-child){border-right:0}.tabbed-tab.tab-dir-horizontal.active{margin-bottom:-2px}.tabbed-tab.tab-dir-vertical{border-right:0}.tabbed-tab.tab-dir-vertical:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:last-child{border-bottom-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:not(:last-child){border-bottom:0}.tabbed-tab.tab-dir-vertical.active{margin-right:-2px}.tabbed-tabs-content{display:block;flex:1 1 auto;overflow:hidden;border:1px solid #dee2e6;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}app-slide-over-router-outlet{width:100%;height:100%;min-width:0;min-height:0}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i4.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i4.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "component", type: i5.TabbedContentComponent, selector: "seam-tabbed-content", inputs: ["tabbedItem"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] });
102
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TabbedComponent, decorators: [{
100
+ TabbedComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TabbedComponent, deps: [{ token: i1.TabbedService }, { token: i2.Router }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
101
+ TabbedComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TabbedComponent, selector: "seam-tabbed", inputs: { direction: "direction", hideTabs: "hideTabs", onlyRouteContent: "onlyRouteContent", activeTabName: "activeTabName" }, outputs: { tabChanged: "tabChanged" }, providers: [TabbedService], queries: [{ propertyName: "tabbedItems", predicate: TabbedItemComponent }], ngImport: i0, template: "<div [fxLayout]=\"(direction === 'horizontal') ? 'column' : 'row'\" fxFlexFill>\n\n <!-- Tabs -->\n <div *ngIf=\"!hideTabs\"\n [fxLayout]=\"(direction === 'horizontal') ? 'row' : 'column'\"\n style=\"position: relative;\">\n <ng-container *ngFor=\"let tabbedItem of tabbedItems$ | async\">\n <div class=\"tabbed-tab pt-2 pb-2 pl-4 pr-4 bg-light text-nowrap\"\n [class.tab-dir-horizontal]=\"direction === 'horizontal'\"\n [class.tab-dir-vertical]=\"direction === 'vertical'\"\n (click)=\"onClickTab($event, tabbedItem)\"\n [class.active]=\"tabbedItem === (selectedTab$ | async)\">\n <ng-template *ngIf=\"tabbedItem.tabbedTabTpl; else tabLabelTpl\" [ngTemplateOutlet]=\"tabbedItem.tabbedTabTpl\"></ng-template>\n <ng-template #tabLabelTpl>{{ tabbedItem?.label }}</ng-template>\n </div>\n </ng-container>\n <!-- <div class=\"active-indicator\"\n [class.active-indicator-horizontal]=\"direction === 'horizontal'\"\n [class.active-indicator-vertical]=\"direction === 'vertical'\">\n </div> -->\n </div>\n\n <!-- Tabs Content -->\n <div class=\"tabbed-tabs-content bg-light\">\n <ng-container *ngIf=\"onlyRouteContent; else notOnlyRouteContent\">\n <!-- <app-slide-over-router-outlet></app-slide-over-router-outlet> -->\n <router-outlet></router-outlet>\n </ng-container>\n <ng-template #notOnlyRouteContent>\n <ng-container *ngIf=\"selectedTab$ | async as selectedTab\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"selectedTab\"></seam-tabbed-content>\n </ng-container>\n </ng-template>\n </div>\n\n</div>\n", styles: [":host{display:block}.tabbed-tab{box-sizing:border-box;font-weight:400;font-size:10pt;min-width:130px;transform:translateZ(0);overflow:hidden;border:1px solid #dee2e6}.tabbed-tab:not(.active){background-color:#fff!important}.tabbed-tab.active{font-weight:700;color:#357ebd}.tabbed-tab:hover{cursor:pointer}.tabbed-tab.tab-dir-horizontal{border-bottom:0}.tabbed-tab.tab-dir-horizontal:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-horizontal:last-child{border-top-right-radius:.25rem}.tabbed-tab.tab-dir-horizontal:not(:last-child){border-right:0}.tabbed-tab.tab-dir-horizontal.active{margin-bottom:-2px}.tabbed-tab.tab-dir-vertical{border-right:0}.tabbed-tab.tab-dir-vertical:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:last-child{border-bottom-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:not(:last-child){border-bottom:0}.tabbed-tab.tab-dir-vertical.active{margin-right:-2px}.tabbed-tabs-content{display:block;flex:1 1 auto;overflow:hidden;border:1px solid #dee2e6;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}app-slide-over-router-outlet{width:100%;height:100%;min-width:0;min-height:0}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i4.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i4.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "component", type: i5.TabbedContentComponent, selector: "seam-tabbed-content", inputs: ["tabbedItem"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] });
102
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TabbedComponent, decorators: [{
103
103
  type: Component,
104
104
  args: [{ selector: 'seam-tabbed', providers: [TabbedService], template: "<div [fxLayout]=\"(direction === 'horizontal') ? 'column' : 'row'\" fxFlexFill>\n\n <!-- Tabs -->\n <div *ngIf=\"!hideTabs\"\n [fxLayout]=\"(direction === 'horizontal') ? 'row' : 'column'\"\n style=\"position: relative;\">\n <ng-container *ngFor=\"let tabbedItem of tabbedItems$ | async\">\n <div class=\"tabbed-tab pt-2 pb-2 pl-4 pr-4 bg-light text-nowrap\"\n [class.tab-dir-horizontal]=\"direction === 'horizontal'\"\n [class.tab-dir-vertical]=\"direction === 'vertical'\"\n (click)=\"onClickTab($event, tabbedItem)\"\n [class.active]=\"tabbedItem === (selectedTab$ | async)\">\n <ng-template *ngIf=\"tabbedItem.tabbedTabTpl; else tabLabelTpl\" [ngTemplateOutlet]=\"tabbedItem.tabbedTabTpl\"></ng-template>\n <ng-template #tabLabelTpl>{{ tabbedItem?.label }}</ng-template>\n </div>\n </ng-container>\n <!-- <div class=\"active-indicator\"\n [class.active-indicator-horizontal]=\"direction === 'horizontal'\"\n [class.active-indicator-vertical]=\"direction === 'vertical'\">\n </div> -->\n </div>\n\n <!-- Tabs Content -->\n <div class=\"tabbed-tabs-content bg-light\">\n <ng-container *ngIf=\"onlyRouteContent; else notOnlyRouteContent\">\n <!-- <app-slide-over-router-outlet></app-slide-over-router-outlet> -->\n <router-outlet></router-outlet>\n </ng-container>\n <ng-template #notOnlyRouteContent>\n <ng-container *ngIf=\"selectedTab$ | async as selectedTab\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"selectedTab\"></seam-tabbed-content>\n </ng-container>\n </ng-template>\n </div>\n\n</div>\n", styles: [":host{display:block}.tabbed-tab{box-sizing:border-box;font-weight:400;font-size:10pt;min-width:130px;transform:translateZ(0);overflow:hidden;border:1px solid #dee2e6}.tabbed-tab:not(.active){background-color:#fff!important}.tabbed-tab.active{font-weight:700;color:#357ebd}.tabbed-tab:hover{cursor:pointer}.tabbed-tab.tab-dir-horizontal{border-bottom:0}.tabbed-tab.tab-dir-horizontal:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-horizontal:last-child{border-top-right-radius:.25rem}.tabbed-tab.tab-dir-horizontal:not(:last-child){border-right:0}.tabbed-tab.tab-dir-horizontal.active{margin-bottom:-2px}.tabbed-tab.tab-dir-vertical{border-right:0}.tabbed-tab.tab-dir-vertical:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:last-child{border-bottom-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:not(:last-child){border-bottom:0}.tabbed-tab.tab-dir-vertical.active{margin-right:-2px}.tabbed-tabs-content{display:block;flex:1 1 auto;overflow:hidden;border:1px solid #dee2e6;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}app-slide-over-router-outlet{width:100%;height:100%;min-width:0;min-height:0}\n"] }]
105
105
  }], ctorParameters: function () { return [{ type: i1.TabbedService }, { type: i2.Router }, { type: i2.ActivatedRoute }]; }, propDecorators: { tabbedItems: [{
@@ -116,4 +116,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
116
116
  }], activeTabName: [{
117
117
  type: Input
118
118
  }] } });
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiYmVkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi90YWJiZWQvdGFiYmVkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi90YWJiZWQvdGFiYmVkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDYSxTQUFTLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFDN0YsTUFBTSxlQUFlLENBQUE7QUFFdEIsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUV2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUU1RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQTtBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFpQixNQUFNLGtCQUFrQixDQUFBOzs7Ozs7O0FBUS9ELE1BQU0sT0FBTyxlQUFlO0lBSzFCLElBQ0ksV0FBVyxDQUFDLEdBQStDO1FBQzdELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzdCLENBQUM7SUFDRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFBO0lBQ2hDLENBQUM7SUFNRCxJQUNJLFNBQVMsQ0FBQyxHQUFrQjtRQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQTtJQUN2QixDQUFDO0lBQ0QsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFBO0lBQ3hCLENBQUM7SUFFRCxJQUNJLFFBQVEsQ0FBQyxHQUFZO1FBQ3ZCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQTtR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dENoaWxkcmVuLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBRdWVyeUxpc3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIHNoYXJlUmVwbGF5LCB0YXAgfSBmcm9tICdyeGpzJ1xuXG5pbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi91dGlscydcblxuaW1wb3J0IHsgVGFiYmVkSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vdGFiYmVkLWl0ZW0vdGFiYmVkLWl0ZW0uY29tcG9uZW50J1xuaW1wb3J0IHsgVGFiYmVkU2VydmljZSwgVGFic0RpcmVjdGlvbiB9IGZyb20gJy4vdGFiYmVkLnNlcnZpY2UnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NlYW0tdGFiYmVkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmJlZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RhYmJlZC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFsgVGFiYmVkU2VydmljZSBdXG59KVxuZXhwb3J0IGNsYXNzIFRhYmJlZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcblxuICBwcml2YXRlIF9kaXJlY3Rpb246IFRhYnNEaXJlY3Rpb24gPSAndmVydGljYWwnXG4gIHByaXZhdGUgX2hpZGVUYWJzID0gZmFsc2VcblxuICBAQ29udGVudENoaWxkcmVuKFRhYmJlZEl0ZW1Db21wb25lbnQpXG4gIHNldCB0YWJiZWRJdGVtcyh2YWw6IFF1ZXJ5TGlzdDxUYWJiZWRJdGVtQ29tcG9uZW50PiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX3RhYmJlZEl0ZW1zLm5leHQodmFsKVxuICB9XG4gIGdldCB0YWJiZWRJdGVtcygpOiBRdWVyeUxpc3Q8VGFiYmVkSXRlbUNvbXBvbmVudD4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl90YWJiZWRJdGVtcy52YWx1ZVxuICB9XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RhYmJlZEl0ZW1zID0gbmV3IEJlaGF2aW9yU3ViamVjdDxRdWVyeUxpc3Q8VGFiYmVkSXRlbUNvbXBvbmVudD4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZClcbiAgcHVibGljIHJlYWRvbmx5IHRhYmJlZEl0ZW1zJCA9IHRoaXMuX3RhYmJlZEl0ZW1zLmFzT2JzZXJ2YWJsZSgpXG5cbiAgQE91dHB1dCgpIHRhYkNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFRhYmJlZEl0ZW1Db21wb25lbnQ+KClcblxuICBASW5wdXQoKVxuICBzZXQgZGlyZWN0aW9uKHZhbDogVGFic0RpcmVjdGlvbikge1xuICAgIHRoaXMuX2RpcmVjdGlvbiA9IHZhbFxuICB9XG4gIGdldCBkaXJlY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RpcmVjdGlvblxuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IGhpZGVUYWJzKHZhbDogYm9vbGVhbikge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5faGlkZVRhYnMgPSB2YWxcbiAgICB9KVxuICB9XG4gIGdldCBoaWRlVGFicygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faGlkZVRhYnNcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBvbmx5Um91dGVDb250ZW50ID0gZmFsc2VcblxuICBnZXQgc2VsZWN0ZWRUYWIoKTogVGFiYmVkSXRlbUNvbXBvbmVudCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMub25seVJvdXRlQ29udGVudCkge1xuICAgICAgaWYgKHRoaXMucm91dGUuc25hcHNob3QuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBjb25maWcgPSB0aGlzLnJvdXRlLnNuYXBzaG90LmNoaWxkcmVuWzBdLnJvdXRlQ29uZmlnXG4gICAgICAgIGNvbnN0IGNoaWxkUGF0aCA9IGNvbmZpZyAmJiBjb25maWcucGF0aFxuICAgICAgICByZXR1cm4gdGhpcy50YWJiZWRJdGVtcz8uZmluZCh0ID0+IHQubmFtZSA9PT0gY2hpbGRQYXRoKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRUYWIudmFsdWVcbiAgICB9XG4gIH1cbiAgc2V0IHNlbGVjdGVkVGFiKHRhYjogVGFiYmVkSXRlbUNvbXBvbmVudCB8IHVuZGVmaW5lZCkgeyB0aGlzLl9zZWxlY3RlZFRhYi5uZXh0KHRhYikgfVxuICBwcml2YXRlIHJlYWRvbmx5IF9zZWxlY3RlZFRhYiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGFiYmVkSXRlbUNvbXBvbmVudCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKVxuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0ZWRUYWIkID0gdGhpcy5fc2VsZWN0ZWRUYWIuYXNPYnNlcnZhYmxlKCkucGlwZShcbiAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pXG4gIClcblxuICBASW5wdXQoKVxuICBzZXQgYWN0aXZlVGFiTmFtZSh2YWw6IHN0cmluZykge1xuICAgIHRoaXMuX2FjdGl2ZVRhYk5hbWUubmV4dCh2YWwpXG4gIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfYWN0aXZlVGFiTmFtZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpXG4gIHByaXZhdGUgcmVhZG9ubHkgYWN0aXZlVGFiTmFtZSQgPSB0aGlzLl9hY3RpdmVUYWJOYW1lLmFzT2JzZXJ2YWJsZSgpXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHRhYmJlZFNlcnZpY2U6IFRhYmJlZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVxuICApIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMudGFiYmVkU2VydmljZS5yZWdpc3RlclRhYih0aGlzLCAnbWFpbicpXG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnRhYmJlZFNlcnZpY2UudW5yZWdpc3RlclRhYih0aGlzLCAnbWFpbicpXG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgY29tYmluZUxhdGVzdChbIHRoaXMudGFiYmVkSXRlbXMkLCB0aGlzLmFjdGl2ZVRhYk5hbWUkIF0pLnBpcGUoXG4gICAgICB0YXAoKFsgXywgYWN0aXZlVGFiTmFtZSBdKSA9PiB0aGlzLnNlbGVjdFRhYihhY3RpdmVUYWJOYW1lKSlcbiAgICApLnN1YnNjcmliZSgpXG4gIH1cblxuICAvKipcbiAgICpcbiAgICovXG4gIHB1YmxpYyBvbkNsaWNrVGFiKGV2ZW50OiBhbnksIHRhYjogVGFiYmVkSXRlbUNvbXBvbmVudCkge1xuICAgIHRoaXMuc2VsZWN0ZWRUYWIgPSB0YWJcbiAgICBpZiAodGhpcy5vbmx5Um91dGVDb250ZW50KSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbIHRhYi5uYW1lIF0sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KVxuICAgIH1cbiAgICB0aGlzLnRhYkNoYW5nZWQuZW1pdCh0YWIpXG4gIH1cblxuICAvKipcbiAgICogVE9ETzogTWFrZSBtb3JlIGdlbmVyaWMsIHNvIHRoYXQgdGhlIG5hbWUgaXNuJ3QgdGhlIG9ubHkgd2F5XG4gICAqICB0byBzZWxlY3QgYSB0YWJcbiAgICovXG4gIHB1YmxpYyBzZWxlY3RUYWIobmFtZT86IHN0cmluZykge1xuICAgIGlmIChpc051bGxPclVuZGVmaW5lZChuYW1lKSB8fCBuYW1lID09PSB0aGlzLnNlbGVjdGVkVGFiPy5uYW1lKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCB0YWIgPSB0aGlzLnRhYmJlZEl0ZW1zPy5maW5kKHQgPT4gdC5uYW1lID09PSBuYW1lKVxuICAgIGlmICh0YWIpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYWIgPSB0YWJcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjb25zb2xlLndhcm4oYFRhYiB3aXRoIG5hbWUgJyR7bmFtZX0nIG5vdCBmb3VuZGApXG4gICAgfVxuICB9XG5cbn1cbiIsIjxkaXYgW2Z4TGF5b3V0XT1cIihkaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJykgPyAnY29sdW1uJyA6ICdyb3cnXCIgZnhGbGV4RmlsbD5cblxuICA8IS0tIFRhYnMgLS0+XG4gIDxkaXYgKm5nSWY9XCIhaGlkZVRhYnNcIlxuICAgIFtmeExheW91dF09XCIoZGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCcpID8gJ3JvdycgOiAnY29sdW1uJ1wiXG4gICAgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGFiYmVkSXRlbSBvZiB0YWJiZWRJdGVtcyQgfCBhc3luY1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInRhYmJlZC10YWIgcHQtMiBwYi0yIHBsLTQgcHItNCBiZy1saWdodCB0ZXh0LW5vd3JhcFwiXG4gICAgICAgIFtjbGFzcy50YWItZGlyLWhvcml6b250YWxdPVwiZGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCdcIlxuICAgICAgICBbY2xhc3MudGFiLWRpci12ZXJ0aWNhbF09XCJkaXJlY3Rpb24gPT09ICd2ZXJ0aWNhbCdcIlxuICAgICAgICAoY2xpY2spPVwib25DbGlja1RhYigkZXZlbnQsIHRhYmJlZEl0ZW0pXCJcbiAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJ0YWJiZWRJdGVtID09PSAoc2VsZWN0ZWRUYWIkIHwgYXN5bmMpXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cInRhYmJlZEl0ZW0udGFiYmVkVGFiVHBsOyBlbHNlIHRhYkxhYmVsVHBsXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwidGFiYmVkSXRlbS50YWJiZWRUYWJUcGxcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGUgI3RhYkxhYmVsVHBsPnt7IHRhYmJlZEl0ZW0/LmxhYmVsIH19PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwhLS0gPGRpdiBjbGFzcz1cImFjdGl2ZS1pbmRpY2F0b3JcIlxuICAgICAgW2NsYXNzLmFjdGl2ZS1pbmRpY2F0b3ItaG9yaXpvbnRhbF09XCJkaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJ1wiXG4gICAgICBbY2xhc3MuYWN0aXZlLWluZGljYXRvci12ZXJ0aWNhbF09XCJkaXJlY3Rpb24gPT09ICd2ZXJ0aWNhbCdcIj5cbiAgICA8L2Rpdj4gLS0+XG4gIDwvZGl2PlxuXG4gIDwhLS0gVGFicyBDb250ZW50IC0tPlxuICA8ZGl2IGNsYXNzPVwidGFiYmVkLXRhYnMtY29udGVudCBiZy1saWdodFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvbmx5Um91dGVDb250ZW50OyBlbHNlIG5vdE9ubHlSb3V0ZUNvbnRlbnRcIj5cbiAgICAgIDwhLS0gPGFwcC1zbGlkZS1vdmVyLXJvdXRlci1vdXRsZXQ+PC9hcHAtc2xpZGUtb3Zlci1yb3V0ZXItb3V0bGV0PiAtLT5cbiAgICAgIDxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI25vdE9ubHlSb3V0ZUNvbnRlbnQ+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRUYWIkIHwgYXN5bmMgYXMgc2VsZWN0ZWRUYWJcIj5cbiAgICAgICAgPHNlYW0tdGFiYmVkLWNvbnRlbnQgZnhGbGV4RmlsbCBbdGFiYmVkSXRlbV09XCJzZWxlY3RlZFRhYlwiPjwvc2VhbS10YWJiZWQtY29udGVudD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuXG48L2Rpdj5cbiJdfQ==
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiYmVkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi90YWJiZWQvdGFiYmVkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi90YWJiZWQvdGFiYmVkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDYSxTQUFTLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFDN0YsTUFBTSxlQUFlLENBQUE7QUFFdEIsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUV2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUU1RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQTtBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFpQixNQUFNLGtCQUFrQixDQUFBOzs7Ozs7O0FBUS9ELE1BQU0sT0FBTyxlQUFlO0lBSzFCLElBQ0ksV0FBVyxDQUFDLEdBQStDO1FBQzdELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzdCLENBQUM7SUFDRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFBO0lBQ2hDLENBQUM7SUFNRCxJQUNJLFNBQVMsQ0FBQyxHQUFrQjtRQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQTtJQUN2QixDQUFDO0lBQ0QsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFBO0lBQ3hCLENBQUM7SUFFRCxJQUNJLFFBQVEsQ0FBQyxHQUFZO1FBQ3ZCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQTtR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dENoaWxkcmVuLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBRdWVyeUxpc3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIHNoYXJlUmVwbGF5LCB0YXAgfSBmcm9tICdyeGpzJ1xuXG5pbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi91dGlscydcblxuaW1wb3J0IHsgVGFiYmVkSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vdGFiYmVkLWl0ZW0vdGFiYmVkLWl0ZW0uY29tcG9uZW50J1xuaW1wb3J0IHsgVGFiYmVkU2VydmljZSwgVGFic0RpcmVjdGlvbiB9IGZyb20gJy4vdGFiYmVkLnNlcnZpY2UnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NlYW0tdGFiYmVkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmJlZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RhYmJlZC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFsgVGFiYmVkU2VydmljZSBdXG59KVxuZXhwb3J0IGNsYXNzIFRhYmJlZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcblxuICBwcml2YXRlIF9kaXJlY3Rpb246IFRhYnNEaXJlY3Rpb24gPSAndmVydGljYWwnXG4gIHByaXZhdGUgX2hpZGVUYWJzID0gZmFsc2VcblxuICBAQ29udGVudENoaWxkcmVuKFRhYmJlZEl0ZW1Db21wb25lbnQpXG4gIHNldCB0YWJiZWRJdGVtcyh2YWw6IFF1ZXJ5TGlzdDxUYWJiZWRJdGVtQ29tcG9uZW50PiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX3RhYmJlZEl0ZW1zLm5leHQodmFsKVxuICB9XG4gIGdldCB0YWJiZWRJdGVtcygpOiBRdWVyeUxpc3Q8VGFiYmVkSXRlbUNvbXBvbmVudD4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl90YWJiZWRJdGVtcy52YWx1ZVxuICB9XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RhYmJlZEl0ZW1zID0gbmV3IEJlaGF2aW9yU3ViamVjdDxRdWVyeUxpc3Q8VGFiYmVkSXRlbUNvbXBvbmVudD4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZClcbiAgcHVibGljIHJlYWRvbmx5IHRhYmJlZEl0ZW1zJCA9IHRoaXMuX3RhYmJlZEl0ZW1zLmFzT2JzZXJ2YWJsZSgpXG5cbiAgQE91dHB1dCgpIHRhYkNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFRhYmJlZEl0ZW1Db21wb25lbnQ+KClcblxuICBASW5wdXQoKVxuICBzZXQgZGlyZWN0aW9uKHZhbDogVGFic0RpcmVjdGlvbikge1xuICAgIHRoaXMuX2RpcmVjdGlvbiA9IHZhbFxuICB9XG4gIGdldCBkaXJlY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RpcmVjdGlvblxuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IGhpZGVUYWJzKHZhbDogYm9vbGVhbikge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5faGlkZVRhYnMgPSB2YWxcbiAgICB9KVxuICB9XG4gIGdldCBoaWRlVGFicygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faGlkZVRhYnNcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBvbmx5Um91dGVDb250ZW50ID0gZmFsc2VcblxuICBnZXQgc2VsZWN0ZWRUYWIoKTogVGFiYmVkSXRlbUNvbXBvbmVudCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMub25seVJvdXRlQ29udGVudCkge1xuICAgICAgaWYgKHRoaXMucm91dGUuc25hcHNob3QuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBjb25maWcgPSB0aGlzLnJvdXRlLnNuYXBzaG90LmNoaWxkcmVuWzBdLnJvdXRlQ29uZmlnXG4gICAgICAgIGNvbnN0IGNoaWxkUGF0aCA9IGNvbmZpZyAmJiBjb25maWcucGF0aFxuICAgICAgICByZXR1cm4gdGhpcy50YWJiZWRJdGVtcz8uZmluZCh0ID0+IHQubmFtZSA9PT0gY2hpbGRQYXRoKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRUYWIudmFsdWVcbiAgICB9XG4gIH1cbiAgc2V0IHNlbGVjdGVkVGFiKHRhYjogVGFiYmVkSXRlbUNvbXBvbmVudCB8IHVuZGVmaW5lZCkgeyB0aGlzLl9zZWxlY3RlZFRhYi5uZXh0KHRhYikgfVxuICBwcml2YXRlIHJlYWRvbmx5IF9zZWxlY3RlZFRhYiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGFiYmVkSXRlbUNvbXBvbmVudCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKVxuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0ZWRUYWIkID0gdGhpcy5fc2VsZWN0ZWRUYWIuYXNPYnNlcnZhYmxlKCkucGlwZShcbiAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pXG4gIClcblxuICBASW5wdXQoKVxuICBzZXQgYWN0aXZlVGFiTmFtZSh2YWw6IHN0cmluZykge1xuICAgIHRoaXMuX2FjdGl2ZVRhYk5hbWUubmV4dCh2YWwpXG4gIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfYWN0aXZlVGFiTmFtZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpXG4gIHByaXZhdGUgcmVhZG9ubHkgYWN0aXZlVGFiTmFtZSQgPSB0aGlzLl9hY3RpdmVUYWJOYW1lLmFzT2JzZXJ2YWJsZSgpXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHRhYmJlZFNlcnZpY2U6IFRhYmJlZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVxuICApIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMudGFiYmVkU2VydmljZS5yZWdpc3RlclRhYih0aGlzLCAnbWFpbicpXG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnRhYmJlZFNlcnZpY2UudW5yZWdpc3RlclRhYih0aGlzLCAnbWFpbicpXG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgY29tYmluZUxhdGVzdChbIHRoaXMudGFiYmVkSXRlbXMkLCB0aGlzLmFjdGl2ZVRhYk5hbWUkIF0pLnBpcGUoXG4gICAgICB0YXAoKFsgXywgYWN0aXZlVGFiTmFtZSBdKSA9PiB0aGlzLnNlbGVjdFRhYihhY3RpdmVUYWJOYW1lKSlcbiAgICApLnN1YnNjcmliZSgpXG4gIH1cblxuICAvKipcbiAgICpcbiAgICovXG4gIHB1YmxpYyBvbkNsaWNrVGFiKGV2ZW50OiBhbnksIHRhYjogVGFiYmVkSXRlbUNvbXBvbmVudCkge1xuICAgIHRoaXMuc2VsZWN0ZWRUYWIgPSB0YWJcbiAgICBpZiAodGhpcy5vbmx5Um91dGVDb250ZW50KSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbIHRhYi5uYW1lIF0sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KVxuICAgIH1cbiAgICB0aGlzLnRhYkNoYW5nZWQuZW1pdCh0YWIpXG4gIH1cblxuICAvKipcbiAgICogVE9ETzogTWFrZSBtb3JlIGdlbmVyaWMsIHNvIHRoYXQgdGhlIG5hbWUgaXNuJ3QgdGhlIG9ubHkgd2F5XG4gICAqICB0byBzZWxlY3QgYSB0YWJcbiAgICovXG4gIHB1YmxpYyBzZWxlY3RUYWIobmFtZT86IHN0cmluZykge1xuICAgIGlmIChpc051bGxPclVuZGVmaW5lZChuYW1lKSB8fCBuYW1lID09PSB0aGlzLnNlbGVjdGVkVGFiPy5uYW1lKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCB0YWIgPSB0aGlzLnRhYmJlZEl0ZW1zPy5maW5kKHQgPT4gdC5uYW1lID09PSBuYW1lKVxuICAgIGlmICh0YWIpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYWIgPSB0YWJcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjb25zb2xlLndhcm4oYFRhYiB3aXRoIG5hbWUgJyR7bmFtZX0nIG5vdCBmb3VuZGApXG4gICAgfVxuICB9XG5cbn1cbiIsIjxkaXYgW2Z4TGF5b3V0XT1cIihkaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJykgPyAnY29sdW1uJyA6ICdyb3cnXCIgZnhGbGV4RmlsbD5cblxuICA8IS0tIFRhYnMgLS0+XG4gIDxkaXYgKm5nSWY9XCIhaGlkZVRhYnNcIlxuICAgIFtmeExheW91dF09XCIoZGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCcpID8gJ3JvdycgOiAnY29sdW1uJ1wiXG4gICAgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGFiYmVkSXRlbSBvZiB0YWJiZWRJdGVtcyQgfCBhc3luY1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInRhYmJlZC10YWIgcHQtMiBwYi0yIHBsLTQgcHItNCBiZy1saWdodCB0ZXh0LW5vd3JhcFwiXG4gICAgICAgIFtjbGFzcy50YWItZGlyLWhvcml6b250YWxdPVwiZGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCdcIlxuICAgICAgICBbY2xhc3MudGFiLWRpci12ZXJ0aWNhbF09XCJkaXJlY3Rpb24gPT09ICd2ZXJ0aWNhbCdcIlxuICAgICAgICAoY2xpY2spPVwib25DbGlja1RhYigkZXZlbnQsIHRhYmJlZEl0ZW0pXCJcbiAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJ0YWJiZWRJdGVtID09PSAoc2VsZWN0ZWRUYWIkIHwgYXN5bmMpXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cInRhYmJlZEl0ZW0udGFiYmVkVGFiVHBsOyBlbHNlIHRhYkxhYmVsVHBsXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwidGFiYmVkSXRlbS50YWJiZWRUYWJUcGxcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGUgI3RhYkxhYmVsVHBsPnt7IHRhYmJlZEl0ZW0/LmxhYmVsIH19PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwhLS0gPGRpdiBjbGFzcz1cImFjdGl2ZS1pbmRpY2F0b3JcIlxuICAgICAgW2NsYXNzLmFjdGl2ZS1pbmRpY2F0b3ItaG9yaXpvbnRhbF09XCJkaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJ1wiXG4gICAgICBbY2xhc3MuYWN0aXZlLWluZGljYXRvci12ZXJ0aWNhbF09XCJkaXJlY3Rpb24gPT09ICd2ZXJ0aWNhbCdcIj5cbiAgICA8L2Rpdj4gLS0+XG4gIDwvZGl2PlxuXG4gIDwhLS0gVGFicyBDb250ZW50IC0tPlxuICA8ZGl2IGNsYXNzPVwidGFiYmVkLXRhYnMtY29udGVudCBiZy1saWdodFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvbmx5Um91dGVDb250ZW50OyBlbHNlIG5vdE9ubHlSb3V0ZUNvbnRlbnRcIj5cbiAgICAgIDwhLS0gPGFwcC1zbGlkZS1vdmVyLXJvdXRlci1vdXRsZXQ+PC9hcHAtc2xpZGUtb3Zlci1yb3V0ZXItb3V0bGV0PiAtLT5cbiAgICAgIDxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI25vdE9ubHlSb3V0ZUNvbnRlbnQ+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRUYWIkIHwgYXN5bmMgYXMgc2VsZWN0ZWRUYWJcIj5cbiAgICAgICAgPHNlYW0tdGFiYmVkLWNvbnRlbnQgZnhGbGV4RmlsbCBbdGFiYmVkSXRlbV09XCJzZWxlY3RlZFRhYlwiPjwvc2VhbS10YWJiZWQtY29udGVudD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuXG48L2Rpdj5cbiJdfQ==
@@ -10,8 +10,8 @@ import { TabbedTabDirective } from './directives/tabbed-tab.directive';
10
10
  import * as i0 from "@angular/core";
11
11
  export class TheSeamTabbedModule {
12
12
  }
13
- TheSeamTabbedModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamTabbedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
14
- TheSeamTabbedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.7", ngImport: i0, type: TheSeamTabbedModule, declarations: [TabbedComponent,
13
+ TheSeamTabbedModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TheSeamTabbedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
14
+ TheSeamTabbedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: TheSeamTabbedModule, declarations: [TabbedComponent,
15
15
  TabbedTabContentDirective,
16
16
  TabbedTabDirective,
17
17
  TabbedItemComponent,
@@ -23,10 +23,10 @@ TheSeamTabbedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", ver
23
23
  TabbedTabDirective,
24
24
  TabbedItemComponent,
25
25
  TabbedContentComponent] });
26
- TheSeamTabbedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamTabbedModule, imports: [CommonModule,
26
+ TheSeamTabbedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TheSeamTabbedModule, imports: [CommonModule,
27
27
  RouterModule,
28
28
  FlexLayoutModule] });
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamTabbedModule, decorators: [{
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TheSeamTabbedModule, decorators: [{
30
30
  type: NgModule,
31
31
  args: [{
32
32
  imports: [
@@ -51,4 +51,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
51
51
  ]
52
52
  }]
53
53
  }] });
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiYmVkLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi90YWJiZWQvdGFiYmVkLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDOUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFFOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFFdkQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJDLENBQUE7QUFDbEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUNBQXFDLENBQUE7QUFDekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBRXBELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFBO0FBQ3JGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFBOztBQXdCdEUsTUFBTSxPQUFPLG1CQUFtQjs7Z0hBQW5CLG1CQUFtQjtpSEFBbkIsbUJBQW1CLGlCQWY1QixlQUFlO1FBQ2YseUJBQXlCO1FBQ3pCLGtCQUFrQjtRQUNsQixtQkFBbUI7UUFDbkIsc0JBQXNCO1FBQ3RCLHNCQUFzQixhQVZ0QixZQUFZO1FBQ1osWUFBWTtRQUNaLGdCQUFnQixhQVdoQixlQUFlO1FBQ2YseUJBQXlCO1FBQ3pCLGtCQUFrQjtRQUNsQixtQkFBbUI7UUFDbkIsc0JBQXNCO2lIQUdiLG1CQUFtQixZQXBCNUIsWUFBWTtRQUNaLFlBQVk7UUFDWixnQkFBZ0I7MkZBa0JQLG1CQUFtQjtrQkF0Qi9CLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osWUFBWTt3QkFDWixnQkFBZ0I7cUJBQ2pCO29CQUNELFlBQVksRUFBRTt3QkFDWixlQUFlO3dCQUNmLHlCQUF5Qjt3QkFDekIsa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLHNCQUFzQjt3QkFDdEIsc0JBQXNCO3FCQUN6QjtvQkFDQyxPQUFPLEVBQUU7d0JBQ1AsZUFBZTt3QkFDZix5QkFBeUI7d0JBQ3pCLGtCQUFrQjt3QkFDbEIsbUJBQW1CO3dCQUNuQixzQkFBc0I7cUJBQ3ZCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJ1xuXG5pbXBvcnQgeyBGbGV4TGF5b3V0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZmxleC1sYXlvdXQnXG5cbmltcG9ydCB7IFRhYmJlZENvbnRlbnRDb21wb25lbnQgfSBmcm9tICcuL3RhYmJlZC1jb250ZW50L3RhYmJlZC1jb250ZW50LmNvbXBvbmVudCdcbmltcG9ydCB7IFRhYmJlZEl0ZW1Db21wb25lbnQgfSBmcm9tICcuL3RhYmJlZC1pdGVtL3RhYmJlZC1pdGVtLmNvbXBvbmVudCdcbmltcG9ydCB7IFRhYmJlZENvbXBvbmVudCB9IGZyb20gJy4vdGFiYmVkLmNvbXBvbmVudCdcblxuaW1wb3J0IHsgVGFiYmVkVGFiQ29udGVudERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy90YWJiZWQtdGFiLWNvbnRlbnQuZGlyZWN0aXZlJ1xuaW1wb3J0IHsgVGFiYmVkVGFiRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3RhYmJlZC10YWIuZGlyZWN0aXZlJ1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFJvdXRlck1vZHVsZSxcbiAgICBGbGV4TGF5b3V0TW9kdWxlLFxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBUYWJiZWRDb21wb25lbnQsXG4gICAgVGFiYmVkVGFiQ29udGVudERpcmVjdGl2ZSxcbiAgICBUYWJiZWRUYWJEaXJlY3RpdmUsXG4gICAgVGFiYmVkSXRlbUNvbXBvbmVudCxcbiAgICBUYWJiZWRDb250ZW50Q29tcG9uZW50LFxuICAgIFRhYmJlZENvbnRlbnRDb21wb25lbnQsXG5dLFxuICBleHBvcnRzOiBbXG4gICAgVGFiYmVkQ29tcG9uZW50LFxuICAgIFRhYmJlZFRhYkNvbnRlbnREaXJlY3RpdmUsXG4gICAgVGFiYmVkVGFiRGlyZWN0aXZlLFxuICAgIFRhYmJlZEl0ZW1Db21wb25lbnQsXG4gICAgVGFiYmVkQ29udGVudENvbXBvbmVudCxcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBUaGVTZWFtVGFiYmVkTW9kdWxlIHt9XG4iXX0=
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiYmVkLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi90YWJiZWQvdGFiYmVkLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDOUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFFOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFFdkQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJDLENBQUE7QUFDbEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUNBQXFDLENBQUE7QUFDekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBRXBELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFBO0FBQ3JGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFBOztBQXdCdEUsTUFBTSxPQUFPLG1CQUFtQjs7aUhBQW5CLG1CQUFtQjtrSEFBbkIsbUJBQW1CLGlCQWY1QixlQUFlO1FBQ2YseUJBQXlCO1FBQ3pCLGtCQUFrQjtRQUNsQixtQkFBbUI7UUFDbkIsc0JBQXNCO1FBQ3RCLHNCQUFzQixhQVZ0QixZQUFZO1FBQ1osWUFBWTtRQUNaLGdCQUFnQixhQVdoQixlQUFlO1FBQ2YseUJBQXlCO1FBQ3pCLGtCQUFrQjtRQUNsQixtQkFBbUI7UUFDbkIsc0JBQXNCO2tIQUdiLG1CQUFtQixZQXBCNUIsWUFBWTtRQUNaLFlBQVk7UUFDWixnQkFBZ0I7NEZBa0JQLG1CQUFtQjtrQkF0Qi9CLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osWUFBWTt3QkFDWixnQkFBZ0I7cUJBQ2pCO29CQUNELFlBQVksRUFBRTt3QkFDWixlQUFlO3dCQUNmLHlCQUF5Qjt3QkFDekIsa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLHNCQUFzQjt3QkFDdEIsc0JBQXNCO3FCQUN6QjtvQkFDQyxPQUFPLEVBQUU7d0JBQ1AsZUFBZTt3QkFDZix5QkFBeUI7d0JBQ3pCLGtCQUFrQjt3QkFDbEIsbUJBQW1CO3dCQUNuQixzQkFBc0I7cUJBQ3ZCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJ1xuXG5pbXBvcnQgeyBGbGV4TGF5b3V0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZmxleC1sYXlvdXQnXG5cbmltcG9ydCB7IFRhYmJlZENvbnRlbnRDb21wb25lbnQgfSBmcm9tICcuL3RhYmJlZC1jb250ZW50L3RhYmJlZC1jb250ZW50LmNvbXBvbmVudCdcbmltcG9ydCB7IFRhYmJlZEl0ZW1Db21wb25lbnQgfSBmcm9tICcuL3RhYmJlZC1pdGVtL3RhYmJlZC1pdGVtLmNvbXBvbmVudCdcbmltcG9ydCB7IFRhYmJlZENvbXBvbmVudCB9IGZyb20gJy4vdGFiYmVkLmNvbXBvbmVudCdcblxuaW1wb3J0IHsgVGFiYmVkVGFiQ29udGVudERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy90YWJiZWQtdGFiLWNvbnRlbnQuZGlyZWN0aXZlJ1xuaW1wb3J0IHsgVGFiYmVkVGFiRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3RhYmJlZC10YWIuZGlyZWN0aXZlJ1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFJvdXRlck1vZHVsZSxcbiAgICBGbGV4TGF5b3V0TW9kdWxlLFxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBUYWJiZWRDb21wb25lbnQsXG4gICAgVGFiYmVkVGFiQ29udGVudERpcmVjdGl2ZSxcbiAgICBUYWJiZWRUYWJEaXJlY3RpdmUsXG4gICAgVGFiYmVkSXRlbUNvbXBvbmVudCxcbiAgICBUYWJiZWRDb250ZW50Q29tcG9uZW50LFxuICAgIFRhYmJlZENvbnRlbnRDb21wb25lbnQsXG5dLFxuICBleHBvcnRzOiBbXG4gICAgVGFiYmVkQ29tcG9uZW50LFxuICAgIFRhYmJlZFRhYkNvbnRlbnREaXJlY3RpdmUsXG4gICAgVGFiYmVkVGFiRGlyZWN0aXZlLFxuICAgIFRhYmJlZEl0ZW1Db21wb25lbnQsXG4gICAgVGFiYmVkQ29udGVudENvbXBvbmVudCxcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBUaGVTZWFtVGFiYmVkTW9kdWxlIHt9XG4iXX0=
@@ -22,9 +22,9 @@ export class TabbedService {
22
22
  }
23
23
  }
24
24
  }
25
- TabbedService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TabbedService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
26
- TabbedService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TabbedService });
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TabbedService, decorators: [{
25
+ TabbedService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TabbedService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
26
+ TabbedService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TabbedService });
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TabbedService, decorators: [{
28
28
  type: Injectable
29
29
  }] });
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiYmVkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vdGFiYmVkL3RhYmJlZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7O0FBTzFDLE1BQU0sT0FBTyxhQUFhO0lBRDFCO1FBR1UsZUFBVSxHQUErQyxFQUFFLENBQUE7S0EwQnBFO0lBeEJRLFdBQVcsQ0FBQyxHQUFvQixFQUFFLFNBQWlCO1FBQ3hELElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQy9CLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFBO1NBQ2hDO1FBRUQsS0FBSyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQzFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFBO1NBQ2xCO1FBRUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDdEMsQ0FBQztJQUVNLGFBQWEsQ0FBQyxHQUFvQixFQUFFLFNBQWlCO1FBQzFELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUM1RCxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQ2YsQ0FBQTtZQUVELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUN6QyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUE7YUFDbkY7U0FDRjtJQUNILENBQUM7OzBHQTFCVSxhQUFhOzhHQUFiLGFBQWE7MkZBQWIsYUFBYTtrQkFEekIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuXG5pbXBvcnQgeyBUYWJiZWRDb21wb25lbnQgfSBmcm9tICcuL3RhYmJlZC5jb21wb25lbnQnXG5cbmV4cG9ydCBkZWNsYXJlIHR5cGUgVGFic0RpcmVjdGlvbiA9ICdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCdcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRhYmJlZFNlcnZpY2Uge1xuXG4gIHByaXZhdGUgX3RhYkdyb3VwczogeyBbZ3JvdXBOYW1lOiBzdHJpbmddOiBUYWJiZWRDb21wb25lbnRbXSB9ID0ge31cblxuICBwdWJsaWMgcmVnaXN0ZXJUYWIodGFiOiBUYWJiZWRDb21wb25lbnQsIGdyb3VwTmFtZTogc3RyaW5nKSB7XG4gICAgaWYgKCF0aGlzLl90YWJHcm91cHNbZ3JvdXBOYW1lXSkge1xuICAgICAgdGhpcy5fdGFiR3JvdXBzW2dyb3VwTmFtZV0gPSBbXVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgdCBvZiB0aGlzLl90YWJHcm91cHNbZ3JvdXBOYW1lXSkge1xuICAgICAgdC5oaWRlVGFicyA9IHRydWVcbiAgICB9XG5cbiAgICB0aGlzLl90YWJHcm91cHNbZ3JvdXBOYW1lXS5wdXNoKHRhYilcbiAgfVxuXG4gIHB1YmxpYyB1bnJlZ2lzdGVyVGFiKHRhYjogVGFiYmVkQ29tcG9uZW50LCBncm91cE5hbWU6IHN0cmluZykge1xuICAgIGlmICh0aGlzLl90YWJHcm91cHNbZ3JvdXBOYW1lXSkge1xuICAgICAgdGhpcy5fdGFiR3JvdXBzW2dyb3VwTmFtZV0gPSB0aGlzLl90YWJHcm91cHNbZ3JvdXBOYW1lXS5maWx0ZXIoXG4gICAgICAgIHQgPT4gdCAhPT0gdGFiXG4gICAgICApXG5cbiAgICAgIGlmICh0aGlzLl90YWJHcm91cHNbZ3JvdXBOYW1lXS5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuX3RhYkdyb3Vwc1tncm91cE5hbWVdW3RoaXMuX3RhYkdyb3Vwc1tncm91cE5hbWVdLmxlbmd0aCAtIDFdLmhpZGVUYWJzID0gZmFsc2VcbiAgICAgIH1cbiAgICB9XG4gIH1cblxufVxuIl19
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiYmVkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vdGFiYmVkL3RhYmJlZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7O0FBTzFDLE1BQU0sT0FBTyxhQUFhO0lBRDFCO1FBR1UsZUFBVSxHQUErQyxFQUFFLENBQUE7S0EwQnBFO0lBeEJRLFdBQVcsQ0FBQyxHQUFvQixFQUFFLFNBQWlCO1FBQ3hELElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQy9CLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFBO1NBQ2hDO1FBRUQsS0FBSyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQzFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFBO1NBQ2xCO1FBRUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDdEMsQ0FBQztJQUVNLGFBQWEsQ0FBQyxHQUFvQixFQUFFLFNBQWlCO1FBQzFELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUM1RCxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQ2YsQ0FBQTtZQUVELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUN6QyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUE7YUFDbkY7U0FDRjtJQUNILENBQUM7OzJHQTFCVSxhQUFhOytHQUFiLGFBQWE7NEZBQWIsYUFBYTtrQkFEekIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuXG5pbXBvcnQgeyBUYWJiZWRDb21wb25lbnQgfSBmcm9tICcuL3RhYmJlZC5jb21wb25lbnQnXG5cbmV4cG9ydCBkZWNsYXJlIHR5cGUgVGFic0RpcmVjdGlvbiA9ICdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCdcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRhYmJlZFNlcnZpY2Uge1xuXG4gIHByaXZhdGUgX3RhYkdyb3VwczogeyBbZ3JvdXBOYW1lOiBzdHJpbmddOiBUYWJiZWRDb21wb25lbnRbXSB9ID0ge31cblxuICBwdWJsaWMgcmVnaXN0ZXJUYWIodGFiOiBUYWJiZWRDb21wb25lbnQsIGdyb3VwTmFtZTogc3RyaW5nKSB7XG4gICAgaWYgKCF0aGlzLl90YWJHcm91cHNbZ3JvdXBOYW1lXSkge1xuICAgICAgdGhpcy5fdGFiR3JvdXBzW2dyb3VwTmFtZV0gPSBbXVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgdCBvZiB0aGlzLl90YWJHcm91cHNbZ3JvdXBOYW1lXSkge1xuICAgICAgdC5oaWRlVGFicyA9IHRydWVcbiAgICB9XG5cbiAgICB0aGlzLl90YWJHcm91cHNbZ3JvdXBOYW1lXS5wdXNoKHRhYilcbiAgfVxuXG4gIHB1YmxpYyB1bnJlZ2lzdGVyVGFiKHRhYjogVGFiYmVkQ29tcG9uZW50LCBncm91cE5hbWU6IHN0cmluZykge1xuICAgIGlmICh0aGlzLl90YWJHcm91cHNbZ3JvdXBOYW1lXSkge1xuICAgICAgdGhpcy5fdGFiR3JvdXBzW2dyb3VwTmFtZV0gPSB0aGlzLl90YWJHcm91cHNbZ3JvdXBOYW1lXS5maWx0ZXIoXG4gICAgICAgIHQgPT4gdCAhPT0gdGFiXG4gICAgICApXG5cbiAgICAgIGlmICh0aGlzLl90YWJHcm91cHNbZ3JvdXBOYW1lXS5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuX3RhYkdyb3Vwc1tncm91cE5hbWVdW3RoaXMuX3RhYkdyb3Vwc1tncm91cE5hbWVdLmxlbmd0aCAtIDFdLmhpZGVUYWJzID0gZmFsc2VcbiAgICAgIH1cbiAgICB9XG4gIH1cblxufVxuIl19
@@ -1,3 +1,6 @@
1
1
  export * from './table/table.component';
2
+ export * from './table-column.component';
3
+ export * from './table-cell-tpl.directive';
4
+ export * from './table-column-header-tpl.directive';
2
5
  export * from './table.module';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi90YWJsZS9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMseUJBQXlCLENBQUE7QUFFdkMsY0FBYyxnQkFBZ0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdGFibGUvdGFibGUuY29tcG9uZW50J1xuXG5leHBvcnQgKiBmcm9tICcuL3RhYmxlLm1vZHVsZSdcbiJdfQ==
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi90YWJsZS9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMseUJBQXlCLENBQUE7QUFDdkMsY0FBYywwQkFBMEIsQ0FBQTtBQUN4QyxjQUFjLDRCQUE0QixDQUFBO0FBQzFDLGNBQWMscUNBQXFDLENBQUE7QUFFbkQsY0FBYyxnQkFBZ0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdGFibGUvdGFibGUuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi90YWJsZS1jb2x1bW4uY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi90YWJsZS1jZWxsLXRwbC5kaXJlY3RpdmUnXG5leHBvcnQgKiBmcm9tICcuL3RhYmxlLWNvbHVtbi1oZWFkZXItdHBsLmRpcmVjdGl2ZSdcblxuZXhwb3J0ICogZnJvbSAnLi90YWJsZS5tb2R1bGUnXG4iXX0=
@@ -1,17 +1,54 @@
1
1
  import { __decorate } from "tslib";
2
2
  import { coerceArray } from '@angular/cdk/coercion';
3
- import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
3
+ import { ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, Input, Output } from '@angular/core';
4
+ import { merge, Subject, Subscription } from 'rxjs';
4
5
  import { InputBoolean } from '@theseam/ui-common/core';
6
+ import { TheSeamTableColumnComponent } from '../table-column.component';
5
7
  import * as i0 from "@angular/core";
6
8
  import * as i1 from "@angular/platform-browser";
7
9
  import * as i2 from "@angular/common";
8
10
  import * as i3 from "@angular/cdk/table";
9
11
  import * as i4 from "@theseam/ui-common/table-cell-type";
12
+ function mergeColumnsAndTplColumns(columns, tplColumns) {
13
+ const newCols = [];
14
+ for (const col of columns) {
15
+ const newCol = {
16
+ ...((typeof col === 'string') ? {
17
+ prop: col,
18
+ name: col,
19
+ } : col),
20
+ };
21
+ const tplCol = tplColumns.find(c => c.prop === newCol.prop);
22
+ // newCol.cellTypeConfig = tplCol?.cellTypeConfig
23
+ if (tplCol) {
24
+ if (tplCol.name !== undefined && tplCol.name !== null) {
25
+ newCol.name = tplCol.name ?? undefined;
26
+ }
27
+ if (tplCol.cellTemplate !== undefined && tplCol.cellTemplate !== null) {
28
+ newCol.cellTemplate = tplCol.cellTemplate ?? undefined;
29
+ }
30
+ if (tplCol.headerTemplate !== undefined && tplCol.headerTemplate !== null) {
31
+ newCol.headerTemplate = tplCol.headerTemplate ?? undefined;
32
+ }
33
+ if (tplCol.cellClass !== undefined && tplCol.cellClass !== null) {
34
+ newCol.cellClass = tplCol.cellClass ?? undefined;
35
+ }
36
+ if (tplCol.headerClass !== undefined && tplCol.headerClass !== null) {
37
+ newCol.headerClass = tplCol.headerClass ?? undefined;
38
+ }
39
+ }
40
+ newCols.push(newCol);
41
+ }
42
+ return newCols;
43
+ }
10
44
  export class TableComponent {
11
45
  get columns() { return this._columns; }
12
46
  set columns(value) {
13
47
  this._columns = value;
14
- this._setColumns(value || []);
48
+ // this._setColumns(value || [])
49
+ const cols = mergeColumnsAndTplColumns(value || [], this._columnComponents?.toArray() ?? []);
50
+ // this._setColumns(cols)
51
+ this._pendingColumns = cols;
15
52
  }
16
53
  get rows() { return this._rows; }
17
54
  set rows(value) {
@@ -26,14 +63,56 @@ export class TableComponent {
26
63
  }
27
64
  }
28
65
  get displayedRows() { return this._displayedRows; }
66
+ set columnComponents(value) {
67
+ // this._columnsManager.setTemplateColumns(translateTemplateColumns(value?.toArray() ?? []))
68
+ this._columnComponents = value;
69
+ if (value?.toArray().length === 0)
70
+ return;
71
+ const cols = mergeColumnsAndTplColumns(this._columns || [], value?.toArray() ?? []);
72
+ // this._setColumns(cols)
73
+ this._pendingColumns = cols;
74
+ if (this._columnComponentChange)
75
+ this._columnComponentChange.unsubscribe();
76
+ const obsArr = value?.toArray().map(c => c.columnChange$);
77
+ if (obsArr && obsArr.length > 0) {
78
+ this._columnComponentChange = merge(obsArr).subscribe(() => {
79
+ const _cols = mergeColumnsAndTplColumns(this._columns || [], value?.toArray() ?? []);
80
+ // this._setColumns(_cols)
81
+ this._pendingColumns = _cols;
82
+ });
83
+ }
84
+ }
29
85
  constructor(_sanitizer) {
30
86
  this._sanitizer = _sanitizer;
87
+ this._ngUnsubscribe = new Subject();
31
88
  this._rows = [];
32
89
  this._displayedRows = [];
33
90
  this.hasHeader = true;
91
+ this.columnsChange = new EventEmitter();
34
92
  this.actionRefreshRequest = new EventEmitter();
93
+ this._columnComponentChange = Subscription.EMPTY;
94
+ }
95
+ ngOnInit() {
96
+ this._updateColumns();
97
+ }
98
+ ngAfterContentChecked() {
99
+ this._updateColumns();
100
+ }
101
+ ngOnChanges(changes) {
102
+ if (changes.columns) {
103
+ this._updateColumns();
104
+ }
105
+ }
106
+ _updateColumns() {
107
+ const pending = this._pendingColumns;
108
+ this._pendingColumns = undefined;
109
+ if (pending) {
110
+ this._setColumns(pending);
111
+ }
35
112
  }
113
+ // TODO: Improve column handling, like datatable, to avoid excessive updates.
36
114
  _setColumns(cols) {
115
+ const prev = this.displayedRecords;
37
116
  const newCols = [];
38
117
  for (const col of cols) {
39
118
  if (typeof col === 'string') {
@@ -64,6 +143,7 @@ export class TableComponent {
64
143
  }
65
144
  this.displayedRecords = newCols;
66
145
  this.displayedColumns = newCols.map(c => c.prop);
146
+ this.columnsChange.emit({ previous: prev, current: newCols });
67
147
  }
68
148
  triggerActionRefreshRequest() {
69
149
  this.actionRefreshRequest.emit(undefined);
@@ -72,14 +152,14 @@ export class TableComponent {
72
152
  return r.prop + r.name;
73
153
  }
74
154
  }
75
- TableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TableComponent, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
76
- TableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TableComponent, selector: "seam-table", inputs: { columns: "columns", rows: "rows", trackBy: "trackBy", size: "size", hasHeader: "hasHeader" }, outputs: { actionRefreshRequest: "actionRefreshRequest" }, ngImport: i0, template: "<table cdk-table [dataSource]=\"displayedRows\" class=\"table table-header-divider-indented mb-0\"\n [class.table-striped]=\"rows && rows.length > 0\"\n [class.table-sm]=\"size === 'sm'\"\n [class.table-no-header]=\"!hasHeader\">\n <ng-container *ngFor=\"let r of displayedRecords; first as isFirst; trackBy:_trackByRecords\">\n <ng-container [cdkColumnDef]=\"r.prop\">\n <th cdk-header-cell *cdkHeaderCellDef>\n <ng-container *ngIf=\"hasHeader\">\n {{ r.name }}\n </ng-container>\n </th>\n <td cdk-cell *cdkCellDef=\"let element; index as rowIndex\"\n [attr.colspan]=\"element?._emptyDisplay && isFirst ? 2 : undefined\"\n [class.border-top-0]=\"element?._emptyDisplay && isFirst\"\n [class.d-none]=\"element?._emptyDisplay && !isFirst\"\n [style]=\"$any(r)?.cellTypeConfig?.styles\">\n\n <span [style]=\"$any(r)?.cellTypeConfig?.styles\"></span>\n\n <ng-container *ngIf=\"element?._emptyDisplay && isFirst; else hasDataTpl\">\n No records found\n </ng-container>\n\n <ng-template #hasDataTpl>\n <seam-table-cell-type-selector *ngIf=\"$any(r)?.cellType; else noCellType\"\n [type]=\"$any(r)?.cellType\"\n [value]=\"element[r.prop]\"\n [rowIndex]=\"rowIndex\"\n [row]=\"element\"\n [colData]=\"r\">\n </seam-table-cell-type-selector>\n <ng-template #noCellType>\n <div class=\"td-text-truncate\" [title]=\"element[r.prop]\">\n {{ element[r.prop] }}\n </div>\n </ng-template>\n </ng-template>\n\n </td>\n </ng-container>\n </ng-container>\n\n <tr cdk-header-row *cdkHeaderRowDef=\"displayedColumns\"></tr>\n <tr cdk-row *cdkRowDef=\"let row; columns: displayedColumns;\"></tr>\n</table>\n", styles: [":host{display:block}:host .table-no-header ::ng-deep thead{display:none}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.CdkTable, selector: "cdk-table, table[cdk-table]", inputs: ["trackBy", "dataSource", "multiTemplateDataRows", "fixedLayout"], outputs: ["contentChanged"], exportAs: ["cdkTable"] }, { kind: "directive", type: i3.CdkRowDef, selector: "[cdkRowDef]", inputs: ["cdkRowDefColumns", "cdkRowDefWhen"] }, { kind: "directive", type: i3.CdkCellDef, selector: "[cdkCellDef]" }, { kind: "directive", type: i3.CdkHeaderCellDef, selector: "[cdkHeaderCellDef]" }, { kind: "directive", type: i3.CdkColumnDef, selector: "[cdkColumnDef]", inputs: ["sticky", "cdkColumnDef", "stickyEnd"] }, { kind: "directive", type: i3.CdkCell, selector: "cdk-cell, td[cdk-cell]" }, { kind: "component", type: i3.CdkRow, selector: "cdk-row, tr[cdk-row]" }, { kind: "directive", type: i3.CdkHeaderCell, selector: "cdk-header-cell, th[cdk-header-cell]" }, { kind: "component", type: i3.CdkHeaderRow, selector: "cdk-header-row, tr[cdk-header-row]" }, { kind: "directive", type: i3.CdkHeaderRowDef, selector: "[cdkHeaderRowDef]", inputs: ["cdkHeaderRowDef", "cdkHeaderRowDefSticky"] }, { kind: "component", type: i4.TableCellTypeSelectorComponent, selector: "seam-table-cell-type-selector", inputs: ["type", "value", "rowIndex", "row", "colData"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
155
+ TableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TableComponent, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
156
+ TableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TableComponent, selector: "seam-table", inputs: { columns: "columns", rows: "rows", trackBy: "trackBy", size: "size", hasHeader: "hasHeader" }, outputs: { columnsChange: "columnsChange", actionRefreshRequest: "actionRefreshRequest" }, queries: [{ propertyName: "columnComponents", predicate: TheSeamTableColumnComponent }], usesOnChanges: true, ngImport: i0, template: "<table cdk-table [dataSource]=\"displayedRows\" class=\"table table-header-divider-indented mb-0\"\n [class.table-striped]=\"rows && rows.length > 0\"\n [class.table-sm]=\"size === 'sm'\"\n [class.table-no-header]=\"!hasHeader\">\n <ng-container *ngFor=\"let r of displayedRecords; first as isFirst; trackBy:_trackByRecords\">\n <ng-container [cdkColumnDef]=\"r.prop\">\n <th cdk-header-cell *cdkHeaderCellDef [class]=\"r.headerClass\">\n <ng-container *ngIf=\"hasHeader\">\n <ng-container *ngIf=\"$any(r)?.headerTemplate; else noHeaderTpl\">\n <ng-template\n [ngTemplateOutlet]=\"$any(r)?.headerTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: r.name, prop: r.prop, column: r }\">\n </ng-template>\n </ng-container>\n <ng-template #noHeaderTpl>\n {{ r.name }}\n </ng-template>\n </ng-container>\n </th>\n <td cdk-cell *cdkCellDef=\"let element; index as rowIndex\"\n [attr.colspan]=\"element?._emptyDisplay && isFirst ? 2 : undefined\"\n [class]=\"element?._emptyDisplay ? undefined : r.cellClass\"\n [class.border-top-0]=\"element?._emptyDisplay && isFirst\"\n [class.d-none]=\"element?._emptyDisplay && !isFirst\"\n [style]=\"$any(r)?.cellTypeConfig?.styles\">\n\n <span [style]=\"$any(r)?.cellTypeConfig?.styles\"></span>\n\n <ng-container *ngIf=\"element?._emptyDisplay && isFirst; else hasDataTpl\">\n No records found\n </ng-container>\n\n <ng-template #hasDataTpl>\n <seam-table-cell-type-selector *ngIf=\"$any(r)?.cellType; else noCellType\"\n [type]=\"$any(r)?.cellType\"\n [value]=\"element[r.prop]\"\n [rowIndex]=\"rowIndex\"\n [row]=\"element\"\n [colData]=\"r\">\n </seam-table-cell-type-selector>\n <ng-template #noCellType>\n <ng-container *ngIf=\"$any(r)?.cellTemplate; else noCellTpl\">\n <ng-template\n [ngTemplateOutlet]=\"$any(r)?.cellTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: element[r.prop], row: element, rowIndex: rowIndex, column: r }\">\n </ng-template>\n </ng-container>\n </ng-template>\n <ng-template #noCellTpl>\n <div class=\"td-text-truncate\" [title]=\"element[r.prop]\">\n {{ element[r.prop] }}\n </div>\n </ng-template>\n </ng-template>\n\n </td>\n </ng-container>\n </ng-container>\n\n <tr cdk-header-row *cdkHeaderRowDef=\"displayedColumns\"></tr>\n <tr cdk-row *cdkRowDef=\"let row; columns: displayedColumns;\"></tr>\n</table>\n", styles: [":host{display:block}:host .table-no-header ::ng-deep thead{display:none}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.CdkTable, selector: "cdk-table, table[cdk-table]", inputs: ["trackBy", "dataSource", "multiTemplateDataRows", "fixedLayout"], outputs: ["contentChanged"], exportAs: ["cdkTable"] }, { kind: "directive", type: i3.CdkRowDef, selector: "[cdkRowDef]", inputs: ["cdkRowDefColumns", "cdkRowDefWhen"] }, { kind: "directive", type: i3.CdkCellDef, selector: "[cdkCellDef]" }, { kind: "directive", type: i3.CdkHeaderCellDef, selector: "[cdkHeaderCellDef]" }, { kind: "directive", type: i3.CdkColumnDef, selector: "[cdkColumnDef]", inputs: ["sticky", "cdkColumnDef", "stickyEnd"] }, { kind: "directive", type: i3.CdkCell, selector: "cdk-cell, td[cdk-cell]" }, { kind: "component", type: i3.CdkRow, selector: "cdk-row, tr[cdk-row]" }, { kind: "directive", type: i3.CdkHeaderCell, selector: "cdk-header-cell, th[cdk-header-cell]" }, { kind: "component", type: i3.CdkHeaderRow, selector: "cdk-header-row, tr[cdk-header-row]" }, { kind: "directive", type: i3.CdkHeaderRowDef, selector: "[cdkHeaderRowDef]", inputs: ["cdkHeaderRowDef", "cdkHeaderRowDefSticky"] }, { kind: "component", type: i4.TableCellTypeSelectorComponent, selector: "seam-table-cell-type-selector", inputs: ["type", "value", "rowIndex", "row", "colData"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
77
157
  __decorate([
78
158
  InputBoolean()
79
159
  ], TableComponent.prototype, "hasHeader", void 0);
80
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TableComponent, decorators: [{
160
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TableComponent, decorators: [{
81
161
  type: Component,
82
- args: [{ selector: 'seam-table', changeDetection: ChangeDetectionStrategy.OnPush, template: "<table cdk-table [dataSource]=\"displayedRows\" class=\"table table-header-divider-indented mb-0\"\n [class.table-striped]=\"rows && rows.length > 0\"\n [class.table-sm]=\"size === 'sm'\"\n [class.table-no-header]=\"!hasHeader\">\n <ng-container *ngFor=\"let r of displayedRecords; first as isFirst; trackBy:_trackByRecords\">\n <ng-container [cdkColumnDef]=\"r.prop\">\n <th cdk-header-cell *cdkHeaderCellDef>\n <ng-container *ngIf=\"hasHeader\">\n {{ r.name }}\n </ng-container>\n </th>\n <td cdk-cell *cdkCellDef=\"let element; index as rowIndex\"\n [attr.colspan]=\"element?._emptyDisplay && isFirst ? 2 : undefined\"\n [class.border-top-0]=\"element?._emptyDisplay && isFirst\"\n [class.d-none]=\"element?._emptyDisplay && !isFirst\"\n [style]=\"$any(r)?.cellTypeConfig?.styles\">\n\n <span [style]=\"$any(r)?.cellTypeConfig?.styles\"></span>\n\n <ng-container *ngIf=\"element?._emptyDisplay && isFirst; else hasDataTpl\">\n No records found\n </ng-container>\n\n <ng-template #hasDataTpl>\n <seam-table-cell-type-selector *ngIf=\"$any(r)?.cellType; else noCellType\"\n [type]=\"$any(r)?.cellType\"\n [value]=\"element[r.prop]\"\n [rowIndex]=\"rowIndex\"\n [row]=\"element\"\n [colData]=\"r\">\n </seam-table-cell-type-selector>\n <ng-template #noCellType>\n <div class=\"td-text-truncate\" [title]=\"element[r.prop]\">\n {{ element[r.prop] }}\n </div>\n </ng-template>\n </ng-template>\n\n </td>\n </ng-container>\n </ng-container>\n\n <tr cdk-header-row *cdkHeaderRowDef=\"displayedColumns\"></tr>\n <tr cdk-row *cdkRowDef=\"let row; columns: displayedColumns;\"></tr>\n</table>\n", styles: [":host{display:block}:host .table-no-header ::ng-deep thead{display:none}\n"] }]
162
+ args: [{ selector: 'seam-table', changeDetection: ChangeDetectionStrategy.OnPush, template: "<table cdk-table [dataSource]=\"displayedRows\" class=\"table table-header-divider-indented mb-0\"\n [class.table-striped]=\"rows && rows.length > 0\"\n [class.table-sm]=\"size === 'sm'\"\n [class.table-no-header]=\"!hasHeader\">\n <ng-container *ngFor=\"let r of displayedRecords; first as isFirst; trackBy:_trackByRecords\">\n <ng-container [cdkColumnDef]=\"r.prop\">\n <th cdk-header-cell *cdkHeaderCellDef [class]=\"r.headerClass\">\n <ng-container *ngIf=\"hasHeader\">\n <ng-container *ngIf=\"$any(r)?.headerTemplate; else noHeaderTpl\">\n <ng-template\n [ngTemplateOutlet]=\"$any(r)?.headerTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: r.name, prop: r.prop, column: r }\">\n </ng-template>\n </ng-container>\n <ng-template #noHeaderTpl>\n {{ r.name }}\n </ng-template>\n </ng-container>\n </th>\n <td cdk-cell *cdkCellDef=\"let element; index as rowIndex\"\n [attr.colspan]=\"element?._emptyDisplay && isFirst ? 2 : undefined\"\n [class]=\"element?._emptyDisplay ? undefined : r.cellClass\"\n [class.border-top-0]=\"element?._emptyDisplay && isFirst\"\n [class.d-none]=\"element?._emptyDisplay && !isFirst\"\n [style]=\"$any(r)?.cellTypeConfig?.styles\">\n\n <span [style]=\"$any(r)?.cellTypeConfig?.styles\"></span>\n\n <ng-container *ngIf=\"element?._emptyDisplay && isFirst; else hasDataTpl\">\n No records found\n </ng-container>\n\n <ng-template #hasDataTpl>\n <seam-table-cell-type-selector *ngIf=\"$any(r)?.cellType; else noCellType\"\n [type]=\"$any(r)?.cellType\"\n [value]=\"element[r.prop]\"\n [rowIndex]=\"rowIndex\"\n [row]=\"element\"\n [colData]=\"r\">\n </seam-table-cell-type-selector>\n <ng-template #noCellType>\n <ng-container *ngIf=\"$any(r)?.cellTemplate; else noCellTpl\">\n <ng-template\n [ngTemplateOutlet]=\"$any(r)?.cellTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: element[r.prop], row: element, rowIndex: rowIndex, column: r }\">\n </ng-template>\n </ng-container>\n </ng-template>\n <ng-template #noCellTpl>\n <div class=\"td-text-truncate\" [title]=\"element[r.prop]\">\n {{ element[r.prop] }}\n </div>\n </ng-template>\n </ng-template>\n\n </td>\n </ng-container>\n </ng-container>\n\n <tr cdk-header-row *cdkHeaderRowDef=\"displayedColumns\"></tr>\n <tr cdk-row *cdkRowDef=\"let row; columns: displayedColumns;\"></tr>\n</table>\n", styles: [":host{display:block}:host .table-no-header ::ng-deep thead{display:none}\n"] }]
83
163
  }], ctorParameters: function () { return [{ type: i1.DomSanitizer }]; }, propDecorators: { columns: [{
84
164
  type: Input
85
165
  }], rows: [{
@@ -90,7 +170,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
90
170
  type: Input
91
171
  }], hasHeader: [{
92
172
  type: Input
173
+ }], columnsChange: [{
174
+ type: Output
93
175
  }], actionRefreshRequest: [{
94
176
  type: Output
177
+ }], columnComponents: [{
178
+ type: ContentChildren,
179
+ args: [TheSeamTableColumnComponent]
95
180
  }] } });
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL3RhYmxlL3RhYmxlL3RhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi90YWJsZS90YWJsZS90YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFnQixXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUNqRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRy9GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTs7Ozs7O0FBeUJ0RCxNQUFNLE9BQU8sY0FBYztJQUd6QixJQUNJLE9BQU8sS0FBSyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUEsQ0FBQyxDQUFDO0lBQ3RDLElBQUksT0FBTyxDQUFDLEtBQW1EO1FBQzdELElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFBO1FBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBQy9CLENBQUM7SUFHRCxJQUNJLElBQUksS0FBNkIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFBLENBQUMsQ0FBQztJQUN4RCxJQUFJLElBQUksQ0FBQyxLQUE2QjtRQUNwQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7UUFFNUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDekIsSUFBSSxDQUFDLGNBQWMsR0FBRztnQkFDcEIsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFTO2FBQy9CLENBQUE7U0FDRjthQUFNO1lBQ0wsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFBO1NBQ2pDO0lBQ0gsQ0FBQztJQUdELElBQUksYUFBYSxLQUFLLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQSxDQUFDLENBQUM7SUFjbEQsWUFDbUIsVUFBd0I7UUFBeEIsZUFBVSxHQUFWLFVBQVUsQ0FBYztRQWpCbkMsVUFBSyxHQUEyQixFQUFFLENBQUE7UUFHbEMsbUJBQWMsR0FBZ0MsRUFBRSxDQUFBO1FBTS9CLGNBQVMsR0FBRyxJQUFJLENBQUE7UUFLdEIseUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQTtJQUk5RCxDQUFDO0lBRUcsV0FBVyxDQUFDLElBQStCO1FBQ2pELE1BQU0sT0FBTyxHQUFtQixFQUFFLENBQUE7UUFFbEMsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDdEIsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUU7Z0JBQzNCLE1BQU0sTUFBTSxHQUFpQjtvQkFDM0IsSUFBSSxFQUFFLEdBQUc7b0JBQ1QsSUFBSSxFQUFFLEdBQUc7aUJBQ1YsQ0FBQTtnQkFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO2FBQ3JCO2lCQUFNO2dCQUNMLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUE7Z0JBQ25CLElBQUksSUFBSSxLQUFLLFNBQVMsSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFO29CQUN2QyxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQTtpQkFDaEI7Z0JBQ0QsTUFBTSxNQUFNLEdBQWlCO29CQUMzQixHQUFHLEdBQUc7b0JBQ04sSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJO29CQUNkLElBQUk7aUJBQ0wsQ0FBQTtnQkFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO2FBQ3JCO1NBQ0Y7UUFFRCxLQUFLLE1BQU0sR0FBRyxJQUFJLE9BQU8sRUFBRTtZQUN6QixNQUFNLElBQUksR0FBRyxHQUFVLENBQUE7WUFDdkIsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRTtnQkFDN0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFBO2FBQ2xHO1NBQ0Y7UUFFRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFBO1FBQy9CLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ2xELENBQUM7SUFFTSwyQkFBMkI7UUFDaEMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUMzQyxDQUFDO0lBRUQsZUFBZSxDQUFDLENBQU07UUFDcEIsT0FBTyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUE7SUFDeEIsQ0FBQzs7MkdBckZVLGNBQWM7K0ZBQWQsY0FBYyxxTkM3QjNCLG16REE2Q0E7QURpQjJCO0lBQWYsWUFBWSxFQUFFO2lEQUFpQjsyRkFqQzlCLGNBQWM7a0JBTjFCLFNBQVM7K0JBQ0UsWUFBWSxtQkFHTCx1QkFBdUIsQ0FBQyxNQUFNO21HQU0zQyxPQUFPO3NCQURWLEtBQUs7Z0JBU0YsSUFBSTtzQkFEUCxLQUFLO2dCQWtCRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsSUFBSTtzQkFBWixLQUFLO2dCQUVtQixTQUFTO3NCQUFqQyxLQUFLO2dCQUthLG9CQUFvQjtzQkFBdEMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlcidcblxuaW1wb3J0IHsgSW5wdXRCb29sZWFuIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL2NvcmUnXG5cbi8qKlxuICogQW4gb3B0aW9uYWwgZnVuY3Rpb24gcGFzc2VkIGludG8gdGhlIGBOZ0Zvck9mYCBkaXJlY3RpdmUgdGhhdCBkZWZpbmVzIGhvdyB0byB0cmFja1xuICogY2hhbmdlcyBmb3IgaXRlbXMgaW4gYW4gaXRlcmFibGUuXG4gKiBUaGUgZnVuY3Rpb24gdGFrZXMgdGhlIGl0ZXJhdGlvbiBpbmRleCBhbmQgaXRlbSBJRC5cbiAqIFdoZW4gc3VwcGxpZWQsIEFuZ3VsYXIgdHJhY2tzIGNoYW5nZXMgYnkgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgZnVuY3Rpb24uXG4gKlxuICogTk9URTogQ2FuJ3QgaW1wb3J0IHRoZSB0eXBlIGZyb20nQGFuZ3VsYXIvY29yZScsIGJlY2F1c2Ugb2YgYSBidWcgaW4gYW5ndWxhci1jbGknc1xuICogYnVpbGQgdGhhdCBjYW4ndCBmaW5kIGV4cG9ydGVkIHR5cGVzIHRoYXQgb25seSBleGlzdCBhdCBjb21waWxlIHRpbWUgaWYgdGhlcmVcbiAqIGFyZSBleHBvcnRzIHRoYXQgZXhpc3QgYXQgcnVudGltZSBpbiB0aGUgc2FtZSBmaWxlLlxuICovXG5leHBvcnQgdHlwZSBUcmFja0J5RnVuY3Rpb248VD4gPSAoaW5kZXg6IG51bWJlciwgaXRlbTogVCkgPT4gYW55XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRhYmxlQ29sdW1uIHtcbiAgcHJvcDogc3RyaW5nXG4gIG5hbWU/OiBzdHJpbmdcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2VhbS10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQ29tcG9uZW50PFQgPSBhbnk+IHtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2hhc0hlYWRlcjogQm9vbGVhbklucHV0XG5cbiAgQElucHV0KClcbiAgZ2V0IGNvbHVtbnMoKSB7IHJldHVybiB0aGlzLl9jb2x1bW5zIH1cbiAgc2V0IGNvbHVtbnModmFsdWU6IChzdHJpbmcgfCBJVGFibGVDb2x1bW4pW10gfCB1bmRlZmluZWQgfCBudWxsKSB7XG4gICAgdGhpcy5fY29sdW1ucyA9IHZhbHVlXG4gICAgdGhpcy5fc2V0Q29sdW1ucyh2YWx1ZSB8fCBbXSlcbiAgfVxuICBwcml2YXRlIF9jb2x1bW5zOiAoc3RyaW5nIHwgSVRhYmxlQ29sdW1uKVtdIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBJbnB1dCgpXG4gIGdldCByb3dzKCk6IFRbXSB8IHVuZGVmaW5lZCB8IG51bGwgeyByZXR1cm4gdGhpcy5fcm93cyB9XG4gIHNldCByb3dzKHZhbHVlOiBUW10gfCB1bmRlZmluZWQgfCBudWxsKSB7XG4gICAgdGhpcy5fcm93cyA9IHZhbHVlID8gY29lcmNlQXJyYXkodmFsdWUpIDogW11cblxuICAgIGlmICh0aGlzLl9yb3dzLmxlbmd0aCA8IDEpIHtcbiAgICAgIHRoaXMuX2Rpc3BsYXllZFJvd3MgPSBbXG4gICAgICAgIHsgX2VtcHR5RGlzcGxheTogdHJ1ZSB9IGFzIGFueVxuICAgICAgXVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9kaXNwbGF5ZWRSb3dzID0gdGhpcy5fcm93c1xuICAgIH1cbiAgfVxuICBwcml2YXRlIF9yb3dzOiBUW10gfCB1bmRlZmluZWQgfCBudWxsID0gW11cblxuICBnZXQgZGlzcGxheWVkUm93cygpIHsgcmV0dXJuIHRoaXMuX2Rpc3BsYXllZFJvd3MgfVxuICBwcml2YXRlIF9kaXNwbGF5ZWRSb3dzOiBUW10gJiB7IF9jb2xTcGFuPzogbnVtYmVyIH0gPSBbXVxuXG4gIEBJbnB1dCgpIHRyYWNrQnk6IFRyYWNrQnlGdW5jdGlvbjxUPiB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBASW5wdXQoKSBzaXplOiAnc20nIHwgJ21kJyB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgaGFzSGVhZGVyID0gdHJ1ZVxuXG4gIHB1YmxpYyBkaXNwbGF5ZWRSZWNvcmRzPzogSVRhYmxlQ29sdW1uW11cbiAgcHVibGljIGRpc3BsYXllZENvbHVtbnM/OiBzdHJpbmdbXVxuXG4gIEBPdXRwdXQoKSByZWFkb25seSBhY3Rpb25SZWZyZXNoUmVxdWVzdCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3Nhbml0aXplcjogRG9tU2FuaXRpemVyXG4gICkgeyB9XG5cbiAgcHJpdmF0ZSBfc2V0Q29sdW1ucyhjb2xzOiAoc3RyaW5nIHwgSVRhYmxlQ29sdW1uKVtdKSB7XG4gICAgY29uc3QgbmV3Q29sczogSVRhYmxlQ29sdW1uW10gPSBbXVxuXG4gICAgZm9yIChjb25zdCBjb2wgb2YgY29scykge1xuICAgICAgaWYgKHR5cGVvZiBjb2wgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbnN0IG5ld0NvbDogSVRhYmxlQ29sdW1uID0ge1xuICAgICAgICAgIHByb3A6IGNvbCxcbiAgICAgICAgICBuYW1lOiBjb2xcbiAgICAgICAgfVxuICAgICAgICBuZXdDb2xzLnB1c2gobmV3Q29sKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IG5hbWUgPSBjb2wubmFtZVxuICAgICAgICBpZiAobmFtZSA9PT0gdW5kZWZpbmVkIHx8IG5hbWUgPT09IG51bGwpIHtcbiAgICAgICAgICBuYW1lID0gY29sLnByb3BcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuZXdDb2w6IElUYWJsZUNvbHVtbiA9IHtcbiAgICAgICAgICAuLi5jb2wsXG4gICAgICAgICAgcHJvcDogY29sLnByb3AsXG4gICAgICAgICAgbmFtZVxuICAgICAgICB9XG4gICAgICAgIG5ld0NvbHMucHVzaChuZXdDb2wpXG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBjb2wgb2YgbmV3Q29scykge1xuICAgICAgY29uc3QgX2NvbCA9IGNvbCBhcyBhbnlcbiAgICAgIGlmIChfY29sICYmIF9jb2wuY2VsbFR5cGVDb25maWcgJiYgX2NvbC5jZWxsVHlwZUNvbmZpZy5zdHlsZXMpIHtcbiAgICAgICAgX2NvbC5jZWxsVHlwZUNvbmZpZy5zdHlsZXMgPSB0aGlzLl9zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFN0eWxlKF9jb2wuY2VsbFR5cGVDb25maWcuc3R5bGVzKVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZGlzcGxheWVkUmVjb3JkcyA9IG5ld0NvbHNcbiAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMgPSBuZXdDb2xzLm1hcChjID0+IGMucHJvcClcbiAgfVxuXG4gIHB1YmxpYyB0cmlnZ2VyQWN0aW9uUmVmcmVzaFJlcXVlc3QoKSB7XG4gICAgdGhpcy5hY3Rpb25SZWZyZXNoUmVxdWVzdC5lbWl0KHVuZGVmaW5lZClcbiAgfVxuXG4gIF90cmFja0J5UmVjb3JkcyhyOiBhbnkpIHtcbiAgICByZXR1cm4gci5wcm9wICsgci5uYW1lXG4gIH1cblxufVxuIiwiPHRhYmxlIGNkay10YWJsZSBbZGF0YVNvdXJjZV09XCJkaXNwbGF5ZWRSb3dzXCIgY2xhc3M9XCJ0YWJsZSB0YWJsZS1oZWFkZXItZGl2aWRlci1pbmRlbnRlZCBtYi0wXCJcbiAgW2NsYXNzLnRhYmxlLXN0cmlwZWRdPVwicm93cyAmJiByb3dzLmxlbmd0aCA+IDBcIlxuICBbY2xhc3MudGFibGUtc21dPVwic2l6ZSA9PT0gJ3NtJ1wiXG4gIFtjbGFzcy50YWJsZS1uby1oZWFkZXJdPVwiIWhhc0hlYWRlclwiPlxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCByIG9mIGRpc3BsYXllZFJlY29yZHM7IGZpcnN0IGFzIGlzRmlyc3Q7IHRyYWNrQnk6X3RyYWNrQnlSZWNvcmRzXCI+XG4gICAgPG5nLWNvbnRhaW5lciBbY2RrQ29sdW1uRGVmXT1cInIucHJvcFwiPlxuICAgICAgPHRoIGNkay1oZWFkZXItY2VsbCAqY2RrSGVhZGVyQ2VsbERlZj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc0hlYWRlclwiPlxuICAgICAgICAgIHt7IHIubmFtZSB9fVxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvdGg+XG4gICAgICA8dGQgY2RrLWNlbGwgKmNka0NlbGxEZWY9XCJsZXQgZWxlbWVudDsgaW5kZXggYXMgcm93SW5kZXhcIlxuICAgICAgICBbYXR0ci5jb2xzcGFuXT1cImVsZW1lbnQ/Ll9lbXB0eURpc3BsYXkgJiYgaXNGaXJzdCA/IDIgOiB1bmRlZmluZWRcIlxuICAgICAgICBbY2xhc3MuYm9yZGVyLXRvcC0wXT1cImVsZW1lbnQ/Ll9lbXB0eURpc3BsYXkgJiYgaXNGaXJzdFwiXG4gICAgICAgIFtjbGFzcy5kLW5vbmVdPVwiZWxlbWVudD8uX2VtcHR5RGlzcGxheSAmJiAhaXNGaXJzdFwiXG4gICAgICAgIFtzdHlsZV09XCIkYW55KHIpPy5jZWxsVHlwZUNvbmZpZz8uc3R5bGVzXCI+XG5cbiAgICAgICAgPHNwYW4gW3N0eWxlXT1cIiRhbnkocik/LmNlbGxUeXBlQ29uZmlnPy5zdHlsZXNcIj48L3NwYW4+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVsZW1lbnQ/Ll9lbXB0eURpc3BsYXkgJiYgaXNGaXJzdDsgZWxzZSBoYXNEYXRhVHBsXCI+XG4gICAgICAgICAgTm8gcmVjb3JkcyBmb3VuZFxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctdGVtcGxhdGUgI2hhc0RhdGFUcGw+XG4gICAgICAgICAgPHNlYW0tdGFibGUtY2VsbC10eXBlLXNlbGVjdG9yICpuZ0lmPVwiJGFueShyKT8uY2VsbFR5cGU7IGVsc2Ugbm9DZWxsVHlwZVwiXG4gICAgICAgICAgICBbdHlwZV09XCIkYW55KHIpPy5jZWxsVHlwZVwiXG4gICAgICAgICAgICBbdmFsdWVdPVwiZWxlbWVudFtyLnByb3BdXCJcbiAgICAgICAgICAgIFtyb3dJbmRleF09XCJyb3dJbmRleFwiXG4gICAgICAgICAgICBbcm93XT1cImVsZW1lbnRcIlxuICAgICAgICAgICAgW2NvbERhdGFdPVwiclwiPlxuICAgICAgICAgIDwvc2VhbS10YWJsZS1jZWxsLXR5cGUtc2VsZWN0b3I+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNub0NlbGxUeXBlPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRkLXRleHQtdHJ1bmNhdGVcIiBbdGl0bGVdPVwiZWxlbWVudFtyLnByb3BdXCI+XG4gICAgICAgICAgICAgIHt7IGVsZW1lbnRbci5wcm9wXSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPC90ZD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPHRyIGNkay1oZWFkZXItcm93ICpjZGtIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zXCI+PC90cj5cbiAgPHRyIGNkay1yb3cgKmNka1Jvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnM7XCI+PC90cj5cbjwvdGFibGU+XG4iXX0=
181
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL3RhYmxlL3RhYmxlL3RhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi90YWJsZS90YWJsZS90YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFnQixXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUNqRSxPQUFPLEVBQXVCLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUF5QyxNQUFNLGVBQWUsQ0FBQTtBQUUvTCxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFFbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBRXRELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDJCQUEyQixDQUFBOzs7Ozs7QUF1QnZFLFNBQVMseUJBQXlCLENBQUMsT0FBa0MsRUFBRSxVQUF5QztJQUM5RyxNQUFNLE9BQU8sR0FBbUIsRUFBRSxDQUFBO0lBRWxDLEtBQUssTUFBTSxHQUFHLElBQUksT0FBTyxFQUFFO1FBQ3pCLE1BQU0sTUFBTSxHQUFpQjtZQUMzQixHQUFHLENBQUMsQ0FBQyxPQUFPLEdBQUcsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzVCLElBQUksRUFBRSxHQUFHO2dCQUNULElBQUksRUFBRSxHQUFHO2FBQ1YsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1NBQ1gsQ0FBQTtRQUNELE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FB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LGdCQUFnQjtzQkFEbkIsZUFBZTt1QkFBQywyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJ1xuaW1wb3J0IHsgQWZ0ZXJDb250ZW50Q2hlY2tlZCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgQ29udGVudENoaWxkcmVuLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBRdWVyeUxpc3QsIFNpbXBsZUNoYW5nZXMsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInXG5pbXBvcnQgeyBtZXJnZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcydcblxuaW1wb3J0IHsgSW5wdXRCb29sZWFuIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL2NvcmUnXG5cbmltcG9ydCB7IFRoZVNlYW1UYWJsZUNvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4uL3RhYmxlLWNvbHVtbi5jb21wb25lbnQnXG5cbi8qKlxuICogQW4gb3B0aW9uYWwgZnVuY3Rpb24gcGFzc2VkIGludG8gdGhlIGBOZ0Zvck9mYCBkaXJlY3RpdmUgdGhhdCBkZWZpbmVzIGhvdyB0byB0cmFja1xuICogY2hhbmdlcyBmb3IgaXRlbXMgaW4gYW4gaXRlcmFibGUuXG4gKiBUaGUgZnVuY3Rpb24gdGFrZXMgdGhlIGl0ZXJhdGlvbiBpbmRleCBhbmQgaXRlbSBJRC5cbiAqIFdoZW4gc3VwcGxpZWQsIEFuZ3VsYXIgdHJhY2tzIGNoYW5nZXMgYnkgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgZnVuY3Rpb24uXG4gKlxuICogTk9URTogQ2FuJ3QgaW1wb3J0IHRoZSB0eXBlIGZyb20nQGFuZ3VsYXIvY29yZScsIGJlY2F1c2Ugb2YgYSBidWcgaW4gYW5ndWxhci1jbGknc1xuICogYnVpbGQgdGhhdCBjYW4ndCBmaW5kIGV4cG9ydGVkIHR5cGVzIHRoYXQgb25seSBleGlzdCBhdCBjb21waWxlIHRpbWUgaWYgdGhlcmVcbiAqIGFyZSBleHBvcnRzIHRoYXQgZXhpc3QgYXQgcnVudGltZSBpbiB0aGUgc2FtZSBmaWxlLlxuICovXG5leHBvcnQgdHlwZSBUcmFja0J5RnVuY3Rpb248VD4gPSAoaW5kZXg6IG51bWJlciwgaXRlbTogVCkgPT4gYW55XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRhYmxlQ29sdW1uIHtcbiAgcHJvcDogc3RyaW5nXG4gIG5hbWU/OiBzdHJpbmdcbiAgY2VsbFRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PlxuICBoZWFkZXJUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT5cbiAgY2VsbENsYXNzPzogc3RyaW5nIC8vIHwgKChkYXRhOiBhbnkpID0+IHN0cmluZyB8IGFueSlcbiAgaGVhZGVyQ2xhc3M/OiBzdHJpbmcgLy8gfCAoKGRhdGE6IGFueSkgPT4gc3RyaW5nIHwgYW55KVxufVxuXG5mdW5jdGlvbiBtZXJnZUNvbHVtbnNBbmRUcGxDb2x1bW5zKGNvbHVtbnM6IChzdHJpbmcgfCBJVGFibGVDb2x1bW4pW10sIHRwbENvbHVtbnM6IFRoZVNlYW1UYWJsZUNvbHVtbkNvbXBvbmVudFtdKTogSVRhYmxlQ29sdW1uW10ge1xuICBjb25zdCBuZXdDb2xzOiBJVGFibGVDb2x1bW5bXSA9IFtdXG5cbiAgZm9yIChjb25zdCBjb2wgb2YgY29sdW1ucykge1xuICAgIGNvbnN0IG5ld0NvbDogSVRhYmxlQ29sdW1uID0ge1xuICAgICAgLi4uKCh0eXBlb2YgY29sID09PSAnc3RyaW5nJykgPyB7XG4gICAgICAgICAgcHJvcDogY29sLFxuICAgICAgICAgIG5hbWU6IGNvbCxcbiAgICAgICAgfSA6IGNvbCksXG4gICAgfVxuICAgIGNvbnN0IHRwbENvbCA9IHRwbENvbHVtbnMuZmluZChjID0+IGMucHJvcCA9PT0gbmV3Q29sLnByb3ApXG4gICAgLy8gbmV3Q29sLmNlbGxUeXBlQ29uZmlnID0gdHBsQ29sPy5jZWxsVHlwZUNvbmZpZ1xuICAgIGlmICh0cGxDb2wpIHtcbiAgICAgIGlmICh0cGxDb2wubmFtZSAhPT0gdW5kZWZpbmVkICYmIHRwbENvbC5uYW1lICE9PSBudWxsKSB7XG4gICAgICAgIG5ld0NvbC5uYW1lID0gdHBsQ29sLm5hbWUgPz8gdW5kZWZpbmVkXG4gICAgICB9XG4gICAgICBpZiAodHBsQ29sLmNlbGxUZW1wbGF0ZSAhPT0gdW5kZWZpbmVkICYmIHRwbENvbC5jZWxsVGVtcGxhdGUgIT09IG51bGwpIHtcbiAgICAgICAgbmV3Q29sLmNlbGxUZW1wbGF0ZSA9IHRwbENvbC5jZWxsVGVtcGxhdGUgPz8gdW5kZWZpbmVkXG4gICAgICB9XG4gICAgICBpZiAodHBsQ29sLmhlYWRlclRlbXBsYXRlICE9PSB1bmRlZmluZWQgJiYgdHBsQ29sLmhlYWRlclRlbXBsYXRlICE9PSBudWxsKSB7XG4gICAgICAgIG5ld0NvbC5oZWFkZXJUZW1wbGF0ZSA9IHRwbENvbC5oZWFkZXJUZW1wbGF0ZSA/PyB1bmRlZmluZWRcbiAgICAgIH1cbiAgICAgIGlmICh0cGxDb2wuY2VsbENsYXNzICE9PSB1bmRlZmluZWQgJiYgdHBsQ29sLmNlbGxDbGFzcyAhPT0gbnVsbCkge1xuICAgICAgICBuZXdDb2wuY2VsbENsYXNzID0gdHBsQ29sLmNlbGxDbGFzcyA/PyB1bmRlZmluZWRcbiAgICAgIH1cbiAgICAgIGlmICh0cGxDb2wuaGVhZGVyQ2xhc3MgIT09IHVuZGVmaW5lZCAmJiB0cGxDb2wuaGVhZGVyQ2xhc3MgIT09IG51bGwpIHtcbiAgICAgICAgbmV3Q29sLmhlYWRlckNsYXNzID0gdHBsQ29sLmhlYWRlckNsYXNzID8/IHVuZGVmaW5lZFxuICAgICAgfVxuICAgIH1cblxuICAgIG5ld0NvbHMucHVzaChuZXdDb2wpXG4gIH1cblxuICByZXR1cm4gbmV3Q29sc1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZWFtLXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVDb21wb25lbnQ8VCA9IGFueT4gaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJDb250ZW50Q2hlY2tlZCB7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9oYXNIZWFkZXI6IEJvb2xlYW5JbnB1dFxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpXG5cbiAgQElucHV0KClcbiAgZ2V0IGNvbHVtbnMoKSB7IHJldHVybiB0aGlzLl9jb2x1bW5zIH1cbiAgc2V0IGNvbHVtbnModmFsdWU6IChzdHJpbmcgfCBJVGFibGVDb2x1bW4pW10gfCB1bmRlZmluZWQgfCBudWxsKSB7XG4gICAgdGhpcy5fY29sdW1ucyA9IHZhbHVlXG4gICAgLy8gdGhpcy5fc2V0Q29sdW1ucyh2YWx1ZSB8fCBbXSlcbiAgICBjb25zdCBjb2xzID0gbWVyZ2VDb2x1bW5zQW5kVHBsQ29sdW1ucyh2YWx1ZSB8fCBbXSwgdGhpcy5fY29sdW1uQ29tcG9uZW50cz8udG9BcnJheSgpID8/IFtdKVxuICAgIC8vIHRoaXMuX3NldENvbHVtbnMoY29scylcbiAgICB0aGlzLl9wZW5kaW5nQ29sdW1ucyA9IGNvbHNcbiAgfVxuICBwcml2YXRlIF9jb2x1bW5zOiAoc3RyaW5nIHwgSVRhYmxlQ29sdW1uKVtdIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBJbnB1dCgpXG4gIGdldCByb3dzKCk6IFRbXSB8IHVuZGVmaW5lZCB8IG51bGwgeyByZXR1cm4gdGhpcy5fcm93cyB9XG4gIHNldCByb3dzKHZhbHVlOiBUW10gfCB1bmRlZmluZWQgfCBudWxsKSB7XG4gICAgdGhpcy5fcm93cyA9IHZhbHVlID8gY29lcmNlQXJyYXkodmFsdWUpIDogW11cblxuICAgIGlmICh0aGlzLl9yb3dzLmxlbmd0aCA8IDEpIHtcbiAgICAgIHRoaXMuX2Rpc3BsYXllZFJvd3MgPSBbXG4gICAgICAgIHsgX2VtcHR5RGlzcGxheTogdHJ1ZSB9IGFzIGFueVxuICAgICAgXVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9kaXNwbGF5ZWRSb3dzID0gdGhpcy5fcm93c1xuICAgIH1cbiAgfVxuICBwcml2YXRlIF9yb3dzOiBUW10gfCB1bmRlZmluZWQgfCBudWxsID0gW11cblxuICBnZXQgZGlzcGxheWVkUm93cygpIHsgcmV0dXJuIHRoaXMuX2Rpc3BsYXllZFJvd3MgfVxuICBwcml2YXRlIF9kaXNwbGF5ZWRSb3dzOiBUW10gJiB7IF9jb2xTcGFuPzogbnVtYmVyIH0gPSBbXVxuXG4gIEBJbnB1dCgpIHRyYWNrQnk6IFRyYWNrQnlGdW5jdGlvbjxUPiB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBASW5wdXQoKSBzaXplOiAnc20nIHwgJ21kJyB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgaGFzSGVhZGVyID0gdHJ1ZVxuXG4gIHByaXZhdGUgX3BlbmRpbmdDb2x1bW5zPzogSVRhYmxlQ29sdW1uW11cblxuICBwdWJsaWMgZGlzcGxheWVkUmVjb3Jkcz86IElUYWJsZUNvbHVtbltdXG4gIHB1YmxpYyBkaXNwbGF5ZWRDb2x1bW5zPzogc3RyaW5nW11cblxuICBAT3V0cHV0KCkgcmVhZG9ubHkgY29sdW1uc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyBwcmV2aW91czogSVRhYmxlQ29sdW1uW10gfCB1bmRlZmluZWQsIGN1cnJlbnQ6IElUYWJsZUNvbHVtbltdIH0+KClcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGFjdGlvblJlZnJlc2hSZXF1ZXN0ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpXG5cbiAgQENvbnRlbnRDaGlsZHJlbihUaGVTZWFtVGFibGVDb2x1bW5Db21wb25lbnQpXG4gIHNldCBjb2x1bW5Db21wb25lbnRzKHZhbHVlOiBRdWVyeUxpc3Q8VGhlU2VhbVRhYmxlQ29sdW1uQ29tcG9uZW50PiB8IHVuZGVmaW5lZCkge1xuICAgIC8vIHRoaXMuX2NvbHVtbnNNYW5hZ2VyLnNldFRlbXBsYXRlQ29sdW1ucyh0cmFuc2xhdGVUZW1wbGF0ZUNvbHVtbnModmFsdWU/LnRvQXJyYXkoKSA/PyBbXSkpXG4gICAgdGhpcy5fY29sdW1uQ29tcG9uZW50cyA9IHZhbHVlXG4gICAgaWYgKHZhbHVlPy50b0FycmF5KCkubGVuZ3RoID09PSAwKSByZXR1cm5cbiAgICBjb25zdCBjb2xzID0gbWVyZ2VDb2x1bW5zQW5kVHBsQ29sdW1ucyh0aGlzLl9jb2x1bW5zIHx8IFtdLCB2YWx1ZT8udG9BcnJheSgpID8/IFtdKVxuICAgIC8vIHRoaXMuX3NldENvbHVtbnMoY29scylcbiAgICB0aGlzLl9wZW5kaW5nQ29sdW1ucyA9IGNvbHNcblxuICAgIGlmICh0aGlzLl9jb2x1bW5Db21wb25lbnRDaGFuZ2UpIHRoaXMuX2NvbHVtbkNvbXBvbmVudENoYW5nZS51bnN1YnNjcmliZSgpXG4gICAgY29uc3Qgb2JzQXJyID0gdmFsdWU/LnRvQXJyYXkoKS5tYXAoYyA9PiBjLmNvbHVtbkNoYW5nZSQpXG4gICAgaWYgKG9ic0FyciAmJiBvYnNBcnIubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5fY29sdW1uQ29tcG9uZW50Q2hhbmdlID0gbWVyZ2Uob2JzQXJyKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBjb25zdCBfY29scyA9IG1lcmdlQ29sdW1uc0FuZFRwbENvbHVtbnModGhpcy5fY29sdW1ucyB8fCBbXSwgdmFsdWU/LnRvQXJyYXkoKSA/PyBbXSlcbiAgICAgICAgLy8gdGhpcy5fc2V0Q29sdW1ucyhfY29scylcbiAgICAgICAgdGhpcy5fcGVuZGluZ0NvbHVtbnMgPSBfY29sc1xuICAgICAgfSlcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBfY29sdW1uQ29tcG9uZW50czogUXVlcnlMaXN0PFRoZVNlYW1UYWJsZUNvbHVtbkNvbXBvbmVudD4gfCB1bmRlZmluZWRcbiAgcHJpdmF0ZSBfY29sdW1uQ29tcG9uZW50Q2hhbmdlID0gU3Vic2NyaXB0aW9uLkVNUFRZXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBfc2FuaXRpemVyOiBEb21TYW5pdGl6ZXJcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLl91cGRhdGVDb2x1bW5zKClcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpIHtcbiAgICB0aGlzLl91cGRhdGVDb2x1bW5zKClcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5jb2x1bW5zKSB7XG4gICAgICB0aGlzLl91cGRhdGVDb2x1bW5zKClcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVDb2x1bW5zKCkge1xuICAgIGNvbnN0IHBlbmRpbmcgPSB0aGlzLl9wZW5kaW5nQ29sdW1uc1xuICAgIHRoaXMuX3BlbmRpbmdDb2x1bW5zID0gdW5kZWZpbmVkXG4gICAgaWYgKHBlbmRpbmcpIHtcbiAgICAgIHRoaXMuX3NldENvbHVtbnMocGVuZGluZylcbiAgICB9XG4gIH1cblxuICAvLyBUT0RPOiBJbXByb3ZlIGNvbHVtbiBoYW5kbGluZywgbGlrZSBkYXRhdGFibGUsIHRvIGF2b2lkIGV4Y2Vzc2l2ZSB1cGRhdGVzLlxuICBwcml2YXRlIF9zZXRDb2x1bW5zKGNvbHM6IChzdHJpbmcgfCBJVGFibGVDb2x1bW4pW10pIHtcbiAgICBjb25zdCBwcmV2ID0gdGhpcy5kaXNwbGF5ZWRSZWNvcmRzXG4gICAgY29uc3QgbmV3Q29sczogSVRhYmxlQ29sdW1uW10gPSBbXVxuXG4gICAgZm9yIChjb25zdCBjb2wgb2YgY29scykge1xuICAgICAgaWYgKHR5cGVvZiBjb2wgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbnN0IG5ld0NvbDogSVRhYmxlQ29sdW1uID0ge1xuICAgICAgICAgIHByb3A6IGNvbCxcbiAgICAgICAgICBuYW1lOiBjb2xcbiAgICAgICAgfVxuICAgICAgICBuZXdDb2xzLnB1c2gobmV3Q29sKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IG5hbWUgPSBjb2wubmFtZVxuICAgICAgICBpZiAobmFtZSA9PT0gdW5kZWZpbmVkIHx8IG5hbWUgPT09IG51bGwpIHtcbiAgICAgICAgICBuYW1lID0gY29sLnByb3BcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuZXdDb2w6IElUYWJsZUNvbHVtbiA9IHtcbiAgICAgICAgICAuLi5jb2wsXG4gICAgICAgICAgcHJvcDogY29sLnByb3AsXG4gICAgICAgICAgbmFtZVxuICAgICAgICB9XG4gICAgICAgIG5ld0NvbHMucHVzaChuZXdDb2wpXG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBjb2wgb2YgbmV3Q29scykge1xuICAgICAgY29uc3QgX2NvbCA9IGNvbCBhcyBhbnlcbiAgICAgIGlmIChfY29sICYmIF9jb2wuY2VsbFR5cGVDb25maWcgJiYgX2NvbC5jZWxsVHlwZUNvbmZpZy5zdHlsZXMpIHtcbiAgICAgICAgX2NvbC5jZWxsVHlwZUNvbmZpZy5zdHlsZXMgPSB0aGlzLl9zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFN0eWxlKF9jb2wuY2VsbFR5cGVDb25maWcuc3R5bGVzKVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZGlzcGxheWVkUmVjb3JkcyA9IG5ld0NvbHNcbiAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMgPSBuZXdDb2xzLm1hcChjID0+IGMucHJvcClcbiAgICB0aGlzLmNvbHVtbnNDaGFuZ2UuZW1pdCh7IHByZXZpb3VzOiBwcmV2LCBjdXJyZW50OiBuZXdDb2xzIH0pXG4gIH1cblxuICBwdWJsaWMgdHJpZ2dlckFjdGlvblJlZnJlc2hSZXF1ZXN0KCkge1xuICAgIHRoaXMuYWN0aW9uUmVmcmVzaFJlcXVlc3QuZW1pdCh1bmRlZmluZWQpXG4gIH1cblxuICBfdHJhY2tCeVJlY29yZHMocjogYW55KSB7XG4gICAgcmV0dXJuIHIucHJvcCArIHIubmFtZVxuICB9XG5cbn1cbiIsIjx0YWJsZSBjZGstdGFibGUgW2RhdGFTb3VyY2VdPVwiZGlzcGxheWVkUm93c1wiIGNsYXNzPVwidGFibGUgdGFibGUtaGVhZGVyLWRpdmlkZXItaW5kZW50ZWQgbWItMFwiXG4gIFtjbGFzcy50YWJsZS1zdHJpcGVkXT1cInJvd3MgJiYgcm93cy5sZW5ndGggPiAwXCJcbiAgW2NsYXNzLnRhYmxlLXNtXT1cInNpemUgPT09ICdzbSdcIlxuICBbY2xhc3MudGFibGUtbm8taGVhZGVyXT1cIiFoYXNIZWFkZXJcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgciBvZiBkaXNwbGF5ZWRSZWNvcmRzOyBmaXJzdCBhcyBpc0ZpcnN0OyB0cmFja0J5Ol90cmFja0J5UmVjb3Jkc1wiPlxuICAgIDxuZy1jb250YWluZXIgW2Nka0NvbHVtbkRlZl09XCJyLnByb3BcIj5cbiAgICAgIDx0aCBjZGstaGVhZGVyLWNlbGwgKmNka0hlYWRlckNlbGxEZWYgW2NsYXNzXT1cInIuaGVhZGVyQ2xhc3NcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc0hlYWRlclwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIkYW55KHIpPy5oZWFkZXJUZW1wbGF0ZTsgZWxzZSBub0hlYWRlclRwbFwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIiRhbnkocik/LmhlYWRlclRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByLm5hbWUsIHByb3A6IHIucHJvcCwgY29sdW1uOiByIH1cIj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNub0hlYWRlclRwbD5cbiAgICAgICAgICAgIHt7IHIubmFtZSB9fVxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC90aD5cbiAgICAgIDx0ZCBjZGstY2VsbCAqY2RrQ2VsbERlZj1cImxldCBlbGVtZW50OyBpbmRleCBhcyByb3dJbmRleFwiXG4gICAgICAgIFthdHRyLmNvbHNwYW5dPVwiZWxlbWVudD8uX2VtcHR5RGlzcGxheSAmJiBpc0ZpcnN0ID8gMiA6IHVuZGVmaW5lZFwiXG4gICAgICAgIFtjbGFzc109XCJlbGVtZW50Py5fZW1wdHlEaXNwbGF5ID8gdW5kZWZpbmVkIDogci5jZWxsQ2xhc3NcIlxuICAgICAgICBbY2xhc3MuYm9yZGVyLXRvcC0wXT1cImVsZW1lbnQ/Ll9lbXB0eURpc3BsYXkgJiYgaXNGaXJzdFwiXG4gICAgICAgIFtjbGFzcy5kLW5vbmVdPVwiZWxlbWVudD8uX2VtcHR5RGlzcGxheSAmJiAhaXNGaXJzdFwiXG4gICAgICAgIFtzdHlsZV09XCIkYW55KHIpPy5jZWxsVHlwZUNvbmZpZz8uc3R5bGVzXCI+XG5cbiAgICAgICAgPHNwYW4gW3N0eWxlXT1cIiRhbnkocik/LmNlbGxUeXBlQ29uZmlnPy5zdHlsZXNcIj48L3NwYW4+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVsZW1lbnQ/Ll9lbXB0eURpc3BsYXkgJiYgaXNGaXJzdDsgZWxzZSBoYXNEYXRhVHBsXCI+XG4gICAgICAgICAgTm8gcmVjb3JkcyBmb3VuZFxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctdGVtcGxhdGUgI2hhc0RhdGFUcGw+XG4gICAgICAgICAgPHNlYW0tdGFibGUtY2VsbC10eXBlLXNlbGVjdG9yICpuZ0lmPVwiJGFueShyKT8uY2VsbFR5cGU7IGVsc2Ugbm9DZWxsVHlwZVwiXG4gICAgICAgICAgICBbdHlwZV09XCIkYW55KHIpPy5jZWxsVHlwZVwiXG4gICAgICAgICAgICBbdmFsdWVdPVwiZWxlbWVudFtyLnByb3BdXCJcbiAgICAgICAgICAgIFtyb3dJbmRleF09XCJyb3dJbmRleFwiXG4gICAgICAgICAgICBbcm93XT1cImVsZW1lbnRcIlxuICAgICAgICAgICAgW2NvbERhdGFdPVwiclwiPlxuICAgICAgICAgIDwvc2VhbS10YWJsZS1jZWxsLXR5cGUtc2VsZWN0b3I+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNub0NlbGxUeXBlPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiRhbnkocik/LmNlbGxUZW1wbGF0ZTsgZWxzZSBub0NlbGxUcGxcIj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiJGFueShyKT8uY2VsbFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGVsZW1lbnRbci5wcm9wXSwgcm93OiBlbGVtZW50LCByb3dJbmRleDogcm93SW5kZXgsIGNvbHVtbjogciB9XCI+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9DZWxsVHBsPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRkLXRleHQtdHJ1bmNhdGVcIiBbdGl0bGVdPVwiZWxlbWVudFtyLnByb3BdXCI+XG4gICAgICAgICAgICAgIHt7IGVsZW1lbnRbci5wcm9wXSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPC90ZD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPHRyIGNkay1oZWFkZXItcm93ICpjZGtIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zXCI+PC90cj5cbiAgPHRyIGNkay1yb3cgKmNka1Jvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnM7XCI+PC90cj5cbjwvdGFibGU+XG4iXX0=
@@ -0,0 +1,17 @@
1
+ import { Directive, inject, TemplateRef } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class TheSeamTableCellTplDirective {
4
+ constructor() {
5
+ this.template = inject((TemplateRef));
6
+ }
7
+ }
8
+ TheSeamTableCellTplDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TheSeamTableCellTplDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
9
+ TheSeamTableCellTplDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: TheSeamTableCellTplDirective, isStandalone: true, selector: "[seamTableCellTpl]", ngImport: i0 });
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TheSeamTableCellTplDirective, decorators: [{
11
+ type: Directive,
12
+ args: [{
13
+ selector: '[seamTableCellTpl]',
14
+ standalone: true,
15
+ }]
16
+ }] });
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY2VsbC10cGwuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL3RhYmxlL3RhYmxlLWNlbGwtdHBsLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUE7O0FBTTlELE1BQU0sT0FBTyw0QkFBNEI7SUFKekM7UUFLRSxhQUFRLEdBQUcsTUFBTSxDQUFDLENBQUEsV0FBZ0IsQ0FBQSxDQUFDLENBQUE7S0FDcEM7OzBIQUZZLDRCQUE0Qjs4R0FBNUIsNEJBQTRCOzRGQUE1Qiw0QkFBNEI7a0JBSnhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBpbmplY3QsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3NlYW1UYWJsZUNlbGxUcGxdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgVGhlU2VhbVRhYmxlQ2VsbFRwbERpcmVjdGl2ZSB7XG4gIHRlbXBsYXRlID0gaW5qZWN0KFRlbXBsYXRlUmVmPGFueT4pXG59XG4iXX0=
@@ -0,0 +1,17 @@
1
+ import { Directive, inject, TemplateRef } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class TheSeamTableColumnHeaderTplDirective {
4
+ constructor() {
5
+ this.template = inject((TemplateRef));
6
+ }
7
+ }
8
+ TheSeamTableColumnHeaderTplDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TheSeamTableColumnHeaderTplDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
9
+ TheSeamTableColumnHeaderTplDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: TheSeamTableColumnHeaderTplDirective, isStandalone: true, selector: "[seamTableColumnHeaderTpl]", ngImport: i0 });
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TheSeamTableColumnHeaderTplDirective, decorators: [{
11
+ type: Directive,
12
+ args: [{
13
+ selector: '[seamTableColumnHeaderTpl]',
14
+ standalone: true,
15
+ }]
16
+ }] });
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29sdW1uLWhlYWRlci10cGwuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL3RhYmxlL3RhYmxlLWNvbHVtbi1oZWFkZXItdHBsLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUE7O0FBTTlELE1BQU0sT0FBTyxvQ0FBb0M7SUFKakQ7UUFLRSxhQUFRLEdBQUcsTUFBTSxDQUFDLENBQUEsV0FBZ0IsQ0FBQSxDQUFDLENBQUE7S0FDcEM7O2tJQUZZLG9DQUFvQztzSEFBcEMsb0NBQW9DOzRGQUFwQyxvQ0FBb0M7a0JBSmhELFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDRCQUE0QjtvQkFDdEMsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBpbmplY3QsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3NlYW1UYWJsZUNvbHVtbkhlYWRlclRwbF0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBUaGVTZWFtVGFibGVDb2x1bW5IZWFkZXJUcGxEaXJlY3RpdmUge1xuICB0ZW1wbGF0ZSA9IGluamVjdChUZW1wbGF0ZVJlZjxhbnk+KVxufVxuIl19
@@ -0,0 +1,68 @@
1
+ import { Component, ContentChild, Input, TemplateRef } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ import { TheSeamTableCellTplDirective } from './table-cell-tpl.directive';
4
+ import { TheSeamTableColumnHeaderTplDirective } from './table-column-header-tpl.directive';
5
+ import * as i0 from "@angular/core";
6
+ // TODO: The column component should implement `ITableColumn`, since
7
+ // providing some properties by input and some by template could be confusing.
8
+ export class TheSeamTableColumnComponent {
9
+ constructor() {
10
+ this._isFirstChange = true;
11
+ this._columnChange = new Subject();
12
+ this.columnChange$ = this._columnChange.asObservable();
13
+ }
14
+ get cellTemplate() {
15
+ return this._cellTemplateInput || this._cellTemplateQuery;
16
+ }
17
+ get headerTemplate() {
18
+ return this._headerTemplateInput || this._headerTemplateQuery;
19
+ }
20
+ // constructor(
21
+ // private _columnChangesService: DatatableColumnChangesService
22
+ // ) {}
23
+ ngOnChanges(changes) {
24
+ if (this._isFirstChange) {
25
+ this._isFirstChange = false;
26
+ }
27
+ else {
28
+ // this._columnChangesService.onInputChange()
29
+ this._columnChange.next();
30
+ }
31
+ }
32
+ }
33
+ TheSeamTableColumnComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TheSeamTableColumnComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
34
+ TheSeamTableColumnComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TheSeamTableColumnComponent, isStandalone: true, selector: "seam-table-column", inputs: { name: "name", prop: "prop", flexGrow: "flexGrow", headerClass: "headerClass", cellClass: "cellClass", _cellTemplateInput: ["cellTemplate", "_cellTemplateInput"], _headerTemplateInput: ["headerTemplate", "_headerTemplateInput"] }, queries: [{ propertyName: "cellTplDirective", first: true, predicate: TheSeamTableCellTplDirective, descendants: true, static: true }, { propertyName: "_cellTemplateQuery", first: true, predicate: TheSeamTableCellTplDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "_headerTemplateQuery", first: true, predicate: TheSeamTableColumnHeaderTplDirective, descendants: true, read: TemplateRef, static: true }], usesOnChanges: true, ngImport: i0, template: ``, isInline: true });
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TheSeamTableColumnComponent, decorators: [{
36
+ type: Component,
37
+ args: [{
38
+ selector: 'seam-table-column',
39
+ standalone: true,
40
+ template: ``,
41
+ }]
42
+ }], propDecorators: { name: [{
43
+ type: Input
44
+ }], prop: [{
45
+ type: Input
46
+ }], flexGrow: [{
47
+ type: Input
48
+ }], headerClass: [{
49
+ type: Input
50
+ }], cellClass: [{
51
+ type: Input
52
+ }], cellTplDirective: [{
53
+ type: ContentChild,
54
+ args: [TheSeamTableCellTplDirective, { static: true }]
55
+ }], _cellTemplateInput: [{
56
+ type: Input,
57
+ args: ['cellTemplate']
58
+ }], _cellTemplateQuery: [{
59
+ type: ContentChild,
60
+ args: [TheSeamTableCellTplDirective, { read: TemplateRef, static: true }]
61
+ }], _headerTemplateInput: [{
62
+ type: Input,
63
+ args: ['headerTemplate']
64
+ }], _headerTemplateQuery: [{
65
+ type: ContentChild,
66
+ args: [TheSeamTableColumnHeaderTplDirective, { read: TemplateRef, static: true }]
67
+ }] } });
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29sdW1uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi90YWJsZS90YWJsZS1jb2x1bW4uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBNEIsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3JHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFJOUIsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFDekUsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0scUNBQXFDLENBQUE7O0FBRTFGLG9FQUFvRTtBQUNwRSw4RUFBOEU7QUFPOUUsTUFBTSxPQUFPLDJCQUEyQjtJQUx4QztRQW9CVSxtQkFBYyxHQUFHLElBQUksQ0FBQTtRQTBCWixrQkFBYSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUE7UUFDN0Msa0JBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFBO0tBZXpEO0lBL0JDLElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQTtJQUMzRCxDQUFDO0lBU0QsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQTtJQUMvRCxDQUFDO0lBS0QsZUFBZTtJQUNmLGlFQUFpRTtJQUNqRSxPQUFPO0lBRVAsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN2QixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQTtTQUM1QjthQUFNO1lBQ0wsNkNBQTZDO1lBQzdDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUE7U0FDMUI7SUFDSCxDQUFDOzt5SEF2RFUsMkJBQTJCOzZHQUEzQiwyQkFBMkIsMldBaUJ4Qiw0QkFBNEIsbUdBTTVCLDRCQUE0QiwyQkFBVSxXQUFXLGtGQVdqRCxvQ0FBb0MsMkJBQVUsV0FBVyxnRUFwQzdELEVBQUU7NEZBRUQsMkJBQTJCO2tCQUx2QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsRUFBRTtpQkFDYjs4QkFHVSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBTUcsV0FBVztzQkFBbkIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUl3RCxnQkFBZ0I7c0JBQTdFLFlBQVk7dUJBQUMsNEJBQTRCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUk1RCxrQkFBa0I7c0JBRGpCLEtBQUs7dUJBQUMsY0FBYztnQkFJckIsa0JBQWtCO3NCQURqQixZQUFZO3VCQUFDLDRCQUE0QixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQVMvRSxvQkFBb0I7c0JBRG5CLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQUl2QixvQkFBb0I7c0JBRG5CLFlBQVk7dUJBQUMsb0NBQW9DLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgSW5wdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnXG5cbmltcG9ydCB7IENvbHVtbkNoYW5nZXNTZXJ2aWNlLCBUYWJsZUNvbHVtblByb3AgfSBmcm9tICdAbWFya2xiL25neC1kYXRhdGFibGUnXG5cbmltcG9ydCB7IFRoZVNlYW1UYWJsZUNlbGxUcGxEaXJlY3RpdmUgfSBmcm9tICcuL3RhYmxlLWNlbGwtdHBsLmRpcmVjdGl2ZSdcbmltcG9ydCB7IFRoZVNlYW1UYWJsZUNvbHVtbkhlYWRlclRwbERpcmVjdGl2ZSB9IGZyb20gJy4vdGFibGUtY29sdW1uLWhlYWRlci10cGwuZGlyZWN0aXZlJ1xuXG4vLyBUT0RPOiBUaGUgY29sdW1uIGNvbXBvbmVudCBzaG91bGQgaW1wbGVtZW50IGBJVGFibGVDb2x1bW5gLCBzaW5jZVxuLy8gcHJvdmlkaW5nIHNvbWUgcHJvcGVydGllcyBieSBpbnB1dCBhbmQgc29tZSBieSB0ZW1wbGF0ZSBjb3VsZCBiZSBjb25mdXNpbmcuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NlYW0tdGFibGUtY29sdW1uJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6IGBgLFxufSlcbmV4cG9ydCBjbGFzcyBUaGVTZWFtVGFibGVDb2x1bW5Db21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuXG4gIEBJbnB1dCgpIG5hbWU/OiBzdHJpbmcgfCBudWxsXG4gIEBJbnB1dCgpIHByb3A/OiBUYWJsZUNvbHVtblByb3AgfCBudWxsXG5cbiAgQElucHV0KCkgZmxleEdyb3c/OiBudW1iZXIgfCBudWxsXG4gIC8vIEBJbnB1dCgpIG1pbldpZHRoPzogbnVtYmVyIHwgbnVsbFxuICAvLyBASW5wdXQoKSBtYXhXaWR0aD86IG51bWJlciB8IG51bGxcbiAgLy8gQElucHV0KCkgd2lkdGg/OiBudW1iZXIgfCBudWxsXG5cbiAgLy8gQElucHV0KCkgaGVhZGVyQ2xhc3M/OiBzdHJpbmcgfCAoKGRhdGE6IGFueSkgPT4gc3RyaW5nfGFueSkgfCBudWxsXG4gIEBJbnB1dCgpIGhlYWRlckNsYXNzPzogc3RyaW5nIHwgbnVsbFxuICAvLyBASW5wdXQoKSBjZWxsQ2xhc3M/OiBzdHJpbmcgfCAoKGRhdGE6IGFueSkgPT4gc3RyaW5nfGFueSkgfCBudWxsXG4gIEBJbnB1dCgpIGNlbGxDbGFzcz86IHN0cmluZyB8IG51bGxcblxuICBwcml2YXRlIF9pc0ZpcnN0Q2hhbmdlID0gdHJ1ZVxuXG4gIEBDb250ZW50Q2hpbGQoVGhlU2VhbVRhYmxlQ2VsbFRwbERpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSkgY2VsbFRwbERpcmVjdGl2ZT86IFRoZVNlYW1UYWJsZUNlbGxUcGxEaXJlY3RpdmVcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZVxuICBASW5wdXQoJ2NlbGxUZW1wbGF0ZScpXG4gIF9jZWxsVGVtcGxhdGVJbnB1dD86IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsXG5cbiAgQENvbnRlbnRDaGlsZChUaGVTZWFtVGFibGVDZWxsVHBsRGlyZWN0aXZlLCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgX2NlbGxUZW1wbGF0ZVF1ZXJ5PzogVGVtcGxhdGVSZWY8YW55PlxuXG4gIGdldCBjZWxsVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9jZWxsVGVtcGxhdGVJbnB1dCB8fCB0aGlzLl9jZWxsVGVtcGxhdGVRdWVyeVxuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dC1yZW5hbWVcbiAgQElucHV0KCdoZWFkZXJUZW1wbGF0ZScpXG4gIF9oZWFkZXJUZW1wbGF0ZUlucHV0PzogVGVtcGxhdGVSZWY8YW55PiB8IG51bGxcblxuICBAQ29udGVudENoaWxkKFRoZVNlYW1UYWJsZUNvbHVtbkhlYWRlclRwbERpcmVjdGl2ZSwgeyByZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiB0cnVlIH0pXG4gIF9oZWFkZXJUZW1wbGF0ZVF1ZXJ5PzogVGVtcGxhdGVSZWY8YW55PlxuXG4gIGdldCBoZWFkZXJUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2hlYWRlclRlbXBsYXRlSW5wdXQgfHwgdGhpcy5faGVhZGVyVGVtcGxhdGVRdWVyeVxuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfY29sdW1uQ2hhbmdlID0gbmV3IFN1YmplY3Q8dm9pZD4oKVxuICBwdWJsaWMgY29sdW1uQ2hhbmdlJCA9IHRoaXMuX2NvbHVtbkNoYW5nZS5hc09ic2VydmFibGUoKVxuXG4gIC8vIGNvbnN0cnVjdG9yKFxuICAvLyAgIHByaXZhdGUgX2NvbHVtbkNoYW5nZXNTZXJ2aWNlOiBEYXRhdGFibGVDb2x1bW5DaGFuZ2VzU2VydmljZVxuICAvLyApIHt9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmICh0aGlzLl9pc0ZpcnN0Q2hhbmdlKSB7XG4gICAgICB0aGlzLl9pc0ZpcnN0Q2hhbmdlID0gZmFsc2VcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gdGhpcy5fY29sdW1uQ2hhbmdlc1NlcnZpY2Uub25JbnB1dENoYW5nZSgpXG4gICAgICB0aGlzLl9jb2x1bW5DaGFuZ2UubmV4dCgpXG4gICAgfVxuICB9XG5cbn1cbiJdfQ==