@sebgroup/green-angular 6.8.0 → 7.0.0-rc.20251125130141487

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 (516) hide show
  1. package/fesm2022/sebgroup-green-angular-src-lib-accordion.mjs +13 -13
  2. package/fesm2022/sebgroup-green-angular-src-lib-accordion.mjs.map +1 -1
  3. package/fesm2022/sebgroup-green-angular-src-lib-badge.mjs +9 -8
  4. package/fesm2022/sebgroup-green-angular-src-lib-badge.mjs.map +1 -1
  5. package/fesm2022/sebgroup-green-angular-src-lib-button.mjs +9 -8
  6. package/fesm2022/sebgroup-green-angular-src-lib-button.mjs.map +1 -1
  7. package/fesm2022/sebgroup-green-angular-src-lib-cell-table.mjs +17 -15
  8. package/fesm2022/sebgroup-green-angular-src-lib-cell-table.mjs.map +1 -1
  9. package/fesm2022/sebgroup-green-angular-src-lib-context-menu.mjs +9 -9
  10. package/fesm2022/sebgroup-green-angular-src-lib-context-menu.mjs.map +1 -1
  11. package/fesm2022/sebgroup-green-angular-src-lib-datepicker.mjs +9 -9
  12. package/fesm2022/sebgroup-green-angular-src-lib-datepicker.mjs.map +1 -1
  13. package/fesm2022/sebgroup-green-angular-src-lib-dropdown.mjs +17 -15
  14. package/fesm2022/sebgroup-green-angular-src-lib-dropdown.mjs.map +1 -1
  15. package/fesm2022/sebgroup-green-angular-src-lib-in-page-wizard.mjs +9 -9
  16. package/fesm2022/sebgroup-green-angular-src-lib-in-page-wizard.mjs.map +1 -1
  17. package/fesm2022/sebgroup-green-angular-src-lib-modal.mjs +30 -28
  18. package/fesm2022/sebgroup-green-angular-src-lib-modal.mjs.map +1 -1
  19. package/fesm2022/sebgroup-green-angular-src-lib-pagination.mjs +9 -9
  20. package/fesm2022/sebgroup-green-angular-src-lib-pagination.mjs.map +1 -1
  21. package/fesm2022/sebgroup-green-angular-src-lib-progress-circle.mjs +9 -9
  22. package/fesm2022/sebgroup-green-angular-src-lib-progress-circle.mjs.map +1 -1
  23. package/fesm2022/sebgroup-green-angular-src-lib-segmented-control.mjs +9 -9
  24. package/fesm2022/sebgroup-green-angular-src-lib-segmented-control.mjs.map +1 -1
  25. package/fesm2022/sebgroup-green-angular-src-lib-shared.mjs +43 -38
  26. package/fesm2022/sebgroup-green-angular-src-lib-shared.mjs.map +1 -1
  27. package/fesm2022/sebgroup-green-angular-src-lib-slider.mjs +9 -9
  28. package/fesm2022/sebgroup-green-angular-src-lib-slider.mjs.map +1 -1
  29. package/fesm2022/sebgroup-green-angular-src-lib-sortable-list.mjs +9 -9
  30. package/fesm2022/sebgroup-green-angular-src-lib-sortable-list.mjs.map +1 -1
  31. package/fesm2022/sebgroup-green-angular-src-v-angular-account-number.mjs +7 -7
  32. package/fesm2022/sebgroup-green-angular-src-v-angular-account-number.mjs.map +1 -1
  33. package/fesm2022/sebgroup-green-angular-src-v-angular-alert.mjs +9 -9
  34. package/fesm2022/sebgroup-green-angular-src-v-angular-alert.mjs.map +1 -1
  35. package/fesm2022/sebgroup-green-angular-src-v-angular-base-control-value-accessor.mjs +13 -10
  36. package/fesm2022/sebgroup-green-angular-src-v-angular-base-control-value-accessor.mjs.map +1 -1
  37. package/fesm2022/sebgroup-green-angular-src-v-angular-breadcrumbs.mjs +9 -9
  38. package/fesm2022/sebgroup-green-angular-src-v-angular-breadcrumbs.mjs.map +1 -1
  39. package/fesm2022/sebgroup-green-angular-src-v-angular-button.mjs +9 -9
  40. package/fesm2022/sebgroup-green-angular-src-v-angular-button.mjs.map +1 -1
  41. package/fesm2022/sebgroup-green-angular-src-v-angular-card.mjs +8 -8
  42. package/fesm2022/sebgroup-green-angular-src-v-angular-card.mjs.map +1 -1
  43. package/fesm2022/sebgroup-green-angular-src-v-angular-character-countdown.mjs +9 -8
  44. package/fesm2022/sebgroup-green-angular-src-v-angular-character-countdown.mjs.map +1 -1
  45. package/fesm2022/sebgroup-green-angular-src-v-angular-checkbox.mjs +9 -9
  46. package/fesm2022/sebgroup-green-angular-src-v-angular-checkbox.mjs.map +1 -1
  47. package/fesm2022/sebgroup-green-angular-src-v-angular-core.mjs +3 -3
  48. package/fesm2022/sebgroup-green-angular-src-v-angular-core.mjs.map +1 -1
  49. package/fesm2022/sebgroup-green-angular-src-v-angular-datepicker.mjs +52 -43
  50. package/fesm2022/sebgroup-green-angular-src-v-angular-datepicker.mjs.map +1 -1
  51. package/fesm2022/sebgroup-green-angular-src-v-angular-drag-drop.mjs +19 -16
  52. package/fesm2022/sebgroup-green-angular-src-v-angular-drag-drop.mjs.map +1 -1
  53. package/fesm2022/sebgroup-green-angular-src-v-angular-dropdown.mjs +32 -32
  54. package/fesm2022/sebgroup-green-angular-src-v-angular-dropdown.mjs.map +1 -1
  55. package/fesm2022/sebgroup-green-angular-src-v-angular-external-link.mjs +9 -8
  56. package/fesm2022/sebgroup-green-angular-src-v-angular-external-link.mjs.map +1 -1
  57. package/fesm2022/sebgroup-green-angular-src-v-angular-i18n.mjs +19 -16
  58. package/fesm2022/sebgroup-green-angular-src-v-angular-i18n.mjs.map +1 -1
  59. package/fesm2022/sebgroup-green-angular-src-v-angular-info-circle.mjs +9 -9
  60. package/fesm2022/sebgroup-green-angular-src-v-angular-info-circle.mjs.map +1 -1
  61. package/fesm2022/sebgroup-green-angular-src-v-angular-input-mask.mjs +13 -11
  62. package/fesm2022/sebgroup-green-angular-src-v-angular-input-mask.mjs.map +1 -1
  63. package/fesm2022/sebgroup-green-angular-src-v-angular-input.mjs +9 -9
  64. package/fesm2022/sebgroup-green-angular-src-v-angular-input.mjs.map +1 -1
  65. package/fesm2022/sebgroup-green-angular-src-v-angular-modal.mjs +22 -21
  66. package/fesm2022/sebgroup-green-angular-src-v-angular-modal.mjs.map +1 -1
  67. package/fesm2022/sebgroup-green-angular-src-v-angular-pagination.mjs +9 -9
  68. package/fesm2022/sebgroup-green-angular-src-v-angular-pagination.mjs.map +1 -1
  69. package/fesm2022/sebgroup-green-angular-src-v-angular-radio.mjs +16 -16
  70. package/fesm2022/sebgroup-green-angular-src-v-angular-radio.mjs.map +1 -1
  71. package/fesm2022/sebgroup-green-angular-src-v-angular-slug.mjs +8 -7
  72. package/fesm2022/sebgroup-green-angular-src-v-angular-slug.mjs.map +1 -1
  73. package/fesm2022/sebgroup-green-angular-src-v-angular-table.mjs +28 -24
  74. package/fesm2022/sebgroup-green-angular-src-v-angular-table.mjs.map +1 -1
  75. package/fesm2022/sebgroup-green-angular-src-v-angular-tabs.mjs +13 -12
  76. package/fesm2022/sebgroup-green-angular-src-v-angular-tabs.mjs.map +1 -1
  77. package/fesm2022/sebgroup-green-angular-src-v-angular-textarea.mjs +9 -9
  78. package/fesm2022/sebgroup-green-angular-src-v-angular-textarea.mjs.map +1 -1
  79. package/fesm2022/sebgroup-green-angular-src-v-angular-toast.mjs +12 -12
  80. package/fesm2022/sebgroup-green-angular-src-v-angular-toast.mjs.map +1 -1
  81. package/fesm2022/sebgroup-green-angular-src-v-angular-tooltip.mjs +9 -8
  82. package/fesm2022/sebgroup-green-angular-src-v-angular-tooltip.mjs.map +1 -1
  83. package/fesm2022/sebgroup-green-angular-v-angular.mjs +347 -317
  84. package/fesm2022/sebgroup-green-angular-v-angular.mjs.map +1 -1
  85. package/fesm2022/sebgroup-green-angular.mjs +201 -188
  86. package/fesm2022/sebgroup-green-angular.mjs.map +1 -1
  87. package/package.json +8 -94
  88. package/src/v-angular/datepicker/date-control-value-accessor/date-control-value-accessor.component.d.ts +1 -1
  89. package/src/v-angular/drag-drop/drag-drop.component.d.ts +3 -3
  90. package/v-angular/datepicker/date-control-value-accessor/date-control-value-accessor.component.d.ts +1 -1
  91. package/v-angular/drag-drop/drag-drop.component.d.ts +3 -3
  92. package/esm2022/index.mjs +0 -18
  93. package/esm2022/lib/accordion/accordion-list-item.component.mjs +0 -50
  94. package/esm2022/lib/accordion/accordion.component.mjs +0 -77
  95. package/esm2022/lib/accordion/accordion.module.mjs +0 -24
  96. package/esm2022/lib/accordion/index.mjs +0 -4
  97. package/esm2022/lib/badge/badge.component.mjs +0 -85
  98. package/esm2022/lib/badge/badge.module.mjs +0 -23
  99. package/esm2022/lib/badge/index.mjs +0 -3
  100. package/esm2022/lib/button/button.component.mjs +0 -28
  101. package/esm2022/lib/button/button.module.mjs +0 -18
  102. package/esm2022/lib/button/index.mjs +0 -3
  103. package/esm2022/lib/cell-table/cell-table-item.component.mjs +0 -91
  104. package/esm2022/lib/cell-table/cell-table.component.mjs +0 -97
  105. package/esm2022/lib/cell-table/cell-table.module.mjs +0 -26
  106. package/esm2022/lib/cell-table/cell-table.types.mjs +0 -7
  107. package/esm2022/lib/cell-table/cell-underline.directive.mjs +0 -55
  108. package/esm2022/lib/cell-table/index.mjs +0 -4
  109. package/esm2022/lib/context-menu/context-menu.component.mjs +0 -79
  110. package/esm2022/lib/context-menu/context-menu.module.mjs +0 -37
  111. package/esm2022/lib/context-menu/index.mjs +0 -3
  112. package/esm2022/lib/datepicker/datepicker.component.mjs +0 -144
  113. package/esm2022/lib/datepicker/datepicker.module.mjs +0 -37
  114. package/esm2022/lib/datepicker/index.mjs +0 -3
  115. package/esm2022/lib/dropdown/dropdown-button.directive.mjs +0 -16
  116. package/esm2022/lib/dropdown/dropdown-option.directive.mjs +0 -16
  117. package/esm2022/lib/dropdown/dropdown.component.mjs +0 -248
  118. package/esm2022/lib/dropdown/dropdown.module.mjs +0 -51
  119. package/esm2022/lib/dropdown/index.mjs +0 -5
  120. package/esm2022/lib/green-angular.module.mjs +0 -72
  121. package/esm2022/lib/in-page-wizard/in-page-wizard-step-card.component.mjs +0 -61
  122. package/esm2022/lib/in-page-wizard/in-page-wizard.module.mjs +0 -18
  123. package/esm2022/lib/in-page-wizard/index.mjs +0 -3
  124. package/esm2022/lib/modal/index.mjs +0 -5
  125. package/esm2022/lib/modal/modal-footer.directive.mjs +0 -16
  126. package/esm2022/lib/modal/modal-header.directive.mjs +0 -16
  127. package/esm2022/lib/modal/modal.component.mjs +0 -317
  128. package/esm2022/lib/modal/modal.module.mjs +0 -44
  129. package/esm2022/lib/pagination/index.mjs +0 -3
  130. package/esm2022/lib/pagination/pagination.component.mjs +0 -175
  131. package/esm2022/lib/pagination/pagination.module.mjs +0 -18
  132. package/esm2022/lib/progress-circle/index.mjs +0 -3
  133. package/esm2022/lib/progress-circle/progress-circle.component.mjs +0 -41
  134. package/esm2022/lib/progress-circle/progress-circle.module.mjs +0 -18
  135. package/esm2022/lib/segmented-control/index.mjs +0 -3
  136. package/esm2022/lib/segmented-control/segmented-control.component.mjs +0 -38
  137. package/esm2022/lib/segmented-control/segmented-control.module.mjs +0 -22
  138. package/esm2022/lib/shared/core-control/core-checkbox.directive.mjs +0 -39
  139. package/esm2022/lib/shared/core-control/core-control.directive.mjs +0 -94
  140. package/esm2022/lib/shared/core-control/core-control.module.mjs +0 -20
  141. package/esm2022/lib/shared/core-control/index.mjs +0 -4
  142. package/esm2022/lib/shared/core-element/core-element.directive.mjs +0 -34
  143. package/esm2022/lib/shared/core-element/core-element.module.mjs +0 -18
  144. package/esm2022/lib/shared/core-element/index.mjs +0 -3
  145. package/esm2022/lib/shared/core-renderer/core-renderer.mjs +0 -152
  146. package/esm2022/lib/shared/core-renderer/index.mjs +0 -2
  147. package/esm2022/lib/shared/core-router-link/core-router-link.directive.mjs +0 -53
  148. package/esm2022/lib/shared/core-router-link/core-router-link.module.mjs +0 -16
  149. package/esm2022/lib/shared/core-router-link/index.mjs +0 -3
  150. package/esm2022/lib/shared/index.mjs +0 -7
  151. package/esm2022/lib/shared/on-scroll.directive.mjs +0 -47
  152. package/esm2022/lib/shared/scope-resolver.mjs +0 -9
  153. package/esm2022/lib/shared/shared.module.mjs +0 -19
  154. package/esm2022/lib/slider/index.mjs +0 -3
  155. package/esm2022/lib/slider/slider.component.mjs +0 -116
  156. package/esm2022/lib/slider/slider.module.mjs +0 -19
  157. package/esm2022/lib/sortable-list/index.mjs +0 -3
  158. package/esm2022/lib/sortable-list/sortable-list.component.mjs +0 -181
  159. package/esm2022/lib/sortable-list/sortable-list.module.mjs +0 -20
  160. package/esm2022/sebgroup-green-angular.mjs +0 -5
  161. package/esm2022/src/lib/accordion/accordion-list-item.component.mjs +0 -50
  162. package/esm2022/src/lib/accordion/accordion.component.mjs +0 -77
  163. package/esm2022/src/lib/accordion/accordion.module.mjs +0 -24
  164. package/esm2022/src/lib/accordion/index.mjs +0 -4
  165. package/esm2022/src/lib/accordion/sebgroup-green-angular-src-lib-accordion.mjs +0 -5
  166. package/esm2022/src/lib/badge/badge.component.mjs +0 -85
  167. package/esm2022/src/lib/badge/badge.module.mjs +0 -23
  168. package/esm2022/src/lib/badge/index.mjs +0 -3
  169. package/esm2022/src/lib/badge/sebgroup-green-angular-src-lib-badge.mjs +0 -5
  170. package/esm2022/src/lib/button/button.component.mjs +0 -28
  171. package/esm2022/src/lib/button/button.module.mjs +0 -18
  172. package/esm2022/src/lib/button/index.mjs +0 -3
  173. package/esm2022/src/lib/button/sebgroup-green-angular-src-lib-button.mjs +0 -5
  174. package/esm2022/src/lib/cell-table/cell-table-item.component.mjs +0 -91
  175. package/esm2022/src/lib/cell-table/cell-table.component.mjs +0 -97
  176. package/esm2022/src/lib/cell-table/cell-table.module.mjs +0 -26
  177. package/esm2022/src/lib/cell-table/cell-table.types.mjs +0 -7
  178. package/esm2022/src/lib/cell-table/cell-underline.directive.mjs +0 -55
  179. package/esm2022/src/lib/cell-table/index.mjs +0 -4
  180. package/esm2022/src/lib/cell-table/sebgroup-green-angular-src-lib-cell-table.mjs +0 -5
  181. package/esm2022/src/lib/context-menu/context-menu.component.mjs +0 -79
  182. package/esm2022/src/lib/context-menu/context-menu.module.mjs +0 -37
  183. package/esm2022/src/lib/context-menu/index.mjs +0 -3
  184. package/esm2022/src/lib/context-menu/sebgroup-green-angular-src-lib-context-menu.mjs +0 -5
  185. package/esm2022/src/lib/datepicker/datepicker.component.mjs +0 -144
  186. package/esm2022/src/lib/datepicker/datepicker.module.mjs +0 -37
  187. package/esm2022/src/lib/datepicker/index.mjs +0 -3
  188. package/esm2022/src/lib/datepicker/sebgroup-green-angular-src-lib-datepicker.mjs +0 -5
  189. package/esm2022/src/lib/dropdown/dropdown-button.directive.mjs +0 -16
  190. package/esm2022/src/lib/dropdown/dropdown-option.directive.mjs +0 -16
  191. package/esm2022/src/lib/dropdown/dropdown.component.mjs +0 -248
  192. package/esm2022/src/lib/dropdown/dropdown.module.mjs +0 -51
  193. package/esm2022/src/lib/dropdown/index.mjs +0 -5
  194. package/esm2022/src/lib/dropdown/sebgroup-green-angular-src-lib-dropdown.mjs +0 -5
  195. package/esm2022/src/lib/in-page-wizard/in-page-wizard-step-card.component.mjs +0 -61
  196. package/esm2022/src/lib/in-page-wizard/in-page-wizard.module.mjs +0 -18
  197. package/esm2022/src/lib/in-page-wizard/index.mjs +0 -3
  198. package/esm2022/src/lib/in-page-wizard/sebgroup-green-angular-src-lib-in-page-wizard.mjs +0 -5
  199. package/esm2022/src/lib/modal/index.mjs +0 -5
  200. package/esm2022/src/lib/modal/modal-footer.directive.mjs +0 -16
  201. package/esm2022/src/lib/modal/modal-header.directive.mjs +0 -16
  202. package/esm2022/src/lib/modal/modal.component.mjs +0 -317
  203. package/esm2022/src/lib/modal/modal.module.mjs +0 -44
  204. package/esm2022/src/lib/modal/sebgroup-green-angular-src-lib-modal.mjs +0 -5
  205. package/esm2022/src/lib/pagination/index.mjs +0 -3
  206. package/esm2022/src/lib/pagination/pagination.component.mjs +0 -175
  207. package/esm2022/src/lib/pagination/pagination.module.mjs +0 -18
  208. package/esm2022/src/lib/pagination/sebgroup-green-angular-src-lib-pagination.mjs +0 -5
  209. package/esm2022/src/lib/progress-circle/index.mjs +0 -3
  210. package/esm2022/src/lib/progress-circle/progress-circle.component.mjs +0 -41
  211. package/esm2022/src/lib/progress-circle/progress-circle.module.mjs +0 -18
  212. package/esm2022/src/lib/progress-circle/sebgroup-green-angular-src-lib-progress-circle.mjs +0 -5
  213. package/esm2022/src/lib/segmented-control/index.mjs +0 -3
  214. package/esm2022/src/lib/segmented-control/sebgroup-green-angular-src-lib-segmented-control.mjs +0 -5
  215. package/esm2022/src/lib/segmented-control/segmented-control.component.mjs +0 -38
  216. package/esm2022/src/lib/segmented-control/segmented-control.module.mjs +0 -22
  217. package/esm2022/src/lib/shared/core-control/core-checkbox.directive.mjs +0 -39
  218. package/esm2022/src/lib/shared/core-control/core-control.directive.mjs +0 -94
  219. package/esm2022/src/lib/shared/core-control/core-control.module.mjs +0 -20
  220. package/esm2022/src/lib/shared/core-control/index.mjs +0 -4
  221. package/esm2022/src/lib/shared/core-element/core-element.directive.mjs +0 -34
  222. package/esm2022/src/lib/shared/core-element/core-element.module.mjs +0 -18
  223. package/esm2022/src/lib/shared/core-element/index.mjs +0 -3
  224. package/esm2022/src/lib/shared/core-renderer/core-renderer.mjs +0 -152
  225. package/esm2022/src/lib/shared/core-renderer/index.mjs +0 -2
  226. package/esm2022/src/lib/shared/core-router-link/core-router-link.directive.mjs +0 -53
  227. package/esm2022/src/lib/shared/core-router-link/core-router-link.module.mjs +0 -16
  228. package/esm2022/src/lib/shared/core-router-link/index.mjs +0 -3
  229. package/esm2022/src/lib/shared/index.mjs +0 -7
  230. package/esm2022/src/lib/shared/on-scroll.directive.mjs +0 -47
  231. package/esm2022/src/lib/shared/scope-resolver.mjs +0 -9
  232. package/esm2022/src/lib/shared/sebgroup-green-angular-src-lib-shared.mjs +0 -5
  233. package/esm2022/src/lib/shared/shared.module.mjs +0 -19
  234. package/esm2022/src/lib/slider/index.mjs +0 -3
  235. package/esm2022/src/lib/slider/sebgroup-green-angular-src-lib-slider.mjs +0 -5
  236. package/esm2022/src/lib/slider/slider.component.mjs +0 -116
  237. package/esm2022/src/lib/slider/slider.module.mjs +0 -19
  238. package/esm2022/src/lib/sortable-list/index.mjs +0 -3
  239. package/esm2022/src/lib/sortable-list/sebgroup-green-angular-src-lib-sortable-list.mjs +0 -5
  240. package/esm2022/src/lib/sortable-list/sortable-list.component.mjs +0 -181
  241. package/esm2022/src/lib/sortable-list/sortable-list.module.mjs +0 -20
  242. package/esm2022/src/v-angular/account-number/account-number.module.mjs +0 -18
  243. package/esm2022/src/v-angular/account-number/account-number.pipe.mjs +0 -55
  244. package/esm2022/src/v-angular/account-number/index.mjs +0 -3
  245. package/esm2022/src/v-angular/account-number/sebgroup-green-angular-src-v-angular-account-number.mjs +0 -5
  246. package/esm2022/src/v-angular/alert/alert.component.mjs +0 -49
  247. package/esm2022/src/v-angular/alert/alert.models.mjs +0 -8
  248. package/esm2022/src/v-angular/alert/alert.module.mjs +0 -18
  249. package/esm2022/src/v-angular/alert/index.mjs +0 -4
  250. package/esm2022/src/v-angular/alert/sebgroup-green-angular-src-v-angular-alert.mjs +0 -5
  251. package/esm2022/src/v-angular/base-control-value-accessor/base-control-value-accessor.component.mjs +0 -300
  252. package/esm2022/src/v-angular/base-control-value-accessor/base-control-value-accessor.module.mjs +0 -17
  253. package/esm2022/src/v-angular/base-control-value-accessor/index.mjs +0 -3
  254. package/esm2022/src/v-angular/base-control-value-accessor/sebgroup-green-angular-src-v-angular-base-control-value-accessor.mjs +0 -5
  255. package/esm2022/src/v-angular/breadcrumbs/breadcrumbs.component.mjs +0 -25
  256. package/esm2022/src/v-angular/breadcrumbs/breadcrumbs.module.mjs +0 -20
  257. package/esm2022/src/v-angular/breadcrumbs/index.mjs +0 -3
  258. package/esm2022/src/v-angular/breadcrumbs/sebgroup-green-angular-src-v-angular-breadcrumbs.mjs +0 -5
  259. package/esm2022/src/v-angular/button/button.component.mjs +0 -108
  260. package/esm2022/src/v-angular/button/button.module.mjs +0 -20
  261. package/esm2022/src/v-angular/button/index.mjs +0 -3
  262. package/esm2022/src/v-angular/button/sebgroup-green-angular-src-v-angular-button.mjs +0 -5
  263. package/esm2022/src/v-angular/card/card.component.mjs +0 -11
  264. package/esm2022/src/v-angular/card/card.module.mjs +0 -18
  265. package/esm2022/src/v-angular/card/index.mjs +0 -3
  266. package/esm2022/src/v-angular/card/sebgroup-green-angular-src-v-angular-card.mjs +0 -5
  267. package/esm2022/src/v-angular/character-countdown/character-countdown.directive.mjs +0 -51
  268. package/esm2022/src/v-angular/character-countdown/character-countdown.module.mjs +0 -18
  269. package/esm2022/src/v-angular/character-countdown/index.mjs +0 -3
  270. package/esm2022/src/v-angular/character-countdown/sebgroup-green-angular-src-v-angular-character-countdown.mjs +0 -5
  271. package/esm2022/src/v-angular/checkbox/checkbox.component.mjs +0 -94
  272. package/esm2022/src/v-angular/checkbox/checkbox.module.mjs +0 -21
  273. package/esm2022/src/v-angular/checkbox/index.mjs +0 -3
  274. package/esm2022/src/v-angular/checkbox/sebgroup-green-angular-src-v-angular-checkbox.mjs +0 -5
  275. package/esm2022/src/v-angular/core/core.globals.mjs +0 -20
  276. package/esm2022/src/v-angular/core/core.utils.mjs +0 -62
  277. package/esm2022/src/v-angular/core/index.mjs +0 -3
  278. package/esm2022/src/v-angular/core/sebgroup-green-angular-src-v-angular-core.mjs +0 -5
  279. package/esm2022/src/v-angular/datepicker/components/calendar/calendar.component.mjs +0 -200
  280. package/esm2022/src/v-angular/datepicker/components/calendar-control/calendar-control.component.mjs +0 -115
  281. package/esm2022/src/v-angular/datepicker/components/date-input/date-input.component.mjs +0 -238
  282. package/esm2022/src/v-angular/datepicker/components/datepicker/datepicker.component.mjs +0 -192
  283. package/esm2022/src/v-angular/datepicker/date-control-value-accessor/date-control-value-accessor.component.mjs +0 -411
  284. package/esm2022/src/v-angular/datepicker/datepicker.globals.mjs +0 -20
  285. package/esm2022/src/v-angular/datepicker/datepicker.models.mjs +0 -56
  286. package/esm2022/src/v-angular/datepicker/datepicker.module.mjs +0 -63
  287. package/esm2022/src/v-angular/datepicker/datepicker.utils.mjs +0 -196
  288. package/esm2022/src/v-angular/datepicker/directives/calendar-date.directive.mjs +0 -47
  289. package/esm2022/src/v-angular/datepicker/index.mjs +0 -17
  290. package/esm2022/src/v-angular/datepicker/models/dates.mjs +0 -291
  291. package/esm2022/src/v-angular/datepicker/pipes/date-thook.pipe.mjs +0 -30
  292. package/esm2022/src/v-angular/datepicker/pipes/is-disabled.pipe.mjs +0 -37
  293. package/esm2022/src/v-angular/datepicker/pipes/matches.pipe.mjs +0 -17
  294. package/esm2022/src/v-angular/datepicker/sebgroup-green-angular-src-v-angular-datepicker.mjs +0 -5
  295. package/esm2022/src/v-angular/drag-drop/drag-drop.component.mjs +0 -497
  296. package/esm2022/src/v-angular/drag-drop/drag-drop.models.mjs +0 -2
  297. package/esm2022/src/v-angular/drag-drop/drag-drop.module.mjs +0 -49
  298. package/esm2022/src/v-angular/drag-drop/drag-drop.pipes.mjs +0 -70
  299. package/esm2022/src/v-angular/drag-drop/drag-drop.utils.mjs +0 -76
  300. package/esm2022/src/v-angular/drag-drop/index.mjs +0 -5
  301. package/esm2022/src/v-angular/drag-drop/sebgroup-green-angular-src-v-angular-drag-drop.mjs +0 -5
  302. package/esm2022/src/v-angular/dropdown/dropdown-list/dropdown-list.component.mjs +0 -380
  303. package/esm2022/src/v-angular/dropdown/dropdown-list/index.mjs +0 -2
  304. package/esm2022/src/v-angular/dropdown/dropdown.component.mjs +0 -303
  305. package/esm2022/src/v-angular/dropdown/dropdown.module.mjs +0 -38
  306. package/esm2022/src/v-angular/dropdown/index.mjs +0 -6
  307. package/esm2022/src/v-angular/dropdown/sebgroup-green-angular-src-v-angular-dropdown.mjs +0 -5
  308. package/esm2022/src/v-angular/dropdown/typeahead/index.mjs +0 -6
  309. package/esm2022/src/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.mjs +0 -110
  310. package/esm2022/src/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.mjs +0 -85
  311. package/esm2022/src/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.mjs +0 -138
  312. package/esm2022/src/v-angular/dropdown/typeahead/typeahead.directive.mjs +0 -186
  313. package/esm2022/src/v-angular/dropdown/typeahead/typeahead.module.mjs +0 -33
  314. package/esm2022/src/v-angular/external-link/external-link.directive.mjs +0 -37
  315. package/esm2022/src/v-angular/external-link/external-link.module.mjs +0 -18
  316. package/esm2022/src/v-angular/external-link/index.mjs +0 -3
  317. package/esm2022/src/v-angular/external-link/sebgroup-green-angular-src-v-angular-external-link.mjs +0 -5
  318. package/esm2022/src/v-angular/i18n/i18n.json +0 -13
  319. package/esm2022/src/v-angular/i18n/i18n.module.mjs +0 -89
  320. package/esm2022/src/v-angular/i18n/i18n.test.module.mjs +0 -89
  321. package/esm2022/src/v-angular/i18n/index.mjs +0 -3
  322. package/esm2022/src/v-angular/i18n/sebgroup-green-angular-src-v-angular-i18n.mjs +0 -5
  323. package/esm2022/src/v-angular/info-circle/index.mjs +0 -3
  324. package/esm2022/src/v-angular/info-circle/info-circle.component.mjs +0 -28
  325. package/esm2022/src/v-angular/info-circle/info-circle.module.mjs +0 -21
  326. package/esm2022/src/v-angular/info-circle/sebgroup-green-angular-src-v-angular-info-circle.mjs +0 -5
  327. package/esm2022/src/v-angular/input/index.mjs +0 -3
  328. package/esm2022/src/v-angular/input/input.component.mjs +0 -248
  329. package/esm2022/src/v-angular/input/input.module.mjs +0 -41
  330. package/esm2022/src/v-angular/input/sebgroup-green-angular-src-v-angular-input.mjs +0 -5
  331. package/esm2022/src/v-angular/input-mask/config.mjs +0 -9
  332. package/esm2022/src/v-angular/input-mask/constants.mjs +0 -2
  333. package/esm2022/src/v-angular/input-mask/index.mjs +0 -6
  334. package/esm2022/src/v-angular/input-mask/input-mask-format.pipe.mjs +0 -21
  335. package/esm2022/src/v-angular/input-mask/input-mask.directive.mjs +0 -165
  336. package/esm2022/src/v-angular/input-mask/input-mask.module.mjs +0 -35
  337. package/esm2022/src/v-angular/input-mask/input-mask.types.mjs +0 -2
  338. package/esm2022/src/v-angular/input-mask/sebgroup-green-angular-src-v-angular-input-mask.mjs +0 -5
  339. package/esm2022/src/v-angular/modal/dialog/dialog.component.mjs +0 -242
  340. package/esm2022/src/v-angular/modal/fold-out/fold-out.component.mjs +0 -167
  341. package/esm2022/src/v-angular/modal/fold-out/fold-out.directive.mjs +0 -19
  342. package/esm2022/src/v-angular/modal/fold-out/keyboard-key.enum.mjs +0 -10
  343. package/esm2022/src/v-angular/modal/index.mjs +0 -6
  344. package/esm2022/src/v-angular/modal/modal.globals.mjs +0 -20
  345. package/esm2022/src/v-angular/modal/modal.module.mjs +0 -53
  346. package/esm2022/src/v-angular/modal/modal.types.mjs +0 -2
  347. package/esm2022/src/v-angular/modal/sebgroup-green-angular-src-v-angular-modal.mjs +0 -5
  348. package/esm2022/src/v-angular/modal/slide-out/slide-out.component.mjs +0 -253
  349. package/esm2022/src/v-angular/pagination/index.mjs +0 -3
  350. package/esm2022/src/v-angular/pagination/pagination.component.mjs +0 -144
  351. package/esm2022/src/v-angular/pagination/pagination.module.mjs +0 -37
  352. package/esm2022/src/v-angular/pagination/sebgroup-green-angular-src-v-angular-pagination.mjs +0 -5
  353. package/esm2022/src/v-angular/radio/index.mjs +0 -4
  354. package/esm2022/src/v-angular/radio/radio-group/radio-group.component.mjs +0 -86
  355. package/esm2022/src/v-angular/radio/radio.component.mjs +0 -153
  356. package/esm2022/src/v-angular/radio/radio.module.mjs +0 -22
  357. package/esm2022/src/v-angular/radio/sebgroup-green-angular-src-v-angular-radio.mjs +0 -5
  358. package/esm2022/src/v-angular/slug/index.mjs +0 -3
  359. package/esm2022/src/v-angular/slug/sebgroup-green-angular-src-v-angular-slug.mjs +0 -5
  360. package/esm2022/src/v-angular/slug/slug.module.mjs +0 -18
  361. package/esm2022/src/v-angular/slug/slug.pipe.mjs +0 -27
  362. package/esm2022/src/v-angular/table/index.mjs +0 -9
  363. package/esm2022/src/v-angular/table/sebgroup-green-angular-src-v-angular-table.mjs +0 -5
  364. package/esm2022/src/v-angular/table/table.component.mjs +0 -426
  365. package/esm2022/src/v-angular/table/table.directive.mjs +0 -110
  366. package/esm2022/src/v-angular/table/table.models.mjs +0 -2
  367. package/esm2022/src/v-angular/table/table.module.mjs +0 -40
  368. package/esm2022/src/v-angular/table/table.tools.mjs +0 -29
  369. package/esm2022/src/v-angular/table/tr-thook.pipe.mjs +0 -22
  370. package/esm2022/src/v-angular/tabs/index.mjs +0 -8
  371. package/esm2022/src/v-angular/tabs/sebgroup-green-angular-src-v-angular-tabs.mjs +0 -5
  372. package/esm2022/src/v-angular/tabs/tab.directive.mjs +0 -81
  373. package/esm2022/src/v-angular/tabs/tabs.component.mjs +0 -262
  374. package/esm2022/src/v-angular/tabs/tabs.models.mjs +0 -2
  375. package/esm2022/src/v-angular/tabs/tabs.module.mjs +0 -21
  376. package/esm2022/src/v-angular/textarea/index.mjs +0 -3
  377. package/esm2022/src/v-angular/textarea/sebgroup-green-angular-src-v-angular-textarea.mjs +0 -5
  378. package/esm2022/src/v-angular/textarea/textarea.component.mjs +0 -129
  379. package/esm2022/src/v-angular/textarea/textarea.module.mjs +0 -34
  380. package/esm2022/src/v-angular/toast/index.mjs +0 -8
  381. package/esm2022/src/v-angular/toast/sebgroup-green-angular-src-v-angular-toast.mjs +0 -5
  382. package/esm2022/src/v-angular/toast/toast-message.service.mjs +0 -82
  383. package/esm2022/src/v-angular/toast/toast.component.mjs +0 -66
  384. package/esm2022/src/v-angular/toast/toast.models.mjs +0 -8
  385. package/esm2022/src/v-angular/toast/toast.module.mjs +0 -21
  386. package/esm2022/src/v-angular/tooltip/index.mjs +0 -3
  387. package/esm2022/src/v-angular/tooltip/sebgroup-green-angular-src-v-angular-tooltip.mjs +0 -5
  388. package/esm2022/src/v-angular/tooltip/tooltip.directive.mjs +0 -293
  389. package/esm2022/src/v-angular/tooltip/tooltip.module.mjs +0 -18
  390. package/esm2022/src/v-angular/tooltip/tooltip.styles.mjs +0 -60
  391. package/esm2022/v-angular/account-number/account-number.module.mjs +0 -18
  392. package/esm2022/v-angular/account-number/account-number.pipe.mjs +0 -55
  393. package/esm2022/v-angular/account-number/index.mjs +0 -3
  394. package/esm2022/v-angular/alert/alert.component.mjs +0 -49
  395. package/esm2022/v-angular/alert/alert.models.mjs +0 -8
  396. package/esm2022/v-angular/alert/alert.module.mjs +0 -18
  397. package/esm2022/v-angular/alert/index.mjs +0 -4
  398. package/esm2022/v-angular/base-control-value-accessor/base-control-value-accessor.component.mjs +0 -300
  399. package/esm2022/v-angular/base-control-value-accessor/base-control-value-accessor.module.mjs +0 -17
  400. package/esm2022/v-angular/base-control-value-accessor/index.mjs +0 -3
  401. package/esm2022/v-angular/breadcrumbs/breadcrumbs.component.mjs +0 -25
  402. package/esm2022/v-angular/breadcrumbs/breadcrumbs.module.mjs +0 -20
  403. package/esm2022/v-angular/breadcrumbs/index.mjs +0 -3
  404. package/esm2022/v-angular/button/button.component.mjs +0 -108
  405. package/esm2022/v-angular/button/button.module.mjs +0 -20
  406. package/esm2022/v-angular/button/index.mjs +0 -3
  407. package/esm2022/v-angular/card/card.component.mjs +0 -11
  408. package/esm2022/v-angular/card/card.module.mjs +0 -18
  409. package/esm2022/v-angular/card/index.mjs +0 -3
  410. package/esm2022/v-angular/character-countdown/character-countdown.directive.mjs +0 -51
  411. package/esm2022/v-angular/character-countdown/character-countdown.module.mjs +0 -18
  412. package/esm2022/v-angular/character-countdown/index.mjs +0 -3
  413. package/esm2022/v-angular/checkbox/checkbox.component.mjs +0 -94
  414. package/esm2022/v-angular/checkbox/checkbox.module.mjs +0 -21
  415. package/esm2022/v-angular/checkbox/index.mjs +0 -3
  416. package/esm2022/v-angular/core/core.globals.mjs +0 -20
  417. package/esm2022/v-angular/core/core.utils.mjs +0 -62
  418. package/esm2022/v-angular/core/index.mjs +0 -3
  419. package/esm2022/v-angular/datepicker/components/calendar/calendar.component.mjs +0 -200
  420. package/esm2022/v-angular/datepicker/components/calendar-control/calendar-control.component.mjs +0 -115
  421. package/esm2022/v-angular/datepicker/components/date-input/date-input.component.mjs +0 -238
  422. package/esm2022/v-angular/datepicker/components/datepicker/datepicker.component.mjs +0 -192
  423. package/esm2022/v-angular/datepicker/date-control-value-accessor/date-control-value-accessor.component.mjs +0 -411
  424. package/esm2022/v-angular/datepicker/datepicker.globals.mjs +0 -20
  425. package/esm2022/v-angular/datepicker/datepicker.models.mjs +0 -56
  426. package/esm2022/v-angular/datepicker/datepicker.module.mjs +0 -63
  427. package/esm2022/v-angular/datepicker/datepicker.utils.mjs +0 -196
  428. package/esm2022/v-angular/datepicker/directives/calendar-date.directive.mjs +0 -47
  429. package/esm2022/v-angular/datepicker/index.mjs +0 -17
  430. package/esm2022/v-angular/datepicker/models/dates.mjs +0 -291
  431. package/esm2022/v-angular/datepicker/pipes/date-thook.pipe.mjs +0 -30
  432. package/esm2022/v-angular/datepicker/pipes/is-disabled.pipe.mjs +0 -37
  433. package/esm2022/v-angular/datepicker/pipes/matches.pipe.mjs +0 -17
  434. package/esm2022/v-angular/drag-drop/drag-drop.component.mjs +0 -497
  435. package/esm2022/v-angular/drag-drop/drag-drop.models.mjs +0 -2
  436. package/esm2022/v-angular/drag-drop/drag-drop.module.mjs +0 -49
  437. package/esm2022/v-angular/drag-drop/drag-drop.pipes.mjs +0 -70
  438. package/esm2022/v-angular/drag-drop/drag-drop.utils.mjs +0 -76
  439. package/esm2022/v-angular/drag-drop/index.mjs +0 -5
  440. package/esm2022/v-angular/dropdown/dropdown-list/dropdown-list.component.mjs +0 -380
  441. package/esm2022/v-angular/dropdown/dropdown-list/index.mjs +0 -2
  442. package/esm2022/v-angular/dropdown/dropdown.component.mjs +0 -303
  443. package/esm2022/v-angular/dropdown/dropdown.module.mjs +0 -38
  444. package/esm2022/v-angular/dropdown/index.mjs +0 -6
  445. package/esm2022/v-angular/dropdown/typeahead/index.mjs +0 -6
  446. package/esm2022/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.mjs +0 -110
  447. package/esm2022/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.mjs +0 -85
  448. package/esm2022/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.mjs +0 -138
  449. package/esm2022/v-angular/dropdown/typeahead/typeahead.directive.mjs +0 -186
  450. package/esm2022/v-angular/dropdown/typeahead/typeahead.module.mjs +0 -33
  451. package/esm2022/v-angular/external-link/external-link.directive.mjs +0 -37
  452. package/esm2022/v-angular/external-link/external-link.module.mjs +0 -18
  453. package/esm2022/v-angular/external-link/index.mjs +0 -3
  454. package/esm2022/v-angular/i18n/i18n.json +0 -13
  455. package/esm2022/v-angular/i18n/i18n.module.mjs +0 -89
  456. package/esm2022/v-angular/i18n/i18n.test.module.mjs +0 -89
  457. package/esm2022/v-angular/i18n/index.mjs +0 -3
  458. package/esm2022/v-angular/index.mjs +0 -29
  459. package/esm2022/v-angular/info-circle/index.mjs +0 -3
  460. package/esm2022/v-angular/info-circle/info-circle.component.mjs +0 -28
  461. package/esm2022/v-angular/info-circle/info-circle.module.mjs +0 -21
  462. package/esm2022/v-angular/input/index.mjs +0 -3
  463. package/esm2022/v-angular/input/input.component.mjs +0 -248
  464. package/esm2022/v-angular/input/input.module.mjs +0 -41
  465. package/esm2022/v-angular/input-mask/config.mjs +0 -9
  466. package/esm2022/v-angular/input-mask/constants.mjs +0 -2
  467. package/esm2022/v-angular/input-mask/index.mjs +0 -6
  468. package/esm2022/v-angular/input-mask/input-mask-format.pipe.mjs +0 -21
  469. package/esm2022/v-angular/input-mask/input-mask.directive.mjs +0 -165
  470. package/esm2022/v-angular/input-mask/input-mask.module.mjs +0 -35
  471. package/esm2022/v-angular/input-mask/input-mask.types.mjs +0 -2
  472. package/esm2022/v-angular/modal/dialog/dialog.component.mjs +0 -242
  473. package/esm2022/v-angular/modal/fold-out/fold-out.component.mjs +0 -167
  474. package/esm2022/v-angular/modal/fold-out/fold-out.directive.mjs +0 -19
  475. package/esm2022/v-angular/modal/fold-out/keyboard-key.enum.mjs +0 -10
  476. package/esm2022/v-angular/modal/index.mjs +0 -6
  477. package/esm2022/v-angular/modal/modal.globals.mjs +0 -20
  478. package/esm2022/v-angular/modal/modal.module.mjs +0 -53
  479. package/esm2022/v-angular/modal/modal.types.mjs +0 -2
  480. package/esm2022/v-angular/modal/slide-out/slide-out.component.mjs +0 -253
  481. package/esm2022/v-angular/pagination/index.mjs +0 -3
  482. package/esm2022/v-angular/pagination/pagination.component.mjs +0 -144
  483. package/esm2022/v-angular/pagination/pagination.module.mjs +0 -37
  484. package/esm2022/v-angular/radio/index.mjs +0 -4
  485. package/esm2022/v-angular/radio/radio-group/radio-group.component.mjs +0 -86
  486. package/esm2022/v-angular/radio/radio.component.mjs +0 -153
  487. package/esm2022/v-angular/radio/radio.module.mjs +0 -22
  488. package/esm2022/v-angular/sebgroup-green-angular-v-angular.mjs +0 -5
  489. package/esm2022/v-angular/slug/index.mjs +0 -3
  490. package/esm2022/v-angular/slug/slug.module.mjs +0 -18
  491. package/esm2022/v-angular/slug/slug.pipe.mjs +0 -27
  492. package/esm2022/v-angular/table/index.mjs +0 -9
  493. package/esm2022/v-angular/table/table.component.mjs +0 -426
  494. package/esm2022/v-angular/table/table.directive.mjs +0 -110
  495. package/esm2022/v-angular/table/table.models.mjs +0 -2
  496. package/esm2022/v-angular/table/table.module.mjs +0 -40
  497. package/esm2022/v-angular/table/table.tools.mjs +0 -29
  498. package/esm2022/v-angular/table/tr-thook.pipe.mjs +0 -22
  499. package/esm2022/v-angular/tabs/index.mjs +0 -8
  500. package/esm2022/v-angular/tabs/tab.directive.mjs +0 -81
  501. package/esm2022/v-angular/tabs/tabs.component.mjs +0 -262
  502. package/esm2022/v-angular/tabs/tabs.models.mjs +0 -2
  503. package/esm2022/v-angular/tabs/tabs.module.mjs +0 -21
  504. package/esm2022/v-angular/textarea/index.mjs +0 -3
  505. package/esm2022/v-angular/textarea/textarea.component.mjs +0 -129
  506. package/esm2022/v-angular/textarea/textarea.module.mjs +0 -34
  507. package/esm2022/v-angular/toast/index.mjs +0 -8
  508. package/esm2022/v-angular/toast/toast-message.service.mjs +0 -82
  509. package/esm2022/v-angular/toast/toast.component.mjs +0 -66
  510. package/esm2022/v-angular/toast/toast.models.mjs +0 -8
  511. package/esm2022/v-angular/toast/toast.module.mjs +0 -21
  512. package/esm2022/v-angular/tooltip/index.mjs +0 -3
  513. package/esm2022/v-angular/tooltip/tooltip.directive.mjs +0 -293
  514. package/esm2022/v-angular/tooltip/tooltip.module.mjs +0 -18
  515. package/esm2022/v-angular/tooltip/tooltip.styles.mjs +0 -60
  516. package/esm2022/v-angular/v-angular.module.mjs +0 -132
