@energycap/components 0.31.5 → 0.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (292) hide show
  1. package/energycap-components.min.css +2 -2
  2. package/energycap-email.min.css +1 -1
  3. package/esm2020/energycap-components.mjs +5 -0
  4. package/esm2020/lib/components.module.mjs +386 -0
  5. package/esm2020/lib/controls/banner/banner.component.mjs +106 -0
  6. package/esm2020/lib/controls/button/button.component.mjs +106 -0
  7. package/esm2020/lib/controls/button/copy-button.directive.mjs +65 -0
  8. package/esm2020/lib/controls/checkbox/checkbox.component.mjs +139 -0
  9. package/esm2020/lib/controls/collapsible-toggle/collapsible-toggle.component.mjs +38 -0
  10. package/esm2020/lib/controls/combobox/combobox.component.mjs +841 -0
  11. package/esm2020/lib/controls/dropdown/dropdown.component.mjs +237 -0
  12. package/esm2020/lib/controls/file-upload/file-upload.component.mjs +169 -0
  13. package/esm2020/lib/controls/form-control/form-control.component.mjs +86 -0
  14. package/esm2020/lib/controls/form-control-base.mjs +143 -0
  15. package/esm2020/lib/controls/form-control-label/form-control-label.component.mjs +136 -0
  16. package/esm2020/lib/controls/form-group/form-group.component.mjs +252 -0
  17. package/esm2020/lib/controls/help-popover/help-popover.component.mjs +28 -0
  18. package/esm2020/lib/controls/item-picker/item-picker.component.mjs +233 -0
  19. package/esm2020/lib/controls/link-button/link-button.component.mjs +11 -0
  20. package/esm2020/lib/controls/menu/menu.component.mjs +443 -0
  21. package/{esm2015/lib/controls/navigation/link-item.js → esm2020/lib/controls/navigation/link-item.mjs} +0 -0
  22. package/{esm2015/lib/controls/navigation/nav-group.js → esm2020/lib/controls/navigation/nav-group.mjs} +0 -0
  23. package/esm2020/lib/controls/navigation/nav-item-active.directive.mjs +92 -0
  24. package/{esm2015/lib/controls/navigation/nav-item.js → esm2020/lib/controls/navigation/nav-item.mjs} +0 -0
  25. package/esm2020/lib/controls/numericbox/numericbox.component.mjs +371 -0
  26. package/esm2020/lib/controls/popover/popover.component.mjs +84 -0
  27. package/{esm2015/lib/controls/radio-button/radio-button-option.js → esm2020/lib/controls/radio-button/radio-button-option.mjs} +0 -0
  28. package/esm2020/lib/controls/radio-button/radio-button.component.mjs +81 -0
  29. package/esm2020/lib/controls/select/select.component.mjs +87 -0
  30. package/esm2020/lib/controls/tabs/tabs.component.mjs +47 -0
  31. package/esm2020/lib/controls/textbox/textbox.component.mjs +154 -0
  32. package/{esm2015/lib/core/cache.service.js → esm2020/lib/core/cache.service.mjs} +9 -8
  33. package/{esm2015/lib/core/custom-validators.js → esm2020/lib/core/custom-validators.mjs} +0 -0
  34. package/{esm2015/lib/core/date-time-helper.js → esm2020/lib/core/date-time-helper.mjs} +0 -0
  35. package/esm2020/lib/core/error.service.mjs +57 -0
  36. package/esm2020/lib/core/scroll.service.mjs +89 -0
  37. package/esm2020/lib/core/telemetry-tracker.service.mjs +16 -0
  38. package/esm2020/lib/core/telemetry.service.mjs +38 -0
  39. package/esm2020/lib/core/validation-message.service.mjs +181 -0
  40. package/{esm2015/lib/core/validation-patterns.js → esm2020/lib/core/validation-patterns.mjs} +0 -0
  41. package/esm2020/lib/core/window.service.mjs +182 -0
  42. package/esm2020/lib/display/app-bar/app-bar.component.mjs +46 -0
  43. package/esm2020/lib/display/avatar/avatar.component.mjs +67 -0
  44. package/{esm2015/lib/display/avatar/avatar.service.js → esm2020/lib/display/avatar/avatar.service.mjs} +9 -7
  45. package/esm2020/lib/display/confirm/confirm.component.mjs +131 -0
  46. package/{esm2015/lib/display/dialog/dialog-content.js → esm2020/lib/display/dialog/dialog-content.mjs} +0 -0
  47. package/esm2020/lib/display/dialog/dialog-group/dialog-group.component.mjs +63 -0
  48. package/{esm2015/lib/display/dialog/dialog-types.js → esm2020/lib/display/dialog/dialog-types.mjs} +0 -0
  49. package/esm2020/lib/display/dialog/dialog.component.mjs +242 -0
  50. package/esm2020/lib/display/dialog/dialog.service.mjs +71 -0
  51. package/{esm2015/lib/display/help/help-types.js → esm2020/lib/display/help/help-types.mjs} +0 -0
  52. package/esm2020/lib/display/hierarchy/hierarchy-base.mjs +106 -0
  53. package/{esm2015/lib/display/hierarchy/hierarchy-mocks.spec.js → esm2020/lib/display/hierarchy/hierarchy-mocks.spec.mjs} +5 -9
  54. package/esm2020/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.mjs +59 -0
  55. package/esm2020/lib/display/item-display/item-display.component.mjs +67 -0
  56. package/esm2020/lib/display/json-display/json-display.component.mjs +47 -0
  57. package/esm2020/lib/display/resizable/resizable-base.mjs +120 -0
  58. package/esm2020/lib/display/resizable/resizable.component.mjs +57 -0
  59. package/esm2020/lib/display/spinner/spinner.component.mjs +12 -0
  60. package/esm2020/lib/display/splash/splash.component.mjs +42 -0
  61. package/esm2020/lib/display/splash/splash.service.mjs +35 -0
  62. package/esm2020/lib/display/table/resizable-column.component.mjs +20 -0
  63. package/esm2020/lib/display/table/resizable-table.directive.mjs +227 -0
  64. package/esm2020/lib/display/table/searchable-table.component.mjs +338 -0
  65. package/esm2020/lib/display/table/table-detail-row.component.mjs +27 -0
  66. package/esm2020/lib/display/table/table-locked-column.component.mjs +58 -0
  67. package/esm2020/lib/display/table/table-master-header-row.component.mjs +11 -0
  68. package/esm2020/lib/display/table/table-master-row.component.mjs +150 -0
  69. package/esm2020/lib/display/table/table-pagination.component.mjs +150 -0
  70. package/esm2020/lib/display/table/table-selectable-row.component.mjs +235 -0
  71. package/esm2020/lib/display/table/table.component.mjs +244 -0
  72. package/esm2020/lib/display/tags/tag.mjs +15 -0
  73. package/esm2020/lib/display/tags/tags.component.mjs +77 -0
  74. package/esm2020/lib/display/toast/toast/toast.component.mjs +77 -0
  75. package/{esm2015/lib/display/toast/toast-types.js → esm2020/lib/display/toast/toast-types.mjs} +0 -0
  76. package/esm2020/lib/display/toast/toast.service.mjs +35 -0
  77. package/esm2020/lib/display/toast/toaster/toaster.component.mjs +114 -0
  78. package/esm2020/lib/display/tooltip/tooltip.component.mjs +25 -0
  79. package/esm2020/lib/display/tooltip/tooltip.service.mjs +63 -0
  80. package/esm2020/lib/display/tree/tree.component.mjs +125 -0
  81. package/esm2020/lib/display/view-overlay/view-overlay.component.mjs +58 -0
  82. package/esm2020/lib/shared/directives/click-area-for/click-area-for.directive.mjs +32 -0
  83. package/esm2020/lib/shared/directives/if-viewport-width/if-viewport-width.directive.mjs +111 -0
  84. package/esm2020/lib/shared/directives/popup/popup-container.directive.mjs +163 -0
  85. package/esm2020/lib/shared/display/pipes/date-display.pipe.mjs +50 -0
  86. package/esm2020/lib/shared/display/pipes/highlight-text.pipe.mjs +30 -0
  87. package/esm2020/lib/shared/display/pipes/relative-date.pipe.mjs +48 -0
  88. package/esm2020/lib/shared/display/pipes/row-count.pipe.mjs +48 -0
  89. package/esm2020/lib/shared/display/pipes/time-display.pipe.mjs +41 -0
  90. package/{esm2015/lib/shared/display.js → esm2020/lib/shared/display.mjs} +0 -0
  91. package/esm2020/lib/shared/form-group.helper.mjs +67 -0
  92. package/{esm2015/lib/shared/json-helper.js → esm2020/lib/shared/json-helper.mjs} +0 -0
  93. package/{esm2015/lib/shared/lodash-helper.js → esm2020/lib/shared/lodash-helper.mjs} +0 -0
  94. package/esm2020/lib/shared/page/page-base/page-base.component.mjs +339 -0
  95. package/{esm2015/lib/shared/page/page-statuses.js → esm2020/lib/shared/page/page-statuses.mjs} +0 -0
  96. package/esm2020/lib/shared/page/page-title/page-title.component.mjs +23 -0
  97. package/esm2020/lib/shared/page/page-view/page-view.component.mjs +121 -0
  98. package/{esm2015/lib/shared/testing/hierarchy-base-test-injector-factory.spec.js → esm2020/lib/shared/testing/hierarchy-base-test-injector-factory.spec.mjs} +0 -0
  99. package/esm2020/lib/shared/testing/page-base-component-test-helper.spec.mjs +30 -0
  100. package/{esm2015/lib/shared/testing/page-base-component-test-injector-factory.spec.js → esm2020/lib/shared/testing/page-base-component-test-injector-factory.spec.mjs} +0 -0
  101. package/esm2020/lib/shared/testing/public-mocks.spec.mjs +132 -0
  102. package/{esm2015/lib/shared/testing/spy-factory.spec.js → esm2020/lib/shared/testing/spy-factory.spec.mjs} +0 -0
  103. package/{esm2015/lib/shared/testing/translation-mocks.spec.js → esm2020/lib/shared/testing/translation-mocks.spec.mjs} +0 -0
  104. package/esm2020/lib/shared/user-preference.service.mjs +17 -0
  105. package/esm2020/lib/shared/wizard/wizard-base/wizard-base.component.mjs +246 -0
  106. package/esm2020/lib/shared/wizard/wizard-buttons/wizard-buttons.component.mjs +68 -0
  107. package/esm2020/lib/shared/wizard/wizard-progress/wizard-progress.component.mjs +18 -0
  108. package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
  109. package/fesm2015/energycap-components.mjs +10090 -0
  110. package/fesm2015/energycap-components.mjs.map +1 -0
  111. package/fesm2020/energycap-components.mjs +9999 -0
  112. package/fesm2020/energycap-components.mjs.map +1 -0
  113. package/index.d.ts +5 -0
  114. package/lib/components.module.d.ts +72 -0
  115. package/lib/controls/banner/banner.component.d.ts +3 -0
  116. package/lib/controls/button/button.component.d.ts +3 -0
  117. package/lib/controls/button/copy-button.directive.d.ts +3 -0
  118. package/lib/controls/checkbox/checkbox.component.d.ts +3 -0
  119. package/lib/controls/collapsible-toggle/collapsible-toggle.component.d.ts +3 -0
  120. package/lib/controls/combobox/combobox.component.d.ts +5 -2
  121. package/lib/controls/dropdown/dropdown.component.d.ts +3 -0
  122. package/lib/controls/file-upload/file-upload.component.d.ts +5 -2
  123. package/lib/controls/form-control/form-control.component.d.ts +3 -0
  124. package/lib/controls/form-control-base.d.ts +3 -0
  125. package/lib/controls/form-control-label/form-control-label.component.d.ts +3 -0
  126. package/lib/controls/form-group/form-group.component.d.ts +6 -3
  127. package/lib/controls/help-popover/help-popover.component.d.ts +3 -0
  128. package/lib/controls/item-picker/item-picker.component.d.ts +5 -2
  129. package/lib/controls/link-button/link-button.component.d.ts +3 -0
  130. package/lib/controls/menu/menu.component.d.ts +3 -0
  131. package/lib/controls/navigation/nav-item-active.directive.d.ts +3 -0
  132. package/lib/controls/numericbox/numericbox.component.d.ts +5 -2
  133. package/lib/controls/popover/popover.component.d.ts +3 -0
  134. package/lib/controls/radio-button/radio-button.component.d.ts +3 -0
  135. package/lib/controls/select/select.component.d.ts +3 -0
  136. package/lib/controls/tabs/tabs.component.d.ts +3 -0
  137. package/lib/controls/textbox/textbox.component.d.ts +3 -0
  138. package/lib/core/cache.service.d.ts +3 -0
  139. package/lib/core/error.service.d.ts +3 -0
  140. package/lib/core/scroll.service.d.ts +3 -0
  141. package/lib/core/telemetry-tracker.service.d.ts +3 -0
  142. package/lib/core/telemetry.service.d.ts +3 -0
  143. package/lib/core/validation-message.service.d.ts +3 -0
  144. package/lib/core/window.service.d.ts +3 -0
  145. package/lib/display/app-bar/app-bar.component.d.ts +3 -0
  146. package/lib/display/avatar/avatar.component.d.ts +3 -0
  147. package/lib/display/avatar/avatar.service.d.ts +3 -0
  148. package/lib/display/confirm/confirm.component.d.ts +5 -2
  149. package/lib/display/dialog/dialog-group/dialog-group.component.d.ts +3 -0
  150. package/lib/display/dialog/dialog.component.d.ts +3 -0
  151. package/lib/display/dialog/dialog.service.d.ts +3 -0
  152. package/lib/display/hierarchy/hierarchy-base.d.ts +3 -0
  153. package/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.d.ts +3 -0
  154. package/lib/display/item-display/item-display.component.d.ts +3 -0
  155. package/lib/display/json-display/json-display.component.d.ts +5 -2
  156. package/lib/display/resizable/resizable-base.d.ts +3 -0
  157. package/lib/display/resizable/resizable.component.d.ts +3 -0
  158. package/lib/display/spinner/spinner.component.d.ts +3 -0
  159. package/lib/display/splash/splash.component.d.ts +3 -0
  160. package/lib/display/splash/splash.service.d.ts +3 -0
  161. package/lib/display/table/resizable-column.component.d.ts +3 -0
  162. package/lib/display/table/resizable-table.directive.d.ts +3 -0
  163. package/lib/display/table/searchable-table.component.d.ts +6 -3
  164. package/lib/display/table/table-detail-row.component.d.ts +3 -0
  165. package/lib/display/table/table-locked-column.component.d.ts +3 -0
  166. package/lib/display/table/table-master-header-row.component.d.ts +3 -0
  167. package/lib/display/table/table-master-row.component.d.ts +3 -0
  168. package/lib/display/table/table-pagination.component.d.ts +3 -0
  169. package/lib/display/table/table-selectable-row.component.d.ts +5 -2
  170. package/lib/display/table/table.component.d.ts +3 -0
  171. package/lib/display/tags/tags.component.d.ts +3 -0
  172. package/lib/display/toast/toast/toast.component.d.ts +3 -0
  173. package/lib/display/toast/toast.service.d.ts +3 -0
  174. package/lib/display/toast/toaster/toaster.component.d.ts +3 -0
  175. package/lib/display/tooltip/tooltip.component.d.ts +3 -0
  176. package/lib/display/tooltip/tooltip.service.d.ts +3 -0
  177. package/lib/display/tree/tree.component.d.ts +3 -0
  178. package/lib/display/view-overlay/view-overlay.component.d.ts +3 -0
  179. package/lib/shared/directives/click-area-for/click-area-for.directive.d.ts +3 -0
  180. package/lib/shared/directives/if-viewport-width/if-viewport-width.directive.d.ts +3 -0
  181. package/lib/shared/directives/popup/popup-container.directive.d.ts +3 -0
  182. package/lib/shared/display/pipes/date-display.pipe.d.ts +3 -0
  183. package/lib/shared/display/pipes/highlight-text.pipe.d.ts +3 -0
  184. package/lib/shared/display/pipes/relative-date.pipe.d.ts +3 -0
  185. package/lib/shared/display/pipes/row-count.pipe.d.ts +3 -0
  186. package/lib/shared/display/pipes/time-display.pipe.d.ts +3 -0
  187. package/lib/shared/form-group.helper.d.ts +5 -2
  188. package/lib/shared/page/page-base/page-base.component.d.ts +5 -2
  189. package/lib/shared/page/page-title/page-title.component.d.ts +3 -0
  190. package/lib/shared/page/page-view/page-view.component.d.ts +3 -0
  191. package/lib/shared/testing/public-mocks.spec.d.ts +7 -0
  192. package/lib/shared/user-preference.service.d.ts +3 -0
  193. package/lib/shared/wizard/wizard-base/wizard-base.component.d.ts +3 -0
  194. package/lib/shared/wizard/wizard-buttons/wizard-buttons.component.d.ts +3 -0
  195. package/lib/shared/wizard/wizard-progress/wizard-progress.component.d.ts +3 -0
  196. package/package.json +27 -15
  197. package/src/styles/_functions.scss +6 -4
  198. package/src/styles/_icons.scss +1 -1
  199. package/src/styles/mixins/_control-base.scss +2 -2
  200. package/src/styles/mixins/_form-control-base.scss +3 -1
  201. package/src/styles/mixins/_spinner-base.scss +3 -1
  202. package/bundles/energycap-components.umd.js +0 -10646
  203. package/bundles/energycap-components.umd.js.map +0 -1
  204. package/bundles/energycap-components.umd.min.js +0 -17
  205. package/bundles/energycap-components.umd.min.js.map +0 -1
  206. package/energycap-components.d.ts +0 -7
  207. package/energycap-components.metadata.json +0 -1
  208. package/esm2015/energycap-components.js +0 -8
  209. package/esm2015/lib/components.module.js +0 -238
  210. package/esm2015/lib/controls/banner/banner.component.js +0 -94
  211. package/esm2015/lib/controls/button/button.component.js +0 -89
  212. package/esm2015/lib/controls/button/copy-button.directive.js +0 -63
  213. package/esm2015/lib/controls/checkbox/checkbox.component.js +0 -137
  214. package/esm2015/lib/controls/collapsible-toggle/collapsible-toggle.component.js +0 -35
  215. package/esm2015/lib/controls/combobox/combobox.component.js +0 -819
  216. package/esm2015/lib/controls/dropdown/dropdown.component.js +0 -207
  217. package/esm2015/lib/controls/file-upload/file-upload.component.js +0 -172
  218. package/esm2015/lib/controls/form-control/form-control.component.js +0 -65
  219. package/esm2015/lib/controls/form-control-base.js +0 -140
  220. package/esm2015/lib/controls/form-control-label/form-control-label.component.js +0 -139
  221. package/esm2015/lib/controls/form-group/form-group.component.js +0 -254
  222. package/esm2015/lib/controls/help-popover/help-popover.component.js +0 -22
  223. package/esm2015/lib/controls/item-picker/item-picker.component.js +0 -216
  224. package/esm2015/lib/controls/link-button/link-button.component.js +0 -12
  225. package/esm2015/lib/controls/menu/menu.component.js +0 -424
  226. package/esm2015/lib/controls/navigation/nav-item-active.directive.js +0 -86
  227. package/esm2015/lib/controls/numericbox/numericbox.component.js +0 -362
  228. package/esm2015/lib/controls/popover/popover.component.js +0 -85
  229. package/esm2015/lib/controls/radio-button/radio-button.component.js +0 -78
  230. package/esm2015/lib/controls/select/select.component.js +0 -89
  231. package/esm2015/lib/controls/tabs/tabs.component.js +0 -42
  232. package/esm2015/lib/controls/textbox/textbox.component.js +0 -149
  233. package/esm2015/lib/core/error.service.js +0 -56
  234. package/esm2015/lib/core/scroll.service.js +0 -88
  235. package/esm2015/lib/core/telemetry-tracker.service.js +0 -14
  236. package/esm2015/lib/core/telemetry.service.js +0 -40
  237. package/esm2015/lib/core/validation-message.service.js +0 -185
  238. package/esm2015/lib/core/window.service.js +0 -191
  239. package/esm2015/lib/display/app-bar/app-bar.component.js +0 -42
  240. package/esm2015/lib/display/avatar/avatar.component.js +0 -73
  241. package/esm2015/lib/display/confirm/confirm.component.js +0 -127
  242. package/esm2015/lib/display/dialog/dialog-group/dialog-group.component.js +0 -65
  243. package/esm2015/lib/display/dialog/dialog.component.js +0 -229
  244. package/esm2015/lib/display/dialog/dialog.service.js +0 -69
  245. package/esm2015/lib/display/hierarchy/hierarchy-base.js +0 -106
  246. package/esm2015/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.js +0 -58
  247. package/esm2015/lib/display/item-display/item-display.component.js +0 -57
  248. package/esm2015/lib/display/json-display/json-display.component.js +0 -44
  249. package/esm2015/lib/display/resizable/resizable-base.js +0 -119
  250. package/esm2015/lib/display/resizable/resizable.component.js +0 -57
  251. package/esm2015/lib/display/spinner/spinner.component.js +0 -12
  252. package/esm2015/lib/display/splash/splash.component.js +0 -45
  253. package/esm2015/lib/display/splash/splash.service.js +0 -34
  254. package/esm2015/lib/display/table/resizable-column.component.js +0 -23
  255. package/esm2015/lib/display/table/resizable-table.directive.js +0 -223
  256. package/esm2015/lib/display/table/searchable-table.component.js +0 -303
  257. package/esm2015/lib/display/table/table-detail-row.component.js +0 -21
  258. package/esm2015/lib/display/table/table-locked-column.component.js +0 -53
  259. package/esm2015/lib/display/table/table-master-header-row.component.js +0 -11
  260. package/esm2015/lib/display/table/table-master-row.component.js +0 -141
  261. package/esm2015/lib/display/table/table-pagination.component.js +0 -146
  262. package/esm2015/lib/display/table/table-selectable-row.component.js +0 -216
  263. package/esm2015/lib/display/table/table.component.js +0 -210
  264. package/esm2015/lib/display/tags/tag.js +0 -15
  265. package/esm2015/lib/display/tags/tags.component.js +0 -73
  266. package/esm2015/lib/display/toast/toast/toast.component.js +0 -70
  267. package/esm2015/lib/display/toast/toast.service.js +0 -34
  268. package/esm2015/lib/display/toast/toaster/toaster.component.js +0 -117
  269. package/esm2015/lib/display/tooltip/tooltip.component.js +0 -24
  270. package/esm2015/lib/display/tooltip/tooltip.service.js +0 -64
  271. package/esm2015/lib/display/tree/tree.component.js +0 -100
  272. package/esm2015/lib/display/view-overlay/view-overlay.component.js +0 -50
  273. package/esm2015/lib/shared/directives/click-area-for/click-area-for.directive.js +0 -25
  274. package/esm2015/lib/shared/directives/if-viewport-width/if-viewport-width.directive.js +0 -112
  275. package/esm2015/lib/shared/directives/popup/popup-container.directive.js +0 -160
  276. package/esm2015/lib/shared/display/pipes/date-display.pipe.js +0 -49
  277. package/esm2015/lib/shared/display/pipes/highlight-text.pipe.js +0 -26
  278. package/esm2015/lib/shared/display/pipes/relative-date.pipe.js +0 -49
  279. package/esm2015/lib/shared/display/pipes/row-count.pipe.js +0 -47
  280. package/esm2015/lib/shared/display/pipes/time-display.pipe.js +0 -40
  281. package/esm2015/lib/shared/form-group.helper.js +0 -65
  282. package/esm2015/lib/shared/page/page-base/page-base.component.js +0 -356
  283. package/esm2015/lib/shared/page/page-title/page-title.component.js +0 -19
  284. package/esm2015/lib/shared/page/page-view/page-view.component.js +0 -94
  285. package/esm2015/lib/shared/testing/page-base-component-test-helper.spec.js +0 -35
  286. package/esm2015/lib/shared/testing/public-mocks.spec.js +0 -126
  287. package/esm2015/lib/shared/user-preference.service.js +0 -15
  288. package/esm2015/lib/shared/wizard/wizard-base/wizard-base.component.js +0 -260
  289. package/esm2015/lib/shared/wizard/wizard-buttons/wizard-buttons.component.js +0 -54
  290. package/esm2015/lib/shared/wizard/wizard-progress/wizard-progress.component.js +0 -18
  291. package/fesm2015/energycap-components.js +0 -9638
  292. package/fesm2015/energycap-components.js.map +0 -1
