@energycap/components 0.42.4-esbuild.20250131-1219 → 0.42.4-esbuild.20250131-1256

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 (324) hide show
  1. package/esm2022/energycap-components.mjs +5 -0
  2. package/esm2022/lib/components.module.mjs +423 -0
  3. package/esm2022/lib/controls/banner/banner.component.mjs +109 -0
  4. package/esm2022/lib/controls/button/button.component.mjs +106 -0
  5. package/esm2022/lib/controls/button/copy-button-base.directive.mjs +67 -0
  6. package/esm2022/lib/controls/button/copy-button.directive.mjs +28 -0
  7. package/esm2022/lib/controls/button/copy-table-button.directive.mjs +43 -0
  8. package/esm2022/lib/controls/calendar/calendar-item.component.mjs +91 -0
  9. package/esm2022/lib/controls/calendar/calendar.component.mjs +248 -0
  10. package/esm2022/lib/controls/calendar/calendar.types.mjs +2 -0
  11. package/esm2022/lib/controls/checkbox/checkbox.component.mjs +140 -0
  12. package/esm2022/lib/controls/collapsible-toggle/collapsible-toggle.component.mjs +38 -0
  13. package/esm2022/lib/controls/combobox/combobox.component.mjs +879 -0
  14. package/esm2022/lib/controls/date-input/date-input-selection-strategies/date-input-selection-strategy-base.mjs +57 -0
  15. package/esm2022/lib/controls/date-input/date-input-selection-strategies/day-selection-strategy.mjs +62 -0
  16. package/esm2022/lib/controls/date-input/date-input-selection-strategies/last-28-days-selection-strategy.mjs +100 -0
  17. package/esm2022/lib/controls/date-input/date-input-selection-strategies/last-7-days-selection-strategy.mjs +101 -0
  18. package/esm2022/lib/controls/date-input/date-input-selection-strategies/month-selection-strategy.mjs +76 -0
  19. package/esm2022/lib/controls/date-input/date-input-selection-strategies/quarter-selection-strategy.mjs +79 -0
  20. package/esm2022/lib/controls/date-input/date-input-selection-strategies/range-selection-strategy.mjs +210 -0
  21. package/esm2022/lib/controls/date-input/date-input-selection-strategies/year-selection-strategy.mjs +81 -0
  22. package/esm2022/lib/controls/date-input/date-input.component.mjs +464 -0
  23. package/esm2022/lib/controls/date-input/date-input.types.mjs +44 -0
  24. package/esm2022/lib/controls/dropdown/dropdown.component.mjs +243 -0
  25. package/esm2022/lib/controls/file-upload/file-upload.component.mjs +261 -0
  26. package/esm2022/lib/controls/form-control/form-control.component.mjs +98 -0
  27. package/esm2022/lib/controls/form-control-base.mjs +151 -0
  28. package/esm2022/lib/controls/form-control-label/form-control-label.component.mjs +136 -0
  29. package/esm2022/lib/controls/form-group/form-group.component.mjs +261 -0
  30. package/esm2022/lib/controls/help-popover/help-popover.component.mjs +31 -0
  31. package/esm2022/lib/controls/item-picker/item-picker.component.mjs +329 -0
  32. package/esm2022/lib/controls/link-button/link-button.component.mjs +11 -0
  33. package/esm2022/lib/controls/menu/menu.component.mjs +485 -0
  34. package/esm2022/lib/controls/navigation/link-item.mjs +2 -0
  35. package/esm2022/lib/controls/navigation/nav-group.mjs +39 -0
  36. package/esm2022/lib/controls/navigation/nav-item-active.directive.mjs +92 -0
  37. package/esm2022/lib/controls/navigation/nav-item.mjs +2 -0
  38. package/esm2022/lib/controls/numericbox/numericbox.component.mjs +372 -0
  39. package/esm2022/lib/controls/popover/popover.component.mjs +117 -0
  40. package/esm2022/lib/controls/radio-button/radio-button-option.mjs +3 -0
  41. package/esm2022/lib/controls/radio-button/radio-button.component.mjs +82 -0
  42. package/esm2022/lib/controls/select/select.component.mjs +88 -0
  43. package/esm2022/lib/controls/tabs/tabs.component.mjs +47 -0
  44. package/esm2022/lib/controls/textbox/textbox.component.mjs +155 -0
  45. package/esm2022/lib/core/cache.service.mjs +105 -0
  46. package/esm2022/lib/core/custom-validators.mjs +29 -0
  47. package/esm2022/lib/core/date-time-helper.mjs +228 -0
  48. package/esm2022/lib/core/error.service.mjs +61 -0
  49. package/esm2022/lib/core/router-helper.service.mjs +111 -0
  50. package/esm2022/lib/core/scroll.service.mjs +89 -0
  51. package/esm2022/lib/core/telemetry-tracker.service.mjs +16 -0
  52. package/esm2022/lib/core/telemetry.service.mjs +38 -0
  53. package/esm2022/lib/core/validation-message.service.mjs +185 -0
  54. package/esm2022/lib/core/validation-patterns.mjs +31 -0
  55. package/esm2022/lib/core/window.service.mjs +186 -0
  56. package/esm2022/lib/display/app-bar/app-bar.component.mjs +46 -0
  57. package/esm2022/lib/display/avatar/avatar.component.mjs +67 -0
  58. package/esm2022/lib/display/avatar/avatar.service.mjs +64 -0
  59. package/esm2022/lib/display/confirm/confirm.component.mjs +168 -0
  60. package/esm2022/lib/display/dialog/dialog-content.mjs +2 -0
  61. package/esm2022/lib/display/dialog/dialog-group/dialog-group.component.mjs +63 -0
  62. package/esm2022/lib/display/dialog/dialog-types.mjs +77 -0
  63. package/esm2022/lib/display/dialog/dialog.component.mjs +281 -0
  64. package/esm2022/lib/display/dialog/dialog.service.mjs +71 -0
  65. package/esm2022/lib/display/help/help-types.mjs +2 -0
  66. package/esm2022/lib/display/hierarchy/hierarchy-base.mjs +111 -0
  67. package/esm2022/lib/display/hierarchy/hierarchy-mocks.spec.mjs +54 -0
  68. package/esm2022/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.mjs +61 -0
  69. package/esm2022/lib/display/item-display/item-display.component.mjs +81 -0
  70. package/esm2022/lib/display/json-display/json-display.component.mjs +47 -0
  71. package/esm2022/lib/display/resizable/resizable-base.mjs +120 -0
  72. package/esm2022/lib/display/resizable/resizable.component.mjs +57 -0
  73. package/esm2022/lib/display/spinner/spinner.component.mjs +12 -0
  74. package/esm2022/lib/display/splash/splash.component.mjs +42 -0
  75. package/esm2022/lib/display/splash/splash.service.mjs +35 -0
  76. package/esm2022/lib/display/table/resizable-column.component.mjs +20 -0
  77. package/esm2022/lib/display/table/resizable-table.directive.mjs +227 -0
  78. package/esm2022/lib/display/table/searchable-table.component.mjs +342 -0
  79. package/esm2022/lib/display/table/table-detail-row.component.mjs +28 -0
  80. package/esm2022/lib/display/table/table-locked-column.component.mjs +58 -0
  81. package/esm2022/lib/display/table/table-master-header-row.component.mjs +14 -0
  82. package/esm2022/lib/display/table/table-master-row.component.mjs +163 -0
  83. package/esm2022/lib/display/table/table-pagination.component.mjs +155 -0
  84. package/esm2022/lib/display/table/table-selectable-row.component.mjs +235 -0
  85. package/esm2022/lib/display/table/table.component.mjs +249 -0
  86. package/esm2022/lib/display/tags/tag.mjs +18 -0
  87. package/esm2022/lib/display/tags/tags.component.mjs +77 -0
  88. package/esm2022/lib/display/toast/toast/toast.component.mjs +77 -0
  89. package/esm2022/lib/display/toast/toast-types.mjs +8 -0
  90. package/esm2022/lib/display/toast/toast.service.mjs +35 -0
  91. package/esm2022/lib/display/toast/toaster/toaster.component.mjs +114 -0
  92. package/esm2022/lib/display/tooltip/tooltip.component.mjs +28 -0
  93. package/esm2022/lib/display/tooltip/tooltip.service.mjs +78 -0
  94. package/esm2022/lib/display/tooltip-directive/tooltip.directive.mjs +173 -0
  95. package/esm2022/lib/display/tour/tour-types.mjs +34 -0
  96. package/esm2022/lib/display/tour/tour.component.mjs +398 -0
  97. package/esm2022/lib/display/tour/tour.service.mjs +75 -0
  98. package/esm2022/lib/display/tree/tree.component.mjs +135 -0
  99. package/esm2022/lib/display/view-overlay/view-overlay.component.mjs +58 -0
  100. package/esm2022/lib/shared/directives/click-area-for/click-area-for.directive.mjs +32 -0
  101. package/esm2022/lib/shared/directives/if-viewport-width/if-viewport-width.directive.mjs +111 -0
  102. package/esm2022/lib/shared/directives/keyboard-nav-container/keyboard-nav-container.directive.mjs +100 -0
  103. package/esm2022/lib/shared/directives/popup/popup-container.directive.mjs +166 -0
  104. package/esm2022/lib/shared/display/pipes/date-display.pipe.mjs +50 -0
  105. package/esm2022/lib/shared/display/pipes/highlight-text.pipe.mjs +30 -0
  106. package/esm2022/lib/shared/display/pipes/relative-date.pipe.mjs +62 -0
  107. package/esm2022/lib/shared/display/pipes/row-count.pipe.mjs +48 -0
  108. package/esm2022/lib/shared/display/pipes/time-display.pipe.mjs +41 -0
  109. package/esm2022/lib/shared/display.mjs +6 -0
  110. package/esm2022/lib/shared/form-group.helper.mjs +67 -0
  111. package/esm2022/lib/shared/json-helper.mjs +19 -0
  112. package/esm2022/lib/shared/lodash-helper.mjs +52 -0
  113. package/esm2022/lib/shared/page/page-base/page-base.component.mjs +387 -0
  114. package/esm2022/lib/shared/page/page-statuses.mjs +23 -0
  115. package/esm2022/lib/shared/page/page-title/page-title.component.mjs +23 -0
  116. package/esm2022/lib/shared/page/page-view/page-view.component.mjs +147 -0
  117. package/esm2022/lib/shared/testing/copy-button-base-test-injector-factory.spec.mjs +17 -0
  118. package/esm2022/lib/shared/testing/hierarchy-base-test-injector-factory.spec.mjs +17 -0
  119. package/esm2022/lib/shared/testing/page-base-component-test-helper.spec.mjs +38 -0
  120. package/esm2022/lib/shared/testing/page-base-component-test-injector-factory.spec.mjs +98 -0
  121. package/esm2022/lib/shared/testing/public-mocks.spec.mjs +148 -0
  122. package/esm2022/lib/shared/testing/spy-factory.spec.mjs +40 -0
  123. package/esm2022/lib/shared/testing/translation-mocks.spec.mjs +57 -0
  124. package/esm2022/lib/shared/user-preference.service.mjs +17 -0
  125. package/esm2022/lib/shared/wizard/wizard-base/wizard-base.component.mjs +246 -0
  126. package/esm2022/lib/shared/wizard/wizard-buttons/wizard-buttons.component.mjs +68 -0
  127. package/esm2022/lib/shared/wizard/wizard-progress/wizard-progress.component.mjs +18 -0
  128. package/esm2022/public-api.mjs +117 -0
  129. package/fesm2022/energycap-components.mjs +13219 -0
  130. package/fesm2022/energycap-components.mjs.map +1 -0
  131. package/index.d.ts +5 -0
  132. package/lib/components.module.d.ts +92 -0
  133. package/lib/controls/banner/banner.component.d.ts +50 -0
  134. package/lib/controls/button/button.component.d.ts +78 -0
  135. package/lib/controls/button/copy-button-base.directive.d.ts +20 -0
  136. package/lib/controls/button/copy-button.directive.d.ts +14 -0
  137. package/lib/controls/button/copy-table-button.directive.d.ts +19 -0
  138. package/lib/controls/calendar/calendar-item.component.d.ts +22 -0
  139. package/lib/controls/calendar/calendar.component.d.ts +52 -0
  140. package/lib/controls/calendar/calendar.types.d.ts +11 -0
  141. package/lib/controls/checkbox/checkbox.component.d.ts +65 -0
  142. package/lib/controls/collapsible-toggle/collapsible-toggle.component.d.ts +25 -0
  143. package/lib/controls/combobox/combobox.component.d.ts +418 -0
  144. package/lib/controls/date-input/date-input-selection-strategies/date-input-selection-strategy-base.d.ts +42 -0
  145. package/lib/controls/date-input/date-input-selection-strategies/day-selection-strategy.d.ts +21 -0
  146. package/lib/controls/date-input/date-input-selection-strategies/last-28-days-selection-strategy.d.ts +21 -0
  147. package/lib/controls/date-input/date-input-selection-strategies/last-7-days-selection-strategy.d.ts +21 -0
  148. package/lib/controls/date-input/date-input-selection-strategies/month-selection-strategy.d.ts +18 -0
  149. package/lib/controls/date-input/date-input-selection-strategies/quarter-selection-strategy.d.ts +18 -0
  150. package/lib/controls/date-input/date-input-selection-strategies/range-selection-strategy.d.ts +21 -0
  151. package/lib/controls/date-input/date-input-selection-strategies/year-selection-strategy.d.ts +20 -0
  152. package/lib/controls/date-input/date-input.component.d.ts +115 -0
  153. package/lib/controls/date-input/date-input.types.d.ts +62 -0
  154. package/lib/controls/dropdown/dropdown.component.d.ts +161 -0
  155. package/lib/controls/file-upload/file-upload.component.d.ts +124 -0
  156. package/lib/controls/form-control/form-control.component.d.ts +28 -0
  157. package/lib/controls/form-control-base.d.ts +110 -0
  158. package/lib/controls/form-control-label/form-control-label.component.d.ts +73 -0
  159. package/lib/controls/form-group/form-group.component.d.ts +105 -0
  160. package/lib/controls/help-popover/help-popover.component.d.ts +11 -0
  161. package/lib/controls/item-picker/item-picker.component.d.ts +164 -0
  162. package/lib/controls/link-button/link-button.component.d.ts +5 -0
  163. package/lib/controls/menu/menu.component.d.ts +255 -0
  164. package/lib/controls/navigation/link-item.d.ts +32 -0
  165. package/lib/controls/navigation/nav-group.d.ts +18 -0
  166. package/lib/controls/navigation/nav-item-active.directive.d.ts +42 -0
  167. package/lib/controls/navigation/nav-item.d.ts +31 -0
  168. package/lib/controls/numericbox/numericbox.component.d.ts +148 -0
  169. package/lib/controls/popover/popover.component.d.ts +51 -0
  170. package/lib/controls/radio-button/radio-button-option.d.ts +19 -0
  171. package/lib/controls/radio-button/radio-button.component.d.ts +53 -0
  172. package/lib/controls/select/select.component.d.ts +44 -0
  173. package/lib/controls/tabs/tabs.component.d.ts +30 -0
  174. package/lib/controls/textbox/textbox.component.d.ts +107 -0
  175. package/lib/core/cache.service.d.ts +33 -0
  176. package/lib/core/custom-validators.d.ts +20 -0
  177. package/lib/core/date-time-helper.d.ts +101 -0
  178. package/lib/core/error.service.d.ts +20 -0
  179. package/lib/core/router-helper.service.d.ts +48 -0
  180. package/lib/core/scroll.service.d.ts +36 -0
  181. package/lib/core/telemetry-tracker.service.d.ts +13 -0
  182. package/lib/core/telemetry.service.d.ts +31 -0
  183. package/lib/core/validation-message.service.d.ts +26 -0
  184. package/lib/core/validation-patterns.d.ts +22 -0
  185. package/lib/core/window.service.d.ts +116 -0
  186. package/lib/display/app-bar/app-bar.component.d.ts +20 -0
  187. package/lib/display/avatar/avatar.component.d.ts +35 -0
  188. package/lib/display/avatar/avatar.service.d.ts +24 -0
  189. package/lib/display/confirm/confirm.component.d.ts +123 -0
  190. package/lib/display/dialog/dialog-content.d.ts +19 -0
  191. package/lib/display/dialog/dialog-group/dialog-group.component.d.ts +32 -0
  192. package/lib/display/dialog/dialog-types.d.ts +130 -0
  193. package/lib/display/dialog/dialog.component.d.ts +120 -0
  194. package/lib/display/dialog/dialog.service.d.ts +48 -0
  195. package/lib/display/help/help-types.d.ts +33 -0
  196. package/lib/display/hierarchy/hierarchy-base.d.ts +97 -0
  197. package/lib/display/hierarchy/hierarchy-mocks.spec.d.ts +53 -0
  198. package/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.d.ts +34 -0
  199. package/lib/display/item-display/item-display.component.d.ts +43 -0
  200. package/lib/display/json-display/json-display.component.d.ts +16 -0
  201. package/lib/display/resizable/resizable-base.d.ts +67 -0
  202. package/lib/display/resizable/resizable.component.d.ts +31 -0
  203. package/lib/display/spinner/spinner.component.d.ts +5 -0
  204. package/lib/display/splash/splash.component.d.ts +16 -0
  205. package/lib/display/splash/splash.service.d.ts +22 -0
  206. package/lib/display/table/resizable-column.component.d.ts +10 -0
  207. package/lib/display/table/resizable-table.directive.d.ts +93 -0
  208. package/lib/display/table/searchable-table.component.d.ts +206 -0
  209. package/lib/display/table/table-detail-row.component.d.ts +8 -0
  210. package/lib/display/table/table-locked-column.component.d.ts +20 -0
  211. package/lib/display/table/table-master-header-row.component.d.ts +9 -0
  212. package/lib/display/table/table-master-row.component.d.ts +113 -0
  213. package/lib/display/table/table-pagination.component.d.ts +91 -0
  214. package/lib/display/table/table-selectable-row.component.d.ts +102 -0
  215. package/lib/display/table/table.component.d.ts +121 -0
  216. package/lib/display/tags/tag.d.ts +18 -0
  217. package/lib/display/tags/tags.component.d.ts +48 -0
  218. package/lib/display/toast/toast/toast.component.d.ts +23 -0
  219. package/lib/display/toast/toast-types.d.ts +24 -0
  220. package/lib/display/toast/toast.service.d.ts +20 -0
  221. package/lib/display/toast/toaster/toaster.component.d.ts +35 -0
  222. package/lib/display/tooltip/tooltip.component.d.ts +70 -0
  223. package/lib/display/tooltip/tooltip.service.d.ts +16 -0
  224. package/lib/display/tooltip-directive/tooltip.directive.d.ts +44 -0
  225. package/lib/display/tour/tour-types.d.ts +70 -0
  226. package/lib/display/tour/tour.component.d.ts +147 -0
  227. package/lib/display/tour/tour.service.d.ts +38 -0
  228. package/lib/display/tree/tree.component.d.ts +75 -0
  229. package/lib/display/view-overlay/view-overlay.component.d.ts +38 -0
  230. package/lib/shared/directives/click-area-for/click-area-for.directive.d.ts +14 -0
  231. package/lib/shared/directives/if-viewport-width/if-viewport-width.directive.d.ts +60 -0
  232. package/lib/shared/directives/keyboard-nav-container/keyboard-nav-container.directive.d.ts +23 -0
  233. package/lib/shared/directives/popup/popup-container.directive.d.ts +101 -0
  234. package/lib/shared/display/pipes/date-display.pipe.d.ts +21 -0
  235. package/lib/shared/display/pipes/highlight-text.pipe.d.ts +9 -0
  236. package/lib/shared/display/pipes/relative-date.pipe.d.ts +36 -0
  237. package/lib/shared/display/pipes/row-count.pipe.d.ts +23 -0
  238. package/lib/shared/display/pipes/time-display.pipe.d.ts +18 -0
  239. package/lib/shared/display.d.ts +42 -0
  240. package/lib/shared/form-group.helper.d.ts +31 -0
  241. package/lib/shared/json-helper.d.ts +7 -0
  242. package/lib/shared/lodash-helper.d.ts +18 -0
  243. package/lib/shared/page/page-base/page-base.component.d.ts +259 -0
  244. package/lib/shared/page/page-statuses.d.ts +13 -0
  245. package/lib/shared/page/page-title/page-title.component.d.ts +9 -0
  246. package/lib/shared/page/page-view/page-view.component.d.ts +102 -0
  247. package/lib/shared/testing/copy-button-base-test-injector-factory.spec.d.ts +4 -0
  248. package/lib/shared/testing/hierarchy-base-test-injector-factory.spec.d.ts +4 -0
  249. package/lib/shared/testing/page-base-component-test-helper.spec.d.ts +30 -0
  250. package/lib/shared/testing/page-base-component-test-injector-factory.spec.d.ts +28 -0
  251. package/lib/shared/testing/public-mocks.spec.d.ts +90 -0
  252. package/lib/shared/testing/spy-factory.spec.d.ts +27 -0
  253. package/lib/shared/testing/translation-mocks.spec.d.ts +30 -0
  254. package/lib/shared/user-preference.service.d.ts +13 -0
  255. package/lib/shared/wizard/wizard-base/wizard-base.component.d.ts +134 -0
  256. package/lib/shared/wizard/wizard-buttons/wizard-buttons.component.d.ts +27 -0
  257. package/lib/shared/wizard/wizard-progress/wizard-progress.component.d.ts +10 -0
  258. package/package.json +1 -5
  259. package/public-api.d.ts +113 -0
  260. package/schematics/collection.json +10 -0
  261. package/schematics/rxjs-7-upgrade/index.d.ts +3 -0
  262. package/schematics/rxjs-7-upgrade/index.js +68 -0
  263. package/schematics/rxjs-7-upgrade/index.js.map +1 -0
  264. package/schematics/rxjs-7-upgrade/schema.d.ts +4 -0
  265. package/schematics/rxjs-7-upgrade/schema.js +3 -0
  266. package/schematics/rxjs-7-upgrade/schema.js.map +1 -0
  267. package/schematics/rxjs-7-upgrade/schema.json +14 -0
  268. package/schematics/utilities/typescript.d.ts +7 -0
  269. package/schematics/utilities/typescript.js +42 -0
  270. package/schematics/utilities/typescript.js.map +1 -0
  271. package/schematics/utilities/workspace.d.ts +8 -0
  272. package/schematics/utilities/workspace.js +72 -0
  273. package/schematics/utilities/workspace.js.map +1 -0
  274. package/src/assets/images/email-icon.png +0 -0
  275. package/src/assets/images/email-logo.png +0 -0
  276. package/src/assets/images/favicon-ech.svg +7 -0
  277. package/src/assets/images/favicon-esa.svg +6 -0
  278. package/src/assets/images/favicon-eum.svg +6 -0
  279. package/src/assets/images/favicon.svg +5 -0
  280. package/src/assets/images/icon-carbonhub.svg +10 -0
  281. package/src/assets/images/icon-eum.svg +5 -0
  282. package/src/assets/images/icon-ucp.svg +5 -0
  283. package/src/assets/images/icon-wattics.svg +5 -0
  284. package/src/assets/images/icon.svg +4 -0
  285. package/src/assets/images/logo.svg +3 -0
  286. package/src/assets/images/splash.gif +0 -0
  287. package/src/assets/locales/en_US.json +59 -0
  288. package/src/assets/scripts/unsupported-browser.js +17 -0
  289. package/src/styles/_base.scss +38 -0
  290. package/src/styles/_colors.scss +96 -0
  291. package/src/styles/_core.scss +4 -0
  292. package/src/styles/_functions.scss +114 -0
  293. package/src/styles/_global-variables.scss +232 -0
  294. package/src/styles/_icons.scss +24 -0
  295. package/src/styles/bootstrap/_grid.scss +34 -0
  296. package/src/styles/bootstrap/_reboot.scss +323 -0
  297. package/src/styles/components/_card.scss +21 -0
  298. package/src/styles/components/_link-icons.scss +38 -0
  299. package/src/styles/components/_splash.scss +57 -0
  300. package/src/styles/components/_unsupported-browsers.scss +24 -0
  301. package/src/styles/email/_email-base.scss +228 -0
  302. package/src/styles/email/email.scss +43 -0
  303. package/src/styles/index.scss +27 -0
  304. package/src/styles/mixins/_animations.scss +18 -0
  305. package/src/styles/mixins/_button-base.scss +185 -0
  306. package/src/styles/mixins/_card-base.scss +40 -0
  307. package/src/styles/mixins/_common.scss +52 -0
  308. package/src/styles/mixins/_dialog-base.scss +96 -0
  309. package/src/styles/mixins/_form-control-base.scss +641 -0
  310. package/src/styles/mixins/_login.scss +74 -0
  311. package/src/styles/mixins/_menu-base.scss +153 -0
  312. package/src/styles/mixins/_overlay-base.scss +33 -0
  313. package/src/styles/mixins/_resizable-base.scss +57 -0
  314. package/src/styles/mixins/_spinner-base.scss +34 -0
  315. package/src/styles/mixins/_table-base.scss +298 -0
  316. package/src/styles/mixins/_tabs-base.scss +110 -0
  317. package/src/styles/mixins/_tags-base.scss +116 -0
  318. package/src/styles/mixins/_text.scss +89 -0
  319. package/src/styles/mixins.scss +15 -0
  320. package/src/styles/utilities/_borders.scss +30 -0
  321. package/src/styles/utilities/_common.scss +49 -0
  322. package/src/styles/utilities/_layout.scss +116 -0
  323. package/src/styles/utilities/_spacing.scss +65 -0
  324. package/src/styles/utilities/_text.scss +139 -0
