@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
@@ -0,0 +1,154 @@
1
+ import { Component, Input, ViewChild } from '@angular/core';
2
+ import { FormControlBase } from "../form-control-base";
3
+ import { Validators } from '@angular/forms';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../../core/validation-message.service";
6
+ import * as i2 from "../../shared/form-group.helper";
7
+ import * as i3 from "@ngx-translate/core";
8
+ import * as i4 from "@angular/common";
9
+ import * as i5 from "@angular/forms";
10
+ /** Advanced validation for textbox form controls */
11
+ export const textboxValidation = (validatorParams) => {
12
+ return (control) => {
13
+ let validators = [];
14
+ // Innocent until proven guilty
15
+ validatorParams.valid = true;
16
+ if (validatorParams.required) {
17
+ validators.push(Validators.required);
18
+ }
19
+ if (validatorParams.minLength !== undefined) {
20
+ validators.push(Validators.minLength(validatorParams.minLength));
21
+ }
22
+ if (validatorParams.maxLength !== undefined) {
23
+ validators.push(Validators.maxLength(validatorParams.maxLength));
24
+ }
25
+ if (validatorParams.pattern !== undefined) {
26
+ validators.push(Validators.pattern(validatorParams.pattern));
27
+ }
28
+ validators.forEach(validator => {
29
+ let validationResult = validator(control);
30
+ if (validationResult) {
31
+ validatorParams.valid = false;
32
+ }
33
+ });
34
+ if (validatorParams.valid) {
35
+ return null;
36
+ }
37
+ else {
38
+ return {
39
+ textbox: validatorParams
40
+ };
41
+ }
42
+ };
43
+ };
44
+ export const phoneNumberValidationPattern = '^\\s*(?:\\+?(\\d{1,3}))?[-. (]*(\\d{3})[-. )]*(\\d{3})[-. ]*(\\d{4})(?: *x(\\d+))?\\s*$';
45
+ export const urlValidationPattern = '([A-Za-z])+(:\/\/)+[^\\s]*';
46
+ export class TextboxComponent extends FormControlBase {
47
+ constructor(validationMessageService, formGroupHelper, translate) {
48
+ super(validationMessageService, formGroupHelper);
49
+ this.validationMessageService = validationMessageService;
50
+ this.formGroupHelper = formGroupHelper;
51
+ this.translate = translate;
52
+ /**
53
+ * Set the value of the input's autocomplete attribute
54
+ */
55
+ this.autocomplete = 'off';
56
+ /**
57
+ * The textbox type
58
+ */
59
+ this.type = "text";
60
+ /**
61
+ * The value of the rows attribute for a textarea. Only applies to multi-line type
62
+ */
63
+ this.rows = 3;
64
+ /**
65
+ * If set to true, we will select all text within the input if
66
+ * autofocus is also set to true
67
+ */
68
+ this.selectOnAutofocus = false;
69
+ /**
70
+ * If set to true, we will upper case on focus out
71
+ */
72
+ this.upperCase = false;
73
+ /**
74
+ * Validation pattern for the input. This is determined on the input type specified
75
+ */
76
+ this.validationPattern = '';
77
+ }
78
+ ngOnChanges(changes) {
79
+ super.ngOnChanges(changes);
80
+ }
81
+ /**
82
+ * The angular onInit lifecycle hook
83
+ */
84
+ ngOnInit() {
85
+ super.ngOnInit();
86
+ this.validationPattern = '';
87
+ if (this.type === 'tel') {
88
+ this.validationPattern = phoneNumberValidationPattern;
89
+ }
90
+ else if (this.type === 'url') {
91
+ this.validationPattern = urlValidationPattern;
92
+ }
93
+ if (this.placeholder) {
94
+ this.translate.get(this.placeholder)
95
+ .subscribe((translated) => {
96
+ this.placeholder = translated;
97
+ });
98
+ }
99
+ }
100
+ /**
101
+ * The angular afterViewInit lifecycle hook
102
+ */
103
+ ngAfterViewInit() {
104
+ if (this.autofocus) {
105
+ this.setFocus(this.selectOnAutofocus);
106
+ }
107
+ }
108
+ /**
109
+ * Function to set focus on an input programmatically after the page
110
+ * had been rendered. The highlight text flag will select the text
111
+ * within the input if passed in and true
112
+ */
113
+ setFocus(highlightText) {
114
+ this.inputElement.nativeElement.focus();
115
+ if (highlightText) {
116
+ this.inputElement.nativeElement.select();
117
+ }
118
+ }
119
+ /**
120
+ * Focus out event handler
121
+ * will upper case and trim value if upperCase is true (this is what we do on the apis)
122
+ */
123
+ focusOutEvent() {
124
+ if (this.upperCase && this.formModel.value) {
125
+ this.formModel.setValue(this.formModel.value.toUpperCase().trim());
126
+ }
127
+ }
128
+ }
129
+ TextboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TextboxComponent, deps: [{ token: i1.ValidationMessageService }, { token: i2.FormGroupHelper }, { token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
130
+ TextboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: TextboxComponent, selector: "ec-textbox", inputs: { autocomplete: "autocomplete", type: "type", placeholder: "placeholder", maxlength: "maxlength", minlength: "minlength", rows: "rows", selectOnAutofocus: "selectOnAutofocus", upperCase: "upperCase" }, viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["textboxInput"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"control control-label-{{labelPosition}}\"\r\n [ngClass]=\"{'is-readonly': readonly}\">\r\n <label *ngIf=\"label\" ngPreserveWhitespaces>\r\n\r\n <span>{{label | translate}}</span>\r\n\r\n <span *ngIf=\"validationErrors.length > 0 && formModel.touched && formModel.invalid\">{{validationErrors | translate}}</span>\r\n </label>\r\n <div class=\"input-wrapper control-input\">\r\n <input *ngIf=\"type !== 'multi_line'\"\r\n #textboxInput\r\n email=\"{{type === 'email' ? true : false}}\"\r\n pattern=\"{{validationPattern}}\"\r\n type=\"{{type}}\"\r\n tabindex=\"{{tabindex}}\"\r\n title=\"{{tooltip}}\"\r\n [attr.id]=\"inputId\"\r\n [attr.autocomplete]=\"autocomplete\"\r\n [attr.placeholder]=\"placeholder\"\r\n [attr.maxlength]=\"maxlength\"\r\n [attr.minlength]=\"minlength\"\r\n [attr.required]=\"required ? required : null\"\r\n [formControl]=\"formModel\"\r\n [ngClass]=\"{'is-empty': !formModel?.value, 'is-pending': pending, 'is-uppercase': upperCase}\"\r\n (focusout)=\"focusOutEvent()\"\r\n [attr.cdkFocusInitial]=\"autofocus || null\">\r\n\r\n <textarea *ngIf=\"type === 'multi_line'\"\r\n [attr.rows]=\"rows\"\r\n #textboxInput\r\n tabindex=\"{{tabindex}}\"\r\n [attr.id]=\"inputId\"\r\n [attr.placeholder]=\"placeholder\"\r\n [attr.maxlength]=\"maxlength\"\r\n [attr.minlength]=\"minlength\"\r\n [attr.required]=\"required ? required : null\"\r\n [formControl]=\"formModel\"\r\n [ngClass]=\"{'is-empty': formModel?.value === '', 'is-pending': pending}\"\r\n [attr.cdkFocusInitial]=\"autofocus || null\">\r\n </textarea>\r\n </div>\r\n</div>", styles: [":root{--ec-font-size-icon: 1rem;--ec-color-icon: rgba(26, 26, 35, .66)}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}:host{color:var(--ec-color-primary-dark);font-family:var(--ec-font-family);font-size:var(--ec-font-size-body);display:block;margin-bottom:1rem;width:100%}:host :host-context(.form-condensed){margin-bottom:.5rem}:host .control{width:100%;display:flex;flex-direction:column}:host .control.control-label-bottom{flex-direction:column-reverse}:host .control.control-label-left{flex-direction:row}:host .control.control-label-left label{margin-right:.25rem}:host .control.control-label-right{flex-direction:row-reverse}:host .control.control-label-right label{margin-left:.25rem}:host .control.control-label-left,:host .control.control-label-right{align-items:center}:host .control.control-label-left label,:host .control.control-label-right label{flex:1 1;margin-top:0;margin-bottom:0}:host .control.control-label-left .control-input,:host .control.control-label-right .control-input{flex:2 2}:host .control.is-readonly input,:host .control.is-readonly select{border-color:transparent;background-color:#1a1a231f;background-clip:border-box;background-image:none;color:var(--ec-color-primary-dark);opacity:1;-webkit-user-select:none;user-select:none;pointer-events:none;overflow:hidden;white-space:nowrap}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid{background-color:var(--ec-background-color-caution);background-image:url('data:image/svg+xml;charset=utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path fill=\"rgba(26, 26, 35, 0.66)\" d=\"M20.21 20.21h-8.42L10.95 0h10.1l-.84 20.21zm-8.42 3.37h8.42V32h-8.42z\"/></svg>');background-repeat:no-repeat;background-position:.25rem center;background-size:1rem,1rem;padding-left:1.5rem}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid:not(:focus),:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid:not(:focus){border-color:var(--ec-color-caution)}:host .control.invalid:not(.open) .textbox-group-btn-right ::ng-deep button{background-color:var(--ec-background-color-caution)}:host .control.invalid:not(.open) .textbox-group-btn-right ::ng-deep button:not(:focus){border-color:var(--ec-color-caution)}:host .textbox-group{display:flex;position:relative}:host textarea:focus,:host input:focus,:host select:focus{outline:none}:host label{color:var(--ec-color-secondary-dark);display:block;font-size:var(--ec-font-size-label);line-height:1;margin:calc(var(--ec-font-size-label) / 2) 0}:host input{border-color:var(--ec-border-color-legacy);background-color:var(--ec-background-color);background-image:none;background-clip:padding-box;border-width:.0625rem;border-style:solid;border-radius:var(--ec-border-radius);width:100%;height:2rem;line-height:1.25;padding:.3125rem .5rem}:host input::selection{background-color:var(--ec-color-interactive);color:var(--ec-color-primary-light)}:host input::-webkit-input-placeholder{color:var(--ec-color-hint-dark)}:host input::-moz-placeholder{color:var(--ec-color-hint-dark);opacity:1}:host input:-ms-input-placeholder{color:var(--ec-color-hint-dark)}:host input:-moz-placeholder{color:var(--ec-color-hint-dark);opacity:1}:host input:required.is-empty{border-color:var(--ec-border-color-legacy);background-color:var(--ec-background-color);background-image:url('data:image/svg+xml;charset=utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path fill=\"%23ffe433\" d=\"M31.32 21.69l-.09.18-2.48 4.35c-.36.54-.77.62-1.25.27-.12 0-.2 0-.2-.09L19.53 22v9.37a1.26 1.26 0 0 1-.72.67h-5.26c-.59 0-.83-.3-.83-.89 0-.12.15-.21.15-.27V22l-8 4.71h-.12c-.42.66-.8.21-1.16-.27L1 21.82a.82.82 0 0 1 .35-1.26l.18-.1L9 16 .87 11.47v-.09c0-.36-.39-.74-.09-1.16l2.75-4.35v-.09c0-.42.82-.54 1.29-.36l8 4.62V.89c0-.59.18-.89.77-.89h5c.65 0 .91.3.91.89V10l7.94-4.53c.48-.29.72-.21 1.08.27l2.32 4.35v.09c.66.48.45.89-.08 1.25L23 16l7.91 4.53v.09c-.04.18.53.54.41 1.07z\"/></svg>');background-repeat:no-repeat;background-position:.25rem center;background-size:1rem,1rem;padding-left:1.5rem}:host input.ng-invalid.ng-touched{background-color:var(--ec-background-color-caution);background-image:url('data:image/svg+xml;charset=utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path fill=\"rgba(26, 26, 35, 0.66)\" d=\"M20.21 20.21h-8.42L10.95 0h10.1l-.84 20.21zm-8.42 3.37h8.42V32h-8.42z\"/></svg>');background-repeat:no-repeat;background-position:.25rem center;background-size:1rem,1rem;padding-left:1.5rem}:host input.ng-invalid.ng-touched:not(:focus){border-color:var(--ec-color-caution)}:host input.is-pending.ng-valid,:host input.is-pending.ng-invalid,:host input.is-pending.ng-pending{background-image:url('data:image/svg+xml;charset=utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 50 50\"><path fill=\"%230084a9\" d=\"M43.935 25.145c0-10.318-8.364-18.683-18.683-18.683-10.318 0-18.683 8.365-18.683 18.683h4.068c0-8.071 6.543-14.615 14.615-14.615s14.615 6.543 14.615 14.615h4.068z\"><animateTransform attributeType=\"xml\" attributeName=\"transform\" type=\"rotate\" from=\"0 25 25\" to=\"360 25 25\" dur=\"0.8s\" repeatCount=\"indefinite\"/></path></svg>');background-repeat:no-repeat;background-position:.25rem center;background-size:1rem,1rem;padding-left:1.5rem}:host input:focus,:host input:focus.is-empty{border-color:var(--ec-color-interactive);box-shadow:0 0 0 .0625rem var(--ec-color-interactive);position:relative;z-index:1}:host input:disabled{background-color:var(--ec-background-color-disabled);border-color:var(--ec-border-color-legacy);color:var(--ec-color-secondary-dark);opacity:.65}:host input:disabled:required,:host input:disabled:required.is-empty{background-image:none;padding-left:.5rem;background-color:var(--ec-background-color-disabled);border-color:var(--ec-border-color-legacy)}:host input.is-uppercase:not(.is-empty){text-transform:uppercase}:host textarea{border-color:var(--ec-border-color-legacy);background-color:var(--ec-background-color);background-image:none;background-clip:padding-box;border-width:.0625rem;border-style:solid;border-radius:var(--ec-border-radius);width:100%;height:auto;line-height:1.25;padding:.3125rem .5rem;resize:none;display:block}:host textarea::selection{background-color:var(--ec-color-interactive);color:var(--ec-color-primary-light)}:host textarea::-webkit-input-placeholder{color:var(--ec-color-hint-dark)}:host textarea::-moz-placeholder{color:var(--ec-color-hint-dark);opacity:1}:host textarea:-ms-input-placeholder{color:var(--ec-color-hint-dark)}:host textarea:-moz-placeholder{color:var(--ec-color-hint-dark);opacity:1}:host textarea:required.is-empty{border-color:var(--ec-border-color-legacy);background-color:var(--ec-background-color);background-image:url('data:image/svg+xml;charset=utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path fill=\"%23ffe433\" d=\"M31.32 21.69l-.09.18-2.48 4.35c-.36.54-.77.62-1.25.27-.12 0-.2 0-.2-.09L19.53 22v9.37a1.26 1.26 0 0 1-.72.67h-5.26c-.59 0-.83-.3-.83-.89 0-.12.15-.21.15-.27V22l-8 4.71h-.12c-.42.66-.8.21-1.16-.27L1 21.82a.82.82 0 0 1 .35-1.26l.18-.1L9 16 .87 11.47v-.09c0-.36-.39-.74-.09-1.16l2.75-4.35v-.09c0-.42.82-.54 1.29-.36l8 4.62V.89c0-.59.18-.89.77-.89h5c.65 0 .91.3.91.89V10l7.94-4.53c.48-.29.72-.21 1.08.27l2.32 4.35v.09c.66.48.45.89-.08 1.25L23 16l7.91 4.53v.09c-.04.18.53.54.41 1.07z\"/></svg>');background-repeat:no-repeat;background-position:.25rem .5rem;background-size:1rem,1rem;padding-left:1.5rem}:host textarea.ng-invalid.ng-touched{background-color:var(--ec-background-color-caution);background-image:url('data:image/svg+xml;charset=utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path fill=\"rgba(26, 26, 35, 0.66)\" d=\"M20.21 20.21h-8.42L10.95 0h10.1l-.84 20.21zm-8.42 3.37h8.42V32h-8.42z\"/></svg>');background-repeat:no-repeat;background-position:.25rem .5rem;background-size:1rem,1rem;padding-left:1.5rem}:host textarea.ng-invalid.ng-touched:not(:focus){border-color:var(--ec-color-caution)}:host textarea.is-pending.ng-valid,:host textarea.is-pending.ng-invalid,:host textarea.is-pending.ng-pending{background-image:url('data:image/svg+xml;charset=utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 50 50\"><path fill=\"%230084a9\" d=\"M43.935 25.145c0-10.318-8.364-18.683-18.683-18.683-10.318 0-18.683 8.365-18.683 18.683h4.068c0-8.071 6.543-14.615 14.615-14.615s14.615 6.543 14.615 14.615h4.068z\"><animateTransform attributeType=\"xml\" attributeName=\"transform\" type=\"rotate\" from=\"0 25 25\" to=\"360 25 25\" dur=\"0.8s\" repeatCount=\"indefinite\"/></path></svg>');background-repeat:no-repeat;background-position:.25rem .5rem;background-size:1rem,1rem;padding-left:1.5rem}:host textarea:focus,:host textarea:focus.is-empty{border-color:var(--ec-color-interactive);box-shadow:0 0 0 .0625rem var(--ec-color-interactive);position:relative;z-index:1}:host textarea:disabled{background-color:var(--ec-background-color-disabled);border-color:var(--ec-border-color-legacy);color:var(--ec-color-secondary-dark);opacity:.65}:host textarea:disabled:required,:host textarea:disabled:required.is-empty{background-image:none;padding-left:.5rem;background-color:var(--ec-background-color-disabled);border-color:var(--ec-border-color-legacy)}:host textarea.is-uppercase:not(.is-empty){text-transform:uppercase}:host(.textbox-group-input:not(:last-child)){flex:1 1 0%;width:1px}:host(.textbox-group-input:not(:last-child)) .control{margin-bottom:0}:host(.textbox-group-input:not(:last-child)) .control.is-readonly input{border-right-width:.0625rem}:host(.textbox-group-input:not(:last-child)) input{border-top-right-radius:0;border-bottom-right-radius:0;border-right-width:0}:host(.textbox-group-input:not(:last-child)) input:focus{position:relative;z-index:1;border-right-width:.0625rem}:host(.text-truncate) input{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host(.is-monospace) input,:host(.is-monospace) textarea,:host-context(.is-monospace) input,:host-context(.is-monospace) textarea{font-family:var(--ec-font-family-monospace)}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i5.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i5.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i5.EmailValidator, selector: "[email][formControlName],[email][formControl],[email][ngModel]", inputs: ["email"] }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] });
131
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TextboxComponent, decorators: [{
132
+ type: Component,
133
+ args: [{ selector: 'ec-textbox', template: "<div class=\"control control-label-{{labelPosition}}\"\r\n [ngClass]=\"{'is-readonly': readonly}\">\r\n <label *ngIf=\"label\" ngPreserveWhitespaces>\r\n\r\n <span>{{label | translate}}</span>\r\n\r\n <span *ngIf=\"validationErrors.length > 0 && formModel.touched && formModel.invalid\">{{validationErrors | translate}}</span>\r\n </label>\r\n <div class=\"input-wrapper control-input\">\r\n <input *ngIf=\"type !== 'multi_line'\"\r\n #textboxInput\r\n email=\"{{type === 'email' ? true : false}}\"\r\n pattern=\"{{validationPattern}}\"\r\n type=\"{{type}}\"\r\n tabindex=\"{{tabindex}}\"\r\n title=\"{{tooltip}}\"\r\n [attr.id]=\"inputId\"\r\n [attr.autocomplete]=\"autocomplete\"\r\n [attr.placeholder]=\"placeholder\"\r\n [attr.maxlength]=\"maxlength\"\r\n [attr.minlength]=\"minlength\"\r\n [attr.required]=\"required ? required : null\"\r\n [formControl]=\"formModel\"\r\n [ngClass]=\"{'is-empty': !formModel?.value, 'is-pending': pending, 'is-uppercase': upperCase}\"\r\n (focusout)=\"focusOutEvent()\"\r\n [attr.cdkFocusInitial]=\"autofocus || null\">\r\n\r\n <textarea *ngIf=\"type === 'multi_line'\"\r\n [attr.rows]=\"rows\"\r\n #textboxInput\r\n tabindex=\"{{tabindex}}\"\r\n [attr.id]=\"inputId\"\r\n [attr.placeholder]=\"placeholder\"\r\n [attr.maxlength]=\"maxlength\"\r\n [attr.minlength]=\"minlength\"\r\n [attr.required]=\"required ? required : null\"\r\n [formControl]=\"formModel\"\r\n [ngClass]=\"{'is-empty': formModel?.value === '', 'is-pending': pending}\"\r\n [attr.cdkFocusInitial]=\"autofocus || null\">\r\n </textarea>\r\n </div>\r\n</div>", styles: [":root{--ec-font-size-icon: 1rem;--ec-color-icon: rgba(26, 26, 35, .66)}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}:host{color:var(--ec-color-primary-dark);font-family:var(--ec-font-family);font-size:var(--ec-font-size-body);display:block;margin-bottom:1rem;width:100%}:host :host-context(.form-condensed){margin-bottom:.5rem}:host .control{width:100%;display:flex;flex-direction:column}:host .control.control-label-bottom{flex-direction:column-reverse}:host .control.control-label-left{flex-direction:row}:host .control.control-label-left label{margin-right:.25rem}:host .control.control-label-right{flex-direction:row-reverse}:host .control.control-label-right label{margin-left:.25rem}:host .control.control-label-left,:host .control.control-label-right{align-items:center}:host .control.control-label-left label,:host .control.control-label-right label{flex:1 1;margin-top:0;margin-bottom:0}:host .control.control-label-left .control-input,:host .control.control-label-right .control-input{flex:2 2}:host .control.is-readonly input,:host .control.is-readonly select{border-color:transparent;background-color:#1a1a231f;background-clip:border-box;background-image:none;color:var(--ec-color-primary-dark);opacity:1;-webkit-user-select:none;user-select:none;pointer-events:none;overflow:hidden;white-space:nowrap}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid{background-color:var(--ec-background-color-caution);background-image:url('data:image/svg+xml;charset=utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path fill=\"rgba(26, 26, 35, 0.66)\" d=\"M20.21 20.21h-8.42L10.95 0h10.1l-.84 20.21zm-8.42 3.37h8.42V32h-8.42z\"/></svg>');background-repeat:no-repeat;background-position:.25rem center;background-size:1rem,1rem;padding-left:1.5rem}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid:not(:focus),:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid:not(:focus){border-color:var(--ec-color-caution)}:host .control.invalid:not(.open) .textbox-group-btn-right ::ng-deep button{background-color:var(--ec-background-color-caution)}:host .control.invalid:not(.open) .textbox-group-btn-right ::ng-deep button:not(:focus){border-color:var(--ec-color-caution)}:host .textbox-group{display:flex;position:relative}:host textarea:focus,:host input:focus,:host select:focus{outline:none}:host label{color:var(--ec-color-secondary-dark);display:block;font-size:var(--ec-font-size-label);line-height:1;margin:calc(var(--ec-font-size-label) / 2) 0}:host input{border-color:var(--ec-border-color-legacy);background-color:var(--ec-background-color);background-image:none;background-clip:padding-box;border-width:.0625rem;border-style:solid;border-radius:var(--ec-border-radius);width:100%;height:2rem;line-height:1.25;padding:.3125rem .5rem}:host input::selection{background-color:var(--ec-color-interactive);color:var(--ec-color-primary-light)}:host input::-webkit-input-placeholder{color:var(--ec-color-hint-dark)}:host input::-moz-placeholder{color:var(--ec-color-hint-dark);opacity:1}:host input:-ms-input-placeholder{color:var(--ec-color-hint-dark)}:host input:-moz-placeholder{color:var(--ec-color-hint-dark);opacity:1}:host input:required.is-empty{border-color:var(--ec-border-color-legacy);background-color:var(--ec-background-color);background-image:url('data:image/svg+xml;charset=utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path fill=\"%23ffe433\" d=\"M31.32 21.69l-.09.18-2.48 4.35c-.36.54-.77.62-1.25.27-.12 0-.2 0-.2-.09L19.53 22v9.37a1.26 1.26 0 0 1-.72.67h-5.26c-.59 0-.83-.3-.83-.89 0-.12.15-.21.15-.27V22l-8 4.71h-.12c-.42.66-.8.21-1.16-.27L1 21.82a.82.82 0 0 1 .35-1.26l.18-.1L9 16 .87 11.47v-.09c0-.36-.39-.74-.09-1.16l2.75-4.35v-.09c0-.42.82-.54 1.29-.36l8 4.62V.89c0-.59.18-.89.77-.89h5c.65 0 .91.3.91.89V10l7.94-4.53c.48-.29.72-.21 1.08.27l2.32 4.35v.09c.66.48.45.89-.08 1.25L23 16l7.91 4.53v.09c-.04.18.53.54.41 1.07z\"/></svg>');background-repeat:no-repeat;background-position:.25rem center;background-size:1rem,1rem;padding-left:1.5rem}:host input.ng-invalid.ng-touched{background-color:var(--ec-background-color-caution);background-image:url('data:image/svg+xml;charset=utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path fill=\"rgba(26, 26, 35, 0.66)\" d=\"M20.21 20.21h-8.42L10.95 0h10.1l-.84 20.21zm-8.42 3.37h8.42V32h-8.42z\"/></svg>');background-repeat:no-repeat;background-position:.25rem center;background-size:1rem,1rem;padding-left:1.5rem}:host input.ng-invalid.ng-touched:not(:focus){border-color:var(--ec-color-caution)}:host input.is-pending.ng-valid,:host input.is-pending.ng-invalid,:host input.is-pending.ng-pending{background-image:url('data:image/svg+xml;charset=utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 50 50\"><path fill=\"%230084a9\" d=\"M43.935 25.145c0-10.318-8.364-18.683-18.683-18.683-10.318 0-18.683 8.365-18.683 18.683h4.068c0-8.071 6.543-14.615 14.615-14.615s14.615 6.543 14.615 14.615h4.068z\"><animateTransform attributeType=\"xml\" attributeName=\"transform\" type=\"rotate\" from=\"0 25 25\" to=\"360 25 25\" dur=\"0.8s\" repeatCount=\"indefinite\"/></path></svg>');background-repeat:no-repeat;background-position:.25rem center;background-size:1rem,1rem;padding-left:1.5rem}:host input:focus,:host input:focus.is-empty{border-color:var(--ec-color-interactive);box-shadow:0 0 0 .0625rem var(--ec-color-interactive);position:relative;z-index:1}:host input:disabled{background-color:var(--ec-background-color-disabled);border-color:var(--ec-border-color-legacy);color:var(--ec-color-secondary-dark);opacity:.65}:host input:disabled:required,:host input:disabled:required.is-empty{background-image:none;padding-left:.5rem;background-color:var(--ec-background-color-disabled);border-color:var(--ec-border-color-legacy)}:host input.is-uppercase:not(.is-empty){text-transform:uppercase}:host textarea{border-color:var(--ec-border-color-legacy);background-color:var(--ec-background-color);background-image:none;background-clip:padding-box;border-width:.0625rem;border-style:solid;border-radius:var(--ec-border-radius);width:100%;height:auto;line-height:1.25;padding:.3125rem .5rem;resize:none;display:block}:host textarea::selection{background-color:var(--ec-color-interactive);color:var(--ec-color-primary-light)}:host textarea::-webkit-input-placeholder{color:var(--ec-color-hint-dark)}:host textarea::-moz-placeholder{color:var(--ec-color-hint-dark);opacity:1}:host textarea:-ms-input-placeholder{color:var(--ec-color-hint-dark)}:host textarea:-moz-placeholder{color:var(--ec-color-hint-dark);opacity:1}:host textarea:required.is-empty{border-color:var(--ec-border-color-legacy);background-color:var(--ec-background-color);background-image:url('data:image/svg+xml;charset=utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path fill=\"%23ffe433\" d=\"M31.32 21.69l-.09.18-2.48 4.35c-.36.54-.77.62-1.25.27-.12 0-.2 0-.2-.09L19.53 22v9.37a1.26 1.26 0 0 1-.72.67h-5.26c-.59 0-.83-.3-.83-.89 0-.12.15-.21.15-.27V22l-8 4.71h-.12c-.42.66-.8.21-1.16-.27L1 21.82a.82.82 0 0 1 .35-1.26l.18-.1L9 16 .87 11.47v-.09c0-.36-.39-.74-.09-1.16l2.75-4.35v-.09c0-.42.82-.54 1.29-.36l8 4.62V.89c0-.59.18-.89.77-.89h5c.65 0 .91.3.91.89V10l7.94-4.53c.48-.29.72-.21 1.08.27l2.32 4.35v.09c.66.48.45.89-.08 1.25L23 16l7.91 4.53v.09c-.04.18.53.54.41 1.07z\"/></svg>');background-repeat:no-repeat;background-position:.25rem .5rem;background-size:1rem,1rem;padding-left:1.5rem}:host textarea.ng-invalid.ng-touched{background-color:var(--ec-background-color-caution);background-image:url('data:image/svg+xml;charset=utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path fill=\"rgba(26, 26, 35, 0.66)\" d=\"M20.21 20.21h-8.42L10.95 0h10.1l-.84 20.21zm-8.42 3.37h8.42V32h-8.42z\"/></svg>');background-repeat:no-repeat;background-position:.25rem .5rem;background-size:1rem,1rem;padding-left:1.5rem}:host textarea.ng-invalid.ng-touched:not(:focus){border-color:var(--ec-color-caution)}:host textarea.is-pending.ng-valid,:host textarea.is-pending.ng-invalid,:host textarea.is-pending.ng-pending{background-image:url('data:image/svg+xml;charset=utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 50 50\"><path fill=\"%230084a9\" d=\"M43.935 25.145c0-10.318-8.364-18.683-18.683-18.683-10.318 0-18.683 8.365-18.683 18.683h4.068c0-8.071 6.543-14.615 14.615-14.615s14.615 6.543 14.615 14.615h4.068z\"><animateTransform attributeType=\"xml\" attributeName=\"transform\" type=\"rotate\" from=\"0 25 25\" to=\"360 25 25\" dur=\"0.8s\" repeatCount=\"indefinite\"/></path></svg>');background-repeat:no-repeat;background-position:.25rem .5rem;background-size:1rem,1rem;padding-left:1.5rem}:host textarea:focus,:host textarea:focus.is-empty{border-color:var(--ec-color-interactive);box-shadow:0 0 0 .0625rem var(--ec-color-interactive);position:relative;z-index:1}:host textarea:disabled{background-color:var(--ec-background-color-disabled);border-color:var(--ec-border-color-legacy);color:var(--ec-color-secondary-dark);opacity:.65}:host textarea:disabled:required,:host textarea:disabled:required.is-empty{background-image:none;padding-left:.5rem;background-color:var(--ec-background-color-disabled);border-color:var(--ec-border-color-legacy)}:host textarea.is-uppercase:not(.is-empty){text-transform:uppercase}:host(.textbox-group-input:not(:last-child)){flex:1 1 0%;width:1px}:host(.textbox-group-input:not(:last-child)) .control{margin-bottom:0}:host(.textbox-group-input:not(:last-child)) .control.is-readonly input{border-right-width:.0625rem}:host(.textbox-group-input:not(:last-child)) input{border-top-right-radius:0;border-bottom-right-radius:0;border-right-width:0}:host(.textbox-group-input:not(:last-child)) input:focus{position:relative;z-index:1;border-right-width:.0625rem}:host(.text-truncate) input{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host(.is-monospace) input,:host(.is-monospace) textarea,:host-context(.is-monospace) input,:host-context(.is-monospace) textarea{font-family:var(--ec-font-family-monospace)}\n"] }]
134
+ }], ctorParameters: function () { return [{ type: i1.ValidationMessageService }, { type: i2.FormGroupHelper }, { type: i3.TranslateService }]; }, propDecorators: { autocomplete: [{
135
+ type: Input
136
+ }], type: [{
137
+ type: Input
138
+ }], placeholder: [{
139
+ type: Input
140
+ }], maxlength: [{
141
+ type: Input
142
+ }], minlength: [{
143
+ type: Input
144
+ }], rows: [{
145
+ type: Input
146
+ }], selectOnAutofocus: [{
147
+ type: Input
148
+ }], upperCase: [{
149
+ type: Input
150
+ }], inputElement: [{
151
+ type: ViewChild,
152
+ args: ['textboxInput']
153
+ }] } });
154
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvY29udHJvbHMvdGV4dGJveC90ZXh0Ym94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy90ZXh0Ym94L3RleHRib3guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUErRCxNQUFNLGVBQWUsQ0FBQztBQUd6SCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFdkQsT0FBTyxFQUFrRCxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQTBCNUYsb0RBQW9EO0FBQ3BELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsZUFBMkMsRUFBZSxFQUFFO0lBQzFGLE9BQU8sQ0FBQyxPQUF3QixFQUFFLEVBQUU7UUFDaEMsSUFBSSxVQUFVLEdBQWtCLEVBQUUsQ0FBQztRQUVuQywrQkFBK0I7UUFDL0IsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFFN0IsSUFBSSxlQUFlLENBQUMsUUFBUSxFQUFFO1lBQzFCLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3hDO1FBRUQsSUFBSSxlQUFlLENBQUMsU0FBUyxLQUFLLFNBQVMsRUFBRTtZQUN6QyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7U0FDcEU7UUFFRCxJQUFJLGVBQWUsQ0FBQyxTQUFTLEtBQUssU0FBUyxFQUFFO1lBQ3pDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztTQUNwRTtRQUVELElBQUksZUFBZSxDQUFDLE9BQU8sS0FBSyxTQUFTLEVBQUU7WUFDdkMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1NBQ2hFO1FBRUQsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUMzQixJQUFJLGdCQUFnQixHQUE0QixTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDbkUsSUFBSSxnQkFBZ0IsRUFBRTtnQkFDbEIsZUFBZSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7YUFDakM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksZUFBZSxDQUFDLEtBQUssRUFBRTtZQUN2QixPQUFPLElBQUksQ0FBQztTQUNmO2FBQU07WUFDSCxPQUFPO2dCQUNILE9BQU8sRUFBRSxlQUFlO2FBQzNCLENBQUM7U0FDTDtJQUNMLENBQUMsQ0FBQTtBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFXLHlGQUF5RixDQUFDO0FBQzlJLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFXLDRCQUE0QixDQUFDO0FBUXpFLE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxlQUFlO0lBeURqRCxZQUNjLHdCQUFrRCxFQUNsRCxlQUFnQyxFQUNoQyxTQUEyQjtRQUVyQyxLQUFLLENBQUMsd0JBQXdCLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFKdkMsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUNsRCxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUEzRHpDOztXQUVHO1FBQ2EsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFFOUM7O1dBRUc7UUFDYSxTQUFJLEdBQWlCLE1BQU0sQ0FBQztRQXlCNUM7O1dBRUc7UUFDYSxTQUFJLEdBQVksQ0FBQyxDQUFDO1FBRWxDOzs7V0FHRztRQUNhLHNCQUFpQixHQUFhLEtBQUssQ0FBQztRQUVwRDs7V0FFRztRQUNhLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFFM0M7O1dBRUc7UUFDSSxzQkFBaUIsR0FBWSxFQUFFLENBQUM7SUFVdkMsQ0FBQztJQUVNLFdBQVcsQ0FBQyxPQUFzQjtRQUNyQyxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFDRDs7T0FFQTtJQUNPLFFBQVE7UUFDWCxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFakIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztRQUU1QixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssS0FBSyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyw0QkFBNEIsQ0FBQztTQUN6RDthQUFNLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxLQUFLLEVBQUU7WUFDNUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLG9CQUFvQixDQUFDO1NBQ2pEO1FBRUQsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7aUJBQy9CLFNBQVMsQ0FBQyxDQUFDLFVBQWtCLEVBQUUsRUFBRTtnQkFDOUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7WUFDbEMsQ0FBQyxDQUFDLENBQUE7U0FDVDtJQUNMLENBQUM7SUFFRDs7T0FFQTtJQUNPLGVBQWU7UUFDbEIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7U0FDekM7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFFBQVEsQ0FBQyxhQUF1QjtRQUNuQyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUV4QyxJQUFJLGFBQWEsRUFBRTtZQUNmLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQzVDO0lBQ0wsQ0FBQztJQUVEOzs7SUFHQTtJQUNPLGFBQWE7UUFDaEIsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFO1lBQ3hDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7U0FDdEU7SUFDTCxDQUFDOzs2R0F4SFEsZ0JBQWdCO2lHQUFoQixnQkFBZ0IsOFpDbEY3Qiw2K0RBeUNNOzJGRHlDTyxnQkFBZ0I7a0JBTjVCLFNBQVM7K0JBQ0ksWUFBWTs0S0FTTixZQUFZO3NCQUEzQixLQUFLO2dCQUtVLElBQUk7c0JBQW5CLEtBQUs7Z0JBS1UsV0FBVztzQkFBMUIsS0FBSztnQkFTVSxTQUFTO3NCQUF4QixLQUFLO2dCQVNVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBS1UsSUFBSTtzQkFBbkIsS0FBSztnQkFNVSxpQkFBaUI7c0JBQWhDLEtBQUs7Z0JBS1UsU0FBUztzQkFBeEIsS0FBSztnQkFPK0IsWUFBWTtzQkFBaEQsU0FBUzt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybUdyb3VwSGVscGVyIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Zvcm0tZ3JvdXAuaGVscGVyJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBBZnRlclZpZXdJbml0LCBPbkluaXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcclxuXHJcbmltcG9ydCB7IEZvcm1Db250cm9sQmFzZSB9IGZyb20gXCIuLi9mb3JtLWNvbnRyb2wtYmFzZVwiO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uTWVzc2FnZVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS92YWxpZGF0aW9uLW1lc3NhZ2Uuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBWYWxpZGF0b3JGbiwgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuLyoqXHJcbiAqIFRoZSB0eXBlIG9mIHRleHRib3ggd2hlcmUgdGV4dCBpcyBpbnB1dFt0eXBlPVwidGV4dFwiXSwgbXVsdGlfbGluZSBpcyBhIFxyXG4gKiB0ZXh0YXJlYSwgZW1haWwgaXMgaW5wdXRbdHlwZT1cImVtYWlsXCJdLCB1cmwgaXMgaW5wdXRbdHlwZT1cInVybFwiXSwgYW5kIHBhc3N3b3JkIFxyXG4gKiBpcyBhbiBpbnB1dFt0eXBlPVwicGFzc3dvcmRcIl1cclxuICogXHJcbiAqIElmIHRoZSB0eXBlIGlzIHVybCBvciB0ZWwgYSByZWdleCBwYXR0ZXJuIGlzIGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gdGhlIGZvcm0gdmFsaWRhdG9ycy4gIE5vIG90aGVyIHBhdHRlcm4gdmFsaWRhdG9yc1xyXG4gKiBtYXkgYmUgdXNlZCBmb3IgdGhpcyBpbnB1dCwgaGF2aW5nIG1vcmUgdGhhbiBvbmUgd2lsbCBjYXVzZSBpc3N1ZXMuXHJcbiAqIFxyXG4gKiBJZiB0aGUgdHlwZSBpcyBlbWFpbCBhbiBlbWFpbCB2YWxpZGF0b3IgaXMgYXV0b21hdGljYWxseSBhZGRlZCB0byB0aGUgZm9ybSB2YWxpZGF0b3JzLlxyXG4gKiAqL1xyXG5leHBvcnQgdHlwZSBUZXh0Ym94VHlwZSA9IFwidGV4dFwiIHwgXCJtdWx0aV9saW5lXCIgfCBcImVtYWlsXCIgfCBcInVybFwiIHwgXCJwYXNzd29yZFwiIHwgXCJ0ZWxcIjtcclxuXHJcbi8qKiBUeXBlIGZvciBhZHZhbmNlZCB2YWxpZGF0aW9uIG9mIHRleHRib3ggZm9ybSBjb250cm9scywgaWYgaW4gdGhlIGZ1dHVyZVxyXG4gKiAgd2Ugd2FudCBtb3JlIGhhbmRsaW5nIHdlIHdpbGwgbmVlZCB0byB1cGRhdGUgdGhpcyB0eXBlLlxyXG4gKi9cclxuZXhwb3J0IHR5cGUgVGV4dGJveFZhbGlkYXRvclBhcmFtZXRlcnMgPSB7XHJcbiAgICByZXF1aXJlZD86IGJvb2xlYW47XHJcbiAgICBtaW5MZW5ndGg/OiBudW1iZXI7XHJcbiAgICBtYXhMZW5ndGg/OiBudW1iZXI7XHJcbiAgICB1bmlxdWU/OiBib29sZWFuO1xyXG4gICAgdmFsaWQ/OiBib29sZWFuO1xyXG4gICAgcGF0dGVybj86IFJlZ0V4cDtcclxufTtcclxuXHJcbi8qKiBBZHZhbmNlZCB2YWxpZGF0aW9uIGZvciB0ZXh0Ym94IGZvcm0gY29udHJvbHMgKi9cclxuZXhwb3J0IGNvbnN0IHRleHRib3hWYWxpZGF0aW9uID0gKHZhbGlkYXRvclBhcmFtczogVGV4dGJveFZhbGlkYXRvclBhcmFtZXRlcnMpOiBWYWxpZGF0b3JGbiA9PiB7XHJcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xyXG4gICAgICAgIGxldCB2YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdID0gW107XHJcbiBcclxuICAgICAgICAvLyBJbm5vY2VudCB1bnRpbCBwcm92ZW4gZ3VpbHR5XHJcbiAgICAgICAgdmFsaWRhdG9yUGFyYW1zLnZhbGlkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgaWYgKHZhbGlkYXRvclBhcmFtcy5yZXF1aXJlZCkge1xyXG4gICAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodmFsaWRhdG9yUGFyYW1zLm1pbkxlbmd0aCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1pbkxlbmd0aCh2YWxpZGF0b3JQYXJhbXMubWluTGVuZ3RoKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodmFsaWRhdG9yUGFyYW1zLm1heExlbmd0aCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1heExlbmd0aCh2YWxpZGF0b3JQYXJhbXMubWF4TGVuZ3RoKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodmFsaWRhdG9yUGFyYW1zLnBhdHRlcm4gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5wYXR0ZXJuKHZhbGlkYXRvclBhcmFtcy5wYXR0ZXJuKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB2YWxpZGF0b3JzLmZvckVhY2godmFsaWRhdG9yID0+IHtcclxuICAgICAgICAgICAgbGV0IHZhbGlkYXRpb25SZXN1bHQ6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0gdmFsaWRhdG9yKGNvbnRyb2wpO1xyXG4gICAgICAgICAgICBpZiAodmFsaWRhdGlvblJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yUGFyYW1zLnZhbGlkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKHZhbGlkYXRvclBhcmFtcy52YWxpZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgdGV4dGJveDogdmFsaWRhdG9yUGFyYW1zXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHBob25lTnVtYmVyVmFsaWRhdGlvblBhdHRlcm46IHN0cmluZyA9ICdeXFxcXHMqKD86XFxcXCs/KFxcXFxkezEsM30pKT9bLS4gKF0qKFxcXFxkezN9KVstLiApXSooXFxcXGR7M30pWy0uIF0qKFxcXFxkezR9KSg/OiAqeChcXFxcZCspKT9cXFxccyokJztcclxuZXhwb3J0IGNvbnN0IHVybFZhbGlkYXRpb25QYXR0ZXJuOiBzdHJpbmcgPSAnKFtBLVphLXpdKSsoOlxcL1xcLykrW15cXFxcc10qJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdlYy10ZXh0Ym94JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi90ZXh0Ym94LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3RleHRib3guY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIFRleHRib3hDb21wb25lbnQgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2UgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XHJcbiAgICAvKipcclxuICAgICAqIFNldCB0aGUgdmFsdWUgb2YgdGhlIGlucHV0J3MgYXV0b2NvbXBsZXRlIGF0dHJpYnV0ZVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgYXV0b2NvbXBsZXRlPzogc3RyaW5nID0gJ29mZic7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgdGV4dGJveCB0eXBlXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHB1YmxpYyB0eXBlPzogVGV4dGJveFR5cGUgPSBcInRleHRcIjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSB2YWx1ZSBvZiB0aGUgdGV4dGJveCBpbnB1dCdzIHBsYWNlaG9sZGVyXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBwbGFjZWhvbGRlcj86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIGFsbG93ZWQgaW4gdGhlIGlucHV0XHJcbiAgICAgKiBcclxuICAgICAqIFRoaXMgaXMgZm9yIGFkZGluZyB0aGUgYXR0cmlidXRlIG9uIHRoZSBlbGVtZW50IHRvIGdldCB0aGUgYnJvd3NlciBmdW5jdGlvbmFsaXR5XHJcbiAgICAgKiBmcm9tIHRoZSBpbnB1dC4gIElmIHlvdSBuZWVkIHRoZSBmb3JtIHRvIGJlIHZhbGlkYXRlZCBiZWZvcmUgc3VibWlzc2lvbiwgYXBwbHkgdGhlXHJcbiAgICAgKiBtYXhMZW5ndGggdmFsaWRhdG9yIHRvIHRoZSBmb3JtIGNvbnRyb2wuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBtYXhsZW5ndGg/OiBudW1iZXI7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgbWluaW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyBhbGxvd2VkIGluIHRoZSBpbnB1dFxyXG4gICAgICogXHJcbiAgICAgKiBUaGlzIGlzIGZvciBhZGRpbmcgdGhlIGF0dHJpYnV0ZSBvbiB0aGUgZWxlbWVudCB0byBnZXQgdGhlIGJyb3dzZXIgZnVuY3Rpb25hbGl0eVxyXG4gICAgICogZnJvbSB0aGUgaW5wdXQuICBJZiB5b3UgbmVlZCB0aGUgZm9ybSB0byBiZSB2YWxpZGF0ZWQgYmVmb3JlIHN1Ym1pc3Npb24sIGFwcGx5IHRoZVxyXG4gICAgICogbWluTGVuZ3RoIHZhbGlkYXRvciB0byB0aGUgZm9ybSBjb250cm9sLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgbWlubGVuZ3RoPzogbnVtYmVyO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIHZhbHVlIG9mIHRoZSByb3dzIGF0dHJpYnV0ZSBmb3IgYSB0ZXh0YXJlYS4gT25seSBhcHBsaWVzIHRvIG11bHRpLWxpbmUgdHlwZVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgcm93cz86IG51bWJlciA9IDM7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJZiBzZXQgdG8gdHJ1ZSwgd2Ugd2lsbCBzZWxlY3QgYWxsIHRleHQgd2l0aGluIHRoZSBpbnB1dCBpZlxyXG4gICAgICogYXV0b2ZvY3VzIGlzIGFsc28gc2V0IHRvIHRydWVcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgcHVibGljIHNlbGVjdE9uQXV0b2ZvY3VzPzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSWYgc2V0IHRvIHRydWUsIHdlIHdpbGwgdXBwZXIgY2FzZSBvbiBmb2N1cyBvdXRcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgcHVibGljIHVwcGVyQ2FzZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhdGlvbiBwYXR0ZXJuIGZvciB0aGUgaW5wdXQuIFRoaXMgaXMgZGV0ZXJtaW5lZCBvbiB0aGUgaW5wdXQgdHlwZSBzcGVjaWZpZWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIHZhbGlkYXRpb25QYXR0ZXJuOiBzdHJpbmcgID0gJyc7XHJcblxyXG4gICAgQFZpZXdDaGlsZCgndGV4dGJveElucHV0JykgcHJvdGVjdGVkIGlucHV0RWxlbWVudCE6IEVsZW1lbnRSZWY7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJvdGVjdGVkIHZhbGlkYXRpb25NZXNzYWdlU2VydmljZTogVmFsaWRhdGlvbk1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAgICAgIHByb3RlY3RlZCBmb3JtR3JvdXBIZWxwZXI6IEZvcm1Hcm91cEhlbHBlcixcclxuICAgICAgICBwcm90ZWN0ZWQgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcih2YWxpZGF0aW9uTWVzc2FnZVNlcnZpY2UsIGZvcm1Hcm91cEhlbHBlcik7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgICAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcclxuICAgIH1cclxuICAgIC8qKlxyXG5cdCAqIFRoZSBhbmd1bGFyIG9uSW5pdCBsaWZlY3ljbGUgaG9va1xyXG5cdCAqL1xyXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcblxyXG4gICAgICAgIHRoaXMudmFsaWRhdGlvblBhdHRlcm4gPSAnJztcclxuXHJcbiAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ3RlbCcpIHtcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9uUGF0dGVybiA9IHBob25lTnVtYmVyVmFsaWRhdGlvblBhdHRlcm47XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICd1cmwnKSB7XHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvblBhdHRlcm4gPSB1cmxWYWxpZGF0aW9uUGF0dGVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKHRoaXMucGxhY2Vob2xkZXIpIHtcclxuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUuZ2V0KHRoaXMucGxhY2Vob2xkZXIpXHJcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCh0cmFuc2xhdGVkOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gdHJhbnNsYXRlZDtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG5cdCAqIFRoZSBhbmd1bGFyIGFmdGVyVmlld0luaXQgbGlmZWN5Y2xlIGhvb2tcclxuXHQgKi9cclxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuYXV0b2ZvY3VzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0Rm9jdXModGhpcy5zZWxlY3RPbkF1dG9mb2N1cyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRnVuY3Rpb24gdG8gc2V0IGZvY3VzIG9uIGFuIGlucHV0IHByb2dyYW1tYXRpY2FsbHkgYWZ0ZXIgdGhlIHBhZ2VcclxuICAgICAqIGhhZCBiZWVuIHJlbmRlcmVkLiAgVGhlIGhpZ2hsaWdodCB0ZXh0IGZsYWcgd2lsbCBzZWxlY3QgdGhlIHRleHQgXHJcbiAgICAgKiB3aXRoaW4gdGhlIGlucHV0IGlmIHBhc3NlZCBpbiBhbmQgdHJ1ZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0Rm9jdXMoaGlnaGxpZ2h0VGV4dD86IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcblxyXG4gICAgICAgIGlmIChoaWdobGlnaHRUZXh0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICogRm9jdXMgb3V0IGV2ZW50IGhhbmRsZXJcclxuICAqIHdpbGwgdXBwZXIgY2FzZSBhbmQgdHJpbSB2YWx1ZSBpZiB1cHBlckNhc2UgaXMgdHJ1ZSAodGhpcyBpcyB3aGF0IHdlIGRvIG9uIHRoZSBhcGlzKVxyXG4gICovXHJcbiAgICBwdWJsaWMgZm9jdXNPdXRFdmVudCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy51cHBlckNhc2UgJiYgdGhpcy5mb3JtTW9kZWwudmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtTW9kZWwuc2V0VmFsdWUodGhpcy5mb3JtTW9kZWwudmFsdWUudG9VcHBlckNhc2UoKS50cmltKCkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSIsIjxkaXYgY2xhc3M9XCJjb250cm9sIGNvbnRyb2wtbGFiZWwte3tsYWJlbFBvc2l0aW9ufX1cIlxyXG4gICAgIFtuZ0NsYXNzXT1cInsnaXMtcmVhZG9ubHknOiByZWFkb25seX1cIj5cclxuICAgIDxsYWJlbCAqbmdJZj1cImxhYmVsXCIgbmdQcmVzZXJ2ZVdoaXRlc3BhY2VzPlxyXG5cclxuICAgICAgICA8c3Bhbj57e2xhYmVsIHwgdHJhbnNsYXRlfX08L3NwYW4+XHJcblxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwidmFsaWRhdGlvbkVycm9ycy5sZW5ndGggPiAwICYmIGZvcm1Nb2RlbC50b3VjaGVkICYmIGZvcm1Nb2RlbC5pbnZhbGlkXCI+e3t2YWxpZGF0aW9uRXJyb3JzIHwgdHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgICA8L2xhYmVsPlxyXG4gICAgPGRpdiBjbGFzcz1cImlucHV0LXdyYXBwZXIgY29udHJvbC1pbnB1dFwiPlxyXG4gICAgICAgIDxpbnB1dCAqbmdJZj1cInR5cGUgIT09ICdtdWx0aV9saW5lJ1wiXHJcbiAgICAgICAgICAgICAgICN0ZXh0Ym94SW5wdXRcclxuICAgICAgICAgICAgICAgZW1haWw9XCJ7e3R5cGUgPT09ICdlbWFpbCcgPyB0cnVlIDogZmFsc2V9fVwiXHJcbiAgICAgICAgICAgICAgIHBhdHRlcm49XCJ7e3ZhbGlkYXRpb25QYXR0ZXJufX1cIlxyXG4gICAgICAgICAgICAgICB0eXBlPVwie3t0eXBlfX1cIlxyXG4gICAgICAgICAgICAgICB0YWJpbmRleD1cInt7dGFiaW5kZXh9fVwiXHJcbiAgICAgICAgICAgICAgIHRpdGxlPVwie3t0b29sdGlwfX1cIlxyXG4gICAgICAgICAgICAgICBbYXR0ci5pZF09XCJpbnB1dElkXCJcclxuICAgICAgICAgICAgICAgW2F0dHIuYXV0b2NvbXBsZXRlXT1cImF1dG9jb21wbGV0ZVwiXHJcbiAgICAgICAgICAgICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgICAgICAgW2F0dHIubWF4bGVuZ3RoXT1cIm1heGxlbmd0aFwiXHJcbiAgICAgICAgICAgICAgIFthdHRyLm1pbmxlbmd0aF09XCJtaW5sZW5ndGhcIlxyXG4gICAgICAgICAgICAgICBbYXR0ci5yZXF1aXJlZF09XCJyZXF1aXJlZCA/IHJlcXVpcmVkIDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtTW9kZWxcIlxyXG4gICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2lzLWVtcHR5JzogIWZvcm1Nb2RlbD8udmFsdWUsICdpcy1wZW5kaW5nJzogcGVuZGluZywgJ2lzLXVwcGVyY2FzZSc6IHVwcGVyQ2FzZX1cIlxyXG4gICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwiZm9jdXNPdXRFdmVudCgpXCJcclxuICAgICAgICAgICAgICAgW2F0dHIuY2RrRm9jdXNJbml0aWFsXT1cImF1dG9mb2N1cyB8fCBudWxsXCI+XHJcblxyXG4gICAgICAgIDx0ZXh0YXJlYSAqbmdJZj1cInR5cGUgPT09ICdtdWx0aV9saW5lJ1wiXHJcbiAgICAgICAgICAgICAgICAgIFthdHRyLnJvd3NdPVwicm93c1wiXHJcbiAgICAgICAgICAgICAgICAgICN0ZXh0Ym94SW5wdXRcclxuICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCJ7e3RhYmluZGV4fX1cIlxyXG4gICAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCJpbnB1dElkXCJcclxuICAgICAgICAgICAgICAgICAgW2F0dHIucGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgICBbYXR0ci5tYXhsZW5ndGhdPVwibWF4bGVuZ3RoXCJcclxuICAgICAgICAgICAgICAgICAgW2F0dHIubWlubGVuZ3RoXT1cIm1pbmxlbmd0aFwiXHJcbiAgICAgICAgICAgICAgICAgIFthdHRyLnJlcXVpcmVkXT1cInJlcXVpcmVkID8gcmVxdWlyZWQgOiBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Nb2RlbFwiXHJcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnaXMtZW1wdHknOiBmb3JtTW9kZWw/LnZhbHVlID09PSAnJywgJ2lzLXBlbmRpbmcnOiBwZW5kaW5nfVwiXHJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmNka0ZvY3VzSW5pdGlhbF09XCJhdXRvZm9jdXMgfHwgbnVsbFwiPlxyXG4gICAgICAgIDwvdGV4dGFyZWE+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
@@ -94,11 +94,12 @@ export class CacheService {
94
94
  }
95
95
  }
96
96
  }
