@energinet/watt 2.0.13 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (388) hide show
  1. package/badge/energinet-watt-badge.d.ts +5 -0
  2. package/breadcrumbs/energinet-watt-breadcrumbs.d.ts +5 -0
  3. package/button/energinet-watt-button.d.ts +5 -0
  4. package/card/energinet-watt-card.d.ts +5 -0
  5. package/checkbox/energinet-watt-checkbox.d.ts +5 -0
  6. package/chip/energinet-watt-chip.d.ts +5 -0
  7. package/clipboard/energinet-watt-clipboard.d.ts +5 -0
  8. package/code/energinet-watt-code.d.ts +5 -0
  9. package/core/breakpoints/breakpoints-observer.d.ts +1 -19
  10. package/core/breakpoints/energinet-watt-core-breakpoints.d.ts +5 -0
  11. package/core/color/color-helper.service.d.ts +2 -4
  12. package/core/color/energinet-watt-core-color.d.ts +5 -0
  13. package/core/date/energinet-watt-core-date.d.ts +5 -0
  14. package/core/date/watt-locale.service.d.ts +1 -3
  15. package/data/energinet-watt-data.d.ts +5 -0
  16. package/datetime-field/energinet-watt-datetime-field.d.ts +5 -0
  17. package/description-list/energinet-watt-description-list.d.ts +5 -0
  18. package/drawer/energinet-watt-drawer.d.ts +5 -0
  19. package/dropdown/energinet-watt-dropdown.d.ts +5 -0
  20. package/dropzone/energinet-watt-dropzone.d.ts +5 -0
  21. package/empty-state/energinet-watt-empty-state.d.ts +5 -0
  22. package/energinet-watt.d.ts +5 -0
  23. package/esm2022/badge/energinet-watt-badge.js +5 -0
  24. package/esm2022/badge/index.js +20 -0
  25. package/{fesm2022/energinet-watt-badge.mjs → esm2022/badge/watt-badge.component.js} +7 -33
  26. package/esm2022/breadcrumbs/energinet-watt-breadcrumbs.js +5 -0
  27. package/esm2022/breadcrumbs/index.js +20 -0
  28. package/esm2022/breadcrumbs/watt-breadcrumbs.component.js +90 -0
  29. package/esm2022/button/energinet-watt-button.js +5 -0
  30. package/esm2022/button/index.js +20 -0
  31. package/{fesm2022/energinet-watt-button.mjs → esm2022/button/watt-button.component.js} +14 -40
  32. package/esm2022/card/energinet-watt-card.js +5 -0
  33. package/esm2022/card/index.js +21 -0
  34. package/esm2022/card/watt-card-title.component.js +33 -0
  35. package/esm2022/card/watt-card.component.js +61 -0
  36. package/esm2022/checkbox/energinet-watt-checkbox.js +5 -0
  37. package/esm2022/checkbox/index.js +20 -0
  38. package/{fesm2022/energinet-watt-checkbox.mjs → esm2022/checkbox/watt-checkbox.component.js} +9 -35
  39. package/esm2022/chip/energinet-watt-chip.js +5 -0
  40. package/esm2022/chip/index.js +26 -0
  41. package/esm2022/chip/watt-action-chip.component.js +68 -0
  42. package/esm2022/chip/watt-chip.component.js +55 -0
  43. package/esm2022/chip/watt-chip.directive.js +92 -0
  44. package/esm2022/chip/watt-date-chip.component.js +118 -0
  45. package/esm2022/chip/watt-date-range-chip.component.js +240 -0
  46. package/esm2022/chip/watt-filter-chip.component.js +94 -0
  47. package/esm2022/chip/watt-menu-chip.component.js +95 -0
  48. package/esm2022/clipboard/energinet-watt-clipboard.js +5 -0
  49. package/esm2022/clipboard/index.js +21 -0
  50. package/esm2022/clipboard/watt-clipboard-intl.service.js +31 -0
  51. package/esm2022/clipboard/watt-copy-to-clipboard.directive.js +64 -0
  52. package/esm2022/code/energinet-watt-code.js +5 -0
  53. package/esm2022/code/index.js +21 -0
  54. package/esm2022/code/watt-code.component.js +74 -0
  55. package/esm2022/code/watt-code.worker.token.js +21 -0
  56. package/esm2022/core/breakpoints/breakpoints-observer.js +41 -0
  57. package/esm2022/core/breakpoints/breakpoints.js +31 -0
  58. package/esm2022/core/breakpoints/energinet-watt-core-breakpoints.js +5 -0
  59. package/esm2022/core/breakpoints/index.js +21 -0
  60. package/esm2022/core/color/color-helper.service.js +41 -0
  61. package/esm2022/core/color/colors.js +58 -0
  62. package/esm2022/core/color/energinet-watt-core-color.js +5 -0
  63. package/esm2022/core/color/index.js +21 -0
  64. package/esm2022/core/date/dayjs.js +34 -0
  65. package/esm2022/core/date/energinet-watt-core-date.js +5 -0
  66. package/esm2022/core/date/index.js +25 -0
  67. package/esm2022/core/date/watt-danish-datetime.providers.js +31 -0
  68. package/esm2022/core/date/watt-date-adapter.js +43 -0
  69. package/esm2022/core/date/watt-date-range.js +2 -0
  70. package/esm2022/core/date/watt-date.pipe.js +38 -0
  71. package/esm2022/core/date/watt-format-date.js +50 -0
  72. package/esm2022/core/date/watt-locale.service.js +48 -0
  73. package/esm2022/data/energinet-watt-data.js +5 -0
  74. package/esm2022/data/index.js +23 -0
  75. package/esm2022/data/watt-data-actions.component.js +32 -0
  76. package/esm2022/data/watt-data-filters.component.js +32 -0
  77. package/esm2022/data/watt-data-intl.service.js +39 -0
  78. package/{fesm2022/energinet-watt-data.mjs → esm2022/data/watt-data-table.component.js} +15 -137
  79. package/esm2022/datetime-field/energinet-watt-datetime-field.js +5 -0
  80. package/esm2022/datetime-field/index.js +20 -0
  81. package/esm2022/datetime-field/watt-datetime-field.component.js +207 -0
  82. package/esm2022/description-list/energinet-watt-description-list.js +5 -0
  83. package/esm2022/description-list/index.js +20 -0
  84. package/esm2022/description-list/watt-description-list-item.component.js +49 -0
  85. package/{fesm2022/energinet-watt-description-list.mjs → esm2022/description-list/watt-description-list.component.js} +10 -79
  86. package/esm2022/drawer/energinet-watt-drawer.js +5 -0
  87. package/esm2022/drawer/index.js +24 -0
  88. package/esm2022/drawer/watt-drawer-actions.component.js +29 -0
  89. package/esm2022/drawer/watt-drawer-content.component.js +29 -0
  90. package/esm2022/drawer/watt-drawer-heading.component.js +29 -0
  91. package/esm2022/drawer/watt-drawer-topbar.component.js +29 -0
  92. package/esm2022/drawer/watt-drawer.component.js +177 -0
  93. package/esm2022/dropdown/energinet-watt-dropdown.js +5 -0
  94. package/esm2022/dropdown/index.js +20 -0
  95. package/esm2022/dropdown/watt-dropdown-option.js +2 -0
  96. package/esm2022/dropdown/watt-dropdown-value.js +2 -0
  97. package/esm2022/dropdown/watt-dropdown.component.js +396 -0
  98. package/esm2022/dropzone/energinet-watt-dropzone.js +5 -0
  99. package/esm2022/dropzone/index.js +22 -0
  100. package/esm2022/dropzone/watt-dropzone-intl.js +35 -0
  101. package/esm2022/dropzone/watt-dropzone-validators.js +67 -0
  102. package/esm2022/dropzone/watt-dropzone.js +179 -0
  103. package/esm2022/empty-state/energinet-watt-empty-state.js +5 -0
  104. package/esm2022/empty-state/icons/explore.js +54 -0
  105. package/esm2022/empty-state/icons/no-results.js +62 -0
  106. package/esm2022/empty-state/icons/power.js +46 -0
  107. package/esm2022/empty-state/index.js +23 -0
  108. package/esm2022/empty-state/watt-empty-state.component.js +120 -0
  109. package/esm2022/energinet-watt.js +5 -0
  110. package/esm2022/expandable-card/energinet-watt-expandable-card.js +5 -0
  111. package/esm2022/expandable-card/index.js +26 -0
  112. package/{fesm2022/energinet-watt-expandable-card.mjs → esm2022/expandable-card/watt-expandable-card.component.js} +18 -49
  113. package/esm2022/expansion/energinet-watt-expansion.js +5 -0
  114. package/{fesm2022/energinet-watt-expansion.mjs → esm2022/expansion/expansion.component.js} +10 -36
  115. package/esm2022/expansion/index.js +20 -0
  116. package/esm2022/field/energinet-watt-field.js +5 -0
  117. package/esm2022/field/index.js +23 -0
  118. package/esm2022/field/watt-field-error.component.js +29 -0
  119. package/esm2022/field/watt-field-hint.component.js +29 -0
  120. package/esm2022/field/watt-field-intl.service.js +32 -0
  121. package/{fesm2022/energinet-watt-field.mjs → esm2022/field/watt-field.component.js} +17 -125
  122. package/esm2022/icon/energinet-watt-icon.js +5 -0
  123. package/esm2022/icon/flags/energinet-watt-icon-flags.js +5 -0
  124. package/esm2022/icon/flags/index.js +26 -0
  125. package/esm2022/icon/flags/watt-flag-ch.js +52 -0
  126. package/esm2022/icon/flags/watt-flag-de.js +44 -0
  127. package/esm2022/icon/flags/watt-flag-dk.js +44 -0
  128. package/esm2022/icon/flags/watt-flag-fi.js +44 -0
  129. package/esm2022/icon/flags/watt-flag-nl.js +44 -0
  130. package/esm2022/icon/flags/watt-flag-no.js +48 -0
  131. package/esm2022/icon/flags/watt-flag-pl.js +46 -0
  132. package/esm2022/icon/flags/watt-flag-se.js +42 -0
  133. package/esm2022/icon/flags/watt-flag.js +116 -0
  134. package/{fesm2022/energinet-watt-icon.mjs → esm2022/icon/icon.component.js} +9 -131
  135. package/esm2022/icon/icons.js +97 -0
  136. package/esm2022/icon/index.js +20 -0
  137. package/esm2022/index.js +25 -0
  138. package/esm2022/modal/energinet-watt-modal.js +5 -0
  139. package/esm2022/modal/index.js +21 -0
  140. package/{fesm2022/energinet-watt-modal.mjs → esm2022/modal/watt-modal.component.js} +19 -127
  141. package/esm2022/modal/watt-modal.service.js +86 -0
  142. package/esm2022/paginator/energinet-watt-paginator.js +5 -0
  143. package/esm2022/paginator/index.js +21 -0
  144. package/esm2022/paginator/watt-paginator-intl.service.js +38 -0
  145. package/esm2022/paginator/watt-paginator.component.js +104 -0
  146. package/esm2022/phone-field/energinet-watt-phone-field.js +5 -0
  147. package/esm2022/phone-field/index.js +21 -0
  148. package/esm2022/phone-field/watt-phone-field-intl.service.js +40 -0
  149. package/esm2022/phone-field/watt-phone-field.component.js +262 -0
  150. package/esm2022/picker/__shared/energinet-watt-picker-__shared.js +5 -0
  151. package/esm2022/picker/__shared/index.js +21 -0
  152. package/esm2022/picker/__shared/placeholder-mask/watt-placeholder-mask.component.js +71 -0
  153. package/esm2022/picker/__shared/watt-picker-base.js +292 -0
  154. package/esm2022/picker/__shared/watt-picker-value.js +2 -0
  155. package/esm2022/picker/datepicker/energinet-watt-picker-datepicker.js +5 -0
  156. package/esm2022/picker/datepicker/index.js +22 -0
  157. package/esm2022/picker/datepicker/watt-datepicker-intl.service.js +31 -0
  158. package/esm2022/picker/datepicker/watt-datepicker.component.js +422 -0
  159. package/esm2022/picker/timepicker/energinet-watt-picker-timepicker.js +5 -0
  160. package/esm2022/picker/timepicker/index.js +20 -0
  161. package/esm2022/picker/timepicker/maskito-time-range-mask.js +81 -0
  162. package/esm2022/picker/timepicker/watt-timepicker.component.js +288 -0
  163. package/esm2022/progress-tracker/energinet-watt-progress-tracker.js +5 -0
  164. package/esm2022/progress-tracker/index.js +27 -0
  165. package/{fesm2022/energinet-watt-progress-tracker.mjs → esm2022/progress-tracker/watt-progress-tracker-step.component.js} +9 -67
  166. package/esm2022/progress-tracker/watt-progress-tracker.component.js +30 -0
  167. package/esm2022/query-params/energinet-watt-query-params.js +5 -0
  168. package/esm2022/query-params/index.js +20 -0
  169. package/esm2022/query-params/watt-query-params.directive.js +91 -0
  170. package/esm2022/radio/energinet-watt-radio.js +5 -0
  171. package/esm2022/radio/index.js +20 -0
  172. package/{fesm2022/energinet-watt-radio.mjs → esm2022/radio/watt-radio.component.js} +9 -35
  173. package/esm2022/search/energinet-watt-search.js +5 -0
  174. package/esm2022/search/index.js +20 -0
  175. package/{fesm2022/energinet-watt-search.mjs → esm2022/search/watt-search.component.js} +10 -36
  176. package/esm2022/segmented-buttons/energinet-watt-segmented-buttons.js +5 -0
  177. package/esm2022/segmented-buttons/index.js +21 -0
  178. package/esm2022/segmented-buttons/watt-segmented-button.component.js +38 -0
  179. package/esm2022/segmented-buttons/watt-segmented-buttons.component.js +88 -0
  180. package/esm2022/shell/energinet-watt-shell.js +5 -0
  181. package/esm2022/shell/index.js +21 -0
  182. package/esm2022/shell/nav-list/index.js +21 -0
  183. package/esm2022/shell/nav-list/watt-expand-on-active-link.directive.js +45 -0
  184. package/esm2022/shell/nav-list/watt-nav-list-item.component.js +84 -0
  185. package/esm2022/shell/nav-list/watt-nav-list.component.js +81 -0
  186. package/esm2022/shell/shell.component.js +75 -0
  187. package/esm2022/slide-toggle/energinet-watt-slide-toggle.js +5 -0
  188. package/esm2022/slide-toggle/index.js +20 -0
  189. package/esm2022/slide-toggle/watt-slide-toggle.component.js +78 -0
  190. package/esm2022/slider/energinet-watt-slider.js +5 -0
  191. package/esm2022/slider/index.js +20 -0
  192. package/esm2022/slider/watt-slider.component.js +133 -0
  193. package/esm2022/spinner/energinet-watt-spinner.js +5 -0
  194. package/esm2022/spinner/index.js +20 -0
  195. package/esm2022/spinner/watt-spinner.component.js +46 -0
  196. package/esm2022/stepper/energinet-watt-stepper.js +5 -0
  197. package/esm2022/stepper/index.js +21 -0
  198. package/esm2022/stepper/watt-stepper-step.component.js +52 -0
  199. package/{fesm2022/energinet-watt-stepper.mjs → esm2022/stepper/watt-stepper.component.js} +18 -91
  200. package/esm2022/table/energinet-watt-table.js +5 -0
  201. package/esm2022/table/index.js +21 -0
  202. package/esm2022/table/watt-table-data-source.js +17 -0
  203. package/esm2022/table/watt-table.component.js +400 -0
  204. package/esm2022/tabs/energinet-watt-tabs.js +5 -0
  205. package/esm2022/tabs/index.js +31 -0
  206. package/esm2022/tabs/watt-link-tab.component.js +34 -0
  207. package/esm2022/tabs/watt-link-tabs.component.js +71 -0
  208. package/esm2022/tabs/watt-tab.component.js +42 -0
  209. package/esm2022/tabs/watt-tabs-action.component.js +32 -0
  210. package/esm2022/tabs/watt-tabs.component.js +60 -0
  211. package/esm2022/text-field/energinet-watt-text-field.js +5 -0
  212. package/esm2022/text-field/index.js +20 -0
  213. package/esm2022/text-field/watt-text-field.component.js +289 -0
  214. package/esm2022/textarea-field/energinet-watt-textarea-field.js +5 -0
  215. package/esm2022/textarea-field/index.js +20 -0
  216. package/esm2022/textarea-field/watt-textarea-field.component.js +110 -0
  217. package/esm2022/toast/energinet-watt-toast.js +5 -0
  218. package/esm2022/toast/index.js +21 -0
  219. package/esm2022/toast/watt-toast.component.js +97 -0
  220. package/esm2022/toast/watt-toast.service.js +51 -0
  221. package/esm2022/tooltip/energinet-watt-tooltip.js +5 -0
  222. package/esm2022/tooltip/index.js +20 -0
  223. package/esm2022/tooltip/watt-tooltip.component.js +131 -0
  224. package/esm2022/tooltip/watt-tooltip.directive.js +60 -0
  225. package/esm2022/utils/css/css-custom-properties.service.js +39 -0
  226. package/esm2022/utils/css/energinet-watt-utils-css.js +5 -0
  227. package/esm2022/utils/css/index.js +20 -0
  228. package/esm2022/utils/intersection-observer/energinet-watt-utils-intersection-observer.js +5 -0
  229. package/esm2022/utils/intersection-observer/index.js +20 -0
  230. package/esm2022/utils/intersection-observer/watt-intersection-observer.service.js +57 -0
  231. package/esm2022/utils/resize-observer/energinet-watt-utils-resize-observer.js +5 -0
  232. package/esm2022/utils/resize-observer/index.js +21 -0
  233. package/esm2022/utils/resize-observer/watt-resize-observer.directive.js +53 -0
  234. package/esm2022/utils/resize-observer/watt-resize-observer.service.js +67 -0
  235. package/esm2022/validation-message/energinet-watt-validation-message.js +5 -0
  236. package/esm2022/validation-message/index.js +20 -0
  237. package/{fesm2022/energinet-watt-validation-message.mjs → esm2022/validation-message/watt-validation-message.component.js} +8 -34
  238. package/esm2022/validators/energinet-watt-validators.js +5 -0
  239. package/esm2022/validators/index.js +20 -0
  240. package/esm2022/validators/watt-range.validators.js +23 -0
  241. package/esm2022/vater/energinet-watt-vater.js +5 -0
  242. package/esm2022/vater/index.js +24 -0
  243. package/esm2022/vater/types.js +20 -0
  244. package/esm2022/vater/vater-flex.component.js +49 -0
  245. package/esm2022/vater/vater-layout.directive.js +65 -0
  246. package/esm2022/vater/vater-spacer.component.js +29 -0
  247. package/esm2022/vater/vater-stack.component.js +42 -0
  248. package/esm2022/vater/vater-utility.directive.js +53 -0
  249. package/esm2022/year-field/energinet-watt-year-field.js +5 -0
  250. package/esm2022/year-field/index.js +20 -0
  251. package/esm2022/year-field/watt-year-field.component.js +256 -0
  252. package/esm2022/yearmonth-field/energinet-watt-yearmonth-field.js +5 -0
  253. package/esm2022/yearmonth-field/index.js +21 -0
  254. package/esm2022/yearmonth-field/watt-yearmonth-field.component.js +258 -0
  255. package/esm2022/yearmonth-field/year-month.js +42 -0
  256. package/expandable-card/energinet-watt-expandable-card.d.ts +5 -0
  257. package/expansion/energinet-watt-expansion.d.ts +5 -0
  258. package/field/energinet-watt-field.d.ts +5 -0
  259. package/icon/energinet-watt-icon.d.ts +5 -0
  260. package/icon/flags/energinet-watt-icon-flags.d.ts +5 -0
  261. package/modal/energinet-watt-modal.d.ts +5 -0
  262. package/package.json +117 -117
  263. package/paginator/energinet-watt-paginator.d.ts +5 -0
  264. package/phone-field/energinet-watt-phone-field.d.ts +5 -0
  265. package/picker/__shared/energinet-watt-picker-__shared.d.ts +5 -0
  266. package/picker/__shared/watt-picker-base.d.ts +4 -1
  267. package/picker/datepicker/energinet-watt-picker-datepicker.d.ts +5 -0
  268. package/picker/timepicker/energinet-watt-picker-timepicker.d.ts +5 -0
  269. package/progress-tracker/energinet-watt-progress-tracker.d.ts +5 -0
  270. package/query-params/energinet-watt-query-params.d.ts +5 -0
  271. package/radio/energinet-watt-radio.d.ts +5 -0
  272. package/search/energinet-watt-search.d.ts +5 -0
  273. package/segmented-buttons/energinet-watt-segmented-buttons.d.ts +5 -0
  274. package/shell/energinet-watt-shell.d.ts +5 -0
  275. package/slide-toggle/energinet-watt-slide-toggle.d.ts +5 -0
  276. package/slider/energinet-watt-slider.d.ts +5 -0
  277. package/spinner/energinet-watt-spinner.d.ts +5 -0
  278. package/stepper/energinet-watt-stepper.d.ts +5 -0
  279. package/table/energinet-watt-table.d.ts +5 -0
  280. package/tabs/energinet-watt-tabs.d.ts +5 -0
  281. package/text-field/energinet-watt-text-field.d.ts +5 -0
  282. package/textarea-field/energinet-watt-textarea-field.d.ts +5 -0
  283. package/toast/energinet-watt-toast.d.ts +5 -0
  284. package/toast/watt-toast.service.d.ts +2 -3
  285. package/tooltip/energinet-watt-tooltip.d.ts +5 -0
  286. package/utils/css/css-custom-properties.service.d.ts +1 -2
  287. package/utils/css/energinet-watt-utils-css.d.ts +5 -0
  288. package/utils/intersection-observer/energinet-watt-utils-intersection-observer.d.ts +5 -0
  289. package/utils/resize-observer/energinet-watt-utils-resize-observer.d.ts +5 -0
  290. package/utils/resize-observer/watt-resize-observer.service.d.ts +2 -19
  291. package/validation-message/energinet-watt-validation-message.d.ts +5 -0
  292. package/validators/energinet-watt-validators.d.ts +5 -0
  293. package/vater/energinet-watt-vater.d.ts +5 -0
  294. package/year-field/energinet-watt-year-field.d.ts +5 -0
  295. package/yearmonth-field/energinet-watt-yearmonth-field.d.ts +5 -0
  296. package/fesm2022/energinet-watt-badge.mjs.map +0 -1
  297. package/fesm2022/energinet-watt-breadcrumbs.mjs +0 -116
  298. package/fesm2022/energinet-watt-breadcrumbs.mjs.map +0 -1
  299. package/fesm2022/energinet-watt-button.mjs.map +0 -1
  300. package/fesm2022/energinet-watt-card.mjs +0 -117
  301. package/fesm2022/energinet-watt-card.mjs.map +0 -1
  302. package/fesm2022/energinet-watt-checkbox.mjs.map +0 -1
  303. package/fesm2022/energinet-watt-chip.mjs +0 -760
  304. package/fesm2022/energinet-watt-chip.mjs.map +0 -1
  305. package/fesm2022/energinet-watt-clipboard.mjs +0 -118
  306. package/fesm2022/energinet-watt-clipboard.mjs.map +0 -1
  307. package/fesm2022/energinet-watt-code.mjs +0 -119
  308. package/fesm2022/energinet-watt-code.mjs.map +0 -1
  309. package/fesm2022/energinet-watt-core-breakpoints.mjs +0 -100
  310. package/fesm2022/energinet-watt-core-breakpoints.mjs.map +0 -1
  311. package/fesm2022/energinet-watt-core-color.mjs +0 -127
  312. package/fesm2022/energinet-watt-core-color.mjs.map +0 -1
  313. package/fesm2022/energinet-watt-core-date.mjs +0 -260
  314. package/fesm2022/energinet-watt-core-date.mjs.map +0 -1
  315. package/fesm2022/energinet-watt-data.mjs.map +0 -1
  316. package/fesm2022/energinet-watt-datetime-field.mjs +0 -233
  317. package/fesm2022/energinet-watt-datetime-field.mjs.map +0 -1
  318. package/fesm2022/energinet-watt-description-list.mjs.map +0 -1
  319. package/fesm2022/energinet-watt-drawer.mjs +0 -307
  320. package/fesm2022/energinet-watt-drawer.mjs.map +0 -1
  321. package/fesm2022/energinet-watt-dropdown.mjs +0 -423
  322. package/fesm2022/energinet-watt-dropdown.mjs.map +0 -1
  323. package/fesm2022/energinet-watt-dropzone.mjs +0 -298
  324. package/fesm2022/energinet-watt-dropzone.mjs.map +0 -1
  325. package/fesm2022/energinet-watt-empty-state.mjs +0 -299
  326. package/fesm2022/energinet-watt-empty-state.mjs.map +0 -1
  327. package/fesm2022/energinet-watt-expandable-card.mjs.map +0 -1
  328. package/fesm2022/energinet-watt-expansion.mjs.map +0 -1
  329. package/fesm2022/energinet-watt-field.mjs.map +0 -1
  330. package/fesm2022/energinet-watt-icon-flags.mjs +0 -482
  331. package/fesm2022/energinet-watt-icon-flags.mjs.map +0 -1
  332. package/fesm2022/energinet-watt-icon.mjs.map +0 -1
  333. package/fesm2022/energinet-watt-modal.mjs.map +0 -1
  334. package/fesm2022/energinet-watt-paginator.mjs +0 -164
  335. package/fesm2022/energinet-watt-paginator.mjs.map +0 -1
  336. package/fesm2022/energinet-watt-phone-field.mjs +0 -326
  337. package/fesm2022/energinet-watt-phone-field.mjs.map +0 -1
  338. package/fesm2022/energinet-watt-picker-__shared.mjs +0 -384
  339. package/fesm2022/energinet-watt-picker-__shared.mjs.map +0 -1
  340. package/fesm2022/energinet-watt-picker-datepicker.mjs +0 -477
  341. package/fesm2022/energinet-watt-picker-datepicker.mjs.map +0 -1
  342. package/fesm2022/energinet-watt-picker-timepicker.mjs +0 -394
  343. package/fesm2022/energinet-watt-picker-timepicker.mjs.map +0 -1
  344. package/fesm2022/energinet-watt-progress-tracker.mjs.map +0 -1
  345. package/fesm2022/energinet-watt-query-params.mjs +0 -117
  346. package/fesm2022/energinet-watt-query-params.mjs.map +0 -1
  347. package/fesm2022/energinet-watt-radio.mjs.map +0 -1
  348. package/fesm2022/energinet-watt-search.mjs.map +0 -1
  349. package/fesm2022/energinet-watt-segmented-buttons.mjs +0 -149
  350. package/fesm2022/energinet-watt-segmented-buttons.mjs.map +0 -1
  351. package/fesm2022/energinet-watt-shell.mjs +0 -315
  352. package/fesm2022/energinet-watt-shell.mjs.map +0 -1
  353. package/fesm2022/energinet-watt-slide-toggle.mjs +0 -104
  354. package/fesm2022/energinet-watt-slide-toggle.mjs.map +0 -1
  355. package/fesm2022/energinet-watt-slider.mjs +0 -159
  356. package/fesm2022/energinet-watt-slider.mjs.map +0 -1
  357. package/fesm2022/energinet-watt-spinner.mjs +0 -72
  358. package/fesm2022/energinet-watt-spinner.mjs.map +0 -1
  359. package/fesm2022/energinet-watt-stepper.mjs.map +0 -1
  360. package/fesm2022/energinet-watt-table.mjs +0 -441
  361. package/fesm2022/energinet-watt-table.mjs.map +0 -1
  362. package/fesm2022/energinet-watt-tabs.mjs +0 -254
  363. package/fesm2022/energinet-watt-tabs.mjs.map +0 -1
  364. package/fesm2022/energinet-watt-text-field.mjs +0 -316
  365. package/fesm2022/energinet-watt-text-field.mjs.map +0 -1
  366. package/fesm2022/energinet-watt-textarea-field.mjs +0 -136
  367. package/fesm2022/energinet-watt-textarea-field.mjs.map +0 -1
  368. package/fesm2022/energinet-watt-toast.mjs +0 -174
  369. package/fesm2022/energinet-watt-toast.mjs.map +0 -1
  370. package/fesm2022/energinet-watt-tooltip.mjs +0 -214
  371. package/fesm2022/energinet-watt-tooltip.mjs.map +0 -1
  372. package/fesm2022/energinet-watt-utils-css.mjs +0 -72
  373. package/fesm2022/energinet-watt-utils-css.mjs.map +0 -1
  374. package/fesm2022/energinet-watt-utils-intersection-observer.mjs +0 -83
  375. package/fesm2022/energinet-watt-utils-intersection-observer.mjs.map +0 -1
  376. package/fesm2022/energinet-watt-utils-resize-observer.mjs +0 -144
  377. package/fesm2022/energinet-watt-utils-resize-observer.mjs.map +0 -1
  378. package/fesm2022/energinet-watt-validation-message.mjs.map +0 -1
  379. package/fesm2022/energinet-watt-validators.mjs +0 -49
  380. package/fesm2022/energinet-watt-validators.mjs.map +0 -1
  381. package/fesm2022/energinet-watt-vater.mjs +0 -248
  382. package/fesm2022/energinet-watt-vater.mjs.map +0 -1
  383. package/fesm2022/energinet-watt-year-field.mjs +0 -282
  384. package/fesm2022/energinet-watt-year-field.mjs.map +0 -1
  385. package/fesm2022/energinet-watt-yearmonth-field.mjs +0 -324
  386. package/fesm2022/energinet-watt-yearmonth-field.mjs.map +0 -1
  387. package/fesm2022/energinet-watt.mjs +0 -31
  388. package/fesm2022/energinet-watt.mjs.map +0 -1
