@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,15 @@
1
+ /** Tag contains a label and type. Type is default by default */
2
+ export class Tag {
3
+ constructor(label, type, classList, icon, isDismissable, tooltip) {
4
+ this.label = label;
5
+ this.type = type || 'info';
6
+ this.icon = icon;
7
+ this.isDismissable = isDismissable ?? false;
8
+ this.tooltip = tooltip;
9
+ if (classList) {
10
+ this.classList = classList;
11
+ }
12
+ }
13
+ }
14
+ ;
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2Rpc3BsYXkvdGFncy90YWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsZ0VBQWdFO0FBQ2hFLE1BQU0sT0FBTyxHQUFHO0lBY2QsWUFBWSxLQUFhLEVBQUUsSUFBYyxFQUFFLFNBQWtCLEVBQUUsSUFBYSxFQUFFLGFBQXVCLEVBQUUsT0FBZ0I7UUFDckgsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLElBQUksTUFBTSxDQUFDO1FBQzNCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxJQUFJLEtBQUssQ0FBQztRQUM1QyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUV2QixJQUFJLFNBQVMsRUFBRTtZQUNiLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1NBQzVCO0lBQ0gsQ0FBQztDQUNGO0FBQUEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBUYWcgdHlwZSB1c2VkIHRvIHN0eWxlIHRoZSB0YWcgKi9cclxuZXhwb3J0IHR5cGUgVGFnVHlwZSA9IFwiaW5mb1wiIHwgXCJzdWNjZXNzXCIgfCBcIndhcm5pbmdcIiB8IFwiZGFuZ2VyXCIgfCBcImFjY2VudFwiIHwgXCJjaGFyZ2ViYWNrXCIgfCBcImFjY3J1YWxcIjtcclxuXHJcbi8qKiBUYWcgY29udGFpbnMgYSBsYWJlbCBhbmQgdHlwZS4gVHlwZSBpcyBkZWZhdWx0IGJ5IGRlZmF1bHQgKi9cclxuZXhwb3J0IGNsYXNzIFRhZyB7XHJcbiAgcHVibGljIGxhYmVsOiBzdHJpbmc7XHJcblxyXG4gIHB1YmxpYyB0eXBlOiBUYWdUeXBlO1xyXG5cclxuICBwdWJsaWMgaWNvbj86IHN0cmluZztcclxuXHJcbiAgcHVibGljIGlzRGlzbWlzc2FibGU/OiBib29sZWFuO1xyXG5cclxuICAvKiogQ1NTIGNsYXNzZXMgdG8gYXBwbHkgdG8gdGFnIGZvciBjdXN0b20gc3R5bGluZyAqL1xyXG4gIHB1YmxpYyBjbGFzc0xpc3Q/OiBzdHJpbmc7XHJcblxyXG4gIHB1YmxpYyB0b29sdGlwPzogc3RyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3RvcihsYWJlbDogc3RyaW5nLCB0eXBlPzogVGFnVHlwZSwgY2xhc3NMaXN0Pzogc3RyaW5nLCBpY29uPzogc3RyaW5nLCBpc0Rpc21pc3NhYmxlPzogYm9vbGVhbiwgdG9vbHRpcD86IHN0cmluZykge1xyXG4gICAgdGhpcy5sYWJlbCA9IGxhYmVsO1xyXG4gICAgdGhpcy50eXBlID0gdHlwZSB8fCAnaW5mbyc7XHJcbiAgICB0aGlzLmljb24gPSBpY29uO1xyXG4gICAgdGhpcy5pc0Rpc21pc3NhYmxlID0gaXNEaXNtaXNzYWJsZSA/PyBmYWxzZTtcclxuICAgIHRoaXMudG9vbHRpcCA9IHRvb2x0aXA7XHJcblxyXG4gICAgaWYgKGNsYXNzTGlzdCkge1xyXG4gICAgICB0aGlzLmNsYXNzTGlzdCA9IGNsYXNzTGlzdDtcclxuICAgIH1cclxuICB9XHJcbn07Il19
@@ -0,0 +1,77 @@
1
+ import { Component, Input, Output, EventEmitter } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ import * as i2 from "@ngx-translate/core";
5
+ export class TagsComponent {
6
+ constructor() {
7
+ /**The ID of this set of tags */
8
+ this.id = '';
9
+ /**
10
+ * Determines whether the tags will wrap or not
11
+ *
12
+ * @type {boolean}
13
+ * @memberof TagsComponent
14
+ */
15
+ this.wrap = true;
16
+ /**
17
+ * Displays the tags in condensed mode
18
+ */
19
+ this.isCondensed = false;
20
+ /**
21
+ * Emits the tag item when the tag's close button is clicked
22
+ */
23
+ this.tagClosed = new EventEmitter();
24
+ /**
25
+ * Tags to be displayed
26
+ *
27
+ * @type {Tag[]}
28
+ * @memberof TagsComponent
29
+ */
30
+ this.tagsArray = [];
31
+ }
32
+ /**
33
+ * Angular onChanges lifecycle hook
34
+ * @see {@link https://angular.io/guide/lifecycle-hooks | Life-cycle hooks}
35
+ *
36
+ * @param {SimpleChanges} changes
37
+ * @memberof TagsComponent
38
+ */
39
+ ngOnChanges(changes) {
40
+ if (changes.tags) {
41
+ if (this.tags) {
42
+ // If only given a single item, put it in an array so it works in the template
43
+ if (Array.isArray(this.tags)) {
44
+ this.tagsArray = this.tags;
45
+ }
46
+ else {
47
+ this.tagsArray = [this.tags];
48
+ }
49
+ }
50
+ else {
51
+ // reset array if tags becomes undefined
52
+ this.tagsArray = [];
53
+ }
54
+ }
55
+ }
56
+ closeTag(tag) {
57
+ this.tagsArray = this.tagsArray.filter(t => t !== tag);
58
+ this.tagClosed.emit(tag);
59
+ }
60
+ }
61
+ TagsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TagsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
62
+ TagsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: TagsComponent, selector: "ec-tags", inputs: { id: "id", tags: "tags", wrap: "wrap", isCondensed: "isCondensed" }, outputs: { tagClosed: "tagClosed" }, usesOnChanges: true, ngImport: i0, template: "<ul class=\"tags\" [class.is-wrapped]=\"wrap\">\r\n <li *ngFor=\"let tag of tagsArray; index as i\"\r\n id=\"{{id}}_tag_{{i}}\"\r\n class=\"tag is-{{tag.type}} {{tag.classList}} mr-1\"\r\n [ngClass]=\"{'text-caption-1': !isCondensed, 'text-caption-2': isCondensed, 'is-condensed': isCondensed, 'pr-0': tag.isDismissable}\"\r\n title=\"{{tag.tooltip | translate}}\">\r\n <i *ngIf=\"tag.icon\" class=\"ec-icon {{tag.icon}} font-color-muted ec-icon-sm\"></i>\r\n {{tag.label | translate}}\r\n <button id=\"{{id}}_tag_{{i}}_dismissButton\"\r\n *ngIf=\"tag.isDismissable\"\r\n (click)=\"closeTag(tag)\">\r\n <i class=\"ec-icon ec-icon-sm icon-cancel\"></i>\r\n </button>\r\n </li>\r\n</ul>", 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{display:block}.tags{padding:0;margin:0;list-style:none;display:flex}.tags.is-wrapped{flex-wrap:wrap;margin-top:.25rem}.tags.is-wrapped>.tag{margin-bottom:.25rem}.tag{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background-color:#acbcc340;border:2px solid #acbcc3;display:inline-flex;align-items:center;border-radius:calc(var(--ec-border-radius, .25rem) * 3);height:1.5rem;line-height:1.25rem;padding:0 .4375rem;vertical-align:top}.tag>.ec-icon:first-child{margin-right:.1875rem}.tag .ec-icon{display:flex;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;width:auto;height:auto;min-width:1em;justify-content:center}.tag .ec-icon:before,.tag .ec-icon:after{width:auto;height:auto}.tag.is-info{background-color:#acbcc340;border-color:#acbcc3}.tag.is-success{background-color:#c1cd2340;border-color:#c1cd23}.tag.is-warning{background-color:#f5d40040;border-color:#f5d400}.tag.is-danger{background-color:#e3343640;border-color:#e33436}.tag.is-accent{background-color:#906ea840;border-color:#906ea8}.tag.is-chargeback{background-color:#fa7b2e40;border-color:#fa7b2e}.tag.is-accrual{background-color:#23c3cd40;border-color:#23c3cd}button{background-color:transparent;border:0;display:flex;align-items:center;padding:0 .4375rem 0 .1875rem;height:100%;cursor:pointer}button:hover,button:focus{background-color:#1a1a231a;outline:none}.is-condensed{border-radius:var(--ec-border-radius);border:0;padding:0 .25rem;height:1.125rem;line-height:1.125rem;min-width:1.125rem;justify-content:center}.is-condensed>.ec-icon:first-child{margin-right:.125rem}.is-condensed button{padding-right:.25rem;padding-left:.125rem}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] });
63
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TagsComponent, decorators: [{
64
+ type: Component,
65
+ args: [{ selector: 'ec-tags', template: "<ul class=\"tags\" [class.is-wrapped]=\"wrap\">\r\n <li *ngFor=\"let tag of tagsArray; index as i\"\r\n id=\"{{id}}_tag_{{i}}\"\r\n class=\"tag is-{{tag.type}} {{tag.classList}} mr-1\"\r\n [ngClass]=\"{'text-caption-1': !isCondensed, 'text-caption-2': isCondensed, 'is-condensed': isCondensed, 'pr-0': tag.isDismissable}\"\r\n title=\"{{tag.tooltip | translate}}\">\r\n <i *ngIf=\"tag.icon\" class=\"ec-icon {{tag.icon}} font-color-muted ec-icon-sm\"></i>\r\n {{tag.label | translate}}\r\n <button id=\"{{id}}_tag_{{i}}_dismissButton\"\r\n *ngIf=\"tag.isDismissable\"\r\n (click)=\"closeTag(tag)\">\r\n <i class=\"ec-icon ec-icon-sm icon-cancel\"></i>\r\n </button>\r\n </li>\r\n</ul>", 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{display:block}.tags{padding:0;margin:0;list-style:none;display:flex}.tags.is-wrapped{flex-wrap:wrap;margin-top:.25rem}.tags.is-wrapped>.tag{margin-bottom:.25rem}.tag{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background-color:#acbcc340;border:2px solid #acbcc3;display:inline-flex;align-items:center;border-radius:calc(var(--ec-border-radius, .25rem) * 3);height:1.5rem;line-height:1.25rem;padding:0 .4375rem;vertical-align:top}.tag>.ec-icon:first-child{margin-right:.1875rem}.tag .ec-icon{display:flex;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;width:auto;height:auto;min-width:1em;justify-content:center}.tag .ec-icon:before,.tag .ec-icon:after{width:auto;height:auto}.tag.is-info{background-color:#acbcc340;border-color:#acbcc3}.tag.is-success{background-color:#c1cd2340;border-color:#c1cd23}.tag.is-warning{background-color:#f5d40040;border-color:#f5d400}.tag.is-danger{background-color:#e3343640;border-color:#e33436}.tag.is-accent{background-color:#906ea840;border-color:#906ea8}.tag.is-chargeback{background-color:#fa7b2e40;border-color:#fa7b2e}.tag.is-accrual{background-color:#23c3cd40;border-color:#23c3cd}button{background-color:transparent;border:0;display:flex;align-items:center;padding:0 .4375rem 0 .1875rem;height:100%;cursor:pointer}button:hover,button:focus{background-color:#1a1a231a;outline:none}.is-condensed{border-radius:var(--ec-border-radius);border:0;padding:0 .25rem;height:1.125rem;line-height:1.125rem;min-width:1.125rem;justify-content:center}.is-condensed>.ec-icon:first-child{margin-right:.125rem}.is-condensed button{padding-right:.25rem;padding-left:.125rem}\n"] }]
66
+ }], ctorParameters: function () { return []; }, propDecorators: { id: [{
67
+ type: Input
68
+ }], tags: [{
69
+ type: Input
70
+ }], wrap: [{
71
+ type: Input
72
+ }], isCondensed: [{
73
+ type: Input
74
+ }], tagClosed: [{
75
+ type: Output
76
+ }] } });
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFncy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvZGlzcGxheS90YWdzL3RhZ3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2Rpc3BsYXkvdGFncy90YWdzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWEsS0FBSyxFQUFpQixNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBUWpHLE1BQU0sT0FBTyxhQUFhO0lBdUN4QjtRQXJDQSxnQ0FBZ0M7UUFDaEIsT0FBRSxHQUFXLEVBQUUsQ0FBQztRQVVoQzs7Ozs7V0FLRztRQUNhLFNBQUksR0FBWSxJQUFJLENBQUM7UUFFckM7O1dBRUc7UUFDYSxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUU3Qzs7V0FFRztRQUNjLGNBQVMsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUV4RTs7Ozs7V0FLRztRQUNJLGNBQVMsR0FBVSxFQUFFLENBQUM7SUFFYixDQUFDO0lBRWpCOzs7Ozs7T0FNRztJQUNILFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFDaEIsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUNiLDhFQUE4RTtnQkFDOUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO2lCQUM1QjtxQkFBTTtvQkFDTCxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUM5QjthQUNGO2lCQUFNO2dCQUNMLHdDQUF3QztnQkFDeEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7YUFDckI7U0FDRjtJQUNILENBQUM7SUFFTSxRQUFRLENBQUMsR0FBUTtRQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLENBQUM7OzBHQW5FVSxhQUFhOzhGQUFiLGFBQWEsdUxDUjFCLDJ1QkFjSzsyRkROUSxhQUFhO2tCQUx6QixTQUFTOytCQUNFLFNBQVM7MEVBT0gsRUFBRTtzQkFBakIsS0FBSztnQkFRVSxJQUFJO3NCQUFuQixLQUFLO2dCQVFVLElBQUk7c0JBQW5CLEtBQUs7Z0JBS1UsV0FBVztzQkFBMUIsS0FBSztnQkFLVyxTQUFTO3NCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkNoYW5nZXMsIElucHV0LCBTaW1wbGVDaGFuZ2VzLCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUYWcgfSBmcm9tICcuL3RhZyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VjLXRhZ3MnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90YWdzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90YWdzLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFRhZ3NDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG5cclxuICAvKipUaGUgSUQgb2YgdGhpcyBzZXQgb2YgdGFncyAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpZDogc3RyaW5nID0gJyc7XHJcblxyXG4gIC8qKlxyXG4gICAqIE9uZSBvciBtb3JlIHRhZ3NcclxuICAgKiBcclxuICAgKiBAdHlwZSB7KFRhZyB8IFRhZ1tdKX1cclxuICAgKiBAbWVtYmVyb2YgVGFnc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyB0YWdzPzogVGFnIHwgVGFnW107XHJcblxyXG4gIC8qKlxyXG4gICAqIERldGVybWluZXMgd2hldGhlciB0aGUgdGFncyB3aWxsIHdyYXAgb3Igbm90XHJcbiAgICogXHJcbiAgICogQHR5cGUge2Jvb2xlYW59XHJcbiAgICogQG1lbWJlcm9mIFRhZ3NDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgd3JhcDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIC8qKlxyXG4gICAqIERpc3BsYXlzIHRoZSB0YWdzIGluIGNvbmRlbnNlZCBtb2RlXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIGlzQ29uZGVuc2VkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIEVtaXRzIHRoZSB0YWcgaXRlbSB3aGVuIHRoZSB0YWcncyBjbG9zZSBidXR0b24gaXMgY2xpY2tlZFxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBwdWJsaWMgdGFnQ2xvc2VkOiBFdmVudEVtaXR0ZXI8VGFnPiA9IG5ldyBFdmVudEVtaXR0ZXI8VGFnPigpO1xyXG5cclxuICAvKipcclxuICAgKiBUYWdzIHRvIGJlIGRpc3BsYXllZFxyXG4gICAqIFxyXG4gICAqIEB0eXBlIHtUYWdbXX1cclxuICAgKiBAbWVtYmVyb2YgVGFnc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIHB1YmxpYyB0YWdzQXJyYXk6IFRhZ1tdID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFuZ3VsYXIgb25DaGFuZ2VzIGxpZmVjeWNsZSBob29rXHJcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9hbmd1bGFyLmlvL2d1aWRlL2xpZmVjeWNsZS1ob29rcyB8IExpZmUtY3ljbGUgaG9va3N9XHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtTaW1wbGVDaGFuZ2VzfSBjaGFuZ2VzIFxyXG4gICAqIEBtZW1iZXJvZiBUYWdzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKGNoYW5nZXMudGFncykge1xyXG4gICAgICBpZiAodGhpcy50YWdzKSB7XHJcbiAgICAgICAgLy8gSWYgb25seSBnaXZlbiBhIHNpbmdsZSBpdGVtLCBwdXQgaXQgaW4gYW4gYXJyYXkgc28gaXQgd29ya3MgaW4gdGhlIHRlbXBsYXRlXHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy50YWdzKSkge1xyXG4gICAgICAgICAgdGhpcy50YWdzQXJyYXkgPSB0aGlzLnRhZ3M7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudGFnc0FycmF5ID0gW3RoaXMudGFnc107XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIHJlc2V0IGFycmF5IGlmIHRhZ3MgYmVjb21lcyB1bmRlZmluZWRcclxuICAgICAgICB0aGlzLnRhZ3NBcnJheSA9IFtdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xvc2VUYWcodGFnOiBUYWcpIHtcclxuICAgIHRoaXMudGFnc0FycmF5ID0gdGhpcy50YWdzQXJyYXkuZmlsdGVyKHQgPT4gdCAhPT0gdGFnKTtcclxuICAgIHRoaXMudGFnQ2xvc2VkLmVtaXQodGFnKTtcclxuICB9XHJcbn1cclxuIiwiPHVsIGNsYXNzPVwidGFnc1wiIFtjbGFzcy5pcy13cmFwcGVkXT1cIndyYXBcIj5cclxuICA8bGkgKm5nRm9yPVwibGV0IHRhZyBvZiB0YWdzQXJyYXk7IGluZGV4IGFzIGlcIlxyXG4gICAgICBpZD1cInt7aWR9fV90YWdfe3tpfX1cIlxyXG4gICAgICBjbGFzcz1cInRhZyBpcy17e3RhZy50eXBlfX0ge3t0YWcuY2xhc3NMaXN0fX0gbXItMVwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cInsndGV4dC1jYXB0aW9uLTEnOiAhaXNDb25kZW5zZWQsICd0ZXh0LWNhcHRpb24tMic6IGlzQ29uZGVuc2VkLCAnaXMtY29uZGVuc2VkJzogaXNDb25kZW5zZWQsICdwci0wJzogdGFnLmlzRGlzbWlzc2FibGV9XCJcclxuICAgICAgdGl0bGU9XCJ7e3RhZy50b29sdGlwIHwgdHJhbnNsYXRlfX1cIj5cclxuICAgIDxpICpuZ0lmPVwidGFnLmljb25cIiBjbGFzcz1cImVjLWljb24ge3t0YWcuaWNvbn19IGZvbnQtY29sb3ItbXV0ZWQgZWMtaWNvbi1zbVwiPjwvaT5cclxuICAgIHt7dGFnLmxhYmVsIHwgdHJhbnNsYXRlfX1cclxuICAgIDxidXR0b24gaWQ9XCJ7e2lkfX1fdGFnX3t7aX19X2Rpc21pc3NCdXR0b25cIlxyXG4gICAgICAgICAgICAqbmdJZj1cInRhZy5pc0Rpc21pc3NhYmxlXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlVGFnKHRhZylcIj5cclxuICAgICAgPGkgY2xhc3M9XCJlYy1pY29uIGVjLWljb24tc20gaWNvbi1jYW5jZWxcIj48L2k+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2xpPlxyXG48L3VsPiJdfQ==
@@ -0,0 +1,77 @@
1
+ import { Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';
2
+ import { race, Subject, timer } from 'rxjs';
3
+ import { takeUntil } from 'rxjs/operators';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../toast.service";
6
+ import * as i2 from "@angular/common";
7
+ import * as i3 from "../../../controls/banner/banner.component";
8
+ import * as i4 from "../../../controls/link-button/link-button.component";
9
+ import * as i5 from "@ngx-translate/core";
10
+ export class ToastComponent {
11
+ constructor(toastService) {
12
+ this.toastService = toastService;
13
+ this.open = false;
14
+ this.TOAST_ANIMATION_DURATION = 250;
15
+ this.closed = new EventEmitter();
16
+ this.TIMED_TOAST_DURATION = 4000;
17
+ this.destroyed = new Subject();
18
+ }
19
+ ngOnInit() {
20
+ this.toastService.events.pipe(takeUntil(this.destroyed)).subscribe(event => {
21
+ if (event.action == 'remove' && event.toast === this.toastItem) {
22
+ this.close(event);
23
+ }
24
+ });
25
+ }
26
+ ngOnChanges(changes) {
27
+ if (changes.toastItem && this.toastItem) {
28
+ this.id = this.toastItem.id;
29
+ this.open = true;
30
+ if (!this.toastItem.dismissible) {
31
+ this.closeAfterTimer();
32
+ }
33
+ }
34
+ }
35
+ ngOnDestroy() {
36
+ this.destroyed.next();
37
+ this.destroyed.complete();
38
+ }
39
+ closeClicked() {
40
+ if (this.toastItem) {
41
+ this.toastService.dismissToast(this.toastItem, 'user');
42
+ }
43
+ }
44
+ close(event) {
45
+ this.open = false;
46
+ timer(this.TOAST_ANIMATION_DURATION).subscribe(() => {
47
+ this.closed.emit(event);
48
+ });
49
+ }
50
+ closeAfterTimer() {
51
+ timer(this.TIMED_TOAST_DURATION).pipe(takeUntil(race(this.closed, this.destroyed))).subscribe(() => {
52
+ if (this.toastItem) {
53
+ this.toastService.dismissToast(this.toastItem, 'auto');
54
+ }
55
+ });
56
+ }
57
+ }
58
+ ToastComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ToastComponent, deps: [{ token: i1.ToastService }], target: i0.ɵɵFactoryTarget.Component });
59
+ ToastComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: ToastComponent, selector: "ec-toast", inputs: { toastItem: "toastItem" }, outputs: { closed: "closed" }, host: { properties: { "attr.id": "this.id", "class.is-open": "this.open", "style.--toast-animation-duration.ms": "this.TOAST_ANIMATION_DURATION" } }, usesOnChanges: true, ngImport: i0, template: "<ec-banner id=\"{{toastItem?.id}}_banner\"\r\n [type]=\"toastItem?.type\"\r\n bannerStyle=\"toast\"\r\n [customIcon]=\"toastItem?.icon\"\r\n [showCloseBtn]=\"toastItem?.dismissible\"\r\n [autoHideOnClose]=\"false\"\r\n (closed)=\"closeClicked()\">\r\n <div class=\"d-flex\">\r\n <div id=\"{{toastItem?.id}}_message\"\r\n [innerHTML]=\"toastItem?.message | translate\"></div>\r\n <button id=\"{{toastItem?.id}}_action\"\r\n ecLinkButton\r\n *ngIf=\"toastItem?.action && toastItem?.actionLabel\"\r\n class=\"font-weight-bold ml-2\"\r\n (click)=\"toastItem!.action!()\">{{toastItem?.actionLabel | translate}}</button>\r\n </div>\r\n</ec-banner>", styles: [":host{display:block;position:fixed;bottom:0;left:50%;transform:translate(-50%,150%);transition:transform var(--toast-animation-duration, .25s);transition-timing-function:ease-in;z-index:var(--ec-z-index-toast)}:host.is-open{transform:translate(-50%,calc(-1 * var(--toast-bottom, 0rem) - 1.5rem));transition-timing-function:cubic-bezier(.18,.89,.32,1.28)}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.BannerComponent, selector: "ec-banner", inputs: ["hidden", "id", "type", "bannerStyle", "title", "text", "list", "showCloseBtn", "autoHideOnClose", "customIcon", "rememberClosed"], outputs: ["closed"] }, { kind: "component", type: i4.LinkButtonComponent, selector: "button[ecLinkButton]" }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }] });
60
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ToastComponent, decorators: [{
61
+ type: Component,
62
+ args: [{ selector: 'ec-toast', template: "<ec-banner id=\"{{toastItem?.id}}_banner\"\r\n [type]=\"toastItem?.type\"\r\n bannerStyle=\"toast\"\r\n [customIcon]=\"toastItem?.icon\"\r\n [showCloseBtn]=\"toastItem?.dismissible\"\r\n [autoHideOnClose]=\"false\"\r\n (closed)=\"closeClicked()\">\r\n <div class=\"d-flex\">\r\n <div id=\"{{toastItem?.id}}_message\"\r\n [innerHTML]=\"toastItem?.message | translate\"></div>\r\n <button id=\"{{toastItem?.id}}_action\"\r\n ecLinkButton\r\n *ngIf=\"toastItem?.action && toastItem?.actionLabel\"\r\n class=\"font-weight-bold ml-2\"\r\n (click)=\"toastItem!.action!()\">{{toastItem?.actionLabel | translate}}</button>\r\n </div>\r\n</ec-banner>", styles: [":host{display:block;position:fixed;bottom:0;left:50%;transform:translate(-50%,150%);transition:transform var(--toast-animation-duration, .25s);transition-timing-function:ease-in;z-index:var(--ec-z-index-toast)}:host.is-open{transform:translate(-50%,calc(-1 * var(--toast-bottom, 0rem) - 1.5rem));transition-timing-function:cubic-bezier(.18,.89,.32,1.28)}\n"] }]
63
+ }], ctorParameters: function () { return [{ type: i1.ToastService }]; }, propDecorators: { toastItem: [{
64
+ type: Input
65
+ }], id: [{
66
+ type: HostBinding,
67
+ args: ['attr.id']
68
+ }], open: [{
69
+ type: HostBinding,
70
+ args: ['class.is-open']
71
+ }], TOAST_ANIMATION_DURATION: [{
72
+ type: HostBinding,
73
+ args: ['style.--toast-animation-duration.ms']
74
+ }], closed: [{
75
+ type: Output
76
+ }] } });
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2Rpc3BsYXkvdG9hc3QvdG9hc3QvdG9hc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2Rpc3BsYXkvdG9hc3QvdG9hc3QvdG9hc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBZ0MsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNqSSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0FBUzNDLE1BQU0sT0FBTyxjQUFjO0lBYXpCLFlBQW9CLFlBQTBCO1FBQTFCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBUlQsU0FBSSxHQUFZLEtBQUssQ0FBQztRQUNBLDZCQUF3QixHQUFHLEdBQUcsQ0FBQztRQUV6RSxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQUV4Qyx5QkFBb0IsR0FBVyxJQUFJLENBQUM7UUFDN0MsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFFVSxDQUFDO0lBRW5ELFFBQVE7UUFDTixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN6RSxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksUUFBUSxJQUFJLEtBQUssQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDOUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUNuQjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUN2QyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBRWpCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRTtnQkFDL0IsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2FBQ3hCO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRU0sWUFBWTtRQUNqQixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztTQUN4RDtJQUNILENBQUM7SUFFTyxLQUFLLENBQUMsS0FBaUI7UUFDN0IsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7UUFDbEIsS0FBSyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDbEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sZUFBZTtRQUNyQixLQUFLLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsSUFBSSxDQUNuQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQzdDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNmLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQzthQUN4RDtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7MkdBNURVLGNBQWM7K0ZBQWQsY0FBYyw4UkNYM0IsMnZCQWdCWTsyRkRMQyxjQUFjO2tCQUwxQixTQUFTOytCQUNFLFVBQVU7bUdBTUosU0FBUztzQkFBeEIsS0FBSztnQkFFeUIsRUFBRTtzQkFBaEMsV0FBVzt1QkFBQyxTQUFTO2dCQUNlLElBQUk7c0JBQXhDLFdBQVc7dUJBQUMsZUFBZTtnQkFDK0Isd0JBQXdCO3NCQUFsRixXQUFXO3VCQUFDLHFDQUFxQztnQkFFakMsTUFBTTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyByYWNlLCBTdWJqZWN0LCB0aW1lciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFRvYXN0RXZlbnQsIFRvYXN0SXRlbSB9IGZyb20gJy4uL3RvYXN0LXR5cGVzJztcclxuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vdG9hc3Quc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VjLXRvYXN0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdG9hc3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RvYXN0LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFRvYXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgXHJcbiAgQElucHV0KCkgcHVibGljIHRvYXN0SXRlbT86IFRvYXN0SXRlbTtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJykgcHVibGljIGlkPzogc3RyaW5nO1xyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaXMtb3BlbicpIHB1YmxpYyBvcGVuOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS4tLXRvYXN0LWFuaW1hdGlvbi1kdXJhdGlvbi5tcycpIHB1YmxpYyBUT0FTVF9BTklNQVRJT05fRFVSQVRJT04gPSAyNTA7XHJcblxyXG4gIEBPdXRwdXQoKSBwdWJsaWMgY2xvc2VkID0gbmV3IEV2ZW50RW1pdHRlcjxUb2FzdEV2ZW50PigpO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IFRJTUVEX1RPQVNUX0RVUkFUSU9OOiBudW1iZXIgPSA0MDAwO1xyXG4gIHByaXZhdGUgZGVzdHJveWVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZSkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy50b2FzdFNlcnZpY2UuZXZlbnRzLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkKSkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgaWYgKGV2ZW50LmFjdGlvbiA9PSAncmVtb3ZlJyAmJiBldmVudC50b2FzdCA9PT0gdGhpcy50b2FzdEl0ZW0pIHtcclxuICAgICAgICB0aGlzLmNsb3NlKGV2ZW50KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBpZiAoY2hhbmdlcy50b2FzdEl0ZW0gJiYgdGhpcy50b2FzdEl0ZW0pIHtcclxuICAgICAgdGhpcy5pZCA9IHRoaXMudG9hc3RJdGVtLmlkO1xyXG4gICAgICB0aGlzLm9wZW4gPSB0cnVlO1xyXG5cclxuICAgICAgaWYgKCF0aGlzLnRvYXN0SXRlbS5kaXNtaXNzaWJsZSkge1xyXG4gICAgICAgIHRoaXMuY2xvc2VBZnRlclRpbWVyKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5kZXN0cm95ZWQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95ZWQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbG9zZUNsaWNrZWQoKSB7XHJcbiAgICBpZiAodGhpcy50b2FzdEl0ZW0pIHtcclxuICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZGlzbWlzc1RvYXN0KHRoaXMudG9hc3RJdGVtLCAndXNlcicpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjbG9zZShldmVudDogVG9hc3RFdmVudCkge1xyXG4gICAgdGhpcy5vcGVuID0gZmFsc2U7XHJcbiAgICB0aW1lcih0aGlzLlRPQVNUX0FOSU1BVElPTl9EVVJBVElPTikuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5jbG9zZWQuZW1pdChldmVudCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2xvc2VBZnRlclRpbWVyKCkge1xyXG4gICAgdGltZXIodGhpcy5USU1FRF9UT0FTVF9EVVJBVElPTikucGlwZShcclxuICAgICAgdGFrZVVudGlsKHJhY2UodGhpcy5jbG9zZWQsIHRoaXMuZGVzdHJveWVkKSlcclxuICAgICkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMudG9hc3RJdGVtKSB7XHJcbiAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZGlzbWlzc1RvYXN0KHRoaXMudG9hc3RJdGVtLCAnYXV0bycpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPGVjLWJhbm5lciBpZD1cInt7dG9hc3RJdGVtPy5pZH19X2Jhbm5lclwiXHJcbiAgICAgICAgICAgW3R5cGVdPVwidG9hc3RJdGVtPy50eXBlXCJcclxuICAgICAgICAgICBiYW5uZXJTdHlsZT1cInRvYXN0XCJcclxuICAgICAgICAgICBbY3VzdG9tSWNvbl09XCJ0b2FzdEl0ZW0/Lmljb25cIlxyXG4gICAgICAgICAgIFtzaG93Q2xvc2VCdG5dPVwidG9hc3RJdGVtPy5kaXNtaXNzaWJsZVwiXHJcbiAgICAgICAgICAgW2F1dG9IaWRlT25DbG9zZV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgKGNsb3NlZCk9XCJjbG9zZUNsaWNrZWQoKVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgIDxkaXYgaWQ9XCJ7e3RvYXN0SXRlbT8uaWR9fV9tZXNzYWdlXCJcclxuICAgICAgICAgW2lubmVySFRNTF09XCJ0b2FzdEl0ZW0/Lm1lc3NhZ2UgfCB0cmFuc2xhdGVcIj48L2Rpdj5cclxuICAgIDxidXR0b24gaWQ9XCJ7e3RvYXN0SXRlbT8uaWR9fV9hY3Rpb25cIlxyXG4gICAgICAgICAgICBlY0xpbmtCdXR0b25cclxuICAgICAgICAgICAgKm5nSWY9XCJ0b2FzdEl0ZW0/LmFjdGlvbiAmJiB0b2FzdEl0ZW0/LmFjdGlvbkxhYmVsXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJmb250LXdlaWdodC1ib2xkIG1sLTJcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwidG9hc3RJdGVtIS5hY3Rpb24hKClcIj57e3RvYXN0SXRlbT8uYWN0aW9uTGFiZWwgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG48L2VjLWJhbm5lcj4iXX0=
@@ -0,0 +1,35 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ import { ToastEvent } from './toast-types';
4
+ import * as i0 from "@angular/core";
5
+ export class ToastService {
6
+ constructor() {
7
+ this._events = new Subject();
8
+ this.events = this._events.asObservable();
9
+ }
10
+ /**
11
+ * Display a toast.
12
+ * If a toast of the same type is already on screen, the toast is queued until the existing one is dismissed.
13
+ */
14
+ showToast(toast, source) {
15
+ const event = new ToastEvent('add', toast, source);
16
+ this._events.next(event);
17
+ }
18
+ /**
19
+ * Remove a toast.
20
+ * This will also remove the toast from the queue if it has not already been displayed.
21
+ */
22
+ dismissToast(toast, source) {
23
+ const event = new ToastEvent('remove', toast, source);
24
+ this._events.next(event);
25
+ }
26
+ }
27
+ ToastService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ToastService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
28
+ ToastService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ToastService, providedIn: 'root' });
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ToastService, decorators: [{
30
+ type: Injectable,
31
+ args: [{
32
+ providedIn: 'root'
33
+ }]
34
+ }], ctorParameters: function () { return []; } });
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9kaXNwbGF5L3RvYXN0L3RvYXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQTBCLE1BQU0sZUFBZSxDQUFDOztBQUtuRSxNQUFNLE9BQU8sWUFBWTtJQUt2QjtRQUhRLFlBQU8sR0FBd0IsSUFBSSxPQUFPLEVBQWMsQ0FBQztRQUMxRCxXQUFNLEdBQTJCLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFcEQsQ0FBQztJQUVqQjs7O09BR0c7SUFDSSxTQUFTLENBQUMsS0FBZ0IsRUFBRSxNQUFvQjtRQUNyRCxNQUFNLEtBQUssR0FBRyxJQUFJLFVBQVUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxZQUFZLENBQUMsS0FBZ0IsRUFBRSxNQUFvQjtRQUN4RCxNQUFNLEtBQUssR0FBRyxJQUFJLFVBQVUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUM7O3lHQXZCVSxZQUFZOzZHQUFaLFlBQVksY0FGWCxNQUFNOzJGQUVQLFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFRvYXN0RXZlbnQsIFRvYXN0SXRlbSwgVG9hc3RTb3VyY2UgfSBmcm9tICcuL3RvYXN0LXR5cGVzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFRvYXN0U2VydmljZSB7XHJcblxyXG4gIHByaXZhdGUgX2V2ZW50czogU3ViamVjdDxUb2FzdEV2ZW50PiA9IG5ldyBTdWJqZWN0PFRvYXN0RXZlbnQ+KCk7XHJcbiAgcHVibGljIGV2ZW50czogT2JzZXJ2YWJsZTxUb2FzdEV2ZW50PiA9IHRoaXMuX2V2ZW50cy5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgLyoqIFxyXG4gICAqIERpc3BsYXkgYSB0b2FzdC5cclxuICAgKiBJZiBhIHRvYXN0IG9mIHRoZSBzYW1lIHR5cGUgaXMgYWxyZWFkeSBvbiBzY3JlZW4sIHRoZSB0b2FzdCBpcyBxdWV1ZWQgdW50aWwgdGhlIGV4aXN0aW5nIG9uZSBpcyBkaXNtaXNzZWQuXHJcbiAgICovXHJcbiAgcHVibGljIHNob3dUb2FzdCh0b2FzdDogVG9hc3RJdGVtLCBzb3VyY2U/OiBUb2FzdFNvdXJjZSkge1xyXG4gICAgY29uc3QgZXZlbnQgPSBuZXcgVG9hc3RFdmVudCgnYWRkJywgdG9hc3QsIHNvdXJjZSk7XHJcbiAgICB0aGlzLl9ldmVudHMubmV4dChldmVudCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZW1vdmUgYSB0b2FzdC5cclxuICAgKiBUaGlzIHdpbGwgYWxzbyByZW1vdmUgdGhlIHRvYXN0IGZyb20gdGhlIHF1ZXVlIGlmIGl0IGhhcyBub3QgYWxyZWFkeSBiZWVuIGRpc3BsYXllZC5cclxuICAgKi9cclxuICBwdWJsaWMgZGlzbWlzc1RvYXN0KHRvYXN0OiBUb2FzdEl0ZW0sIHNvdXJjZT86IFRvYXN0U291cmNlKSB7XHJcbiAgICBjb25zdCBldmVudCA9IG5ldyBUb2FzdEV2ZW50KCdyZW1vdmUnLCB0b2FzdCwgc291cmNlKTtcclxuICAgIHRoaXMuX2V2ZW50cy5uZXh0KGV2ZW50KTtcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,114 @@
1
+ import { Component, ElementRef, ViewChild } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ import { takeUntil } from 'rxjs/operators';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../toast.service";
6
+ import * as i2 from "../../../core/telemetry.service";
7
+ import * as i3 from "../toast/toast.component";
8
+ export class ToasterComponent {
9
+ constructor(toastService, telemetryService) {
10
+ this.toastService = toastService;
11
+ this.telemetryService = telemetryService;
12
+ this.dismissibleToastBottom = 0;
13
+ this.pendingToasts = [];
14
+ this.destroyed = new Subject();
15
+ }
16
+ ngOnInit() {
17
+ this.toastService.events.pipe(takeUntil(this.destroyed)).subscribe(event => {
18
+ if (event.action == 'add') {
19
+ this.addToast(event.toast);
20
+ this.updateDismissibleToastBottom();
21
+ this.trackEvent(event);
22
+ }
23
+ else if (event.action == 'remove' && event.toast !== this.currentDismissibleToast && event.toast !== this.currentTimedToast) {
24
+ this.removePendingToast(event.toast);
25
+ this.trackEvent(event);
26
+ }
27
+ });
28
+ }
29
+ ngOnDestroy() {
30
+ this.destroyed.next();
31
+ this.destroyed.complete();
32
+ }
33
+ updateVisibleToast(event) {
34
+ if (event.toast.dismissible) {
35
+ this.currentDismissibleToast = this.getNextToast(true);
36
+ }
37
+ else {
38
+ this.currentTimedToast = this.getNextToast(false);
39
+ }
40
+ this.updateDismissibleToastBottom();
41
+ this.trackEvent(event);
42
+ }
43
+ addToast(toast) {
44
+ if ((toast.dismissible && this.currentDismissibleToast) || (!toast.dismissible && this.currentTimedToast)) {
45
+ this.addPendingToast(toast);
46
+ }
47
+ else if (toast.dismissible) {
48
+ this.currentDismissibleToast = toast;
49
+ }
50
+ else {
51
+ this.currentTimedToast = toast;
52
+ }
53
+ }
54
+ /** Returns the next pending toast of the specified type and removes it from the list of pending toasts. */
55
+ getNextToast(dismissible) {
56
+ const toast = this.pendingToasts.find(t => t.dismissible === dismissible);
57
+ if (toast) {
58
+ this.removePendingToast(toast);
59
+ }
60
+ return toast;
61
+ }
62
+ /** Add a toast to the list of pending toasts */
63
+ addPendingToast(toast) {
64
+ this.pendingToasts.push(toast);
65
+ }
66
+ /** Removes the specified toast from the list of pending toasts */
67
+ removePendingToast(toast) {
68
+ const index = this.pendingToasts.indexOf(toast);
69
+ if (index > -1) {
70
+ this.pendingToasts.splice(index, 1);
71
+ }
72
+ }
73
+ /**
74
+ * If the timed toast is present, sets the bottom height of the dismissible toast to
75
+ * the current height of the timed toast plus .5rem for spacing.
76
+ * Returns 0 if there isn't a visible timed toast.
77
+ */
78
+ updateDismissibleToastBottom() {
79
+ if (this.currentTimedToast && this.timedToastEl) {
80
+ this.dismissibleToastBottom = (this.timedToastEl.nativeElement.offsetHeight + 8) / 16;
81
+ }
82
+ else {
83
+ this.dismissibleToastBottom = 0;
84
+ }
85
+ }
86
+ trackEvent(event) {
87
+ const dismissible = this.pendingToasts.filter(t => t.dismissible);
88
+ const transient = this.pendingToasts.filter(t => !t.dismissible);
89
+ this.telemetryService.trackEvent(`${event.action} toast`, {
90
+ action: event.action,
91
+ source: event.source,
92
+ hasDismissiblePending: dismissible.length > 0 ? 'yes' : 'no',
93
+ dismissiblePendingLength: `${dismissible.length}`,
94
+ hasTransientPending: transient.length > 0 ? 'yes' : 'no',
95
+ transientPendingLength: `${transient.length}`,
96
+ toastId: event.toast.id ?? '',
97
+ toastType: event.toast.type,
98
+ toastMessage: event.toast.message,
99
+ toastDismissible: `${event.toast.dismissible}`,
100
+ toastIcon: event.toast.icon ?? '',
101
+ toastAction: event.toast.actionLabel ?? '',
102
+ });
103
+ }
104
+ }
105
+ ToasterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ToasterComponent, deps: [{ token: i1.ToastService }, { token: i2.TelemetryService }], target: i0.ɵɵFactoryTarget.Component });
106
+ ToasterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: ToasterComponent, selector: "ec-toaster", viewQueries: [{ propertyName: "timedToastEl", first: true, predicate: ["timedToast"], descendants: true, read: ElementRef }], ngImport: i0, template: "<ec-toast [toastItem]=\"currentDismissibleToast\"\r\n [style.--toast-bottom.rem]=\"dismissibleToastBottom\"\r\n (closed)=\"updateVisibleToast($event)\">\r\n</ec-toast>\r\n\r\n<ec-toast #timedToast\r\n [toastItem]=\"currentTimedToast\"\r\n (closed)=\"updateVisibleToast($event)\">\r\n</ec-toast>", dependencies: [{ kind: "component", type: i3.ToastComponent, selector: "ec-toast", inputs: ["toastItem"], outputs: ["closed"] }] });
107
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ToasterComponent, decorators: [{
108
+ type: Component,
109
+ args: [{ selector: 'ec-toaster', template: "<ec-toast [toastItem]=\"currentDismissibleToast\"\r\n [style.--toast-bottom.rem]=\"dismissibleToastBottom\"\r\n (closed)=\"updateVisibleToast($event)\">\r\n</ec-toast>\r\n\r\n<ec-toast #timedToast\r\n [toastItem]=\"currentTimedToast\"\r\n (closed)=\"updateVisibleToast($event)\">\r\n</ec-toast>" }]
110
+ }], ctorParameters: function () { return [{ type: i1.ToastService }, { type: i2.TelemetryService }]; }, propDecorators: { timedToastEl: [{
111
+ type: ViewChild,
112
+ args: ['timedToast', { static: false, read: ElementRef }]
113
+ }] } });
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3Rlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvZGlzcGxheS90b2FzdC90b2FzdGVyL3RvYXN0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2Rpc3BsYXkvdG9hc3QvdG9hc3Rlci90b2FzdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBUzNDLE1BQU0sT0FBTyxnQkFBZ0I7SUFVM0IsWUFDVSxZQUEwQixFQUMxQixnQkFBa0M7UUFEbEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQVJyQywyQkFBc0IsR0FBVyxDQUFDLENBQUM7UUFHbEMsa0JBQWEsR0FBZ0IsRUFBRSxDQUFDO1FBQ2hDLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBSzlCLENBQUM7SUFFTCxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDekUsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLEtBQUssRUFBRTtnQkFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNCLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO2dCQUNwQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3hCO2lCQUFNLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxRQUFRLElBQUksS0FBSyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsdUJBQXVCLElBQUksS0FBSyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsaUJBQWlCLEVBQUU7Z0JBQzdILElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDeEI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxLQUFpQjtRQUN6QyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFO1lBQzNCLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3hEO2FBQU07WUFDTCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNuRDtRQUVELElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVPLFFBQVEsQ0FBQyxLQUFnQjtRQUMvQixJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRTtZQUN6RyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzdCO2FBQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxFQUFFO1lBQzVCLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxLQUFLLENBQUM7U0FDdEM7YUFBTTtZQUNMLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7U0FDaEM7SUFDSCxDQUFDO0lBRUQsMkdBQTJHO0lBQ25HLFlBQVksQ0FBQyxXQUFvQjtRQUN2QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEtBQUssV0FBVyxDQUFDLENBQUM7UUFDMUUsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDaEM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxnREFBZ0Q7SUFDeEMsZUFBZSxDQUFDLEtBQWdCO1FBQ3RDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxrRUFBa0U7SUFDMUQsa0JBQWtCLENBQUMsS0FBZ0I7UUFDekMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEQsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUU7WUFDZCxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDckM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLDRCQUE0QjtRQUNsQyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQy9DLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7U0FDdkY7YUFBTTtZQUNMLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxDQUFDLENBQUM7U0FDakM7SUFDSCxDQUFDO0lBRU8sVUFBVSxDQUFDLEtBQWlCO1FBQ2xDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2xFLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFakUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLFFBQVEsRUFBRTtZQUN4RCxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07WUFDcEIsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO1lBQ3BCLHFCQUFxQixFQUFFLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDNUQsd0JBQXdCLEVBQUUsR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFO1lBQ2pELG1CQUFtQixFQUFFLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDeEQsc0JBQXNCLEVBQUUsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFO1lBQzdDLE9BQU8sRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxFQUFFO1lBQzdCLFNBQVMsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUk7WUFDM0IsWUFBWSxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTztZQUNqQyxnQkFBZ0IsRUFBRSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFO1lBQzlDLFNBQVMsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxFQUFFO1lBQ2pDLFdBQVcsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLFdBQVcsSUFBSSxFQUFFO1NBQzNDLENBQUMsQ0FBQztJQUNMLENBQUM7OzZHQTNHVSxnQkFBZ0I7aUdBQWhCLGdCQUFnQix5SUFLcUIsVUFBVSw2QkNoQjVELDRVQVFXOzJGREdFLGdCQUFnQjtrQkFKNUIsU0FBUzsrQkFDRSxZQUFZO2tJQVF3QyxZQUFZO3NCQUF6RSxTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgVGVsZW1ldHJ5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvdGVsZW1ldHJ5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUb2FzdEV2ZW50LCBUb2FzdEl0ZW0gfSBmcm9tICcuLi90b2FzdC10eXBlcyc7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uL3RvYXN0LnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdlYy10b2FzdGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdG9hc3Rlci5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFRvYXN0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIHB1YmxpYyBjdXJyZW50VGltZWRUb2FzdD86IFRvYXN0SXRlbTtcclxuICBwdWJsaWMgY3VycmVudERpc21pc3NpYmxlVG9hc3Q/OiBUb2FzdEl0ZW07XHJcbiAgcHVibGljIGRpc21pc3NpYmxlVG9hc3RCb3R0b206IG51bWJlciA9IDA7XHJcbiAgQFZpZXdDaGlsZCgndGltZWRUb2FzdCcsIHsgc3RhdGljOiBmYWxzZSwgcmVhZDogRWxlbWVudFJlZiB9KSB0aW1lZFRvYXN0RWw/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuICBcclxuICBwcml2YXRlIHBlbmRpbmdUb2FzdHM6IFRvYXN0SXRlbVtdID0gW107XHJcbiAgcHJpdmF0ZSBkZXN0cm95ZWQgPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgdG9hc3RTZXJ2aWNlOiBUb2FzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRlbGVtZXRyeVNlcnZpY2U6IFRlbGVtZXRyeVNlcnZpY2VcclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMudG9hc3RTZXJ2aWNlLmV2ZW50cy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCkpLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgIGlmIChldmVudC5hY3Rpb24gPT0gJ2FkZCcpIHtcclxuICAgICAgICB0aGlzLmFkZFRvYXN0KGV2ZW50LnRvYXN0KTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURpc21pc3NpYmxlVG9hc3RCb3R0b20oKTtcclxuICAgICAgICB0aGlzLnRyYWNrRXZlbnQoZXZlbnQpO1xyXG4gICAgICB9IGVsc2UgaWYgKGV2ZW50LmFjdGlvbiA9PSAncmVtb3ZlJyAmJiBldmVudC50b2FzdCAhPT0gdGhpcy5jdXJyZW50RGlzbWlzc2libGVUb2FzdCAmJiBldmVudC50b2FzdCAhPT0gdGhpcy5jdXJyZW50VGltZWRUb2FzdCkge1xyXG4gICAgICAgIHRoaXMucmVtb3ZlUGVuZGluZ1RvYXN0KGV2ZW50LnRvYXN0KTtcclxuICAgICAgICB0aGlzLnRyYWNrRXZlbnQoZXZlbnQpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95ZWQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95ZWQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB1cGRhdGVWaXNpYmxlVG9hc3QoZXZlbnQ6IFRvYXN0RXZlbnQpIHtcclxuICAgIGlmIChldmVudC50b2FzdC5kaXNtaXNzaWJsZSkge1xyXG4gICAgICB0aGlzLmN1cnJlbnREaXNtaXNzaWJsZVRvYXN0ID0gdGhpcy5nZXROZXh0VG9hc3QodHJ1ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmN1cnJlbnRUaW1lZFRvYXN0ID0gdGhpcy5nZXROZXh0VG9hc3QoZmFsc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudXBkYXRlRGlzbWlzc2libGVUb2FzdEJvdHRvbSgpO1xyXG4gICAgdGhpcy50cmFja0V2ZW50KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkVG9hc3QodG9hc3Q6IFRvYXN0SXRlbSkge1xyXG4gICAgaWYgKCh0b2FzdC5kaXNtaXNzaWJsZSAmJiB0aGlzLmN1cnJlbnREaXNtaXNzaWJsZVRvYXN0KSB8fCAoIXRvYXN0LmRpc21pc3NpYmxlICYmIHRoaXMuY3VycmVudFRpbWVkVG9hc3QpKSB7XHJcbiAgICAgIHRoaXMuYWRkUGVuZGluZ1RvYXN0KHRvYXN0KTtcclxuICAgIH0gZWxzZSBpZiAodG9hc3QuZGlzbWlzc2libGUpIHtcclxuICAgICAgdGhpcy5jdXJyZW50RGlzbWlzc2libGVUb2FzdCA9IHRvYXN0O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jdXJyZW50VGltZWRUb2FzdCA9IHRvYXN0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIFJldHVybnMgdGhlIG5leHQgcGVuZGluZyB0b2FzdCBvZiB0aGUgc3BlY2lmaWVkIHR5cGUgYW5kIHJlbW92ZXMgaXQgZnJvbSB0aGUgbGlzdCBvZiBwZW5kaW5nIHRvYXN0cy4gKi9cclxuICBwcml2YXRlIGdldE5leHRUb2FzdChkaXNtaXNzaWJsZTogYm9vbGVhbik6IFRvYXN0SXRlbSB8IHVuZGVmaW5lZCB7XHJcbiAgICBjb25zdCB0b2FzdCA9IHRoaXMucGVuZGluZ1RvYXN0cy5maW5kKHQgPT4gdC5kaXNtaXNzaWJsZSA9PT0gZGlzbWlzc2libGUpO1xyXG4gICAgaWYgKHRvYXN0KSB7XHJcbiAgICAgIHRoaXMucmVtb3ZlUGVuZGluZ1RvYXN0KHRvYXN0KTtcclxuICAgIH1cclxuICAgIHJldHVybiB0b2FzdDtcclxuICB9XHJcblxyXG4gIC8qKiBBZGQgYSB0b2FzdCB0byB0aGUgbGlzdCBvZiBwZW5kaW5nIHRvYXN0cyAqL1xyXG4gIHByaXZhdGUgYWRkUGVuZGluZ1RvYXN0KHRvYXN0OiBUb2FzdEl0ZW0pIHtcclxuICAgIHRoaXMucGVuZGluZ1RvYXN0cy5wdXNoKHRvYXN0KTtcclxuICB9XHJcblxyXG4gIC8qKiBSZW1vdmVzIHRoZSBzcGVjaWZpZWQgdG9hc3QgZnJvbSB0aGUgbGlzdCBvZiBwZW5kaW5nIHRvYXN0cyAqL1xyXG4gIHByaXZhdGUgcmVtb3ZlUGVuZGluZ1RvYXN0KHRvYXN0OiBUb2FzdEl0ZW0pIHtcclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5wZW5kaW5nVG9hc3RzLmluZGV4T2YodG9hc3QpO1xyXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgdGhpcy5wZW5kaW5nVG9hc3RzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogXHJcbiAgICogSWYgdGhlIHRpbWVkIHRvYXN0IGlzIHByZXNlbnQsIHNldHMgdGhlIGJvdHRvbSBoZWlnaHQgb2YgdGhlIGRpc21pc3NpYmxlIHRvYXN0IHRvXHJcbiAgICogdGhlIGN1cnJlbnQgaGVpZ2h0IG9mIHRoZSB0aW1lZCB0b2FzdCBwbHVzIC41cmVtIGZvciBzcGFjaW5nLlxyXG4gICAqIFJldHVybnMgMCBpZiB0aGVyZSBpc24ndCBhIHZpc2libGUgdGltZWQgdG9hc3QuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB1cGRhdGVEaXNtaXNzaWJsZVRvYXN0Qm90dG9tKCkge1xyXG4gICAgaWYgKHRoaXMuY3VycmVudFRpbWVkVG9hc3QgJiYgdGhpcy50aW1lZFRvYXN0RWwpIHtcclxuICAgICAgdGhpcy5kaXNtaXNzaWJsZVRvYXN0Qm90dG9tID0gKHRoaXMudGltZWRUb2FzdEVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0ICsgOCkgLyAxNjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZGlzbWlzc2libGVUb2FzdEJvdHRvbSA9IDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRyYWNrRXZlbnQoZXZlbnQ6IFRvYXN0RXZlbnQpIHtcclxuICAgIGNvbnN0IGRpc21pc3NpYmxlID0gdGhpcy5wZW5kaW5nVG9hc3RzLmZpbHRlcih0ID0+IHQuZGlzbWlzc2libGUpO1xyXG4gICAgY29uc3QgdHJhbnNpZW50ID0gdGhpcy5wZW5kaW5nVG9hc3RzLmZpbHRlcih0ID0+ICF0LmRpc21pc3NpYmxlKTtcclxuXHJcbiAgICB0aGlzLnRlbGVtZXRyeVNlcnZpY2UudHJhY2tFdmVudChgJHtldmVudC5hY3Rpb259IHRvYXN0YCwge1xyXG4gICAgICBhY3Rpb246IGV2ZW50LmFjdGlvbixcclxuICAgICAgc291cmNlOiBldmVudC5zb3VyY2UsXHJcbiAgICAgIGhhc0Rpc21pc3NpYmxlUGVuZGluZzogZGlzbWlzc2libGUubGVuZ3RoID4gMCA/ICd5ZXMnIDogJ25vJyxcclxuICAgICAgZGlzbWlzc2libGVQZW5kaW5nTGVuZ3RoOiBgJHtkaXNtaXNzaWJsZS5sZW5ndGh9YCxcclxuICAgICAgaGFzVHJhbnNpZW50UGVuZGluZzogdHJhbnNpZW50Lmxlbmd0aCA+IDAgPyAneWVzJyA6ICdubycsXHJcbiAgICAgIHRyYW5zaWVudFBlbmRpbmdMZW5ndGg6IGAke3RyYW5zaWVudC5sZW5ndGh9YCxcclxuICAgICAgdG9hc3RJZDogZXZlbnQudG9hc3QuaWQgPz8gJycsXHJcbiAgICAgIHRvYXN0VHlwZTogZXZlbnQudG9hc3QudHlwZSxcclxuICAgICAgdG9hc3RNZXNzYWdlOiBldmVudC50b2FzdC5tZXNzYWdlLFxyXG4gICAgICB0b2FzdERpc21pc3NpYmxlOiBgJHtldmVudC50b2FzdC5kaXNtaXNzaWJsZX1gLFxyXG4gICAgICB0b2FzdEljb246IGV2ZW50LnRvYXN0Lmljb24gPz8gJycsXHJcbiAgICAgIHRvYXN0QWN0aW9uOiBldmVudC50b2FzdC5hY3Rpb25MYWJlbCA/PyAnJyxcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8ZWMtdG9hc3QgW3RvYXN0SXRlbV09XCJjdXJyZW50RGlzbWlzc2libGVUb2FzdFwiXHJcbiAgICAgICAgICBbc3R5bGUuLS10b2FzdC1ib3R0b20ucmVtXT1cImRpc21pc3NpYmxlVG9hc3RCb3R0b21cIlxyXG4gICAgICAgICAgKGNsb3NlZCk9XCJ1cGRhdGVWaXNpYmxlVG9hc3QoJGV2ZW50KVwiPlxyXG48L2VjLXRvYXN0PlxyXG5cclxuPGVjLXRvYXN0ICN0aW1lZFRvYXN0XHJcbiAgICAgICAgICBbdG9hc3RJdGVtXT1cImN1cnJlbnRUaW1lZFRvYXN0XCJcclxuICAgICAgICAgIChjbG9zZWQpPVwidXBkYXRlVmlzaWJsZVRvYXN0KCRldmVudClcIj5cclxuPC9lYy10b2FzdD4iXX0=
@@ -0,0 +1,25 @@
1
+ import { Component, EventEmitter, HostBinding } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ import * as i2 from "../../controls/button/button.component";
5
+ export class TooltipComponent {
6
+ constructor() {
7
+ this.position = 'top-center';
8
+ this.dismissible = false;
9
+ this.onHide = new EventEmitter();
10
+ }
11
+ hide() {
12
+ this.onHide.next();
13
+ this.overlayRef?.dispose();
14
+ }
15
+ }
16
+ TooltipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TooltipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
17
+ TooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: TooltipComponent, selector: "ec-tooltip", host: { properties: { "style.--ec-tooltip-background-color": "this.backgroundColor" } }, ngImport: i0, template: "<article id=\"{{id}}\" class=\"py-3 position-{{position}}\">\r\n <header *ngIf=\"title || subtitle\" class=\"mb-3\">\r\n <h1 class=\"text-heading-2 px-3 mb-0\">{{title}}</h1>\r\n <p class=\"text-caption-1 px-3 mb-0\">{{subtitle}}</p>\r\n </header>\r\n \r\n <ng-container *ngIf=\"customContent; else textTemplate\">\r\n <ng-container *ngTemplateOutlet=\"customContent\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-template #textTemplate>\r\n <div class=\"text-body-1 px-3\" [innerHTML]=\"text\"></div>\r\n </ng-template>\r\n \r\n <ec-button *ngIf=\"dismissible\" id=\"tooltipDismiss\" type=\"icon\" icon=\"icon-cancel\" (clicked)=\"hide()\" style=\"--ec-button-color-icon: var(--ec-color-secondary-light);\"></ec-button>\r\n</article>", 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{display:block;padding:.75rem}article{background-color:var(--ec-tooltip-background-color, #162F3B);color:var(--ec-tooltip-color, var(--ec-color-primary-light));border-radius:var(--ec-border-radius-card);position:relative;box-shadow:var(--ec-box-shadow-overlay)}article:after{content:\"\";height:0;width:0;border:.625rem solid transparent;display:block;position:absolute}article.position-top-left:after,article.position-top-center:after,article.position-top-right:after{bottom:-1.25rem;border-top-color:var(--ec-tooltip-background-color, #162F3B)}article.position-bottom-left:after,article.position-bottom-center:after,article.position-bottom-right:after{top:-1.25rem;border-bottom-color:var(--ec-tooltip-background-color, #162F3B)}article.position-top-left:after,article.position-bottom-left:after{right:1rem}article.position-top-right:after,article.position-bottom-right:after{left:1rem}article.position-top-center:after,article.position-bottom-center:after{right:50%;transform:translate(50%)}article.position-right-top:after,article.position-right-center:after,article.position-right-bottom:after{left:-1.25rem;border-right-color:var(--ec-tooltip-background-color, #162F3B)}article.position-left-top:after,article.position-left-center:after,article.position-left-bottom:after{right:-1.25rem;border-left-color:var(--ec-tooltip-background-color, #162F3B)}article.position-left-top:after,article.position-right-top:after{top:1rem}article.position-left-bottom:after,article.position-right-bottom:after{bottom:1rem}article.position-left-center:after,article.position-right-center:after{bottom:50%;transform:translateY(50%)}.text-heading-2,.text-body-1{color:var(--ec-color-primary-light)}.text-body-1 ::ng-deep p:last-child{margin-bottom:0}.text-body-1 ::ng-deep a{color:#82c0d3;font-weight:var(--ec-font-weight-bold)}.text-caption-1{color:var(--ec-color-secondary-light)}ec-button{position:absolute;top:.25rem;right:.25rem}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.ButtonComponent, selector: "ec-button", inputs: ["id", "disabled", "icon", "label", "badge", "tabindex", "type", "pending", "pendingIcon", "customTemplate", "isSubmit", "autofocus"], outputs: ["clicked"] }] });
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TooltipComponent, decorators: [{
19
+ type: Component,
20
+ args: [{ selector: 'ec-tooltip', template: "<article id=\"{{id}}\" class=\"py-3 position-{{position}}\">\r\n <header *ngIf=\"title || subtitle\" class=\"mb-3\">\r\n <h1 class=\"text-heading-2 px-3 mb-0\">{{title}}</h1>\r\n <p class=\"text-caption-1 px-3 mb-0\">{{subtitle}}</p>\r\n </header>\r\n \r\n <ng-container *ngIf=\"customContent; else textTemplate\">\r\n <ng-container *ngTemplateOutlet=\"customContent\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-template #textTemplate>\r\n <div class=\"text-body-1 px-3\" [innerHTML]=\"text\"></div>\r\n </ng-template>\r\n \r\n <ec-button *ngIf=\"dismissible\" id=\"tooltipDismiss\" type=\"icon\" icon=\"icon-cancel\" (clicked)=\"hide()\" style=\"--ec-button-color-icon: var(--ec-color-secondary-light);\"></ec-button>\r\n</article>", 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{display:block;padding:.75rem}article{background-color:var(--ec-tooltip-background-color, #162F3B);color:var(--ec-tooltip-color, var(--ec-color-primary-light));border-radius:var(--ec-border-radius-card);position:relative;box-shadow:var(--ec-box-shadow-overlay)}article:after{content:\"\";height:0;width:0;border:.625rem solid transparent;display:block;position:absolute}article.position-top-left:after,article.position-top-center:after,article.position-top-right:after{bottom:-1.25rem;border-top-color:var(--ec-tooltip-background-color, #162F3B)}article.position-bottom-left:after,article.position-bottom-center:after,article.position-bottom-right:after{top:-1.25rem;border-bottom-color:var(--ec-tooltip-background-color, #162F3B)}article.position-top-left:after,article.position-bottom-left:after{right:1rem}article.position-top-right:after,article.position-bottom-right:after{left:1rem}article.position-top-center:after,article.position-bottom-center:after{right:50%;transform:translate(50%)}article.position-right-top:after,article.position-right-center:after,article.position-right-bottom:after{left:-1.25rem;border-right-color:var(--ec-tooltip-background-color, #162F3B)}article.position-left-top:after,article.position-left-center:after,article.position-left-bottom:after{right:-1.25rem;border-left-color:var(--ec-tooltip-background-color, #162F3B)}article.position-left-top:after,article.position-right-top:after{top:1rem}article.position-left-bottom:after,article.position-right-bottom:after{bottom:1rem}article.position-left-center:after,article.position-right-center:after{bottom:50%;transform:translateY(50%)}.text-heading-2,.text-body-1{color:var(--ec-color-primary-light)}.text-body-1 ::ng-deep p:last-child{margin-bottom:0}.text-body-1 ::ng-deep a{color:#82c0d3;font-weight:var(--ec-font-weight-bold)}.text-caption-1{color:var(--ec-color-secondary-light)}ec-button{position:absolute;top:.25rem;right:.25rem}\n"] }]
21
+ }], propDecorators: { backgroundColor: [{
22
+ type: HostBinding,
23
+ args: ['style.--ec-tooltip-background-color']
24
+ }] } });
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvZGlzcGxheS90b29sdGlwL3Rvb2x0aXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2Rpc3BsYXkvdG9vbHRpcC90b29sdGlwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBZSxNQUFNLGVBQWUsQ0FBQzs7OztBQTZDbEYsTUFBTSxPQUFPLGdCQUFnQjtJQUw3QjtRQU1FLGFBQVEsR0FBb0IsWUFBWSxDQUFDO1FBTXpDLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBT3BCLFdBQU0sR0FBdUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztLQU1qRDtJQUpDLElBQUk7UUFDRixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLENBQUM7SUFDN0IsQ0FBQzs7NkdBbkJVLGdCQUFnQjtpR0FBaEIsZ0JBQWdCLDJJQzlDN0Isd3ZCQWVVOzJGRCtCRyxnQkFBZ0I7a0JBTDVCLFNBQVM7K0JBQ0UsWUFBWTs4QkFnQnRCLGVBQWU7c0JBRGQsV0FBVzt1QkFBQyxxQ0FBcUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG4vKipcclxuICogVGhlIHBvc2l0aW9uIG9mIHRoZSB0b29sdGlwIHJlbGF0aXZlIHRvIGl0cyBhbmNob3IuIEZvciBleGFtcGxlLCBpZiBwb3NpdGlvbiBpcyAndG9wLWxlZnQnIHRoZSB0aGUgdG9vbHRpcCB3aWxsIGFwcGVhciBhYm92ZSB0aGUgYW5jaG9yIGFuZCBleHBhbmQgdG8gdGhlIGxlZnQgb2YgdGhlIGFuY2hvci5cclxuICovXHJcbmV4cG9ydCB0eXBlIFRvb2x0aXBQb3NpdGlvbiA9ICd0b3AtbGVmdCcgfCAndG9wLWNlbnRlcicgfCAndG9wLXJpZ2h0JyB8ICdyaWdodC10b3AnIHwgJ3JpZ2h0LWNlbnRlcicgfCAncmlnaHQtYm90dG9tJyB8ICdib3R0b20tbGVmdCcgfCAnYm90dG9tLWNlbnRlcicgfCAnYm90dG9tLXJpZ2h0JyB8ICdsZWZ0LXRvcCcgfCAnbGVmdC1jZW50ZXInIHwgJ2xlZnQtYm90dG9tJztcclxuZXhwb3J0IGludGVyZmFjZSBUb29sdGlwT3B0aW9ucyB7XHJcbiAgLyoqXHJcbiAgICogVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSB0b29sdGlwIHRoYXQgaXMgYXNzaWduZWQgdG8gdGhlIDxhcnRpY2xlPiBlbGVtZW50IHRoYXQgd3JhcHMgdGhlIHRvb2x0aXAgY29udGVudC5cclxuICAgKi9cclxuICAgaWQ/OiBzdHJpbmc7XHJcbiAgLyoqXHJcbiAgICogVGhlIHRvb2x0aXAgdGl0bGUuIEhpZGRlbiBpZiBub3QgZGVmaW5lZC4gVGhlIHRvb2x0aXAgaGVhZGVyIGlzIGhpZGRlbiBpZiBib3RoIHRpdGxlIGFuZCBzdWJ0aWxlIGFyZSBub3QgZGVmaW5lZC5cclxuICAgKi9cclxuICB0aXRsZT86IHN0cmluZztcclxuICAvKipcclxuICAgKiBUZXh0IHRvIGRpc3BsYXkgdW5kZXIgdGhlIHRvb2x0aXAgdGl0bGUuIEhpZGRlbiBpZiBub3QgZGVmaW5lZC4gVGhlIHRvb2x0aXAgaGVhZGVyIGlzIGhpZGRlbiBpZiBib3RoIHRpdGxlIGFuZCBzdWJ0aXRsZSBhcmUgbm90IGRlZmluZWQuXHJcbiAgICovXHJcbiAgc3VidGl0bGU/OiBzdHJpbmc7XHJcbiAgLyoqXHJcbiAgICogSFRNTCBzdHJpbmcgZm9yIHRoZSBtYWluIGNvbnRlbnQgb2YgdGhlIHRvb2x0aXAuIFdpbGwgYmUgaWdub3JlZCBpZiBjdXN0b21Db250ZW50IGhhcyBhIHZhbHVlLlxyXG4gICAqL1xyXG4gIHRleHQ/OiBzdHJpbmc7XHJcbiAgLyoqXHJcbiAgICogUHJvdmlkZSBhIFRlbXBsYXRlUmVmIGZvciBjdXN0b20gY29udGVudC4gSWYgY3VzdG9tQ29udGVudCBpcyBkZWZpbmVkLCBhbnkgdmFsdWUgZm9yIHRleHQgd2lsbCBiZSBpZ25vcmVkLlxyXG4gICAqL1xyXG4gIGN1c3RvbUNvbnRlbnQ/OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIC8qKlxyXG4gICAqIFdoZW4gdHJ1ZSBhIGNsb3NlIGJ1dHRvbiBhcHBlYXJzIGluIHRoZSB0b3AgcmlnaHQgY29ybmVyIHRvIGhpZGUgdGhlIHRvb2x0aXAuIFVzZWZ1bCB3aGVuIHRvb2x0aXBzIGFyZSB1c2VkIGluIGEgdG91ci4gQW4gZXZlbnQgd2lsbCBlbWl0dGVkIHdoZW4gdGhlIHRvb2x0aXAgaXMgaGlkZGVuLlxyXG4gICAqL1xyXG4gIGRpc21pc3NpYmxlPzogYm9vbGVhbjtcclxuICAvKipcclxuICAgKiBOdW1iZXIgaW4gcGl4ZWxzIG9mIHRoZSB3aWR0aCBvZiB0aGUgdG9vbHRpcC4gSWYgdW5kZWZpbmVkIHdpZHRoIHdpbGwgYmUgYXV0by5cclxuICAgKi9cclxuICB3aWR0aD86IG51bWJlcjtcclxuICAvKipcclxuICAgKiBDdXN0b21pemUgdGhlIGJhY2tncm91bmQgY29sb3IuIENhbiBiZSBhbnkgY29sb3IgdmFsdWUgb3IgY3NzIHZhcmlhbGJlIHdpdGggdmFyKCkgZnVuY3Rpb24uIEZvciBleGFtcGxlOiB2YXIoLS1lYy1iYWNrZ3JvdW5kLWNvbG9yLXN1Y2Nlc3MpO1xyXG4gICAqL1xyXG4gIGJhY2tncm91bmRDb2xvcj86IHN0cmluZztcclxufVxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VjLXRvb2x0aXAnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90b29sdGlwLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90b29sdGlwLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFRvb2x0aXBDb21wb25lbnQgaW1wbGVtZW50cyBUb29sdGlwT3B0aW9ucyB7XHJcbiAgcG9zaXRpb246IFRvb2x0aXBQb3NpdGlvbiA9ICd0b3AtY2VudGVyJztcclxuICBcclxuICBpZD86IHN0cmluZztcclxuICB0aXRsZT86IHN0cmluZztcclxuICBzdWJ0aXRsZT86IHN0cmluZztcclxuICB0ZXh0Pzogc3RyaW5nO1xyXG4gIGRpc21pc3NpYmxlID0gZmFsc2U7XHJcbiAgY3VzdG9tQ29udGVudD86IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XHJcbiAgb3ZlcmxheVJlZj86IE92ZXJsYXlSZWY7XHJcblxyXG4gIEBIb3N0QmluZGluZygnc3R5bGUuLS1lYy10b29sdGlwLWJhY2tncm91bmQtY29sb3InKVxyXG4gIGJhY2tncm91bmRDb2xvcj86IHN0cmluZztcclxuXHJcbiAgb25IaWRlOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIGhpZGUoKSB7XHJcbiAgICB0aGlzLm9uSGlkZS5uZXh0KCk7XHJcbiAgICB0aGlzLm92ZXJsYXlSZWY/LmRpc3Bvc2UoKTtcclxuICB9XHJcbn1cclxuIiwiPGFydGljbGUgaWQ9XCJ7e2lkfX1cIiBjbGFzcz1cInB5LTMgcG9zaXRpb24te3twb3NpdGlvbn19XCI+XHJcbiAgPGhlYWRlciAqbmdJZj1cInRpdGxlIHx8IHN1YnRpdGxlXCIgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICA8aDEgY2xhc3M9XCJ0ZXh0LWhlYWRpbmctMiBweC0zIG1iLTBcIj57e3RpdGxlfX08L2gxPlxyXG4gICAgPHAgY2xhc3M9XCJ0ZXh0LWNhcHRpb24tMSBweC0zIG1iLTBcIj57e3N1YnRpdGxlfX08L3A+XHJcbiAgPC9oZWFkZXI+XHJcbiAgXHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbUNvbnRlbnQ7IGVsc2UgdGV4dFRlbXBsYXRlXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY3VzdG9tQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI3RleHRUZW1wbGF0ZT5cclxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWJvZHktMSBweC0zXCIgW2lubmVySFRNTF09XCJ0ZXh0XCI+PC9kaXY+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuICBcclxuICA8ZWMtYnV0dG9uICpuZ0lmPVwiZGlzbWlzc2libGVcIiBpZD1cInRvb2x0aXBEaXNtaXNzXCIgdHlwZT1cImljb25cIiBpY29uPVwiaWNvbi1jYW5jZWxcIiAoY2xpY2tlZCk9XCJoaWRlKClcIiBzdHlsZT1cIi0tZWMtYnV0dG9uLWNvbG9yLWljb246IHZhcigtLWVjLWNvbG9yLXNlY29uZGFyeS1saWdodCk7XCI+PC9lYy1idXR0b24+XHJcbjwvYXJ0aWNsZT4iXX0=
@@ -0,0 +1,63 @@
1
+ import { OverlayConfig } from "@angular/cdk/overlay";
2
+ import { ComponentPortal } from "@angular/cdk/portal";
3
+ import { Injectable } from "@angular/core";
4
+ import { TooltipComponent } from "./tooltip.component";
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/cdk/overlay";
7
+ export class TooltipService {
8
+ constructor(overlay) {
9
+ this.overlay = overlay;
10
+ this.positions = {
11
+ 'top-left': { originX: 'center', originY: 'top', overlayX: 'end', overlayY: 'bottom', offsetX: 38 },
12
+ 'top-center': { originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom' },
13
+ 'top-right': { originX: 'center', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetX: -38 },
14
+ 'bottom-left': { originX: 'center', originY: 'bottom', overlayX: 'end', overlayY: 'top', offsetX: 38 },
15
+ 'bottom-center': { originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top' },
16
+ 'bottom-right': { originX: 'center', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetX: -38 },
17
+ 'left-top': { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'top', offsetY: -38 },
18
+ 'left-center': { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center' },
19
+ 'left-bottom': { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'bottom', offsetY: 38 },
20
+ 'right-top': { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'top', offsetY: -38 },
21
+ 'right-center': { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center' },
22
+ 'right-bottom': { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'bottom', offsetY: 38 }
23
+ };
24
+ }
25
+ /**
26
+ * Show a tooltip attached to a specified element
27
+ */
28
+ show(anchor, position = 'top-center', options) {
29
+ const overlayConfig = this.getOverlayConfig(anchor, this.positions[position], options?.width);
30
+ const overlayRef = this.overlay.create(overlayConfig);
31
+ const contentPortal = new ComponentPortal(TooltipComponent);
32
+ const contentViewRef = overlayRef.attach(contentPortal);
33
+ contentViewRef.instance.position = position;
34
+ contentViewRef.instance.id = options?.id;
35
+ contentViewRef.instance.title = options?.title;
36
+ contentViewRef.instance.subtitle = options?.subtitle;
37
+ contentViewRef.instance.text = options?.text;
38
+ contentViewRef.instance.customContent = options?.customContent;
39
+ contentViewRef.instance.dismissible = options?.dismissible || false;
40
+ contentViewRef.instance.backgroundColor = options?.backgroundColor;
41
+ contentViewRef.instance.overlayRef = overlayRef;
42
+ return contentViewRef.instance;
43
+ }
44
+ getOverlayConfig(element, position, width) {
45
+ const positionStrategy = this.overlay.position()
46
+ .flexibleConnectedTo(element)
47
+ .withPositions([position]);
48
+ const config = new OverlayConfig({
49
+ positionStrategy: positionStrategy,
50
+ width: width
51
+ });
52
+ return config;
53
+ }
54
+ }
55
+ TooltipService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TooltipService, deps: [{ token: i1.Overlay }], target: i0.ɵɵFactoryTarget.Injectable });
56
+ TooltipService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TooltipService, providedIn: 'root' });
57
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TooltipService, decorators: [{
58
+ type: Injectable,
59
+ args: [{
60
+ providedIn: 'root'
61
+ }]
62
+ }], ctorParameters: function () { return [{ type: i1.Overlay }]; } });
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2Rpc3BsYXkvdG9vbHRpcC90b29sdGlwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUE4QixhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQW1DLE1BQU0scUJBQXFCLENBQUM7OztBQUt4RixNQUFNLE9BQU8sY0FBYztJQWlCekIsWUFDVSxPQUFnQjtRQUFoQixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBaEJsQixjQUFTLEdBQXVDO1lBQ3RELFVBQVUsRUFBRSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRTtZQUNuRyxZQUFZLEVBQUUsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFO1lBQzNGLFdBQVcsRUFBRSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3ZHLGFBQWEsRUFBRSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRTtZQUN0RyxlQUFlLEVBQUUsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFO1lBQzlGLGNBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzFHLFVBQVUsRUFBRSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ25HLGFBQWEsRUFBRSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUU7WUFDM0YsYUFBYSxFQUFFLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFO1lBQ3hHLFdBQVcsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3BHLGNBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUU7WUFDNUYsY0FBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFO1NBQzFHLENBQUE7SUFJQyxDQUFDO0lBRUg7O09BRUc7SUFDSCxJQUFJLENBQUMsTUFBbUIsRUFBRSxXQUE0QixZQUFZLEVBQUUsT0FBd0I7UUFDMUYsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM5RixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUV0RCxNQUFNLGFBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzVELE1BQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDeEQsY0FBYyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBRTVDLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFBRSxHQUFHLE9BQU8sRUFBRSxFQUFFLENBQUM7UUFDekMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsT0FBTyxFQUFFLEtBQUssQ0FBQztRQUMvQyxjQUFjLENBQUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxPQUFPLEVBQUUsUUFBUSxDQUFDO1FBQ3JELGNBQWMsQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUM7UUFDN0MsY0FBYyxDQUFDLFFBQVEsQ0FBQyxhQUFhLEdBQUcsT0FBTyxFQUFFLGFBQWEsQ0FBQztRQUMvRCxjQUFjLENBQUMsUUFBUSxDQUFDLFdBQVcsR0FBRyxPQUFPLEVBQUUsV0FBVyxJQUFJLEtBQUssQ0FBQztRQUNwRSxjQUFjLENBQUMsUUFBUSxDQUFDLGVBQWUsR0FBRyxPQUFPLEVBQUUsZUFBZSxDQUFDO1FBQ25FLGNBQWMsQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUVoRCxPQUFPLGNBQWMsQ0FBQyxRQUFRLENBQUM7SUFDakMsQ0FBQztJQUVPLGdCQUFnQixDQUFDLE9BQWlDLEVBQUUsUUFBMkIsRUFBRSxLQUFjO1FBQ3JHLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUU7YUFDN0MsbUJBQW1CLENBQUMsT0FBTyxDQUFDO2FBQzVCLGFBQWEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFFN0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxhQUFhLENBQUM7WUFDL0IsZ0JBQWdCLEVBQUUsZ0JBQWdCO1lBQ2xDLEtBQUssRUFBRSxLQUFLO1NBQ2IsQ0FBQyxDQUFDO1FBRUgsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzs7MkdBdkRVLGNBQWM7K0dBQWQsY0FBYyxjQUZiLE1BQU07MkZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25uZWN0ZWRQb3NpdGlvbiwgT3ZlcmxheSwgT3ZlcmxheUNvbmZpZyB9IGZyb20gXCJAYW5ndWxhci9jZGsvb3ZlcmxheVwiO1xyXG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL3BvcnRhbFwiO1xyXG5pbXBvcnQgeyBFbGVtZW50UmVmLCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgVG9vbHRpcENvbXBvbmVudCwgVG9vbHRpcE9wdGlvbnMsIFRvb2x0aXBQb3NpdGlvbiB9IGZyb20gXCIuL3Rvb2x0aXAuY29tcG9uZW50XCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUb29sdGlwU2VydmljZSB7XHJcblxyXG4gIHByaXZhdGUgcG9zaXRpb25zOiB7W2tleTogc3RyaW5nXTogQ29ubmVjdGVkUG9zaXRpb259ID0ge1xyXG4gICAgJ3RvcC1sZWZ0JzogeyBvcmlnaW5YOiAnY2VudGVyJywgb3JpZ2luWTogJ3RvcCcsIG92ZXJsYXlYOiAnZW5kJywgb3ZlcmxheVk6ICdib3R0b20nLCBvZmZzZXRYOiAzOCB9LFxyXG4gICAgJ3RvcC1jZW50ZXInOiB7IG9yaWdpblg6ICdjZW50ZXInLCBvcmlnaW5ZOiAndG9wJywgb3ZlcmxheVg6ICdjZW50ZXInLCBvdmVybGF5WTogJ2JvdHRvbScgfSxcclxuICAgICd0b3AtcmlnaHQnOiB7IG9yaWdpblg6ICdjZW50ZXInLCBvcmlnaW5ZOiAndG9wJywgb3ZlcmxheVg6ICdzdGFydCcsIG92ZXJsYXlZOiAnYm90dG9tJywgb2Zmc2V0WDogLTM4IH0sXHJcbiAgICAnYm90dG9tLWxlZnQnOiB7IG9yaWdpblg6ICdjZW50ZXInLCBvcmlnaW5ZOiAnYm90dG9tJywgb3ZlcmxheVg6ICdlbmQnLCBvdmVybGF5WTogJ3RvcCcsIG9mZnNldFg6IDM4IH0sXHJcbiAgICAnYm90dG9tLWNlbnRlcic6IHsgb3JpZ2luWDogJ2NlbnRlcicsIG9yaWdpblk6ICdib3R0b20nLCBvdmVybGF5WDogJ2NlbnRlcicsIG92ZXJsYXlZOiAndG9wJyB9LFxyXG4gICAgJ2JvdHRvbS1yaWdodCc6IHsgb3JpZ2luWDogJ2NlbnRlcicsIG9yaWdpblk6ICdib3R0b20nLCBvdmVybGF5WDogJ3N0YXJ0Jywgb3ZlcmxheVk6ICd0b3AnLCBvZmZzZXRYOiAtMzggfSxcclxuICAgICdsZWZ0LXRvcCc6IHsgb3JpZ2luWDogJ3N0YXJ0Jywgb3JpZ2luWTogJ2NlbnRlcicsIG92ZXJsYXlYOiAnZW5kJywgb3ZlcmxheVk6ICd0b3AnLCBvZmZzZXRZOiAtMzggfSxcclxuICAgICdsZWZ0LWNlbnRlcic6IHsgb3JpZ2luWDogJ3N0YXJ0Jywgb3JpZ2luWTogJ2NlbnRlcicsIG92ZXJsYXlYOiAnZW5kJywgb3ZlcmxheVk6ICdjZW50ZXInIH0sXHJcbiAgICAnbGVmdC1ib3R0b20nOiB7IG9yaWdpblg6ICdzdGFydCcsIG9yaWdpblk6ICdjZW50ZXInLCBvdmVybGF5WDogJ2VuZCcsIG92ZXJsYXlZOiAnYm90dG9tJywgb2Zmc2V0WTogMzggfSxcclxuICAgICdyaWdodC10b3AnOiB7IG9yaWdpblg6ICdlbmQnLCBvcmlnaW5ZOiAnY2VudGVyJywgb3ZlcmxheVg6ICdzdGFydCcsIG92ZXJsYXlZOiAndG9wJywgb2Zmc2V0WTogLTM4IH0sXHJcbiAgICAncmlnaHQtY2VudGVyJzogeyBvcmlnaW5YOiAnZW5kJywgb3JpZ2luWTogJ2NlbnRlcicsIG92ZXJsYXlYOiAnc3RhcnQnLCBvdmVybGF5WTogJ2NlbnRlcicgfSxcclxuICAgICdyaWdodC1ib3R0b20nOiB7IG9yaWdpblg6ICdlbmQnLCBvcmlnaW5ZOiAnY2VudGVyJywgb3ZlcmxheVg6ICdzdGFydCcsIG92ZXJsYXlZOiAnYm90dG9tJywgb2Zmc2V0WTogMzggfVxyXG4gIH1cclxuICAgIFxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5XHJcbiAgKXt9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNob3cgYSB0b29sdGlwIGF0dGFjaGVkIHRvIGEgc3BlY2lmaWVkIGVsZW1lbnRcclxuICAgKi9cclxuICBzaG93KGFuY2hvcjogSFRNTEVsZW1lbnQsIHBvc2l0aW9uOiBUb29sdGlwUG9zaXRpb24gPSAndG9wLWNlbnRlcicsIG9wdGlvbnM/OiBUb29sdGlwT3B0aW9ucyk6IFRvb2x0aXBDb21wb25lbnQge1xyXG4gICAgY29uc3Qgb3ZlcmxheUNvbmZpZyA9IHRoaXMuZ2V0T3ZlcmxheUNvbmZpZyhhbmNob3IsIHRoaXMucG9zaXRpb25zW3Bvc2l0aW9uXSwgb3B0aW9ucz8ud2lkdGgpO1xyXG4gICAgY29uc3Qgb3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUob3ZlcmxheUNvbmZpZyk7XHJcblxyXG4gICAgY29uc3QgY29udGVudFBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWwoVG9vbHRpcENvbXBvbmVudCk7XHJcbiAgICBjb25zdCBjb250ZW50Vmlld1JlZiA9IG92ZXJsYXlSZWYuYXR0YWNoKGNvbnRlbnRQb3J0YWwpO1xyXG4gICAgY29udGVudFZpZXdSZWYuaW5zdGFuY2UucG9zaXRpb24gPSBwb3NpdGlvbjtcclxuXHJcbiAgICBjb250ZW50Vmlld1JlZi5pbnN0YW5jZS5pZCA9IG9wdGlvbnM/LmlkO1xyXG4gICAgY29udGVudFZpZXdSZWYuaW5zdGFuY2UudGl0bGUgPSBvcHRpb25zPy50aXRsZTtcclxuICAgIGNvbnRlbnRWaWV3UmVmLmluc3RhbmNlLnN1YnRpdGxlID0gb3B0aW9ucz8uc3VidGl0bGU7XHJcbiAgICBjb250ZW50Vmlld1JlZi5pbnN0YW5jZS50ZXh0ID0gb3B0aW9ucz8udGV4dDtcclxuICAgIGNvbnRlbnRWaWV3UmVmLmluc3RhbmNlLmN1c3RvbUNvbnRlbnQgPSBvcHRpb25zPy5jdXN0b21Db250ZW50O1xyXG4gICAgY29udGVudFZpZXdSZWYuaW5zdGFuY2UuZGlzbWlzc2libGUgPSBvcHRpb25zPy5kaXNtaXNzaWJsZSB8fCBmYWxzZTtcclxuICAgIGNvbnRlbnRWaWV3UmVmLmluc3RhbmNlLmJhY2tncm91bmRDb2xvciA9IG9wdGlvbnM/LmJhY2tncm91bmRDb2xvcjtcclxuICAgIGNvbnRlbnRWaWV3UmVmLmluc3RhbmNlLm92ZXJsYXlSZWYgPSBvdmVybGF5UmVmO1xyXG5cclxuICAgIHJldHVybiBjb250ZW50Vmlld1JlZi5pbnN0YW5jZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0T3ZlcmxheUNvbmZpZyhlbGVtZW50OiBIVE1MRWxlbWVudCB8IEVsZW1lbnRSZWYsIHBvc2l0aW9uOiBDb25uZWN0ZWRQb3NpdGlvbiwgd2lkdGg/OiBudW1iZXIpOiBPdmVybGF5Q29uZmlnIHtcclxuICAgIGNvbnN0IHBvc2l0aW9uU3RyYXRlZ3kgPSB0aGlzLm92ZXJsYXkucG9zaXRpb24oKVxyXG4gICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyhlbGVtZW50KVxyXG4gICAgICAud2l0aFBvc2l0aW9ucyhbcG9zaXRpb25dKTtcclxuXHJcbiAgICBjb25zdCBjb25maWcgPSBuZXcgT3ZlcmxheUNvbmZpZyh7XHJcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHBvc2l0aW9uU3RyYXRlZ3ksXHJcbiAgICAgIHdpZHRoOiB3aWR0aFxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGNvbmZpZztcclxuICB9XHJcbn0iXX0=