@@ -0,0 +1,185 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { forkJoin, lastValueFrom } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@ngx-translate/core";
5
+ import * as i2 from "../shared/display/pipes/date-display.pipe";
6
+ /**
7
+ * "Weak Type" describing interpolation parameters for NumericBox
8
+ */
9
+ class NumericBoxInterpolationParameters {
10
+ }
11
+ /**
12
+ * Service to take {@link ValidationErrors} and return meaningful error messages
13
+ */
14
+ export class ValidationMessageService {
15
+ constructor(translate, dateDisplayPipe) {
16
+ this.translate = translate;
17
+ this.dateDisplayPipe = dateDisplayPipe;
18
+ }
19
+ /**
20
+ * Get meaningful error messages from {@link ValidationErrors}
21
+ */
22
+ getErrorMessages(errors) {
23
+ /** Array of observables returned from the TranslateService. */
24
+ let translationObservables = new Array();
25
+ if (errors !== null) {
26
+ for (var errorKey in errors) {
27
+ // it would be nice to have typing on the ValidationErrors
28
+ let error = errors[errorKey];
29
+ switch (errorKey) {
30
+ case 'email':
31
+ translationObservables.push(this.translate.get('InvalidEmailValidationMessage_LC'));
32
+ break;
33
+ case 'required':
34
+ translationObservables.push(this.translate.get('is required'));
35
+ break;
36
+ case 'requiredPlural':
37
+ translationObservables.push(this.translate.get('RequiredPluralValidationMessage_LC'));
38
+ break;
39
+ case 'minlength':
40
+ translationObservables.push(this.translate
41
+ .get('MinLengthValidationMessage_LC', { minLength: error.requiredLength }));
42
+ break;
43
+ case 'maxlength':
44
+ translationObservables.push(this.translate
45
+ .get(`MaxLengthValidationMessage`, { maxLength: error.requiredLength }));
46
+ break;
47
+ case 'pattern':
48
+ translationObservables.push(this.translate.get('IncorrectFormat_LC'));
49
+ break;
50
+ case 'min':
51
+ translationObservables.push(this.translate
52
+ .get('MinValueValidationMessage_LC', { minValue: error.min }));
53
+ break;
54
+ case 'max':
55
+ translationObservables.push(this.translate
56
+ .get('MaxValueValidationMessage_LC', { maxValue: error.max }));
57
+ break;
58
+ case 'zipCodeInvalidFormat':
59
+ translationObservables.push(this.translate.get('must be 5–9 numbers'));
60
+ break;
61
+ case 'postalCodeInvalidFormat':
62
+ translationObservables.push(this.translate
63
+ .get('must be 6 characters, alternating letters and numbers'));
64
+ break;
65
+ case 'zipCodeNotFound':
66
+ translationObservables.push(this.translate
67
+ .get('ZipCodeNotFoundValidationMessage_LC'));
68
+ break;
69
+ // Custom validator from the NumericboxComponent
70
+ case 'numericbox':
71
+ translationObservables.push(this.getNumericBoxValidationMessages(error));
72
+ break;
73
+ case 'addnew':
74
+ translationObservables.push(this.translate.get('CouldNotBeAddedValidationMessage_LC'));
75
+ break;
76
+ // Kendo datepicker min error
77
+ case 'minError':
78
+ case 'minDate':
79
+ var value = this.dateDisplayPipe.transform(error.minValue);
80
+ translationObservables.push(this.translate
81
+ .get('MinValueValidationMessage_LC', { minValue: value }));
82
+ break;
83
+ // Kendo datepicker max error
84
+ case 'maxError':
85
+ case 'maxDate':
86
+ var value = this.dateDisplayPipe.transform(error.maxValue, true);
87
+ translationObservables.push(this.translate
88
+ .get('MaxValueValidationMessage_LC', { maxValue: value }));
89
+ break;
90
+ // Custom validator for the DateRangeComponent
91
+ case 'dateRange':
92
+ translationObservables.push(this.translate.get('DateRangeValidationMessage_LC'));
93
+ break;
94
+ case 'password':
95
+ translationObservables.push(this.translate.get('PasswordValidationMessage_LC'));
96
+ break;
97
+ // Custom validator from the TextboxComponent
98
+ case 'textbox':
99
+ translationObservables.push(this.getTextBoxValidationMessages(error));
100
+ break;
101
+ case 'notUnique':
102
+ translationObservables.push(this.translate.get('MustBeUnique_LC'));
103
+ break;
104
+ case 'json':
105
+ translationObservables.push(this.translate.get('JsonValidationMessage_SC'));
106
+ break;
107
+ case 'passwordInvalid':
108
+ translationObservables.push(this.translate.get('PasswordInvalidValidationMessage_LC'));
109
+ break;
110
+ case 'domain':
111
+ translationObservables.push(this.translate.get('DomainValidationMessage_SC'));
112
+ break;
113
+ case 'invalidFile':
114
+ case 'invalidFormula':
115
+ translationObservables.push(this.translate.get('is invalid'));
116
+ break;
117
+ default:
118
+ break;
119
+ }
120
+ }
121
+ if (translationObservables.length > 0) {
122
+ // forkJoin returns an Observable that emits when all its observables complete.
123
+ // When forkjoin emits, it emits an array containing the last value returned from
124
+ // each of its observables.
125
+ // @see https://www.learnrxjs.io/operators/combination/forkjoin.html
126
+ // We convert this to a promise so the form controls can display the error messages
127
+ // asynchronously.
128
+ return lastValueFrom(forkJoin(translationObservables));
129
+ }
130
+ }
131
+ return Promise.resolve(new Array());
132
+ }
133
+ /**
134
+ * Get proper validation message for @see NumericBoxComponent
135
+ */
136
+ getNumericBoxValidationMessages(error) {
137
+ let interpolationParameters = {};
138
+ let type = 'Integer';
139
+ if (error.decimals) {
140
+ interpolationParameters.precision = error.decimals;
141
+ type = 'Decimal';
142
+ }
143
+ if (error.min !== undefined && error.max !== undefined) {
144
+ interpolationParameters.minValue = error.min;
145
+ interpolationParameters.maxValue = error.max;
146
+ return this.translate.get(`${type}BetweenValidationMessage_LC`, interpolationParameters);
147
+ }
148
+ if (error.min !== undefined) {
149
+ interpolationParameters.minValue = error.min;
150
+ return this.translate.get(`${type}MinValidationMessage_LC`, interpolationParameters);
151
+ }
152
+ if (error.max !== undefined) {
153
+ interpolationParameters.maxValue = error.max;
154
+ return this.translate.get(`${type}MaxValidationMessage_LC`, interpolationParameters);
155
+ }
156
+ if (error.maxPrecisionDigits) {
157
+ interpolationParameters.maxPrecisionDigits = error.maxPrecisionDigits;
158
+ return this.translate.get('MaxPrecisionDigitsValidationMessage_LC', interpolationParameters);
159
+ }
160
+ if (error.decimals) {
161
+ return this.translate.get('DecimalValidationMessage_LC', interpolationParameters);
162
+ }
163
+ return this.translate.get('IncorrectFormat_LC');
164
+ }
165
+ /**
166
+ * Given the advanced textbox validation params construct the error message
167
+ */
168
+ getTextBoxValidationMessages(error) {
169
+ if (error.unique) {
170
+ return this.translate.get('TextboxRequiredAndUnique_LC', { minLength: error.minLength, maxLength: error.maxLength });
171
+ }
172
+ else {
173
+ return this.translate.get('TextboxRequired_LC', { minLength: error.minLength, maxLength: error.maxLength });
174
+ }
175
+ }
176
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ValidationMessageService, deps: [{ token: i1.TranslateService }, { token: i2.DateDisplayPipe }], target: i0.ɵɵFactoryTarget.Injectable }); }
177
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ValidationMessageService, providedIn: 'root' }); }
178
+ }
179
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ValidationMessageService, decorators: [{
180
+ type: Injectable,
181
+ args: [{
182
+ providedIn: 'root'
183
+ }]
184
+ }], ctorParameters: () => [{ type: i1.TranslateService }, { type: i2.DateDisplayPipe }] });
185
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi1tZXNzYWdlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvY29yZS92YWxpZGF0aW9uLW1lc3NhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxRQUFRLEVBQWMsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7O0FBSzNEOztHQUVHO0FBQ0gsTUFBTSxpQ0FBaUM7Q0FNdEM7QUFFRDs7R0FFRztBQUlILE1BQU0sT0FBTyx3QkFBd0I7SUFFbkMsWUFDWSxTQUEyQixFQUMzQixlQUFnQztRQURoQyxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7SUFDeEMsQ0FBQztJQUdMOztPQUVHO0lBQ0ksZ0JBQWdCLENBQUMsTUFBK0I7UUFFbkQsK0RBQStEO1FBQy9ELElBQUksc0JBQXNCLEdBQUcsSUFBSSxLQUFLLEVBQXNCLENBQUM7UUFFN0QsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFLENBQUM7WUFFbEIsS0FBSyxJQUFJLFFBQVEsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDMUIsMERBQTBEO2dCQUMxRCxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBRTdCLFFBQVEsUUFBUSxFQUFFLENBQUM7b0JBQ2YsS0FBSyxPQUFPO3dCQUNSLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDLENBQUM7d0JBQ3BGLE1BQU07b0JBRVYsS0FBSyxVQUFVO3dCQUNYLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO3dCQUM3RCxNQUFNO29CQUNWLEtBQUssZ0JBQWdCO3dCQUNqQixzQkFBc0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsb0NBQW9DLENBQUMsQ0FBQyxDQUFDO3dCQUN4RixNQUFNO29CQUVWLEtBQUssV0FBVzt3QkFDWixzQkFBc0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVM7NkJBQ3JDLEdBQUcsQ0FBQywrQkFBK0IsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDO3dCQUNoRixNQUFNO29CQUVWLEtBQUssV0FBVzt3QkFDWixzQkFBc0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVM7NkJBQ3JDLEdBQUcsQ0FBQyw0QkFBNEIsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDO3dCQUM3RSxNQUFNO29CQUVWLEtBQUssU0FBUzt3QkFDVixzQkFBc0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDO3dCQUN0RSxNQUFNO29CQUVWLEtBQUssS0FBSzt3QkFDTixzQkFBc0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVM7NkJBQ3JDLEdBQUcsQ0FBQyw4QkFBOEIsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO3dCQUNuRSxNQUFNO29CQUVWLEtBQUssS0FBSzt3QkFDTixzQkFBc0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVM7NkJBQ3JDLEdBQUcsQ0FBQyw4QkFBOEIsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO3dCQUNuRSxNQUFNO29CQUVWLEtBQUssc0JBQXNCO3dCQUN2QixzQkFBc0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDO3dCQUN2RSxNQUFNO29CQUVWLEtBQUsseUJBQXlCO3dCQUMxQixzQkFBc0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVM7NkJBQ3JDLEdBQUcsQ0FBQyx1REFBdUQsQ0FBQyxDQUFDLENBQUM7d0JBQ25FLE1BQU07b0JBRVYsS0FBSyxpQkFBaUI7d0JBQ2xCLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUzs2QkFDckMsR0FBRyxDQUFDLHFDQUFxQyxDQUFDLENBQUMsQ0FBQzt3QkFDakQsTUFBTTtvQkFFVixnREFBZ0Q7b0JBQ2hELEtBQUssWUFBWTt3QkFDYixzQkFBc0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLCtCQUErQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7d0JBQ3pFLE1BQU07b0JBRVYsS0FBSyxRQUFRO3dCQUNULHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDLENBQUM7d0JBQ3ZGLE1BQU07b0JBRVYsNkJBQTZCO29CQUM3QixLQUFLLFVBQVUsQ0FBQztvQkFDaEIsS0FBSyxTQUFTO3dCQUNWLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQzt3QkFDM0Qsc0JBQXNCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTOzZCQUNyQyxHQUFHLENBQUMsOEJBQThCLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO3dCQUMvRCxNQUFNO29CQUVWLDZCQUE2QjtvQkFDN0IsS0FBSyxVQUFVLENBQUM7b0JBQ2hCLEtBQUssU0FBUzt3QkFDVixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO3dCQUNqRSxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVM7NkJBQ3JDLEdBQUcsQ0FBQyw4QkFBOEIsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7d0JBQy9ELE1BQU07b0JBRVYsOENBQThDO29CQUM5QyxLQUFLLFdBQVc7d0JBQ1osc0JBQXNCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLCtCQUErQixDQUFDLENBQUMsQ0FBQzt3QkFDakYsTUFBTTtvQkFFVixLQUFLLFVBQVU7d0JBQ1gsc0JBQXNCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLDhCQUE4QixDQUFDLENBQUMsQ0FBQzt3QkFDaEYsTUFBTTtvQkFFViw2Q0FBNkM7b0JBQzdDLEtBQUssU0FBUzt3QkFDVixzQkFBc0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7d0JBQ3RFLE1BQU07b0JBRVYsS0FBSyxXQUFXO3dCQUNaLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7d0JBQ25FLE1BQU07b0JBRVYsS0FBSyxNQUFNO3dCQUNQLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUM7d0JBQzVFLE1BQU07b0JBRVYsS0FBSyxpQkFBaUI7d0JBQ2xCLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDLENBQUM7d0JBQ3ZGLE1BQU07b0JBRVYsS0FBSyxRQUFRO3dCQUNULHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUM7d0JBQzlFLE1BQU07b0JBQ1YsS0FBSyxhQUFhLENBQUM7b0JBQ25CLEtBQUssZ0JBQWdCO3dCQUNqQixzQkFBc0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQzt3QkFDOUQsTUFBTTtvQkFDVjt3QkFDSSxNQUFNO2dCQUNkLENBQUM7WUFDTCxDQUFDO1lBRUQsSUFBSSxzQkFBc0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBRXBDLCtFQUErRTtnQkFDL0UsaUZBQWlGO2dCQUNqRiwyQkFBMkI7Z0JBQzNCLG9FQUFvRTtnQkFDcEUsbUZBQW1GO2dCQUNuRixrQkFBa0I7Z0JBQ2xCLE9BQU8sYUFBYSxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUM7WUFDM0QsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLEVBQVUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFHRDs7T0FFRztJQUNLLCtCQUErQixDQUFDLEtBQVU7UUFDOUMsSUFBSSx1QkFBdUIsR0FBc0MsRUFBRSxDQUFDO1FBQ3BFLElBQUksSUFBSSxHQUFXLFNBQVMsQ0FBQztRQUU3QixJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNqQix1QkFBdUIsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztZQUNuRCxJQUFJLEdBQUcsU0FBUyxDQUFDO1FBQ3JCLENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDckQsdUJBQXVCLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUM7WUFDN0MsdUJBQXVCLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUM7WUFDN0MsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksNkJBQTZCLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztRQUM3RixDQUFDO1FBRUQsSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzFCLHVCQUF1QixDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDO1lBQzdDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLHlCQUF5QixFQUFFLHVCQUF1QixDQUFDLENBQUM7UUFDekYsQ0FBQztRQUVELElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMxQix1QkFBdUIsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQztZQUM3QyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSx5QkFBeUIsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO1FBQ3pGLENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzNCLHVCQUF1QixDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztZQUN0RSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLHdDQUF3QyxFQUFFLHVCQUF1QixDQUFDLENBQUM7UUFDakcsQ0FBQztRQUVELElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsNkJBQTZCLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztRQUN0RixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRDs7T0FFRztJQUNLLDRCQUE0QixDQUFDLEtBQWlDO1FBQ2xFLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUN6SCxDQUFDO2FBQU0sQ0FBQztZQUNKLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDaEgsQ0FBQztJQUNMLENBQUM7K0dBeE1VLHdCQUF3QjttSEFBeEIsd0JBQXdCLGNBRnZCLE1BQU07OzRGQUVQLHdCQUF3QjtrQkFIcEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFZhbGlkYXRpb25FcnJvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgZm9ya0pvaW4sIE9ic2VydmFibGUsIGxhc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IFRleHRib3hWYWxpZGF0b3JQYXJhbWV0ZXJzIH0gZnJvbSAnLi4vY29udHJvbHMvdGV4dGJveC90ZXh0Ym94LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERhdGVEaXNwbGF5UGlwZSB9IGZyb20gJy4uL3NoYXJlZC9kaXNwbGF5L3BpcGVzL2RhdGUtZGlzcGxheS5waXBlJztcclxuXHJcbi8qKlxyXG4gKiBcIldlYWsgVHlwZVwiIGRlc2NyaWJpbmcgaW50ZXJwb2xhdGlvbiBwYXJhbWV0ZXJzIGZvciBOdW1lcmljQm94XHJcbiAqL1xyXG5jbGFzcyBOdW1lcmljQm94SW50ZXJwb2xhdGlvblBhcmFtZXRlcnMge1xyXG4gICAgcHVibGljIHByZWNpc2lvbj86IG51bWJlcjtcclxuICAgIHB1YmxpYyBtaW5WYWx1ZT86IG51bWJlcjtcclxuICAgIHB1YmxpYyBtYXhWYWx1ZT86IG51bWJlcjtcclxuICAgIHB1YmxpYyBtaW5NYXhSYW5nZT86IHN0cmluZztcclxuICAgIHB1YmxpYyBtYXhQcmVjaXNpb25EaWdpdHM/OiBudW1iZXI7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBTZXJ2aWNlIHRvIHRha2Uge0BsaW5rIFZhbGlkYXRpb25FcnJvcnN9IGFuZCByZXR1cm4gbWVhbmluZ2Z1bCBlcnJvciBtZXNzYWdlc1xyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVmFsaWRhdGlvbk1lc3NhZ2VTZXJ2aWNlIHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgICBwcml2YXRlIGRhdGVEaXNwbGF5UGlwZTogRGF0ZURpc3BsYXlQaXBlXHJcbiAgKSB7IH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBtZWFuaW5nZnVsIGVycm9yIG1lc3NhZ2VzIGZyb20ge0BsaW5rIFZhbGlkYXRpb25FcnJvcnN9XHJcbiAgICovXHJcbiAgcHVibGljIGdldEVycm9yTWVzc2FnZXMoZXJyb3JzOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCk6IFByb21pc2U8QXJyYXk8YW55Pj4ge1xyXG5cclxuICAgICAgLyoqIEFycmF5IG9mIG9ic2VydmFibGVzIHJldHVybmVkIGZyb20gdGhlIFRyYW5zbGF0ZVNlcnZpY2UuICovXHJcbiAgICAgIGxldCB0cmFuc2xhdGlvbk9ic2VydmFibGVzID0gbmV3IEFycmF5PE9ic2VydmFibGU8c3RyaW5nPj4oKTtcclxuXHJcbiAgICAgIGlmIChlcnJvcnMgIT09IG51bGwpIHtcclxuXHJcbiAgICAgICAgICBmb3IgKHZhciBlcnJvcktleSBpbiBlcnJvcnMpIHtcclxuICAgICAgICAgICAgICAvLyBpdCB3b3VsZCBiZSBuaWNlIHRvIGhhdmUgdHlwaW5nIG9uIHRoZSBWYWxpZGF0aW9uRXJyb3JzXHJcbiAgICAgICAgICAgICAgbGV0IGVycm9yID0gZXJyb3JzW2Vycm9yS2V5XTtcclxuXHJcbiAgICAgICAgICAgICAgc3dpdGNoIChlcnJvcktleSkge1xyXG4gICAgICAgICAgICAgICAgICBjYXNlICdlbWFpbCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbk9ic2VydmFibGVzLnB1c2godGhpcy50cmFuc2xhdGUuZ2V0KCdJbnZhbGlkRW1haWxWYWxpZGF0aW9uTWVzc2FnZV9MQycpKTtcclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgICAgICAgY2FzZSAncmVxdWlyZWQnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb25PYnNlcnZhYmxlcy5wdXNoKHRoaXMudHJhbnNsYXRlLmdldCgnaXMgcmVxdWlyZWQnKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3JlcXVpcmVkUGx1cmFsJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb25PYnNlcnZhYmxlcy5wdXNoKHRoaXMudHJhbnNsYXRlLmdldCgnUmVxdWlyZWRQbHVyYWxWYWxpZGF0aW9uTWVzc2FnZV9MQycpKTtcclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgICAgICAgY2FzZSAnbWlubGVuZ3RoJzpcclxuICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uT2JzZXJ2YWJsZXMucHVzaCh0aGlzLnRyYW5zbGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoJ01pbkxlbmd0aFZhbGlkYXRpb25NZXNzYWdlX0xDJywgeyBtaW5MZW5ndGg6IGVycm9yLnJlcXVpcmVkTGVuZ3RoIH0pKTtcclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgICAgICAgY2FzZSAnbWF4bGVuZ3RoJzpcclxuICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uT2JzZXJ2YWJsZXMucHVzaCh0aGlzLnRyYW5zbGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoYE1heExlbmd0aFZhbGlkYXRpb25NZXNzYWdlYCwgeyBtYXhMZW5ndGg6IGVycm9yLnJlcXVpcmVkTGVuZ3RoIH0pKTtcclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgICAgICAgY2FzZSAncGF0dGVybic6XHJcbiAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbk9ic2VydmFibGVzLnB1c2godGhpcy50cmFuc2xhdGUuZ2V0KCdJbmNvcnJlY3RGb3JtYXRfTEMnKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgICAgICAgIGNhc2UgJ21pbic6XHJcbiAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbk9ic2VydmFibGVzLnB1c2godGhpcy50cmFuc2xhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KCdNaW5WYWx1ZVZhbGlkYXRpb25NZXNzYWdlX0xDJywgeyBtaW5WYWx1ZTogZXJyb3IubWluIH0pKTtcclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgICAgICAgY2FzZSAnbWF4JzpcclxuICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uT2JzZXJ2YWJsZXMucHVzaCh0aGlzLnRyYW5zbGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoJ01heFZhbHVlVmFsaWRhdGlvbk1lc3NhZ2VfTEMnLCB7IG1heFZhbHVlOiBlcnJvci5tYXggfSkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgICAgICAgICBjYXNlICd6aXBDb2RlSW52YWxpZEZvcm1hdCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbk9ic2VydmFibGVzLnB1c2godGhpcy50cmFuc2xhdGUuZ2V0KCdtdXN0IGJlIDXigJM5IG51bWJlcnMnKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgICAgICAgIGNhc2UgJ3Bvc3RhbENvZGVJbnZhbGlkRm9ybWF0JzpcclxuICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uT2JzZXJ2YWJsZXMucHVzaCh0aGlzLnRyYW5zbGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoJ211c3QgYmUgNiBjaGFyYWN0ZXJzLCBhbHRlcm5hdGluZyBsZXR0ZXJzIGFuZCBudW1iZXJzJykpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgICAgICAgICBjYXNlICd6aXBDb2RlTm90Rm91bmQnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb25PYnNlcnZhYmxlcy5wdXNoKHRoaXMudHJhbnNsYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldCgnWmlwQ29kZU5vdEZvdW5kVmFsaWRhdGlvbk1lc3NhZ2VfTEMnKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgICAgICAgIC8vIEN1c3RvbSB2YWxpZGF0b3IgZnJvbSB0aGUgTnVtZXJpY2JveENvbXBvbmVudFxyXG4gICAgICAgICAgICAgICAgICBjYXNlICdudW1lcmljYm94JzpcclxuICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uT2JzZXJ2YWJsZXMucHVzaCh0aGlzLmdldE51bWVyaWNCb3hWYWxpZGF0aW9uTWVzc2FnZXMoZXJyb3IpKTtcclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgICAgICAgY2FzZSAnYWRkbmV3JzpcclxuICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uT2JzZXJ2YWJsZXMucHVzaCh0aGlzLnRyYW5zbGF0ZS5nZXQoJ0NvdWxkTm90QmVBZGRlZFZhbGlkYXRpb25NZXNzYWdlX0xDJykpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgICAgICAgICAvLyBLZW5kbyBkYXRlcGlja2VyIG1pbiBlcnJvclxyXG4gICAgICAgICAgICAgICAgICBjYXNlICdtaW5FcnJvcic6XHJcbiAgICAgICAgICAgICAgICAgIGNhc2UgJ21pbkRhdGUnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gdGhpcy5kYXRlRGlzcGxheVBpcGUudHJhbnNmb3JtKGVycm9yLm1pblZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uT2JzZXJ2YWJsZXMucHVzaCh0aGlzLnRyYW5zbGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoJ01pblZhbHVlVmFsaWRhdGlvbk1lc3NhZ2VfTEMnLCB7IG1pblZhbHVlOiB2YWx1ZSB9KSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgICAgICAgIC8vIEtlbmRvIGRhdGVwaWNrZXIgbWF4IGVycm9yXHJcbiAgICAgICAgICAgICAgICAgIGNhc2UgJ21heEVycm9yJzpcclxuICAgICAgICAgICAgICAgICAgY2FzZSAnbWF4RGF0ZSc6XHJcbiAgICAgICAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLmRhdGVEaXNwbGF5UGlwZS50cmFuc2Zvcm0oZXJyb3IubWF4VmFsdWUsIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb25PYnNlcnZhYmxlcy5wdXNoKHRoaXMudHJhbnNsYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldCgnTWF4VmFsdWVWYWxpZGF0aW9uTWVzc2FnZV9MQycsIHsgbWF4VmFsdWU6IHZhbHVlIH0pKTtcclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgICAgICAgLy8gQ3VzdG9tIHZhbGlkYXRvciBmb3IgdGhlIERhdGVSYW5nZUNvbXBvbmVudFxyXG4gICAgICAgICAgICAgICAgICBjYXNlICdkYXRlUmFuZ2UnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb25PYnNlcnZhYmxlcy5wdXNoKHRoaXMudHJhbnNsYXRlLmdldCgnRGF0ZVJhbmdlVmFsaWRhdGlvbk1lc3NhZ2VfTEMnKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgICAgICAgIGNhc2UgJ3Bhc3N3b3JkJzpcclxuICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uT2JzZXJ2YWJsZXMucHVzaCh0aGlzLnRyYW5zbGF0ZS5nZXQoJ1Bhc3N3b3JkVmFsaWRhdGlvbk1lc3NhZ2VfTEMnKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgICAgICAgIC8vIEN1c3RvbSB2YWxpZGF0b3IgZnJvbSB0aGUgVGV4dGJveENvbXBvbmVudFxyXG4gICAgICAgICAgICAgICAgICBjYXNlICd0ZXh0Ym94JzpcclxuICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uT2JzZXJ2YWJsZXMucHVzaCh0aGlzLmdldFRleHRCb3hWYWxpZGF0aW9uTWVzc2FnZXMoZXJyb3IpKTtcclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgICAgICAgY2FzZSAnbm90VW5pcXVlJzpcclxuICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uT2JzZXJ2YWJsZXMucHVzaCh0aGlzLnRyYW5zbGF0ZS5nZXQoJ011c3RCZVVuaXF1ZV9MQycpKTtcclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgICAgICAgY2FzZSAnanNvbic6XHJcbiAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbk9ic2VydmFibGVzLnB1c2godGhpcy50cmFuc2xhdGUuZ2V0KCdKc29uVmFsaWRhdGlvbk1lc3NhZ2VfU0MnKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgICAgICAgIGNhc2UgJ3Bhc3N3b3JkSW52YWxpZCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbk9ic2VydmFibGVzLnB1c2godGhpcy50cmFuc2xhdGUuZ2V0KCdQYXNzd29yZEludmFsaWRWYWxpZGF0aW9uTWVzc2FnZV9MQycpKTtcclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgICAgICAgY2FzZSAnZG9tYWluJzpcclxuICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uT2JzZXJ2YWJsZXMucHVzaCh0aGlzLnRyYW5zbGF0ZS5nZXQoJ0RvbWFpblZhbGlkYXRpb25NZXNzYWdlX1NDJykpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgIGNhc2UgJ2ludmFsaWRGaWxlJzpcclxuICAgICAgICAgICAgICAgICAgY2FzZSAnaW52YWxpZEZvcm11bGEnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb25PYnNlcnZhYmxlcy5wdXNoKHRoaXMudHJhbnNsYXRlLmdldCgnaXMgaW52YWxpZCcpKTtcclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmICh0cmFuc2xhdGlvbk9ic2VydmFibGVzLmxlbmd0aCA+IDApIHtcclxuXHJcbiAgICAgICAgICAgICAgLy8gZm9ya0pvaW4gcmV0dXJucyBhbiBPYnNlcnZhYmxlIHRoYXQgZW1pdHMgd2hlbiBhbGwgaXRzIG9ic2VydmFibGVzIGNvbXBsZXRlLlxyXG4gICAgICAgICAgICAgIC8vIFdoZW4gZm9ya2pvaW4gZW1pdHMsIGl0IGVtaXRzIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIGxhc3QgdmFsdWUgcmV0dXJuZWQgZnJvbVxyXG4gICAgICAgICAgICAgIC8vIGVhY2ggb2YgaXRzIG9ic2VydmFibGVzLlxyXG4gICAgICAgICAgICAgIC8vIEBzZWUgaHR0cHM6Ly93d3cubGVhcm5yeGpzLmlvL29wZXJhdG9ycy9jb21iaW5hdGlvbi9mb3Jram9pbi5odG1sXHJcbiAgICAgICAgICAgICAgLy8gV2UgY29udmVydCB0aGlzIHRvIGEgcHJvbWlzZSBzbyB0aGUgZm9ybSBjb250cm9scyBjYW4gZGlzcGxheSB0aGUgZXJyb3IgbWVzc2FnZXNcclxuICAgICAgICAgICAgICAvLyBhc3luY2hyb25vdXNseS5cclxuICAgICAgICAgICAgICByZXR1cm4gbGFzdFZhbHVlRnJvbShmb3JrSm9pbih0cmFuc2xhdGlvbk9ic2VydmFibGVzKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobmV3IEFycmF5PHN0cmluZz4oKSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHByb3BlciB2YWxpZGF0aW9uIG1lc3NhZ2UgZm9yIEBzZWUgTnVtZXJpY0JveENvbXBvbmVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0TnVtZXJpY0JveFZhbGlkYXRpb25NZXNzYWdlcyhlcnJvcjogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgbGV0IGludGVycG9sYXRpb25QYXJhbWV0ZXJzOiBOdW1lcmljQm94SW50ZXJwb2xhdGlvblBhcmFtZXRlcnMgPSB7fTtcclxuICAgICAgbGV0IHR5cGU6IHN0cmluZyA9ICdJbnRlZ2VyJztcclxuXHJcbiAgICAgIGlmIChlcnJvci5kZWNpbWFscykge1xyXG4gICAgICAgICAgaW50ZXJwb2xhdGlvblBhcmFtZXRlcnMucHJlY2lzaW9uID0gZXJyb3IuZGVjaW1hbHM7XHJcbiAgICAgICAgICB0eXBlID0gJ0RlY2ltYWwnO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoZXJyb3IubWluICE9PSB1bmRlZmluZWQgJiYgZXJyb3IubWF4ICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIGludGVycG9sYXRpb25QYXJhbWV0ZXJzLm1pblZhbHVlID0gZXJyb3IubWluO1xyXG4gICAgICAgICAgaW50ZXJwb2xhdGlvblBhcmFtZXRlcnMubWF4VmFsdWUgPSBlcnJvci5tYXg7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuZ2V0KGAke3R5cGV9QmV0d2VlblZhbGlkYXRpb25NZXNzYWdlX0xDYCwgaW50ZXJwb2xhdGlvblBhcmFtZXRlcnMpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoZXJyb3IubWluICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIGludGVycG9sYXRpb25QYXJhbWV0ZXJzLm1pblZhbHVlID0gZXJyb3IubWluO1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmdldChgJHt0eXBlfU1pblZhbGlkYXRpb25NZXNzYWdlX0xDYCwgaW50ZXJwb2xhdGlvblBhcmFtZXRlcnMpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoZXJyb3IubWF4ICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIGludGVycG9sYXRpb25QYXJhbWV0ZXJzLm1heFZhbHVlID0gZXJyb3IubWF4O1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmdldChgJHt0eXBlfU1heFZhbGlkYXRpb25NZXNzYWdlX0xDYCwgaW50ZXJwb2xhdGlvblBhcmFtZXRlcnMpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoZXJyb3IubWF4UHJlY2lzaW9uRGlnaXRzKSB7XHJcbiAgICAgICAgICBpbnRlcnBvbGF0aW9uUGFyYW1ldGVycy5tYXhQcmVjaXNpb25EaWdpdHMgPSBlcnJvci5tYXhQcmVjaXNpb25EaWdpdHM7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuZ2V0KCdNYXhQcmVjaXNpb25EaWdpdHNWYWxpZGF0aW9uTWVzc2FnZV9MQycsIGludGVycG9sYXRpb25QYXJhbWV0ZXJzKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGVycm9yLmRlY2ltYWxzKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuZ2V0KCdEZWNpbWFsVmFsaWRhdGlvbk1lc3NhZ2VfTEMnLCBpbnRlcnBvbGF0aW9uUGFyYW1ldGVycyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5nZXQoJ0luY29ycmVjdEZvcm1hdF9MQycpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2l2ZW4gdGhlIGFkdmFuY2VkIHRleHRib3ggdmFsaWRhdGlvbiBwYXJhbXMgY29uc3RydWN0IHRoZSBlcnJvciBtZXNzYWdlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXRUZXh0Qm94VmFsaWRhdGlvbk1lc3NhZ2VzKGVycm9yOiBUZXh0Ym94VmFsaWRhdG9yUGFyYW1ldGVycyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgIGlmIChlcnJvci51bmlxdWUpIHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5nZXQoJ1RleHRib3hSZXF1aXJlZEFuZFVuaXF1ZV9MQycsIHsgbWluTGVuZ3RoOiBlcnJvci5taW5MZW5ndGgsIG1heExlbmd0aDogZXJyb3IubWF4TGVuZ3RoIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmdldCgnVGV4dGJveFJlcXVpcmVkX0xDJywgeyBtaW5MZW5ndGg6IGVycm9yLm1pbkxlbmd0aCwgbWF4TGVuZ3RoOiBlcnJvci5tYXhMZW5ndGggfSk7XHJcbiAgICAgIH1cclxuICB9XHJcblxyXG5cclxufVxyXG4iXX0=
@@ -0,0 +1,31 @@
1
+ /** Regex to flag all spaces */
2
+ export const findAllSpacesPattern = / /g;
3
+ /** Pattern to validate United States zip codes. Allows numbers and dash only */
4
+ export const unitedStatesZipCodeRegex = /^[0-9-]+$/;
5
+ /** Pattern to validate Canadian postal codes,
6
+ * must follow the 'letter number letter space number letter number' pattern */
7
+ export const canadianPostalCodeRegex = /^[a-zA-Z][0-9][a-zA-Z] [0-9][a-zA-Z][0-9]$/;
8
+ /** Pattern to validate other country zip codes, anything goes */
9
+ export const otherZipCodeRegex = /.*/;
10
+ /** Pattern to validate a correct date format */
11
+ export const dateInputFormatRegex = /^[0-9./-]+$/;
12
+ /** Pattern to validate integer numbers. Negative sign is optional and will not
13
+ * invalidate if just a minus sign is entered in the input, any digit `0-9` is allowed
14
+ */
15
+ export const integerPattern = new RegExp("^(-)?([\\d]+)?$");
16
+ /** Pattern to validate most public domains */
17
+ export const domainPattern = /^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$/i;
18
+ /**
19
+ * Function to return a decimal RegExp. Takes in the number of decimals to validate
20
+ * against
21
+ */
22
+ export const getDecimalPattern = (decimals) => {
23
+ let decimalPattern;
24
+ // Decimal portion, allowing zero to the maximum allowed decimals
25
+ // This enables us to allow a number like "1." or "." and not invalidate
26
+ let decimalPortion = "{0," + decimals.toString() + "}";
27
+ // Negative sign is optional as well as the decimal, any digit 0-9 is allowed
28
+ decimalPattern = new RegExp(`^((((-)?\\d+\\.?\\d${decimalPortion}?)|((-)?\\.?\\d${decimalPortion})))?$`);
29
+ return decimalPattern;
30
+ };
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi1wYXR0ZXJucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9jb3JlL3ZhbGlkYXRpb24tcGF0dGVybnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFXLElBQUksQ0FBQztBQUVqRCxpRkFBaUY7QUFDakYsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQVcsV0FBVyxDQUFDO0FBRTVEO2dGQUNnRjtBQUNoRixNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBVyw0Q0FBNEMsQ0FBQztBQUU1RixpRUFBaUU7QUFDakUsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQVcsSUFBSSxDQUFDO0FBRTlDLGdEQUFnRDtBQUNoRCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBVyxhQUFhLENBQUM7QUFFMUQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQVcsSUFBSSxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUVwRSw4Q0FBOEM7QUFDOUMsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFXLCtFQUErRSxDQUFDO0FBRXJIOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsUUFBZ0IsRUFBRSxFQUFFO0lBQ2xELElBQUksY0FBc0IsQ0FBQztJQUUzQixpRUFBaUU7SUFDakUsd0VBQXdFO0lBQ3hFLElBQUksY0FBYyxHQUFXLEtBQUssR0FBRyxRQUFRLENBQUMsUUFBUSxFQUFFLEdBQUcsR0FBRyxDQUFDO0lBQy9ELDZFQUE2RTtJQUM3RSxjQUFjLEdBQUcsSUFBSSxNQUFNLENBQUMsc0JBQXNCLGNBQWMsa0JBQWtCLGNBQWMsT0FBTyxDQUFDLENBQUM7SUFFekcsT0FBTyxjQUFjLENBQUM7QUFDMUIsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIFJlZ2V4IHRvIGZsYWcgYWxsIHNwYWNlcyAqL1xyXG5leHBvcnQgY29uc3QgZmluZEFsbFNwYWNlc1BhdHRlcm46IFJlZ0V4cCA9IC8gL2c7XHJcblxyXG4vKiogUGF0dGVybiB0byB2YWxpZGF0ZSBVbml0ZWQgU3RhdGVzIHppcCBjb2Rlcy4gIEFsbG93cyBudW1iZXJzIGFuZCBkYXNoIG9ubHkgKi9cclxuZXhwb3J0IGNvbnN0IHVuaXRlZFN0YXRlc1ppcENvZGVSZWdleDogUmVnRXhwID0gL15bMC05LV0rJC87XHJcblxyXG4vKiogUGF0dGVybiB0byB2YWxpZGF0ZSBDYW5hZGlhbiBwb3N0YWwgY29kZXMsXHJcbiAqICBtdXN0IGZvbGxvdyB0aGUgJ2xldHRlciBudW1iZXIgbGV0dGVyIHNwYWNlIG51bWJlciBsZXR0ZXIgbnVtYmVyJyBwYXR0ZXJuICovXHJcbmV4cG9ydCBjb25zdCBjYW5hZGlhblBvc3RhbENvZGVSZWdleDogUmVnRXhwID0gL15bYS16QS1aXVswLTldW2EtekEtWl0gWzAtOV1bYS16QS1aXVswLTldJC87XHJcblxyXG4vKiogUGF0dGVybiB0byB2YWxpZGF0ZSBvdGhlciBjb3VudHJ5IHppcCBjb2RlcywgYW55dGhpbmcgZ29lcyAqL1xyXG5leHBvcnQgY29uc3Qgb3RoZXJaaXBDb2RlUmVnZXg6IFJlZ0V4cCA9IC8uKi87XHJcblxyXG4vKiogUGF0dGVybiB0byB2YWxpZGF0ZSBhIGNvcnJlY3QgZGF0ZSBmb3JtYXQgKi9cclxuZXhwb3J0IGNvbnN0IGRhdGVJbnB1dEZvcm1hdFJlZ2V4OiBSZWdFeHAgPSAvXlswLTkuLy1dKyQvO1xyXG5cclxuLyoqIFBhdHRlcm4gdG8gdmFsaWRhdGUgaW50ZWdlciBudW1iZXJzLiAgTmVnYXRpdmUgc2lnbiBpcyBvcHRpb25hbCBhbmQgd2lsbCBub3RcclxuICogIGludmFsaWRhdGUgaWYganVzdCBhIG1pbnVzIHNpZ24gaXMgZW50ZXJlZCBpbiB0aGUgaW5wdXQsIGFueSBkaWdpdCBgMC05YCBpcyBhbGxvd2VkXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgaW50ZWdlclBhdHRlcm46IFJlZ0V4cCA9IG5ldyBSZWdFeHAoXCJeKC0pPyhbXFxcXGRdKyk/JFwiKTtcclxuXHJcbi8qKiBQYXR0ZXJuIHRvIHZhbGlkYXRlIG1vc3QgcHVibGljIGRvbWFpbnMgKi9cclxuZXhwb3J0IGNvbnN0IGRvbWFpblBhdHRlcm46IFJlZ0V4cCA9IC9eKD86W2EtejAtOV0oPzpbYS16MC05LV17MCw2MX1bYS16MC05XSk/XFwuKStbYS16MC05XVthLXowLTktXXswLDYxfVthLXowLTldJC9pO1xyXG5cclxuLyoqXHJcbiAqIEZ1bmN0aW9uIHRvIHJldHVybiBhIGRlY2ltYWwgUmVnRXhwLiAgVGFrZXMgaW4gdGhlIG51bWJlciBvZiBkZWNpbWFscyB0byB2YWxpZGF0ZVxyXG4gKiBhZ2FpbnN0XHJcbiAqL1xyXG5leHBvcnQgY29uc3QgZ2V0RGVjaW1hbFBhdHRlcm4gPSAoZGVjaW1hbHM6IG51bWJlcikgPT4ge1xyXG4gICAgbGV0IGRlY2ltYWxQYXR0ZXJuOiBSZWdFeHA7XHJcblxyXG4gICAgLy8gRGVjaW1hbCBwb3J0aW9uLCBhbGxvd2luZyB6ZXJvIHRvIHRoZSBtYXhpbXVtIGFsbG93ZWQgZGVjaW1hbHNcclxuICAgIC8vIFRoaXMgZW5hYmxlcyB1cyB0byBhbGxvdyBhIG51bWJlciBsaWtlIFwiMS5cIiBvciBcIi5cIiBhbmQgbm90IGludmFsaWRhdGVcclxuICAgIGxldCBkZWNpbWFsUG9ydGlvbjogc3RyaW5nID0gXCJ7MCxcIiArIGRlY2ltYWxzLnRvU3RyaW5nKCkgKyBcIn1cIjtcclxuICAgIC8vIE5lZ2F0aXZlIHNpZ24gaXMgb3B0aW9uYWwgYXMgd2VsbCBhcyB0aGUgZGVjaW1hbCwgYW55IGRpZ2l0IDAtOSBpcyBhbGxvd2VkXHJcbiAgICBkZWNpbWFsUGF0dGVybiA9IG5ldyBSZWdFeHAoYF4oKCgoLSk/XFxcXGQrXFxcXC4/XFxcXGQke2RlY2ltYWxQb3J0aW9ufT8pfCgoLSk/XFxcXC4/XFxcXGQke2RlY2ltYWxQb3J0aW9ufSkpKT8kYCk7XHJcblxyXG4gICAgcmV0dXJuIGRlY2ltYWxQYXR0ZXJuO1xyXG59XHJcbiJdfQ==
@@ -0,0 +1,186 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { fromEvent } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/router";
5
+ /**
6
+ * Service to help with interfacing with the window object
7
+ * and navigating around the application (going outside of the Angular 2+ router)
8
+ */
9
+ export class WindowService {
10
+ /**
11
+ * Tracks if there are any unsaved changes that the user could lose.
12
+ *
13
+ * It is set up as `get` only because it is set with `addNavigateAwayPrompt`.
14
+ *
15
+ * This also includes adding a prompt to the window itself (in addition to
16
+ * working with the `CanDeactivateUnsavedChanges` guard) to cover page reloads
17
+ * which do not trigger router events.
18
+ */
19
+ get hasUnsavedChanges() {
20
+ return this._hasUnsavedChanges;
21
+ }
22
+ /**
23
+ * Expose the innerWidth on the window global. Protects against errors when code
24
+ * is running on a non-browser platform.
25
+ */
26
+ get innerWidth() {
27
+ return window ? window.innerWidth : undefined;
28
+ }
29
+ constructor(router, activatedRoute) {
30
+ this.router = router;
31
+ this.activatedRoute = activatedRoute;
32
+ this._hasUnsavedChanges = false;
33
+ /**
34
+ * Function called when the window `beforeunload` event is fired.
35
+ *
36
+ * A reference to the function that was passed to `window.addEventListener`
37
+ * must be retained for `window.removeEventListener` to function properly.
38
+ *
39
+ * Some browsers require the event's `returnValue` to be set to show the confirmation
40
+ * dialog.
41
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event
42
+ */
43
+ this.beforeUnloadFunction = (event) => {
44
+ // Cancel the event as stated by the standard.
45
+ event.preventDefault();
46
+ // Chrome requires returnValue to be set.
47
+ event.returnValue = '';
48
+ };
49
+ if (window) {
50
+ this.resized = fromEvent(window, 'resize');
51
+ }
52
+ }
53
+ /**
54
+ * Navigates to the previous page the user had visited
55
+ */
56
+ goBack() {
57
+ window.history.back();
58
+ }
59
+ /**An abstraction around the browsers window history length.
60
+ * Returns zero if unable to access or running outside a browser context
61
+ */
62
+ getHistoryLength() {
63
+ return window?.history?.length || 0;
64
+ }
65
+ /**
66
+ * Navigate to any url you know the path to
67
+ * @param url The URL to navigate to
68
+ *
69
+ * @deprecated For legacy support only; use `router.navigateByUrl` instead
70
+ */
71
+ async navigateToUrl(url) {
72
+ try {
73
+ if (url.indexOf('/app/') === 0) {
74
+ await this.router.navigateByUrl(url.substring(5));
75
+ }
76
+ else {
77
+ await this.router.navigateByUrl(url);
78
+ }
79
+ }
80
+ catch (e) {
81
+ // If the router throws we will try to navigate to the fully qualified url as a last ditch effort.
82
+ // This can happen if we missed a link that needs to be converted to ng5 or our ng1Href directive
83
+ // didn't handle a link correctly
84
+ window.location.href = url;
85
+ }
86
+ }
87
+ /**
88
+ * Adds a `beforeunload` function to the window to alert the user that there are about to leave
89
+ * the current page and ask if they'd like to leave or stay
90
+ */
91
+ addNavigateAwayPrompt() {
92
+ this._hasUnsavedChanges = true;
93
+ window.addEventListener("beforeunload", this.beforeUnloadFunction);
94
+ }
95
+ /**
96
+ * Removes the `beforeunload` function added to the window
97
+ */
98
+ removeNavigateAwayPrompt() {
99
+ this._hasUnsavedChanges = false;
100
+ window.removeEventListener("beforeunload", this.beforeUnloadFunction);
101
+ }
102
+ /**
103
+ * Send data to another window.
104
+ *
105
+ * __SECURITY RISK__ - Always use a specific target origin. Failing to provide a specific target origin can allow
106
+ * malicious sites to receive the message.
107
+ *
108
+ * @param targetWindow - Window to send the message to
109
+ * @param message - Data to send
110
+ * @param targetOrigin - What the URI of the target window must be for the message to be sent.
111
+ * If sending data to another EnergyCAP window, this should always be `window.location.origin` to ensure
112
+ * that only instances of EnergyCAP app receive the message.
113
+ */
114
+ postMessage(targetWindow, message, targetOrigin) {
115
+ targetWindow.postMessage(message, targetOrigin);
116
+ }
117
+ /**
118
+ * Open a new window
119
+ * @param url - The URL of the resource to be loaded
120
+ */
121
+ openNew(url) {
122
+ window.open(url, '_blank');
123
+ }
124
+ /**
125
+ * A wrapper around the router for changing the query params for the current url
126
+ * without creating a new history entry or removing any existing query parameters.
127
+ * The provided params are updated if they already exist or added to the url if they don't
128
+ *
129
+ * @returns a promise that resolves to true if the navigation succeeds, false if something (like a guard) blocks it.
130
+ * In normal use, the navigation should succeed unless we use query params to block access to a route the user is already on
131
+ */
132
+ async modifyHistoryQueryParamsSubset(queryParams) {
133
+ return this.router.navigate([], {
134
+ relativeTo: this.activatedRoute,
135
+ replaceUrl: true,
136
+ queryParams: queryParams,
137
+ queryParamsHandling: 'merge',
138
+ });
139
+ }
140
+ /**A wrapper around the default javascript confirm dialog to allow us to unit test dependent code.
141
+ * Of course eventually we'd like to have pretty confirmations for everything, but in some cases it wasn't worth the extra time
142
+ * so we're using this instead.
143
+ */
144
+ confirm(prompt) {
145
+ return Promise.resolve(confirm(prompt));
146
+ }
147
+ /**
148
+ * Close the current window or a window instance if one is provided
149
+ * @param windowInstance - Window to close (optional)
150
+ */
151
+ closeWindow(windowInstance) {
152
+ if (windowInstance) {
153
+ windowInstance.close();
154
+ }
155
+ else {
156
+ window.close();
157
+ }
158
+ }
159
+ getLocation() {
160
+ return window.location.pathname + window.location.hash;
161
+ }
162
+ /** Get the current value of the full url, including protocol, host and path */
163
+ getFullUrl() {
164
+ return window.location.href;
165
+ }
166
+ /** Get the current value of the base url, including protocol, domain and port (if explicitly specified) */
167
+ getBaseUrl() {
168
+ return window.location.origin;
169
+ }
170
+ /**
171
+ * Reloads the browser window.
172
+ * NOT RECOMMENDED. Seek other options for reloading content within Angular before resorting to this.
173
+ */
174
+ reloadWindow() {
175
+ window.location.reload();
176
+ }
177
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WindowService, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Injectable }); }
178
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WindowService, providedIn: 'root' }); }
179
+ }
180
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WindowService, decorators: [{
181
+ type: Injectable,
182
+ args: [{
183
+ providedIn: 'root'
184
+ }]
185
+ }], ctorParameters: () => [{ type: i1.Router }, { type: i1.ActivatedRoute }] });
186
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2luZG93LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvY29yZS93aW5kb3cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBYyxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQUU3Qzs7O0dBR0c7QUFJSCxNQUFNLE9BQU8sYUFBYTtJQUV0Qjs7Ozs7Ozs7T0FRRztJQUNILElBQVcsaUJBQWlCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFBO0lBQ2xDLENBQUM7SUFHRDs7O09BR0c7SUFDSCxJQUFXLFVBQVU7UUFDakIsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNsRCxDQUFDO0lBT0QsWUFDWSxNQUFhLEVBQ2IsY0FBOEI7UUFEOUIsV0FBTSxHQUFOLE1BQU0sQ0FBTztRQUNiLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQWpCbEMsdUJBQWtCLEdBQVksS0FBSyxDQUFDO1FBZ0s1Qzs7Ozs7Ozs7O1dBU0c7UUFDSyx5QkFBb0IsR0FBRyxDQUFDLEtBQXdCLEVBQUUsRUFBRTtZQUN4RCw4Q0FBOEM7WUFDOUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLHlDQUF5QztZQUN6QyxLQUFLLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQUM7UUE1SkUsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMvQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTTtRQUNULE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFF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TUFBTSxFQUFFLENBQUM7SUFDN0IsQ0FBQzsrR0E1S1EsYUFBYTttSEFBYixhQUFhLGNBRlYsTUFBTTs7NEZBRVQsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJvdXRlciwgQWN0aXZhdGVkUm91dGUsIFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xyXG5cclxuLyoqXHJcbiAqIFNlcnZpY2UgdG8gaGVscCB3aXRoIGludGVyZmFjaW5nIHdpdGggdGhlIHdpbmRvdyBvYmplY3RcclxuICogYW5kIG5hdmlnYXRpbmcgYXJvdW5kIHRoZSBhcHBsaWNhdGlvbiAoZ29pbmcgb3V0c2lkZSBvZiB0aGUgQW5ndWxhciAyKyByb3V0ZXIpXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFdpbmRvd1NlcnZpY2Uge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVHJhY2tzIGlmIHRoZXJlIGFyZSBhbnkgdW5zYXZlZCBjaGFuZ2VzIHRoYXQgdGhlIHVzZXIgY291bGQgbG9zZS5cclxuICAgICAqXHJcbiAgICAgKiBJdCBpcyBzZXQgdXAgYXMgYGdldGAgb25seSBiZWNhdXNlIGl0IGlzIHNldCB3aXRoIGBhZGROYXZpZ2F0ZUF3YXlQcm9tcHRgLlxyXG4gICAgICpcclxuICAgICAqIFRoaXMgYWxzbyBpbmNsdWRlcyBhZGRpbmcgYSBwcm9tcHQgdG8gdGhlIHdpbmRvdyBpdHNlbGYgKGluIGFkZGl0aW9uIHRvXHJcbiAgICAgKiB3b3JraW5nIHdpdGggdGhlIGBDYW5EZWFjdGl2YXRlVW5zYXZlZENoYW5nZXNgIGd1YXJkKSB0byBjb3ZlciBwYWdlIHJlbG9hZHNcclxuICAgICAqIHdoaWNoIGRvIG5vdCB0cmlnZ2VyIHJvdXRlciBldmVudHMuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgaGFzVW5zYXZlZENoYW5nZXMoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc1Vuc2F2ZWRDaGFuZ2VzXHJcbiAgICB9XHJcbiAgICBwcml2YXRlIF9oYXNVbnNhdmVkQ2hhbmdlczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKiBcclxuICAgICAqIEV4cG9zZSB0aGUgaW5uZXJXaWR0aCBvbiB0aGUgd2luZG93IGdsb2JhbC4gUHJvdGVjdHMgYWdhaW5zdCBlcnJvcnMgd2hlbiBjb2RlXHJcbiAgICAgKiBpcyBydW5uaW5nIG9uIGEgbm9uLWJyb3dzZXIgcGxhdGZvcm0uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgaW5uZXJXaWR0aCgpOiBudW1iZXJ8dW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4gd2luZG93ID8gd2luZG93LmlubmVyV2lkdGggOiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPYnNlcnZhYmxlIG9mIHRoZSB3aW5kb3cgcmVzaXplIGV2ZW50XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyByZXNpemVkPzogT2JzZXJ2YWJsZTxFdmVudD47XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSByb3V0ZXI6Um91dGVyLFxyXG4gICAgICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlXHJcbiAgICApIHsgXHJcbiAgICAgICAgaWYgKHdpbmRvdykge1xyXG4gICAgICAgICAgICB0aGlzLnJlc2l6ZWQgPSBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTmF2aWdhdGVzIHRvIHRoZSBwcmV2aW91cyBwYWdlIHRoZSB1c2VyIGhhZCB2aXNpdGVkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnb0JhY2soKSB7XHJcbiAgICAgICAgd2luZG93Lmhpc3RvcnkuYmFjaygpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKkFuIGFic3RyYWN0aW9uIGFyb3VuZCB0aGUgYnJvd3NlcnMgd2luZG93IGhpc3RvcnkgbGVuZ3RoLlxyXG4gICAgICogUmV0dXJucyB6ZXJvIGlmIHVuYWJsZSB0byBhY2Nlc3Mgb3IgcnVubmluZyBvdXRzaWRlIGEgYnJvd3NlciBjb250ZXh0XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRIaXN0b3J5TGVuZ3RoKCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHdpbmRvdz8uaGlzdG9yeT8ubGVuZ3RoIHx8IDA7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBOYXZpZ2F0ZSB0byBhbnkgdXJsIHlvdSBrbm93IHRoZSBwYXRoIHRvXHJcbiAgICAgKiBAcGFyYW0gdXJsIFRoZSBVUkwgdG8gbmF2aWdhdGUgdG9cclxuICAgICAqXHJcbiAgICAgKiBAZGVwcmVjYXRlZCBGb3IgbGVnYWN5IHN1cHBvcnQgb25seTsgdXNlIGByb3V0ZXIubmF2aWdhdGVCeVVybGAgaW5zdGVhZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYXN5bmMgbmF2aWdhdGVUb1VybCh1cmw6IHN0cmluZykge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmICh1cmwuaW5kZXhPZignL2FwcC8nKSA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh1cmwuc3Vic3RyaW5nKDUpKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodXJsKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgLy8gSWYgdGhlIHJvdXRlciB0aHJvd3Mgd2Ugd2lsbCB0cnkgdG8gbmF2aWdhdGUgdG8gdGhlIGZ1bGx5IHF1YWxpZmllZCB1cmwgYXMgYSBsYXN0IGRpdGNoIGVmZm9ydC5cclxuICAgICAgICAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIGlmIHdlIG1pc3NlZCBhIGxpbmsgdGhhdCBuZWVkcyB0byBiZSBjb252ZXJ0ZWQgdG8gbmc1IG9yIG91ciBuZzFIcmVmIGRpcmVjdGl2ZVxyXG4gICAgICAgICAgICAvLyBkaWRuJ3QgaGFuZGxlIGEgbGluayBjb3JyZWN0bHlcclxuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB1cmw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkcyBhIGBiZWZvcmV1bmxvYWRgIGZ1bmN0aW9uIHRvIHRoZSB3aW5kb3cgdG8gYWxlcnQgdGhlIHVzZXIgdGhhdCB0aGVyZSBhcmUgYWJvdXQgdG8gbGVhdmVcclxuICAgICAqIHRoZSBjdXJyZW50IHBhZ2UgYW5kIGFzayBpZiB0aGV5J2QgbGlrZSB0byBsZWF2ZSBvciBzdGF5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhZGROYXZpZ2F0ZUF3YXlQcm9tcHQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5faGFzVW5zYXZlZENoYW5nZXMgPSB0cnVlO1xyXG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwiYmVmb3JldW5sb2FkXCIsIHRoaXMuYmVmb3JlVW5sb2FkRnVuY3Rpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVtb3ZlcyB0aGUgYGJlZm9yZXVubG9hZGAgZnVuY3Rpb24gYWRkZWQgdG8gdGhlIHdpbmRvd1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcmVtb3ZlTmF2aWdhdGVBd2F5UHJvbXB0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2hhc1Vuc2F2ZWRDaGFuZ2VzID0gZmFsc2U7XHJcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJiZWZvcmV1bmxvYWRcIiwgdGhpcy5iZWZvcmVVbmxvYWRGdW5jdGlvbik7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2VuZCBkYXRhIHRvIGFub3RoZXIgd2luZG93LlxyXG4gICAgICpcclxuICAgICAqIF9fU0VDVVJJVFkgUklTS19fIC0gQWx3YXlzIHVzZSBhIHNwZWNpZmljIHRhcmdldCBvcmlnaW4uIEZhaWxpbmcgdG8gcHJvdmlkZSBhIHNwZWNpZmljIHRhcmdldCBvcmlnaW4gY2FuIGFsbG93XHJcbiAgICAgKiBtYWxpY2lvdXMgc2l0ZXMgdG8gcmVjZWl2ZSB0aGUgbWVzc2FnZS5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gdGFyZ2V0V2luZG93IC0gV2luZG93IHRvIHNlbmQgdGhlIG1lc3NhZ2UgdG9cclxuICAgICAqIEBwYXJhbSBtZXNzYWdlIC0gRGF0YSB0byBzZW5kXHJcbiAgICAgKiBAcGFyYW0gdGFyZ2V0T3JpZ2luIC0gV2hhdCB0aGUgVVJJIG9mIHRoZSB0YXJnZXQgd2luZG93IG11c3QgYmUgZm9yIHRoZSBtZXNzYWdlIHRvIGJlIHNlbnQuXHJcbiAgICAgKiBJZiBzZW5kaW5nIGRhdGEgdG8gYW5vdGhlciBFbmVyZ3lDQVAgd2luZG93LCB0aGlzIHNob3VsZCBhbHdheXMgYmUgYHdpbmRvdy5sb2NhdGlvbi5vcmlnaW5gIHRvIGVuc3VyZVxyXG4gICAgICogdGhhdCBvbmx5IGluc3RhbmNlcyBvZiBFbmVyZ3lDQVAgYXBwIHJlY2VpdmUgdGhlIG1lc3NhZ2UuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBwb3N0TWVzc2FnZSh0YXJnZXRXaW5kb3c6IFdpbmRvdywgbWVzc2FnZTogYW55LCB0YXJnZXRPcmlnaW46IHN0cmluZykge1xyXG4gICAgICAgIHRhcmdldFdpbmRvdy5wb3N0TWVzc2FnZShtZXNzYWdlLCB0YXJnZXRPcmlnaW4pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogT3BlbiBhIG5ldyB3aW5kb3dcclxuICAgICAqIEBwYXJhbSB1cmwgLSBUaGUgVVJMIG9mIHRoZSByZXNvdXJjZSB0byBiZSBsb2FkZWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIG9wZW5OZXcodXJsOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICB3aW5kb3cub3Blbih1cmwsICdfYmxhbmsnKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEEgd3JhcHBlciBhcm91bmQgdGhlIHJvdXRlciBmb3IgY2hhbmdpbmcgdGhlIHF1ZXJ5IHBhcmFtcyBmb3IgdGhlIGN1cnJlbnQgdXJsIFxyXG4gICAgICogd2l0aG91dCBjcmVhdGluZyBhIG5ldyBoaXN0b3J5IGVudHJ5IG9yIHJlbW92aW5nIGFueSBleGlzdGluZyBxdWVyeSBwYXJhbWV0ZXJzLlxyXG4gICAgICogVGhlIHByb3ZpZGVkIHBhcmFtcyBhcmUgdXBkYXRlZCBpZiB0aGV5IGFscmVhZHkgZXhpc3Qgb3IgYWRkZWQgdG8gdGhlIHVybCBpZiB0aGV5IGRvbid0XHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIGEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRydWUgaWYgdGhlIG5hdmlnYXRpb24gc3VjY2VlZHMsIGZhbHNlIGlmIHNvbWV0aGluZyAobGlrZSBhIGd1YXJkKSBibG9ja3MgaXQuXHJcbiAgICAgKiBJbiBub3JtYWwgdXNlLCB0aGUgbmF2aWdhdGlvbiBzaG91bGQgc3VjY2VlZCB1bmxlc3Mgd2UgdXNlIHF1ZXJ5IHBhcmFtcyB0byBibG9jayBhY2Nlc3MgdG8gYSByb3V0ZSB0aGUgdXNlciBpcyBhbHJlYWR5IG9uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhc3luYyBtb2RpZnlIaXN0b3J5UXVlcnlQYXJhbXNTdWJzZXQocXVlcnlQYXJhbXM6IFBhcmFtcykgOiBQcm9taXNlPGJvb2xlYW4+e1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJvdXRlci5uYXZpZ2F0ZSggW10sIHtcclxuICAgICAgICAgICAgcmVsYXRpdmVUbzogdGhpcy5hY3RpdmF0ZWRSb3V0ZSxcclxuICAgICAgICAgICAgcmVwbGFjZVVybDogdHJ1ZSxcclxuICAgICAgICAgICAgcXVlcnlQYXJhbXM6IHF1ZXJ5UGFyYW1zLFxyXG4gICAgICAgICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiAnbWVyZ2UnLCBcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipBIHdyYXBwZXIgYXJvdW5kIHRoZSBkZWZhdWx0IGphdmFzY3JpcHQgY29uZmlybSBkaWFsb2cgdG8gYWxsb3cgdXMgdG8gdW5pdCB0ZXN0IGRlcGVuZGVudCBjb2RlLlxyXG4gICAgICogT2YgY291cnNlIGV2ZW50dWFsbHkgd2UnZCBsaWtlIHRvIGhhdmUgcHJldHR5IGNvbmZpcm1hdGlvbnMgZm9yIGV2ZXJ5dGhpbmcsIGJ1dCBpbiBzb21lIGNhc2VzIGl0IHdhc24ndCB3b3J0aCB0aGUgZXh0cmEgdGltZVxyXG4gICAgICogc28gd2UncmUgdXNpbmcgdGhpcyBpbnN0ZWFkLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY29uZmlybShwcm9tcHQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoY29uZmlybShwcm9tcHQpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENsb3NlIHRoZSBjdXJyZW50IHdpbmRvdyBvciBhIHdpbmRvdyBpbnN0YW5jZSBpZiBvbmUgaXMgcHJvdmlkZWRcclxuICAgICAqIEBwYXJhbSB3aW5kb3dJbnN0YW5jZSAtIFdpbmRvdyB0byBjbG9zZSAob3B0aW9uYWwpXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjbG9zZVdpbmRvdyh3aW5kb3dJbnN0YW5jZT86IFdpbmRvdyk6IHZvaWQge1xyXG4gICAgICAgIGlmICh3aW5kb3dJbnN0YW5jZSkge1xyXG4gICAgICAgICAgICB3aW5kb3dJbnN0YW5jZS5jbG9zZSgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHdpbmRvdy5jbG9zZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0TG9jYXRpb24oKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lICsgd2luZG93LmxvY2F0aW9uLmhhc2g7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEdldCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZnVsbCB1cmwsIGluY2x1ZGluZyBwcm90b2NvbCwgaG9zdCBhbmQgcGF0aCAqL1xyXG4gICAgcHVibGljIGdldEZ1bGxVcmwoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gd2luZG93LmxvY2F0aW9uLmhyZWY7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEdldCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgYmFzZSB1cmwsIGluY2x1ZGluZyBwcm90b2NvbCwgZG9tYWluIGFuZCBwb3J0IChpZiBleHBsaWNpdGx5IHNwZWNpZmllZCkgKi9cclxuICAgIHB1YmxpYyBnZXRCYXNlVXJsKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5vcmlnaW47XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZWxvYWRzIHRoZSBicm93c2VyIHdpbmRvdy5cclxuICAgICAqIE5PVCBSRUNPTU1FTkRFRC4gU2VlayBvdGhlciBvcHRpb25zIGZvciByZWxvYWRpbmcgY29udGVudCB3aXRoaW4gQW5ndWxhciBiZWZvcmUgcmVzb3J0aW5nIHRvIHRoaXMuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyByZWxvYWRXaW5kb3coKSB7XHJcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRnVuY3Rpb24gY2FsbGVkIHdoZW4gdGhlIHdpbmRvdyBgYmVmb3JldW5sb2FkYCBldmVudCBpcyBmaXJlZC5cclxuICAgICAqXHJcbiAgICAgKiBBIHJlZmVyZW5jZSB0byB0aGUgZnVuY3Rpb24gdGhhdCB3YXMgcGFzc2VkIHRvIGB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcmBcclxuICAgICAqIG11c3QgYmUgcmV0YWluZWQgZm9yIGB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcmAgdG8gZnVuY3Rpb24gcHJvcGVybHkuXHJcbiAgICAgKlxyXG4gICAgICogU29tZSBicm93c2VycyByZXF1aXJlIHRoZSBldmVudCdzIGByZXR1cm5WYWx1ZWAgdG8gYmUgc2V0IHRvIHNob3cgdGhlIGNvbmZpcm1hdGlvblxyXG4gICAgICogZGlhbG9nLlxyXG4gICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvV2luZG93L2JlZm9yZXVubG9hZF9ldmVudFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGJlZm9yZVVubG9hZEZ1bmN0aW9uID0gKGV2ZW50OiBCZWZvcmVVbmxvYWRFdmVudCkgPT4ge1xyXG4gICAgICAgIC8vIENhbmNlbCB0aGUgZXZlbnQgYXMgc3RhdGVkIGJ5IHRoZSBzdGFuZGFyZC5cclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIC8vIENocm9tZSByZXF1aXJlcyByZXR1cm5WYWx1ZSB0byBiZSBzZXQuXHJcbiAgICAgICAgZXZlbnQucmV0dXJuVmFsdWUgPSAnJztcclxuICAgIH07XHJcbn1cclxuIl19
@@ -0,0 +1,46 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../avatar/avatar.service";
4
+ import * as i2 from "@angular/common";
5
+ import * as i3 from "../../controls/dropdown/dropdown.component";
6
+ import * as i4 from "../avatar/avatar.component";
7
+ export class AppBarComponent {
8
+ constructor(avatarService) {
9
+ this.avatarService = avatarService;
10
+ this.userMenuItems = [];
11
+ this.userMenuWidth = 0;
12
+ this.userMenuMinWidth = 160;
13
+ this.userMenuTabindex = 0;
14
+ this.iconPath = '/assets/images/icon.svg';
15
+ this.menuItems = [];
16
+ this.userItem = [];
17
+ }
18
+ ngOnChanges() {
19
+ if (this.user) {
20
+ this.userItem[0] = { label: this.avatarService.getAvatarLabels(this.user).full || '', display: 'heading' };
21
+ }
22
+ else {
23
+ this.userItem = [];
24
+ }
25
+ this.menuItems = [...this.userItem, ...this.userMenuItems];
26
+ }
27
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppBarComponent, deps: [{ token: i1.AvatarService }], target: i0.ɵɵFactoryTarget.Component }); }
28
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AppBarComponent, selector: "ec-app-bar", inputs: { user: "user", userMenuItems: "userMenuItems", userMenuWidth: "userMenuWidth", userMenuMinWidth: "userMenuMinWidth", userMenuTabindex: "userMenuTabindex", iconPath: "iconPath" }, usesOnChanges: true, ngImport: i0, template: "<section class=\"logo-container\">\r\n <img src=\"{{iconPath}}\"\r\n alt=\"EnergyCAP Platform\">\r\n</section>\r\n\r\n<section class=\"title-container\">\r\n <ng-content select=\".app-bar-title\"></ng-content>\r\n</section>\r\n\r\n<section class=\"actions-container\">\r\n <ng-content select=\".app-bar-actions\"></ng-content>\r\n <ec-dropdown id=\"AppBarUserMenu\"\r\n *ngIf=\"userMenuItems.length; else avatar\"\r\n [items]=\"menuItems\"\r\n [buttonCustomTemplate]=\"avatar\"\r\n [showArrow]=\"false\"\r\n [menuWidth]=\"userMenuWidth\"\r\n [menuMinWidth]=\"userMenuMinWidth\"\r\n [tabindex]=\"userMenuTabindex\"></ec-dropdown>\r\n</section>\r\n\r\n<ng-template #avatar>\r\n <ec-avatar [user]=\"user\"></ec-avatar>\r\n</ng-template>", styles: [":host{display:flex;height:3rem;align-items:center;width:100%;padding:0 .75rem 0 1rem;background-color:var(--ec-background-color);position:relative;z-index:var(--ec-z-index-navbar)}:host ::ng-deep .app-bar-actions{display:flex;align-items:center;justify-content:flex-end;margin-right:.25rem}section{flex:1 1}.logo-container img{width:2rem;height:2rem}.title-container{text-align:center}.actions-container{display:flex;justify-content:flex-end}#AppBarUserMenu ::ng-deep ec-button{--ec-border-radius: 50%}#AppBarUserMenu ::ng-deep ec-button.active>.ec-button-custom{background-color:transparent;border-color:var(--ec-color-primary-light)}#AppBarUserMenu ::ng-deep ec-button .ec-button-custom:focus{background-color:var(--ec-background-color)}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.DropdownComponent, selector: "ec-dropdown", inputs: ["id", "autofocus", "status", "disabled", "label", "icon", "buttonType", "buttonAlignment", "buttonTitle", "tabindex", "showArrow", "items", "menuTemplateType", "menuTitle", "menuHeight", "menuWidth", "menuMinWidth", "menuPosition", "menuFooter", "popupFixed", "buttonCustomTemplate", "pending"], outputs: ["itemSelected", "popupOpened"] }, { kind: "component", type: i4.AvatarComponent, selector: "ec-avatar", inputs: ["user"] }] }); }
29
+ }
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppBarComponent, decorators: [{
31
+ type: Component,
32
+ args: [{ selector: 'ec-app-bar', template: "<section class=\"logo-container\">\r\n <img src=\"{{iconPath}}\"\r\n alt=\"EnergyCAP Platform\">\r\n</section>\r\n\r\n<section class=\"title-container\">\r\n <ng-content select=\".app-bar-title\"></ng-content>\r\n</section>\r\n\r\n<section class=\"actions-container\">\r\n <ng-content select=\".app-bar-actions\"></ng-content>\r\n <ec-dropdown id=\"AppBarUserMenu\"\r\n *ngIf=\"userMenuItems.length; else avatar\"\r\n [items]=\"menuItems\"\r\n [buttonCustomTemplate]=\"avatar\"\r\n [showArrow]=\"false\"\r\n [menuWidth]=\"userMenuWidth\"\r\n [menuMinWidth]=\"userMenuMinWidth\"\r\n [tabindex]=\"userMenuTabindex\"></ec-dropdown>\r\n</section>\r\n\r\n<ng-template #avatar>\r\n <ec-avatar [user]=\"user\"></ec-avatar>\r\n</ng-template>", styles: [":host{display:flex;height:3rem;align-items:center;width:100%;padding:0 .75rem 0 1rem;background-color:var(--ec-background-color);position:relative;z-index:var(--ec-z-index-navbar)}:host ::ng-deep .app-bar-actions{display:flex;align-items:center;justify-content:flex-end;margin-right:.25rem}section{flex:1 1}.logo-container img{width:2rem;height:2rem}.title-container{text-align:center}.actions-container{display:flex;justify-content:flex-end}#AppBarUserMenu ::ng-deep ec-button{--ec-border-radius: 50%}#AppBarUserMenu ::ng-deep ec-button.active>.ec-button-custom{background-color:transparent;border-color:var(--ec-color-primary-light)}#AppBarUserMenu ::ng-deep ec-button .ec-button-custom:focus{background-color:var(--ec-background-color)}\n"] }]
33
+ }], ctorParameters: () => [{ type: i1.AvatarService }], propDecorators: { user: [{
34
+ type: Input
35
+ }], userMenuItems: [{
36
+ type: Input
37
+ }], userMenuWidth: [{
38
+ type: Input
39
+ }], userMenuMinWidth: [{
40
+ type: Input
41
+ }], userMenuTabindex: [{
42
+ type: Input
43
+ }], iconPath: [{
44
+ type: Input
45
+ }] } });
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvZGlzcGxheS9hcHAtYmFyL2FwcC1iYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2Rpc3BsYXkvYXBwLWJhci9hcHAtYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFVNUQsTUFBTSxPQUFPLGVBQWU7SUFZMUIsWUFBb0IsYUFBNEI7UUFBNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFWdkMsa0JBQWEsR0FBZSxFQUFFLENBQUM7UUFDL0Isa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFDbEIscUJBQWdCLEdBQUcsR0FBRyxDQUFDO1FBQ3ZCLHFCQUFnQixHQUFHLENBQUMsQ0FBQztRQUNyQixhQUFRLEdBQUcseUJBQXlCLENBQUM7UUFFOUMsY0FBUyxHQUFlLEVBQUUsQ0FBQTtRQUVsQixhQUFRLEdBQWUsRUFBRSxDQUFDO0lBRWtCLENBQUM7SUFFOUMsV0FBVztRQUNoQixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBQyxDQUFDO1FBQzNHLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDckIsQ0FBQztRQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDN0QsQ0FBQzsrR0F0QlUsZUFBZTttR0FBZixlQUFlLG1RQ1Y1Qiw0MEJBdUJjOzs0RkRiRCxlQUFlO2tCQUwzQixTQUFTOytCQUNFLFlBQVk7a0ZBS2IsSUFBSTtzQkFBWixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICcuLi8uLi9jb250cm9scy9tZW51L21lbnUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQXZhdGFyVXNlciB9IGZyb20gJy4uL2F2YXRhci9hdmF0YXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQXZhdGFyU2VydmljZSB9IGZyb20gJy4uL2F2YXRhci9hdmF0YXIuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VjLWFwcC1iYXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hcHAtYmFyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hcHAtYmFyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEFwcEJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcbiAgQElucHV0KCkgdXNlcj86IEF2YXRhclVzZXI7XHJcbiAgQElucHV0KCkgdXNlck1lbnVJdGVtczogTWVudUl0ZW1bXSA9IFtdO1xyXG4gIEBJbnB1dCgpIHVzZXJNZW51V2lkdGggPSAwO1xyXG4gIEBJbnB1dCgpIHVzZXJNZW51TWluV2lkdGggPSAxNjA7XHJcbiAgQElucHV0KCkgdXNlck1lbnVUYWJpbmRleCA9IDA7XHJcbiAgQElucHV0KCkgaWNvblBhdGggPSAnL2Fzc2V0cy9pbWFnZXMvaWNvbi5zdmcnO1xyXG4gIFxyXG4gIG1lbnVJdGVtczogTWVudUl0ZW1bXSA9IFtdXHJcblxyXG4gIHByaXZhdGUgdXNlckl0ZW06IE1lbnVJdGVtW10gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhdmF0YXJTZXJ2aWNlOiBBdmF0YXJTZXJ2aWNlKSB7IH1cclxuXHJcbiAgcHVibGljIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudXNlcikge1xyXG4gICAgICB0aGlzLnVzZXJJdGVtWzBdID0ge2xhYmVsOiB0aGlzLmF2YXRhclNlcnZpY2UuZ2V0QXZhdGFyTGFiZWxzKHRoaXMudXNlcikuZnVsbCB8fCAnJywgZGlzcGxheTogJ2hlYWRpbmcnfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudXNlckl0ZW0gPSBbXTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm1lbnVJdGVtcyA9IFsuLi50aGlzLnVzZXJJdGVtLCAuLi50aGlzLnVzZXJNZW51SXRlbXNdO1xyXG4gIH1cclxufVxyXG4iLCI8c2VjdGlvbiBjbGFzcz1cImxvZ28tY29udGFpbmVyXCI+XHJcbiAgPGltZyBzcmM9XCJ7e2ljb25QYXRofX1cIlxyXG4gICAgICAgYWx0PVwiRW5lcmd5Q0FQIFBsYXRmb3JtXCI+XHJcbjwvc2VjdGlvbj5cclxuXHJcbjxzZWN0aW9uIGNsYXNzPVwidGl0bGUtY29udGFpbmVyXCI+XHJcbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiLmFwcC1iYXItdGl0bGVcIj48L25nLWNvbnRlbnQ+XHJcbjwvc2VjdGlvbj5cclxuXHJcbjxzZWN0aW9uIGNsYXNzPVwiYWN0aW9ucy1jb250YWluZXJcIj5cclxuICA8bmctY29udGVudCBzZWxlY3Q9XCIuYXBwLWJhci1hY3Rpb25zXCI+PC9uZy1jb250ZW50PlxyXG4gIDxlYy1kcm9wZG93biBpZD1cIkFwcEJhclVzZXJNZW51XCJcclxuICAgICAgICAgICAgICAgKm5nSWY9XCJ1c2VyTWVudUl0ZW1zLmxlbmd0aDsgZWxzZSBhdmF0YXJcIlxyXG4gICAgICAgICAgICAgICBbaXRlbXNdPVwibWVudUl0ZW1zXCJcclxuICAgICAgICAgICAgICAgW2J1dHRvbkN1c3RvbVRlbXBsYXRlXT1cImF2YXRhclwiXHJcbiAgICAgICAgICAgICAgIFtzaG93QXJyb3ddPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICBbbWVudVdpZHRoXT1cInVzZXJNZW51V2lkdGhcIlxyXG4gICAgICAgICAgICAgICBbbWVudU1pbldpZHRoXT1cInVzZXJNZW51TWluV2lkdGhcIlxyXG4gICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwidXNlck1lbnVUYWJpbmRleFwiPjwvZWMtZHJvcGRvd24+XHJcbjwvc2VjdGlvbj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjYXZhdGFyPlxyXG4gIDxlYy1hdmF0YXIgW3VzZXJdPVwidXNlclwiPjwvZWMtYXZhdGFyPlxyXG48L25nLXRlbXBsYXRlPiJdfQ==
@@ -0,0 +1,67 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "./avatar.service";
4
+ export class AvatarComponent {
5
+ constructor(el, renderer, avatarService) {
6
+ this.el = el;
7
+ this.renderer = renderer;
8
+ this.avatarService = avatarService;
9
+ /** Color map base on the first let of the label */
10
+ this.colors = {
11
+ abcde01: 'red',
12
+ fghij23: 'orange',
13
+ klmn15: 'yellow',
14
+ opqr67: 'green',
15
+ stuv8: 'blue',
16
+ wxyz9: 'purple'
17
+ };
18
+ /** Label is defaulted to HI in the rare case the user does not have a first name, last name, email or username */
19
+ this.label = 'HI';
20
+ /** Track the current CSS class so we can remove it if the user changes before setting the next one */
21
+ this.currentCSSClass = '';
22
+ }
23
+ ngOnChanges(changes) {
24
+ if (!changes.user.firstChange && !this.user) {
25
+ console.error(`AvatarComponent expected a value for the [user] input but got ${this.user} instead.`);
26
+ }
27
+ this.updateLabel();
28
+ this.updateColor();
29
+ }
30
+ /**
31
+ * Update the Avatar label
32
+ *
33
+ */
34
+ updateLabel() {
35
+ if (this.user) {
36
+ this.label = this.avatarService.getAvatarLabels(this.user).abbreviation;
37
+ }
38
+ }
39
+ /**
40
+ * Sets the color of the Avatar based on the first letter of the label. If the label is HI or is not
41
+ * a letter, default to gray.
42
+ */
43
+ updateColor() {
44
+ if (this.currentCSSClass) {
45
+ this.renderer.removeClass(this.el.nativeElement, this.currentCSSClass);
46
+ }
47
+ let color = 'gray';
48
+ if (this.label !== 'HI' && this.label) {
49
+ for (let key in this.colors) {
50
+ if (key.includes(this.label[0].toLowerCase())) {
51
+ color = this.colors[key];
52
+ }
53
+ }
54
+ }
55
+ this.currentCSSClass = `avatar-${color}`;
56
+ this.renderer.addClass(this.el.nativeElement, this.currentCSSClass);
57
+ }
58
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AvatarComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.AvatarService }], target: i0.ɵɵFactoryTarget.Component }); }
59
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AvatarComponent, selector: "ec-avatar", inputs: { user: "user" }, usesOnChanges: true, ngImport: i0, template: '{{label}}', isInline: true, styles: [":host{display:flex;width:2.25rem;height:2.25rem;align-items:center;justify-content:center;font-size:1rem;line-height:1.25rem;border-radius:50%;color:var(--ec-color-primary-light);text-transform:uppercase}:host.avatar-red{background-color:var(--ec-avatar-background-color-red, var(--ec-color-red-5));color:var(--ec-avatar-color-red, var(--ec-color-primary-light))}:host.avatar-orange{background-color:var(--ec-avatar-background-color-orange, var(--ec-color-orange-5));color:var(--ec-avatar-color-orange, var(--ec-color-primary-light))}:host.avatar-yellow{background-color:var(--ec-avatar-background-color-yellow, var(--ec-color-yellow-5));color:var(--ec-avatar-color-yellow, var(--ec-color-secondary-dark))}:host.avatar-green{background-color:var(--ec-avatar-background-color-green, var(--ec-color-green-5));color:var(--ec-avatar-color-green, var(--ec-color-primary-light))}:host.avatar-blue{background-color:var(--ec-avatar-background-color-blue, var(--ec-color-blue-5));color:var(--ec-avatar-color-blue, var(--ec-color-primary-light))}:host.avatar-purple{background-color:var(--ec-avatar-background-color-purple, var(--ec-color-purple-5));color:var(--ec-avatar-color-purple, var(--ec-color-primary-light))}:host.avatar-gray{background-color:var(--ec-avatar-background-color-gray, var(--ec-color-gray-3));color:var(--ec-avatar-color-gray, var(--ec-color-primary-light))}\n"] }); }
60
+ }
61
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AvatarComponent, decorators: [{
62
+ type: Component,
63
+ args: [{ selector: 'ec-avatar', template: '{{label}}', styles: [":host{display:flex;width:2.25rem;height:2.25rem;align-items:center;justify-content:center;font-size:1rem;line-height:1.25rem;border-radius:50%;color:var(--ec-color-primary-light);text-transform:uppercase}:host.avatar-red{background-color:var(--ec-avatar-background-color-red, var(--ec-color-red-5));color:var(--ec-avatar-color-red, var(--ec-color-primary-light))}:host.avatar-orange{background-color:var(--ec-avatar-background-color-orange, var(--ec-color-orange-5));color:var(--ec-avatar-color-orange, var(--ec-color-primary-light))}:host.avatar-yellow{background-color:var(--ec-avatar-background-color-yellow, var(--ec-color-yellow-5));color:var(--ec-avatar-color-yellow, var(--ec-color-secondary-dark))}:host.avatar-green{background-color:var(--ec-avatar-background-color-green, var(--ec-color-green-5));color:var(--ec-avatar-color-green, var(--ec-color-primary-light))}:host.avatar-blue{background-color:var(--ec-avatar-background-color-blue, var(--ec-color-blue-5));color:var(--ec-avatar-color-blue, var(--ec-color-primary-light))}:host.avatar-purple{background-color:var(--ec-avatar-background-color-purple, var(--ec-color-purple-5));color:var(--ec-avatar-color-purple, var(--ec-color-primary-light))}:host.avatar-gray{background-color:var(--ec-avatar-background-color-gray, var(--ec-color-gray-3));color:var(--ec-avatar-color-gray, var(--ec-color-primary-light))}\n"] }]
64
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.AvatarService }], propDecorators: { user: [{
65
+ type: Input
66
+ }] } });
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9kaXNwbGF5L2F2YXRhci9hdmF0YXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUF1QyxNQUFNLGVBQWUsQ0FBQzs7O0FBZWxHLE1BQU0sT0FBTyxlQUFlO0lBb0IxQixZQUFvQixFQUFjLEVBQVUsUUFBbUIsRUFBVSxhQUE0QjtRQUFqRixPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUFVLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBbEJyRyxtREFBbUQ7UUFDM0MsV0FBTSxHQUE0QjtZQUN4QyxPQUFPLEVBQUUsS0FBSztZQUNkLE9BQU8sRUFBRSxRQUFRO1lBQ2pCLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLE1BQU0sRUFBRSxPQUFPO1lBQ2YsS0FBSyxFQUFFLE1BQU07WUFDYixLQUFLLEVBQUUsUUFBUTtTQUNoQixDQUFBO1FBSUQsa0hBQWtIO1FBQzNHLFVBQUssR0FBRyxJQUFJLENBQUM7UUFFcEIsc0dBQXNHO1FBQzlGLG9CQUFlLEdBQUcsRUFBRSxDQUFDO0lBRTJFLENBQUM7SUFFekcsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM1QyxPQUFPLENBQUMsS0FBSyxDQUFDLGlFQUFpRSxJQUFJLENBQUMsSUFBSSxXQUFXLENBQUMsQ0FBQztRQUN2RyxDQUFDO1FBRUQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssV0FBVztRQUNqQixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQztRQUMxRSxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNLLFdBQVc7UUFDakIsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3pFLENBQUM7UUFFRCxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUM7UUFDbkIsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdEMsS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQzVCLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsQ0FBQztvQkFDOUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzNCLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksQ0FBQyxlQUFlLEdBQUcsVUFBVSxLQUFLLEVBQUUsQ0FBQztRQUN6QyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDdEUsQ0FBQzsrR0E1RFUsZUFBZTttR0FBZixlQUFlLGdHQUhoQixXQUFXOzs0RkFHVixlQUFlO2tCQUwzQixTQUFTOytCQUNFLFdBQVcsWUFDWCxXQUFXO21JQWVaLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE9uQ2hhbmdlcywgUmVuZGVyZXIyLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEF2YXRhclNlcnZpY2UgfSBmcm9tICcuL2F2YXRhci5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQXZhdGFyVXNlciB7XHJcbiAgZmlyc3ROYW1lPzogc3RyaW5nO1xyXG4gIGxhc3ROYW1lPzogc3RyaW5nO1xyXG4gIGVtYWlsPzogc3RyaW5nO1xyXG4gIHVzZXJuYW1lPzogc3RyaW5nO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VjLWF2YXRhcicsXHJcbiAgdGVtcGxhdGU6ICd7e2xhYmVsfX0nLFxyXG4gIHN0eWxlVXJsczogWycuL2F2YXRhci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdmF0YXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG5cclxuICAvKiogQ29sb3IgbWFwIGJhc2Ugb24gdGhlIGZpcnN0IGxldCBvZiB0aGUgbGFiZWwgKi9cclxuICBwcml2YXRlIGNvbG9yczogeyBbazogc3RyaW5nXTogc3RyaW5nIH0gPSB7XHJcbiAgICBhYmNkZTAxOiAncmVkJyxcclxuICAgIGZnaGlqMjM6ICdvcmFuZ2UnLFxyXG4gICAga2xtbjE1OiAneWVsbG93JyxcclxuICAgIG9wcXI2NzogJ2dyZWVuJyxcclxuICAgIHN0dXY4OiAnYmx1ZScsXHJcbiAgICB3eHl6OTogJ3B1cnBsZSdcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIHVzZXIhOiBBdmF0YXJVc2VyO1xyXG5cclxuICAvKiogTGFiZWwgaXMgZGVmYXVsdGVkIHRvIEhJIGluIHRoZSByYXJlIGNhc2UgdGhlIHVzZXIgZG9lcyBub3QgaGF2ZSBhIGZpcnN0IG5hbWUsIGxhc3QgbmFtZSwgZW1haWwgb3IgdXNlcm5hbWUgKi9cclxuICBwdWJsaWMgbGFiZWwgPSAnSEknO1xyXG5cclxuICAvKiogVHJhY2sgdGhlIGN1cnJlbnQgQ1NTIGNsYXNzIHNvIHdlIGNhbiByZW1vdmUgaXQgaWYgdGhlIHVzZXIgY2hhbmdlcyBiZWZvcmUgc2V0dGluZyB0aGUgbmV4dCBvbmUgKi9cclxuICBwcml2YXRlIGN1cnJlbnRDU1NDbGFzcyA9ICcnO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmLCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsIHByaXZhdGUgYXZhdGFyU2VydmljZTogQXZhdGFyU2VydmljZSkge31cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKCFjaGFuZ2VzLnVzZXIuZmlyc3RDaGFuZ2UgJiYgIXRoaXMudXNlcikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGBBdmF0YXJDb21wb25lbnQgZXhwZWN0ZWQgYSB2YWx1ZSBmb3IgdGhlIFt1c2VyXSBpbnB1dCBidXQgZ290ICR7dGhpcy51c2VyfSBpbnN0ZWFkLmApO1xyXG4gICAgfSBcclxuICAgICAgXHJcbiAgICB0aGlzLnVwZGF0ZUxhYmVsKCk7XHJcbiAgICB0aGlzLnVwZGF0ZUNvbG9yKCk7ICAgIFxyXG4gIH1cclxuXHJcbiAgLyoqIFxyXG4gICAqIFVwZGF0ZSB0aGUgQXZhdGFyIGxhYmVsIFxyXG4gICAqIFxyXG4gICAqL1xyXG4gIHByaXZhdGUgdXBkYXRlTGFiZWwoKSB7XHJcbiAgICBpZiAodGhpcy51c2VyKSB7XHJcbiAgICAgIHRoaXMubGFiZWwgPSB0aGlzLmF2YXRhclNlcnZpY2UuZ2V0QXZhdGFyTGFiZWxzKHRoaXMudXNlcikuYWJicmV2aWF0aW9uO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIFxyXG4gICAqIFNldHMgdGhlIGNvbG9yIG9mIHRoZSBBdmF0YXIgYmFzZWQgb24gdGhlIGZpcnN0IGxldHRlciBvZiB0aGUgbGFiZWwuIElmIHRoZSBsYWJlbCBpcyBISSBvciBpcyBub3RcclxuICAgKiBhIGxldHRlciwgZGVmYXVsdCB0byBncmF5LlxyXG4gICAqL1xyXG4gIHByaXZhdGUgdXBkYXRlQ29sb3IoKSB7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50Q1NTQ2xhc3MpIHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIHRoaXMuY3VycmVudENTU0NsYXNzKTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgY29sb3IgPSAnZ3JheSc7XHJcbiAgICBpZiAodGhpcy5sYWJlbCAhPT0gJ0hJJyAmJiB0aGlzLmxhYmVsKSB7XHJcbiAgICAgIGZvciAobGV0IGtleSBpbiB0aGlzLmNvbG9ycykge1xyXG4gICAgICAgIGlmIChrZXkuaW5jbHVkZXModGhpcy5sYWJlbFswXS50b0xvd2VyQ2FzZSgpKSkge1xyXG4gICAgICAgICAgY29sb3IgPSB0aGlzLmNvbG9yc1trZXldO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5jdXJyZW50Q1NTQ2xhc3MgPSBgYXZhdGFyLSR7Y29sb3J9YDtcclxuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LCB0aGlzLmN1cnJlbnRDU1NDbGFzcyk7XHJcbiAgfVxyXG59Il19