@@ -0,0 +1,400 @@
1
+ //#region License
2
+ /**
3
+ * @license
4
+ * Copyright 2020 Energinet DataHub A/S
5
+ *
6
+ * Licensed under the Apache License, Version 2.0 (the "License2");
7
+ * you may not use this file except in compliance with the License.
8
+ * You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ */
18
+ //#endregion
19
+ import { SelectionModel } from '@angular/cdk/collections';
20
+ import { KeyValuePipe, NgClass, NgTemplateOutlet } from '@angular/common';
21
+ import { Component, ContentChild, ContentChildren, Directive, effect, ElementRef, EventEmitter, inject, input, Input, Output, signal, TemplateRef, ViewChild, ViewEncapsulation, } from '@angular/core';
22
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
23
+ import { FormsModule } from '@angular/forms';
24
+ import { MatSort, MatSortModule } from '@angular/material/sort';
25
+ import { MatTableModule } from '@angular/material/table';
26
+ import { map } from 'rxjs';
27
+ import { WattCheckboxComponent } from '@energinet/watt/checkbox';
28
+ import { WattDatePipe } from '@energinet/watt/core/date';
29
+ import { WattIconComponent } from '@energinet/watt/icon';
30
+ import { WattTableDataSource } from './watt-table-data-source';
31
+ import * as i0 from "@angular/core";
32
+ import * as i1 from "@angular/forms";
33
+ import * as i2 from "@angular/material/sort";
34
+ import * as i3 from "@angular/material/table";
35
+ export class WattTableCellDirective {
36
+ /** The WattTableColumn this template applies to. */
37
+ column;
38
+ header;
39
+ templateRef = inject((TemplateRef));
40
+ static ngTemplateContextGuard(_directive, context) {
41
+ return true;
42
+ }
43
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: WattTableCellDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
44
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.3", type: WattTableCellDirective, isStandalone: true, selector: "[wattTableCell]", inputs: { column: ["wattTableCell", "column"], header: ["wattTableCellHeader", "header"] }, ngImport: i0 });
45
+ }
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: WattTableCellDirective, decorators: [{
47
+ type: Directive,
48
+ args: [{
49
+ selector: '[wattTableCell]',
50
+ }]
51
+ }], propDecorators: { column: [{
52
+ type: Input,
53
+ args: ['wattTableCell']
54
+ }], header: [{
55
+ type: Input,
56
+ args: ['wattTableCellHeader']
57
+ }] } });
58
+ export class WattTableToolbarDirective {
59
+ templateRef = inject((TemplateRef));
60
+ static ngTemplateContextGuard(_directive, context) {
61
+ return true;
62
+ }
63
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: WattTableToolbarDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
64
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.3", type: WattTableToolbarDirective, isStandalone: true, selector: "[wattTableToolbar]", ngImport: i0 });
65
+ }
66
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: WattTableToolbarDirective, decorators: [{
67
+ type: Directive,
68
+ args: [{
69
+ selector: '[wattTableToolbar]',
70
+ }]
71
+ }] });
72
+ /**
73
+ * Usage:
74
+ * `import { WATT_TABLE } from '@energinet-datahub/watt/table';`
75
+ */
76
+ export class WattTableComponent {
77
+ /**
78
+ * The table's source of data. Property should not be changed after
79
+ * initialization, instead update the data on the instance itself.
80
+ */
81
+ dataSource;
82
+ /**
83
+ * Column definition record with keys representing the column identifiers
84
+ * and values being the column configuration. The order of the columns
85
+ * is determined by the property order, but can be overruled by the
86
+ * `displayedColumns` input.
87
+ */
88
+ columns = {};
89
+ /**
90
+ * Used for hiding or reordering columns defined in the `columns` input.
91
+ */
92
+ displayedColumns;
93
+ /**
94
+ * Used for disabling the table. This will disable all user interaction
95
+ */
96
+ disabled = false;
97
+ /**
98
+ * Provide a description of the table for visually impaired users.
99
+ */
100
+ description = '';
101
+ /**
102
+ * If set to `true`, the table will show a loading indicator
103
+ * when there is no data.
104
+ */
105
+ loading = false;
106
+ /**
107
+ * If true the footer will be sticky
108
+ */
109
+ stickyFooter = false;
110
+ /**
111
+ * Optional callback for determining header text for columns that
112
+ * do not have a static header text set in the column definition.
113
+ * Useful for providing translations of column headers.
114
+ */
115
+ resolveHeader;
116
+ /**
117
+ * Identifier for column that should be sorted initially.
118
+ */
119
+ sortBy = '';
120
+ /**
121
+ * The sort direction of the initially sorted column.
122
+ */
123
+ sortDirection = '';
124
+ /**
125
+ * Whether to allow the user to clear the sort. Defaults to `true`.
126
+ */
127
+ sortClear = true;
128
+ /**
129
+ * Whether the table should include a checkbox column for row selection.
130
+ */
131
+ selectable = false;
132
+ /**
133
+ * Sets the initially selected rows. Only works when selectable is `true`.
134
+ */
135
+ initialSelection = input([]);
136
+ /**
137
+ * Set to true to disable row hover highlight.
138
+ */
139
+ suppressRowHoverHighlight = false;
140
+ /**
141
+ * Highlights the currently active row.
142
+ */
143
+ activeRow;
144
+ /**
145
+ * Custom comparator function to determine if two rows are equal.
146
+ *
147
+ * @remarks
148
+ * The default behavior for determining the active row is to compare
149
+ * the two row objects using strict equality check. This is sufficient
150
+ * as long as the instances remain the same, which may not be the case
151
+ * if row data is recreated or rebuilt from serialization.
152
+ */
153
+ activeRowComparator;
154
+ /**
155
+ * If set to `true`, the column headers will not be shown. Default is `false`.
156
+ */
157
+ hideColumnHeaders = false;
158
+ /**
159
+ * Emits whenever the selection updates. Only works when selectable is `true`.
160
+ */
161
+ selectionChange = new EventEmitter();
162
+ /**
163
+ * Emits whenever a row is clicked.
164
+ */
165
+ rowClick = new EventEmitter();
166
+ /**
167
+ * Event emitted when the user changes the active sort or sort direction.
168
+ */
169
+ sortChange = new EventEmitter();
170
+ /** @ignore */
171
+ _cells;
172
+ /** @ignore */
173
+ _toolbar;
174
+ /** @ignore */
175
+ _sort;
176
+ /** @ignore */
177
+ _selectionModel = new SelectionModel(true, []);
178
+ /** @ignore */
179
+ _checkboxColumn = '__checkboxColumn__';
180
+ /** @ignore */
181
+ _element = inject(ElementRef);
182
+ /** @ignore */
183
+ _datePipe = inject(WattDatePipe);
184
+ /** @ignore */
185
+ _hasFooter = signal(false);
186
+ /** @ignore */
187
+ formatCellData(cell) {
188
+ if (!cell)
189
+ return '—';
190
+ if (cell instanceof Date)
191
+ return this._datePipe.transform(cell);
192
+ return cell;
193
+ }
194
+ /** @ignore */
195
+ getCellData(row, column) {
196
+ if (!column?.accessor)
197
+ return null;
198
+ const { accessor } = column;
199
+ const cell = typeof accessor === 'function' ? accessor(row) : row[accessor];
200
+ return this.formatCellData(cell);
201
+ }
202
+ /** @ignore */
203
+ checkHasFooter() {
204
+ this._hasFooter.set(Object.values(this.columns).some((column) => !!column.footer));
205
+ }
206
+ constructor() {
207
+ effect(() => {
208
+ this._selectionModel.setSelection(...(this.initialSelection() ?? []));
209
+ });
210
+ this._selectionModel.changed
211
+ .pipe(map(() => this._selectionModel.selected), takeUntilDestroyed())
212
+ .subscribe((selection) => this.selectionChange.emit(selection));
213
+ }
214
+ ngAfterViewInit() {
215
+ if (this.dataSource === undefined)
216
+ return;
217
+ this.checkHasFooter();
218
+ this.dataSource.sort = this._sort;
219
+ if (this.dataSource instanceof WattTableDataSource === false)
220
+ return;
221
+ this.dataSource.sortingDataAccessor = (row, sortHeaderId) => {
222
+ const sortColumn = this.columns[sortHeaderId];
223
+ if (!sortColumn?.accessor)
224
+ return '';
225
+ // Access raw value for sorting, instead of applying default formatting.
226
+ const { accessor } = sortColumn;
227
+ const cell = typeof accessor === 'function' ? accessor(row) : row[accessor];
228
+ // Make sorting by text case insensitive.
229
+ if (typeof cell === 'string')
230
+ return cell.toLowerCase();
231
+ if (cell instanceof Date)
232
+ return cell.getTime();
233
+ return cell;
234
+ };
235
+ }
236
+ ngOnChanges(changes) {
237
+ if (changes['columns'] || changes['displayedColumns'] || changes['selectable']) {
238
+ const { displayedColumns } = this;
239
+ if (this.columns === undefined)
240
+ return;
241
+ const sizing = Object.keys(this.columns)
242
+ .filter((key) => !displayedColumns || displayedColumns.includes(key))
243
+ .map((key) => this.columns[key].size)
244
+ .map((size) => size ?? 'auto');
245
+ if (this.selectable) {
246
+ // Add space for extra checkbox column
247
+ sizing.unshift('var(--watt-space-xl)');
248
+ }
249
+ this._element.nativeElement.style.setProperty('--watt-table-grid-template-columns', sizing.join(' '));
250
+ this.checkHasFooter();
251
+ }
252
+ }
253
+ /**
254
+ * Clears the selection. Only works when selectable is `true`.
255
+ */
256
+ clearSelection() {
257
+ if (this.selectable) {
258
+ this._selectionModel.clear();
259
+ }
260
+ }
261
+ /** @ignore */
262
+ get _columnSelection() {
263
+ if (this.dataSource.filteredData.length === 0)
264
+ return false;
265
+ return this.dataSource.filteredData.every((row) => this._selectionModel.isSelected(row));
266
+ }
267
+ /** @ignore */
268
+ set _columnSelection(value) {
269
+ if (value) {
270
+ this._selectionModel.setSelection(...this.dataSource.filteredData);
271
+ }
272
+ else {
273
+ this.clearSelection();
274
+ }
275
+ }
276
+ get _filteredSelection() {
277
+ return this._selectionModel.selected.filter((row) => this.dataSource.filteredData.includes(row));
278
+ }
279
+ /** @ignore */
280
+ _getColumns() {
281
+ if (this.columns === undefined)
282
+ return [];
283
+ const columns = this.displayedColumns ?? Object.keys(this.columns);
284
+ return this.selectable ? [this._checkboxColumn, ...columns] : columns;
285
+ }
286
+ /** @ignore */
287
+ _getColumnTemplate(column) {
288
+ return this._cells.find((item) => item.column === column)?.templateRef;
289
+ }
290
+ /** @ignore */
291
+ _getColumnHeader(column) {
292
+ if (typeof column.value.header === 'string')
293
+ return column.value.header;
294
+ const cell = this._cells.find((item) => item.column === column.value);
295
+ return cell?.header ?? this.resolveHeader?.(column.key) ?? column.key;
296
+ }
297
+ /** @ignore */
298
+ _getColumnHelperAction(column) {
299
+ return column.value.helperAction;
300
+ }
301
+ /** @ignore */
302
+ _getColumnHeaderTooltip(column) {
303
+ return column.value.tooltip;
304
+ }
305
+ /** @ignore */
306
+ _getColumnCell(column, row) {
307
+ return column.value.cell?.(row) ?? this.getCellData(row, column.value);
308
+ }
309
+ /** @ignore */
310
+ _isActiveRow(row) {
311
+ if (!this.activeRow)
312
+ return false;
313
+ return this.activeRowComparator
314
+ ? this.activeRowComparator(row, this.activeRow)
315
+ : row === this.activeRow;
316
+ }
317
+ /** @ignore */
318
+ _onRowClick(row) {
319
+ if (this.disabled || window.getSelection()?.toString() !== '')
320
+ return;
321
+ this.rowClick.emit(row);
322
+ }
323
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: WattTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
324
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.3", type: WattTableComponent, isStandalone: true, selector: "watt-table", inputs: { dataSource: { classPropertyName: "dataSource", publicName: "dataSource", isSignal: false, isRequired: false, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: false, isRequired: false, transformFunction: null }, displayedColumns: { classPropertyName: "displayedColumns", publicName: "displayedColumns", isSignal: false, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: false, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: false, isRequired: false, transformFunction: null }, stickyFooter: { classPropertyName: "stickyFooter", publicName: "stickyFooter", isSignal: false, isRequired: false, transformFunction: null }, resolveHeader: { classPropertyName: "resolveHeader", publicName: "resolveHeader", isSignal: false, isRequired: false, transformFunction: null }, sortBy: { classPropertyName: "sortBy", publicName: "sortBy", isSignal: false, isRequired: false, transformFunction: null }, sortDirection: { classPropertyName: "sortDirection", publicName: "sortDirection", isSignal: false, isRequired: false, transformFunction: null }, sortClear: { classPropertyName: "sortClear", publicName: "sortClear", isSignal: false, isRequired: false, transformFunction: null }, selectable: { classPropertyName: "selectable", publicName: "selectable", isSignal: false, isRequired: false, transformFunction: null }, initialSelection: { classPropertyName: "initialSelection", publicName: "initialSelection", isSignal: true, isRequired: false, transformFunction: null }, suppressRowHoverHighlight: { classPropertyName: "suppressRowHoverHighlight", publicName: "suppressRowHoverHighlight", isSignal: false, isRequired: false, transformFunction: null }, activeRow: { classPropertyName: "activeRow", publicName: "activeRow", isSignal: false, isRequired: false, transformFunction: null }, activeRowComparator: { classPropertyName: "activeRowComparator", publicName: "activeRowComparator", isSignal: false, isRequired: false, transformFunction: null }, hideColumnHeaders: { classPropertyName: "hideColumnHeaders", publicName: "hideColumnHeaders", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { selectionChange: "selectionChange", rowClick: "rowClick", sortChange: "sortChange" }, providers: [WattDatePipe], queries: [{ propertyName: "_toolbar", first: true, predicate: WattTableToolbarDirective, descendants: true }, { propertyName: "_cells", predicate: WattTableCellDirective }], viewQueries: [{ propertyName: "_sort", first: true, predicate: MatSort, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!--\n@license\nCopyright 2020 Energinet DataHub A/S\n\nLicensed under the Apache License, Version 2.0 (the \"License2\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n<table\n mat-table\n matSort\n role=\"treegrid\"\n [ngClass]=\"{ 'watt-table-has-selection': _filteredSelection.length > 0 }\"\n [matSortActive]=\"sortBy\"\n [matSortDirection]=\"sortDirection\"\n [matSortDisableClear]=\"!sortClear\"\n [dataSource]=\"dataSource\"\n [attr.aria-label]=\"description\"\n (matSortChange)=\"sortChange.emit($event)\"\n>\n @if (selectable) {\n <ng-container [matColumnDef]=\"_checkboxColumn\" [sticky]=\"true\">\n <th mat-header-cell *matHeaderCellDef class=\"watt-table-checkbox-cell\">\n <watt-checkbox [(ngModel)]=\"_columnSelection\" />\n </th>\n <td mat-cell *matCellDef=\"let row\" class=\"watt-table-checkbox-cell\">\n <watt-checkbox\n [ngModel]=\"_selectionModel.isSelected(row)\"\n (ngModelChange)=\"_selectionModel.toggle(row)\"\n (click)=\"$event.stopPropagation()\"\n />\n </td>\n </ng-container>\n }\n\n @for (column of columns | keyvalue; track column.key) {\n <ng-container [matColumnDef]=\"column.key\" [stickyEnd]=\"column.value.stickyEnd?.()\">\n <th\n mat-header-cell\n *matHeaderCellDef\n class=\"watt-table-align-{{ column.value.align ?? 'left' }} {{\n column.value.headerCellClass\n }}\"\n >\n @if (_getColumnHelperAction(column); as action) {\n <watt-icon name=\"help\" (click)=\"action()\" />\n }\n\n <div\n class=\"watt-table-header-cell\"\n mat-sort-header\n [arrowPosition]=\"column.value.align === 'right' ? 'before' : 'after'\"\n [disabled]=\"!column.value.accessor || column.value.sort === false\"\n >\n {{ _getColumnHeader(column) }}\n </div>\n @if (_getColumnHeaderTooltip(column); as tooltip) {\n <watt-icon [title]=\"tooltip\" name=\"info\" />\n }\n </th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n class=\"watt-table-align-{{ column.value.align ?? 'left' }} {{ column.value.dataCellClass }}\"\n >\n @if (_getColumnTemplate(column.value); as template) {\n <div>\n <ng-container *ngTemplateOutlet=\"template; context: { $implicit: row }\" />\n </div>\n } @else {\n {{ _getColumnCell(column, row) }}\n }\n </td>\n\n @if (_hasFooter()) {\n <td\n mat-footer-cell\n *matFooterCellDef\n class=\"{{ column.value.footer?.class }} watt-table-align-{{\n column.value.align ?? 'left'\n }} \"\n >\n {{ column.value.footer?.value?.() }}\n </td>\n }\n </ng-container>\n }\n\n <ng-container matColumnDef=\"spacer\">\n <td class=\"watt-table-footer-spacer\" mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n @if (!hideColumnHeaders) {\n <tr mat-header-row *matHeaderRowDef=\"_getColumns()\"></tr>\n }\n <tr\n mat-row\n *matRowDef=\"let row; columns: _getColumns()\"\n [attr.aria-selected]=\"row === activeRow\"\n (click)=\"_onRowClick(row)\"\n [ngClass]=\"{\n 'watt-table-highlight-row': !disabled && !suppressRowHoverHighlight,\n 'watt-table-clickable-row': !disabled && rowClick.observed,\n 'watt-table-active-row': _isActiveRow(row),\n 'watt-table-no-end-divider': hideColumnHeaders,\n }\"\n ></tr>\n\n @if (_toolbar) {\n <tr mat-footer-row *matFooterRowDef=\"['spacer']\"></tr>\n }\n\n @if (_hasFooter()) {\n <tr\n mat-footer-row\n [class.watt-table-hide-footer]=\"loading || dataSource.filteredData.length === 0\"\n *matFooterRowDef=\"_getColumns(); sticky: stickyFooter\"\n ></tr>\n }\n\n <ng-container *matNoDataRow>\n @if (loading) {\n @for (i of [1, 2, 3]; track i) {\n <tr class=\"mat-mdc-row\">\n @for (_ of _getColumns(); track _; let i = $index) {\n <td class=\"mat-mdc-cell\" [class.watt-table-loading-cell]=\"i > 0 || !selectable\"></td>\n }\n </tr>\n }\n }\n </ng-container>\n</table>\n\n@if (_toolbar) {\n <div class=\"watt-table-toolbar\" role=\"toolbar\">\n <ng-container\n *ngTemplateOutlet=\"_toolbar.templateRef; context: { $implicit: _filteredSelection }\"\n />\n </div>\n}\n", styles: ["watt-table{--mat-table-row-item-label-text-font: $primary-font-family;--mat-table-row-item-outline-color: var(--watt-color-neutral-grey-300);--mat-table-header-headline-font: $primary-font-family}watt-table,watt-table .mat-mdc-table{display:grid;position:relative;overflow:auto;min-height:44px}watt-table .mat-mdc-table{grid-template-columns:var(--watt-table-grid-template-columns);grid-auto-rows:max-content;max-height:100%;z-index:1}watt-table .mat-mdc-table thead,watt-table .mat-mdc-table tbody,watt-table .mat-mdc-table tfoot,watt-table .mat-mdc-table tr.mat-mdc-row,watt-table .mat-mdc-table tr.mat-mdc-header-row,watt-table .mat-mdc-table tr.mat-mdc-footer-row{display:contents}watt-table .mat-mdc-table tr.watt-table-hide-footer{display:none}watt-table .mat-mdc-table tr.mat-mdc-header-row{flex:0 0 auto}watt-table .mat-mdc-table th.mat-mdc-header-cell{color:var(--watt-typography-label-color);font-size:.875rem;line-height:1.25rem;font-weight:600;text-transform:uppercase;box-sizing:border-box;display:flex;position:sticky;top:0;padding:0 var(--watt-space-s);height:auto;background:var(--watt-color-primary-ultralight);box-shadow:0 -1px #0000001f inset;border:0;z-index:2!important;white-space:nowrap;-webkit-user-select:none;user-select:none}watt-table .mat-mdc-table td.mat-mdc-footer-cell,watt-table .mat-mdc-table td.mat-mdc-cell{display:flex;align-items:center;min-height:56px;padding:var(--watt-space-s) var(--watt-space-m)}watt-table .mat-mdc-table td.mat-mdc-footer-cell,watt-table .mat-mdc-table tr.mdc-data-table__row:last-child .mat-mdc-cell{border-bottom:1px solid var(--watt-color-neutral-grey-300)}watt-table .mat-mdc-table td.mat-mdc-footer-cell{font-size:.875rem;line-height:1.25rem;font-weight:600;text-transform:none;letter-spacing:0;border-top:2px solid var(--watt-color-neutral-grey-300);background-color:var(--watt-color-neutral-grey-100)}watt-table .mat-mdc-table .watt-table-no-end-divider:last-child .mat-mdc-cell{border-bottom:0px solid var(--watt-color-neutral-grey-300)!important}watt-table .mat-mdc-table .watt-table-clickable-row td{cursor:pointer;-webkit-user-select:text;user-select:text}watt-table .mat-mdc-table .watt-table-highlight-row:hover:not(.watt-table-active-row) td{background:var(--watt-color-neutral-grey-100)}watt-table .mat-mdc-table .watt-table-active-row td{background:var(--watt-color-secondary-ultralight)}watt-table .mat-mdc-table .mat-sort-header-arrow{margin:0}watt-table .mat-mdc-table .watt-table-align-right .mat-sort-header-arrow{margin-right:var(--watt-space-s)}watt-table .mat-mdc-table .watt-table-align-center .mat-sort-header-arrow,watt-table .mat-mdc-table .watt-table-align-left .mat-sort-header-arrow{margin-left:var(--watt-space-s)}watt-table .mat-mdc-table .watt-table-header-cell{padding:.75rem var(--watt-space-s)}watt-table .mat-mdc-table .watt-table-checkbox-cell{justify-content:center}watt-table .mat-mdc-table th.watt-table-checkbox-cell{display:flex;align-items:center}watt-table .mat-mdc-table .watt-table-align-center,watt-table .mat-mdc-table .watt-table-align-center .mat-sort-header-container{justify-content:center}watt-table .mat-mdc-table .watt-table-align-right,watt-table .mat-mdc-table .watt-table-align-right .mat-sort-header-container{justify-content:right}.watt-table-footer-spacer{display:none;height:76px;border:0}.watt-table-has-selection .watt-table-footer-spacer{display:block}.watt-table-has-selection+.watt-table-toolbar{opacity:1;visibility:visible;transition:opacity .3s cubic-bezier(0,0,.2,1),visibility .5s}.watt-table-toolbar{position:absolute;bottom:var(--watt-space-m);left:50%;transform:translate(-50%);display:flex;align-items:center;padding:0 var(--watt-space-m);min-height:44px;border-radius:22px;color:var(--watt-color-primary-contrast);background-color:var(--watt-color-primary);z-index:1;opacity:0;visibility:hidden;transition:none}.watt-table-toolbar .watt-button--disabled{opacity:.4;--watt-button-primary-disabled-color: #fff}.watt-table-loading-cell:before{content:\"\";flex:1;display:block;max-width:200px;height:var(--watt-space-m);border-radius:var(--watt-space-m);opacity:.75;animation:shine 2s infinite linear;background-color:var(--watt-color-neutral-grey-200);background-size:300px;background-position:-100px;background-image:linear-gradient(90deg,var(--watt-color-neutral-grey-300) 0px,var(--watt-color-neutral-grey-200) 40px,var(--watt-color-neutral-grey-300) 80px)}@keyframes shine{40%,to{background-position:200px}}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: KeyValuePipe, name: "keyvalue" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "directive", type: i2.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i2.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i3.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i3.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i3.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i3.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i3.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i3.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i3.MatFooterCellDef, selector: "[matFooterCellDef]" }, { kind: "directive", type: i3.MatFooterRowDef, selector: "[matFooterRowDef]", inputs: ["matFooterRowDef", "matFooterRowDefSticky"] }, { kind: "directive", type: i3.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i3.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "directive", type: i3.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { kind: "component", type: i3.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i3.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i3.MatFooterRow, selector: "mat-footer-row, tr[mat-footer-row]", exportAs: ["matFooterRow"] }, { kind: "directive", type: i3.MatNoDataRow, selector: "ng-template[matNoDataRow]" }, { kind: "component", type: WattIconComponent, selector: "watt-icon", inputs: ["name", "label", "size", "state"] }, { kind: "component", type: WattCheckboxComponent, selector: "watt-checkbox", inputs: ["required"] }], encapsulation: i0.ViewEncapsulation.None });
325
+ }
326
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: WattTableComponent, decorators: [{
327
+ type: Component,
328
+ args: [{ imports: [
329
+ NgClass,
330
+ NgTemplateOutlet,
331
+ KeyValuePipe,
332
+ FormsModule,
333
+ MatSortModule,
334
+ MatTableModule,
335
+ WattIconComponent,
336
+ WattCheckboxComponent,
337
+ ], providers: [WattDatePipe], encapsulation: ViewEncapsulation.None, selector: 'watt-table', template: "<!--\n@license\nCopyright 2020 Energinet DataHub A/S\n\nLicensed under the Apache License, Version 2.0 (the \"License2\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n<table\n mat-table\n matSort\n role=\"treegrid\"\n [ngClass]=\"{ 'watt-table-has-selection': _filteredSelection.length > 0 }\"\n [matSortActive]=\"sortBy\"\n [matSortDirection]=\"sortDirection\"\n [matSortDisableClear]=\"!sortClear\"\n [dataSource]=\"dataSource\"\n [attr.aria-label]=\"description\"\n (matSortChange)=\"sortChange.emit($event)\"\n>\n @if (selectable) {\n <ng-container [matColumnDef]=\"_checkboxColumn\" [sticky]=\"true\">\n <th mat-header-cell *matHeaderCellDef class=\"watt-table-checkbox-cell\">\n <watt-checkbox [(ngModel)]=\"_columnSelection\" />\n </th>\n <td mat-cell *matCellDef=\"let row\" class=\"watt-table-checkbox-cell\">\n <watt-checkbox\n [ngModel]=\"_selectionModel.isSelected(row)\"\n (ngModelChange)=\"_selectionModel.toggle(row)\"\n (click)=\"$event.stopPropagation()\"\n />\n </td>\n </ng-container>\n }\n\n @for (column of columns | keyvalue; track column.key) {\n <ng-container [matColumnDef]=\"column.key\" [stickyEnd]=\"column.value.stickyEnd?.()\">\n <th\n mat-header-cell\n *matHeaderCellDef\n class=\"watt-table-align-{{ column.value.align ?? 'left' }} {{\n column.value.headerCellClass\n }}\"\n >\n @if (_getColumnHelperAction(column); as action) {\n <watt-icon name=\"help\" (click)=\"action()\" />\n }\n\n <div\n class=\"watt-table-header-cell\"\n mat-sort-header\n [arrowPosition]=\"column.value.align === 'right' ? 'before' : 'after'\"\n [disabled]=\"!column.value.accessor || column.value.sort === false\"\n >\n {{ _getColumnHeader(column) }}\n </div>\n @if (_getColumnHeaderTooltip(column); as tooltip) {\n <watt-icon [title]=\"tooltip\" name=\"info\" />\n }\n </th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n class=\"watt-table-align-{{ column.value.align ?? 'left' }} {{ column.value.dataCellClass }}\"\n >\n @if (_getColumnTemplate(column.value); as template) {\n <div>\n <ng-container *ngTemplateOutlet=\"template; context: { $implicit: row }\" />\n </div>\n } @else {\n {{ _getColumnCell(column, row) }}\n }\n </td>\n\n @if (_hasFooter()) {\n <td\n mat-footer-cell\n *matFooterCellDef\n class=\"{{ column.value.footer?.class }} watt-table-align-{{\n column.value.align ?? 'left'\n }} \"\n >\n {{ column.value.footer?.value?.() }}\n </td>\n }\n </ng-container>\n }\n\n <ng-container matColumnDef=\"spacer\">\n <td class=\"watt-table-footer-spacer\" mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n @if (!hideColumnHeaders) {\n <tr mat-header-row *matHeaderRowDef=\"_getColumns()\"></tr>\n }\n <tr\n mat-row\n *matRowDef=\"let row; columns: _getColumns()\"\n [attr.aria-selected]=\"row === activeRow\"\n (click)=\"_onRowClick(row)\"\n [ngClass]=\"{\n 'watt-table-highlight-row': !disabled && !suppressRowHoverHighlight,\n 'watt-table-clickable-row': !disabled && rowClick.observed,\n 'watt-table-active-row': _isActiveRow(row),\n 'watt-table-no-end-divider': hideColumnHeaders,\n }\"\n ></tr>\n\n @if (_toolbar) {\n <tr mat-footer-row *matFooterRowDef=\"['spacer']\"></tr>\n }\n\n @if (_hasFooter()) {\n <tr\n mat-footer-row\n [class.watt-table-hide-footer]=\"loading || dataSource.filteredData.length === 0\"\n *matFooterRowDef=\"_getColumns(); sticky: stickyFooter\"\n ></tr>\n }\n\n <ng-container *matNoDataRow>\n @if (loading) {\n @for (i of [1, 2, 3]; track i) {\n <tr class=\"mat-mdc-row\">\n @for (_ of _getColumns(); track _; let i = $index) {\n <td class=\"mat-mdc-cell\" [class.watt-table-loading-cell]=\"i > 0 || !selectable\"></td>\n }\n </tr>\n }\n }\n </ng-container>\n</table>\n\n@if (_toolbar) {\n <div class=\"watt-table-toolbar\" role=\"toolbar\">\n <ng-container\n *ngTemplateOutlet=\"_toolbar.templateRef; context: { $implicit: _filteredSelection }\"\n />\n </div>\n}\n", styles: ["watt-table{--mat-table-row-item-label-text-font: $primary-font-family;--mat-table-row-item-outline-color: var(--watt-color-neutral-grey-300);--mat-table-header-headline-font: $primary-font-family}watt-table,watt-table .mat-mdc-table{display:grid;position:relative;overflow:auto;min-height:44px}watt-table .mat-mdc-table{grid-template-columns:var(--watt-table-grid-template-columns);grid-auto-rows:max-content;max-height:100%;z-index:1}watt-table .mat-mdc-table thead,watt-table .mat-mdc-table tbody,watt-table .mat-mdc-table tfoot,watt-table .mat-mdc-table tr.mat-mdc-row,watt-table .mat-mdc-table tr.mat-mdc-header-row,watt-table .mat-mdc-table tr.mat-mdc-footer-row{display:contents}watt-table .mat-mdc-table tr.watt-table-hide-footer{display:none}watt-table .mat-mdc-table tr.mat-mdc-header-row{flex:0 0 auto}watt-table .mat-mdc-table th.mat-mdc-header-cell{color:var(--watt-typography-label-color);font-size:.875rem;line-height:1.25rem;font-weight:600;text-transform:uppercase;box-sizing:border-box;display:flex;position:sticky;top:0;padding:0 var(--watt-space-s);height:auto;background:var(--watt-color-primary-ultralight);box-shadow:0 -1px #0000001f inset;border:0;z-index:2!important;white-space:nowrap;-webkit-user-select:none;user-select:none}watt-table .mat-mdc-table td.mat-mdc-footer-cell,watt-table .mat-mdc-table td.mat-mdc-cell{display:flex;align-items:center;min-height:56px;padding:var(--watt-space-s) var(--watt-space-m)}watt-table .mat-mdc-table td.mat-mdc-footer-cell,watt-table .mat-mdc-table tr.mdc-data-table__row:last-child .mat-mdc-cell{border-bottom:1px solid var(--watt-color-neutral-grey-300)}watt-table .mat-mdc-table td.mat-mdc-footer-cell{font-size:.875rem;line-height:1.25rem;font-weight:600;text-transform:none;letter-spacing:0;border-top:2px solid var(--watt-color-neutral-grey-300);background-color:var(--watt-color-neutral-grey-100)}watt-table .mat-mdc-table .watt-table-no-end-divider:last-child .mat-mdc-cell{border-bottom:0px solid var(--watt-color-neutral-grey-300)!important}watt-table .mat-mdc-table .watt-table-clickable-row td{cursor:pointer;-webkit-user-select:text;user-select:text}watt-table .mat-mdc-table .watt-table-highlight-row:hover:not(.watt-table-active-row) td{background:var(--watt-color-neutral-grey-100)}watt-table .mat-mdc-table .watt-table-active-row td{background:var(--watt-color-secondary-ultralight)}watt-table .mat-mdc-table .mat-sort-header-arrow{margin:0}watt-table .mat-mdc-table .watt-table-align-right .mat-sort-header-arrow{margin-right:var(--watt-space-s)}watt-table .mat-mdc-table .watt-table-align-center .mat-sort-header-arrow,watt-table .mat-mdc-table .watt-table-align-left .mat-sort-header-arrow{margin-left:var(--watt-space-s)}watt-table .mat-mdc-table .watt-table-header-cell{padding:.75rem var(--watt-space-s)}watt-table .mat-mdc-table .watt-table-checkbox-cell{justify-content:center}watt-table .mat-mdc-table th.watt-table-checkbox-cell{display:flex;align-items:center}watt-table .mat-mdc-table .watt-table-align-center,watt-table .mat-mdc-table .watt-table-align-center .mat-sort-header-container{justify-content:center}watt-table .mat-mdc-table .watt-table-align-right,watt-table .mat-mdc-table .watt-table-align-right .mat-sort-header-container{justify-content:right}.watt-table-footer-spacer{display:none;height:76px;border:0}.watt-table-has-selection .watt-table-footer-spacer{display:block}.watt-table-has-selection+.watt-table-toolbar{opacity:1;visibility:visible;transition:opacity .3s cubic-bezier(0,0,.2,1),visibility .5s}.watt-table-toolbar{position:absolute;bottom:var(--watt-space-m);left:50%;transform:translate(-50%);display:flex;align-items:center;padding:0 var(--watt-space-m);min-height:44px;border-radius:22px;color:var(--watt-color-primary-contrast);background-color:var(--watt-color-primary);z-index:1;opacity:0;visibility:hidden;transition:none}.watt-table-toolbar .watt-button--disabled{opacity:.4;--watt-button-primary-disabled-color: #fff}.watt-table-loading-cell:before{content:\"\";flex:1;display:block;max-width:200px;height:var(--watt-space-m);border-radius:var(--watt-space-m);opacity:.75;animation:shine 2s infinite linear;background-color:var(--watt-color-neutral-grey-200);background-size:300px;background-position:-100px;background-image:linear-gradient(90deg,var(--watt-color-neutral-grey-300) 0px,var(--watt-color-neutral-grey-200) 40px,var(--watt-color-neutral-grey-300) 80px)}@keyframes shine{40%,to{background-position:200px}}\n"] }]
338
+ }], ctorParameters: () => [], propDecorators: { dataSource: [{
339
+ type: Input
340
+ }], columns: [{
341
+ type: Input
342
+ }], displayedColumns: [{
343
+ type: Input
344
+ }], disabled: [{
345
+ type: Input
346
+ }], description: [{
347
+ type: Input
348
+ }], loading: [{
349
+ type: Input
350
+ }], stickyFooter: [{
351
+ type: Input
352
+ }], resolveHeader: [{
353
+ type: Input
354
+ }], sortBy: [{
355
+ type: Input
356
+ }], sortDirection: [{
357
+ type: Input
358
+ }], sortClear: [{
359
+ type: Input
360
+ }], selectable: [{
361
+ type: Input
362
+ }], suppressRowHoverHighlight: [{
363
+ type: Input
364
+ }], activeRow: [{
365
+ type: Input
366
+ }], activeRowComparator: [{
367
+ type: Input
368
+ }], hideColumnHeaders: [{
369
+ type: Input
370
+ }], selectionChange: [{
371
+ type: Output
372
+ }], rowClick: [{
373
+ type: Output
374
+ }], sortChange: [{
375
+ type: Output
376
+ }], _cells: [{
377
+ type: ContentChildren,
378
+ args: [WattTableCellDirective]
379
+ }], _toolbar: [{
380
+ type: ContentChild,
381
+ args: [WattTableToolbarDirective]
382
+ }], _sort: [{
383
+ type: ViewChild,
384
+ args: [MatSort]
385
+ }] } });
386
+ export class WattTableToolbarSpacerComponent {
387
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: WattTableToolbarSpacerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
388
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.3", type: WattTableToolbarSpacerComponent, isStandalone: true, selector: "watt-table-toolbar-spacer", ngImport: i0, template: '', isInline: true, styles: [":host{width:var(--watt-space-xl)}\n"] });
389
+ }
390
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: WattTableToolbarSpacerComponent, decorators: [{
391
+ type: Component,
392
+ args: [{ selector: 'watt-table-toolbar-spacer', template: '', styles: [":host{width:var(--watt-space-xl)}\n"] }]
393
+ }] });
394
+ export const WATT_TABLE = [
395
+ WattTableComponent,
396
+ WattTableCellDirective,
397
+ WattTableToolbarDirective,
398
+ WattTableToolbarSpacerComponent,
399
+ ];
400
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0dC10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL3dhdHQvcGFja2FnZS90YWJsZS93YXR0LXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2xpYnMvd2F0dC9wYWNrYWdlL3RhYmxlL3dhdHQtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCO0FBQ2pCOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILFlBQVk7QUFDWixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFZLFlBQVksRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRixPQUFPLEVBRUwsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUNULE1BQU0sRUFDTixVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsS0FBSyxFQUVMLE1BQU0sRUFDTixNQUFNLEVBRU4sV0FBVyxFQUNYLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUF1QixNQUFNLHdCQUF3QixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTNCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVB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S0FBSztnQkFRTixhQUFhO3NCQURaLEtBQUs7Z0JBT04sTUFBTTtzQkFETCxLQUFLO2dCQU9OLGFBQWE7c0JBRFosS0FBSztnQkFPTixTQUFTO3NCQURSLEtBQUs7Z0JBT04sVUFBVTtzQkFEVCxLQUFLO2dCQWFOLHlCQUF5QjtzQkFEeEIsS0FBSztnQkFPTixTQUFTO3NCQURSLEtBQUs7Z0JBYU4sbUJBQW1CO3NCQURsQixLQUFLO2dCQU9OLGlCQUFpQjtzQkFEaEIsS0FBSztnQkFPTixlQUFlO3NCQURkLE1BQU07Z0JBT1AsUUFBUTtzQkFEUCxNQUFNO2dCQU9QLFVBQVU7c0JBRFQsTUFBTTtnQkFLUCxNQUFNO3NCQURMLGVBQWU7dUJBQUMsc0JBQXNCO2dCQUt2QyxRQUFRO3NCQURQLFlBQVk7dUJBQUMseUJBQXlCO2dCQUt2QyxLQUFLO3NCQURKLFNBQVM7dUJBQUMsT0FBTzs7QUEwTHBCLE1BQU0sT0FBTywrQkFBK0I7dUdBQS9CLCtCQUErQjsyRkFBL0IsK0JBQStCLHFGQVRoQyxFQUFFOzsyRkFTRCwrQkFBK0I7a0JBWDNDLFNBQVM7K0JBQ0UsMkJBQTJCLFlBQzNCLEVBQUU7O0FBV2QsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLGtCQUFrQjtJQUNsQixzQkFBc0I7SUFDdEIseUJBQXlCO0lBQ3pCLCtCQUErQjtDQUNoQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIExpY2Vuc2Vcbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAyMDIwIEVuZXJnaW5ldCBEYXRhSHViIEEvU1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2UyXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8vI2VuZHJlZ2lvblxuaW1wb3J0IHsgU2VsZWN0aW9uTW9kZWwgfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xuaW1wb3J0IHsgS2V5VmFsdWUsIEtleVZhbHVlUGlwZSwgTmdDbGFzcywgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBEaXJlY3RpdmUsXG4gIGVmZmVjdCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPdXRwdXQsXG4gIHNpZ25hbCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBRdWVyeUxpc3QsIFNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRTb3J0LCBNYXRTb3J0TW9kdWxlLCBTb3J0LCBTb3J0RGlyZWN0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQgeyBNYXRUYWJsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBXYXR0Q2hlY2tib3hDb21wb25lbnQgfSBmcm9tICdAZW5lcmdpbmV0L3dhdHQvY2hlY2tib3gnO1xuaW1wb3J0IHsgV2F0dERhdGVQaXBlIH0gZnJvbSAnQGVuZXJnaW5ldC93YXR0L2NvcmUvZGF0ZSc7XG5pbXBvcnQgeyBXYXR0SWNvbkNvbXBvbmVudCB9IGZyb20gJ0BlbmVyZ2luZXQvd2F0dC9pY29uJztcbmltcG9ydCB7IElXYXR0VGFibGVEYXRhU291cmNlLCBXYXR0VGFibGVEYXRhU291cmNlIH0gZnJvbSAnLi93YXR0LXRhYmxlLWRhdGEtc291cmNlJztcblxuZXhwb3J0IGludGVyZmFjZSBXYXR0VGFibGVDb2x1bW48VD4ge1xuICAvKipcbiAgICogVGhlIGRhdGEgdGhhdCB0aGlzIGNvbHVtbiBzaG91bGQgYmUgYm91bmQgdG8sIGVpdGhlciBhcyBhIHByb3BlcnR5IG9mIGBUYFxuICAgKiBvciBkZXJpdmVkIGZyb20gZWFjaCByb3cgb2YgYFRgIHVzaW5nIGFuIGFjY2Vzc29yIGZ1bmN0aW9uLiAgVXNlIGBudWxsYFxuICAgKiBmb3IgY29sdW1ucyB0aGF0IHNob3VsZCBub3QgYmUgYXNzb2NpYXRlZCB3aXRoIGRhdGEsIGJ1dCBub3RlIHRoYXQgdGhpc1xuICAgKiB3aWxsIGRpc2FibGUgc29ydGluZyBhbmQgYXV0b21hdGljIGNlbGwgcG9wdWxhdGlvbi5cbiAgICovXG4gIGFjY2Vzc29yOiBrZXlvZiBUIHwgKChyb3c6IFQpID0+IHVua25vd24pIHwgbnVsbDtcblxuICAvKipcbiAgICogUmVzb2x2ZSB0aGUgaGVhZGVyIHRleHQgdG8gYSBzdGF0aWMgZGlzcGxheSB2YWx1ZS4gVGhpcyB3aWxsIHByZXZlbnRcbiAgICogdGhlIGByZXNvbHZlSGVhZGVyYCBpbnB1dCBmdW5jdGlvbiBmcm9tIGJlaW5nIGNhbGxlZCBmb3IgdGhpcyBjb2x1bW4uXG4gICAqL1xuICBoZWFkZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIGZvciBkZXRlcm1pbmluZyBjZWxsIGNvbnRlbnQgd2hlbiBub3QgdXNpbmcgdGVtcGxhdGUuIEJ5IGRlZmF1bHQsXG4gICAqIGNlbGwgY29udGVudCBpcyBmb3VuZCB1c2luZyB0aGUgYGFjY2Vzc29yYCAodW5sZXNzIGl0IGlzIGBudWxsYCkuXG4gICAqL1xuICBjZWxsPzogKHJvdzogVCkgPT4gc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFbmFibGUgb3IgZGlzYWJsZSBzb3J0aW5nIGZvciB0aGlzIGNvbHVtbi4gRGVmYXVsdHMgdG8gYHRydWVgXG4gICAqIHVubGVzcyBgYWNjZXNzb3JgIGlzIGBudWxsYC5cbiAgICovXG4gIHNvcnQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGNvbHVtbiBzaXplIHVzaW5nIGdyaWQgc2l6aW5nIHZhbHVlcy4gRGVmYXVsdHMgdG8gYFwiYXV0b1wiYC5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogQWNjZXB0cyBhbGwgb2YgdGhlIENTUyBncmlkIHRyYWNrIHNpemUga2V5d29yZHMgKHN1Y2ggYXMgYG1pbi1jb250ZW50YCxcbiAgICogYG1heC1jb250ZW50YCwgYG1pbm1heCgpYCkgYXMgd2VsbCBhcyBmcmFjdGlvbmFsIChgZnJgKSwgcGVyY2VudGFnZSAoYCVgKVxuICAgKiBhbmQgbGVuZ3RoIChgcHhgLCBgZW1gLCBldGMpIHVuaXRzLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtZ3JpZC8jdHJhY2stc2l6ZXNcbiAgICovXG4gIHNpemU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEhvcml6b250YWxseSBhbGlnbiB0aGUgY29udGVudHMgb2YgdGhlIGNvbHVtbi4gRGVmYXVsdHMgdG8gYFwibGVmdFwiYC5cbiAgICovXG4gIGFsaWduPzogJ2xlZnQnIHwgJ3JpZ2h0JyB8ICdjZW50ZXInO1xuXG4gIC8qKlxuICAgKiBIZWxwZXIgaWNvbiB3aWxsIGJlIHNob3duIGluIHRoZSBoZWFkZXIgY2VsbCwgd2l0aCBhbiBjbGljayBldmVudC5cbiAgICovXG4gIGhlbHBlckFjdGlvbj86ICgpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENTUyBjbGFzcyB0byBhcHBseSB0byB0aGUgaGVhZGVyIGNlbGwgZWxlbWVudC5cbiAgICovXG4gIGhlYWRlckNlbGxDbGFzcz86IHN0cmluZztcblxuICAvKipcbiAgICogQ1NTIGNsYXNzIHRvIGFwcGx5IHRvIHRoZSBkYXRhIGNlbGwgZWxlbWVudC5cbiAgICovXG4gIGRhdGFDZWxsQ2xhc3M/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEZvb3RlciBjb25maWd1cmF0aW9uIGZvciB0aGUgY29sdW1uLlxuICAgKi9cbiAgZm9vdGVyPzogV2F0dFRhYmxlQ29sdW1uRm9vdGVyO1xuXG4gIC8qKlxuICAgKiBXaGVuIHNldCB0byBgdHJ1ZWAsIHRoZSBjb2x1bW4gcmVtYWlucyB2aXNpYmxlIHdoZW4gaG9yaXpvbnRhbGx5IHNjcm9sbGluZy5cbiAgICovXG4gIHN0aWNreUVuZD86IFNpZ25hbDxib29sZWFuPjtcblxuICB0b29sdGlwPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBmb290ZXIgY2VsbCBvZiBhIGNvbHVtbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXYXR0VGFibGVDb2x1bW5Gb290ZXIge1xuICAvKipcbiAgICogVGhlIHZhbHVlIHRoYXQgd2lsbCBiZSBkaXNwbGF5ZWQgaW4gdGhlIGZvb3RlciBjZWxsLlxuICAgKi9cbiAgdmFsdWU/OiBTaWduYWw8c3RyaW5nIHwgbnVtYmVyPjtcblxuICAvKipcbiAgICogQ1NTIGNsYXNzIHRvIGFwcGx5IHRvIHRoZSBmb290ZXIgY2VsbC5cbiAgICovXG4gIGNsYXNzPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlY29yZCBmb3IgZGVmaW5pbmcgY29sdW1ucyB3aXRoIGtleXMgdXNlZCBhcyBjb2x1bW4gaWRlbnRpZmllcnMuXG4gKi9cbmV4cG9ydCB0eXBlIFdhdHRUYWJsZUNvbHVtbkRlZjxUPiA9IFJlY29yZDxzdHJpbmcsIFdhdHRUYWJsZUNvbHVtbjxUPj47XG5cbi8vIFVzZWQgZm9yIHN0cm9uZ2x5IHR5cGluZyB0aGUgc3RydWN0dXJhbCBkaXJlY3RpdmVcbmludGVyZmFjZSBXYXR0VGFibGVDZWxsQ29udGV4dDxUPiB7XG4gICRpbXBsaWNpdDogVDtcbn1cblxuaW50ZXJmYWNlIFdhdHRUYWJsZVRvb2xiYXJDb250ZXh0PFQ+IHtcbiAgJGltcGxpY2l0OiBUO1xufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbd2F0dFRhYmxlQ2VsbF0nLFxufSlcbmV4cG9ydCBjbGFzcyBXYXR0VGFibGVDZWxsRGlyZWN0aXZlPFQ+IHtcbiAgLyoqIFRoZSBXYXR0VGFibGVDb2x1bW4gdGhpcyB0ZW1wbGF0ZSBhcHBsaWVzIHRvLiAqL1xuICBASW5wdXQoJ3dhdHRUYWJsZUNlbGwnKSBjb2x1bW4hOiBXYXR0VGFibGVDb2x1bW48VD47XG4gIEBJbnB1dCgnd2F0dFRhYmxlQ2VsbEhlYWRlcicpIGhlYWRlcj86IHN0cmluZztcbiAgdGVtcGxhdGVSZWYgPSBpbmplY3QoVGVtcGxhdGVSZWY8V2F0dFRhYmxlQ2VsbENvbnRleHQ8VD4+KTtcbiAgc3RhdGljIG5nVGVtcGxhdGVDb250ZXh0R3VhcmQ8VD4oXG4gICAgX2RpcmVjdGl2ZTogV2F0dFRhYmxlQ2VsbERpcmVjdGl2ZTxUPixcbiAgICBjb250ZXh0OiB1bmtub3duXG4gICk6IGNvbnRleHQgaXMgV2F0dFRhYmxlQ2VsbENvbnRleHQ8VD4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t3YXR0VGFibGVUb29sYmFyXScsXG59KVxuZXhwb3J0IGNsYXNzIFdhdHRUYWJsZVRvb2xiYXJEaXJlY3RpdmU8VD4ge1xuICB0ZW1wbGF0ZVJlZiA9IGluamVjdChUZW1wbGF0ZVJlZjxXYXR0VGFibGVUb29sYmFyQ29udGV4dDxUW10+Pik7XG4gIHN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkPFQ+KFxuICAgIF9kaXJlY3RpdmU6IFdhdHRUYWJsZVRvb2xiYXJEaXJlY3RpdmU8VD4sXG4gICAgY29udGV4dDogdW5rbm93blxuICApOiBjb250ZXh0IGlzIFdhdHRUYWJsZVRvb2xiYXJDb250ZXh0PFRbXT4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG5cbi8qKlxuICogVXNhZ2U6XG4gKiBgaW1wb3J0IHsgV0FUVF9UQUJMRSB9IGZyb20gJ0BlbmVyZ2luZXQtZGF0YWh1Yi93YXR0L3RhYmxlJztgXG4gKi9cbkBDb21wb25lbnQoe1xuICBpbXBvcnRzOiBbXG4gICAgTmdDbGFzcyxcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIEtleVZhbHVlUGlwZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBNYXRTb3J0TW9kdWxlLFxuICAgIE1hdFRhYmxlTW9kdWxlLFxuICAgIFdhdHRJY29uQ29tcG9uZW50LFxuICAgIFdhdHRDaGVja2JveENvbXBvbmVudCxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbV2F0dERhdGVQaXBlXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgc2VsZWN0b3I6ICd3YXR0LXRhYmxlJyxcbiAgc3R5bGVVcmxzOiBbJy4vd2F0dC10YWJsZS5jb21wb25lbnQuc2NzcyddLFxuICB0ZW1wbGF0ZVVybDogJy4vd2F0dC10YWJsZS5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIFdhdHRUYWJsZUNvbXBvbmVudDxUPiBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XG4gIC8qKlxuICAgKiBUaGUgdGFibGUncyBzb3VyY2Ugb2YgZGF0YS4gUHJvcGVydHkgc2hvdWxkIG5vdCBiZSBjaGFuZ2VkIGFmdGVyXG4gICAqIGluaXRpYWxpemF0aW9uLCBpbnN0ZWFkIHVwZGF0ZSB0aGUgZGF0YSBvbiB0aGUgaW5zdGFuY2UgaXRzZWxmLlxuICAgKi9cbiAgQElucHV0KCkgZGF0YVNvdXJjZSE6IElXYXR0VGFibGVEYXRhU291cmNlPFQ+O1xuXG4gIC8qKlxuICAgKiBDb2x1bW4gZGVmaW5pdGlvbiByZWNvcmQgd2l0aCBrZXlzIHJlcHJlc2VudGluZyB0aGUgY29sdW1uIGlkZW50aWZpZXJzXG4gICAqIGFuZCB2YWx1ZXMgYmVpbmcgdGhlIGNvbHVtbiBjb25maWd1cmF0aW9uLiBUaGUgb3JkZXIgb2YgdGhlIGNvbHVtbnNcbiAgICogaXMgZGV0ZXJtaW5lZCBieSB0aGUgcHJvcGVydHkgb3JkZXIsIGJ1dCBjYW4gYmUgb3ZlcnJ1bGVkIGJ5IHRoZVxuICAgKiBgZGlzcGxheWVkQ29sdW1uc2AgaW5wdXQuXG4gICAqL1xuICBASW5wdXQoKSBjb2x1bW5zOiBXYXR0VGFibGVDb2x1bW5EZWY8VD4gPSB7fTtcblxuICAvKipcbiAgICogVXNlZCBmb3IgaGlkaW5nIG9yIHJlb3JkZXJpbmcgY29sdW1ucyBkZWZpbmVkIGluIHRoZSBgY29sdW1uc2AgaW5wdXQuXG4gICAqL1xuICBASW5wdXQoKSBkaXNwbGF5ZWRDb2x1bW5zPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFVzZWQgZm9yIGRpc2FibGluZyB0aGUgdGFibGUuIFRoaXMgd2lsbCBkaXNhYmxlIGFsbCB1c2VyIGludGVyYWN0aW9uXG4gICAqL1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBQcm92aWRlIGEgZGVzY3JpcHRpb24gb2YgdGhlIHRhYmxlIGZvciB2aXN1YWxseSBpbXBhaXJlZCB1c2Vycy5cbiAgICovXG4gIEBJbnB1dCgpIGRlc2NyaXB0aW9uID0gJyc7XG5cbiAgLyoqXG4gICAqIElmIHNldCB0byBgdHJ1ZWAsIHRoZSB0YWJsZSB3aWxsIHNob3cgYSBsb2FkaW5nIGluZGljYXRvclxuICAgKiB3aGVuIHRoZXJlIGlzIG5vIGRhdGEuXG4gICAqL1xuICBASW5wdXQoKSBsb2FkaW5nID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIElmIHRydWUgdGhlIGZvb3RlciB3aWxsIGJlIHN0aWNreVxuICAgKi9cbiAgQElucHV0KCkgc3RpY2t5Rm9vdGVyID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGNhbGxiYWNrIGZvciBkZXRlcm1pbmluZyBoZWFkZXIgdGV4dCBmb3IgY29sdW1ucyB0aGF0XG4gICAqIGRvIG5vdCBoYXZlIGEgc3RhdGljIGhlYWRlciB0ZXh0IHNldCBpbiB0aGUgY29sdW1uIGRlZmluaXRpb24uXG4gICAqIFVzZWZ1bCBmb3IgcHJvdmlkaW5nIHRyYW5zbGF0aW9ucyBvZiBjb2x1bW4gaGVhZGVycy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHJlc29sdmVIZWFkZXI/OiAoa2V5OiBzdHJpbmcpID0+IHN0cmluZztcblxuICAvKipcbiAgICogSWRlbnRpZmllciBmb3IgY29sdW1uIHRoYXQgc2hvdWxkIGJlIHNvcnRlZCBpbml0aWFsbHkuXG4gICAqL1xuICBASW5wdXQoKVxuICBzb3J0QnkgPSAnJztcblxuICAvKipcbiAgICogVGhlIHNvcnQgZGlyZWN0aW9uIG9mIHRoZSBpbml0aWFsbHkgc29ydGVkIGNvbHVtbi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNvcnREaXJlY3Rpb246IFNvcnREaXJlY3Rpb24gPSAnJztcblxuICAvKipcbiAgICogV2hldGhlciB0byBhbGxvdyB0aGUgdXNlciB0byBjbGVhciB0aGUgc29ydC4gRGVmYXVsdHMgdG8gYHRydWVgLlxuICAgKi9cbiAgQElucHV0KClcbiAgc29ydENsZWFyID0gdHJ1ZTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgdGFibGUgc2hvdWxkIGluY2x1ZGUgYSBjaGVja2JveCBjb2x1bW4gZm9yIHJvdyBzZWxlY3Rpb24uXG4gICAqL1xuICBASW5wdXQoKVxuICBzZWxlY3RhYmxlID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGluaXRpYWxseSBzZWxlY3RlZCByb3dzLiBPbmx5IHdvcmtzIHdoZW4gc2VsZWN0YWJsZSBpcyBgdHJ1ZWAuXG4gICAqL1xuXG4gIGluaXRpYWxTZWxlY3Rpb24gPSBpbnB1dDxUW10+KFtdKTtcblxuICAvKipcbiAgICogU2V0IHRvIHRydWUgdG8gZGlzYWJsZSByb3cgaG92ZXIgaGlnaGxpZ2h0LlxuICAgKi9cbiAgQElucHV0KClcbiAgc3VwcHJlc3NSb3dIb3ZlckhpZ2hsaWdodCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBIaWdobGlnaHRzIHRoZSBjdXJyZW50bHkgYWN0aXZlIHJvdy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGFjdGl2ZVJvdz86IFQ7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBjb21wYXJhdG9yIGZ1bmN0aW9uIHRvIGRldGVybWluZSBpZiB0d28gcm93cyBhcmUgZXF1YWwuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFRoZSBkZWZhdWx0IGJlaGF2aW9yIGZvciBkZXRlcm1pbmluZyB0aGUgYWN0aXZlIHJvdyBpcyB0byBjb21wYXJlXG4gICAqIHRoZSB0d28gcm93IG9iamVjdHMgdXNpbmcgc3RyaWN0IGVxdWFsaXR5IGNoZWNrLiBUaGlzIGlzIHN1ZmZpY2llbnRcbiAgICogYXMgbG9uZyBhcyB0aGUgaW5zdGFuY2VzIHJlbWFpbiB0aGUgc2FtZSwgd2hpY2ggbWF5IG5vdCBiZSB0aGUgY2FzZVxuICAgKiBpZiByb3cgZGF0YSBpcyByZWNyZWF0ZWQgb3IgcmVidWlsdCBmcm9tIHNlcmlhbGl6YXRpb24uXG4gICAqL1xuICBASW5wdXQoKVxuICBhY3RpdmVSb3dDb21wYXJhdG9yPzogKGN1cnJlbnRSb3c6IFQsIGFjdGl2ZVJvdzogVCkgPT4gYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgc2V0IHRvIGB0cnVlYCwgdGhlIGNvbHVtbiBoZWFkZXJzIHdpbGwgbm90IGJlIHNob3duLiBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gICAqL1xuICBASW5wdXQoKVxuICBoaWRlQ29sdW1uSGVhZGVycyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuZXZlciB0aGUgc2VsZWN0aW9uIHVwZGF0ZXMuIE9ubHkgd29ya3Mgd2hlbiBzZWxlY3RhYmxlIGlzIGB0cnVlYC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFRbXT4oKTtcblxuICAvKipcbiAgICogRW1pdHMgd2hlbmV2ZXIgYSByb3cgaXMgY2xpY2tlZC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICByb3dDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8VD4oKTtcblxuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSB1c2VyIGNoYW5nZXMgdGhlIGFjdGl2ZSBzb3J0IG9yIHNvcnQgZGlyZWN0aW9uLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHNvcnRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFNvcnQ+KCk7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgQENvbnRlbnRDaGlsZHJlbihXYXR0VGFibGVDZWxsRGlyZWN0aXZlKVxuICBfY2VsbHMhOiBRdWVyeUxpc3Q8V2F0dFRhYmxlQ2VsbERpcmVjdGl2ZTxUPj47XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgQENvbnRlbnRDaGlsZChXYXR0VGFibGVUb29sYmFyRGlyZWN0aXZlKVxuICBfdG9vbGJhcj86IFdhdHRUYWJsZVRvb2xiYXJEaXJlY3RpdmU8VD47XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgQFZpZXdDaGlsZChNYXRTb3J0KVxuICBfc29ydCE6IE1hdFNvcnQ7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgX3NlbGVjdGlvbk1vZGVsID0gbmV3IFNlbGVjdGlvbk1vZGVsPFQ+KHRydWUsIFtdKTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBfY2hlY2tib3hDb2x1bW4gPSAnX19jaGVja2JveENvbHVtbl9fJztcblxuICAvKiogQGlnbm9yZSAqL1xuICBfZWxlbWVudCA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgX2RhdGVQaXBlID0gaW5qZWN0KFdhdHREYXRlUGlwZSk7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgX2hhc0Zvb3RlciA9IHNpZ25hbChmYWxzZSk7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBmb3JtYXRDZWxsRGF0YShjZWxsOiB1bmtub3duKSB7XG4gICAgaWYgKCFjZWxsKSByZXR1cm4gJ+KAlCc7XG4gICAgaWYgKGNlbGwgaW5zdGFuY2VvZiBEYXRlKSByZXR1cm4gdGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKGNlbGwpO1xuICAgIHJldHVybiBjZWxsO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBnZXRDZWxsRGF0YShyb3c6IFQsIGNvbHVtbj86IFdhdHRUYWJsZUNvbHVtbjxUPikge1xuICAgIGlmICghY29sdW1uPy5hY2Nlc3NvcikgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgeyBhY2Nlc3NvciB9ID0gY29sdW1uO1xuICAgIGNvbnN0IGNlbGwgPSB0eXBlb2YgYWNjZXNzb3IgPT09ICdmdW5jdGlvbicgPyBhY2Nlc3Nvcihyb3cpIDogcm93W2FjY2Vzc29yXTtcbiAgICByZXR1cm4gdGhpcy5mb3JtYXRDZWxsRGF0YShjZWxsKTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgY2hlY2tIYXNGb290ZXIoKTogdm9pZCB7XG4gICAgdGhpcy5faGFzRm9vdGVyLnNldChPYmplY3QudmFsdWVzKHRoaXMuY29sdW1ucykuc29tZSgoY29sdW1uKSA9PiAhIWNvbHVtbi5mb290ZXIpKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZXRTZWxlY3Rpb24oLi4uKHRoaXMuaW5pdGlhbFNlbGVjdGlvbigpID8/IFtdKSk7XG4gICAgfSk7XG4gICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwuY2hhbmdlZFxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoKSA9PiB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3RlZCksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChzZWxlY3Rpb24pID0+IHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoc2VsZWN0aW9uKSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKHRoaXMuZGF0YVNvdXJjZSA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG5cbiAgICB0aGlzLmNoZWNrSGFzRm9vdGVyKCk7XG4gICAgdGhpcy5kYXRhU291cmNlLnNvcnQgPSB0aGlzLl9zb3J0O1xuICAgIGlmICh0aGlzLmRhdGFTb3VyY2UgaW5zdGFuY2VvZiBXYXR0VGFibGVEYXRhU291cmNlID09PSBmYWxzZSkgcmV0dXJuO1xuICAgIHRoaXMuZGF0YVNvdXJjZS5zb3J0aW5nRGF0YUFjY2Vzc29yID0gKHJvdzogVCwgc29ydEhlYWRlcklkOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHNvcnRDb2x1bW4gPSB0aGlzLmNvbHVtbnNbc29ydEhlYWRlcklkXTtcbiAgICAgIGlmICghc29ydENvbHVtbj8uYWNjZXNzb3IpIHJldHVybiAnJztcblxuICAgICAgLy8gQWNjZXNzIHJhdyB2YWx1ZSBmb3Igc29ydGluZywgaW5zdGVhZCBvZiBhcHBseWluZyBkZWZhdWx0IGZvcm1hdHRpbmcuXG4gICAgICBjb25zdCB7IGFjY2Vzc29yIH0gPSBzb3J0Q29sdW1uO1xuICAgICAgY29uc3QgY2VsbCA9IHR5cGVvZiBhY2Nlc3NvciA9PT0gJ2Z1bmN0aW9uJyA/IGFjY2Vzc29yKHJvdykgOiByb3dbYWNjZXNzb3JdO1xuXG4gICAgICAvLyBNYWtlIHNvcnRpbmcgYnkgdGV4dCBjYXNlIGluc2Vuc2l0aXZlLlxuICAgICAgaWYgKHR5cGVvZiBjZWxsID09PSAnc3RyaW5nJykgcmV0dXJuIGNlbGwudG9Mb3dlckNhc2UoKTtcbiAgICAgIGlmIChjZWxsIGluc3RhbmNlb2YgRGF0ZSkgcmV0dXJuIGNlbGwuZ2V0VGltZSgpO1xuICAgICAgcmV0dXJuIGNlbGwgYXMgbnVtYmVyO1xuICAgIH07XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ2NvbHVtbnMnXSB8fCBjaGFuZ2VzWydkaXNwbGF5ZWRDb2x1bW5zJ10gfHwgY2hhbmdlc1snc2VsZWN0YWJsZSddKSB7XG4gICAgICBjb25zdCB7IGRpc3BsYXllZENvbHVtbnMgfSA9IHRoaXM7XG5cbiAgICAgIGlmICh0aGlzLmNvbHVtbnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuXG4gICAgICBjb25zdCBzaXppbmcgPSBPYmplY3Qua2V5cyh0aGlzLmNvbHVtbnMpXG4gICAgICAgIC5maWx0ZXIoKGtleSkgPT4gIWRpc3BsYXllZENvbHVtbnMgfHwgZGlzcGxheWVkQ29sdW1ucy5pbmNsdWRlcyhrZXkpKVxuICAgICAgICAubWFwKChrZXkpID0+IHRoaXMuY29sdW1uc1trZXldLnNpemUpXG4gICAgICAgIC5tYXAoKHNpemUpID0+IHNpemUgPz8gJ2F1dG8nKTtcblxuICAgICAgaWYgKHRoaXMuc2VsZWN0YWJsZSkge1xuICAgICAgICAvLyBBZGQgc3BhY2UgZm9yIGV4dHJhIGNoZWNrYm94IGNvbHVtblxuICAgICAgICBzaXppbmcudW5zaGlmdCgndmFyKC0td2F0dC1zcGFjZS14bCknKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KFxuICAgICAgICAnLS13YXR0LXRhYmxlLWdyaWQtdGVtcGxhdGUtY29sdW1ucycsXG4gICAgICAgIHNpemluZy5qb2luKCcgJylcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuY2hlY2tIYXNGb290ZXIoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXJzIHRoZSBzZWxlY3Rpb24uIE9ubHkgd29ya3Mgd2hlbiBzZWxlY3RhYmxlIGlzIGB0cnVlYC5cbiAgICovXG4gIGNsZWFyU2VsZWN0aW9uKCkge1xuICAgIGlmICh0aGlzLnNlbGVjdGFibGUpIHtcbiAgICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsLmNsZWFyKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgZ2V0IF9jb2x1bW5TZWxlY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuZGF0YVNvdXJjZS5maWx0ZXJlZERhdGEubGVuZ3RoID09PSAwKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRoaXMuZGF0YVNvdXJjZS5maWx0ZXJlZERhdGEuZXZlcnkoKHJvdykgPT4gdGhpcy5fc2VsZWN0aW9uTW9kZWwuaXNTZWxlY3RlZChyb3cpKTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHNldCBfY29sdW1uU2VsZWN0aW9uKHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZXRTZWxlY3Rpb24oLi4udGhpcy5kYXRhU291cmNlLmZpbHRlcmVkRGF0YSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2xlYXJTZWxlY3Rpb24oKTtcbiAgICB9XG4gIH1cblxuICBnZXQgX2ZpbHRlcmVkU2VsZWN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3RlZC5maWx0ZXIoKHJvdykgPT5cbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5maWx0ZXJlZERhdGEuaW5jbHVkZXMocm93KVxuICAgICk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBfZ2V0Q29sdW1ucygpIHtcbiAgICBpZiAodGhpcy5jb2x1bW5zID09PSB1bmRlZmluZWQpIHJldHVybiBbXTtcbiAgICBjb25zdCBjb2x1bW5zID0gdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID8/IE9iamVjdC5rZXlzKHRoaXMuY29sdW1ucyk7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0YWJsZSA/IFt0aGlzLl9jaGVja2JveENvbHVtbiwgLi4uY29sdW1uc10gOiBjb2x1bW5zO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgX2dldENvbHVtblRlbXBsYXRlKGNvbHVtbjogV2F0dFRhYmxlQ29sdW1uPFQ+KSB7XG4gICAgcmV0dXJuIHRoaXMuX2NlbGxzLmZpbmQoKGl0ZW0pID0+IGl0ZW0uY29sdW1uID09PSBjb2x1bW4pPy50ZW1wbGF0ZVJlZjtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIF9nZXRDb2x1bW5IZWFkZXIoY29sdW1uOiBLZXlWYWx1ZTxzdHJpbmcsIFdhdHRUYWJsZUNvbHVtbjxUPj4pIHtcbiAgICBpZiAodHlwZW9mIGNvbHVtbi52YWx1ZS5oZWFkZXIgPT09ICdzdHJpbmcnKSByZXR1cm4gY29sdW1uLnZhbHVlLmhlYWRlcjtcbiAgICBjb25zdCBjZWxsID0gdGhpcy5fY2VsbHMuZmluZCgoaXRlbSkgPT4gaXRlbS5jb2x1bW4gPT09IGNvbHVtbi52YWx1ZSk7XG4gICAgcmV0dXJuIGNlbGw/LmhlYWRlciA/PyB0aGlzLnJlc29sdmVIZWFkZXI/Lihjb2x1bW4ua2V5KSA/PyBjb2x1bW4ua2V5O1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgX2dldENvbHVtbkhlbHBlckFjdGlvbihjb2x1bW46IEtleVZhbHVlPHN0cmluZywgV2F0dFRhYmxlQ29sdW1uPFQ+Pikge1xuICAgIHJldHVybiBjb2x1bW4udmFsdWUuaGVscGVyQWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgX2dldENvbHVtbkhlYWRlclRvb2x0aXAoY29sdW1uOiBLZXlWYWx1ZTxzdHJpbmcsIFdhdHRUYWJsZUNvbHVtbjxUPj4pIHtcbiAgICByZXR1cm4gY29sdW1uLnZhbHVlLnRvb2x0aXA7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBfZ2V0Q29sdW1uQ2VsbChjb2x1bW46IEtleVZhbHVlPHN0cmluZywgV2F0dFRhYmxlQ29sdW1uPFQ+Piwgcm93OiBUKSB7XG4gICAgcmV0dXJuIGNvbHVtbi52YWx1ZS5jZWxsPy4ocm93KSA/PyB0aGlzLmdldENlbGxEYXRhKHJvdywgY29sdW1uLnZhbHVlKTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIF9pc0FjdGl2ZVJvdyhyb3c6IFQpIHtcbiAgICBpZiAoIXRoaXMuYWN0aXZlUm93KSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlUm93Q29tcGFyYXRvclxuICAgICAgPyB0aGlzLmFjdGl2ZVJvd0NvbXBhcmF0b3Iocm93LCB0aGlzLmFjdGl2ZVJvdylcbiAgICAgIDogcm93ID09PSB0aGlzLmFjdGl2ZVJvdztcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIF9vblJvd0NsaWNrKHJvdzogVCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHdpbmRvdy5nZXRTZWxlY3Rpb24oKT8udG9TdHJpbmcoKSAhPT0gJycpIHJldHVybjtcbiAgICB0aGlzLnJvd0NsaWNrLmVtaXQocm93KTtcbiAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3YXR0LXRhYmxlLXRvb2xiYXItc3BhY2VyJyxcbiAgdGVtcGxhdGU6ICcnLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIHdpZHRoOiB2YXIoLS13YXR0LXNwYWNlLXhsKTtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBXYXR0VGFibGVUb29sYmFyU3BhY2VyQ29tcG9uZW50IHt9XG5cbmV4cG9ydCBjb25zdCBXQVRUX1RBQkxFID0gW1xuICBXYXR0VGFibGVDb21wb25lbnQsXG4gIFdhdHRUYWJsZUNlbGxEaXJlY3RpdmUsXG4gIFdhdHRUYWJsZVRvb2xiYXJEaXJlY3RpdmUsXG4gIFdhdHRUYWJsZVRvb2xiYXJTcGFjZXJDb21wb25lbnQsXG5dO1xuIiwiPCEtLVxuQGxpY2Vuc2VcbkNvcHlyaWdodCAyMDIwIEVuZXJnaW5ldCBEYXRhSHViIEEvU1xuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlMlwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4tLT5cbjx0YWJsZVxuICBtYXQtdGFibGVcbiAgbWF0U29ydFxuICByb2xlPVwidHJlZWdyaWRcIlxuICBbbmdDbGFzc109XCJ7ICd3YXR0LXRhYmxlLWhhcy1zZWxlY3Rpb24nOiBfZmlsdGVyZWRTZWxlY3Rpb24ubGVuZ3RoID4gMCB9XCJcbiAgW21hdFNvcnRBY3RpdmVdPVwic29ydEJ5XCJcbiAgW21hdFNvcnREaXJlY3Rpb25dPVwic29ydERpcmVjdGlvblwiXG4gIFttYXRTb3J0RGlzYWJsZUNsZWFyXT1cIiFzb3J0Q2xlYXJcIlxuICBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCJcbiAgW2F0dHIuYXJpYS1sYWJlbF09XCJkZXNjcmlwdGlvblwiXG4gIChtYXRTb3J0Q2hhbmdlKT1cInNvcnRDaGFuZ2UuZW1pdCgkZXZlbnQpXCJcbj5cbiAgQGlmIChzZWxlY3RhYmxlKSB7XG4gICAgPG5nLWNvbnRhaW5lciBbbWF0Q29sdW1uRGVmXT1cIl9jaGVja2JveENvbHVtblwiIFtzdGlja3ldPVwidHJ1ZVwiPlxuICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBjbGFzcz1cIndhdHQtdGFibGUtY2hlY2tib3gtY2VsbFwiPlxuICAgICAgICA8d2F0dC1jaGVja2JveCBbKG5nTW9kZWwpXT1cIl9jb2x1bW5TZWxlY3Rpb25cIiAvPlxuICAgICAgPC90aD5cbiAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIiBjbGFzcz1cIndhdHQtdGFibGUtY2hlY2tib3gtY2VsbFwiPlxuICAgICAgICA8d2F0dC1jaGVja2JveFxuICAgICAgICAgIFtuZ01vZGVsXT1cIl9zZWxlY3Rpb25Nb2RlbC5pc1NlbGVjdGVkKHJvdylcIlxuICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIl9zZWxlY3Rpb25Nb2RlbC50b2dnbGUocm93KVwiXG4gICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgIC8+XG4gICAgICA8L3RkPlxuICAgIDwvbmctY29udGFpbmVyPlxuICB9XG5cbiAgQGZvciAoY29sdW1uIG9mIGNvbHVtbnMgfCBrZXl2YWx1ZTsgdHJhY2sgY29sdW1uLmtleSkge1xuICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJjb2x1bW4ua2V5XCIgW3N0aWNreUVuZF09XCJjb2x1bW4udmFsdWUuc3RpY2t5RW5kPy4oKVwiPlxuICAgICAgPHRoXG4gICAgICAgIG1hdC1oZWFkZXItY2VsbFxuICAgICAgICAqbWF0SGVhZGVyQ2VsbERlZlxuICAgICAgICBjbGFzcz1cIndhdHQtdGFibGUtYWxpZ24te3sgY29sdW1uLnZhbHVlLmFsaWduID8/ICdsZWZ0JyB9fSB7e1xuICAgICAgICAgIGNvbHVtbi52YWx1ZS5oZWFkZXJDZWxsQ2xhc3NcbiAgICAgICAgfX1cIlxuICAgICAgPlxuICAgICAgICBAaWYgKF9nZXRDb2x1bW5IZWxwZXJBY3Rpb24oY29sdW1uKTsgYXMgYWN0aW9uKSB7XG4gICAgICAgICAgPHdhdHQtaWNvbiBuYW1lPVwiaGVscFwiIChjbGljayk9XCJhY3Rpb24oKVwiIC8+XG4gICAgICAgIH1cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJ3YXR0LXRhYmxlLWhlYWRlci1jZWxsXCJcbiAgICAgICAgICBtYXQtc29ydC1oZWFkZXJcbiAgICAgICAgICBbYXJyb3dQb3NpdGlvbl09XCJjb2x1bW4udmFsdWUuYWxpZ24gPT09ICdyaWdodCcgPyAnYmVmb3JlJyA6ICdhZnRlcidcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhY29sdW1uLnZhbHVlLmFjY2Vzc29yIHx8IGNvbHVtbi52YWx1ZS5zb3J0ID09PSBmYWxzZVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBfZ2V0Q29sdW1uSGVhZGVyKGNvbHVtbikgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIEBpZiAoX2dldENvbHVtbkhlYWRlclRvb2x0aXAoY29sdW1uKTsgYXMgdG9vbHRpcCkge1xuICAgICAgICAgIDx3YXR0LWljb24gW3RpdGxlXT1cInRvb2x0aXBcIiBuYW1lPVwiaW5mb1wiIC8+XG4gICAgICAgIH1cbiAgICAgIDwvdGg+XG4gICAgICA8dGRcbiAgICAgICAgbWF0LWNlbGxcbiAgICAgICAgKm1hdENlbGxEZWY9XCJsZXQgcm93XCJcbiAgICAgICAgY2xhc3M9XCJ3YXR0LXRhYmxlLWFsaWduLXt7IGNvbHVtbi52YWx1ZS5hbGlnbiA/PyAnbGVmdCcgfX0ge3sgY29sdW1uLnZhbHVlLmRhdGFDZWxsQ2xhc3MgfX1cIlxuICAgICAgPlxuICAgICAgICBAaWYgKF9nZXRDb2x1bW5UZW1wbGF0ZShjb2x1bW4udmFsdWUpOyBhcyB0ZW1wbGF0ZSkge1xuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiByb3cgfVwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIHt7IF9nZXRDb2x1bW5DZWxsKGNvbHVtbiwgcm93KSB9fVxuICAgICAgICB9XG4gICAgICA8L3RkPlxuXG4gICAgICBAaWYgKF9oYXNGb290ZXIoKSkge1xuICAgICAgICA8dGRcbiAgICAgICAgICBtYXQtZm9vdGVyLWNlbGxcbiAgICAgICAgICAqbWF0Rm9vdGVyQ2VsbERlZlxuICAgICAgICAgIGNsYXNzPVwie3sgY29sdW1uLnZhbHVlLmZvb3Rlcj8uY2xhc3MgfX0gd2F0dC10YWJsZS1hbGlnbi17e1xuICAgICAgICAgICAgY29sdW1uLnZhbHVlLmFsaWduID8/ICdsZWZ0J1xuICAgICAgICAgIH19IFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBjb2x1bW4udmFsdWUuZm9vdGVyPy52YWx1ZT8uKCkgfX1cbiAgICAgICAgPC90ZD5cbiAgICAgIH1cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgfVxuXG4gIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwic3BhY2VyXCI+XG4gICAgPHRkIGNsYXNzPVwid2F0dC10YWJsZS1mb290ZXItc3BhY2VyXCIgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmPjwvdGQ+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIEBpZiAoIWhpZGVDb2x1bW5IZWFkZXJzKSB7XG4gICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJfZ2V0Q29sdW1ucygpXCI+PC90cj5cbiAgfVxuICA8dHJcbiAgICBtYXQtcm93XG4gICAgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IF9nZXRDb2x1bW5zKClcIlxuICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwicm93ID09PSBhY3RpdmVSb3dcIlxuICAgIChjbGljayk9XCJfb25Sb3dDbGljayhyb3cpXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnd2F0dC10YWJsZS1oaWdobGlnaHQtcm93JzogIWRpc2FibGVkICYmICFzdXBwcmVzc1Jvd0hvdmVySGlnaGxpZ2h0LFxuICAgICAgJ3dhdHQtdGFibGUtY2xpY2thYmxlLXJvdyc6ICFkaXNhYmxlZCAmJiByb3dDbGljay5vYnNlcnZlZCxcbiAgICAgICd3YXR0LXRhYmxlLWFjdGl2ZS1yb3cnOiBfaXNBY3RpdmVSb3cocm93KSxcbiAgICAgICd3YXR0LXRhYmxlLW5vLWVuZC1kaXZpZGVyJzogaGlkZUNvbHVtbkhlYWRlcnMsXG4gICAgfVwiXG4gID48L3RyPlxuXG4gIEBpZiAoX3Rvb2xiYXIpIHtcbiAgICA8dHIgbWF0LWZvb3Rlci1yb3cgKm1hdEZvb3RlclJvd0RlZj1cIlsnc3BhY2VyJ11cIj48L3RyPlxuICB9XG5cbiAgQGlmIChfaGFzRm9vdGVyKCkpIHtcbiAgICA8dHJcbiAgICAgIG1hdC1mb290ZXItcm93XG4gICAgICBbY2xhc3Mud2F0dC10YWJsZS1oaWRlLWZvb3Rlcl09XCJsb2FkaW5nIHx8IGRhdGFTb3VyY2UuZmlsdGVyZWREYXRhLmxlbmd0aCA9PT0gMFwiXG4gICAgICAqbWF0Rm9vdGVyUm93RGVmPVwiX2dldENvbHVtbnMoKTsgc3RpY2t5OiBzdGlja3lGb290ZXJcIlxuICAgID48L3RyPlxuICB9XG5cbiAgPG5nLWNvbnRhaW5lciAqbWF0Tm9EYXRhUm93PlxuICAgIEBpZiAobG9hZGluZykge1xuICAgICAgQGZvciAoaSBvZiBbMSwgMiwgM107IHRyYWNrIGkpIHtcbiAgICAgICAgPHRyIGNsYXNzPVwibWF0LW1kYy1yb3dcIj5cbiAgICAgICAgICBAZm9yIChfIG9mIF9nZXRDb2x1bW5zKCk7IHRyYWNrIF87IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJtYXQtbWRjLWNlbGxcIiBbY2xhc3Mud2F0dC10YWJsZS1sb2FkaW5nLWNlbGxdPVwiaSA+IDAgfHwgIXNlbGVjdGFibGVcIj48L3RkPlxuICAgICAgICAgIH1cbiAgICAgICAgPC90cj5cbiAgICAgIH1cbiAgICB9XG4gIDwvbmctY29udGFpbmVyPlxuPC90YWJsZT5cblxuQGlmIChfdG9vbGJhcikge1xuICA8ZGl2IGNsYXNzPVwid2F0dC10YWJsZS10b29sYmFyXCIgcm9sZT1cInRvb2xiYXJcIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIl90b29sYmFyLnRlbXBsYXRlUmVmOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogX2ZpbHRlcmVkU2VsZWN0aW9uIH1cIlxuICAgIC8+XG4gIDwvZGl2PlxufVxuIl19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5lcmdpbmV0LXdhdHQtdGFicy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvd2F0dC9wYWNrYWdlL3RhYnMvZW5lcmdpbmV0LXdhdHQtdGFicy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -0,0 +1,31 @@
1
+ //#region License
2
+ /**
3
+ * @license
4
+ * Copyright 2020 Energinet DataHub A/S
5
+ *
6
+ * Licensed under the Apache License, Version 2.0 (the "License2");
7
+ * you may not use this file except in compliance with the License.
8
+ * You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ */
18
+ //#endregion
19
+ import { WattLinkTabComponent } from './watt-link-tab.component';
20
+ import { WattLinkTabsComponent } from './watt-link-tabs.component';
21
+ import { WattTabComponent } from './watt-tab.component';
22
+ import { WattTabsActionComponent } from './watt-tabs-action.component';
23
+ import { WattTabsComponent } from './watt-tabs.component';
24
+ export { WattTabComponent } from './watt-tab.component';
25
+ export { WattTabsActionComponent } from './watt-tabs-action.component';
26
+ export { WattTabsComponent } from './watt-tabs.component';
27
+ export { WattLinkTabComponent } from './watt-link-tab.component';
28
+ export { WattLinkTabsComponent } from './watt-link-tabs.component';
29
+ export const WATT_TABS = [WattTabsComponent, WattTabComponent, WattTabsActionComponent];
30
+ export const WATT_LINK_TABS = [WattLinkTabsComponent, WattLinkTabComponent];
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL3dhdHQvcGFja2FnZS90YWJzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlCQUFpQjtBQUNqQjs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxZQUFZO0FBQ1osT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFbkUsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztBQUN4RixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxxQkFBcUIsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIExpY2Vuc2Vcbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAyMDIwIEVuZXJnaW5ldCBEYXRhSHViIEEvU1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2UyXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8vI2VuZHJlZ2lvblxuaW1wb3J0IHsgV2F0dExpbmtUYWJDb21wb25lbnQgfSBmcm9tICcuL3dhdHQtbGluay10YWIuY29tcG9uZW50JztcbmltcG9ydCB7IFdhdHRMaW5rVGFic0NvbXBvbmVudCB9IGZyb20gJy4vd2F0dC1saW5rLXRhYnMuY29tcG9uZW50JztcblxuaW1wb3J0IHsgV2F0dFRhYkNvbXBvbmVudCB9IGZyb20gJy4vd2F0dC10YWIuY29tcG9uZW50JztcbmltcG9ydCB7IFdhdHRUYWJzQWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi93YXR0LXRhYnMtYWN0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXYXR0VGFic0NvbXBvbmVudCB9IGZyb20gJy4vd2F0dC10YWJzLmNvbXBvbmVudCc7XG5cbmV4cG9ydCB7IFdhdHRUYWJDb21wb25lbnQgfSBmcm9tICcuL3dhdHQtdGFiLmNvbXBvbmVudCc7XG5leHBvcnQgeyBXYXR0VGFic0FjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vd2F0dC10YWJzLWFjdGlvbi5jb21wb25lbnQnO1xuZXhwb3J0IHsgV2F0dFRhYnNDb21wb25lbnQgfSBmcm9tICcuL3dhdHQtdGFicy5jb21wb25lbnQnO1xuXG5leHBvcnQgeyBXYXR0TGlua1RhYkNvbXBvbmVudCB9IGZyb20gJy4vd2F0dC1saW5rLXRhYi5jb21wb25lbnQnO1xuZXhwb3J0IHsgV2F0dExpbmtUYWJzQ29tcG9uZW50IH0gZnJvbSAnLi93YXR0LWxpbmstdGFicy5jb21wb25lbnQnO1xuXG5leHBvcnQgY29uc3QgV0FUVF9UQUJTID0gW1dhdHRUYWJzQ29tcG9uZW50LCBXYXR0VGFiQ29tcG9uZW50LCBXYXR0VGFic0FjdGlvbkNvbXBvbmVudF07XG5leHBvcnQgY29uc3QgV0FUVF9MSU5LX1RBQlMgPSBbV2F0dExpbmtUYWJzQ29tcG9uZW50LCBXYXR0TGlua1RhYkNvbXBvbmVudF07XG4iXX0=
@@ -0,0 +1,34 @@
1
+ //#region License
2
+ /**
3
+ * @license
4
+ * Copyright 2020 Energinet DataHub A/S
5
+ *
6
+ * Licensed under the Apache License, Version 2.0 (the "License2");
7
+ * you may not use this file except in compliance with the License.
8
+ * You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ */
18
+ //#endregion
19
+ import { Component, input } from '@angular/core';
20
+ import * as i0 from "@angular/core";
21
+ export class WattLinkTabComponent {
22
+ label = input.required();
23
+ link = input.required();
24
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: WattLinkTabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
25
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.0.3", type: WattLinkTabComponent, isStandalone: true, selector: "watt-link-tab", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, link: { classPropertyName: "link", publicName: "link", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: ``, isInline: true });
26
+ }
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: WattLinkTabComponent, decorators: [{
28
+ type: Component,
29
+ args: [{
30
+ selector: 'watt-link-tab',
31
+ template: ``,
32
+ }]
33
+ }] });
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0dC1saW5rLXRhYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL3dhdHQvcGFja2FnZS90YWJzL3dhdHQtbGluay10YWIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlCQUFpQjtBQUNqQjs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxZQUFZO0FBQ1osT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTWpELE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztJQUNqQyxJQUFJLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO3VHQUZyQixvQkFBb0I7MkZBQXBCLG9CQUFvQixnVUFGckIsRUFBRTs7MkZBRUQsb0JBQW9CO2tCQUpoQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO29CQUN6QixRQUFRLEVBQUUsRUFBRTtpQkFDYiIsInNvdXJjZXNDb250ZW50IjpbIi8vI3JlZ2lvbiBMaWNlbnNlXG4vKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgMjAyMCBFbmVyZ2luZXQgRGF0YUh1YiBBL1NcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlMlwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vLyNlbmRyZWdpb25cbmltcG9ydCB7IENvbXBvbmVudCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd2F0dC1saW5rLXRhYicsXG4gIHRlbXBsYXRlOiBgYCxcbn0pXG5leHBvcnQgY2xhc3MgV2F0dExpbmtUYWJDb21wb25lbnQge1xuICBsYWJlbCA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcbiAgbGluayA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcbn1cbiJdfQ==