97
- CacheService.ɵprov = i0.ɵɵdefineInjectable({ factory: function CacheService_Factory() { return new CacheService(); }, token: CacheService, providedIn: "root" });
98
- CacheService.decorators = [
99
- { type: Injectable, args: [{
100
- providedIn: 'root'
101
- },] }
102
- ];
103
- CacheService.ctorParameters = () => [];
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9jb3JlL2NhY2hlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLM0MsTUFBTSxPQUFPLFlBQVk7SUFLckI7UUFIUSwwQkFBcUIsR0FBWSxLQUFLLENBQUM7UUFDdkMsNEJBQXVCLEdBQVksS0FBSyxDQUFDO1FBRzdDLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJO1lBQ0EsSUFBSSxPQUFPLEdBQUcsaUJBQWlCLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN2RCxNQUFNLEtBQUssR0FBRyxNQUFNLEdBQUcsT0FBTyxDQUFDO1lBRS9CLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3JDLGNBQWMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRXZDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssQ0FBQztZQUNwRSxJQUFJLENBQUMsdUJBQXVCLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLENBQUM7WUFFeEUsWUFBWSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNqQyxjQUFjLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBRXRDO1FBQUMsT0FBTSxLQUFLLEVBQUU7WUFDWCxVQUFVLEdBQUcsS0FBSyxDQUFDO1NBQ3RCO2dCQUFTO1lBQ04sSUFBRyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsRUFBQztnQkFDNUQsT0FBTyxDQUFDLElBQUksQ0FBQyx1RkFBdUYsRUFDaEc7b0JBQ0ksS0FBSyxFQUFFLElBQUksQ0FBQyxxQkFBcUI7b0JBQ2pDLE9BQU8sRUFBRSxJQUFJLENBQUMsdUJBQXVCO29CQUNyQyxLQUFLLEVBQUUsVUFBVTtpQkFDcEIsQ0FDSixDQUFDO2FBQ0w7U0FDSjtJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNJLGdCQUFnQixDQUFDLFdBQVcsR0FBRyxLQUFLO1FBQ3ZDLE9BQU8sV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztJQUNuRixDQUFDO0lBRUQ7O09BRUc7SUFDSSxPQUFPLENBQUksR0FBVyxFQUFFLFdBQVcsR0FBRyxLQUFLO1FBQzlDLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDM0MsSUFBSSxPQUFPLEVBQUU7WUFDVCxJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2xDLElBQUksTUFBTSxFQUFFO2dCQUNSLE9BQVUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUNoQztTQUNKO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLO1FBQzNCLElBQUksTUFBTSxHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7UUFDakMsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUUzQyxJQUFJLE9BQU8sRUFBRTtZQUNULEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUU7Z0JBQ2hELE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUUsQ0FBQyxDQUFDO2FBQ2hDO1NBQ0o7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRUQ7O09BRUc7SUFDSSxVQUFVLENBQUMsR0FBVyxFQUFFLFdBQVcsR0FBRyxLQUFLO1FBQzlDLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFM0MsSUFBSSxPQUFPLEVBQUU7WUFDVCxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzNCO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ksT0FBTyxDQUFDLEdBQVcsRUFBRSxLQUFhLEVBQUUsV0FBVyxHQUFHLEtBQUs7UUFDMUQsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzQyxJQUFJLE9BQU8sRUFBRTtZQUNULE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztTQUMvQztJQUNMLENBQUM7SUFFRDs7O01BR0U7SUFDTSxVQUFVLENBQUMsV0FBb0I7UUFDbkMsSUFBRyxXQUFXLElBQUksSUFBSSxDQUFDLHVCQUF1QixFQUFDO1lBQzNDLE9BQU8sTUFBTSxDQUFDLGNBQWMsQ0FBQztTQUNoQzthQUFNLElBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFDO1lBQ2pDLE9BQU8sTUFBTSxDQUFDLFlBQVksQ0FBQztTQUM5QjthQUFNO1lBQ0gsT0FBTyxJQUFJLENBQUM7U0FDZjtJQUNMLENBQUM7Ozs7WUEzR0osVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2FjaGVTZXJ2aWNlIHtcclxuXHJcbiAgICBwcml2YXRlIGxvY2FsU3RvcmFnZUF2YWlsYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHJpdmF0ZSBzZXNzaW9uU3RvcmFnZUF2YWlsYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIGxldCBjYWNoZUVycm9yID0gbnVsbDtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBsZXQgZGF0ZVN0ciA9ICdyb3VuZHRyaXAtdGVzdC0nICsgbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gJ3ZhbC0nICsgZGF0ZVN0cjtcclxuXHJcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGRhdGVTdHIsIHZhbHVlKTtcclxuICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShkYXRlU3RyLCB2YWx1ZSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZUF2YWlsYWJsZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGRhdGVTdHIpID09IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnNlc3Npb25TdG9yYWdlQXZhaWxhYmxlID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShkYXRlU3RyKSA9PSB2YWx1ZTtcclxuXHJcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGRhdGVTdHIpO1xyXG4gICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKGRhdGVTdHIpO1xyXG5cclxuICAgICAgICB9IGNhdGNoKGVycm9yKSB7XHJcbiAgICAgICAgICAgIGNhY2hlRXJyb3IgPSBlcnJvcjtcclxuICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICBpZighdGhpcy5sb2NhbFN0b3JhZ2VBdmFpbGFibGUgfHwgIXRoaXMuc2Vzc2lvblN0b3JhZ2VBdmFpbGFibGUpe1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdzdG9yYWdlIHVuYXZhaWxhYmxlIGZvciBjYWNoaW5nIHB1cnBvc2VzLiBTb21lIGZlYXR1cmVzIHdpbGwgbm90IGJlIGZ1bGx5IHN1cHBvcnRlZC4gJyxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsOiB0aGlzLmxvY2FsU3RvcmFnZUF2YWlsYWJsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbjogdGhpcy5zZXNzaW9uU3RvcmFnZUF2YWlsYWJsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGNhY2hlRXJyb3JcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlJldHVybiB0cnVlIGlmIHRoZSByZXF1ZXN0ZWQgY2FjaGUgYWxsb3dzIHRoZSB1c2VyIHRvIHJvdW5kLXRyaXAgZGF0YSBpbiB0aGUgY3VycmVudCBlbnZpcm9ubWVudC5cclxuICAgICAqIFNlY3VyaXR5IHNldHRpbmdzIGNhbiBwcmV2ZW50IGl0IGFuZCB0aGUgYXBwIG1heSBuZWVkIHRvIGtub3cgaWYgXCJub3QgZm91bmRcIiBtZWFucyBcIm5ldmVyIHNldFwiIG9yIFwibm90IHN1cHBvcnRlZFwiXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBpc0NhY2hlQXZhaWxhYmxlKHNlc3Npb25Pbmx5ID0gZmFsc2UpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gc2Vzc2lvbk9ubHkgPyB0aGlzLnNlc3Npb25TdG9yYWdlQXZhaWxhYmxlIDogdGhpcy5sb2NhbFN0b3JhZ2VBdmFpbGFibGU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXRyaWV2ZSBhbiBpdGVtIGZyb20gY2FjaGVcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldEl0ZW08VD4oa2V5OiBzdHJpbmcsIHNlc3Npb25Pbmx5ID0gZmFsc2UpOiBUIHwgbnVsbCB7XHJcbiAgICAgICAgbGV0IHN0b3JhZ2UgPSB0aGlzLmdldFN0b3JhZ2Uoc2Vzc2lvbk9ubHkpO1xyXG4gICAgICAgIGlmIChzdG9yYWdlKSB7XHJcbiAgICAgICAgICAgIGxldCByZXN1bHQgPSBzdG9yYWdlLmdldEl0ZW0oa2V5KTtcclxuICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDxUPkpTT04ucGFyc2UocmVzdWx0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHJpZXZlcyBhbGwga2V5cyBmcm9tIGNhY2hlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBrZXlzKHNlc3Npb25Pbmx5ID0gZmFsc2UpOiBBcnJheTxzdHJpbmc+IHtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IEFycmF5PHN0cmluZz4oKTtcclxuICAgICAgICBsZXQgc3RvcmFnZSA9IHRoaXMuZ2V0U3RvcmFnZShzZXNzaW9uT25seSk7XHJcblxyXG4gICAgICAgIGlmIChzdG9yYWdlKSB7XHJcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBzdG9yYWdlLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XHJcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChzdG9yYWdlLmtleShpKSEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZW1vdmVzIGFuIGl0ZW0gZnJvbSB0aGUgY2FjaGVcclxuICAgICAqL1xyXG4gICAgcHVibGljIHJlbW92ZUl0ZW0oa2V5OiBzdHJpbmcsIHNlc3Npb25Pbmx5ID0gZmFsc2UpIHtcclxuICAgICAgICBsZXQgc3RvcmFnZSA9IHRoaXMuZ2V0U3RvcmFnZShzZXNzaW9uT25seSk7XHJcblxyXG4gICAgICAgIGlmIChzdG9yYWdlKSB7XHJcbiAgICAgICAgICAgIHN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFBlcnNpc3RzIGFuIGl0ZW0gdG8gY2FjaGVcclxuICAgICAqL1xyXG4gICAgcHVibGljIHNldEl0ZW0oa2V5OiBzdHJpbmcsIHZhbHVlOiBvYmplY3QsIHNlc3Npb25Pbmx5ID0gZmFsc2UpIHtcclxuICAgICAgICBsZXQgc3RvcmFnZSA9IHRoaXMuZ2V0U3RvcmFnZShzZXNzaW9uT25seSk7XHJcbiAgICAgICAgaWYgKHN0b3JhZ2UpIHtcclxuICAgICAgICAgICAgc3RvcmFnZS5zZXRJdGVtKGtleSwgSlNPTi5zdHJpbmdpZnkodmFsdWUpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqUmV0dXJucyB0aGUgbG9jYWwgb3Igc2Vzc2lvbiBzdG9yYWdlIHRvIHVzZSBmb3IgYmFja2luZyB0aGUgZ2l2ZW4gY2FjaGUgcmVxdWVzdC5cclxuICAgICAqIElmIHRoZSBicm93c2VyIGRvZXMgbm90IHN1cHBvcnQgdGhlIHJlcXVlc3RlZCBzdG9yYWdlIHRoZSByZXN1bHQgd2lsbCBiZSBudWxsLlxyXG4gICAgICogVGhpcyBjYW4gaGFwcGVuIGlmIHRoZSB1c2VyIGlzIGluIEZpcmVmb3ggZm9yIGV4YW1wbGUgd2l0aCB0aGUgc2V0dGluZyBkb20uc3RvcmFnZS5lbmFibGVkID0gZmFsc2VcclxuICAgICovXHJcbiAgICBwcml2YXRlIGdldFN0b3JhZ2Uoc2Vzc2lvbk9ubHk6IGJvb2xlYW4pIDogU3RvcmFnZSB8IG51bGwge1xyXG4gICAgICAgIGlmKHNlc3Npb25Pbmx5ICYmIHRoaXMuc2Vzc2lvblN0b3JhZ2VBdmFpbGFibGUpe1xyXG4gICAgICAgICAgICByZXR1cm4gd2luZG93LnNlc3Npb25TdG9yYWdlO1xyXG4gICAgICAgIH0gZWxzZSBpZih0aGlzLmxvY2FsU3RvcmFnZUF2YWlsYWJsZSl7XHJcbiAgICAgICAgICAgIHJldHVybiB3aW5kb3cubG9jYWxTdG9yYWdlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvL1RPRE86IGFkZCB1c2VyIGluZm8gdG8gaXNvbGF0ZSBjYWNoZSB2YWx1ZXMgZnJvbSBlYWNoIG90aGVyXHJcbn0iXX0=
97
+ CacheService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: CacheService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
98
+ CacheService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: CacheService, providedIn: 'root' });
99
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: CacheService, decorators: [{
100
+ type: Injectable,
101
+ args: [{
102
+ providedIn: 'root'
103
+ }]
104
+ }], ctorParameters: function () { return []; } });
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9jb3JlL2NhY2hlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLM0MsTUFBTSxPQUFPLFlBQVk7SUFLckI7UUFIUSwwQkFBcUIsR0FBWSxLQUFLLENBQUM7UUFDdkMsNEJBQXVCLEdBQVksS0FBSyxDQUFDO1FBRzdDLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJO1lBQ0EsSUFBSSxPQUFPLEdBQUcsaUJBQWlCLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN2RCxNQUFNLEtBQUssR0FBRyxNQUFNLEdBQUcsT0FBTyxDQUFDO1lBRS9CLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3JDLGNBQWMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRXZDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssQ0FBQztZQUNwRSxJQUFJLENBQUMsdUJBQXVCLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLENBQUM7WUFFeEUsWUFBWSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNqQyxjQUFjLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBRXRDO1FBQUMsT0FBTSxLQUFLLEVBQUU7WUFDWCxVQUFVLEdBQUcsS0FBSyxDQUFDO1NBQ3RCO2dCQUFTO1lBQ04sSUFBRyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsRUFBQztnQkFDNUQsT0FBTyxDQUFDLElBQUksQ0FBQyx1RkFBdUYsRUFDaEc7b0JBQ0ksS0FBSyxFQUFFLElBQUksQ0FBQyxxQkFBcUI7b0JBQ2pDLE9BQU8sRUFBRSxJQUFJLENBQUMsdUJBQXVCO29CQUNyQyxLQUFLLEVBQUUsVUFBVTtpQkFDcEIsQ0FDSixDQUFDO2FBQ0w7U0FDSjtJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNJLGdCQUFnQixDQUFDLFdBQVcsR0FBRyxLQUFLO1FBQ3ZDLE9BQU8sV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztJQUNuRixDQUFDO0lBRUQ7O09BRUc7SUFDSSxPQUFPLENBQUksR0FBVyxFQUFFLFdBQVcsR0FBRyxLQUFLO1FBQzlDLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDM0MsSUFBSSxPQUFPLEVBQUU7WUFDVCxJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2xDLElBQUksTUFBTSxFQUFFO2dCQUNSLE9BQVUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUNoQztTQUNKO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLO1FBQzNCLElBQUksTUFBTSxHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7UUFDakMsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUUzQyxJQUFJLE9BQU8sRUFBRTtZQUNULEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUU7Z0JBQ2hELE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUUsQ0FBQyxDQUFDO2FBQ2hDO1NBQ0o7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRUQ7O09BRUc7SUFDSSxVQUFVLENBQUMsR0FBVyxFQUFFLFdBQVcsR0FBRyxLQUFLO1FBQzlDLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFM0MsSUFBSSxPQUFPLEVBQUU7WUFDVCxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzNCO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ksT0FBTyxDQUFDLEdBQVcsRUFBRSxLQUFhLEVBQUUsV0FBVyxHQUFHLEtBQUs7UUFDMUQsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzQyxJQUFJLE9BQU8sRUFBRTtZQUNULE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztTQUMvQztJQUNMLENBQUM7SUFFRDs7O01BR0U7SUFDTSxVQUFVLENBQUMsV0FBb0I7UUFDbkMsSUFBRyxXQUFXLElBQUksSUFBSSxDQUFDLHVCQUF1QixFQUFDO1lBQzNDLE9BQU8sTUFBTSxDQUFDLGNBQWMsQ0FBQztTQUNoQzthQUFNLElBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFDO1lBQ2pDLE9BQU8sTUFBTSxDQUFDLFlBQVksQ0FBQztTQUM5QjthQUFNO1lBQ0gsT0FBTyxJQUFJLENBQUM7U0FDZjtJQUNMLENBQUM7O3lHQXhHUSxZQUFZOzZHQUFaLFlBQVksY0FGWCxNQUFNOzJGQUVQLFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2FjaGVTZXJ2aWNlIHtcclxuXHJcbiAgICBwcml2YXRlIGxvY2FsU3RvcmFnZUF2YWlsYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHJpdmF0ZSBzZXNzaW9uU3RvcmFnZUF2YWlsYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIGxldCBjYWNoZUVycm9yID0gbnVsbDtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBsZXQgZGF0ZVN0ciA9ICdyb3VuZHRyaXAtdGVzdC0nICsgbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gJ3ZhbC0nICsgZGF0ZVN0cjtcclxuXHJcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGRhdGVTdHIsIHZhbHVlKTtcclxuICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShkYXRlU3RyLCB2YWx1ZSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZUF2YWlsYWJsZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGRhdGVTdHIpID09IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnNlc3Npb25TdG9yYWdlQXZhaWxhYmxlID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShkYXRlU3RyKSA9PSB2YWx1ZTtcclxuXHJcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGRhdGVTdHIpO1xyXG4gICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKGRhdGVTdHIpO1xyXG5cclxuICAgICAgICB9IGNhdGNoKGVycm9yKSB7XHJcbiAgICAgICAgICAgIGNhY2hlRXJyb3IgPSBlcnJvcjtcclxuICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICBpZighdGhpcy5sb2NhbFN0b3JhZ2VBdmFpbGFibGUgfHwgIXRoaXMuc2Vzc2lvblN0b3JhZ2VBdmFpbGFibGUpe1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdzdG9yYWdlIHVuYXZhaWxhYmxlIGZvciBjYWNoaW5nIHB1cnBvc2VzLiBTb21lIGZlYXR1cmVzIHdpbGwgbm90IGJlIGZ1bGx5IHN1cHBvcnRlZC4gJyxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsOiB0aGlzLmxvY2FsU3RvcmFnZUF2YWlsYWJsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbjogdGhpcy5zZXNzaW9uU3RvcmFnZUF2YWlsYWJsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGNhY2hlRXJyb3JcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlJldHVybiB0cnVlIGlmIHRoZSByZXF1ZXN0ZWQgY2FjaGUgYWxsb3dzIHRoZSB1c2VyIHRvIHJvdW5kLXRyaXAgZGF0YSBpbiB0aGUgY3VycmVudCBlbnZpcm9ubWVudC5cclxuICAgICAqIFNlY3VyaXR5IHNldHRpbmdzIGNhbiBwcmV2ZW50IGl0IGFuZCB0aGUgYXBwIG1heSBuZWVkIHRvIGtub3cgaWYgXCJub3QgZm91bmRcIiBtZWFucyBcIm5ldmVyIHNldFwiIG9yIFwibm90IHN1cHBvcnRlZFwiXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBpc0NhY2hlQXZhaWxhYmxlKHNlc3Npb25Pbmx5ID0gZmFsc2UpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gc2Vzc2lvbk9ubHkgPyB0aGlzLnNlc3Npb25TdG9yYWdlQXZhaWxhYmxlIDogdGhpcy5sb2NhbFN0b3JhZ2VBdmFpbGFibGU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXRyaWV2ZSBhbiBpdGVtIGZyb20gY2FjaGVcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldEl0ZW08VD4oa2V5OiBzdHJpbmcsIHNlc3Npb25Pbmx5ID0gZmFsc2UpOiBUIHwgbnVsbCB7XHJcbiAgICAgICAgbGV0IHN0b3JhZ2UgPSB0aGlzLmdldFN0b3JhZ2Uoc2Vzc2lvbk9ubHkpO1xyXG4gICAgICAgIGlmIChzdG9yYWdlKSB7XHJcbiAgICAgICAgICAgIGxldCByZXN1bHQgPSBzdG9yYWdlLmdldEl0ZW0oa2V5KTtcclxuICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDxUPkpTT04ucGFyc2UocmVzdWx0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHJpZXZlcyBhbGwga2V5cyBmcm9tIGNhY2hlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBrZXlzKHNlc3Npb25Pbmx5ID0gZmFsc2UpOiBBcnJheTxzdHJpbmc+IHtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IEFycmF5PHN0cmluZz4oKTtcclxuICAgICAgICBsZXQgc3RvcmFnZSA9IHRoaXMuZ2V0U3RvcmFnZShzZXNzaW9uT25seSk7XHJcblxyXG4gICAgICAgIGlmIChzdG9yYWdlKSB7XHJcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBzdG9yYWdlLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XHJcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChzdG9yYWdlLmtleShpKSEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZW1vdmVzIGFuIGl0ZW0gZnJvbSB0aGUgY2FjaGVcclxuICAgICAqL1xyXG4gICAgcHVibGljIHJlbW92ZUl0ZW0oa2V5OiBzdHJpbmcsIHNlc3Npb25Pbmx5ID0gZmFsc2UpIHtcclxuICAgICAgICBsZXQgc3RvcmFnZSA9IHRoaXMuZ2V0U3RvcmFnZShzZXNzaW9uT25seSk7XHJcblxyXG4gICAgICAgIGlmIChzdG9yYWdlKSB7XHJcbiAgICAgICAgICAgIHN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFBlcnNpc3RzIGFuIGl0ZW0gdG8gY2FjaGVcclxuICAgICAqL1xyXG4gICAgcHVibGljIHNldEl0ZW0oa2V5OiBzdHJpbmcsIHZhbHVlOiBvYmplY3QsIHNlc3Npb25Pbmx5ID0gZmFsc2UpIHtcclxuICAgICAgICBsZXQgc3RvcmFnZSA9IHRoaXMuZ2V0U3RvcmFnZShzZXNzaW9uT25seSk7XHJcbiAgICAgICAgaWYgKHN0b3JhZ2UpIHtcclxuICAgICAgICAgICAgc3RvcmFnZS5zZXRJdGVtKGtleSwgSlNPTi5zdHJpbmdpZnkodmFsdWUpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqUmV0dXJucyB0aGUgbG9jYWwgb3Igc2Vzc2lvbiBzdG9yYWdlIHRvIHVzZSBmb3IgYmFja2luZyB0aGUgZ2l2ZW4gY2FjaGUgcmVxdWVzdC5cclxuICAgICAqIElmIHRoZSBicm93c2VyIGRvZXMgbm90IHN1cHBvcnQgdGhlIHJlcXVlc3RlZCBzdG9yYWdlIHRoZSByZXN1bHQgd2lsbCBiZSBudWxsLlxyXG4gICAgICogVGhpcyBjYW4gaGFwcGVuIGlmIHRoZSB1c2VyIGlzIGluIEZpcmVmb3ggZm9yIGV4YW1wbGUgd2l0aCB0aGUgc2V0dGluZyBkb20uc3RvcmFnZS5lbmFibGVkID0gZmFsc2VcclxuICAgICovXHJcbiAgICBwcml2YXRlIGdldFN0b3JhZ2Uoc2Vzc2lvbk9ubHk6IGJvb2xlYW4pIDogU3RvcmFnZSB8IG51bGwge1xyXG4gICAgICAgIGlmKHNlc3Npb25Pbmx5ICYmIHRoaXMuc2Vzc2lvblN0b3JhZ2VBdmFpbGFibGUpe1xyXG4gICAgICAgICAgICByZXR1cm4gd2luZG93LnNlc3Npb25TdG9yYWdlO1xyXG4gICAgICAgIH0gZWxzZSBpZih0aGlzLmxvY2FsU3RvcmFnZUF2YWlsYWJsZSl7XHJcbiAgICAgICAgICAgIHJldHVybiB3aW5kb3cubG9jYWxTdG9yYWdlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvL1RPRE86IGFkZCB1c2VyIGluZm8gdG8gaXNvbGF0ZSBjYWNoZSB2YWx1ZXMgZnJvbSBlYWNoIG90aGVyXHJcbn0iXX0=
@@ -0,0 +1,57 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export function isApiError(errorResponse) {
4
+ // errorResponse is typed HttpErrorResponse if the api returns an error
5
+ if (errorResponse.error && errorResponse.error.hasOwnProperty('status') && errorResponse.error.status.hasOwnProperty('message')) {
6
+ return true;
7
+ }
8
+ return false;
9
+ }
10
+ export class ErrorService {
11
+ constructor() { }
12
+ /**
13
+ * Parse an error that comes from the API for use inside the forms
14
+ * In most cases this isn't required because the error handler will do it automatically,
15
+ * but if you need to analyze the error message you can use this to extract it safely.
16
+ * NOTE: Because it can be used for comparison the result is not translated. You must translate
17
+ * it before providing it to the user.
18
+ * @param error The error object from the API
19
+ */
20
+ parseApiError(errorResponse, unknownErrorDefault) {
21
+ if (typeof errorResponse === 'string') {
22
+ return errorResponse;
23
+ }
24
+ // errorResponse is typed HttpErrorResponse if the api returns an error
25
+ let apiErrorMessage = unknownErrorDefault || 'DefaultUnknownError_SC';
26
+ if (errorResponse && isApiError(errorResponse)) {
27
+ try {
28
+ apiErrorMessage = errorResponse.error.status.message;
29
+ }
30
+ catch (error) {
31
+ //log the real error to the console (for developers) but just return the generic error to the user
32
+ this.logConsoleError(error);
33
+ }
34
+ }
35
+ else {
36
+ this.logConsoleError(errorResponse);
37
+ }
38
+ return apiErrorMessage;
39
+ }
40
+ /**
41
+ * Just a safe wrapper around console.error in case the browser doesn't have one exposed
42
+ */
43
+ logConsoleError(error) {
44
+ if (console && typeof (console.error) === 'function') {
45
+ console.error('unknown error:', error);
46
+ }
47
+ }
48
+ }
49
+ ErrorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ErrorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
50
+ ErrorService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ErrorService, providedIn: 'root' });
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ErrorService, decorators: [{
52
+ type: Injectable,
53
+ args: [{
54
+ providedIn: 'root'
55
+ }]
56
+ }], ctorParameters: function () { return []; } });
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9jb3JlL2Vycm9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHM0MsTUFBTSxVQUFVLFVBQVUsQ0FBQyxhQUFrQjtJQUMzQyx1RUFBdUU7SUFDdkUsSUFBSSxhQUFhLENBQUMsS0FBSyxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsRUFBRTtRQUMvSCxPQUFPLElBQUksQ0FBQztLQUNiO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBS0QsTUFBTSxPQUFPLFlBQVk7SUFFdkIsZ0JBQWdCLENBQUM7SUFFakI7Ozs7Ozs7T0FPRztJQUNJLGFBQWEsQ0FBQyxhQUFrQixFQUFFLG1CQUE0QjtRQUNuRSxJQUFJLE9BQU8sYUFBYSxLQUFLLFFBQVEsRUFBRTtZQUNyQyxPQUFPLGFBQWEsQ0FBQztTQUN0QjtRQUVELHVFQUF1RTtRQUN2RSxJQUFJLGVBQWUsR0FBVyxtQkFBbUIsSUFBSSx3QkFBd0IsQ0FBQztRQUU5RSxJQUFJLGFBQWEsSUFBSSxVQUFVLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDOUMsSUFBSTtnQkFDRixlQUFlLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO2FBQ3REO1lBQUMsT0FBTyxLQUFLLEVBQUU7Z0JBQ2Qsa0dBQWtHO2dCQUNsRyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQzdCO1NBQ0Y7YUFBTTtZQUNMLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDckM7UUFFRCxPQUFPLGVBQWUsQ0FBQztJQUN6QixDQUFDO0lBRUQ7O09BRUc7SUFDSSxlQUFlLENBQUMsS0FBVTtRQUMvQixJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLFVBQVUsRUFBRTtZQUNwRCxPQUFPLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ3hDO0lBQ0gsQ0FBQzs7eUdBekNVLFlBQVk7NkdBQVosWUFBWSxjQUZYLE1BQU07MkZBRVAsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGlzQXBpRXJyb3IoZXJyb3JSZXNwb25zZTogYW55KTogYm9vbGVhbiB7XHJcbiAgLy8gZXJyb3JSZXNwb25zZSBpcyB0eXBlZCBIdHRwRXJyb3JSZXNwb25zZSBpZiB0aGUgYXBpIHJldHVybnMgYW4gZXJyb3JcclxuICBpZiAoZXJyb3JSZXNwb25zZS5lcnJvciAmJiBlcnJvclJlc3BvbnNlLmVycm9yLmhhc093blByb3BlcnR5KCdzdGF0dXMnKSAmJiBlcnJvclJlc3BvbnNlLmVycm9yLnN0YXR1cy5oYXNPd25Qcm9wZXJ0eSgnbWVzc2FnZScpKSB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcbiAgcmV0dXJuIGZhbHNlO1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFcnJvclNlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICAvKipcclxuICAgKiBQYXJzZSBhbiBlcnJvciB0aGF0IGNvbWVzIGZyb20gdGhlIEFQSSBmb3IgdXNlIGluc2lkZSB0aGUgZm9ybXNcclxuICAgKiBJbiBtb3N0IGNhc2VzIHRoaXMgaXNuJ3QgcmVxdWlyZWQgYmVjYXVzZSB0aGUgZXJyb3IgaGFuZGxlciB3aWxsIGRvIGl0IGF1dG9tYXRpY2FsbHksXHJcbiAgICogYnV0IGlmIHlvdSBuZWVkIHRvIGFuYWx5emUgdGhlIGVycm9yIG1lc3NhZ2UgeW91IGNhbiB1c2UgdGhpcyB0byBleHRyYWN0IGl0IHNhZmVseS5cclxuICAgKiBOT1RFOiBCZWNhdXNlIGl0IGNhbiBiZSB1c2VkIGZvciBjb21wYXJpc29uIHRoZSByZXN1bHQgaXMgbm90IHRyYW5zbGF0ZWQuIFlvdSBtdXN0IHRyYW5zbGF0ZVxyXG4gICAqIGl0IGJlZm9yZSBwcm92aWRpbmcgaXQgdG8gdGhlIHVzZXIuXHJcbiAgICogQHBhcmFtIGVycm9yIFRoZSBlcnJvciBvYmplY3QgZnJvbSB0aGUgQVBJXHJcbiAgICovXHJcbiAgcHVibGljIHBhcnNlQXBpRXJyb3IoZXJyb3JSZXNwb25zZTogYW55LCB1bmtub3duRXJyb3JEZWZhdWx0Pzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICh0eXBlb2YgZXJyb3JSZXNwb25zZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgcmV0dXJuIGVycm9yUmVzcG9uc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gZXJyb3JSZXNwb25zZSBpcyB0eXBlZCBIdHRwRXJyb3JSZXNwb25zZSBpZiB0aGUgYXBpIHJldHVybnMgYW4gZXJyb3JcclxuICAgIGxldCBhcGlFcnJvck1lc3NhZ2U6IHN0cmluZyA9IHVua25vd25FcnJvckRlZmF1bHQgfHwgJ0RlZmF1bHRVbmtub3duRXJyb3JfU0MnO1xyXG5cclxuICAgIGlmIChlcnJvclJlc3BvbnNlICYmIGlzQXBpRXJyb3IoZXJyb3JSZXNwb25zZSkpIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBhcGlFcnJvck1lc3NhZ2UgPSBlcnJvclJlc3BvbnNlLmVycm9yLnN0YXR1cy5tZXNzYWdlO1xyXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgIC8vbG9nIHRoZSByZWFsIGVycm9yIHRvIHRoZSBjb25zb2xlIChmb3IgZGV2ZWxvcGVycykgYnV0IGp1c3QgcmV0dXJuIHRoZSBnZW5lcmljIGVycm9yIHRvIHRoZSB1c2VyXHJcbiAgICAgICAgdGhpcy5sb2dDb25zb2xlRXJyb3IoZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmxvZ0NvbnNvbGVFcnJvcihlcnJvclJlc3BvbnNlKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gYXBpRXJyb3JNZXNzYWdlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSnVzdCBhIHNhZmUgd3JhcHBlciBhcm91bmQgY29uc29sZS5lcnJvciBpbiBjYXNlIHRoZSBicm93c2VyIGRvZXNuJ3QgaGF2ZSBvbmUgZXhwb3NlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBsb2dDb25zb2xlRXJyb3IoZXJyb3I6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKGNvbnNvbGUgJiYgdHlwZW9mIChjb25zb2xlLmVycm9yKSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCd1bmtub3duIGVycm9yOicsIGVycm9yKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,89 @@
1
+ import { Injectable } from "@angular/core";
2
+ import * as i0 from "@angular/core";
3
+ export class ScrollService {
4
+ constructor() { }
5
+ /**
6
+ * Given a container and the target element to scroll to, we will set the scroll top on
7
+ * the container to bring the target into view.
8
+ *
9
+ * @param scrollContainerSelector A valid CSS selector string for the scroll container.
10
+ * @param targetElementSelector A valid CSS selector string for the target element.
11
+ * @param topPadding The amount of space to leave above the target
12
+ * to keep it from being pinned to the top of the scrollContainer. Defaults
13
+ * to 32px, the default height of a menu item.
14
+ */
15
+ scrollToItem(scrollContainerSelector, targetElementSelector, topPadding = 32) {
16
+ let scrollContainer = document.querySelector(scrollContainerSelector);
17
+ if (!scrollContainer) {
18
+ return;
19
+ }
20
+ let targetElement = scrollContainer.querySelector(targetElementSelector);
21
+ if (!targetElement) {
22
+ return;
23
+ }
24
+ let targetRect = targetElement.getBoundingClientRect();
25
+ let containerRect = scrollContainer.getBoundingClientRect();
26
+ // Only scroll if the target is outside of the view bounds of the container
27
+ if (targetRect.bottom > containerRect.bottom || targetRect.top < containerRect.top) {
28
+ scrollContainer.scrollTop =
29
+ (targetRect.top - containerRect.top) + scrollContainer.scrollTop - topPadding;
30
+ }
31
+ }
32
+ /**
33
+ * Return the value of the scrollTop property for an HTMLElement that matches the selector
34
+ * @param scrollContainerSelector A valid CSS selector
35
+ */
36
+ getCurrentScrollPosition(scrollContainerSelector) {
37
+ let scrollContainer = document.querySelector(scrollContainerSelector);
38
+ if (scrollContainer) {
39
+ return scrollContainer.scrollTop;
40
+ }
41
+ else {
42
+ console.error(`Scroll container '${scrollContainerSelector}' does not exist.`);
43
+ return 0;
44
+ }
45
+ }
46
+ /**
47
+ * Set the scrollTop of an HTMLElement that matches the selector to a specific position
48
+ * @param scrollContainerSelector A valid CSS selector
49
+ * @param position
50
+ */
51
+ scrollToPosition(scrollContainerSelector, position) {
52
+ let scrollContainer = document.querySelector(scrollContainerSelector);
53
+ if (scrollContainer) {
54
+ scrollContainer.scrollTop = position;
55
+ }
56
+ else {
57
+ console.error(`Scroll container '${scrollContainerSelector}' does not exist.`);
58
+ }
59
+ }
60
+ /**
61
+ * Given a container and the target element to scroll to, we will set the scroll top on
62
+ * the container to bring the target into view, with the item in the center of the scroll container.
63
+ *
64
+ * @param scrollContainerSelector A valid CSS selector string for the scroll container.
65
+ * @param targetElementSelector A valid CSS selector string for the target element.
66
+ */
67
+ scrollItemCentered(scrollContainerSelector, targetElementSelector) {
68
+ try {
69
+ let scrollContainer = document.querySelector(scrollContainerSelector);
70
+ if (scrollContainer) {
71
+ let containerHeight = scrollContainer.getBoundingClientRect().height;
72
+ // Pad the top with half of the height of the container to put the target in the middle
73
+ this.scrollToItem(scrollContainerSelector, targetElementSelector, containerHeight * .5);
74
+ }
75
+ }
76
+ catch (error) {
77
+ console.error(`Error scrolling target into view. Container selector: ${scrollContainerSelector}. Target selector: ${targetElementSelector}`, error);
78
+ }
79
+ }
80
+ }
81
+ ScrollService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ScrollService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
82
+ ScrollService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ScrollService, providedIn: 'root' });
83
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ScrollService, decorators: [{
84
+ type: Injectable,
85
+ args: [{
86
+ providedIn: 'root'
87
+ }]
88
+ }], ctorParameters: function () { return []; } });
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvY29yZS9zY3JvbGwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sYUFBYTtJQUV0QixnQkFBZ0IsQ0FBQztJQUVqQjs7Ozs7Ozs7O09BU0c7SUFDSSxZQUFZLENBQUMsdUJBQStCLEVBQUUscUJBQTZCLEVBQUUsVUFBVSxHQUFHLEVBQUU7UUFDL0YsSUFBSSxlQUFlLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDbEIsT0FBTztTQUNWO1FBQ0QsSUFBSSxhQUFhLEdBQUcsZUFBZSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDaEIsT0FBTztTQUNWO1FBRUQsSUFBSSxVQUFVLEdBQUcsYUFBYSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDdkQsSUFBSSxhQUFhLEdBQUcsZUFBZSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFFNUQsMkVBQTJFO1FBQzNFLElBQUksVUFBVSxDQUFDLE1BQU0sR0FBRyxhQUFhLENBQUMsTUFBTSxJQUFJLFVBQVUsQ0FBQyxHQUFHLEdBQUcsYUFBYSxDQUFDLEdBQUcsRUFBRTtZQUNoRixlQUFlLENBQUMsU0FBUztnQkFDckIsQ0FBQyxVQUFVLENBQUMsR0FBRyxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsR0FBRyxlQUFlLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQztTQUNyRjtJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSSx3QkFBd0IsQ0FBQyx1QkFBK0I7UUFDM0QsSUFBSSxlQUFlLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQ3RFLElBQUksZUFBZSxFQUFFO1lBQ2pCLE9BQU8sZUFBZSxDQUFDLFNBQVMsQ0FBQztTQUNwQzthQUFNO1lBQ0gsT0FBTyxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsdUJBQXVCLG1CQUFtQixDQUFDLENBQUM7WUFDL0UsT0FBTyxDQUFDLENBQUM7U0FDWjtJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksZ0JBQWdCLENBQUMsdUJBQStCLEVBQUUsUUFBZ0I7UUFDckUsSUFBSSxlQUFlLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQ3RFLElBQUksZUFBZSxFQUFFO1lBQ2pCLGVBQWUsQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1NBQ3hDO2FBQU07WUFDSCxPQUFPLENBQUMsS0FBSyxDQUFDLHFCQUFxQix1QkFBdUIsbUJBQW1CLENBQUMsQ0FBQztTQUNsRjtJQUNMLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxrQkFBa0IsQ0FBQyx1QkFBK0IsRUFBRSxxQkFBNkI7UUFDcEYsSUFBSTtZQUNBLElBQUksZUFBZSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsdUJBQXVCLENBQUMsQ0FBQztZQUN0RSxJQUFJLGVBQWUsRUFBRTtnQkFDakIsSUFBSSxlQUFlLEdBQUcsZUFBZSxDQUFDLHFCQUFxQixFQUFFLENBQUMsTUFBTSxDQUFDO2dCQUNyRSx1RkFBdUY7Z0JBQ3ZGLElBQUksQ0FBQyxZQUFZLENBQUMsdUJBQXVCLEVBQUUscUJBQXFCLEVBQUUsZUFBZSxHQUFHLEVBQUUsQ0FBQyxDQUFBO2FBQzFGO1NBQ0o7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNaLE9BQU8sQ0FBQyxLQUFLLENBQUMseURBQXlELHVCQUF1Qix1QkFBdUIscUJBQXFCLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUN4SjtJQUNMLENBQUM7OzBHQWhGUSxhQUFhOzhHQUFiLGFBQWEsY0FGVixNQUFNOzJGQUVULGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFNjcm9sbFNlcnZpY2Uge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHaXZlbiBhIGNvbnRhaW5lciBhbmQgdGhlIHRhcmdldCBlbGVtZW50IHRvIHNjcm9sbCB0bywgd2Ugd2lsbCBzZXQgdGhlIHNjcm9sbCB0b3Agb25cclxuICAgICAqICB0aGUgY29udGFpbmVyIHRvIGJyaW5nIHRoZSB0YXJnZXQgaW50byB2aWV3LlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBzY3JvbGxDb250YWluZXJTZWxlY3RvciBBIHZhbGlkIENTUyBzZWxlY3RvciBzdHJpbmcgZm9yIHRoZSBzY3JvbGwgY29udGFpbmVyLlxyXG4gICAgICogQHBhcmFtIHRhcmdldEVsZW1lbnRTZWxlY3RvciBBIHZhbGlkIENTUyBzZWxlY3RvciBzdHJpbmcgZm9yIHRoZSB0YXJnZXQgZWxlbWVudC5cclxuICAgICAqIEBwYXJhbSB0b3BQYWRkaW5nIFRoZSBhbW91bnQgb2Ygc3BhY2UgdG8gbGVhdmUgYWJvdmUgdGhlIHRhcmdldFxyXG4gICAgICogdG8ga2VlcCBpdCBmcm9tIGJlaW5nIHBpbm5lZCB0byB0aGUgdG9wIG9mIHRoZSBzY3JvbGxDb250YWluZXIuIERlZmF1bHRzXHJcbiAgICAgKiB0byAzMnB4LCB0aGUgZGVmYXVsdCBoZWlnaHQgb2YgYSBtZW51IGl0ZW0uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzY3JvbGxUb0l0ZW0oc2Nyb2xsQ29udGFpbmVyU2VsZWN0b3I6IHN0cmluZywgdGFyZ2V0RWxlbWVudFNlbGVjdG9yOiBzdHJpbmcsIHRvcFBhZGRpbmcgPSAzMik6IHZvaWQge1xyXG4gICAgICAgIGxldCBzY3JvbGxDb250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHNjcm9sbENvbnRhaW5lclNlbGVjdG9yKTtcclxuICAgICAgICBpZiAoIXNjcm9sbENvbnRhaW5lcikge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCB0YXJnZXRFbGVtZW50ID0gc2Nyb2xsQ29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IodGFyZ2V0RWxlbWVudFNlbGVjdG9yKTtcclxuICAgICAgICBpZiAoIXRhcmdldEVsZW1lbnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHRhcmdldFJlY3QgPSB0YXJnZXRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICAgIGxldCBjb250YWluZXJSZWN0ID0gc2Nyb2xsQ29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG5cclxuICAgICAgICAvLyBPbmx5IHNjcm9sbCBpZiB0aGUgdGFyZ2V0IGlzIG91dHNpZGUgb2YgdGhlIHZpZXcgYm91bmRzIG9mIHRoZSBjb250YWluZXJcclxuICAgICAgICBpZiAodGFyZ2V0UmVjdC5ib3R0b20gPiBjb250YWluZXJSZWN0LmJvdHRvbSB8fCB0YXJnZXRSZWN0LnRvcCA8IGNvbnRhaW5lclJlY3QudG9wKSB7XHJcbiAgICAgICAgICAgIHNjcm9sbENvbnRhaW5lci5zY3JvbGxUb3AgPVxyXG4gICAgICAgICAgICAgICAgKHRhcmdldFJlY3QudG9wIC0gY29udGFpbmVyUmVjdC50b3ApICsgc2Nyb2xsQ29udGFpbmVyLnNjcm9sbFRvcCAtIHRvcFBhZGRpbmc7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgc2Nyb2xsVG9wIHByb3BlcnR5IGZvciBhbiBIVE1MRWxlbWVudCB0aGF0IG1hdGNoZXMgdGhlIHNlbGVjdG9yXHJcbiAgICAgKiBAcGFyYW0gc2Nyb2xsQ29udGFpbmVyU2VsZWN0b3IgQSB2YWxpZCBDU1Mgc2VsZWN0b3JcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldEN1cnJlbnRTY3JvbGxQb3NpdGlvbihzY3JvbGxDb250YWluZXJTZWxlY3Rvcjogc3RyaW5nKTogbnVtYmVyIHtcclxuICAgICAgICBsZXQgc2Nyb2xsQ29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzY3JvbGxDb250YWluZXJTZWxlY3Rvcik7XHJcbiAgICAgICAgaWYgKHNjcm9sbENvbnRhaW5lcikge1xyXG4gICAgICAgICAgICByZXR1cm4gc2Nyb2xsQ29udGFpbmVyLnNjcm9sbFRvcDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGBTY3JvbGwgY29udGFpbmVyICcke3Njcm9sbENvbnRhaW5lclNlbGVjdG9yfScgZG9lcyBub3QgZXhpc3QuYCk7XHJcbiAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldCB0aGUgc2Nyb2xsVG9wIG9mIGFuIEhUTUxFbGVtZW50IHRoYXQgbWF0Y2hlcyB0aGUgc2VsZWN0b3IgdG8gYSBzcGVjaWZpYyBwb3NpdGlvblxyXG4gICAgICogQHBhcmFtIHNjcm9sbENvbnRhaW5lclNlbGVjdG9yIEEgdmFsaWQgQ1NTIHNlbGVjdG9yXHJcbiAgICAgKiBAcGFyYW0gcG9zaXRpb25cclxuICAgICAqL1xyXG4gICAgcHVibGljIHNjcm9sbFRvUG9zaXRpb24oc2Nyb2xsQ29udGFpbmVyU2VsZWN0b3I6IHN0cmluZywgcG9zaXRpb246IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgIGxldCBzY3JvbGxDb250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHNjcm9sbENvbnRhaW5lclNlbGVjdG9yKTtcclxuICAgICAgICBpZiAoc2Nyb2xsQ29udGFpbmVyKSB7XHJcbiAgICAgICAgICAgIHNjcm9sbENvbnRhaW5lci5zY3JvbGxUb3AgPSBwb3NpdGlvbjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGBTY3JvbGwgY29udGFpbmVyICcke3Njcm9sbENvbnRhaW5lclNlbGVjdG9yfScgZG9lcyBub3QgZXhpc3QuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogIEdpdmVuIGEgY29udGFpbmVyIGFuZCB0aGUgdGFyZ2V0IGVsZW1lbnQgdG8gc2Nyb2xsIHRvLCB3ZSB3aWxsIHNldCB0aGUgc2Nyb2xsIHRvcCBvblxyXG4gICAgICogIHRoZSBjb250YWluZXIgdG8gYnJpbmcgdGhlIHRhcmdldCBpbnRvIHZpZXcsIHdpdGggdGhlIGl0ZW0gaW4gdGhlIGNlbnRlciBvZiB0aGUgc2Nyb2xsIGNvbnRhaW5lci5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gc2Nyb2xsQ29udGFpbmVyU2VsZWN0b3IgQSB2YWxpZCBDU1Mgc2VsZWN0b3Igc3RyaW5nIGZvciB0aGUgc2Nyb2xsIGNvbnRhaW5lci5cclxuICAgICAqIEBwYXJhbSB0YXJnZXRFbGVtZW50U2VsZWN0b3IgQSB2YWxpZCBDU1Mgc2VsZWN0b3Igc3RyaW5nIGZvciB0aGUgdGFyZ2V0IGVsZW1lbnQuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzY3JvbGxJdGVtQ2VudGVyZWQoc2Nyb2xsQ29udGFpbmVyU2VsZWN0b3I6IHN0cmluZywgdGFyZ2V0RWxlbWVudFNlbGVjdG9yOiBzdHJpbmcpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBsZXQgc2Nyb2xsQ29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzY3JvbGxDb250YWluZXJTZWxlY3Rvcik7XHJcbiAgICAgICAgICAgIGlmIChzY3JvbGxDb250YWluZXIpIHtcclxuICAgICAgICAgICAgICAgIGxldCBjb250YWluZXJIZWlnaHQgPSBzY3JvbGxDb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xyXG4gICAgICAgICAgICAgICAgLy8gUGFkIHRoZSB0b3Agd2l0aCBoYWxmIG9mIHRoZSBoZWlnaHQgb2YgdGhlIGNvbnRhaW5lciB0byBwdXQgdGhlIHRhcmdldCBpbiB0aGUgbWlkZGxlXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbFRvSXRlbShzY3JvbGxDb250YWluZXJTZWxlY3RvciwgdGFyZ2V0RWxlbWVudFNlbGVjdG9yLCBjb250YWluZXJIZWlnaHQgKiAuNSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEVycm9yIHNjcm9sbGluZyB0YXJnZXQgaW50byB2aWV3LiBDb250YWluZXIgc2VsZWN0b3I6ICR7c2Nyb2xsQ29udGFpbmVyU2VsZWN0b3J9LiBUYXJnZXQgc2VsZWN0b3I6ICAke3RhcmdldEVsZW1lbnRTZWxlY3Rvcn1gLCBlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,16 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /** Default No-op telemetry implementation */
4
+ export class TelemetryTrackerService {
5
+ trackPageView(pageName, url, properties) { }
6
+ trackEvent(name, properties, measurements) { }
7
+ }
8
+ TelemetryTrackerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TelemetryTrackerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
9
+ TelemetryTrackerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TelemetryTrackerService, providedIn: 'root' });
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TelemetryTrackerService, decorators: [{
11
+ type: Injectable,
12
+ args: [{
13
+ providedIn: 'root'
14
+ }]
15
+ }] });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVsZW1ldHJ5LXRyYWNrZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9jb3JlL3RlbGVtZXRyeS10cmFja2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLM0MsNkNBQTZDO0FBQzdDLE1BQU0sT0FBTyx1QkFBdUI7SUFDM0IsYUFBYSxDQUFDLFFBQWdCLEVBQUUsR0FBVSxFQUFFLFVBQStDLElBQUksQ0FBQztJQUNoRyxVQUFVLENBQUMsSUFBWSxFQUFFLFVBQW1DLEVBQUUsWUFBb0MsSUFBSSxDQUFDOztvSEFGbkcsdUJBQXVCO3dIQUF2Qix1QkFBdUIsY0FIdEIsTUFBTTsyRkFHUCx1QkFBdUI7a0JBSm5DLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG4vKiogRGVmYXVsdCBOby1vcCB0ZWxlbWV0cnkgaW1wbGVtZW50YXRpb24gKi9cclxuZXhwb3J0IGNsYXNzIFRlbGVtZXRyeVRyYWNrZXJTZXJ2aWNlIHtcclxuICBwdWJsaWMgdHJhY2tQYWdlVmlldyhwYWdlTmFtZTogc3RyaW5nLCB1cmw6c3RyaW5nLCBwcm9wZXJ0aWVzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfSkgeyB9XHJcbiAgcHVibGljIHRyYWNrRXZlbnQobmFtZTogc3RyaW5nLCBwcm9wZXJ0aWVzPzoge1trZXk6IHN0cmluZ106c3RyaW5nfSwgbWVhc3VyZW1lbnRzPzoge1t2YWw6c3RyaW5nXTpudW1iZXJ9KSB7IH1cclxufVxyXG4iXX0=
@@ -0,0 +1,38 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "./telemetry-tracker.service";
4
+ export class TelemetryService {
5
+ constructor(telemetryTrackerService) {
6
+ this.telemetryTrackerService = telemetryTrackerService;
7
+ }
8
+ /**
9
+ * Tracks a Page View / State change
10
+ *
11
+ * @param {string} pageName
12
+ * @param {string} url
13
+ * @memberof TelemetryService
14
+ */
15
+ trackPageView(pageName, url, properties) {
16
+ this.telemetryTrackerService.trackPageView(pageName, url, properties);
17
+ }
18
+ /**
19
+ * Tracks a generic event
20
+ *
21
+ * @param {string} name
22
+ * @param {{[key: string]:string}} [properties]
23
+ * @param {{[val:string]:number}} [measurements]
24
+ * @memberof TelemetryService
25
+ */
26
+ trackEvent(name, properties, measurements) {
27
+ this.telemetryTrackerService.trackEvent(name, properties, measurements);
28
+ }
29
+ }
30
+ TelemetryService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TelemetryService, deps: [{ token: i1.TelemetryTrackerService }], target: i0.ɵɵFactoryTarget.Injectable });
31
+ TelemetryService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TelemetryService, providedIn: 'root' });
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TelemetryService, decorators: [{
33
+ type: Injectable,
34
+ args: [{
35
+ providedIn: 'root'
36
+ }]
37
+ }], ctorParameters: function () { return [{ type: i1.TelemetryTrackerService }]; } });
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVsZW1ldHJ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvY29yZS90ZWxlbWV0cnkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFNM0MsTUFBTSxPQUFPLGdCQUFnQjtJQUUzQixZQUFvQix1QkFBZ0Q7UUFBaEQsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtJQUFHLENBQUM7SUFFeEU7Ozs7OztPQU1HO0lBQ0ksYUFBYSxDQUFDLFFBQWdCLEVBQUUsR0FBVSxFQUFFLFVBQStDO1FBQ2hHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLFVBQVUsQ0FBQyxJQUFZLEVBQUUsVUFBbUMsRUFBRSxZQUFvQztRQUN2RyxJQUFJLENBQUMsdUJBQXVCLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDMUUsQ0FBQzs7NkdBekJVLGdCQUFnQjtpSEFBaEIsZ0JBQWdCLGNBRmYsTUFBTTsyRkFFUCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUZWxlbWV0cnlUcmFja2VyU2VydmljZSB9IGZyb20gJy4vdGVsZW1ldHJ5LXRyYWNrZXIuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUZWxlbWV0cnlTZXJ2aWNlIHtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0ZWxlbWV0cnlUcmFja2VyU2VydmljZTogVGVsZW1ldHJ5VHJhY2tlclNlcnZpY2UpIHt9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRyYWNrcyBhIFBhZ2UgVmlldyAvIFN0YXRlIGNoYW5nZSBcclxuICAgKiBcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gcGFnZU5hbWUgXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHVybCBcclxuICAgKiBAbWVtYmVyb2YgVGVsZW1ldHJ5U2VydmljZVxyXG4gICAqL1xyXG4gIHB1YmxpYyB0cmFja1BhZ2VWaWV3KHBhZ2VOYW1lOiBzdHJpbmcsIHVybDpzdHJpbmcsIHByb3BlcnRpZXM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB9KSB7XHJcbiAgICB0aGlzLnRlbGVtZXRyeVRyYWNrZXJTZXJ2aWNlLnRyYWNrUGFnZVZpZXcocGFnZU5hbWUsIHVybCwgcHJvcGVydGllcyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUcmFja3MgYSBnZW5lcmljIGV2ZW50XHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgXHJcbiAgICogQHBhcmFtIHt7W2tleTogc3RyaW5nXTpzdHJpbmd9fSBbcHJvcGVydGllc10gXHJcbiAgICogQHBhcmFtIHt7W3ZhbDpzdHJpbmddOm51bWJlcn19IFttZWFzdXJlbWVudHNdIFxyXG4gICAqIEBtZW1iZXJvZiBUZWxlbWV0cnlTZXJ2aWNlXHJcbiAgICovXHJcbiAgcHVibGljIHRyYWNrRXZlbnQobmFtZTogc3RyaW5nLCBwcm9wZXJ0aWVzPzoge1trZXk6IHN0cmluZ106c3RyaW5nfSwgbWVhc3VyZW1lbnRzPzoge1t2YWw6c3RyaW5nXTpudW1iZXJ9KSB7XHJcbiAgICB0aGlzLnRlbGVtZXRyeVRyYWNrZXJTZXJ2aWNlLnRyYWNrRXZlbnQobmFtZSwgcHJvcGVydGllcywgbWVhc3VyZW1lbnRzKTtcclxuICB9XHJcbn1cclxuIl19