@@ -1,65 +0,0 @@
1
- import { Validators } from '@angular/forms';
2
- import { Injectable } from '@angular/core';
3
- import * as i0 from "@angular/core";
4
- /**
5
- * Helper for Form Groups
6
- */
7
- export class FormGroupHelper {
8
- /**
9
- * Call patchValue on the formGroup with only the properties
10
- * that actually have values in updates. This method will ignore
11
- * any value that is either null or undefined
12
- */
13
- patchValueSafely(formGroup, updates) {
14
- let safeUpdates = {};
15
- Object.keys(updates).forEach(function (propName) {
16
- let rawValue = updates[propName];
17
- if (rawValue !== null && rawValue !== undefined) {
18
- safeUpdates[propName] = rawValue;
19
- }
20
- });
21
- formGroup.patchValue(safeUpdates);
22
- }
23
- /**
24
- * Get an id for the form controls input
25
- */
26
- getInputId(id) {
27
- return id + '_input';
28
- }
29
- /**
30
- * Takes in a control and returns a function that sets the control's required validator based on
31
- * whether the value provided is empty or not. Adds the required validator if the value provided is
32
- * not empty, otherwise removes the required validator. Useful for dynamically setting the requiredness
33
- * of a control based on whether another control has a value or not.
34
- *
35
- * @param control
36
- * @param keepValidators - Array of Validators to leave configured on the control. Any existing
37
- * validators on the control will be lost if this is left empty.
38
- * @param isZeroEmpty - If true, a numeric zero will be considered an empty value. Default is false.
39
- */
40
- setRequiredFn(control, keepValidators = [], isZeroEmpty = false) {
41
- return (value) => {
42
- let validators = [...keepValidators];
43
- // If the value is not empty, add the required validator.
44
- if (value || (!isZeroEmpty ? value === 0 : false)) {
45
- validators.push(Validators.required);
46
- }
47
- if (validators.length > 0) {
48
- control.setValidators(validators);
49
- }
50
- else {
51
- control.clearValidators();
52
- }
53
- // Recalculating the value is required when changing the validators, otherwise
54
- // the validator won't take effect until the value is changed in the control.
55
- control.updateValueAndValidity({ emitEvent: false });
56
- };
57
- }
58
- }
59
- FormGroupHelper.ɵprov = i0.ɵɵdefineInjectable({ factory: function FormGroupHelper_Factory() { return new FormGroupHelper(); }, token: FormGroupHelper, providedIn: "root" });
60
- FormGroupHelper.decorators = [
61
- { type: Injectable, args: [{
62
- providedIn: 'root'
63
- },] }
64
- ];
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1ncm91cC5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL2Zvcm0tZ3JvdXAuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBOEIsVUFBVSxFQUFlLE1BQU0sZ0JBQWdCLENBQUM7QUFDckYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFM0M7O0dBRUc7QUFJSCxNQUFNLE9BQU8sZUFBZTtJQUV4Qjs7OztPQUlHO0lBQ0ksZ0JBQWdCLENBQUMsU0FBb0IsRUFBRSxPQUFZO1FBQ3RELElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUNyQixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLFFBQVE7WUFDM0MsSUFBSSxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRWpDLElBQUcsUUFBUSxLQUFLLElBQUksSUFBSSxRQUFRLEtBQUssU0FBUyxFQUFDO2dCQUMzQyxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsUUFBUSxDQUFDO2FBQ3BDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxTQUFTLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7T0FFRztJQUNJLFVBQVUsQ0FBQyxFQUFVO1FBQ3hCLE9BQU8sRUFBRSxHQUFHLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNJLGFBQWEsQ0FBQyxPQUF3QixFQUFFLGlCQUFnQyxFQUFFLEVBQUUsY0FBdUIsS0FBSztRQUMzRyxPQUFPLENBQUMsS0FBOEIsRUFBRSxFQUFFO1lBQ3RDLElBQUksVUFBVSxHQUFHLENBQUMsR0FBRyxjQUFjLENBQUMsQ0FBQztZQUVyQyx5REFBeUQ7WUFDekQsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQy9DLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ3hDO1lBRUQsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDdkIsT0FBTyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUNyQztpQkFBTTtnQkFDSCxPQUFPLENBQUMsZUFBZSxFQUFFLENBQUM7YUFDN0I7WUFDRCw4RUFBOEU7WUFDOUUsNkVBQTZFO1lBQzdFLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDO1FBQ3ZELENBQUMsQ0FBQTtJQUNMLENBQUM7Ozs7WUExREosVUFBVSxTQUFDO2dCQUNSLFVBQVUsRUFBRSxNQUFNO2FBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybUdyb3VwLCBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRvcnMsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG4vKipcclxuICogSGVscGVyIGZvciBGb3JtIEdyb3Vwc1xyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtR3JvdXBIZWxwZXIge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsbCBwYXRjaFZhbHVlIG9uIHRoZSBmb3JtR3JvdXAgd2l0aCBvbmx5IHRoZSBwcm9wZXJ0aWVzXHJcbiAgICAgKiB0aGF0IGFjdHVhbGx5IGhhdmUgdmFsdWVzIGluIHVwZGF0ZXMuIFRoaXMgbWV0aG9kIHdpbGwgaWdub3JlXHJcbiAgICAgKiBhbnkgdmFsdWUgdGhhdCBpcyBlaXRoZXIgbnVsbCBvciB1bmRlZmluZWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIHBhdGNoVmFsdWVTYWZlbHkoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIHVwZGF0ZXM6IGFueSl7XHJcbiAgICAgICAgbGV0IHNhZmVVcGRhdGVzID0ge307XHJcbiAgICAgICAgT2JqZWN0LmtleXModXBkYXRlcykuZm9yRWFjaChmdW5jdGlvbiAocHJvcE5hbWUpIHtcclxuICAgICAgICAgICAgbGV0IHJhd1ZhbHVlID0gdXBkYXRlc1twcm9wTmFtZV07XHJcblxyXG4gICAgICAgICAgICBpZihyYXdWYWx1ZSAhPT0gbnVsbCAmJiByYXdWYWx1ZSAhPT0gdW5kZWZpbmVkKXtcclxuICAgICAgICAgICAgICAgIHNhZmVVcGRhdGVzW3Byb3BOYW1lXSA9IHJhd1ZhbHVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgZm9ybUdyb3VwLnBhdGNoVmFsdWUoc2FmZVVwZGF0ZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0IGFuIGlkIGZvciB0aGUgZm9ybSBjb250cm9scyBpbnB1dFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0SW5wdXRJZChpZDogc3RyaW5nKTpzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBpZCArICdfaW5wdXQnO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGFrZXMgaW4gYSBjb250cm9sIGFuZCByZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCBzZXRzIHRoZSBjb250cm9sJ3MgcmVxdWlyZWQgdmFsaWRhdG9yIGJhc2VkIG9uXHJcbiAgICAgKiB3aGV0aGVyIHRoZSB2YWx1ZSBwcm92aWRlZCBpcyBlbXB0eSBvciBub3QuIEFkZHMgdGhlIHJlcXVpcmVkIHZhbGlkYXRvciBpZiB0aGUgdmFsdWUgcHJvdmlkZWQgaXNcclxuICAgICAqIG5vdCBlbXB0eSwgb3RoZXJ3aXNlIHJlbW92ZXMgdGhlIHJlcXVpcmVkIHZhbGlkYXRvci4gVXNlZnVsIGZvciBkeW5hbWljYWxseSBzZXR0aW5nIHRoZSByZXF1aXJlZG5lc3NcclxuICAgICAqIG9mIGEgY29udHJvbCBiYXNlZCBvbiB3aGV0aGVyIGFub3RoZXIgY29udHJvbCBoYXMgYSB2YWx1ZSBvciBub3QuXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSBjb250cm9sXHJcbiAgICAgKiBAcGFyYW0ga2VlcFZhbGlkYXRvcnMgLSBBcnJheSBvZiBWYWxpZGF0b3JzIHRvIGxlYXZlIGNvbmZpZ3VyZWQgb24gdGhlIGNvbnRyb2wuIEFueSBleGlzdGluZ1xyXG4gICAgICogdmFsaWRhdG9ycyBvbiB0aGUgY29udHJvbCB3aWxsIGJlIGxvc3QgaWYgdGhpcyBpcyBsZWZ0IGVtcHR5LlxyXG4gICAgICogQHBhcmFtIGlzWmVyb0VtcHR5IC0gSWYgdHJ1ZSwgYSBudW1lcmljIHplcm8gd2lsbCBiZSBjb25zaWRlcmVkIGFuIGVtcHR5IHZhbHVlLiBEZWZhdWx0IGlzIGZhbHNlLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0UmVxdWlyZWRGbihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIGtlZXBWYWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdID0gW10sIGlzWmVyb0VtcHR5OiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgICAgICByZXR1cm4gKHZhbHVlPzogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbCkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgdmFsaWRhdG9ycyA9IFsuLi5rZWVwVmFsaWRhdG9yc107XHJcblxyXG4gICAgICAgICAgICAvLyBJZiB0aGUgdmFsdWUgaXMgbm90IGVtcHR5LCBhZGQgdGhlIHJlcXVpcmVkIHZhbGlkYXRvci5cclxuICAgICAgICAgICAgaWYgKHZhbHVlIHx8ICghaXNaZXJvRW1wdHkgPyB2YWx1ZSA9PT0gMCA6IGZhbHNlKSkge1xyXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodmFsaWRhdG9ycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBjb250cm9sLnNldFZhbGlkYXRvcnModmFsaWRhdG9ycyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIFJlY2FsY3VsYXRpbmcgdGhlIHZhbHVlIGlzIHJlcXVpcmVkIHdoZW4gY2hhbmdpbmcgdGhlIHZhbGlkYXRvcnMsIG90aGVyd2lzZVxyXG4gICAgICAgICAgICAvLyB0aGUgdmFsaWRhdG9yIHdvbid0IHRha2UgZWZmZWN0IHVudGlsIHRoZSB2YWx1ZSBpcyBjaGFuZ2VkIGluIHRoZSBjb250cm9sLlxyXG4gICAgICAgICAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe2VtaXRFdmVudDogZmFsc2V9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0iXX0=
@@ -1,356 +0,0 @@
1
- import { __awaiter } from "tslib";
2
- import { Directive, HostBinding, Injector } from '@angular/core';
3
- import { FormGroup } from '@angular/forms';
4
- import { ActivatedRoute, NavigationEnd, Router } from '@angular/router';
5
- import { TranslateService } from '@ngx-translate/core';
6
- import { ReplaySubject, Subject } from 'rxjs';
7
- import { filter, takeUntil } from 'rxjs/operators';
8
- import { ErrorService } from '../../../core/error.service';
9
- import { ScrollService } from '../../../core/scroll.service';
10
- import { DialogService } from '../../../display/dialog/dialog.service';
11
- import { SplashService } from '../../../display/splash/splash.service';
12
- import { Overlay } from '../../../display/view-overlay/view-overlay.component';
13
- import { PageStatus, PageStatuses } from '../page-statuses';
14
- export class PageInitResult {
15
- constructor() {
16
- this.title = '';
17
- this.subTitle = '';
18
- this.subTitleUrl = '';
19
- }
20
- }
21
- export class PageBaseComponent {
22
- constructor(injector) {
23
- /** Default css classes applied to host element */
24
- this.classList = 'd-flex flex-grow';
25
- /**
26
- * Title for the page displayed in the header
27
- */
28
- this.title = '';
29
- /**
30
- * Sub title for the page displayed in the header
31
- */
32
- this.subTitle = '';
33
- /**
34
- * Sub title url for the page displayed in the header
35
- */
36
- this.subTitleUrl = '';
37
- /**
38
- * Status overlay for the page
39
- */
40
- this.status = new Overlay('pending', 'Loading');
41
- /**
42
- * Form group to be used if needed by the page
43
- */
44
- this.formGroup = new FormGroup({});
45
- /**
46
- * Default invalid form message, override if a more specific message is needed
47
- */
48
- this.defaultInvalidFormMessage = 'PleaseCorrectForm_SC';
49
- /**
50
- * Default unknown save error message, override if a more specific message is needed
51
- */
52
- this.defaultUnknownSaveError = 'PageBaseUnknownSaveError_SC';
53
- /**
54
- * Used to opt out of hiding the splash screen when the page is loaded
55
- */
56
- this.skipHideSplashOnComplete = false;
57
- /**
58
- * Used to unsubscribe from observables
59
- */
60
- this.destroyed = new Subject();
61
- /**
62
- * Used to know when the page has been loaded, this will be completed
63
- * after onAfterViewInit
64
- */
65
- this._afterViewInitComplete = new ReplaySubject();
66
- this.afterViewInitComplete = this._afterViewInitComplete;
67
- /**
68
- * Errors to be shown for the component.
69
- * Automatically populated on promise rejection from save and shared with the UI.
70
- */
71
- this._errors = '';
72
- this.errorService = injector.get(ErrorService);
73
- this.translateService = injector.get(TranslateService);
74
- this.scrollService = injector.get(ScrollService);
75
- this.router = injector.get(Router);
76
- this.activatedRoute = injector.get(ActivatedRoute);
77
- this.dialogService = injector.get(DialogService);
78
- this.splashService = injector.get(SplashService);
79
- }
80
- get errors() {
81
- return this._errors;
82
- }
83
- /**
84
- * Optional lifecycle hook that is called as part of the Angular ngOnInit lifecycle hook.
85
- * Called before onInit is called for the first time. Add setup logic here that does
86
- * not need to be run on every reload.
87
- */
88
- onFirstInit() { }
89
- ngOnInit() {
90
- return __awaiter(this, void 0, void 0, function* () {
91
- try {
92
- this.showStatus(PageStatus.Loading);
93
- this.onFirstInit();
94
- this.initPromise = this.onInit();
95
- yield this.initPromise;
96
- }
97
- catch (error) {
98
- this.splashService.hideSplash();
99
- this.onError(error);
100
- }
101
- ;
102
- });
103
- }
104
- /**
105
- * This method is called just after the Angular Lifecycle event ngOnAfterViewInit.
106
- * It fires after all sub-components have gone through their initialization phase.
107
- * It is in this phase that the view components should already exist, so a derived class should
108
- * load data from the API to populate any view components. The promise that
109
- * is returned must not resolve until all required data has completely loaded
110
- */
111
- onAfterViewInit() {
112
- return __awaiter(this, void 0, void 0, function* () { });
113
- }
114
- ;
115
- ngAfterViewInit() {
116
- return __awaiter(this, void 0, void 0, function* () {
117
- try {
118
- const initResult = yield this.initPromise;
119
- this.parseInitResult(initResult);
120
- yield this.onAfterViewInit();
121
- this._afterViewInitComplete.next();
122
- this._afterViewInitComplete.complete();
123
- yield this.onFormLoadComplete();
124
- if (this.status.status === 'pending') {
125
- this.showStatus(PageStatus.Loaded);
126
- }
127
- if (!this.skipHideSplashOnComplete) {
128
- this.splashService.hideSplash();
129
- }
130
- this.setUpRouterSubscriptions();
131
- }
132
- catch (error) {
133
- this.splashService.hideSplash();
134
- this.onError(error);
135
- }
136
- });
137
- }
138
- /**
139
- * A lifecycle method that executes once all data has been loaded
140
- * through ngAfterViewInit and from local storage if required.
141
- * It is at this point that you can subscribe to changes on the form
142
- * reliably
143
- *
144
- * @protected
145
- * @memberof PageBaseComponent
146
- */
147
- onFormLoadComplete() {
148
- return __awaiter(this, void 0, void 0, function* () { });
149
- }
150
- /**
151
- * A lifecycle hook that is called after every NavigationEnd event.
152
- */
153
- onNavigationEnd() { }
154
- /**
155
- * Reload the component kicking off the ngOnInit and ngAfterViewInit lifecycle hooks.
156
- * Any state that needs to be reset should be done so before calling this method.
157
- */
158
- reload() {
159
- this._afterViewInitComplete = new ReplaySubject();
160
- this.showStatus(PageStatus.Loading);
161
- this.initPromise = this.onInit();
162
- this.ngAfterViewInit();
163
- }
164
- /**
165
- * When overridden in a derived class this method will sync the form state
166
- * into the object that will be persisted to the API. The value should not
167
- * actually be sent to the API yet.
168
- */
169
- applyModelUpdates() {
170
- return __awaiter(this, void 0, void 0, function* () { });
171
- }
172
- ;
173
- /**
174
- * Save the model state to the API and return a promise that
175
- * contains the updated entityID. The promise should be rejected
176
- * if the save fails and errors and the overlay status will be updated
177
- * accordingly
178
- */
179
- saveToApi() {
180
- return __awaiter(this, void 0, void 0, function* () { });
181
- }
182
- ;
183
- /**
184
- * Called after the save has completed successfully.
185
- * It is the responsibility of the derived class to navigate
186
- * to a properties/status page or emit appropriately if within a dialog
187
- * @param entityId
188
- */
189
- onSaveComplete(entityId) { }
190
- ;
191
- /**
192
- * Function called when the user clicks save. We will first touch all controls to show validation messages
193
- * if the form is invalid. If the form is valid we will attempt to save and any errors will be reported
194
- * back to the user
195
- * @param event
196
- */
197
- onSave(event) {
198
- return __awaiter(this, void 0, void 0, function* () {
199
- this.formGroup.markAllAsTouched();
200
- if (this.formGroup.valid) {
201
- this.showStatus(PageStatus.Saving);
202
- try {
203
- yield this.applyModelUpdates();
204
- let entityId = (yield this.saveToApi()) || -1;
205
- this._errors = '';
206
- this.onSaveComplete(entityId);
207
- }
208
- catch (error) {
209
- //clear the "saving" overlay and show the message at the top of the view through the errors property
210
- this.showErrorBanner(error, this.defaultUnknownSaveError);
211
- this.splashService.hideSplash();
212
- }
213
- }
214
- else {
215
- // Only show the banner with the generic message if the parent component hasn't already set one
216
- // by implementing onSave for additional validation
217
- if (this.errors === '') {
218
- this.showErrorBanner(this.defaultInvalidFormMessage);
219
- }
220
- if (this.scrollContainerSelector) {
221
- setTimeout(() => {
222
- this.scrollService.scrollToItem(this.scrollContainerSelector, ".ng-invalid");
223
- });
224
- }
225
- }
226
- });
227
- }
228
- /**
229
- * Function called when the component is destroyed
230
- */
231
- ngOnDestroy() {
232
- this.destroyed.next();
233
- this.destroyed.unsubscribe();
234
- }
235
- /**
236
- * Function that will log an error that is passed in to the console
237
- * @param e
238
- */
239
- onError(error) {
240
- this.errorService.logConsoleError(error);
241
- this.showErrorOverlay(error);
242
- }
243
- /**
244
- * Show an error message in a whole-page overlay. This will prevent any more
245
- * interactions with the page. It can take a string error message or a raw API
246
- * error that needs to be parsed. If the API error isn't something we can handle
247
- * a generic message is shown instead
248
- * @param {(Error | string)} error
249
- */
250
- showErrorOverlay(error) {
251
- this.getErrorMessage(error).subscribe((translatedMessage) => {
252
- this.status.setStatus('error', translatedMessage);
253
- });
254
- }
255
- /**
256
- * Show an error in the banner at the top of the screen. This will not produce a
257
- * whole-page overlay like the function showError will. It can take a string error message
258
- * or raw API error that needs to be parsed. If the API error isn't something we can handle,
259
- * a generic message (customizable via unknownErrorDefault) is shown instead.
260
- * @param error
261
- * @param unknownErrorDefault
262
- */
263
- showErrorBanner(error, unknownErrorDefault) {
264
- this.getErrorMessage(error, unknownErrorDefault).subscribe((translatedMessage) => {
265
- this._errors = translatedMessage;
266
- this.showStatus(PageStatus.Loaded);
267
- });
268
- }
269
- /**
270
- * Parses and translates an API error or error string.
271
- * @param e
272
- * @param unknownErrorDefault
273
- */
274
- getErrorMessage(e, unknownErrorDefault) {
275
- let extractedMessage = this.errorService.parseApiError(e, unknownErrorDefault);
276
- return this.translateService.get(extractedMessage);
277
- }
278
- /**
279
- * Clear the errors to hide the errors banner.
280
- */
281
- hideErrorBanner() {
282
- this._errors = '';
283
- }
284
- /**
285
- * Change the display status to overlay the whole page while loading or saving
286
- * and clear it when the form is ready
287
- * @protected
288
- * @param {PageStatus} status
289
- * @memberof FormBaseComponent
290
- */
291
- showStatus(status) {
292
- let knownStatus = PageStatuses[status];
293
- if (knownStatus) {
294
- this.status.setStatus(knownStatus.status, knownStatus.message, undefined, knownStatus.noDataTemplate, knownStatus.overlayClassList);
295
- }
296
- }
297
- /**
298
- * Allows the component to enter a pending status and execute a function that on completion will return the status
299
- * to hasData. If an error occurs within the callback an error banner can be shown.
300
- * @param callback
301
- * @returns
302
- */
303
- runBlockingAction(callback, pendingMessage) {
304
- return __awaiter(this, void 0, void 0, function* () {
305
- this.hideErrorBanner();
306
- this.status.setStatus('pending', pendingMessage);
307
- return callback().catch(error => {
308
- this.showErrorBanner(error);
309
- // Throw the error for any downstream components that may be listening and need to react
310
- // to any errors happening within this callback
311
- throw (error);
312
- }).finally(() => {
313
- this.showStatus(PageStatus.Loaded);
314
- });
315
- });
316
- }
317
- ;
318
- /**
319
- * Parses the page init result and sets the necessary properties on the page
320
- * @param result
321
- */
322
- parseInitResult(result) {
323
- this.initResult = result;
324
- this.title = result.title;
325
- this.subTitle = result.subTitle;
326
- this.subTitleUrl = result.subTitleUrl;
327
- this.breadcrumbs = result.breadcrumbs;
328
- this.help = result.help;
329
- }
330
- /**
331
- * Sets up the router event subscriptions
332
- */
333
- setUpRouterSubscriptions() {
334
- if (!this.navigationEndSubscription && !this.destroyed.closed) {
335
- // React to navigation events
336
- this.navigationEndSubscription = this.router.events.pipe(takeUntil(this.destroyed), filter(e => e instanceof NavigationEnd)).subscribe(e => {
337
- try {
338
- this.onNavigationEnd();
339
- }
340
- catch (error) {
341
- this.onError(error);
342
- }
343
- });
344
- }
345
- }
346
- }
347
- PageBaseComponent.decorators = [
348
- { type: Directive }
349
- ];
350
- PageBaseComponent.ctorParameters = () => [
351
- { type: Injector }
352
- ];
353
- PageBaseComponent.propDecorators = {
354
- classList: [{ type: HostBinding, args: ['class',] }]
355
- };
356
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1iYXNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9zaGFyZWQvcGFnZS9wYWdlLWJhc2UvcGFnZS1iYXNlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBYyxhQUFhLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUN4RSxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUV2RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDL0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU1RCxNQUFNLE9BQU8sY0FBYztJQUEzQjtRQUNFLFVBQUssR0FBWSxFQUFFLENBQUM7UUFDcEIsYUFBUSxHQUFZLEVBQUUsQ0FBQztRQUN2QixnQkFBVyxHQUFZLEVBQUUsQ0FBQztJQUk1QixDQUFDO0NBQUE7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SSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7SUFDMUIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssd0JBQXdCO1FBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMseUJBQXlCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRTtZQUM3RCw2QkFBNkI7WUFDN0IsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDdEQsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFDekIsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxZQUFZLGFBQWEsQ0FBQyxDQUN4QyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDZCxJQUFJO29CQUNGLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztpQkFDeEI7Z0JBQUMsT0FBTyxLQUFLLEVBQUU7b0JBQ2QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDckI7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQzs7O1lBellGLFNBQVM7OztZQXhCc0MsUUFBUTs7O3dCQTJCckQsV0FBVyxTQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIEhvc3RCaW5kaW5nLCBJbmplY3RvciwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgTmF2aWdhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZmlsdGVyLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IE5hdkl0ZW0gfSBmcm9tICcuLi8uLi8uLi9jb250cm9scy9uYXZpZ2F0aW9uL25hdi1pdGVtJztcclxuaW1wb3J0IHsgRXJyb3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9lcnJvci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2Nyb2xsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2Nyb2xsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZGlzcGxheS9kaWFsb2cvZGlhbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTcGxhc2hTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZGlzcGxheS9zcGxhc2gvc3BsYXNoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIZWxwIH0gZnJvbSAnLi4vLi4vLi4vZGlzcGxheS9oZWxwL2hlbHAtdHlwZXMnO1xyXG5pbXBvcnQgeyBPdmVybGF5IH0gZnJvbSAnLi4vLi4vLi4vZGlzcGxheS92aWV3LW92ZXJsYXkvdmlldy1vdmVybGF5LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFBhZ2VTdGF0dXMsIFBhZ2VTdGF0dXNlcyB9IGZyb20gJy4uL3BhZ2Utc3RhdHVzZXMnO1xyXG5cclxuZXhwb3J0IGNsYXNzIFBhZ2VJbml0UmVzdWx0IHtcclxuICB0aXRsZT86IHN0cmluZyA9ICcnO1xyXG4gIHN1YlRpdGxlPzogc3RyaW5nID0gJyc7XHJcbiAgc3ViVGl0bGVVcmw/OiBzdHJpbmcgPSAnJztcclxuXHJcbiAgYnJlYWRjcnVtYnM/OiBOYXZJdGVtW107XHJcbiAgaGVscD86IEhlbHA7XHJcbn1cclxuXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUGFnZUJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcbiAgLyoqIERlZmF1bHQgY3NzIGNsYXNzZXMgYXBwbGllZCB0byBob3N0IGVsZW1lbnQgKi9cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgcHJvdGVjdGVkIGNsYXNzTGlzdCA9ICdkLWZsZXggZmxleC1ncm93JztcclxuXHJcbiAgLyoqXHJcbiAgICogVGl0bGUgZm9yIHRoZSBwYWdlIGRpc3BsYXllZCBpbiB0aGUgaGVhZGVyXHJcbiAgICovXHJcbiAgcHVibGljIHRpdGxlPzogc3RyaW5nID0gJyc7XHJcblxyXG4gIC8qKlxyXG4gICAqIFN1YiB0aXRsZSBmb3IgdGhlIHBhZ2UgZGlzcGxheWVkIGluIHRoZSBoZWFkZXJcclxuICAgKi9cclxuICBwdWJsaWMgc3ViVGl0bGU/OiBzdHJpbmcgPSAnJztcclxuXHJcbiAgLyoqXHJcbiAgICogU3ViIHRpdGxlIHVybCBmb3IgdGhlIHBhZ2UgZGlzcGxheWVkIGluIHRoZSBoZWFkZXJcclxuICAgKi9cclxuICBwdWJsaWMgc3ViVGl0bGVVcmw/OiBzdHJpbmcgPSAnJztcclxuXHJcbiAgLyoqXHJcbiAgICogU3RhdHVzIG92ZXJsYXkgZm9yIHRoZSBwYWdlXHJcbiAgICovXHJcbiAgcHVibGljIHN0YXR1czogT3ZlcmxheSA9IG5ldyBPdmVybGF5KCdwZW5kaW5nJywgJ0xvYWRpbmcnKTtcclxuXHJcbiAgLyoqXHJcbiAgICogQnJlYWRjcnVtYnMgZGlzcGxheWVkIGluIHRoZSBoZWFkZXJcclxuICAgKi9cclxuICBwdWJsaWMgYnJlYWRjcnVtYnM/OiBOYXZJdGVtW107XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlc3VsdCByZXR1cm5lZCBmcm9tIHRoZSBvbkluaXQgZnVuY3Rpb25cclxuICAgKi9cclxuICBwdWJsaWMgaW5pdFJlc3VsdCE6IFBhZ2VJbml0UmVzdWx0O1xyXG5cclxuICAvKipcclxuICAgKiBIZWxwIGluZm9ybWF0aW9uIGZvciB0aGUgY29tcG9uZW50LCB3aGljaCBjYW4gb25seSBiZSBzZXQgdGhyb3VnaCBvbkluaXRcclxuICAgKi9cclxuICBwdWJsaWMgaGVscDogSGVscCB8IHVuZGVmaW5lZDtcclxuXHJcbiAgLyoqXHJcbiAgICogRm9ybSBncm91cCB0byBiZSB1c2VkIGlmIG5lZWRlZCBieSB0aGUgcGFnZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBmb3JtR3JvdXA6IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG5cclxuICAvKipcclxuICAgKiBEZWZhdWx0IGludmFsaWQgZm9ybSBtZXNzYWdlLCBvdmVycmlkZSBpZiBhIG1vcmUgc3BlY2lmaWMgbWVzc2FnZSBpcyBuZWVkZWRcclxuICAgKi9cclxuICBwdWJsaWMgZGVmYXVsdEludmFsaWRGb3JtTWVzc2FnZTogc3RyaW5nID0gJ1BsZWFzZUNvcnJlY3RGb3JtX1NDJztcclxuXHJcbiAgLyoqXHJcbiAgICogRGVmYXVsdCB1bmtub3duIHNhdmUgZXJyb3IgbWVzc2FnZSwgb3ZlcnJpZGUgaWYgYSBtb3JlIHNwZWNpZmljIG1lc3NhZ2UgaXMgbmVlZGVkXHJcbiAgICovXHJcbiAgcHVibGljIGRlZmF1bHRVbmtub3duU2F2ZUVycm9yOiBzdHJpbmcgPSAnUGFnZUJhc2VVbmtub3duU2F2ZUVycm9yX1NDJztcclxuXHJcbiAgLyoqXHJcbiAgICogVXNlZCB0byBvcHQgb3V0IG9mIGhpZGluZyB0aGUgc3BsYXNoIHNjcmVlbiB3aGVuIHRoZSBwYWdlIGlzIGxvYWRlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBza2lwSGlkZVNwbGFzaE9uQ29tcGxldGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogVXNlZCB0byB1bnN1YnNjcmliZSBmcm9tIG9ic2VydmFibGVzXHJcbiAgICovXHJcbiAgcHVibGljIGRlc3Ryb3llZDogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3Q8YW55PigpO1xyXG5cclxuICAvKipcclxuICAgKiBVc2VkIHRvIGtub3cgd2hlbiB0aGUgcGFnZSBoYXMgYmVlbiBsb2FkZWQsIHRoaXMgd2lsbCBiZSBjb21wbGV0ZWRcclxuICAgKiBhZnRlciBvbkFmdGVyVmlld0luaXRcclxuICAgKi9cclxuICBwcml2YXRlIF9hZnRlclZpZXdJbml0Q29tcGxldGU6IFJlcGxheVN1YmplY3Q8dm9pZD4gPSBuZXcgUmVwbGF5U3ViamVjdCgpO1xyXG4gIHB1YmxpYyBhZnRlclZpZXdJbml0Q29tcGxldGU6IE9ic2VydmFibGU8dm9pZD4gPSB0aGlzLl9hZnRlclZpZXdJbml0Q29tcGxldGU7XHJcblxyXG4gIC8qKlxyXG4gICAqIElmIGRlZmluZWQgdGhlIGZvcm0gd2lsbCBhdXRvbWF0aWNhbGx5IHNjcm9sbCB0byB0aGUgZmlyc3QgaW52YWxpZCBmb3JtIGNvbnRyb2xcclxuICAgKiBpZiBpdCdzIG91dHNpZGUgb2YgdGhlIHZpZXdcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgc2Nyb2xsQ29udGFpbmVyU2VsZWN0b3I6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuXHJcbiAgLyoqXHJcbiAgICogU3Vic2NyaXB0aW9uIHRvIHRoZSByb3V0ZXIgZXZlbnRzIE5hdmlnYXRpb25FbmRcclxuICAgKiBVc2VkIHRvIGtub3cgaWYgYWxyZWFkeSBzdWJzY3JpYmVkIHRvXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBuYXZpZ2F0aW9uRW5kU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xyXG5cclxuICAvKipcclxuICAgKiBDb21tb24gc2VydmljZXMgdXNlZCBieSBwYWdlLWJhc2VcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZXJyb3JTZXJ2aWNlOiBFcnJvclNlcnZpY2U7XHJcbiAgcHJvdGVjdGVkIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2U7XHJcbiAgcHJvdGVjdGVkIHNjcm9sbFNlcnZpY2U6IFNjcm9sbFNlcnZpY2U7XHJcbiAgcHJvdGVjdGVkIHJvdXRlcjogUm91dGVyO1xyXG4gIHByb3RlY3RlZCBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGU7XHJcbiAgcHJvdGVjdGVkIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2U7XHJcbiAgcHJvdGVjdGVkIHNwbGFzaFNlcnZpY2U6IFNwbGFzaFNlcnZpY2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgdGhpcy5lcnJvclNlcnZpY2UgPSBpbmplY3Rvci5nZXQoRXJyb3JTZXJ2aWNlKTtcclxuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZSA9IGluamVjdG9yLmdldChUcmFuc2xhdGVTZXJ2aWNlKTtcclxuICAgIHRoaXMuc2Nyb2xsU2VydmljZSA9IGluamVjdG9yLmdldChTY3JvbGxTZXJ2aWNlKTtcclxuICAgIHRoaXMucm91dGVyID0gaW5qZWN0b3IuZ2V0KFJvdXRlcik7XHJcbiAgICB0aGlzLmFjdGl2YXRlZFJvdXRlID0gaW5qZWN0b3IuZ2V0KEFjdGl2YXRlZFJvdXRlKTtcclxuICAgIHRoaXMuZGlhbG9nU2VydmljZSA9IGluamVjdG9yLmdldChEaWFsb2dTZXJ2aWNlKTtcclxuICAgIHRoaXMuc3BsYXNoU2VydmljZSA9IGluamVjdG9yLmdldChTcGxhc2hTZXJ2aWNlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVycm9ycyB0byBiZSBzaG93biBmb3IgdGhlIGNvbXBvbmVudC5cclxuICAgKiBBdXRvbWF0aWNhbGx5IHBvcHVsYXRlZCBvbiBwcm9taXNlIHJlamVjdGlvbiBmcm9tIHNhdmUgYW5kIHNoYXJlZCB3aXRoIHRoZSBVSS5cclxuICAgKi9cclxuICBwcml2YXRlIF9lcnJvcnM6IHN0cmluZyA9ICcnO1xyXG4gIHB1YmxpYyBnZXQgZXJyb3JzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fZXJyb3JzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT3B0aW9uYWwgbGlmZWN5Y2xlIGhvb2sgdGhhdCBpcyBjYWxsZWQgYXMgcGFydCBvZiB0aGUgQW5ndWxhciBuZ09uSW5pdCBsaWZlY3ljbGUgaG9vay5cclxuICAgKiBDYWxsZWQgYmVmb3JlIG9uSW5pdCBpcyBjYWxsZWQgZm9yIHRoZSBmaXJzdCB0aW1lLiBBZGQgc2V0dXAgbG9naWMgaGVyZSB0aGF0IGRvZXNcclxuICAgKiBub3QgbmVlZCB0byBiZSBydW4gb24gZXZlcnkgcmVsb2FkLlxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBvbkZpcnN0SW5pdCgpOiB2b2lkIHsgfVxyXG5cclxuICAvKipcclxuICAgKiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgaW4gdGhlIGRlcml2ZWQgY2xhc3MgYXMgcGFydCBvZiB0aGUgQW5ndWxhciBuZ09uSW5pdFxyXG4gICAqIGxpZmVjeWNsZSBob29rLiBJdCBtdXN0IHByb3ZpZGUgYSBQYWdlSW5pdFJlc3VsdCBiYWNrIHRvIHRoZSBiYXNlIGNsYXNzIHRvIHByb3Blcmx5XHJcbiAgICogc2V0IHVwIHRoZSBwYWdlLlxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBvbkluaXQoKTogUHJvbWlzZTxQYWdlSW5pdFJlc3VsdD47XHJcbiAgcHJvdGVjdGVkIGluaXRQcm9taXNlITogUHJvbWlzZTxQYWdlSW5pdFJlc3VsdD47XHJcblxyXG4gIHB1YmxpYyBhc3luYyBuZ09uSW5pdCgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuc2hvd1N0YXR1cyhQYWdlU3RhdHVzLkxvYWRpbmcpO1xyXG4gICAgICB0aGlzLm9uRmlyc3RJbml0KCk7XHJcbiAgICAgIHRoaXMuaW5pdFByb21pc2UgPSB0aGlzLm9uSW5pdCgpO1xyXG4gICAgICBhd2FpdCB0aGlzLmluaXRQcm9taXNlO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgdGhpcy5zcGxhc2hTZXJ2aWNlLmhpZGVTcGxhc2goKTtcclxuICAgICAgdGhpcy5vbkVycm9yKGVycm9yKTtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQganVzdCBhZnRlciB0aGUgQW5ndWxhciBMaWZlY3ljbGUgZXZlbnQgbmdPbkFmdGVyVmlld0luaXQuXHJcbiAgICogSXQgZmlyZXMgYWZ0ZXIgYWxsIHN1Yi1jb21wb25lbnRzIGhhdmUgZ29uZSB0aHJvdWdoIHRoZWlyIGluaXRpYWxpemF0aW9uIHBoYXNlLlxyXG4gICAqIEl0IGlzIGluIHRoaXMgcGhhc2UgdGhhdCB0aGUgdmlldyBjb21wb25lbnRzIHNob3VsZCBhbHJlYWR5IGV4aXN0LCBzbyBhIGRlcml2ZWQgY2xhc3Mgc2hvdWxkXHJcbiAgICogbG9hZCBkYXRhIGZyb20gdGhlIEFQSSB0byBwb3B1bGF0ZSBhbnkgdmlldyBjb21wb25lbnRzLiBUaGUgcHJvbWlzZSB0aGF0XHJcbiAgICogaXMgcmV0dXJuZWQgbXVzdCBub3QgcmVzb2x2ZSB1bnRpbCBhbGwgcmVxdWlyZWQgZGF0YSBoYXMgY29tcGxldGVseSBsb2FkZWRcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgYXN5bmMgb25BZnRlclZpZXdJbml0KCk6IFByb21pc2U8dm9pZD4geyB9O1xyXG4gIHB1YmxpYyBhc3luYyBuZ0FmdGVyVmlld0luaXQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBpbml0UmVzdWx0ID0gYXdhaXQgdGhpcy5pbml0UHJvbWlzZTtcclxuICAgICAgdGhpcy5wYXJzZUluaXRSZXN1bHQoaW5pdFJlc3VsdCk7XHJcblxyXG4gICAgICBhd2FpdCB0aGlzLm9uQWZ0ZXJWaWV3SW5pdCgpO1xyXG5cclxuICAgICAgdGhpcy5fYWZ0ZXJWaWV3SW5pdENvbXBsZXRlLm5leHQoKTtcclxuICAgICAgdGhpcy5fYWZ0ZXJWaWV3SW5pdENvbXBsZXRlLmNvbXBsZXRlKCk7XHJcblxyXG4gICAgICBhd2FpdCB0aGlzLm9uRm9ybUxvYWRDb21wbGV0ZSgpO1xyXG5cclxuICAgICAgaWYgKHRoaXMuc3RhdHVzLnN0YXR1cyA9PT0gJ3BlbmRpbmcnKSB7XHJcbiAgICAgICAgdGhpcy5zaG93U3RhdHVzKFBhZ2VTdGF0dXMuTG9hZGVkKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCF0aGlzLnNraXBIaWRlU3BsYXNoT25Db21wbGV0ZSkge1xyXG4gICAgICAgIHRoaXMuc3BsYXNoU2VydmljZS5oaWRlU3BsYXNoKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuc2V0VXBSb3V0ZXJTdWJzY3JpcHRpb25zKCk7XHJcblxyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgdGhpcy5zcGxhc2hTZXJ2aWNlLmhpZGVTcGxhc2goKTtcclxuICAgICAgdGhpcy5vbkVycm9yKGVycm9yKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEEgbGlmZWN5Y2xlIG1ldGhvZCB0aGF0IGV4ZWN1dGVzIG9uY2UgYWxsIGRhdGEgaGFzIGJlZW4gbG9hZGVkXHJcbiAgICogdGhyb3VnaCBuZ0FmdGVyVmlld0luaXQgYW5kIGZyb20gbG9jYWwgc3RvcmFnZSBpZiByZXF1aXJlZC5cclxuICAgKiBJdCBpcyBhdCB0aGlzIHBvaW50IHRoYXQgeW91IGNhbiBzdWJzY3JpYmUgdG8gY2hhbmdlcyBvbiB0aGUgZm9ybVxyXG4gICAqIHJlbGlhYmx5XHJcbiAgICpcclxuICAgKiBAcHJvdGVjdGVkXHJcbiAgICogQG1lbWJlcm9mIFBhZ2VCYXNlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGFzeW5jIG9uRm9ybUxvYWRDb21wbGV0ZSgpOiBQcm9taXNlPGFueT4geyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEEgbGlmZWN5Y2xlIGhvb2sgdGhhdCBpcyBjYWxsZWQgYWZ0ZXIgZXZlcnkgTmF2aWdhdGlvbkVuZCBldmVudC5cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgb25OYXZpZ2F0aW9uRW5kKCk6IHZvaWQgeyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlbG9hZCB0aGUgY29tcG9uZW50IGtpY2tpbmcgb2ZmIHRoZSBuZ09uSW5pdCBhbmQgbmdBZnRlclZpZXdJbml0IGxpZmVjeWNsZSBob29rcy5cclxuICAgKiBBbnkgc3RhdGUgdGhhdCBuZWVkcyB0byBiZSByZXNldCBzaG91bGQgYmUgZG9uZSBzbyBiZWZvcmUgY2FsbGluZyB0aGlzIG1ldGhvZC5cclxuICAgKi9cclxuICBwdWJsaWMgcmVsb2FkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fYWZ0ZXJWaWV3SW5pdENvbXBsZXRlID0gbmV3IFJlcGxheVN1YmplY3QoKTtcclxuXHJcbiAgICB0aGlzLnNob3dTdGF0dXMoUGFnZVN0YXR1cy5Mb2FkaW5nKTtcclxuICAgIHRoaXMuaW5pdFByb21pc2UgPSB0aGlzLm9uSW5pdCgpO1xyXG4gICAgdGhpcy5uZ0FmdGVyVmlld0luaXQoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFdoZW4gb3ZlcnJpZGRlbiBpbiBhIGRlcml2ZWQgY2xhc3MgdGhpcyBtZXRob2Qgd2lsbCBzeW5jIHRoZSBmb3JtIHN0YXRlXHJcbiAgICogaW50byB0aGUgb2JqZWN0IHRoYXQgd2lsbCBiZSBwZXJzaXN0ZWQgdG8gdGhlIEFQSS4gVGhlIHZhbHVlIHNob3VsZCBub3RcclxuICAgKiBhY3R1YWxseSBiZSBzZW50IHRvIHRoZSBBUEkgeWV0LlxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBhc3luYyBhcHBseU1vZGVsVXBkYXRlcygpOiBQcm9taXNlPHZvaWQ+IHsgfTtcclxuXHJcbiAgLyoqXHJcbiAgICogU2F2ZSB0aGUgbW9kZWwgc3RhdGUgdG8gdGhlIEFQSSBhbmQgcmV0dXJuIGEgcHJvbWlzZSB0aGF0XHJcbiAgICogY29udGFpbnMgdGhlIHVwZGF0ZWQgZW50aXR5SUQuIFRoZSBwcm9taXNlIHNob3VsZCBiZSByZWplY3RlZFxyXG4gICAqIGlmIHRoZSBzYXZlIGZhaWxzIGFuZCBlcnJvcnMgYW5kIHRoZSBvdmVybGF5IHN0YXR1cyB3aWxsIGJlIHVwZGF0ZWRcclxuICAgKiBhY2NvcmRpbmdseVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBhc3luYyBzYXZlVG9BcGkoKTogUHJvbWlzZTxudW1iZXIgfCB2b2lkPiB7IH07XHJcblxyXG4gIC8qKlxyXG4gICAqIENhbGxlZCBhZnRlciB0aGUgc2F2ZSBoYXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS5cclxuICAgKiBJdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGRlcml2ZWQgY2xhc3MgdG8gbmF2aWdhdGVcclxuICAgKiB0byBhIHByb3BlcnRpZXMvc3RhdHVzIHBhZ2Ugb3IgZW1pdCBhcHByb3ByaWF0ZWx5IGlmIHdpdGhpbiBhIGRpYWxvZ1xyXG4gICAqIEBwYXJhbSBlbnRpdHlJZCBcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgb25TYXZlQ29tcGxldGUoZW50aXR5SWQ/OiBudW1iZXIpOiB2b2lkIHsgfTtcclxuXHJcbiAgLyoqXHJcbiAgICogRnVuY3Rpb24gY2FsbGVkIHdoZW4gdGhlIHVzZXIgY2xpY2tzIHNhdmUuICBXZSB3aWxsIGZpcnN0IHRvdWNoIGFsbCBjb250cm9scyB0byBzaG93IHZhbGlkYXRpb24gbWVzc2FnZXNcclxuICAgKiBpZiB0aGUgZm9ybSBpcyBpbnZhbGlkLiAgSWYgdGhlIGZvcm0gaXMgdmFsaWQgd2Ugd2lsbCBhdHRlbXB0IHRvIHNhdmUgYW5kIGFueSBlcnJvcnMgd2lsbCBiZSByZXBvcnRlZFxyXG4gICAqIGJhY2sgdG8gdGhlIHVzZXJcclxuICAgKiBAcGFyYW0gZXZlbnQgXHJcbiAgICovXHJcbiAgcHVibGljIGFzeW5jIG9uU2F2ZShldmVudDogRXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuZm9ybUdyb3VwLm1hcmtBbGxBc1RvdWNoZWQoKTtcclxuXHJcbiAgICBpZiAodGhpcy5mb3JtR3JvdXAudmFsaWQpIHtcclxuICAgICAgdGhpcy5zaG93U3RhdHVzKFBhZ2VTdGF0dXMuU2F2aW5nKTtcclxuXHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5hcHBseU1vZGVsVXBkYXRlcygpO1xyXG4gICAgICAgIGxldCBlbnRpdHlJZCA9IGF3YWl0IHRoaXMuc2F2ZVRvQXBpKCkgfHwgLTE7XHJcblxyXG4gICAgICAgIHRoaXMuX2Vycm9ycyA9ICcnO1xyXG5cclxuICAgICAgICB0aGlzLm9uU2F2ZUNvbXBsZXRlKGVudGl0eUlkKTtcclxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAvL2NsZWFyIHRoZSBcInNhdmluZ1wiIG92ZXJsYXkgYW5kIHNob3cgdGhlIG1lc3NhZ2UgYXQgdGhlIHRvcCBvZiB0aGUgdmlldyB0aHJvdWdoIHRoZSBlcnJvcnMgcHJvcGVydHlcclxuICAgICAgICB0aGlzLnNob3dFcnJvckJhbm5lcihlcnJvciwgdGhpcy5kZWZhdWx0VW5rbm93blNhdmVFcnJvcik7XHJcbiAgICAgICAgdGhpcy5zcGxhc2hTZXJ2aWNlLmhpZGVTcGxhc2goKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gT25seSBzaG93IHRoZSBiYW5uZXIgd2l0aCB0aGUgZ2VuZXJpYyBtZXNzYWdlIGlmIHRoZSBwYXJlbnQgY29tcG9uZW50IGhhc24ndCBhbHJlYWR5IHNldCBvbmVcclxuICAgICAgLy8gYnkgaW1wbGVtZW50aW5nIG9uU2F2ZSBmb3IgYWRkaXRpb25hbCB2YWxpZGF0aW9uXHJcbiAgICAgIGlmICh0aGlzLmVycm9ycyA9PT0gJycpIHtcclxuICAgICAgICB0aGlzLnNob3dFcnJvckJhbm5lcih0aGlzLmRlZmF1bHRJbnZhbGlkRm9ybU1lc3NhZ2UpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5zY3JvbGxDb250YWluZXJTZWxlY3Rvcikge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zY3JvbGxTZXJ2aWNlLnNjcm9sbFRvSXRlbSh0aGlzLnNjcm9sbENvbnRhaW5lclNlbGVjdG9yISwgXCIubmctaW52YWxpZFwiKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRnVuY3Rpb24gY2FsbGVkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBkZXN0cm95ZWRcclxuICAgKi9cclxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3llZC5uZXh0KCk7XHJcbiAgICB0aGlzLmRlc3Ryb3llZC51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRnVuY3Rpb24gdGhhdCB3aWxsIGxvZyBhbiBlcnJvciB0aGF0IGlzIHBhc3NlZCBpbiB0byB0aGUgY29uc29sZVxyXG4gICAqIEBwYXJhbSBlIFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBvbkVycm9yKGVycm9yOiBFcnJvcik6IHZvaWQge1xyXG4gICAgdGhpcy5lcnJvclNlcnZpY2UubG9nQ29uc29sZUVycm9yKGVycm9yKTtcclxuICAgIHRoaXMuc2hvd0Vycm9yT3ZlcmxheShlcnJvcik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTaG93IGFuIGVycm9yIG1lc3NhZ2UgaW4gYSB3aG9sZS1wYWdlIG92ZXJsYXkuIFRoaXMgd2lsbCBwcmV2ZW50IGFueSBtb3JlXHJcbiAgICogaW50ZXJhY3Rpb25zIHdpdGggdGhlIHBhZ2UuIEl0IGNhbiB0YWtlIGEgc3RyaW5nIGVycm9yIG1lc3NhZ2Ugb3IgYSByYXcgQVBJXHJcbiAgICogZXJyb3IgdGhhdCBuZWVkcyB0byBiZSBwYXJzZWQuIElmIHRoZSBBUEkgZXJyb3IgaXNuJ3Qgc29tZXRoaW5nIHdlIGNhbiBoYW5kbGVcclxuICAgKiBhIGdlbmVyaWMgbWVzc2FnZSBpcyBzaG93biBpbnN0ZWFkXHJcbiAgICogQHBhcmFtIHsoRXJyb3IgfCBzdHJpbmcpfSBlcnJvclxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBzaG93RXJyb3JPdmVybGF5KGVycm9yOiBFcnJvciB8IHN0cmluZykge1xyXG4gICAgdGhpcy5nZXRFcnJvck1lc3NhZ2UoZXJyb3IpLnN1YnNjcmliZSgodHJhbnNsYXRlZE1lc3NhZ2U6IHN0cmluZykgPT4ge1xyXG4gICAgICB0aGlzLnN0YXR1cy5zZXRTdGF0dXMoJ2Vycm9yJywgdHJhbnNsYXRlZE1lc3NhZ2UpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTaG93IGFuIGVycm9yIGluIHRoZSBiYW5uZXIgYXQgdGhlIHRvcCBvZiB0aGUgc2NyZWVuLiAgVGhpcyB3aWxsIG5vdCBwcm9kdWNlIGFcclxuICAgKiB3aG9sZS1wYWdlIG92ZXJsYXkgbGlrZSB0aGUgZnVuY3Rpb24gc2hvd0Vycm9yIHdpbGwuICBJdCBjYW4gdGFrZSBhIHN0cmluZyBlcnJvciBtZXNzYWdlXHJcbiAgICogb3IgcmF3IEFQSSBlcnJvciB0aGF0IG5lZWRzIHRvIGJlIHBhcnNlZC4gIElmIHRoZSBBUEkgZXJyb3IgaXNuJ3Qgc29tZXRoaW5nIHdlIGNhbiBoYW5kbGUsXHJcbiAgICogYSBnZW5lcmljIG1lc3NhZ2UgKGN1c3RvbWl6YWJsZSB2aWEgdW5rbm93bkVycm9yRGVmYXVsdCkgaXMgc2hvd24gaW5zdGVhZC5cclxuICAgKiBAcGFyYW0gZXJyb3IgXHJcbiAgICogQHBhcmFtIHVua25vd25FcnJvckRlZmF1bHQgXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHNob3dFcnJvckJhbm5lcihlcnJvcjogRXJyb3IgfCBzdHJpbmcsIHVua25vd25FcnJvckRlZmF1bHQ/OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuZ2V0RXJyb3JNZXNzYWdlKGVycm9yLCB1bmtub3duRXJyb3JEZWZhdWx0KS5zdWJzY3JpYmUoKHRyYW5zbGF0ZWRNZXNzYWdlOiBzdHJpbmcpID0+IHtcclxuICAgICAgdGhpcy5fZXJyb3JzID0gdHJhbnNsYXRlZE1lc3NhZ2U7XHJcbiAgICAgIHRoaXMuc2hvd1N0YXR1cyhQYWdlU3RhdHVzLkxvYWRlZCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBhcnNlcyBhbmQgdHJhbnNsYXRlcyBhbiBBUEkgZXJyb3Igb3IgZXJyb3Igc3RyaW5nLlxyXG4gICAqIEBwYXJhbSBlIFxyXG4gICAqIEBwYXJhbSB1bmtub3duRXJyb3JEZWZhdWx0IFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBnZXRFcnJvck1lc3NhZ2UoZTogRXJyb3IgfCBzdHJpbmcsIHVua25vd25FcnJvckRlZmF1bHQ/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xyXG4gICAgbGV0IGV4dHJhY3RlZE1lc3NhZ2UgPSB0aGlzLmVycm9yU2VydmljZS5wYXJzZUFwaUVycm9yKGUsIHVua25vd25FcnJvckRlZmF1bHQpO1xyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXQoZXh0cmFjdGVkTWVzc2FnZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbGVhciB0aGUgZXJyb3JzIHRvIGhpZGUgdGhlIGVycm9ycyBiYW5uZXIuXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGhpZGVFcnJvckJhbm5lcigpOiB2b2lkIHtcclxuICAgIHRoaXMuX2Vycm9ycyA9ICcnO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hhbmdlIHRoZSBkaXNwbGF5IHN0YXR1cyB0byBvdmVybGF5IHRoZSB3aG9sZSBwYWdlIHdoaWxlIGxvYWRpbmcgb3Igc2F2aW5nXHJcbiAgICogYW5kIGNsZWFyIGl0IHdoZW4gdGhlIGZvcm0gaXMgcmVhZHlcclxuICAgKiBAcHJvdGVjdGVkXHJcbiAgICogQHBhcmFtIHtQYWdlU3RhdHVzfSBzdGF0dXNcclxuICAgKiBAbWVtYmVyb2YgRm9ybUJhc2VDb21wb25lbnRcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgc2hvd1N0YXR1cyhzdGF0dXM6IFBhZ2VTdGF0dXMpIHtcclxuICAgIGxldCBrbm93blN0YXR1cyA9IFBhZ2VTdGF0dXNlc1tzdGF0dXNdO1xyXG4gICAgaWYgKGtub3duU3RhdHVzKSB7XHJcbiAgICAgIHRoaXMuc3RhdHVzLnNldFN0YXR1cyhrbm93blN0YXR1cy5zdGF0dXMsIGtub3duU3RhdHVzLm1lc3NhZ2UsIHVuZGVmaW5lZCwga25vd25TdGF0dXMubm9EYXRhVGVtcGxhdGUsIGtub3duU3RhdHVzLm92ZXJsYXlDbGFzc0xpc3QpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWxsb3dzIHRoZSBjb21wb25lbnQgdG8gZW50ZXIgYSBwZW5kaW5nIHN0YXR1cyBhbmQgZXhlY3V0ZSBhIGZ1bmN0aW9uIHRoYXQgb24gY29tcGxldGlvbiB3aWxsIHJldHVybiB0aGUgc3RhdHVzXHJcbiAgICogdG8gaGFzRGF0YS4gSWYgYW4gZXJyb3Igb2NjdXJzIHdpdGhpbiB0aGUgY2FsbGJhY2sgYW4gZXJyb3IgYmFubmVyIGNhbiBiZSBzaG93bi5cclxuICAgKiBAcGFyYW0gY2FsbGJhY2tcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBhc3luYyBydW5CbG9ja2luZ0FjdGlvbihjYWxsYmFjazogKCkgPT4gUHJvbWlzZTxhbnk+LCBwZW5kaW5nTWVzc2FnZT86IHN0cmluZyk6IFByb21pc2U8YW55PiB7XHJcbiAgICB0aGlzLmhpZGVFcnJvckJhbm5lcigpO1xyXG4gICAgdGhpcy5zdGF0dXMuc2V0U3RhdHVzKCdwZW5kaW5nJywgcGVuZGluZ01lc3NhZ2UpO1xyXG5cclxuICAgIHJldHVybiBjYWxsYmFjaygpLmNhdGNoKGVycm9yID0+IHtcclxuICAgICAgdGhpcy5zaG93RXJyb3JCYW5uZXIoZXJyb3IpO1xyXG4gICAgICAvLyBUaHJvdyB0aGUgZXJyb3IgZm9yIGFueSBkb3duc3RyZWFtIGNvbXBvbmVudHMgdGhhdCBtYXkgYmUgbGlzdGVuaW5nIGFuZCBuZWVkIHRvIHJlYWN0XHJcbiAgICAgIC8vIHRvIGFueSBlcnJvcnMgaGFwcGVuaW5nIHdpdGhpbiB0aGlzIGNhbGxiYWNrXHJcbiAgICAgIHRocm93IChlcnJvcik7XHJcbiAgICB9KS5maW5hbGx5KCgpID0+IHtcclxuICAgICAgdGhpcy5zaG93U3RhdHVzKFBhZ2VTdGF0dXMuTG9hZGVkKTtcclxuICAgIH0pO1xyXG4gIH07XHJcblxyXG4gIC8qKlxyXG4gICAqIFBhcnNlcyB0aGUgcGFnZSBpbml0IHJlc3VsdCBhbmQgc2V0cyB0aGUgbmVjZXNzYXJ5IHByb3BlcnRpZXMgb24gdGhlIHBhZ2VcclxuICAgKiBAcGFyYW0gcmVzdWx0IFxyXG4gICAqL1xyXG4gIHByaXZhdGUgcGFyc2VJbml0UmVzdWx0KHJlc3VsdDogUGFnZUluaXRSZXN1bHQpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5pdFJlc3VsdCA9IHJlc3VsdDtcclxuICAgIHRoaXMudGl0bGUgPSByZXN1bHQudGl0bGU7XHJcbiAgICB0aGlzLnN1YlRpdGxlID0gcmVzdWx0LnN1YlRpdGxlO1xyXG4gICAgdGhpcy5zdWJUaXRsZVVybCA9IHJlc3VsdC5zdWJUaXRsZVVybDtcclxuICAgIHRoaXMuYnJlYWRjcnVtYnMgPSByZXN1bHQuYnJlYWRjcnVtYnM7XHJcbiAgICB0aGlzLmhlbHAgPSByZXN1bHQuaGVscDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgdXAgdGhlIHJvdXRlciBldmVudCBzdWJzY3JpcHRpb25zXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXRVcFJvdXRlclN1YnNjcmlwdGlvbnMoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMubmF2aWdhdGlvbkVuZFN1YnNjcmlwdGlvbiAmJiAhdGhpcy5kZXN0cm95ZWQuY2xvc2VkKSB7XHJcbiAgICAgIC8vIFJlYWN0IHRvIG5hdmlnYXRpb24gZXZlbnRzXHJcbiAgICAgIHRoaXMubmF2aWdhdGlvbkVuZFN1YnNjcmlwdGlvbiA9IHRoaXMucm91dGVyLmV2ZW50cy5waXBlKFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCksXHJcbiAgICAgICAgZmlsdGVyKGUgPT4gZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpLFxyXG4gICAgICApLnN1YnNjcmliZShlID0+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgdGhpcy5vbk5hdmlnYXRpb25FbmQoKTtcclxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgdGhpcy5vbkVycm9yKGVycm9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,19 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- export class PageTitleComponent {
3
- }
4
- PageTitleComponent.decorators = [
5
- { type: Component, args: [{
6
- selector: 'app-page-title',
7
- template: "<i *ngIf=\"titleIcon\"\r\n class=\"flex-shrink mr-1 my-1 ec-icon ec-icon-md {{titleIcon}}\"></i>\r\n<div class=\"text-truncate\">\r\n <h1 *ngIf=\"title\"\r\n class=\"text-title-1 mb-0 py-1 text-truncate\"\r\n title=\"{{title}}\">{{title}}</h1>\r\n <p *ngIf=\"subTitle && !subTitleUrl\"\r\n class=\"text-caption-1 mb-0 mt-n1 text-truncate\">{{subTitle}}</p>\r\n <a *ngIf=\"subTitle && subTitleUrl\"\r\n id=\"subTitle_link\"\r\n class=\"d-block text-truncate mb-0 mt-n1 font-size-small\"\r\n routerLink=\"{{subTitleUrl}}\"\r\n target=\"_self\">\r\n {{subTitle}}\r\n </a>\r\n</div>",
8
- host: {
9
- class: 'd-flex'
10
- }
11
- },] }
12
- ];
13
- PageTitleComponent.propDecorators = {
14
- title: [{ type: Input }],
15
- titleIcon: [{ type: Input }],
16
- subTitle: [{ type: Input }],
17
- subTitleUrl: [{ type: Input }]
18
- };
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS10aXRsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL3BhZ2UvcGFnZS10aXRsZS9wYWdlLXRpdGxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVNqRCxNQUFNLE9BQU8sa0JBQWtCOzs7WUFQOUIsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLGtvQkFBMEM7Z0JBQzFDLElBQUksRUFBRTtvQkFDSixLQUFLLEVBQUUsUUFBUTtpQkFDaEI7YUFDRjs7O29CQUVFLEtBQUs7d0JBQ0wsS0FBSzt1QkFDTCxLQUFLOzBCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1wYWdlLXRpdGxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcGFnZS10aXRsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgaG9zdDoge1xyXG4gICAgY2xhc3M6ICdkLWZsZXgnXHJcbiAgfVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGFnZVRpdGxlQ29tcG9uZW50IHtcclxuICBASW5wdXQoKSBwdWJsaWMgdGl0bGU/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIHRpdGxlSWNvbj86IHN0cmluZztcclxuICBASW5wdXQoKSBwdWJsaWMgc3ViVGl0bGU/OiBzdHJpbmc7IFxyXG4gIEBJbnB1dCgpIHB1YmxpYyBzdWJUaXRsZVVybD86IHN0cmluZzsgXHJcbn1cclxuIl19
@@ -1,94 +0,0 @@
1
- import { Component, EventEmitter, Input, Output, TemplateRef } from '@angular/core';
2
- import { Overlay } from '../../../display/view-overlay/view-overlay.component';
3
- export class PageViewComponent {
4
- constructor() {
5
- /**
6
- * Set to true when page-view is inside a dialog to adjust styles and hide breadcrumbs.
7
- */
8
- this.isDialog = false;
9
- /**
10
- * Set to true to enable read only mode. Only a single secondary action will be available
11
- */
12
- this.readonly = false;
13
- /**
14
- * Controls Overlay that masks the page view content. Only the header is not masked when the overlay is visible. Default is pending Overlay with no message
15
- */
16
- this.status = new Overlay('pending');
17
- /**
18
- * Set to false to hide the entire header, including breadcrumbs and error banner. Default is true.
19
- */
20
- this.showHeader = true;
21
- /**
22
- * Label for the actions dropdown in the header. Default is 'Actions'
23
- */
24
- this.moreActionsLabel = 'Actions';
25
- /**
26
- * Label for the secondary button in the header. Default is 'Cancel'
27
- */
28
- this.secondaryActionLabel = 'Cancel';
29
- this.hideSecondaryAction = false;
30
- /**
31
- * Label for the primary button in the header. Default is 'Save'
32
- */
33
- this.primaryActionLabel = 'Save';
34
- this.hidePrimaryAction = false;
35
- /**
36
- * Pins the footer to the bottom of the view and overlays any overflowing content
37
- */
38
- this.stickyFooter = true;
39
- /**
40
- * Prevents content from overflowing the view. Content must manage overflow instead.
41
- */
42
- this.fitContent = false;
43
- this.onPrimaryAction = new EventEmitter();
44
- this.onSecondaryAction = new EventEmitter();
45
- }
46
- primaryAction(event) {
47
- if (this.onPrimaryAction) {
48
- this.onPrimaryAction.emit(event);
49
- }
50
- }
51
- secondaryAction(event) {
52
- if (this.onSecondaryAction) {
53
- this.onSecondaryAction.emit(event);
54
- }
55
- }
56
- }
57
- PageViewComponent.decorators = [
58
- { type: Component, args: [{
59
- selector: 'ec-page-view',
60
- template: "<div ecOverlay\r\n [status]=\"status?.status\"\r\n [message]=\"status?.message\"\r\n [displayAsMask]=\"true\"\r\n class=\"bg-body flex-grow d-flex\">\r\n <div id=\"PageViewScrollContainer\" \r\n class=\"d-flex flex-column flex-grow scroll-y\" \r\n [class.is-dialog]=\"isDialog\"\r\n [class.fit-content]=\"fitContent\"\r\n [class.sticky-footer]=\"stickyFooter && !!footerTemplate\"\r\n [class.overlay-visible]=\"status?.status !== 'hasData'\"\r\n [class.footer-visible]=\"!!footerTemplate\">\r\n <section>\r\n <ng-content></ng-content> \r\n </section>\r\n \r\n <footer *ngIf=\"footerTemplate\">\r\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\r\n </footer>\r\n\r\n <header *ngIf=\"showHeader\">\r\n \r\n <ol id=\"breadcrumbs\"\r\n *ngIf=\"breadcrumbs?.length && !isDialog\">\r\n <li *ngFor=\"let crumb of breadcrumbs; last as isLast\">\r\n <a *ngIf=\"crumb.url; else label\"\r\n [routerLink]=\"crumb.url\">\r\n <ng-container *ngTemplateOutlet=\"label\"></ng-container>\r\n </a>\r\n <ng-template #label>{{crumb.label}}</ng-template>\r\n </li>\r\n </ol>\r\n \r\n <div *ngIf=\"!customHeaderTemplate; else customHeaderOutlet\" class=\"titlebar\">\r\n <app-page-title *ngIf=\"!customTitleTemplate; else customTitle\" \r\n [title]=\"title\"\r\n [subTitle]=\"subTitle\"\r\n [subTitleUrl]=\"subTitleUrl\"\r\n [titleIcon]=\"titleIcon\"\r\n class=\"title text-truncate\">\r\n </app-page-title>\r\n \r\n <ng-template #customTitle>\r\n <div class=\"title\">\r\n <ng-container *ngTemplateOutlet=\"customTitleTemplate\"></ng-container>\r\n </div>\r\n </ng-template>\r\n \r\n <div class=\"actions\">\r\n <ec-button id=\"primaryAction\"\r\n class=\"ml-2\"\r\n *ngIf=\"!hidePrimaryAction && onPrimaryAction.observers?.length && !readonly\"\r\n [disabled]=\"status?.status === 'pending'\"\r\n type=\"primary\"\r\n [label]=\"primaryActionLabel\"\r\n (clicked)=\"primaryAction($event)\">\r\n </ec-button>\r\n <ec-button id=\"secondaryAction\"\r\n class=\"ml-2\"\r\n *ngIf=\"!hideSecondaryAction && onSecondaryAction.observers?.length\"\r\n type=\"secondary\"\r\n [label]=\"readonly ? 'Close' : secondaryActionLabel\"\r\n (clicked)=\"secondaryAction($event)\">\r\n </ec-button>\r\n <ec-dropdown id=\"moreActions\"\r\n *ngIf=\"moreActions?.length && !readonly\"\r\n [disabled]=\"status?.status === 'pending'\"\r\n class=\"ml-2\"\r\n buttonType=\"secondary\"\r\n [label]=\"moreActionsLabel\"\r\n [items]=\"moreActions\">\r\n </ec-dropdown>\r\n <ng-container *ngTemplateOutlet=\"customActionsTemplate\"></ng-container>\r\n </div>\r\n </div>\r\n \r\n <ng-template #customHeaderOutlet> \r\n <div class=\"page-header\">\r\n <ng-container *ngTemplateOutlet=\"customHeaderTemplate\"></ng-container>\r\n </div>\r\n </ng-template>\r\n \r\n <ec-banner *ngIf=\"errors\"\r\n id=\"pageViewErrors\"\r\n [class.border-bottom-0]=\"!isDialog\">\r\n <div [innerHtml]=\"errors\"></div>\r\n </ec-banner>\r\n </header>\r\n </div>\r\n</div>\r\n\r\n",
61
- host: {
62
- class: "flex-grow"
63
- },
64
- styles: [":host{display:flex;flex:1 1;min-height:0}header{background-color:var(--ec-background-color-body);flex:none;order:1;padding:1rem 1.5rem .5rem;position:sticky;top:0;z-index:1}ol{-ms-grid-column:1;-ms-grid-column-span:2;-ms-grid-row:1;-ms-grid-row-span:1;font-size:var(--ec-font-size-label);grid-column:1/3;grid-row:1/2;line-height:1rem;list-style:none;margin:0 0 .25rem;padding:0}ol li{display:inline}ol li:not(:last-child):after{color:var(--ec-color-secondary-dark);content:\" / \";display:inline}.titlebar{-ms-grid-columns:auto -webkit-max-content;-ms-grid-columns:auto max-content;-ms-grid-rows:-webkit-max-content -webkit-max-content;-ms-grid-rows:max-content max-content;display:-ms-grid;display:grid;gap:0 1rem;grid-template-columns:auto -webkit-max-content;grid-template-columns:auto max-content;grid-template-rows:-webkit-max-content -webkit-max-content;grid-template-rows:max-content max-content}.title{-ms-grid-column:1;-ms-grid-column-span:1;-ms-grid-row:2;-ms-grid-row-align:center;-ms-grid-row-span:1;align-self:center;grid-column:1/2;grid-row:2/3}.actions{-ms-grid-column:2;-ms-grid-column-span:1;-ms-grid-row:2;-ms-grid-row-span:1;direction:rtl;grid-column:2/3;grid-row:2/3}ec-banner{margin-top:1rem}section{flex:1 0 auto;min-height:0;order:2;padding:var(--ec-page-view-padding-section,.5rem 1.5rem 2rem)}footer{align-items:center;background-color:var(--ec-background-color-body);display:flex;flex:none;height:4.5rem;order:3;padding:0 1.5rem}.is-dialog header{padding:0}.is-dialog .titlebar{background-color:var(--ec-background-color);border-bottom:1px solid var(--ec-border-color);padding:1rem}.is-dialog ec-banner{margin:0}.is-dialog section{padding:var(--ec-page-view-padding-section,1rem 1rem 1.5rem)}.sticky-footer section{padding-bottom:4.5rem}.sticky-footer footer{bottom:0;position:sticky}.fit-content section{display:flex;flex:1 1}.footer-visible section{padding-bottom:0}.overlay-visible header{z-index:var(--ec-z-index-overlay)1}.overlay-visible ec-banner{display:none}"]
65
- },] }
66
- ];
67
- PageViewComponent.ctorParameters = () => [];
68
- PageViewComponent.propDecorators = {
69
- isDialog: [{ type: Input }],
70
- readonly: [{ type: Input }],
71
- status: [{ type: Input }],
72
- showHeader: [{ type: Input }],
73
- errors: [{ type: Input }],
74
- breadcrumbs: [{ type: Input }],
75
- title: [{ type: Input }],
76
- titleIcon: [{ type: Input }],
77
- subTitle: [{ type: Input }],
78
- subTitleUrl: [{ type: Input }],
79
- moreActionsLabel: [{ type: Input }],
80
- moreActions: [{ type: Input }],
81
- secondaryActionLabel: [{ type: Input }],
82
- hideSecondaryAction: [{ type: Input }],
83
- primaryActionLabel: [{ type: Input }],
84
- hidePrimaryAction: [{ type: Input }],
85
- customTitleTemplate: [{ type: Input }],
86
- customActionsTemplate: [{ type: Input }],
87
- customHeaderTemplate: [{ type: Input }],
88
- footerTemplate: [{ type: Input }],
89
- stickyFooter: [{ type: Input }],
90
- fitContent: [{ type: Input }],
91
- onPrimaryAction: [{ type: Output }],
92
- onSecondaryAction: [{ type: Output }]
93
- };
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9zaGFyZWQvcGFnZS9wYWdlLXZpZXcvcGFnZS12aWV3LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBZSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdqRyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFVL0UsTUFBTSxPQUFPLGlCQUFpQjtJQTZGNUI7UUE1RkE7O1dBRUc7UUFDYSxhQUFRLEdBQVksS0FBSyxDQUFDO1FBRTFDOztXQUVHO1FBQ2EsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUUxQzs7V0FFRztRQUNhLFdBQU0sR0FBYSxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUUxRDs7V0FFRztRQUNhLGVBQVUsR0FBWSxJQUFJLENBQUM7UUFvQjNDOztXQUVHO1FBQ2EscUJBQWdCLEdBQVksU0FBUyxDQUFDO1FBTXREOztXQUVHO1FBQ2EseUJBQW9CLEdBQVksUUFBUSxDQUFDO1FBQ3pDLHdCQUFtQixHQUFHLEtBQUssQ0FBQztRQUU1Qzs7V0FFRztRQUNhLHVCQUFrQixHQUFZLE1BQU0sQ0FBQztRQUNyQyxzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFzQjFDOztXQUVHO1FBQ2EsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFFcEM7O1dBRUc7UUFDYSxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBRWxCLG9CQUFlLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDeEQsc0JBQWlCLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFFM0QsQ0FBQztJQUVWLGFBQWEsQ0FBQyxLQUFVO1FBQzdCLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN4QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNsQztJQUNILENBQUM7SUFFTSxlQUFlLENBQUMsS0FBVTtRQUMvQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMxQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3BDO0lBQ0gsQ0FBQzs7O1lBakhGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsY0FBYztnQkFDeEIsMDNJQUF5QztnQkFFekMsSUFBSSxFQUFFO29CQUNKLEtBQUssRUFBRSxXQUFXO2lCQUNuQjs7YUFDRjs7Ozt1QkFLRSxLQUFLO3VCQUtMLEtBQUs7cUJBS0wsS0FBSzt5QkFLTCxLQUFLO3FCQUtMLEtBQUs7MEJBS0wsS0FBSztvQkFLTCxLQUFLO3dCQUNMLEtBQUs7dUJBQ0wsS0FBSzswQkFDTCxLQUFLOytCQUtMLEtBQUs7MEJBSUwsS0FBSzttQ0FLTCxLQUFLO2tDQUNMLEtBQUs7aUNBS0wsS0FBSztnQ0FDTCxLQUFLO2tDQUtMLEtBQUs7b0NBS0wsS0FBSzttQ0FLTCxLQUFLOzZCQUtMLEtBQUs7MkJBS0wsS0FBSzt5QkFLTCxLQUFLOzhCQUVMLE1BQU07Z0NBQ04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5wdXQsIE91dHB1dCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICcuLi8uLi8uLi9jb250cm9scy9tZW51L21lbnUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTmF2SXRlbSB9IGZyb20gJy4uLy4uLy4uL2NvbnRyb2xzL25hdmlnYXRpb24vbmF2LWl0ZW0nO1xyXG5pbXBvcnQgeyBPdmVybGF5IH0gZnJvbSAnLi4vLi4vLi4vZGlzcGxheS92aWV3LW92ZXJsYXkvdmlldy1vdmVybGF5LmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VjLXBhZ2UtdmlldycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3BhZ2Utdmlldy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcGFnZS12aWV3LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgaG9zdDoge1xyXG4gICAgY2xhc3M6IFwiZmxleC1ncm93XCJcclxuICB9XHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQYWdlVmlld0NvbXBvbmVudCB7XHJcbiAgLyoqXHJcbiAgICogU2V0IHRvIHRydWUgd2hlbiBwYWdlLXZpZXcgaXMgaW5zaWRlIGEgZGlhbG9nIHRvIGFkanVzdCBzdHlsZXMgYW5kIGhpZGUgYnJlYWRjcnVtYnMuXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIGlzRGlhbG9nOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCB0byB0cnVlIHRvIGVuYWJsZSByZWFkIG9ubHkgbW9kZS4gT25seSBhIHNpbmdsZSBzZWNvbmRhcnkgYWN0aW9uIHdpbGwgYmUgYXZhaWxhYmxlXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIHJlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnRyb2xzIE92ZXJsYXkgdGhhdCBtYXNrcyB0aGUgcGFnZSB2aWV3IGNvbnRlbnQuIE9ubHkgdGhlIGhlYWRlciBpcyBub3QgbWFza2VkIHdoZW4gdGhlIG92ZXJsYXkgaXMgdmlzaWJsZS4gRGVmYXVsdCBpcyBwZW5kaW5nIE92ZXJsYXkgd2l0aCBubyBtZXNzYWdlXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIHN0YXR1cz86IE92ZXJsYXkgPSBuZXcgT3ZlcmxheSgncGVuZGluZycpO1xyXG5cclxuICAvKipcclxuICAgKiBTZXQgdG8gZmFsc2UgdG8gaGlkZSB0aGUgZW50aXJlIGhlYWRlciwgaW5jbHVkaW5nIGJyZWFkY3J1bWJzIGFuZCBlcnJvciBiYW5uZXIuIERlZmF1bHQgaXMgdHJ1ZS5cclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgc2hvd0hlYWRlcjogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIC8qKlxyXG4gICAqIERpc3BsYXlzIGFuIGVycm9yIGJhbm5lciB1bmRlciB0aGUgdGl0bGViYXIgd2hlbiBwcm92aWRlZCBhIHZhbHVlLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBlcnJvcnM/OiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEJyZWFkY3J1bWJzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgaGVhZGVyLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBicmVhZGNydW1icz86IE5hdkl0ZW1bXTtcclxuXHJcbiAgLyoqXHJcbiAgICogVGl0bGUgc2V0dGluZ3MuIFBhc3NlZCB0byB0aGUgUGFnZVRpdGxlQ29tcG9uZW50LlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyB0aXRsZT86IHN0cmluZztcclxuICBASW5wdXQoKSBwdWJsaWMgdGl0bGVJY29uPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBzdWJUaXRsZT86IHN0cmluZztcclxuICBASW5wdXQoKSBwdWJsaWMgc3ViVGl0bGVVcmw/OiBzdHJpbmc7XHJcbiAgXHJcbiAgLyoqXHJcbiAgICogTGFiZWwgZm9yIHRoZSBhY3Rpb25zIGRyb3Bkb3duIGluIHRoZSBoZWFkZXIuIERlZmF1bHQgaXMgJ0FjdGlvbnMnXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIG1vcmVBY3Rpb25zTGFiZWw/OiBzdHJpbmcgPSAnQWN0aW9ucyc7XHJcbiAgLyoqXHJcbiAgICogT3B0aW9ucyBmb3IgdGhlIGFjdGlvbnMgZHJvcGRvd24gaW4gdGhlIGhlYWRlci4gVGhlIGRyb3Bkb3duIGlzIGhpZGRlbiBpZiBub3Qgb3B0aW9ucyBhcmUgcHJvdmlkZWQuXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIG1vcmVBY3Rpb25zPzogTWVudUl0ZW1bXTtcclxuXHJcbiAgLyoqXHJcbiAgICogTGFiZWwgZm9yIHRoZSBzZWNvbmRhcnkgYnV0dG9uIGluIHRoZSBoZWFkZXIuIERlZmF1bHQgaXMgJ0NhbmNlbCdcclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgc2Vjb25kYXJ5QWN0aW9uTGFiZWw/OiBzdHJpbmcgPSAnQ2FuY2VsJztcclxuICBASW5wdXQoKSBwdWJsaWMgaGlkZVNlY29uZGFyeUFjdGlvbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBMYWJlbCBmb3IgdGhlIHByaW1hcnkgYnV0dG9uIGluIHRoZSBoZWFkZXIuIERlZmF1bHQgaXMgJ1NhdmUnXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIHByaW1hcnlBY3Rpb25MYWJlbD86IHN0cmluZyA9ICdTYXZlJztcclxuICBASW5wdXQoKSBwdWJsaWMgaGlkZVByaW1hcnlBY3Rpb24gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogUmVwbGFjZXMgdGhlIHRpdGxlLCBzdWJ0aXRsZSBhbmQgdGl0bGUgaWNvblxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjdXN0b21UaXRsZVRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5zZXJ0ZWQgdG8gdGhlIGxlZnQgb2YgdGhlIGRlZmF1bHQgYWN0aW9uc1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjdXN0b21BY3Rpb25zVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAvKipcclxuICAgKiBSZXBsYWNlcyB0aGUgdGl0bGViYXIgYW5kIGFjdGlvbnMgb2YgdGhlIGRlZmF1bHQgaGVhZGVyLiBCcmVhZGNydW1icyBhbmQgZXJyb3IgYmFubmVyIGFyZSBub3QgcmVwbGFjZWQuIENhbm5vdCBjb250YWluIGEgPGhlYWRlcj4gZWxlbWVudC5cclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgY3VzdG9tSGVhZGVyVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAvKipcclxuICAgKiBDb250ZW50IHRvIGluY2x1ZGUgaW4gdGhlIGZvb3RlclxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBmb290ZXJUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIC8qKiBcclxuICAgKiBQaW5zIHRoZSBmb290ZXIgdG8gdGhlIGJvdHRvbSBvZiB0aGUgdmlldyBhbmQgb3ZlcmxheXMgYW55IG92ZXJmbG93aW5nIGNvbnRlbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgc3RpY2t5Rm9vdGVyID0gdHJ1ZTtcclxuXHJcbiAgLyoqXHJcbiAgICogUHJldmVudHMgY29udGVudCBmcm9tIG92ZXJmbG93aW5nIHRoZSB2aWV3LiBDb250ZW50IG11c3QgbWFuYWdlIG92ZXJmbG93IGluc3RlYWQuXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIGZpdENvbnRlbnQgPSBmYWxzZTtcclxuXHJcbiAgQE91dHB1dCgpIHB1YmxpYyBvblByaW1hcnlBY3Rpb246IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBwdWJsaWMgb25TZWNvbmRhcnlBY3Rpb246IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBwdWJsaWMgcHJpbWFyeUFjdGlvbihldmVudDogYW55KSB7XHJcbiAgICBpZiAodGhpcy5vblByaW1hcnlBY3Rpb24pIHtcclxuICAgICAgdGhpcy5vblByaW1hcnlBY3Rpb24uZW1pdChldmVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2Vjb25kYXJ5QWN0aW9uKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmICh0aGlzLm9uU2Vjb25kYXJ5QWN0aW9uKSB7XHJcbiAgICAgIHRoaXMub25TZWNvbmRhcnlBY3Rpb24uZW1pdChldmVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==