@@ -1,426 +0,0 @@
1
- import { Component, ContentChild, ContentChildren, EventEmitter, Input, Output, QueryList, } from '@angular/core';
2
- import { UntypedFormControl, UntypedFormGroup } from '@angular/forms';
3
- import { debounceTime, map } from 'rxjs/operators';
4
- import { TableAppendableRowsTemplateDirective, TableFooterTemplateDirective, TableTemplateDirective, } from './table.directive';
5
- import { orderByAscending, orderByDescending, pick } from './table.tools';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/common";
8
- import * as i2 from "@angular/forms";
9
- import * as i3 from "@jsverse/transloco";
10
- import * as i4 from "./table.directive";
11
- import * as i5 from "./tr-thook.pipe";
12
- let staticInitId = 0;
13
- function objectFromEntries(entryMap) {
14
- const fromEntries = {};
15
- for (const [key, value] of entryMap) {
16
- fromEntries[key] = value;
17
- }
18
- return fromEntries;
19
- }
20
- /**
21
- * A table component with built-in sorting and selecting functionality.
22
- * By default, table cells (i.e. `<td>` elements) and table headers (i.e. `<th>` elements) are populated with text only values.
23
- *
24
- * To customize the contents of either the `<td>` or `<th>` elements (like adding color, icons, form fields, extra padding etc.), provide
25
- * the customized content within a `<ng-template>`-tag, and place the ng-template in the html between the start and ending tag of
26
- * the `<nggv-table>`. Add a `tableColumn`-attribute to the `<ng-template>`-element, and set the value to the specific column property.
27
- * Set `tableColumnTarget` to either `th`, `td` or `both` (default) depending on target element type.
28
- * The entire row from the `@Input() tableData` is available from the context `$implicit` variable.
29
- *
30
- * @example
31
- * <!-- for table cells i.e. td-elements -->
32
- * <ng-template tableColumn="status" tableColumnTarget="td" let-myDataVar="$implicit" let-status="$implicit.status">
33
- * <!-- my custom status element -->
34
- * </ng-template>
35
- *
36
- * @example
37
- * <!-- for table headers i.e. th-elements -->
38
- * <ng-template tableColumn="status" tableColumnTarget="th" let-myDataVar="$implicit" let-status="$implicit.status">
39
- * <!-- my custom status element -->
40
- * </ng-template>
41
- *
42
- * It is possible to add custom rows that are appended below data row. Use `<ng-template>`-tag and place the ng-template in the html between the start and ending tag of
43
- * the `<nggv-table>`. Add a `tableAppendableRows`-attribute to the `<ng-template>`-element. Any `tr` elements that exist within `<ng-template tableAppendableRows>` and `</ng-template>` tags will be put below data row's `tr` element in the table.
44
- *
45
- * @example
46
- * <!-- custom appended rows -->
47
- * <ng-template tableAppendableRows let-myDataVar="$implicit" let-status="$implicit.status">
48
- * <tr>
49
- * <!-- first row's columns -->
50
- * </tr>
51
- * <!-- more rows if needed -->
52
- * </ng-template>
53
- *
54
- * If custom styling is needed for data row that has appended rows, you can use data attribute `data-hasrowspan` to distinguish it from data row without appended rows.
55
- * You can pass your own custom method with conditional logic to define what value will be passed to data-hasrowspan.
56
- * In addition, hasRowSpan function accepts item from `@Input() tableData` as argument which is of the same type as value passed to context `$implicit` variable.
57
- * IMPORTANT: use arrow function style for defining function inside component, i.e. `hasRowSpan = (value) => output;`. If regular function will be defined, i.e. `hasRowSpan(value) { return output; }`, binding will not work.
58
- *
59
- * @example
60
- * <!-- inside component
61
- * class CustomComponent {
62
- * customHasRowSpanFunction = (item: CustomDataType) => item.appendedRowsData.length > 0 ? true : false;
63
- * }
64
- * -->
65
- * <!-- inside stylesheets
66
- * [data-hasrowspan="true"] {
67
- * color: blue;
68
- * }
69
- * .appended-row {
70
- * color: blue;
71
- * }
72
- * -->
73
- * <nggv-table [hasRowSpan]="customHasRowSpanFunction">
74
- * <!-- custom appended rows -->
75
- * <ng-template tableAppendableRows let-appendedRowsData="$implicit.appendedRowsData">
76
- * <tr *ngFor="let appendedRowItem of appendedRowsData" class="appended-row">
77
- * <td>{{ appendedRowItem }}</td>
78
- * <!-- other row's columns -->
79
- * </tr>
80
- * </ng-template>
81
- * </nggv-table>
82
- *
83
- * In addition, it is possible to add footer for the table. Similarly to adding custom columns, use `<ng-template>`-tag and place the ng-template in the html between the start and ending tag of
84
- * the `<nggv-table>`. Add a `tableFooter`-attribute to the `<ng-template>`-element. Any elements that exist within `<ng-template tableFooter>` and `</ng-template>` tags will be put to tfoot element inside the table.
85
- *
86
- * @example
87
- * <!-- for table footer i.e. tfoot-element -->
88
- * <ng-template tableFooter>
89
- * <tr>
90
- * <!-- first row's columns -->
91
- * </tr>
92
- * <!-- more rows if needed -->
93
- * </ng-template>
94
- *
95
- */
96
- export class TableComponent {
97
- constructor() {
98
- /** Emits the table row that was clicked. Works on all columns if not preventDefaultEmit is set for that column. */
99
- this.ngvRowClick = new EventEmitter();
100
- /**
101
- * Emits currently selected and deselected items in the table as key-value pairs.
102
- * Uses each item`s itemId as key, and a boolean value to describe selected status.
103
- */
104
- this.ngvRowSelect = new EventEmitter();
105
- /**
106
- * Emits event to signal that the table should be reordered.
107
- */
108
- this.ngvOrderBy = new EventEmitter();
109
- /**
110
- * Property name used to uniquely describe each item (i.e. row) in the data table.
111
- * Defaults to \'id\'.
112
- * Is required if selectable is true.
113
- */
114
- this.rowId = 'id';
115
- /**
116
- * Function's return value is used for data attribute \'data-hasrowspan\'.
117
- * If custom hasRowSpan function is not passed to the table,
118
- * then this function returns undefined value by default which results in \'data-hasrowspan\' attribute being omitted in html
119
- * (angular omits attributes that contain null or undefined value).
120
- * IMPORTANT: use arrow function style for defining function inside component, i.e. `hasRowSpan = (value) => output;`. If regular function will be defined, i.e. `hasRowSpan(value) { return output; }`, binding will not work.
121
- */
122
- this.hasRowSpan = (_) => undefined;
123
- /**
124
- * Used to enable/disable the left-side checkbox column.
125
- * Defaults to true.
126
- */
127
- this.selectable = true;
128
- /**
129
- * Array of row id's (as defined by rowId property) that should not have a checkbox even if selectable is true.
130
- */
131
- this.hiddenCheckboxRowIds = [];
132
- /**
133
- * Used to enable/disable expandable rows.
134
- * Defaults to false.
135
- */
136
- this.expandable = false;
137
- /**
138
- * Used to enable/disable the right-side expand icon column.
139
- * Defaults to true.
140
- */
141
- this.expandedByDefault = true;
142
- /**
143
- * Property name used to describe the subItems in the data table.
144
- */
145
- this.subItemsProp = 'subItems';
146
- /**
147
- * Allow nggv-table to attempt sorting the data in the table. Not recommended if only a subset is loaded or if the dataset is very large.
148
- * Disabled by default.
149
- */
150
- this.allowLocalSort = false;
151
- /** Special property used for selecting DOM elements during automated UI testing. */
152
- this.thook = 'table-select-all';
153
- /**
154
- * @internal
155
- * Internal data structure used to keep track of added content templates used in td elements.
156
- */
157
- this.customRowTemplates = new Map();
158
- /**
159
- * @internal
160
- * Internal data structure used to keep track of added content templates used in th elements.
161
- */
162
- this.customHeaderTemplates = new Map();
163
- /**
164
- * @internal
165
- * FormGroup containing all row id\'s as controls, and whether these are selected or not as values.
166
- */
167
- this.rowSelectors = new UntypedFormGroup({});
168
- /**
169
- * @internal
170
- * Master selector for selecting or deselecting all row selectors.
171
- */
172
- this.groupSelector = new UntypedFormControl(false);
173
- this.selected = [];
174
- this.subs = [];
175
- }
176
- ngOnChanges(changes) {
177
- // Update selectable or expandable rows if table data or settings change
178
- if ((this.selectable || this.expandable) && changes.tableData?.currentValue ||
179
- (changes.selectable?.currentValue || changes.expandable?.currentValue) && this.tableData) {
180
- const wasChanged = this.registerSelectableRows(changes.tableData.currentValue);
181
- if (wasChanged && !this.subs.length) {
182
- // first time this is run
183
- const groupSelectorSub = this.groupValueSubscription;
184
- const rowSelectorSub = this.rowValueSubscription;
185
- this.subs.push(groupSelectorSub, rowSelectorSub);
186
- }
187
- else if (wasChanged) {
188
- this.rowSelectors.updateValueAndValidity();
189
- }
190
- }
191
- // sort any incoming data
192
- if (this.allowLocalSort &&
193
- (changes.tableData?.currentValue || changes.tableColumns?.currentValue)) {
194
- const orderedByColumn = this.tableColumns?.find((el) => el.order !== undefined);
195
- if (orderedByColumn)
196
- this.sortItemsBy(orderedByColumn);
197
- }
198
- }
199
- ngOnInit() {
200
- this.initId = staticInitId++;
201
- }
202
- ngAfterContentInit() {
203
- // if any custom templates were defined in the template
204
- if (this.customTemplates.length) {
205
- // for each template found
206
- this.customTemplates.map((tableTemplate) => {
207
- // if target is either 'td' or 'both'
208
- if (['td', 'both'].includes(tableTemplate.tableColumnTarget)) {
209
- // add to custom row templates
210
- this.customRowTemplates.set(tableTemplate.tableColumn, tableTemplate.templateRef);
211
- }
212
- // if target is either 'th' or 'both'
213
- if (['th', 'both'].includes(tableTemplate.tableColumnTarget)) {
214
- // add to custom header templates
215
- this.customHeaderTemplates.set(tableTemplate.tableColumn, tableTemplate.templateRef);
216
- }
217
- });
218
- }
219
- // if appended rows' template is defined in the template
220
- if (this.appendedRowsTemplate) {
221
- // set templateRef of appended rows' template to variable
222
- this.appendedRowsTemplateRef = this.appendedRowsTemplate.templateRef;
223
- }
224
- // if custom footer template is defined in the template
225
- if (this.customFooterTemplate) {
226
- // set templateRef of table footer to variable
227
- this.customFooterTemplateRef = this.customFooterTemplate.templateRef;
228
- }
229
- // if expandedByDefault is true, then expand all rows
230
- if (this.expandedByDefault && this.expandable && this.tableData) {
231
- this.tableData.forEach((item) => {
232
- this.toggleRowToExpand(item[this.rowId]);
233
- });
234
- }
235
- }
236
- ngOnDestroy() {
237
- this.subs.forEach((sub) => sub.unsubscribe());
238
- }
239
- /**
240
- * @internal
241
- * Returns a subscription to the master selector control that either selects or deselects all row controls.
242
- */
243
- get groupValueSubscription() {
244
- return this.groupSelector.valueChanges.subscribe({
245
- next: (value) => {
246
- const selectMap = new Map(Object.entries(this.rowSelectorsValue));
247
- selectMap.forEach((_, key) => selectMap.set(key, value));
248
- const patchValue = objectFromEntries(selectMap);
249
- this.rowSelectors.patchValue(patchValue);
250
- },
251
- });
252
- }
253
- /**
254
- * @internal
255
- * Returns a subscription to all individual row selectors and update the master selector if all are selected.
256
- */
257
- get rowValueSubscription() {
258
- return this.rowSelectors.valueChanges
259
- .pipe(debounceTime(0), // to limit the number of events and to wait for all sub controls to update
260
- map((val) => {
261
- // get a filtered array of keys for all rows that are selected
262
- const selected = Object.keys(val).filter((key) => {
263
- return val[key] === true && this.rowSelectors.get(key)?.enabled;
264
- });
265
- // returns an object containing only the filtered keys
266
- return pick(selected, val);
267
- }))
268
- .subscribe({
269
- next: (value) => {
270
- // the number of selected keys compared to the total number of keys available
271
- const numberOfSelected = Object.keys(value).length;
272
- const allSelected = numberOfSelected > 0
273
- ? numberOfSelected === Object.keys(this.rowSelectorsValue).length
274
- : false;
275
- // update the master selector control
276
- this.groupSelector.setValue(allSelected, { emitEvent: false });
277
- // update the array of currently selected id's
278
- this.selected = Object.keys(value);
279
- // and emit the updated value
280
- this.ngvRowSelect.emit(this.selected);
281
- },
282
- });
283
- }
284
- /**
285
- * @internal
286
- * Registers or disables row controls for new or removed rows.
287
- */
288
- registerSelectableRows(tableData) {
289
- if (!tableData)
290
- return false;
291
- // Array containing only the id's for each row
292
- const dataRowIds = tableData.map((data) => data[this.rowId]);
293
- // Array containing the id's that have registered controls
294
- const currentIds = Object.keys(this.rowSelectorsValue);
295
- // Array containing all ids that lacks a corresponding control (i.e. new rows)
296
- const newIds = dataRowIds.filter((id) => currentIds.indexOf(id) === -1);
297
- // Array containing all ids that has a control but is no longer in the data set (i.e. removed rows)
298
- const removedIds = currentIds.filter((id) => dataRowIds.indexOf(id) === -1);
299
- // Register new controls for added rows
300
- if (newIds.length) {
301
- newIds.forEach((id) => {
302
- const ctrl = this.rowSelectors.registerControl(id, new UntypedFormControl(false));
303
- if (ctrl.disabled)
304
- ctrl.enable();
305
- });
306
- }
307
- // Set already registered controls to disabled for removed rows
308
- if (removedIds.length)
309
- removedIds.forEach((id) => this.rowSelectors.get(id)?.disable());
310
- return newIds.length > 0 || removedIds.length > 0;
311
- }
312
- /**
313
- * @internal
314
- * Returns all enabled values unless all rows are disabled.
315
- */
316
- get rowSelectorsValue() {
317
- return this.rowSelectors.enabled ? this.rowSelectors.value : {};
318
- }
319
- toggleSortOrderWithSpace(event, column) {
320
- if (column.sortable) {
321
- event.preventDefault();
322
- this.toggleSortOrder(column);
323
- }
324
- }
325
- /**
326
- * @internal
327
- * Switches sorting order between ascending and descending order for a column.
328
- * @param column the column to sort rows after.
329
- */
330
- toggleSortOrder(column) {
331
- // check if the table is already sorted by another column than the one provided
332
- const currentlyOrderedBy = this.tableColumns?.find((el) => el !== column && el.order !== undefined);
333
- if (currentlyOrderedBy)
334
- delete currentlyOrderedBy.order;
335
- column.order = column.order === 'desc' ? 'asc' : 'desc';
336
- this.sortItemsBy(column);
337
- }
338
- /** If sortable, reorders the table data using the specified column as ordering attribute. */
339
- sortItemsBy(column) {
340
- if (!column.sortable)
341
- return;
342
- // emit re-order event
343
- this.ngvOrderBy.emit({ property: column.property, order: column.order });
344
- // if local sort is allowed, reorder data
345
- if (!this.allowLocalSort || !this.tableData)
346
- return;
347
- return this.tableData.sort(column.order === 'desc'
348
- ? orderByDescending(column.property)
349
- : orderByAscending(column.property));
350
- }
351
- /**
352
- * @internal
353
- * Emits row data for what row was clicked if defaultEmit is allowed.
354
- */
355
- propagateItemClick(item, preventDefaultEmit) {
356
- if (!preventDefaultEmit)
357
- this.ngvRowClick.emit(item);
358
- if (this.expandable && item[this.subItemsProp]) {
359
- this.toggleRowToExpand(item[this.rowId]);
360
- }
361
- }
362
- getAriaLabel(column) {
363
- const sortOrder = column.order === 'asc'
364
- ? this.ariaLabelsOrderBy?.desc
365
- : this.ariaLabelsOrderBy?.asc;
366
- if (!sortOrder)
367
- return; // no aria labels defined
368
- return column.ariaLabelSortable?.replace('{{sortOrder}}', sortOrder);
369
- }
370
- toggleRowToExpand(id) {
371
- const row = this.rowSelectors.get(id);
372
- row?.setValue(!row.value);
373
- }
374
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
375
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TableComponent, selector: "nggv-table", inputs: { tableColumns: "tableColumns", tableData: "tableData", rowId: "rowId", hasRowSpan: "hasRowSpan", selectable: "selectable", hiddenCheckboxRowIds: "hiddenCheckboxRowIds", expandable: "expandable", expandedByDefault: "expandedByDefault", subItemsProp: "subItemsProp", allowLocalSort: "allowLocalSort", thook: "thook", trThookFn: "trThookFn", ariaLabelCheckboxTh: "ariaLabelCheckboxTh", ariaLabelCheckboxTr: "ariaLabelCheckboxTr", ariaLabelsOrderBy: "ariaLabelsOrderBy" }, outputs: { ngvRowClick: "ngvRowClick", ngvRowSelect: "ngvRowSelect", ngvOrderBy: "ngvOrderBy" }, queries: [{ propertyName: "appendedRowsTemplate", first: true, predicate: TableAppendableRowsTemplateDirective, descendants: true }, { propertyName: "customFooterTemplate", first: true, predicate: TableFooterTemplateDirective, descendants: true }, { propertyName: "customTemplates", predicate: TableTemplateDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template #sortableThTemplate let-column>\n <button class=\"sg-table-sort\" *transloco=\"let t\">\n <ng-template #thButtonTemplate>\n {{ t(column.label ?? '') }}\n </ng-template>\n <ng-container\n *ngIf=\"\n customHeaderTemplates.get(column.property) as thTemplate;\n else thButtonTemplate\n \"\n >\n <ng-template\n *ngTemplateOutlet=\"thTemplate || null; context: { $implicit: column }\"\n >\n </ng-template>\n </ng-container>\n </button>\n</ng-template>\n\n<ng-template #notSortableThTemplate let-column>\n <ng-template #defaultThTemplate>\n <ng-container *transloco=\"let t\">\n {{ t(column.label ?? '') }}\n </ng-container>\n </ng-template>\n <ng-container\n *ngIf=\"\n customHeaderTemplates.get(column.property) as thTemplate;\n else defaultThTemplate\n \"\n >\n <ng-template\n *ngTemplateOutlet=\"thTemplate || null; context: { $implicit: column }\"\n >\n </ng-template>\n </ng-container>\n</ng-template>\n<table class=\"gds-table\" *transloco=\"let t\">\n <!-- Table header -->\n <thead>\n <tr>\n <!-- Checkbox column for header -->\n <th *ngIf=\"selectable\" class=\"column__check\">\n <div class=\"gds-field-checkbox-wrap\">\n <label\n [attr.for]=\"'cb_header__' + initId\"\n class=\"form-control\"\n id=\"thead-checkbox\"\n >\n <input\n type=\"checkbox\"\n [formControl]=\"groupSelector\"\n [attr.aria-label]=\"ariaLabelCheckboxTh\"\n [attr.id]=\"'cb_header__' + initId\"\n [attr.data-thook]=\"thook\"\n />\n <i></i>\n </label>\n </div>\n </th>\n\n <!-- Other columns -->\n <th\n *ngFor=\"let column of tableColumns\"\n [columnType]=\"column.valueType\"\n [sortable]=\"column.sortable\"\n [sortOrder]=\"column.order\"\n [thook]=\"'column-header-' + !!column.property\"\n (click)=\"toggleSortOrder(column)\"\n (keydown.space)=\"toggleSortOrderWithSpace($event, column)\"\n [attr.aria-label]=\"getAriaLabel(column)\"\n [attr.aria-sort]=\"column.order + 'ending'\"\n >\n <ng-container *ngIf=\"column.sortable\">\n <ng-container\n *ngTemplateOutlet=\"\n sortableThTemplate;\n context: { $implicit: column, column: column }\n \"\n >\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!column.sortable\">\n <ng-container\n *ngTemplateOutlet=\"\n notSortableThTemplate;\n context: { $implicit: column, column: column }\n \"\n >\n </ng-container>\n </ng-container>\n </th>\n </tr>\n </thead>\n\n <!-- Table body -->\n <tbody [formGroup]=\"rowSelectors\">\n <ng-container *ngFor=\"let item of tableData; let i = index\">\n <tr\n [class.row__expand]=\"expandable\"\n [attr.data-thook]=\"item | trThook: i : trThookFn\"\n [attr.data-hasrowspan]=\"hasRowSpan(item)\"\n >\n <!-- Checkbox column for row -->\n <td *ngIf=\"selectable\" class=\"column__check\">\n <div\n *ngIf=\"!hiddenCheckboxRowIds.includes(item[rowId])\"\n class=\"gds-field-checkbox-wrap\"\n >\n <label\n [attr.for]=\"'cb_row__' + initId + '_' + i\"\n class=\"form-control\"\n >\n <input\n *ngIf=\"rowSelectors.get(item[rowId])\"\n type=\"checkbox\"\n [formControlName]=\"item[rowId]\"\n [attr.aria-label]=\"ariaLabelCheckboxTr\"\n [attr.id]=\"'cb_row__' + initId + '_' + i\"\n [attr.data-thook]=\"'row-select-' + i\"\n />\n <i></i>\n </label>\n </div>\n </td>\n\n <!-- Other columns -->\n <td\n *ngFor=\"let column of tableColumns; let i = index\"\n [columnType]=\"column.valueType\"\n [value]=\"item[column.property]\"\n (click)=\"propagateItemClick(item, column.preventDefaultClickEvent)\"\n >\n <ng-container *ngIf=\"expandable && i === 0; else nonExpandableTemplate\">\n <div\n class=\"gds-item-field-wrap\"\n [ngClass]=\"{ 'no-sub-items': item.subItems.length === 0 }\"\n >\n <span\n *ngIf=\"item.subItems.length > 0\"\n role=\"button\"\n tabindex=\"0\"\n class=\"chevron-field\"\n [attr.aria-expanded]=\"rowSelectors.get(item[rowId])?.value\"\n >\n <svg\n width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M20 9L12 17L4 9\"\n stroke=\"currentColor\"\n stroke-width=\"1.6\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </span>\n <span class=\"gds-item-field-text\">\n {{ item[column.property] }} ({{ item.subItems.length }})\n <div *ngIf=\"column.columnLabel\" class=\"gds-item-field-extra-label\">\n {{ item[column.columnLabel] }}\n </div>\n </span>\n </div>\n </ng-container>\n\n <ng-template #nonExpandableTemplate>\n <ng-container *ngIf=\"customRowTemplates.get(column.property) as tdTemplate; else defaultTdTemplate\">\n <ng-template *ngTemplateOutlet=\"tdTemplate; context: { $implicit: item }\">\n </ng-template>\n </ng-container>\n <ng-template #defaultTdTemplate>\n {{ item[column.property] }}\n </ng-template>\n </ng-template>\n </td>\n </tr>\n\n <!-- Expanded Sub Items -->\n <ng-container *ngIf=\"expandable && rowSelectors.get(item[rowId])?.value\">\n <tr *ngFor=\"let subItem of item[subItemsProp]\">\n <td\n *ngFor=\"let column of tableColumns\"\n class=\"web-view\"\n [columnType]=\"column.valueType\"\n [value]=\"subItem[column.property]\"\n (click)=\"propagateItemClick(subItem, column.preventDefaultClickEvent)\"\n >\n <ng-container *ngIf=\"customRowTemplates.get(column.property) as tdTemplate; else defaultTdTemplate\">\n <ng-template *ngTemplateOutlet=\"tdTemplate; context: { $implicit: subItem }\">\n </ng-template>\n </ng-container>\n <ng-template #defaultTdTemplate>\n {{ subItem[column.property] }}\n </ng-template>\n </td>\n\n <td\n class=\"mobile-view\"\n [attr.colspan]=\"tableColumns.length\"\n (click)=\"propagateItemClick(subItem)\"\n >\n <dl class=\"mobile-view-field-wrap\">\n <ng-container *ngFor=\"let column of tableColumns\">\n <div\n *ngIf=\"!column.hidePropertyOnMobile\"\n class=\"mobile-view-field\"\n [columnType]=\"column.valueType\"\n [value]=\"subItem[column.property]\"\n >\n <dt *ngIf=\"!column.hideLabelOnMobile\">\n <ng-container *transloco=\"let t\">\n {{ t(column.label ?? '') }}\n </ng-container>\n </dt>\n <dd [ngStyle]=\"column.boldTextOnMobile ? { 'font-weight': '500' } : {'font-weight': '400'}\">\n <ng-container *ngIf=\"customRowTemplates.get(column.property) as tdTemplate; else defaultTdTemplate\">\n <ng-template *ngTemplateOutlet=\"tdTemplate; context: { $implicit: subItem }\"></ng-template>\n </ng-container>\n <ng-template #defaultTdTemplate>\n {{ subItem[column.property] }}\n </ng-template>\n </dd>\n <ng-content></ng-content>\n </div>\n </ng-container>\n </dl>\n <span\n role=\"button\"\n tabindex=\"0\"\n class=\"nav-chevron-field\"\n [attr.aria-expanded]=\"rowSelectors.get(item[rowId])?.value\"\n >\n <svg\n width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M20 9L12 17L4 9\"\n stroke=\"currentColor\"\n stroke-width=\"1.6\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </span>\n </td>\n </tr>\n </ng-container>\n\n <!-- Custom appended rows -->\n <ng-container *ngIf=\"appendedRowsTemplateRef as trTemplate\">\n <!-- Cannot infer trTemplate as TemplateRef therefore null -->\n <ng-container\n *ngTemplateOutlet=\"trTemplate || null; context: { $implicit: item }\"\n >\n </ng-container>\n </ng-container>\n </ng-container>\n </tbody>\n\n <!-- Table footer -->\n <tfoot *ngIf=\"customFooterTemplateRef as trTemplate\">\n <!-- Cannot infer trTemplate as TemplateRef therefore null -->\n <ng-container *ngTemplateOutlet=\"trTemplate || null\"> </ng-container>\n </tfoot>\n</table>\n", styles: ["::ng-deep .gds-table{--gds-ref-pallet-base100: #f8f8f8;--gds-ref-pallet-base600: hsl(0, 0%, 53%);--sg-table-header-background: #1a1a1a;--sg-table-header-color: #fff;--sg-table-cell-padding-x: .5rem;--sg-table-cell-padding-y: .6875rem;--sg-table-border-width: 1px;--sg-table-border-color: var(--gds-ref-pallet-base300);--sg-table-sort-icon-color: var(--gds-ref-pallet-base600);--gds-ref-pallet-base500: hsl(0, 0%, 68%);--sg-table-sort-icon-color-active: #fff;--gds-sys-color-surface: #fff;--gds-ref-pallet-base200: #e8e8e8;--gds-sys-color-base: #333;--gds-sys-shape-corner-small: .125rem;--gds-sys-color-blue-dark-2: #007ac7;--gds-sys-shape-corner-medium: .25rem;--sg-table-row-expand-font-weight: 500;--sg-table-row-expand-font-weight-light: 400;border-collapse:collapse;border-bottom:var(--sg-table-border-width) solid var(--gds-sys-color-base-300);width:100%;border-bottom:none;--gds-comp-checkbox-container-height: 1rem;--gds-comp-checkbox-container-width: 1rem;--gds-comp-checkbox-container-color: var(--gds-sys-color-background-primary);--gds-comp-checkbox-container-color-disabled: var(--gds-sys-color-base-300);--gds-comp-checkbox-border-color: var(--gds-sys-color-base-900);--gds-comp-checkbox-border-radius: var(--gds-sys-shape-corner-small);--gds-comp-checkbox-hover-border-color: var(--gds-sys-color-base-600);--gds-comp-checkbox-container-color-selected: var(--gds-sys-color-base-900);--gds-comp-checkbox-border-color-selected: var(--gds-sys-color-text-inverted);--gds-comp-checkbox-border-color-focus: var(--gds-sys-color-dark-blue-2)}::ng-deep .gds-table thead tr th{background:#333;color:var(--sg-table-header-color);padding:.3rem var(--sg-table-cell-padding-x);text-align:left;font-weight:500}::ng-deep .gds-table thead tr th.icon-invert.sg-sortable .sg-table-sort:after{margin-left:0;margin-right:.3rem;order:-1}::ng-deep .gds-table thead tr th .sg-table-sort{color:inherit;width:100%;text-align:left;display:flex;align-items:center;border-radius:.125rem;--gds-sys-color-focus-outline: $_header-color}::ng-deep .gds-table thead tr th .sg-table-sort:focus:not(:focus-visible){box-shadow:none;outline:0}::ng-deep .gds-table thead tr th .sg-table-sort:focus,::ng-deep .gds-table thead tr th .sg-table-sort:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}::ng-deep .gds-table thead tr th[aria-sort] .sg-table-sort:after,::ng-deep .gds-table thead tr th.sg-sortable .sg-table-sort:after{content:\"\";background:var(--gds-sys-color-base-500);-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='12'%20height='12'%20viewBox='0%200%2012%2012'%20fill='none'%3E%3Cpath%20d='M11.107%205.86147L10.6429%205.39741C10.5328%205.28726%2010.3546%205.28726%2010.2445%205.39741L6.60933%209.03257V1.03101C6.60933%200.876318%206.48276%200.749756%206.32808%200.749756H5.67183C5.51714%200.749756%205.39058%200.876318%205.39058%201.03101V9.03257L1.75542%205.39741C1.64526%205.28726%201.46714%205.28726%201.35698%205.39741L0.89292%205.86147C0.782764%205.97163%200.782764%206.14976%200.89292%206.25991L5.80073%2011.1677C5.91089%2011.2779%206.08901%2011.2779%206.19917%2011.1677L11.107%206.25991C11.2171%206.14976%2011.2171%205.97163%2011.107%205.86147Z'%20fill='%23ADADAD'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='12'%20height='12'%20viewBox='0%200%2012%2012'%20fill='none'%3E%3Cpath%20d='M11.107%205.86147L10.6429%205.39741C10.5328%205.28726%2010.3546%205.28726%2010.2445%205.39741L6.60933%209.03257V1.03101C6.60933%200.876318%206.48276%200.749756%206.32808%200.749756H5.67183C5.51714%200.749756%205.39058%200.876318%205.39058%201.03101V9.03257L1.75542%205.39741C1.64526%205.28726%201.46714%205.28726%201.35698%205.39741L0.89292%205.86147C0.782764%205.97163%200.782764%206.14976%200.89292%206.25991L5.80073%2011.1677C5.91089%2011.2779%206.08901%2011.2779%206.19917%2011.1677L11.107%206.25991C11.2171%206.14976%2011.2171%205.97163%2011.107%205.86147Z'%20fill='%23ADADAD'/%3E%3C/svg%3E\");-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:right;mask-position:right;width:12px;height:12px;margin-left:.3rem}::ng-deep .gds-table thead tr th[aria-sort=ascending] .sg-table-sort:after{background:var(--sg-table-sort-icon-color-active);transform:rotate(180deg)}::ng-deep .gds-table thead tr th[aria-sort=descending] .sg-table-sort:after{background:var(--sg-table-sort-icon-color-active)}::ng-deep .gds-table tbody tr td,::ng-deep .gds-table tbody tr th{border-top:var(--sg-table-border-width) solid var(--gds-sys-color-base-300);padding:var(--sg-table-cell-padding-y) var(--sg-table-cell-padding-x);vertical-align:top}::ng-deep .gds-table tbody tr.collapsible~.sub-row{display:none}::ng-deep .gds-table tbody tr.collapsible.expanded~.sub-row.show{display:table-row}::ng-deep .gds-table tbody tr td.collapse-control,::ng-deep .gds-table tbody tr td.select-control{width:15px}::ng-deep .gds-table tbody tr td.collapse-control>.collapse-btn{min-height:unset;padding:0;background:transparent}::ng-deep .gds-table tbody tr td.collapse-control>.collapse-btn>.icon-holder{cursor:pointer;width:12px}::ng-deep .gds-table tbody tr td.collapse-control>.collapse-btn>.icon-holder svg{width:12px;fill:#868686}::ng-deep .gds-table tbody tr td.collapse-control>.collapse-btn>.icon-holder svg[name=angle-right]{width:9px}@media (max-width: 36em){::ng-deep .gds-table.table-mobile{width:100%;table-layout:fixed;border-bottom:none}::ng-deep .gds-table.table-mobile thead{position:sticky;top:0;display:block;background:#333}}@media (max-width: 36em) and (hover: none) and (pointer: coarse){::ng-deep .gds-table.table-mobile thead{display:table-header-group}}@media (max-width: 36em){::ng-deep .gds-table.table-mobile thead tr{display:flex;overflow:auto}::ng-deep .gds-table.table-mobile thead tr::-webkit-scrollbar{display:none}::ng-deep .gds-table.table-mobile thead tr th{flex:auto;text-align:left!important;white-space:nowrap}::ng-deep .gds-table.table-mobile tbody tr{display:flex;flex-direction:column;border-bottom:var(--sg-table-border-width) solid var(--gds-sys-color-base-300)}::ng-deep .gds-table.table-mobile tbody tr td{display:flex;justify-content:space-between;align-items:center;border-top:none!important}::ng-deep .gds-table.table-mobile tbody tr td:before{content:attr(data-label);font-weight:700}}::ng-deep .gds-table .web-view{display:table-cell}::ng-deep .gds-table .mobile-view{display:none}::ng-deep .gds-table tr:hover td{background-color:var(--gds-ref-pallet-base100)}::ng-deep .gds-table .gds-table__numeric-col{text-align:right}::ng-deep .gds-table thead tr th.gds-table__numeric-col .sg-table-sort{justify-content:end}::ng-deep .gds-table th button{background-color:#0000;border:0;font-family:inherit;font-size:inherit;font-weight:inherit;padding:0;cursor:pointer}::ng-deep .gds-table tbody{border-bottom:var(--sg-table-border-width) solid var(--sg-table-border-color)}::ng-deep .gds-table td{cursor:pointer}::ng-deep .gds-table tfoot{border-top:1px solid;border-bottom:none;font-weight:var(--sg-table-row-expand-font-weight, 500)}::ng-deep .gds-table tfoot ::ng-deep td{padding:var(--sg-table-cell-padding-y) var(--sg-table-cell-padding-x)}::ng-deep .gds-table th.column__check{height:vanilla-px-to-rem(32px);width:vanilla-px-to-rem(40px)}::ng-deep .gds-table th.column__check div{min-height:100%}::ng-deep .gds-table th.column__check input:checked+label:after{top:.6rem;display:inline}::ng-deep .gds-table th.column__check label{display:inline;padding:0}::ng-deep .gds-table th.column__check label:before{top:.55rem}::ng-deep .gds-table td.column__check{width:vanilla-px-to-rem(40px)}::ng-deep .gds-table td.column__check div{min-height:unset}::ng-deep .gds-table td.column__check label{padding:0}::ng-deep .gds-table td.column__check label:before{margin:0}::ng-deep .gds-table tr.row__expand{background-color:var(--gds-ref-pallet-base100)}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap{display:flex;flex-wrap:nowrap}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap.no-sub-items{padding-left:1.5rem}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap .chevron-field{width:1.5rem}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap .chevron-field svg{transition:transform .3s ease}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap .chevron-field[aria-expanded=true] svg{transform:rotate(-180deg)}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap .gds-item-field-text{padding-left:.2rem}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap .gds-item-field-text .gds-item-field-extra-label{font-weight:var(--sg-table-row-expand-font-weight-light, 400)}::ng-deep .gds-table tr.row__expand td{font-weight:var(--sg-table-row-expand-font-weight, 500)}::ng-deep .gds-table label.form-control input[type=checkbox]{cursor:pointer;height:0;opacity:0;position:absolute;width:0;z-index:-1}::ng-deep .gds-table label.form-control{align-items:flex-start}::ng-deep .gds-table label.form-control:has(input[type=checkbox]){padding:.6875rem 1rem .5625rem}::ng-deep .gds-table label.form-control:has(input[type=checkbox]:focus-visible):focus:not(:focus-visible){box-shadow:none;outline:0}::ng-deep .gds-table label.form-control:has(input[type=checkbox]:focus-visible):focus,::ng-deep .gds-table label.form-control:has(input[type=checkbox]:focus-visible):focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}::ng-deep .gds-table label.form-control input[type=checkbox]~i{margin-right:.75rem;margin-top:.0625rem;flex-shrink:0;box-shadow:inset 0 0 0 1px var(--gds-sys-color-text-primary);position:relative;border-radius:var(--gds-sys-shape-corner-small);background-color:transparent;flex:0 0 auto;height:1rem;width:1rem}::ng-deep .gds-table label.form-control input[type=checkbox]:not(:checked):focus-visible~i{box-shadow:inset 0 0 0 1px var(--gds-sys-color-base-900)}::ng-deep .gds-table label.form-control:hover input[type=checkbox]:not(.disabled,:disabled,:checked,:indeterminate)~i{background-color:var(--gds-sys-color-base-200)}::ng-deep .gds-table label.form-control input[type=checkbox]:checked~i{background-color:var(--gds-sys-color-base-900)}::ng-deep .gds-table label.form-control input[type=checkbox]:indeterminate~i{background-color:var(--gds-sys-color-base-900)}::ng-deep .gds-table label.form-control input[type=checkbox]:indeterminate~i:after{border-bottom:2px solid var(--gds-sys-color-background-primary);border-left:none;transform:scale(1) rotate(0);opacity:1}::ng-deep .gds-table label.form-control:has(input[type=checkbox].is-invalid){border:.0625rem solid var(--gds-sys-color-text-error);margin-bottom:.5rem}::ng-deep .gds-table .is-invalid label.form-control:has(input[type=checkbox].is-invalid){border:none;margin:0}@supports (-moz-appearance: none){::ng-deep .gds-table label.form-control.is-invalid{border:.0625rem solid var(--gds-sys-color-text-error);margin-bottom:.5rem}::ng-deep .gds-table .is-invalid label.form-control.is-invalid{border:none;margin:0}}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled~i,::ng-deep .gds-table label.form-control input[type=checkbox].disabled~i{background:var(--sg-form-control-bg-disabled)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed;box-shadow:inset 0 0 0 1px var(--border-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled~i::placeholder,::ng-deep .gds-table label.form-control input[type=checkbox].disabled~i::placeholder{color:var(--text-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled:checked~i,::ng-deep .gds-table label.form-control input[type=checkbox].disabled:checked~i{background:var(--sg-form-control-bg-disabled)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed;box-shadow:inset 0 0 0 1px var(--border-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled:checked~i::placeholder,::ng-deep .gds-table label.form-control input[type=checkbox].disabled:checked~i::placeholder{color:var(--text-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled:checked~i:after,::ng-deep .gds-table label.form-control input[type=checkbox].disabled:checked~i:after{border-color:var(--border-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled~span,::ng-deep .gds-table label.form-control input[type=checkbox].disabled~span{color:var(--text-disabled-color)!important;cursor:not-allowed}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled~span::placeholder,::ng-deep .gds-table label.form-control input[type=checkbox].disabled~span::placeholder{color:var(--text-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]~i:after{content:\"\";opacity:0;position:absolute}::ng-deep .gds-table label.form-control input[type=checkbox]~i:after{border-bottom:3px solid var(--gds-sys-color-text-inverted);border-left:3px solid var(--gds-sys-color-text-inverted);height:.5rem;width:1rem;left:0;top:.1875rem;transform:scale(.601) rotate(-45deg);transform-origin:center}::ng-deep .gds-table label.form-control input[type=checkbox]:checked~i:after{opacity:1}::ng-deep .gds-table .gds-field-checkbox-wrap .form-control:has(input[type=checkbox]){padding:.75rem 1rem;border:1px solid transparent;border-radius:var(--gds-sys-shape-corner-medium);align-items:center;cursor:pointer;display:flex;flex-direction:row-reverse;font:inherit;justify-content:flex-end;position:relative;user-select:none;-webkit-user-select:none;line-height:1.125rem;padding:0}::ng-deep .gds-table .gds-field-checkbox-wrap .form-control:has(input[type=checkbox]):has(input:disabled){cursor:not-allowed}::ng-deep .gds-table #thead-checkbox input[type=checkbox]~i{box-shadow:inset 0 0 0 1px var(--gds-comp-checkbox-container-color);background-color:var(--gds-comp-checkbox-border-color)}::ng-deep .gds-table #thead-checkbox:has(input[type=checkbox]:focus-visible):focus-within{outline-color:var(--sg-table-header-color)}::ng-deep .gds-table #thead-checkbox input[type=checkbox]:hover:not(:checked)~i{box-shadow:inset 0 0 0 1px #ababab}::ng-deep .gds-table #thead-checkbox input[type=checkbox]:hover:not(:checked)~i:after{border-color:#ababab}::ng-deep .gds-table #thead-checkbox input[type=checkbox]:hover:checked~i{background-color:var(--gds-comp-checkbox-border-color);box-shadow:inset 0 0 0 1px #ababab}::ng-deep .gds-table #thead-checkbox input[type=checkbox]:hover:checked~i:after{border-color:#ababab}@media screen and (max-width: 600px){.gds-table thead{display:none}.gds-table .row__expand td:not(:first-child){display:none}.gds-table .row__expand td{display:table-cell}.gds-table .web-view{display:none}.gds-table .mobile-view{display:flex;align-items:center}.gds-table .mobile-view .mobile-view-field-wrap{display:grid;grid-template-columns:1fr 1fr;width:100%}.gds-table .mobile-view .mobile-view-field-wrap .mobile-view-field{display:flex;flex-direction:column;padding-bottom:.3rem}.gds-table .mobile-view .mobile-view-field-wrap .mobile-view-field:nth-child(odd){justify-self:start;align-items:start;text-align:start}.gds-table .mobile-view .mobile-view-field-wrap .mobile-view-field:nth-child(2n){align-items:end;justify-self:end;text-align:end}.gds-table .mobile-view .nav-chevron-field{width:1.5rem;padding-left:.5rem}.gds-table .mobile-view .nav-chevron-field svg{transition:transform .3s ease}.gds-table .mobile-view .nav-chevron-field[aria-expanded=true] svg{transform:rotate(-90deg)}.gds-table .mobile-view .settings-field{width:1.5rem;padding:0 1rem}.gds-table .mobile-view .settings-field svg{transition:all .3s ease}.gds-table .mobile-view .settings-field:hover svg{fill:var(--gds-sys-color-blue-dark-2)}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "directive", type: i4.TableDirective, selector: "[columnType]", inputs: ["columnType", "sortable", "sortOrder", "value", "thook"] }, { kind: "pipe", type: i5.TrThookPipe, name: "trThook" }] }); }
376
- }
377
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableComponent, decorators: [{
378
- type: Component,
379
- args: [{ selector: 'nggv-table', template: "<ng-template #sortableThTemplate let-column>\n <button class=\"sg-table-sort\" *transloco=\"let t\">\n <ng-template #thButtonTemplate>\n {{ t(column.label ?? '') }}\n </ng-template>\n <ng-container\n *ngIf=\"\n customHeaderTemplates.get(column.property) as thTemplate;\n else thButtonTemplate\n \"\n >\n <ng-template\n *ngTemplateOutlet=\"thTemplate || null; context: { $implicit: column }\"\n >\n </ng-template>\n </ng-container>\n </button>\n</ng-template>\n\n<ng-template #notSortableThTemplate let-column>\n <ng-template #defaultThTemplate>\n <ng-container *transloco=\"let t\">\n {{ t(column.label ?? '') }}\n </ng-container>\n </ng-template>\n <ng-container\n *ngIf=\"\n customHeaderTemplates.get(column.property) as thTemplate;\n else defaultThTemplate\n \"\n >\n <ng-template\n *ngTemplateOutlet=\"thTemplate || null; context: { $implicit: column }\"\n >\n </ng-template>\n </ng-container>\n</ng-template>\n<table class=\"gds-table\" *transloco=\"let t\">\n <!-- Table header -->\n <thead>\n <tr>\n <!-- Checkbox column for header -->\n <th *ngIf=\"selectable\" class=\"column__check\">\n <div class=\"gds-field-checkbox-wrap\">\n <label\n [attr.for]=\"'cb_header__' + initId\"\n class=\"form-control\"\n id=\"thead-checkbox\"\n >\n <input\n type=\"checkbox\"\n [formControl]=\"groupSelector\"\n [attr.aria-label]=\"ariaLabelCheckboxTh\"\n [attr.id]=\"'cb_header__' + initId\"\n [attr.data-thook]=\"thook\"\n />\n <i></i>\n </label>\n </div>\n </th>\n\n <!-- Other columns -->\n <th\n *ngFor=\"let column of tableColumns\"\n [columnType]=\"column.valueType\"\n [sortable]=\"column.sortable\"\n [sortOrder]=\"column.order\"\n [thook]=\"'column-header-' + !!column.property\"\n (click)=\"toggleSortOrder(column)\"\n (keydown.space)=\"toggleSortOrderWithSpace($event, column)\"\n [attr.aria-label]=\"getAriaLabel(column)\"\n [attr.aria-sort]=\"column.order + 'ending'\"\n >\n <ng-container *ngIf=\"column.sortable\">\n <ng-container\n *ngTemplateOutlet=\"\n sortableThTemplate;\n context: { $implicit: column, column: column }\n \"\n >\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!column.sortable\">\n <ng-container\n *ngTemplateOutlet=\"\n notSortableThTemplate;\n context: { $implicit: column, column: column }\n \"\n >\n </ng-container>\n </ng-container>\n </th>\n </tr>\n </thead>\n\n <!-- Table body -->\n <tbody [formGroup]=\"rowSelectors\">\n <ng-container *ngFor=\"let item of tableData; let i = index\">\n <tr\n [class.row__expand]=\"expandable\"\n [attr.data-thook]=\"item | trThook: i : trThookFn\"\n [attr.data-hasrowspan]=\"hasRowSpan(item)\"\n >\n <!-- Checkbox column for row -->\n <td *ngIf=\"selectable\" class=\"column__check\">\n <div\n *ngIf=\"!hiddenCheckboxRowIds.includes(item[rowId])\"\n class=\"gds-field-checkbox-wrap\"\n >\n <label\n [attr.for]=\"'cb_row__' + initId + '_' + i\"\n class=\"form-control\"\n >\n <input\n *ngIf=\"rowSelectors.get(item[rowId])\"\n type=\"checkbox\"\n [formControlName]=\"item[rowId]\"\n [attr.aria-label]=\"ariaLabelCheckboxTr\"\n [attr.id]=\"'cb_row__' + initId + '_' + i\"\n [attr.data-thook]=\"'row-select-' + i\"\n />\n <i></i>\n </label>\n </div>\n </td>\n\n <!-- Other columns -->\n <td\n *ngFor=\"let column of tableColumns; let i = index\"\n [columnType]=\"column.valueType\"\n [value]=\"item[column.property]\"\n (click)=\"propagateItemClick(item, column.preventDefaultClickEvent)\"\n >\n <ng-container *ngIf=\"expandable && i === 0; else nonExpandableTemplate\">\n <div\n class=\"gds-item-field-wrap\"\n [ngClass]=\"{ 'no-sub-items': item.subItems.length === 0 }\"\n >\n <span\n *ngIf=\"item.subItems.length > 0\"\n role=\"button\"\n tabindex=\"0\"\n class=\"chevron-field\"\n [attr.aria-expanded]=\"rowSelectors.get(item[rowId])?.value\"\n >\n <svg\n width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M20 9L12 17L4 9\"\n stroke=\"currentColor\"\n stroke-width=\"1.6\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </span>\n <span class=\"gds-item-field-text\">\n {{ item[column.property] }} ({{ item.subItems.length }})\n <div *ngIf=\"column.columnLabel\" class=\"gds-item-field-extra-label\">\n {{ item[column.columnLabel] }}\n </div>\n </span>\n </div>\n </ng-container>\n\n <ng-template #nonExpandableTemplate>\n <ng-container *ngIf=\"customRowTemplates.get(column.property) as tdTemplate; else defaultTdTemplate\">\n <ng-template *ngTemplateOutlet=\"tdTemplate; context: { $implicit: item }\">\n </ng-template>\n </ng-container>\n <ng-template #defaultTdTemplate>\n {{ item[column.property] }}\n </ng-template>\n </ng-template>\n </td>\n </tr>\n\n <!-- Expanded Sub Items -->\n <ng-container *ngIf=\"expandable && rowSelectors.get(item[rowId])?.value\">\n <tr *ngFor=\"let subItem of item[subItemsProp]\">\n <td\n *ngFor=\"let column of tableColumns\"\n class=\"web-view\"\n [columnType]=\"column.valueType\"\n [value]=\"subItem[column.property]\"\n (click)=\"propagateItemClick(subItem, column.preventDefaultClickEvent)\"\n >\n <ng-container *ngIf=\"customRowTemplates.get(column.property) as tdTemplate; else defaultTdTemplate\">\n <ng-template *ngTemplateOutlet=\"tdTemplate; context: { $implicit: subItem }\">\n </ng-template>\n </ng-container>\n <ng-template #defaultTdTemplate>\n {{ subItem[column.property] }}\n </ng-template>\n </td>\n\n <td\n class=\"mobile-view\"\n [attr.colspan]=\"tableColumns.length\"\n (click)=\"propagateItemClick(subItem)\"\n >\n <dl class=\"mobile-view-field-wrap\">\n <ng-container *ngFor=\"let column of tableColumns\">\n <div\n *ngIf=\"!column.hidePropertyOnMobile\"\n class=\"mobile-view-field\"\n [columnType]=\"column.valueType\"\n [value]=\"subItem[column.property]\"\n >\n <dt *ngIf=\"!column.hideLabelOnMobile\">\n <ng-container *transloco=\"let t\">\n {{ t(column.label ?? '') }}\n </ng-container>\n </dt>\n <dd [ngStyle]=\"column.boldTextOnMobile ? { 'font-weight': '500' } : {'font-weight': '400'}\">\n <ng-container *ngIf=\"customRowTemplates.get(column.property) as tdTemplate; else defaultTdTemplate\">\n <ng-template *ngTemplateOutlet=\"tdTemplate; context: { $implicit: subItem }\"></ng-template>\n </ng-container>\n <ng-template #defaultTdTemplate>\n {{ subItem[column.property] }}\n </ng-template>\n </dd>\n <ng-content></ng-content>\n </div>\n </ng-container>\n </dl>\n <span\n role=\"button\"\n tabindex=\"0\"\n class=\"nav-chevron-field\"\n [attr.aria-expanded]=\"rowSelectors.get(item[rowId])?.value\"\n >\n <svg\n width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M20 9L12 17L4 9\"\n stroke=\"currentColor\"\n stroke-width=\"1.6\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </span>\n </td>\n </tr>\n </ng-container>\n\n <!-- Custom appended rows -->\n <ng-container *ngIf=\"appendedRowsTemplateRef as trTemplate\">\n <!-- Cannot infer trTemplate as TemplateRef therefore null -->\n <ng-container\n *ngTemplateOutlet=\"trTemplate || null; context: { $implicit: item }\"\n >\n </ng-container>\n </ng-container>\n </ng-container>\n </tbody>\n\n <!-- Table footer -->\n <tfoot *ngIf=\"customFooterTemplateRef as trTemplate\">\n <!-- Cannot infer trTemplate as TemplateRef therefore null -->\n <ng-container *ngTemplateOutlet=\"trTemplate || null\"> </ng-container>\n </tfoot>\n</table>\n", styles: ["::ng-deep .gds-table{--gds-ref-pallet-base100: #f8f8f8;--gds-ref-pallet-base600: hsl(0, 0%, 53%);--sg-table-header-background: #1a1a1a;--sg-table-header-color: #fff;--sg-table-cell-padding-x: .5rem;--sg-table-cell-padding-y: .6875rem;--sg-table-border-width: 1px;--sg-table-border-color: var(--gds-ref-pallet-base300);--sg-table-sort-icon-color: var(--gds-ref-pallet-base600);--gds-ref-pallet-base500: hsl(0, 0%, 68%);--sg-table-sort-icon-color-active: #fff;--gds-sys-color-surface: #fff;--gds-ref-pallet-base200: #e8e8e8;--gds-sys-color-base: #333;--gds-sys-shape-corner-small: .125rem;--gds-sys-color-blue-dark-2: #007ac7;--gds-sys-shape-corner-medium: .25rem;--sg-table-row-expand-font-weight: 500;--sg-table-row-expand-font-weight-light: 400;border-collapse:collapse;border-bottom:var(--sg-table-border-width) solid var(--gds-sys-color-base-300);width:100%;border-bottom:none;--gds-comp-checkbox-container-height: 1rem;--gds-comp-checkbox-container-width: 1rem;--gds-comp-checkbox-container-color: var(--gds-sys-color-background-primary);--gds-comp-checkbox-container-color-disabled: var(--gds-sys-color-base-300);--gds-comp-checkbox-border-color: var(--gds-sys-color-base-900);--gds-comp-checkbox-border-radius: var(--gds-sys-shape-corner-small);--gds-comp-checkbox-hover-border-color: var(--gds-sys-color-base-600);--gds-comp-checkbox-container-color-selected: var(--gds-sys-color-base-900);--gds-comp-checkbox-border-color-selected: var(--gds-sys-color-text-inverted);--gds-comp-checkbox-border-color-focus: var(--gds-sys-color-dark-blue-2)}::ng-deep .gds-table thead tr th{background:#333;color:var(--sg-table-header-color);padding:.3rem var(--sg-table-cell-padding-x);text-align:left;font-weight:500}::ng-deep .gds-table thead tr th.icon-invert.sg-sortable .sg-table-sort:after{margin-left:0;margin-right:.3rem;order:-1}::ng-deep .gds-table thead tr th .sg-table-sort{color:inherit;width:100%;text-align:left;display:flex;align-items:center;border-radius:.125rem;--gds-sys-color-focus-outline: $_header-color}::ng-deep .gds-table thead tr th .sg-table-sort:focus:not(:focus-visible){box-shadow:none;outline:0}::ng-deep .gds-table thead tr th .sg-table-sort:focus,::ng-deep .gds-table thead tr th .sg-table-sort:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}::ng-deep .gds-table thead tr th[aria-sort] .sg-table-sort:after,::ng-deep .gds-table thead tr th.sg-sortable .sg-table-sort:after{content:\"\";background:var(--gds-sys-color-base-500);-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='12'%20height='12'%20viewBox='0%200%2012%2012'%20fill='none'%3E%3Cpath%20d='M11.107%205.86147L10.6429%205.39741C10.5328%205.28726%2010.3546%205.28726%2010.2445%205.39741L6.60933%209.03257V1.03101C6.60933%200.876318%206.48276%200.749756%206.32808%200.749756H5.67183C5.51714%200.749756%205.39058%200.876318%205.39058%201.03101V9.03257L1.75542%205.39741C1.64526%205.28726%201.46714%205.28726%201.35698%205.39741L0.89292%205.86147C0.782764%205.97163%200.782764%206.14976%200.89292%206.25991L5.80073%2011.1677C5.91089%2011.2779%206.08901%2011.2779%206.19917%2011.1677L11.107%206.25991C11.2171%206.14976%2011.2171%205.97163%2011.107%205.86147Z'%20fill='%23ADADAD'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='12'%20height='12'%20viewBox='0%200%2012%2012'%20fill='none'%3E%3Cpath%20d='M11.107%205.86147L10.6429%205.39741C10.5328%205.28726%2010.3546%205.28726%2010.2445%205.39741L6.60933%209.03257V1.03101C6.60933%200.876318%206.48276%200.749756%206.32808%200.749756H5.67183C5.51714%200.749756%205.39058%200.876318%205.39058%201.03101V9.03257L1.75542%205.39741C1.64526%205.28726%201.46714%205.28726%201.35698%205.39741L0.89292%205.86147C0.782764%205.97163%200.782764%206.14976%200.89292%206.25991L5.80073%2011.1677C5.91089%2011.2779%206.08901%2011.2779%206.19917%2011.1677L11.107%206.25991C11.2171%206.14976%2011.2171%205.97163%2011.107%205.86147Z'%20fill='%23ADADAD'/%3E%3C/svg%3E\");-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:right;mask-position:right;width:12px;height:12px;margin-left:.3rem}::ng-deep .gds-table thead tr th[aria-sort=ascending] .sg-table-sort:after{background:var(--sg-table-sort-icon-color-active);transform:rotate(180deg)}::ng-deep .gds-table thead tr th[aria-sort=descending] .sg-table-sort:after{background:var(--sg-table-sort-icon-color-active)}::ng-deep .gds-table tbody tr td,::ng-deep .gds-table tbody tr th{border-top:var(--sg-table-border-width) solid var(--gds-sys-color-base-300);padding:var(--sg-table-cell-padding-y) var(--sg-table-cell-padding-x);vertical-align:top}::ng-deep .gds-table tbody tr.collapsible~.sub-row{display:none}::ng-deep .gds-table tbody tr.collapsible.expanded~.sub-row.show{display:table-row}::ng-deep .gds-table tbody tr td.collapse-control,::ng-deep .gds-table tbody tr td.select-control{width:15px}::ng-deep .gds-table tbody tr td.collapse-control>.collapse-btn{min-height:unset;padding:0;background:transparent}::ng-deep .gds-table tbody tr td.collapse-control>.collapse-btn>.icon-holder{cursor:pointer;width:12px}::ng-deep .gds-table tbody tr td.collapse-control>.collapse-btn>.icon-holder svg{width:12px;fill:#868686}::ng-deep .gds-table tbody tr td.collapse-control>.collapse-btn>.icon-holder svg[name=angle-right]{width:9px}@media (max-width: 36em){::ng-deep .gds-table.table-mobile{width:100%;table-layout:fixed;border-bottom:none}::ng-deep .gds-table.table-mobile thead{position:sticky;top:0;display:block;background:#333}}@media (max-width: 36em) and (hover: none) and (pointer: coarse){::ng-deep .gds-table.table-mobile thead{display:table-header-group}}@media (max-width: 36em){::ng-deep .gds-table.table-mobile thead tr{display:flex;overflow:auto}::ng-deep .gds-table.table-mobile thead tr::-webkit-scrollbar{display:none}::ng-deep .gds-table.table-mobile thead tr th{flex:auto;text-align:left!important;white-space:nowrap}::ng-deep .gds-table.table-mobile tbody tr{display:flex;flex-direction:column;border-bottom:var(--sg-table-border-width) solid var(--gds-sys-color-base-300)}::ng-deep .gds-table.table-mobile tbody tr td{display:flex;justify-content:space-between;align-items:center;border-top:none!important}::ng-deep .gds-table.table-mobile tbody tr td:before{content:attr(data-label);font-weight:700}}::ng-deep .gds-table .web-view{display:table-cell}::ng-deep .gds-table .mobile-view{display:none}::ng-deep .gds-table tr:hover td{background-color:var(--gds-ref-pallet-base100)}::ng-deep .gds-table .gds-table__numeric-col{text-align:right}::ng-deep .gds-table thead tr th.gds-table__numeric-col .sg-table-sort{justify-content:end}::ng-deep .gds-table th button{background-color:#0000;border:0;font-family:inherit;font-size:inherit;font-weight:inherit;padding:0;cursor:pointer}::ng-deep .gds-table tbody{border-bottom:var(--sg-table-border-width) solid var(--sg-table-border-color)}::ng-deep .gds-table td{cursor:pointer}::ng-deep .gds-table tfoot{border-top:1px solid;border-bottom:none;font-weight:var(--sg-table-row-expand-font-weight, 500)}::ng-deep .gds-table tfoot ::ng-deep td{padding:var(--sg-table-cell-padding-y) var(--sg-table-cell-padding-x)}::ng-deep .gds-table th.column__check{height:vanilla-px-to-rem(32px);width:vanilla-px-to-rem(40px)}::ng-deep .gds-table th.column__check div{min-height:100%}::ng-deep .gds-table th.column__check input:checked+label:after{top:.6rem;display:inline}::ng-deep .gds-table th.column__check label{display:inline;padding:0}::ng-deep .gds-table th.column__check label:before{top:.55rem}::ng-deep .gds-table td.column__check{width:vanilla-px-to-rem(40px)}::ng-deep .gds-table td.column__check div{min-height:unset}::ng-deep .gds-table td.column__check label{padding:0}::ng-deep .gds-table td.column__check label:before{margin:0}::ng-deep .gds-table tr.row__expand{background-color:var(--gds-ref-pallet-base100)}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap{display:flex;flex-wrap:nowrap}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap.no-sub-items{padding-left:1.5rem}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap .chevron-field{width:1.5rem}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap .chevron-field svg{transition:transform .3s ease}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap .chevron-field[aria-expanded=true] svg{transform:rotate(-180deg)}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap .gds-item-field-text{padding-left:.2rem}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap .gds-item-field-text .gds-item-field-extra-label{font-weight:var(--sg-table-row-expand-font-weight-light, 400)}::ng-deep .gds-table tr.row__expand td{font-weight:var(--sg-table-row-expand-font-weight, 500)}::ng-deep .gds-table label.form-control input[type=checkbox]{cursor:pointer;height:0;opacity:0;position:absolute;width:0;z-index:-1}::ng-deep .gds-table label.form-control{align-items:flex-start}::ng-deep .gds-table label.form-control:has(input[type=checkbox]){padding:.6875rem 1rem .5625rem}::ng-deep .gds-table label.form-control:has(input[type=checkbox]:focus-visible):focus:not(:focus-visible){box-shadow:none;outline:0}::ng-deep .gds-table label.form-control:has(input[type=checkbox]:focus-visible):focus,::ng-deep .gds-table label.form-control:has(input[type=checkbox]:focus-visible):focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}::ng-deep .gds-table label.form-control input[type=checkbox]~i{margin-right:.75rem;margin-top:.0625rem;flex-shrink:0;box-shadow:inset 0 0 0 1px var(--gds-sys-color-text-primary);position:relative;border-radius:var(--gds-sys-shape-corner-small);background-color:transparent;flex:0 0 auto;height:1rem;width:1rem}::ng-deep .gds-table label.form-control input[type=checkbox]:not(:checked):focus-visible~i{box-shadow:inset 0 0 0 1px var(--gds-sys-color-base-900)}::ng-deep .gds-table label.form-control:hover input[type=checkbox]:not(.disabled,:disabled,:checked,:indeterminate)~i{background-color:var(--gds-sys-color-base-200)}::ng-deep .gds-table label.form-control input[type=checkbox]:checked~i{background-color:var(--gds-sys-color-base-900)}::ng-deep .gds-table label.form-control input[type=checkbox]:indeterminate~i{background-color:var(--gds-sys-color-base-900)}::ng-deep .gds-table label.form-control input[type=checkbox]:indeterminate~i:after{border-bottom:2px solid var(--gds-sys-color-background-primary);border-left:none;transform:scale(1) rotate(0);opacity:1}::ng-deep .gds-table label.form-control:has(input[type=checkbox].is-invalid){border:.0625rem solid var(--gds-sys-color-text-error);margin-bottom:.5rem}::ng-deep .gds-table .is-invalid label.form-control:has(input[type=checkbox].is-invalid){border:none;margin:0}@supports (-moz-appearance: none){::ng-deep .gds-table label.form-control.is-invalid{border:.0625rem solid var(--gds-sys-color-text-error);margin-bottom:.5rem}::ng-deep .gds-table .is-invalid label.form-control.is-invalid{border:none;margin:0}}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled~i,::ng-deep .gds-table label.form-control input[type=checkbox].disabled~i{background:var(--sg-form-control-bg-disabled)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed;box-shadow:inset 0 0 0 1px var(--border-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled~i::placeholder,::ng-deep .gds-table label.form-control input[type=checkbox].disabled~i::placeholder{color:var(--text-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled:checked~i,::ng-deep .gds-table label.form-control input[type=checkbox].disabled:checked~i{background:var(--sg-form-control-bg-disabled)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed;box-shadow:inset 0 0 0 1px var(--border-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled:checked~i::placeholder,::ng-deep .gds-table label.form-control input[type=checkbox].disabled:checked~i::placeholder{color:var(--text-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled:checked~i:after,::ng-deep .gds-table label.form-control input[type=checkbox].disabled:checked~i:after{border-color:var(--border-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled~span,::ng-deep .gds-table label.form-control input[type=checkbox].disabled~span{color:var(--text-disabled-color)!important;cursor:not-allowed}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled~span::placeholder,::ng-deep .gds-table label.form-control input[type=checkbox].disabled~span::placeholder{color:var(--text-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]~i:after{content:\"\";opacity:0;position:absolute}::ng-deep .gds-table label.form-control input[type=checkbox]~i:after{border-bottom:3px solid var(--gds-sys-color-text-inverted);border-left:3px solid var(--gds-sys-color-text-inverted);height:.5rem;width:1rem;left:0;top:.1875rem;transform:scale(.601) rotate(-45deg);transform-origin:center}::ng-deep .gds-table label.form-control input[type=checkbox]:checked~i:after{opacity:1}::ng-deep .gds-table .gds-field-checkbox-wrap .form-control:has(input[type=checkbox]){padding:.75rem 1rem;border:1px solid transparent;border-radius:var(--gds-sys-shape-corner-medium);align-items:center;cursor:pointer;display:flex;flex-direction:row-reverse;font:inherit;justify-content:flex-end;position:relative;user-select:none;-webkit-user-select:none;line-height:1.125rem;padding:0}::ng-deep .gds-table .gds-field-checkbox-wrap .form-control:has(input[type=checkbox]):has(input:disabled){cursor:not-allowed}::ng-deep .gds-table #thead-checkbox input[type=checkbox]~i{box-shadow:inset 0 0 0 1px var(--gds-comp-checkbox-container-color);background-color:var(--gds-comp-checkbox-border-color)}::ng-deep .gds-table #thead-checkbox:has(input[type=checkbox]:focus-visible):focus-within{outline-color:var(--sg-table-header-color)}::ng-deep .gds-table #thead-checkbox input[type=checkbox]:hover:not(:checked)~i{box-shadow:inset 0 0 0 1px #ababab}::ng-deep .gds-table #thead-checkbox input[type=checkbox]:hover:not(:checked)~i:after{border-color:#ababab}::ng-deep .gds-table #thead-checkbox input[type=checkbox]:hover:checked~i{background-color:var(--gds-comp-checkbox-border-color);box-shadow:inset 0 0 0 1px #ababab}::ng-deep .gds-table #thead-checkbox input[type=checkbox]:hover:checked~i:after{border-color:#ababab}@media screen and (max-width: 600px){.gds-table thead{display:none}.gds-table .row__expand td:not(:first-child){display:none}.gds-table .row__expand td{display:table-cell}.gds-table .web-view{display:none}.gds-table .mobile-view{display:flex;align-items:center}.gds-table .mobile-view .mobile-view-field-wrap{display:grid;grid-template-columns:1fr 1fr;width:100%}.gds-table .mobile-view .mobile-view-field-wrap .mobile-view-field{display:flex;flex-direction:column;padding-bottom:.3rem}.gds-table .mobile-view .mobile-view-field-wrap .mobile-view-field:nth-child(odd){justify-self:start;align-items:start;text-align:start}.gds-table .mobile-view .mobile-view-field-wrap .mobile-view-field:nth-child(2n){align-items:end;justify-self:end;text-align:end}.gds-table .mobile-view .nav-chevron-field{width:1.5rem;padding-left:.5rem}.gds-table .mobile-view .nav-chevron-field svg{transition:transform .3s ease}.gds-table .mobile-view .nav-chevron-field[aria-expanded=true] svg{transform:rotate(-90deg)}.gds-table .mobile-view .settings-field{width:1.5rem;padding:0 1rem}.gds-table .mobile-view .settings-field svg{transition:all .3s ease}.gds-table .mobile-view .settings-field:hover svg{fill:var(--gds-sys-color-blue-dark-2)}}\n"] }]
380
- }], propDecorators: { customTemplates: [{
381
- type: ContentChildren,
382
- args: [TableTemplateDirective, { descendants: true }]
383
- }], appendedRowsTemplate: [{
384
- type: ContentChild,
385
- args: [TableAppendableRowsTemplateDirective]
386
- }], customFooterTemplate: [{
387
- type: ContentChild,
388
- args: [TableFooterTemplateDirective]
389
- }], ngvRowClick: [{
390
- type: Output
391
- }], ngvRowSelect: [{
392
- type: Output
393
- }], ngvOrderBy: [{
394
- type: Output
395
- }], tableColumns: [{
396
- type: Input
397
- }], tableData: [{
398
- type: Input
399
- }], rowId: [{
400
- type: Input
401
- }], hasRowSpan: [{
402
- type: Input
403
- }], selectable: [{
404
- type: Input
405
- }], hiddenCheckboxRowIds: [{
406
- type: Input
407
- }], expandable: [{
408
- type: Input
409
- }], expandedByDefault: [{
410
- type: Input
411
- }], subItemsProp: [{
412
- type: Input
413
- }], allowLocalSort: [{
414
- type: Input
415
- }], thook: [{
416
- type: Input
417
- }], trThookFn: [{
418
- type: Input
419
- }], ariaLabelCheckboxTh: [{
420
- type: Input
421
- }], ariaLabelCheckboxTr: [{
422
- type: Input
423
- }], ariaLabelsOrderBy: [{
424
- type: Input
425
- }] } });
426
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy92LWFuZ3VsYXIvdGFibGUvdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy92LWFuZ3VsYXIvdGFibGUvdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUNOLFNBQVMsR0FHVixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUVyRSxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRWxELE9BQU8sRUFDTCxvQ0FBb0MsRUFDcEMsNEJBQTRCLEVBQzVCLHNCQUFzQixHQUN2QixNQUFNLG1CQUFtQixDQUFBO0FBTzFCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUE7Ozs7Ozs7QUFFekUsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFBO0FBRXBCLFNBQVMsaUJBQWlCLENBQUMsUUFBdUI7SUFDaEQsTUFBTSxXQUFXLEdBQTJCLEVBQUUsQ0FBQTtJQUM5QyxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksUUFBUSxFQUFFLENBQUM7UUFDcEMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQTtJQUMxQixDQUFDO0lBQ0QsT0FBTyxXQUFXLENBQUE7QUFDcEIsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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SztnQkFHRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBR0csaUJBQWlCO3NCQUF6QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgVW50eXBlZEZvcm1Db250cm9sLCBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcblxuaW1wb3J0IHtcbiAgVGFibGVBcHBlbmRhYmxlUm93c1RlbXBsYXRlRGlyZWN0aXZlLFxuICBUYWJsZUZvb3RlclRlbXBsYXRlRGlyZWN0aXZlLFxuICBUYWJsZVRlbXBsYXRlRGlyZWN0aXZlLFxufSBmcm9tICcuL3RhYmxlLmRpcmVjdGl2ZSdcbmltcG9ydCB7XG4gIGFyaWFMYWJlbHNPcmRlckJ5LFxuICBPcmRlckJ5LFxuICBUYWJsZUNvbHVtbixcbiAgVGFibGVSb3csXG59IGZyb20gJy4vdGFibGUubW9kZWxzJ1xuaW1wb3J0IHsgb3JkZXJCeUFzY2VuZGluZywgb3JkZXJCeURlc2NlbmRpbmcsIHBpY2sgfSBmcm9tICcuL3RhYmxlLnRvb2xzJ1xuXG5sZXQgc3RhdGljSW5pdElkID0gMFxuXG5mdW5jdGlvbiBvYmplY3RGcm9tRW50cmllcyhlbnRyeU1hcDogTWFwPGFueSwgYW55Pik6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICBjb25zdCBmcm9tRW50cmllczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIGVudHJ5TWFwKSB7XG4gICAgZnJvbUVudHJpZXNba2V5XSA9IHZhbHVlXG4gIH1cbiAgcmV0dXJuIGZyb21FbnRyaWVzXG59XG5cbi8qKlxuICogQSB0YWJsZSBjb21wb25lbnQgd2l0aCBidWlsdC1pbiBzb3J0aW5nIGFuZCBzZWxlY3RpbmcgZnVuY3Rpb25hbGl0eS5cbiAqIEJ5IGRlZmF1bHQsIHRhYmxlIGNlbGxzIChpLmUuIGA8dGQ+YCBlbGVtZW50cykgYW5kIHRhYmxlIGhlYWRlcnMgKGkuZS4gYDx0aD5gIGVsZW1lbnRzKSBhcmUgcG9wdWxhdGVkIHdpdGggdGV4dCBvbmx5IHZhbHVlcy5cbiAqXG4gKiBUbyBjdXN0b21pemUgdGhlIGNvbnRlbnRzIG9mIGVpdGhlciB0aGUgYDx0ZD5gIG9yIGA8dGg+YCBlbGVtZW50cyAobGlrZSBhZGRpbmcgY29sb3IsIGljb25zLCBmb3JtIGZpZWxkcywgZXh0cmEgcGFkZGluZyBldGMuKSwgcHJvdmlkZVxuICogdGhlIGN1c3RvbWl6ZWQgY29udGVudCB3aXRoaW4gYSBgPG5nLXRlbXBsYXRlPmAtdGFnLCBhbmQgcGxhY2UgdGhlIG5nLXRlbXBsYXRlIGluIHRoZSBodG1sIGJldHdlZW4gdGhlIHN0YXJ0IGFuZCBlbmRpbmcgdGFnIG9mXG4gKiB0aGUgYDxuZ2d2LXRhYmxlPmAuIEFkZCBhIGB0YWJsZUNvbHVtbmAtYXR0cmlidXRlIHRvIHRoZSBgPG5nLXRlbXBsYXRlPmAtZWxlbWVudCwgYW5kIHNldCB0aGUgdmFsdWUgdG8gdGhlIHNwZWNpZmljIGNvbHVtbiBwcm9wZXJ0eS5cbiAqIFNldCBgdGFibGVDb2x1bW5UYXJnZXRgIHRvIGVpdGhlciBgdGhgLCBgdGRgIG9yIGBib3RoYCAoZGVmYXVsdCkgZGVwZW5kaW5nIG9uIHRhcmdldCBlbGVtZW50IHR5cGUuXG4gKiBUaGUgZW50aXJlIHJvdyBmcm9tIHRoZSBgQElucHV0KCkgdGFibGVEYXRhYCBpcyBhdmFpbGFibGUgZnJvbSB0aGUgY29udGV4dCBgJGltcGxpY2l0YCB2YXJpYWJsZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogPCEtLSBmb3IgdGFibGUgY2VsbHMgaS5lLiB0ZC1lbGVtZW50cyAtLT5cbiAqIDxuZy10ZW1wbGF0ZSB0YWJsZUNvbHVtbj1cInN0YXR1c1wiIHRhYmxlQ29sdW1uVGFyZ2V0PVwidGRcIiBsZXQtbXlEYXRhVmFyPVwiJGltcGxpY2l0XCIgbGV0LXN0YXR1cz1cIiRpbXBsaWNpdC5zdGF0dXNcIj5cbiAqICA8IS0tIG15IGN1c3RvbSBzdGF0dXMgZWxlbWVudCAtLT5cbiAqIDwvbmctdGVtcGxhdGU+XG4gKlxuICogQGV4YW1wbGVcbiAqIDwhLS0gZm9yIHRhYmxlIGhlYWRlcnMgaS5lLiB0aC1lbGVtZW50cyAtLT5cbiAqIDxuZy10ZW1wbGF0ZSB0YWJsZUNvbHVtbj1cInN0YXR1c1wiIHRhYmxlQ29sdW1uVGFyZ2V0PVwidGhcIiBsZXQtbXlEYXRhVmFyPVwiJGltcGxpY2l0XCIgbGV0LXN0YXR1cz1cIiRpbXBsaWNpdC5zdGF0dXNcIj5cbiAqICA8IS0tIG15IGN1c3RvbSBzdGF0dXMgZWxlbWVudCAtLT5cbiAqIDwvbmctdGVtcGxhdGU+XG4gKlxuICogSXQgaXMgcG9zc2libGUgdG8gYWRkIGN1c3RvbSByb3dzIHRoYXQgYXJlIGFwcGVuZGVkIGJlbG93IGRhdGEgcm93LiBVc2UgYDxuZy10ZW1wbGF0ZT5gLXRhZyBhbmQgcGxhY2UgdGhlIG5nLXRlbXBsYXRlIGluIHRoZSBodG1sIGJldHdlZW4gdGhlIHN0YXJ0IGFuZCBlbmRpbmcgdGFnIG9mXG4gKiB0aGUgYDxuZ2d2LXRhYmxlPmAuIEFkZCBhIGB0YWJsZUFwcGVuZGFibGVSb3dzYC1hdHRyaWJ1dGUgdG8gdGhlIGA8bmctdGVtcGxhdGU+YC1lbGVtZW50LiBBbnkgYHRyYCBlbGVtZW50cyB0aGF0IGV4aXN0IHdpdGhpbiBgPG5nLXRlbXBsYXRlIHRhYmxlQXBwZW5kYWJsZVJvd3M+YCBhbmQgYDwvbmctdGVtcGxhdGU+YCB0YWdzIHdpbGwgYmUgcHV0IGJlbG93IGRhdGEgcm93J3MgYHRyYCBlbGVtZW50IGluIHRoZSB0YWJsZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogPCEtLSBjdXN0b20gYXBwZW5kZWQgcm93cyAtLT5cbiAqIDxuZy10ZW1wbGF0ZSB0YWJsZUFwcGVuZGFibGVSb3dzIGxldC1teURhdGFWYXI9XCIkaW1wbGljaXRcIiBsZXQtc3RhdHVzPVwiJGltcGxpY2l0LnN0YXR1c1wiPlxuICogIDx0cj5cbiAqICAgPCEtLSBmaXJzdCByb3cncyBjb2x1bW5zIC0tPlxuICogIDwvdHI+XG4gKiAgPCEtLSBtb3JlIHJvd3MgaWYgbmVlZGVkIC0tPlxuICogPC9uZy10ZW1wbGF0ZT5cbiAqXG4gKiBJZiBjdXN0b20gc3R5bGluZyBpcyBuZWVkZWQgZm9yIGRhdGEgcm93IHRoYXQgaGFzIGFwcGVuZGVkIHJvd3MsIHlvdSBjYW4gdXNlIGRhdGEgYXR0cmlidXRlIGBkYXRhLWhhc3Jvd3NwYW5gIHRvIGRpc3Rpbmd1aXNoIGl0IGZyb20gZGF0YSByb3cgd2l0aG91dCBhcHBlbmRlZCByb3dzLlxuICogWW91IGNhbiBwYXNzIHlvdXIgb3duIGN1c3RvbSBtZXRob2Qgd2l0aCBjb25kaXRpb25hbCBsb2dpYyB0byBkZWZpbmUgd2hhdCB2YWx1ZSB3aWxsIGJlIHBhc3NlZCB0byBkYXRhLWhhc3Jvd3NwYW4uXG4gKiBJbiBhZGRpdGlvbiwgaGFzUm93U3BhbiBmdW5jdGlvbiBhY2NlcHRzIGl0ZW0gZnJvbSBgQElucHV0KCkgdGFibGVEYXRhYCBhcyBhcmd1bWVudCB3aGljaCBpcyBvZiB0aGUgc2FtZSB0eXBlIGFzIHZhbHVlIHBhc3NlZCB0byBjb250ZXh0IGAkaW1wbGljaXRgIHZhcmlhYmxlLlxuICogSU1QT1JUQU5UOiB1c2UgYXJyb3cgZnVuY3Rpb24gc3R5bGUgZm9yIGRlZmluaW5nIGZ1bmN0aW9uIGluc2lkZSBjb21wb25lbnQsIGkuZS4gYGhhc1Jvd1NwYW4gPSAodmFsdWUpID0+IG91dHB1dDtgLiBJZiByZWd1bGFyIGZ1bmN0aW9uIHdpbGwgYmUgZGVmaW5lZCwgaS5lLiBgaGFzUm93U3Bhbih2YWx1ZSkgeyByZXR1cm4gb3V0cHV0OyB9YCwgYmluZGluZyB3aWxsIG5vdCB3b3JrLlxuICpcbiAqIEBleGFtcGxlXG4gKiA8IS0tIGluc2lkZSBjb21wb25lbnRcbiAqIGNsYXNzIEN1c3RvbUNvbXBvbmVudCB7XG4gKiAgY3VzdG9tSGFzUm93U3BhbkZ1bmN0aW9uID0gKGl0ZW06IEN1c3RvbURhdGFUeXBlKSA9PiBpdGVtLmFwcGVuZGVkUm93c0RhdGEubGVuZ3RoID4gMCA/IHRydWUgOiBmYWxzZTtcbiAqIH1cbiAqIC0tPlxuICogPCEtLSBpbnNpZGUgc3R5bGVzaGVldHNcbiAqIFtkYXRhLWhhc3Jvd3NwYW49XCJ0cnVlXCJdIHtcbiAqICBjb2xvcjogYmx1ZTtcbiAqIH1cbiAqIC5hcHBlbmRlZC1yb3cge1xuICogIGNvbG9yOiBibHVlO1xuICogfVxuICogLS0+XG4gKiA8bmdndi10YWJsZSBbaGFzUm93U3Bhbl09XCJjdXN0b21IYXNSb3dTcGFuRnVuY3Rpb25cIj5cbiAqICA8IS0tIGN1c3RvbSBhcHBlbmRlZCByb3dzIC0tPlxuICogIDxuZy10ZW1wbGF0ZSB0YWJsZUFwcGVuZGFibGVSb3dzIGxldC1hcHBlbmRlZFJvd3NEYXRhPVwiJGltcGxpY2l0LmFwcGVuZGVkUm93c0RhdGFcIj5cbiAqICAgPHRyICpuZ0Zvcj1cImxldCBhcHBlbmRlZFJvd0l0ZW0gb2YgYXBwZW5kZWRSb3dzRGF0YVwiIGNsYXNzPVwiYXBwZW5kZWQtcm93XCI+XG4gKiAgICA8dGQ+e3sgYXBwZW5kZWRSb3dJdGVtIH19PC90ZD5cbiAqICAgIDwhLS0gb3RoZXIgcm93J3MgY29sdW1ucyAtLT5cbiAqICAgPC90cj5cbiAqICA8L25nLXRlbXBsYXRlPlxuICogPC9uZ2d2LXRhYmxlPlxuICpcbiAqIEluIGFkZGl0aW9uLCBpdCBpcyBwb3NzaWJsZSB0byBhZGQgZm9vdGVyIGZvciB0aGUgdGFibGUuIFNpbWlsYXJseSB0byBhZGRpbmcgY3VzdG9tIGNvbHVtbnMsIHVzZSBgPG5nLXRlbXBsYXRlPmAtdGFnIGFuZCBwbGFjZSB0aGUgbmctdGVtcGxhdGUgaW4gdGhlIGh0bWwgYmV0d2VlbiB0aGUgc3RhcnQgYW5kIGVuZGluZyB0YWcgb2ZcbiAqIHRoZSBgPG5nZ3YtdGFibGU+YC4gQWRkIGEgYHRhYmxlRm9vdGVyYC1hdHRyaWJ1dGUgdG8gdGhlIGA8bmctdGVtcGxhdGU+YC1lbGVtZW50LiBBbnkgZWxlbWVudHMgdGhhdCBleGlzdCB3aXRoaW4gYDxuZy10ZW1wbGF0ZSB0YWJsZUZvb3Rlcj5gIGFuZCBgPC9uZy10ZW1wbGF0ZT5gIHRhZ3Mgd2lsbCBiZSBwdXQgdG8gdGZvb3QgZWxlbWVudCBpbnNpZGUgdGhlIHRhYmxlLlxuICpcbiAqIEBleGFtcGxlXG4gKiA8IS0tIGZvciB0YWJsZSBmb290ZXIgaS5lLiB0Zm9vdC1lbGVtZW50IC0tPlxuICogPG5nLXRlbXBsYXRlIHRhYmxlRm9vdGVyPlxuICogIDx0cj5cbiAqICAgPCEtLSBmaXJzdCByb3cncyBjb2x1bW5zIC0tPlxuICogIDwvdHI+XG4gKiAgPCEtLSBtb3JlIHJvd3MgaWYgbmVlZGVkIC0tPlxuICogPC9uZy10ZW1wbGF0ZT5cbiAqXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nZ3YtdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90YWJsZS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUNvbXBvbmVudDxUIGV4dGVuZHMgVGFibGVSb3c+XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogQ3VzdG9tIHRlbXBsYXRlcyBkZWZpbmVkIGluIHRoZSBodG1sLlxuICAgKi9cbiAgQENvbnRlbnRDaGlsZHJlbihUYWJsZVRlbXBsYXRlRGlyZWN0aXZlLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIGN1c3RvbVRlbXBsYXRlcyE6IFF1ZXJ5TGlzdDxUYWJsZVRlbXBsYXRlRGlyZWN0aXZlPGtleW9mIFQ+PlxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogQ3VzdG9tIGFwcGVuZGVkIHJvd3MgdGVtcGxhdGUgZGVmaW5lZCBpbiB0aGUgaHRtbC5cbiAgICovXG4gIEBDb250ZW50Q2hpbGQoVGFibGVBcHBlbmRhYmxlUm93c1RlbXBsYXRlRGlyZWN0aXZlKVxuICBhcHBlbmRlZFJvd3NUZW1wbGF0ZSE6IFRhYmxlQXBwZW5kYWJsZVJvd3NUZW1wbGF0ZURpcmVjdGl2ZVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogQ3VzdG9tIGZvb3RlciB0ZW1wbGF0ZSBkZWZpbmVkIGluIHRoZSBodG1sLlxuICAgKi9cbiAgQENvbnRlbnRDaGlsZChUYWJsZUZvb3RlclRlbXBsYXRlRGlyZWN0aXZlKVxuICBjdXN0b21Gb290ZXJUZW1wbGF0ZSE6IFRhYmxlRm9vdGVyVGVtcGxhdGVEaXJlY3RpdmVcblxuICAvKiogRW1pdHMgdGhlIHRhYmxlIHJvdyB0aGF0IHdhcyBjbGlja2VkLiBXb3JrcyBvbiBhbGwgY29sdW1ucyBpZiBub3QgcHJldmVudERlZmF1bHRFbWl0IGlzIHNldCBmb3IgdGhhdCBjb2x1bW4uICovXG4gIEBPdXRwdXQoKSBuZ3ZSb3dDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8VCB8IGFueT4oKVxuXG4gIC8qKlxuICAgKiBFbWl0cyBjdXJyZW50bHkgc2VsZWN0ZWQgYW5kIGRlc2VsZWN0ZWQgaXRlbXMgaW4gdGhlIHRhYmxlIGFzIGtleS12YWx1ZSBwYWlycy5cbiAgICogVXNlcyBlYWNoIGl0ZW1gcyBpdGVtSWQgYXMga2V5LCBhbmQgYSBib29sZWFuIHZhbHVlIHRvIGRlc2NyaWJlIHNlbGVjdGVkIHN0YXR1cy5cbiAgICovXG4gIEBPdXRwdXQoKSBuZ3ZSb3dTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZ1tdPigpXG5cbiAgLyoqXG4gICAqIEVtaXRzIGV2ZW50IHRvIHNpZ25hbCB0aGF0IHRoZSB0YWJsZSBzaG91bGQgYmUgcmVvcmRlcmVkLlxuICAgKi9cbiAgQE91dHB1dCgpIG5ndk9yZGVyQnkgPSBuZXcgRXZlbnRFbWl0dGVyPE9yZGVyQnk8VD4+KClcblxuICAvKipcbiAgICogQW4gYXJyYXkgb2YgaXRlbXMgZGVzY3JpYmluZyBob3cgdGhlIHRhYmxlIGhlYWRlciBzaG91bGQgYmUgcmVuZGVyZWQsXG4gICAqIHRvZ2V0aGVyIHdpdGggaW5zdHJ1Y3Rpb25zIGZvciBob3cgZWFjaCByb3cgc2hvdWxkIGJlIGRpc3BsYXllZCBpbiB0aGF0IGNvbHVtbi5cbiAgICovXG4gIEBJbnB1dCgpIHRhYmxlQ29sdW1ucyE6IFRhYmxlQ29sdW1uPFQ+W11cblxuICAvKiogRGF0YSBhcnJheSB0byBkaXNwbGF5IGRhdGEgaW4gdGhlIHRhYmxlLiBFYWNoIGl0ZW0gPFQ+IGluIHRoZSBhcnJheSByZXByZXNlbnRzIGEgcm93IGluIHRoZSB0YWJsZS4gKi9cbiAgQElucHV0KCkgdGFibGVEYXRhITogVFtdXG5cbiAgLyoqXG4gICAqIFByb3BlcnR5IG5hbWUgdXNlZCB0byB1bmlxdWVseSBkZXNjcmliZSBlYWNoIGl0ZW0gKGkuZS4gcm93KSBpbiB0aGUgZGF0YSB0YWJsZS5cbiAgICogRGVmYXVsdHMgdG8gXFwnaWRcXCcuXG4gICAqIElzIHJlcXVpcmVkIGlmIHNlbGVjdGFibGUgaXMgdHJ1ZS5cbiAgICovXG4gIEBJbnB1dCgpIHJvd0lkID0gJ2lkJ1xuXG4gIC8qKlxuICAgKiBGdW5jdGlvbidzIHJldHVybiB2YWx1ZSBpcyB1c2VkIGZvciBkYXRhIGF0dHJpYnV0ZSBcXCdkYXRhLWhhc3Jvd3NwYW5cXCcuXG4gICAqIElmIGN1c3RvbSBoYXNSb3dTcGFuIGZ1bmN0aW9uIGlzIG5vdCBwYXNzZWQgdG8gdGhlIHRhYmxlLFxuICAgKiB0aGVuIHRoaXMgZnVuY3Rpb24gcmV0dXJucyB1bmRlZmluZWQgdmFsdWUgYnkgZGVmYXVsdCB3aGljaCByZXN1bHRzIGluIFxcJ2RhdGEtaGFzcm93c3BhblxcJyBhdHRyaWJ1dGUgYmVpbmcgb21pdHRlZCBpbiBodG1sXG4gICAqIChhbmd1bGFyIG9taXRzIGF0dHJpYnV0ZXMgdGhhdCBjb250YWluIG51bGwgb3IgdW5kZWZpbmVkIHZhbHVlKS5cbiAgICogSU1QT1JUQU5UOiB1c2UgYXJyb3cgZnVuY3Rpb24gc3R5bGUgZm9yIGRlZmluaW5nIGZ1bmN0aW9uIGluc2lkZSBjb21wb25lbnQsIGkuZS4gYGhhc1Jvd1NwYW4gPSAodmFsdWUpID0+IG91dHB1dDtgLiBJZiByZWd1bGFyIGZ1bmN0aW9uIHdpbGwgYmUgZGVmaW5lZCwgaS5lLiBgaGFzUm93U3Bhbih2YWx1ZSkgeyByZXR1cm4gb3V0cHV0OyB9YCwgYmluZGluZyB3aWxsIG5vdCB3b3JrLlxuICAgKi9cbiAgQElucHV0KCkgaGFzUm93U3BhbjogKGl0ZW06IFQpID0+IGFueSA9IChfKSA9PiB1bmRlZmluZWRcblxuICAvKipcbiAgICogVXNlZCB0byBlbmFibGUvZGlzYWJsZSB0aGUgbGVmdC1zaWRlIGNoZWNrYm94IGNvbHVtbi5cbiAgICogRGVmYXVsdHMgdG8gdHJ1ZS5cbiAgICovXG4gIEBJbnB1dCgpIHNlbGVjdGFibGUgPSB0cnVlXG5cbiAgLyoqXG4gICAqIEFycmF5IG9mIHJvdyBpZCdzIChhcyBkZWZpbmVkIGJ5IHJvd0lkIHByb3BlcnR5KSB0aGF0IHNob3VsZCBub3QgaGF2ZSBhIGNoZWNrYm94IGV2ZW4gaWYgc2VsZWN0YWJsZSBpcyB0cnVlLlxuICAgKi9cbiAgQElucHV0KCkgaGlkZGVuQ2hlY2tib3hSb3dJZHM6IHN0cmluZ1tdID0gW11cblxuICAvKipcbiAgICogVXNlZCB0byBlbmFibGUvZGlzYWJsZSBleHBhbmRhYmxlIHJvd3MuXG4gICAqIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgKi9cbiAgQElucHV0KCkgZXhwYW5kYWJsZSA9IGZhbHNlXG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gZW5hYmxlL2Rpc2FibGUgdGhlIHJpZ2h0LXNpZGUgZXhwYW5kIGljb24gY29sdW1uLlxuICAgKiBEZWZhdWx0cyB0byB0cnVlLlxuICAgKi9cbiAgQElucHV0KCkgZXhwYW5kZWRCeURlZmF1bHQgPSB0cnVlXG5cbiAgLyoqXG4gICAqIFByb3BlcnR5IG5hbWUgdXNlZCB0byBkZXNjcmliZSB0aGUgc3ViSXRlbXMgaW4gdGhlIGRhdGEgdGFibGUuXG4gICAqL1xuICBASW5wdXQoKSBzdWJJdGVtc1Byb3AgPSAnc3ViSXRlbXMnXG5cbiAgLyoqXG4gICAqIEFsbG93IG5nZ3YtdGFibGUgdG8gYXR0ZW1wdCBzb3J0aW5nIHRoZSBkYXRhIGluIHRoZSB0YWJsZS4gTm90IHJlY29tbWVuZGVkIGlmIG9ubHkgYSBzdWJzZXQgaXMgbG9hZGVkIG9yIGlmIHRoZSBkYXRhc2V0IGlzIHZlcnkgbGFyZ2UuXG4gICAqIERpc2FibGVkIGJ5IGRlZmF1bHQuXG4gICAqL1xuICBASW5wdXQoKSBhbGxvd0xvY2FsU29ydCA9IGZhbHNlXG5cbiAgLyoqIFNwZWNpYWwgcHJvcGVydHkgdXNlZCBmb3Igc2VsZWN0aW5nIERPTSBlbGVtZW50cyBkdXJpbmcgYXV0b21hdGVkIFVJIHRlc3RpbmcuICovXG4gIEBJbnB1dCgpIHRob29rID0gJ3RhYmxlLXNlbGVjdC1hbGwnXG5cbiAgLyoqIEZ1bmN0aW9uIHRvIG92ZXJ3cml0ZSBnZW5lcmF0ZWQgdGhvb2sgZm9yIGVhY2ggcm93LiAqL1xuICBASW5wdXQoKSB0clRob29rRm4/OiAoaXRlbTogVCkgPT4gc3RyaW5nXG5cbiAgLyoqIEFyaWEgbGFiZWwgZm9yIHRoZSBjaGVja2JveCBpbiB0aGUgdGFibGUgaGVhZGVyICovXG4gIEBJbnB1dCgpIGFyaWFMYWJlbENoZWNrYm94VGg/OiBzdHJpbmdcblxuICAvKiogQXJpYSBsYWJlbCBmb3IgdGhlIGNoZWNrYm94IGluIHRoZSB0YWJsZSBoZWFkZXIgKi9cbiAgQElucHV0KCkgYXJpYUxhYmVsQ2hlY2tib3hUcj86IHN0cmluZ1xuXG4gIC8qKiBBcmlhIGxhYmVscyBmb3Igc29ydGluZyBpbiB0aGUgdGFibGUgaGVhZGVyICovXG4gIEBJbnB1dCgpIGFyaWFMYWJlbHNPcmRlckJ5PzogYXJpYUxhYmVsc09yZGVyQnlcblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIEludGVybmFsIGRhdGEgc3RydWN0dXJlIHVzZWQgdG8ga2VlcCB0cmFjayBvZiBhZGRlZCBjb250ZW50IHRlbXBsYXRlcyB1c2VkIGluIHRkIGVsZW1lbnRzLlxuICAgKi9cbiAgY3VzdG9tUm93VGVtcGxhdGVzID0gbmV3IE1hcDxrZXlvZiBULCBUZW1wbGF0ZVJlZjxhbnk+PigpXG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBJbnRlcm5hbCBkYXRhIHN0cnVjdHVyZSB1c2VkIHRvIGtlZXAgdHJhY2sgb2YgYWRkZWQgY29udGVudCB0ZW1wbGF0ZXMgdXNlZCBpbiB0aCBlbGVtZW50cy5cbiAgICovXG4gIGN1c3RvbUhlYWRlclRlbXBsYXRlcyA9IG5ldyBNYXA8a2V5b2YgVCwgVGVtcGxhdGVSZWY8YW55Pj4oKVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogSW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmUgdXNlZCB0byBob2xkIGN1c3RvbSBhcHBlbmRlZCByb3dzIGkuZS4gdHIgZWxlbWVudHMgKHJvd3MpLlxuICAgKi9cbiAgYXBwZW5kZWRSb3dzVGVtcGxhdGVSZWYhOiBUZW1wbGF0ZVJlZjxhbnk+XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBJbnRlcm5hbCBkYXRhIHN0cnVjdHVyZSB1c2VkIHRvIGhvbGQgdGZvb3QgZWxlbWVudCBjaGlsZHJlbiBpLmUuIHRyIGVsZW1lbnRzIChyb3dzKS5cbiAgICovXG4gIGN1c3RvbUZvb3RlclRlbXBsYXRlUmVmITogVGVtcGxhdGVSZWY8YW55PlxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogSW5jcmVtZW50YWwgaWQuXG4gICAqL1xuICBpbml0SWQhOiBudW1iZXJcblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIEZvcm1Hcm91cCBjb250YWluaW5nIGFsbCByb3cgaWRcXCdzIGFzIGNvbnRyb2xzLCBhbmQgd2hldGhlciB0aGVzZSBhcmUgc2VsZWN0ZWQgb3Igbm90IGFzIHZhbHVlcy5cbiAgICovXG4gIHJvd1NlbGVjdG9yczogVW50eXBlZEZvcm1Hcm91cCA9IG5ldyBVbnR5cGVkRm9ybUdyb3VwKHt9KVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogTWFzdGVyIHNlbGVjdG9yIGZvciBzZWxlY3Rpbmcgb3IgZGVzZWxlY3RpbmcgYWxsIHJvdyBzZWxlY3RvcnMuXG4gICAqL1xuICBncm91cFNlbGVjdG9yOiBVbnR5cGVkRm9ybUNvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKGZhbHNlKVxuXG4gIHByaXZhdGUgc2VsZWN0ZWQ6IHN0cmluZ1tdID0gW11cbiAgcHJpdmF0ZSBzdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdXG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIC8vIFVwZGF0ZSBzZWxlY3RhYmxlIG9yIGV4cGFuZGFibGUgcm93cyBpZiB0YWJsZSBkYXRhIG9yIHNldHRpbmdzIGNoYW5nZVxuICAgIGlmIChcbiAgICAgICh0aGlzLnNlbGVjdGFibGUgfHwgdGhpcy5leHBhbmRhYmxlKSAmJiBjaGFuZ2VzLnRhYmxlRGF0YT8uY3VycmVudFZhbHVlIHx8XG4gICAgICAoY2hhbmdlcy5zZWxlY3RhYmxlPy5jdXJyZW50VmFsdWUgfHwgY2hhbmdlcy5leHBhbmRhYmxlPy5jdXJyZW50VmFsdWUpICYmIHRoaXMudGFibGVEYXRhXG4gICAgKSB7XG4gICAgICBjb25zdCB3YXNDaGFuZ2VkID0gdGhpcy5yZWdpc3RlclNlbGVjdGFibGVSb3dzKFxuICAgICAgICBjaGFuZ2VzLnRhYmxlRGF0YS5jdXJyZW50VmFsdWUsXG4gICAgICApXG4gICAgICBpZiAod2FzQ2hhbmdlZCAmJiAhdGhpcy5zdWJzLmxlbmd0aCkge1xuICAgICAgICAvLyBmaXJzdCB0aW1lIHRoaXMgaXMgcnVuXG4gICAgICAgIGNvbnN0IGdyb3VwU2VsZWN0b3JTdWIgPSB0aGlzLmdyb3VwVmFsdWVTdWJzY3JpcHRpb25cbiAgICAgICAgY29uc3Qgcm93U2VsZWN0b3JTdWIgPSB0aGlzLnJvd1ZhbHVlU3Vic2NyaXB0aW9uXG4gICAgICAgIHRoaXMuc3Vicy5wdXNoKGdyb3VwU2VsZWN0b3JTdWIsIHJvd1NlbGVjdG9yU3ViKVxuICAgICAgfSBlbHNlIGlmICh3YXNDaGFuZ2VkKSB7XG4gICAgICAgIHRoaXMucm93U2VsZWN0b3JzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIHNvcnQgYW55IGluY29taW5nIGRhdGFcbiAgICBpZiAoXG4gICAgICB0aGlzLmFsbG93TG9jYWxTb3J0ICYmXG4gICAgICAoY2hhbmdlcy50YWJsZURhdGE/LmN1cnJlbnRWYWx1ZSB8fCBjaGFuZ2VzLnRhYmxlQ29sdW1ucz8uY3VycmVudFZhbHVlKVxuICAgICkge1xuICAgICAgY29uc3Qgb3JkZXJlZEJ5Q29sdW1uOiBUYWJsZUNvbHVtbjxUPiB8IHVuZGVmaW5lZCA9XG4gICAgICAgIHRoaXMudGFibGVDb2x1bW5zPy5maW5kKChlbCkgPT4gZWwub3JkZXIgIT09IHVuZGVmaW5lZClcbiAgICAgIGlmIChvcmRlcmVkQnlDb2x1bW4pIHRoaXMuc29ydEl0ZW1zQnkob3JkZXJlZEJ5Q29sdW1uKVxuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdElkID0gc3RhdGljSW5pdElkKytcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAvLyBpZiBhbnkgY3VzdG9tIHRlbXBsYXRlcyB3ZXJlIGRlZmluZWQgaW4gdGhlIHRlbXBsYXRlXG4gICAgaWYgKHRoaXMuY3VzdG9tVGVtcGxhdGVzLmxlbmd0aCkge1xuICAgICAgLy8gZm9yIGVhY2ggdGVtcGxhdGUgZm91bmRcbiAgICAgIHRoaXMuY3VzdG9tVGVtcGxhdGVzLm1hcCgodGFibGVUZW1wbGF0ZSkgPT4ge1xuICAgICAgICAvLyBpZiB0YXJnZXQgaXMgZWl0aGVyICd0ZCcgb3IgJ2JvdGgnXG4gICAgICAgIGlmIChcbiAgICAgICAgICBbJ3RkJywgJ2JvdGgnXS5pbmNsdWRlcyh0YWJsZVRlbXBsYXRlLnRhYmxlQ29sdW1uVGFyZ2V0IGFzIHN0cmluZylcbiAgICAgICAgKSB7XG4gICAgICAgICAgLy8gYWRkIHRvIGN1c3RvbSByb3cgdGVtcGxhdGVzXG4gICAgICAgICAgdGhpcy5jdXN0b21Sb3dUZW1wbGF0ZXMuc2V0KFxuICAgICAgICAgICAgdGFibGVUZW1wbGF0ZS50YWJsZUNvbHVtbixcbiAgICAgICAgICAgIHRhYmxlVGVtcGxhdGUudGVtcGxhdGVSZWYsXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICAgIC8vIGlmIHRhcmdldCBpcyBlaXRoZXIgJ3RoJyBvciAnYm90aCdcbiAgICAgICAgaWYgKFxuICAgICAgICAgIFsndGgnLCAnYm90aCddLmluY2x1ZGVzKHRhYmxlVGVtcGxhdGUudGFibGVDb2x1bW5UYXJnZXQgYXMgc3RyaW5nKVxuICAgICAgICApIHtcbiAgICAgICAgICAvLyBhZGQgdG8gY3VzdG9tIGhlYWRlciB0ZW1wbGF0ZXNcbiAgICAgICAgICB0aGlzLmN1c3RvbUhlYWRlclRlbXBsYXRlcy5zZXQoXG4gICAgICAgICAgICB0YWJsZVRlbXBsYXRlLnRhYmxlQ29sdW1uLFxuICAgICAgICAgICAgdGFibGVUZW1wbGF0ZS50ZW1wbGF0ZVJlZixcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gaWYgYXBwZW5kZWQgcm93cycgdGVtcGxhdGUgaXMgZGVmaW5lZCBpbiB0aGUgdGVtcGxhdGVcbiAgICBpZiAodGhpcy5hcHBlbmRlZFJvd3NUZW1wbGF0ZSkge1xuICAgICAgLy8gc2V0IHRlbXBsYXRlUmVmIG9mIGFwcGVuZGVkIHJvd3MnIHRlbXBsYXRlIHRvIHZhcmlhYmxlXG4gICAgICB0aGlzLmFwcGVuZGVkUm93c1RlbXBsYXRlUmVmID0gdGhpcy5hcHBlbmRlZFJvd3NUZW1wbGF0ZS50ZW1wbGF0ZVJlZlxuICAgIH1cblxuICAgIC8vIGlmIGN1c3RvbSBmb290ZXIgdGVtcGxhdGUgaXMgZGVmaW5lZCBpbiB0aGUgdGVtcGxhdGVcbiAgICBpZiAodGhpcy5jdXN0b21Gb290ZXJUZW1wbGF0ZSkge1xuICAgICAgLy8gc2V0IHRlbXBsYXRlUmVmIG9mIHRhYmxlIGZvb3RlciB0byB2YXJpYWJsZVxuICAgICAgdGhpcy5jdXN0b21Gb290ZXJUZW1wbGF0ZVJlZiA9IHRoaXMuY3VzdG9tRm9vdGVyVGVtcGxhdGUudGVtcGxhdGVSZWZcbiAgICB9XG5cbiAgICAvLyBpZiBleHBhbmRlZEJ5RGVmYXVsdCBpcyB0cnVlLCB0aGVuIGV4cGFuZCBhbGwgcm93c1xuICAgIGlmICh0aGlzLmV4cGFuZGVkQnlEZWZhdWx0ICYmIHRoaXMuZXhwYW5kYWJsZSAmJiB0aGlzLnRhYmxlRGF0YSkge1xuICAgICAgdGhpcy50YWJsZURhdGEuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICB0aGlzLnRvZ2dsZVJvd1RvRXhwYW5kKGl0ZW1bdGhpcy5yb3dJZF0pXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3Vicy5mb3JFYWNoKChzdWIpID0+IHN1Yi51bnN1YnNjcmliZSgpKVxuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBSZXR1cm5zIGEgc3Vic2NyaXB0aW9uIHRvIHRoZSBtYXN0ZXIgc2VsZWN0b3IgY29udHJvbCB0aGF0IGVpdGhlciBzZWxlY3RzIG9yIGRlc2VsZWN0cyBhbGwgcm93IGNvbnRyb2xzLlxuICAgKi9cbiAgZ2V0IGdyb3VwVmFsdWVTdWJzY3JpcHRpb24oKTogU3Vic2NyaXB0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5ncm91cFNlbGVjdG9yLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHZhbHVlOiBib29sZWFuKSA9PiB7XG4gICAgICAgIGNvbnN0IHNlbGVjdE1hcCA9IG5ldyBNYXAoT2JqZWN0LmVudHJpZXModGhpcy5yb3dTZWxlY3RvcnNWYWx1ZSkpXG4gICAgICAgIHNlbGVjdE1hcC5mb3JFYWNoKChfLCBrZXkpID0+IHNlbGVjdE1hcC5zZXQoa2V5LCB2YWx1ZSkpXG4gICAgICAgIGNvbnN0IHBhdGNoVmFsdWUgPSBvYmplY3RGcm9tRW50cmllcyhzZWxlY3RNYXApXG4gICAgICAgIHRoaXMucm93U2VsZWN0b3JzLnBhdGNoVmFsdWUocGF0Y2hWYWx1ZSlcbiAgICAgIH0sXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogUmV0dXJucyBhIHN1YnNjcmlwdGlvbiB0byBhbGwgaW5kaXZpZHVhbCByb3cgc2VsZWN0b3JzIGFuZCB1cGRhdGUgdGhlIG1hc3RlciBzZWxlY3RvciBpZiBhbGwgYXJlIHNlbGVjdGVkLlxuICAgKi9cbiAgZ2V0IHJvd1ZhbHVlU3Vic2NyaXB0aW9uKCk6IFN1YnNjcmlwdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMucm93U2VsZWN0b3JzLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZSgwKSwgLy8gdG8gbGltaXQgdGhlIG51bWJlciBvZiBldmVudHMgYW5kIHRvIHdhaXQgZm9yIGFsbCBzdWIgY29udHJvbHMgdG8gdXBkYXRlXG4gICAgICAgIG1hcCgodmFsOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSkgPT4ge1xuICAgICAgICAgIC8vIGdldCBhIGZpbHRlcmVkIGFycmF5IG9mIGtleXMgZm9yIGFsbCByb3dzIHRoYXQgYXJlIHNlbGVjdGVkXG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSBPYmplY3Qua2V5cyh2YWwpLmZpbHRlcigoa2V5KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdmFsW2tleV0gPT09IHRydWUgJiYgdGhpcy5yb3dTZWxlY3RvcnMuZ2V0KGtleSk/LmVuYWJsZWRcbiAgICAgICAgICB9KVxuICAgICAgICAgIC8vIHJldHVybnMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgb25seSB0aGUgZmlsdGVyZWQga2V5c1xuICAgICAgICAgIHJldHVybiBwaWNrKHNlbGVjdGVkLCB2YWwpXG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6ICh2YWx1ZTogb2JqZWN0KSA9PiB7XG4gICAgICAgICAgLy8gdGhlIG51bWJlciBvZiBzZWxlY3RlZCBrZXlzIGNvbXBhcmVkIHRvIHRoZSB0b3RhbCBudW1iZXIgb2Yga2V5cyBhdmFpbGFibGVcbiAgICAgICAgICBjb25zdCBudW1iZXJPZlNlbGVjdGVkID0gT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aFxuICAgICAgICAgIGNvbnN0IGFsbFNlbGVjdGVkOiBib29sZWFuID1cbiAgICAgICAgICAgIG51bWJlck9mU2VsZWN0ZWQgPiAwXG4gICAgICAgICAgICAgID8gbnVtYmVyT2ZTZWxlY3RlZCA9PT0gT2JqZWN0LmtleXModGhpcy5yb3dTZWxlY3RvcnNWYWx1ZSkubGVuZ3RoXG4gICAgICAgICAgICAgIDogZmFsc2VcbiAgICAgICAgICAvLyB1cGRhdGUgdGhlIG1hc3RlciBzZWxlY3RvciBjb250cm9sXG4gICAgICAgICAgdGhpcy5ncm91cFNlbGVjdG9yLnNldFZhbHVlKGFsbFNlbGVjdGVkLCB7IGVtaXRFdmVudDogZmFsc2UgfSlcbiAgICAgICAgICAvLyB1cGRhdGUgdGhlIGFycmF5IG9mIGN1cnJlbnRseSBzZWxlY3RlZCBpZCdzXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZCA9IE9iamVjdC5rZXlzKHZhbHVlKVxuICAgICAgICAgIC8vIGFuZCBlbWl0IHRoZSB1cGRhdGVkIHZhbHVlXG4gICAgICAgICAgdGhpcy5uZ3ZSb3dTZWxlY3QuZW1pdCh0aGlzLnNlbGVjdGVkKVxuICAgICAgICB9LFxuICAgICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogUmVnaXN0ZXJzIG9yIGRpc2FibGVzIHJvdyBjb250cm9scyBmb3IgbmV3IG9yIHJlbW92ZWQgcm93cy5cbiAgICovXG4gIHJlZ2lzdGVyU2VsZWN0YWJsZVJvd3ModGFibGVEYXRhOiBhbnlbXSk6IGJvb2xlYW4ge1xuICAgIGlmICghdGFibGVEYXRhKSByZXR1cm4gZmFsc2VcbiAgICAvLyBBcnJheSBjb250YWluaW5nIG9ubHkgdGhlIGlkJ3MgZm9yIGVhY2ggcm93XG4gICAgY29uc3QgZGF0YVJvd0lkczogc3RyaW5nW10gPSB0YWJsZURhdGEubWFwKChkYXRhOiBhbnkpID0+IGRhdGFbdGhpcy5yb3dJZF0pXG5cbiAgICAvLyBBcnJheSBjb250YWluaW5nIHRoZSBpZCdzIHRoYXQgaGF2ZSByZWdpc3RlcmVkIGNvbnRyb2xzXG4gICAgY29uc3QgY3VycmVudElkczogc3RyaW5nW10gPSBPYmplY3Qua2V5cyh0aGlzLnJvd1NlbGVjdG9yc1ZhbHVlKVxuXG4gICAgLy8gQXJyYXkgY29udGFpbmluZyBhbGwgaWRzIHRoYXQgbGFja3MgYSBjb3JyZXNwb25kaW5nIGNvbnRyb2wgKGkuZS4gbmV3IHJvd3MpXG4gICAgY29uc3QgbmV3SWRzOiBzdHJpbmdbXSA9IGRhdGFSb3dJZHMuZmlsdGVyKFxuICAgICAgKGlkKSA9PiBjdXJyZW50SWRzLmluZGV4T2YoaWQpID09PSAtMSxcbiAgICApXG5cbiAgICAvLyBBcnJheSBjb250YWluaW5nIGFsbCBpZHMgdGhhdCBoYXMgYSBjb250cm9sIGJ1dCBpcyBubyBsb25nZXIgaW4gdGhlIGRhdGEgc2V0IChpLmUuIHJlbW92ZWQgcm93cylcbiAgICBjb25zdCByZW1vdmVkSWRzOiBzdHJpbmdbXSA9IGN1cnJlbnRJZHMuZmlsdGVyKFxuICAgICAgKGlkKSA9PiBkYXRhUm93SWRzLmluZGV4T2YoaWQpID09PSAtMSxcbiAgICApXG5cbiAgICAvLyBSZWdpc3RlciBuZXcgY29udHJvbHMgZm9yIGFkZGVkIHJvd3NcbiAgICBpZiAobmV3SWRzLmxlbmd0aCkge1xuICAgICAgbmV3SWRzLmZvckVhY2goKGlkKSA9PiB7XG4gICAgICAgIGNvbnN0IGN0cmwgPSB0aGlzLnJvd1NlbGVjdG9ycy5yZWdpc3RlckNvbnRyb2woXG4gICAgICAgICAgaWQsXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbChmYWxzZSksXG4gICAgICAgIClcbiAgICAgICAgaWYgKGN0cmwuZGlzYWJsZWQpIGN0cmwuZW5hYmxlKClcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gU2V0IGFscmVhZHkgcmVnaXN0ZXJlZCBjb250cm9scyB0byBkaXNhYmxlZCBmb3IgcmVtb3ZlZCByb3dzXG4gICAgaWYgKHJlbW92ZWRJZHMubGVuZ3RoKVxuICAgICAgcmVtb3ZlZElkcy5mb3JFYWNoKChpZCkgPT4gdGhpcy5yb3dTZWxlY3RvcnMuZ2V0KGlkKT8uZGlzYWJsZSgpKVxuXG4gICAgcmV0dXJuIG5ld0lkcy5sZW5ndGggPiAwIHx8IHJlbW92ZWRJZHMubGVuZ3RoID4gMFxuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBSZXR1cm5zIGFsbCBlbmFibGVkIHZhbHVlcyB1bmxlc3MgYWxsIHJvd3MgYXJlIGRpc2FibGVkLlxuICAgKi9cbiAgZ2V0IHJvd1NlbGVjdG9yc1ZhbHVlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMucm93U2VsZWN0b3JzLmVuYWJsZWQgPyB0aGlzLnJvd1NlbGVjdG9ycy52YWx1ZSA6IHt9XG4gIH1cblxuICB0b2dnbGVTb3J0T3JkZXJXaXRoU3BhY2UoZXZlbnQ6IGFueSwgY29sdW1uOiBUYWJsZUNvbHVtbjxUPikge1xuICAgIGlmIChjb2x1bW4uc29ydGFibGUpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgIHRoaXMudG9nZ2xlU29ydE9yZGVyKGNvbHVtbilcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIFN3aXRjaGVzIHNvcnRpbmcgb3JkZXIgYmV0d2VlbiBhc2NlbmRpbmcgYW5kIGRlc2NlbmRpbmcgb3JkZXIgZm9yIGEgY29sdW1uLlxuICAgKiBAcGFyYW0gY29sdW1uIHRoZSBjb2x1bW4gdG8gc29ydCByb3dzIGFmdGVyLlxuICAgKi9cbiAgdG9nZ2xlU29ydE9yZGVyKGNvbHVtbjogVGFibGVDb2x1bW48VD4pIHtcbiAgICAvLyBjaGVjayBpZiB0aGUgdGFibGUgaXMgYWxyZWFkeSBzb3J0ZWQgYnkgYW5vdGhlciBjb2x1bW4gdGhhbiB0aGUgb25lIHByb3ZpZGVkXG4gICAgY29uc3QgY3VycmVudGx5T3JkZXJlZEJ5ID0gdGhpcy50YWJsZUNvbHVtbnM/LmZpbmQoXG4gICAgICAoZWwpID0+IGVsICE9PSBjb2x1bW4gJiYgZWwub3JkZXIgIT09IHVuZGVmaW5lZCxcbiAgICApXG4gICAgaWYgKGN1cnJlbnRseU9yZGVyZWRCeSkgZGVsZXRlIGN1cnJlbnRseU9yZGVyZWRCeS5vcmRlclxuICAgIGNvbHVtbi5vcmRlciA9IGNvbHVtbi5vcmRlciA9PT0gJ2Rlc2MnID8gJ2FzYycgOiAnZGVzYydcbiAgICB0aGlzLnNvcnRJdGVtc0J5KGNvbHVtbilcbiAgfVxuXG4gIC8qKiBJZiBzb3J0YWJsZSwgcmVvcmRlcnMgdGhlIHRhYmxlIGRhdGEgdXNpbmcgdGhlIHNwZWNpZmllZCBjb2x1bW4gYXMgb3JkZXJpbmcgYXR0cmlidXRlLiAqL1xuICBzb3J0SXRlbXNCeShjb2x1bW46IFRhYmxlQ29sdW1uPFQ+KTogVGFibGVSb3dbXSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFjb2x1bW4uc29ydGFibGUpIHJldHVyblxuICAgIC8vIGVtaXQgcmUtb3JkZXIgZXZlbnRcbiAgICB0aGlzLm5ndk9yZGVyQnkuZW1pdCh7IHByb3BlcnR5OiBjb2x1bW4ucHJvcGVydHksIG9yZGVyOiBjb2x1bW4ub3JkZXIgfSlcbiAgICAvLyBpZiBsb2NhbCBzb3J0IGlzIGFsbG93ZWQsIHJlb3JkZXIgZGF0YVxuICAgIGlmICghdGhpcy5hbGxvd0xvY2FsU29ydCB8fCAhdGhpcy50YWJsZURhdGEpIHJldHVyblxuICAgIHJldHVybiB0aGlzLnRhYmxlRGF0YS5zb3J0KFxuICAgICAgY29sdW1uLm9yZGVyID09PSAnZGVzYydcbiAgICAgICAgPyBvcmRlckJ5RGVzY2VuZGluZyhjb2x1bW4ucHJvcGVydHkpXG4gICAgICAgIDogb3JkZXJCeUFzY2VuZGluZyhjb2x1bW4ucHJvcGVydHkpLFxuICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogRW1pdHMgcm93IGRhdGEgZm9yIHdoYXQgcm93IHdhcyBjbGlja2VkIGlmIGRlZmF1bHRFbWl0IGlzIGFsbG93ZWQuXG4gICAqL1xuICBwcm9wYWdhdGVJdGVtQ2xpY2soaXRlbTogYW55LCBwcmV2ZW50RGVmYXVsdEVtaXQ/OiBib29sZWFuKSB7XG4gICAgaWYgKCFwcmV2ZW50RGVmYXVsdEVtaXQpIHRoaXMubmd2Um93Q2xpY2suZW1pdChpdGVtKVxuXG4gICAgaWYgKHRoaXMuZXhwYW5kYWJsZSAmJiBpdGVtW3RoaXMuc3ViSXRlbXNQcm9wXSkge1xuICAgICAgdGhpcy50b2dnbGVSb3dUb0V4cGFuZChpdGVtW3RoaXMucm93SWRdKVxuICAgIH1cbiAgfVxuXG4gIGdldEFyaWFMYWJlbChjb2x1bW46IFRhYmxlQ29sdW1uPFQ+KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBzb3J0T3JkZXIgPVxuICAgICAgY29sdW1uLm9yZGVyID09PSAnYXNjJ1xuICAgICAgICA/IHRoaXMuYXJpYUxhYmVsc09yZGVyQnk/LmRlc2NcbiAgICAgICAgOiB0aGlzLmFyaWFMYWJlbHNPcmRlckJ5Py5hc2NcbiAgICBpZiAoIXNvcnRPcmRlcikgcmV0dXJuIC8vIG5vIGFyaWEgbGFiZWxzIGRlZmluZWRcbiAgICByZXR1cm4gY29sdW1uLmFyaWFMYWJlbFNvcnRhYmxlPy5yZXBsYWNlKCd7e3NvcnRPcmRlcn19Jywgc29ydE9yZGVyKVxuICB9XG5cbiAgcHJpdmF0ZSB0b2dnbGVSb3dUb0V4cGFuZChpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qgcm93ID0gdGhpcy5yb3dTZWxlY3RvcnMuZ2V0KGlkKVxuICAgIHJvdz8uc2V0VmFsdWUoIXJvdy52YWx1ZSlcbiAgfVxufVxuIiwiPG5nLXRlbXBsYXRlICNzb3J0YWJsZVRoVGVtcGxhdGUgbGV0LWNvbHVtbj5cbiAgPGJ1dHRvbiBjbGFzcz1cInNnLXRhYmxlLXNvcnRcIiAqdHJhbnNsb2NvPVwibGV0IHRcIj5cbiAgICA8bmctdGVtcGxhdGUgI3RoQnV0dG9uVGVtcGxhdGU+XG4gICAgICB7eyB0KGNvbHVtbi5sYWJlbCA/PyAnJykgfX1cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiXG4gICAgICAgIGN1c3RvbUhlYWRlclRlbXBsYXRlcy5nZXQoY29sdW1uLnByb3BlcnR5KSBhcyB0aFRlbXBsYXRlO1xuICAgICAgICBlbHNlIHRoQnV0dG9uVGVtcGxhdGVcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwidGhUZW1wbGF0ZSB8fCBudWxsOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogY29sdW1uIH1cIlxuICAgICAgPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9idXR0b24+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI25vdFNvcnRhYmxlVGhUZW1wbGF0ZSBsZXQtY29sdW1uPlxuICA8bmctdGVtcGxhdGUgI2RlZmF1bHRUaFRlbXBsYXRlPlxuICAgIDxuZy1jb250YWluZXIgKnRyYW5zbG9jbz1cImxldCB0XCI+XG4gICAgICB7eyB0KGNvbHVtbi5sYWJlbCA/PyAnJykgfX1cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwiXG4gICAgICBjdXN0b21IZWFkZXJUZW1wbGF0ZXMuZ2V0KGNvbHVtbi5wcm9wZXJ0eSkgYXMgdGhUZW1wbGF0ZTtcbiAgICAgIGVsc2UgZGVmYXVsdFRoVGVtcGxhdGVcbiAgICBcIlxuICA+XG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInRoVGVtcGxhdGUgfHwgbnVsbDsgY29udGV4dDogeyAkaW1wbGljaXQ6IGNvbHVtbiB9XCJcbiAgICA+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuPHRhYmxlIGNsYXNzPVwiZ2RzLXRhYmxlXCIgKnRyYW5zbG9jbz1cImxldCB0XCI+XG4gIDwhLS0gVGFibGUgaGVhZGVyIC0tPlxuICA8dGhlYWQ+XG4gICAgPHRyPlxuICAgICAgPCEtLSBDaGVja2JveCBjb2x1bW4gZm9yIGhlYWRlciAtLT5cbiAgICAgIDx0aCAqbmdJZj1cInNlbGVjdGFibGVcIiBjbGFzcz1cImNvbHVtbl9fY2hlY2tcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdkcy1maWVsZC1jaGVja2JveC13cmFwXCI+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBbYXR0ci5mb3JdPVwiJ2NiX2hlYWRlcl9fJyArIGluaXRJZFwiXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICBpZD1cInRoZWFkLWNoZWNrYm94XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImdyb3VwU2VsZWN0b3JcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbENoZWNrYm94VGhcIlxuICAgICAgICAgICAgICBbYXR0ci5pZF09XCInY2JfaGVhZGVyX18nICsgaW5pdElkXCJcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS10aG9va109XCJ0aG9va1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGk+PC9pPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC90aD5cblxuICAgICAgPCEtLSBPdGhlciBjb2x1bW5zIC0tPlxuICAgICAgPHRoXG4gICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgdGFibGVDb2x1bW5zXCJcbiAgICAgICAgW2NvbHVtblR5cGVdPVwiY29sdW1uLnZhbHVlVHlwZVwiXG4gICAgICAgIFtzb3J0YWJsZV09XCJjb2x1bW4uc29ydGFibGVcIlxuICAgICAgICBbc29ydE9yZGVyXT1cImNvbHVtbi5vcmRlclwiXG4gICAgICAgIFt0aG9va109XCInY29sdW1uLWhlYWRlci0nICsgISFjb2x1bW4ucHJvcGVydHlcIlxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlU29ydE9yZGVyKGNvbHVtbilcIlxuICAgICAgICAoa2V5ZG93bi5zcGFjZSk9XCJ0b2dnbGVTb3J0T3JkZXJXaXRoU3BhY2UoJGV2ZW50LCBjb2x1bW4pXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJnZXRBcmlhTGFiZWwoY29sdW1uKVwiXG4gICAgICAgIFthdHRyLmFyaWEtc29ydF09XCJjb2x1bW4ub3JkZXIgKyAnZW5kaW5nJ1wiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4uc29ydGFibGVcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICBzb3J0YWJsZVRoVGVtcGxhdGU7XG4gICAgICAgICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2x1bW4sIGNvbHVtbjogY29sdW1uIH1cbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb2x1bW4uc29ydGFibGVcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICBub3RTb3J0YWJsZVRoVGVtcGxhdGU7XG4gICAgICAgICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2x1bW4sIGNvbHVtbjogY29sdW1uIH1cbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvdGg+XG4gICAgPC90cj5cbiAgPC90aGVhZD5cblxuICA8IS0tIFRhYmxlIGJvZHkgLS0+XG4gIDx0Ym9keSBbZm9ybUdyb3VwXT1cInJvd1NlbGVjdG9yc1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgdGFibGVEYXRhOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICA8dHJcbiAgICAgICAgW2NsYXNzLnJvd19fZXhwYW5kXT1cImV4cGFuZGFibGVcIlxuICAgICAgICBbYXR0ci5kYXRhLXRob29rXT1cIml0ZW0gfCB0clRob29rOiBpIDogdHJUaG9va0ZuXCJcbiAgICAgICAgW2F0dHIuZGF0YS1oYXNyb3dzcGFuXT1cImhhc1Jvd1NwYW4oaXRlbSlcIlxuICAgICAgPlxuICAgICAgICA8IS0tIENoZWNrYm94IGNvbHVtbiBmb3Igcm93IC0tPlxuICAgICAgICA8dGQgKm5nSWY9XCJzZWxlY3RhYmxlXCIgY2xhc3M9XCJjb2x1bW5fX2NoZWNrXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCIhaGlkZGVuQ2hlY2tib3hSb3dJZHMuaW5jbHVkZXMoaXRlbVtyb3dJZF0pXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZ2RzLWZpZWxkLWNoZWNrYm94LXdyYXBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICBbYXR0ci5mb3JdPVwiJ2NiX3Jvd19fJyArIGluaXRJZCArICdfJyArIGlcIlxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICpuZ0lmPVwicm93U2VsZWN0b3JzLmdldChpdGVtW3Jvd0lkXSlcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJpdGVtW3Jvd0lkXVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxDaGVja2JveFRyXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCInY2Jfcm93X18nICsgaW5pdElkICsgJ18nICsgaVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS10aG9va109XCIncm93LXNlbGVjdC0nICsgaVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxpPjwvaT5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGQ+XG5cbiAgICAgICAgPCEtLSBPdGhlciBjb2x1bW5zIC0tPlxuICAgICAgICA8dGRcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIHRhYmxlQ29sdW1uczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgW2NvbHVtblR5cGVdPVwiY29sdW1uLnZhbHVlVHlwZVwiXG4gICAgICAgICAgW3ZhbHVlXT1cIml0ZW1bY29sdW1uLnByb3BlcnR5XVwiXG4gICAgICAgICAgKGNsaWNrKT1cInByb3BhZ2F0ZUl0ZW1DbGljayhpdGVtLCBjb2x1bW4ucHJldmVudERlZmF1bHRDbGlja0V2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImV4cGFuZGFibGUgJiYgaSA9PT0gMDsgZWxzZSBub25FeHBhbmRhYmxlVGVtcGxhdGVcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJnZHMtaXRlbS1maWVsZC13cmFwXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnbm8tc3ViLWl0ZW1zJzogaXRlbS5zdWJJdGVtcy5sZW5ndGggPT09IDAgfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtLnN1Ykl0ZW1zLmxlbmd0aCA+IDBcIlxuICAgICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGV2cm9uLWZpZWxkXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cInJvd1NlbGVjdG9ycy5nZXQoaXRlbVtyb3dJZF0pPy52YWx1ZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICAgICB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgZD1cIk0yMCA5TDEyIDE3TDQgOVwiXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNlwiXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ2RzLWl0ZW0tZmllbGQtdGV4dFwiPlxuICAgICAgICAgICAgICAge3sgaXRlbVtjb2x1bW4ucHJvcGVydHldIH19ICh7eyBpdGVtLnN1Ykl0ZW1zLmxlbmd0aCB9fSlcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY29sdW1uLmNvbHVtbkxhYmVsXCIgY2xhc3M9XCJnZHMtaXRlbS1maWVsZC1leHRyYS1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAge3sgaXRlbVtjb2x1bW4uY29sdW1uTGFiZWxdIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNub25FeHBhbmRhYmxlVGVtcGxhdGU+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tUm93VGVtcGxhdGVzLmdldChjb2x1bW4ucHJvcGVydHkpIGFzIHRkVGVtcGxhdGU7IGVsc2UgZGVmYXVsdFRkVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwidGRUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGl0ZW0gfVwiPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRUZFRlbXBsYXRlPlxuICAgICAgICAgICAgICB7eyBpdGVtW2NvbHVtbi5wcm9wZXJ0eV0gfX1cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvdHI+XG5cbiAgICAgIDwhLS0gRXhwYW5kZWQgU3ViIEl0ZW1zIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImV4cGFuZGFibGUgJiYgcm93U2VsZWN0b3JzLmdldChpdGVtW3Jvd0lkXSk/LnZhbHVlXCI+XG4gICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgc3ViSXRlbSBvZiBpdGVtW3N1Ykl0ZW1zUHJvcF1cIj5cbiAgICAgICAgICA8dGRcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgdGFibGVDb2x1bW5zXCJcbiAgICAgICAgICAgIGNsYXNzPVwid2ViLXZpZXdcIlxuICAgICAgICAgICAgW2NvbHVtblR5cGVdPVwiY29sdW1uLnZhbHVlVHlwZVwiXG4gICAgICAgICAgICBbdmFsdWVdPVwic3ViSXRlbVtjb2x1bW4ucHJvcGVydHldXCJcbiAgICAgICAgICAgIChjbGljayk9XCJwcm9wYWdhdGVJdGVtQ2xpY2soc3ViSXRlbSwgY29sdW1uLnByZXZlbnREZWZhdWx0Q2xpY2tFdmVudClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21Sb3dUZW1wbGF0ZXMuZ2V0KGNvbHVtbi5wcm9wZXJ0eSkgYXMgdGRUZW1wbGF0ZTsgZWxzZSBkZWZhdWx0VGRUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogc3ViSXRlbSB9XCI+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFRkVGVtcGxhdGU+XG4gICAgICAgICAgICAgIHt7IHN1Ykl0ZW1bY29sdW1uLnByb3BlcnR5XSB9fVxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgPHRkXG4gICAgICAgICAgICBjbGFzcz1cIm1vYmlsZS12aWV3XCJcbiAgICAgICAgICAgIFthdHRyLmNvbHNwYW5dPVwidGFibGVDb2x1bW5zLmxlbmd0aFwiXG4gICAgICAgICAgICAoY2xpY2spPVwicHJvcGFnYXRlSXRlbUNsaWNrKHN1Ykl0ZW0pXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGwgY2xhc3M9XCJtb2JpbGUtdmlldy1maWVsZC13cmFwXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiB0YWJsZUNvbHVtbnNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAqbmdJZj1cIiFjb2x1bW4uaGlkZVByb3BlcnR5T25Nb2JpbGVcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtb2JpbGUtdmlldy1maWVsZFwiXG4gICAgICAgICAgICAgICAgICBbY29sdW1uVHlwZV09XCJjb2x1bW4udmFsdWVUeXBlXCJcbiAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJzdWJJdGVtW2NvbHVtbi5wcm9wZXJ0eV1cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkdCAqbmdJZj1cIiFjb2x1bW4uaGlkZUxhYmVsT25Nb2JpbGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqdHJhbnNsb2NvPVwibGV0IHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyB0KGNvbHVtbi5sYWJlbCA/PyAnJykgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L2R0PlxuICAgICAgICAgICAgICAgICAgPGRkIFtuZ1N0eWxlXT1cImNvbHVtbi5ib2xkVGV4dE9uTW9iaWxlID8geyAnZm9udC13ZWlnaHQnOiAnNTAwJyB9IDogeydmb250LXdlaWdodCc6ICc0MDAnfVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tUm93VGVtcGxhdGVzLmdldChjb2x1bW4ucHJvcGVydHkpIGFzIHRkVGVtcGxhdGU7IGVsc2UgZGVmYXVsdFRkVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogc3ViSXRlbSB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFRkVGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAge3sgc3ViSXRlbVtjb2x1bW4ucHJvcGVydHldIH19XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICA8L2RkPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGw+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJuYXYtY2hldnJvbi1maWVsZFwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwicm93U2VsZWN0b3JzLmdldChpdGVtW3Jvd0lkXSk/LnZhbHVlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgZD1cIk0yMCA5TDEyIDE3TDQgOVwiXG4gICAgICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS42XCJcbiAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBDdXN0b20gYXBwZW5kZWQgcm93cyAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhcHBlbmRlZFJvd3NUZW1wbGF0ZVJlZiBhcyB0clRlbXBsYXRlXCI+XG4gICAgICAgIDwhLS0gQ2Fubm90IGluZmVyIHRyVGVtcGxhdGUgYXMgVGVtcGxhdGVSZWYgdGhlcmVmb3JlIG51bGwgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInRyVGVtcGxhdGUgfHwgbnVsbDsgY29udGV4dDogeyAkaW1wbGljaXQ6IGl0ZW0gfVwiXG4gICAgICAgID5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC90Ym9keT5cblxuICA8IS0tIFRhYmxlIGZvb3RlciAtLT5cbiAgPHRmb290ICpuZ0lmPVwiY3VzdG9tRm9vdGVyVGVtcGxhdGVSZWYgYXMgdHJUZW1wbGF0ZVwiPlxuICAgIDwhLS0gQ2Fubm90IGluZmVyIHRyVGVtcGxhdGUgYXMgVGVtcGxhdGVSZWYgdGhlcmVmb3JlIG51bGwgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRyVGVtcGxhdGUgfHwgbnVsbFwiPiA8L25nLWNvbnRhaW5lcj5cbiAgPC90Zm9vdD5cbjwvdGFibGU+XG4iXX0=