@energycap/components 0.41.1-ECAP-27592-angular-17.20241223-1652 → 0.41.1-ECAP-26841-date-input-features.20250106-0847

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 (353) hide show
  1. package/{esm2022 → esm2020}/energycap-components.mjs +4 -4
  2. package/esm2020/lib/components.module.mjs +423 -0
  3. package/esm2020/lib/controls/banner/banner.component.mjs +109 -0
  4. package/esm2020/lib/controls/button/button.component.mjs +106 -0
  5. package/esm2020/lib/controls/button/copy-button-base.directive.mjs +67 -0
  6. package/{esm2022 → esm2020}/lib/controls/button/copy-button.directive.mjs +28 -28
  7. package/esm2020/lib/controls/button/copy-table-button.directive.mjs +43 -0
  8. package/esm2020/lib/controls/calendar/calendar-item.component.mjs +91 -0
  9. package/esm2020/lib/controls/calendar/calendar.component.mjs +248 -0
  10. package/esm2020/lib/controls/calendar/calendar.types.mjs +2 -0
  11. package/esm2020/lib/controls/checkbox/checkbox.component.mjs +140 -0
  12. package/{esm2022 → esm2020}/lib/controls/collapsible-toggle/collapsible-toggle.component.mjs +38 -38
  13. package/esm2020/lib/controls/combobox/combobox.component.mjs +879 -0
  14. package/esm2020/lib/controls/date-input/date-input-selection-strategies/date-input-selection-strategy-base.mjs +57 -0
  15. package/esm2020/lib/controls/date-input/date-input-selection-strategies/day-selection-strategy.mjs +62 -0
  16. package/esm2020/lib/controls/date-input/date-input-selection-strategies/last-28-days-selection-strategy.mjs +100 -0
  17. package/esm2020/lib/controls/date-input/date-input-selection-strategies/last-7-days-selection-strategy.mjs +101 -0
  18. package/esm2020/lib/controls/date-input/date-input-selection-strategies/month-selection-strategy.mjs +76 -0
  19. package/esm2020/lib/controls/date-input/date-input-selection-strategies/quarter-selection-strategy.mjs +79 -0
  20. package/esm2020/lib/controls/date-input/date-input-selection-strategies/range-selection-strategy.mjs +210 -0
  21. package/esm2020/lib/controls/date-input/date-input-selection-strategies/year-selection-strategy.mjs +81 -0
  22. package/esm2020/lib/controls/date-input/date-input.component.mjs +462 -0
  23. package/esm2020/lib/controls/date-input/date-input.types.mjs +44 -0
  24. package/esm2020/lib/controls/dropdown/dropdown.component.mjs +243 -0
  25. package/esm2020/lib/controls/file-upload/file-upload.component.mjs +261 -0
  26. package/esm2020/lib/controls/form-control/form-control.component.mjs +98 -0
  27. package/esm2020/lib/controls/form-control-base.mjs +151 -0
  28. package/esm2020/lib/controls/form-control-label/form-control-label.component.mjs +136 -0
  29. package/esm2020/lib/controls/form-group/form-group.component.mjs +261 -0
  30. package/{esm2022 → esm2020}/lib/controls/help-popover/help-popover.component.mjs +31 -31
  31. package/esm2020/lib/controls/item-picker/item-picker.component.mjs +329 -0
  32. package/{esm2022 → esm2020}/lib/controls/link-button/link-button.component.mjs +11 -11
  33. package/esm2020/lib/controls/menu/menu.component.mjs +485 -0
  34. package/{esm2022 → esm2020}/lib/controls/navigation/link-item.mjs +1 -1
  35. package/esm2020/lib/controls/navigation/nav-group.mjs +39 -0
  36. package/esm2020/lib/controls/navigation/nav-item-active.directive.mjs +92 -0
  37. package/{esm2022 → esm2020}/lib/controls/navigation/nav-item.mjs +1 -1
  38. package/esm2020/lib/controls/numericbox/numericbox.component.mjs +372 -0
  39. package/esm2020/lib/controls/popover/popover.component.mjs +117 -0
  40. package/{esm2022 → esm2020}/lib/controls/radio-button/radio-button-option.mjs +2 -2
  41. package/esm2020/lib/controls/radio-button/radio-button.component.mjs +82 -0
  42. package/esm2020/lib/controls/select/select.component.mjs +88 -0
  43. package/esm2020/lib/controls/tabs/tabs.component.mjs +47 -0
  44. package/esm2020/lib/controls/textbox/textbox.component.mjs +155 -0
  45. package/esm2020/lib/core/cache.service.mjs +105 -0
  46. package/esm2020/lib/core/custom-validators.mjs +29 -0
  47. package/esm2020/lib/core/date-time-helper.mjs +228 -0
  48. package/esm2020/lib/core/error.service.mjs +61 -0
  49. package/esm2020/lib/core/router-helper.service.mjs +111 -0
  50. package/esm2020/lib/core/scroll.service.mjs +89 -0
  51. package/{esm2022 → esm2020}/lib/core/telemetry-tracker.service.mjs +16 -16
  52. package/{esm2022 → esm2020}/lib/core/telemetry.service.mjs +38 -38
  53. package/esm2020/lib/core/validation-message.service.mjs +185 -0
  54. package/{esm2022 → esm2020}/lib/core/validation-patterns.mjs +30 -30
  55. package/esm2020/lib/core/window.service.mjs +186 -0
  56. package/esm2020/lib/display/app-bar/app-bar.component.mjs +46 -0
  57. package/esm2020/lib/display/avatar/avatar.component.mjs +67 -0
  58. package/esm2020/lib/display/avatar/avatar.service.mjs +64 -0
  59. package/esm2020/lib/display/confirm/confirm.component.mjs +168 -0
  60. package/{esm2022 → esm2020}/lib/display/dialog/dialog-content.mjs +1 -1
  61. package/esm2020/lib/display/dialog/dialog-group/dialog-group.component.mjs +63 -0
  62. package/{esm2022 → esm2020}/lib/display/dialog/dialog-types.mjs +76 -76
  63. package/esm2020/lib/display/dialog/dialog.component.mjs +281 -0
  64. package/{esm2022 → esm2020}/lib/display/dialog/dialog.service.mjs +71 -71
  65. package/{esm2022 → esm2020}/lib/display/help/help-types.mjs +1 -1
  66. package/esm2020/lib/display/hierarchy/hierarchy-base.mjs +111 -0
  67. package/{esm2022 → esm2020}/lib/display/hierarchy/hierarchy-mocks.spec.mjs +53 -53
  68. package/esm2020/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.mjs +61 -0
  69. package/esm2020/lib/display/item-display/item-display.component.mjs +81 -0
  70. package/esm2020/lib/display/json-display/json-display.component.mjs +47 -0
  71. package/esm2020/lib/display/resizable/resizable-base.mjs +120 -0
  72. package/{esm2022 → esm2020}/lib/display/resizable/resizable.component.mjs +52 -52
  73. package/{esm2022 → esm2020}/lib/display/spinner/spinner.component.mjs +12 -12
  74. package/esm2020/lib/display/splash/splash.component.mjs +42 -0
  75. package/{esm2022 → esm2020}/lib/display/splash/splash.service.mjs +35 -35
  76. package/{esm2022 → esm2020}/lib/display/table/resizable-column.component.mjs +20 -20
  77. package/esm2020/lib/display/table/resizable-table.directive.mjs +227 -0
  78. package/esm2020/lib/display/table/searchable-table.component.mjs +342 -0
  79. package/{esm2022 → esm2020}/lib/display/table/table-detail-row.component.mjs +19 -19
  80. package/esm2020/lib/display/table/table-locked-column.component.mjs +58 -0
  81. package/{esm2022 → esm2020}/lib/display/table/table-master-header-row.component.mjs +14 -14
  82. package/esm2020/lib/display/table/table-master-row.component.mjs +163 -0
  83. package/esm2020/lib/display/table/table-pagination.component.mjs +155 -0
  84. package/esm2020/lib/display/table/table-selectable-row.component.mjs +235 -0
  85. package/esm2020/lib/display/table/table.component.mjs +249 -0
  86. package/esm2020/lib/display/tags/tag.mjs +18 -0
  87. package/esm2020/lib/display/tags/tags.component.mjs +77 -0
  88. package/esm2020/lib/display/toast/toast/toast.component.mjs +77 -0
  89. package/{esm2022 → esm2020}/lib/display/toast/toast-types.mjs +7 -7
  90. package/{esm2022 → esm2020}/lib/display/toast/toast.service.mjs +35 -35
  91. package/esm2020/lib/display/toast/toaster/toaster.component.mjs +114 -0
  92. package/{esm2022 → esm2020}/lib/display/tooltip/tooltip.component.mjs +28 -28
  93. package/{esm2022 → esm2020}/lib/display/tooltip/tooltip.service.mjs +78 -78
  94. package/esm2020/lib/display/tooltip-directive/tooltip.directive.mjs +173 -0
  95. package/{esm2022 → esm2020}/lib/display/tour/tour-types.mjs +33 -33
  96. package/esm2020/lib/display/tour/tour.component.mjs +398 -0
  97. package/esm2020/lib/display/tour/tour.service.mjs +75 -0
  98. package/esm2020/lib/display/tree/tree.component.mjs +135 -0
  99. package/esm2020/lib/display/view-overlay/view-overlay.component.mjs +58 -0
  100. package/esm2020/lib/shared/directives/click-area-for/click-area-for.directive.mjs +32 -0
  101. package/esm2020/lib/shared/directives/if-viewport-width/if-viewport-width.directive.mjs +111 -0
  102. package/esm2020/lib/shared/directives/keyboard-nav-container/keyboard-nav-container.directive.mjs +100 -0
  103. package/esm2020/lib/shared/directives/popup/popup-container.directive.mjs +163 -0
  104. package/esm2020/lib/shared/display/pipes/date-display.pipe.mjs +50 -0
  105. package/esm2020/lib/shared/display/pipes/highlight-text.pipe.mjs +30 -0
  106. package/esm2020/lib/shared/display/pipes/relative-date.pipe.mjs +62 -0
  107. package/esm2020/lib/shared/display/pipes/row-count.pipe.mjs +48 -0
  108. package/esm2020/lib/shared/display/pipes/time-display.pipe.mjs +41 -0
  109. package/esm2020/lib/shared/display.mjs +6 -0
  110. package/esm2020/lib/shared/form-group.helper.mjs +67 -0
  111. package/esm2020/lib/shared/json-helper.mjs +19 -0
  112. package/esm2020/lib/shared/lodash-helper.mjs +51 -0
  113. package/esm2020/lib/shared/page/page-base/page-base.component.mjs +387 -0
  114. package/{esm2022 → esm2020}/lib/shared/page/page-statuses.mjs +22 -22
  115. package/{esm2022 → esm2020}/lib/shared/page/page-title/page-title.component.mjs +23 -23
  116. package/esm2020/lib/shared/page/page-view/page-view.component.mjs +147 -0
  117. package/{esm2022 → esm2020}/lib/shared/testing/copy-button-base-test-injector-factory.spec.mjs +16 -16
  118. package/{esm2022 → esm2020}/lib/shared/testing/hierarchy-base-test-injector-factory.spec.mjs +16 -16
  119. package/{esm2022 → esm2020}/lib/shared/testing/page-base-component-test-helper.spec.mjs +37 -37
  120. package/esm2020/lib/shared/testing/page-base-component-test-injector-factory.spec.mjs +98 -0
  121. package/{esm2022 → esm2020}/lib/shared/testing/public-mocks.spec.mjs +148 -148
  122. package/{esm2022 → esm2020}/lib/shared/testing/spy-factory.spec.mjs +39 -39
  123. package/{esm2022 → esm2020}/lib/shared/testing/translation-mocks.spec.mjs +56 -56
  124. package/{esm2022 → esm2020}/lib/shared/user-preference.service.mjs +17 -17
  125. package/esm2020/lib/shared/wizard/wizard-base/wizard-base.component.mjs +246 -0
  126. package/{esm2022 → esm2020}/lib/shared/wizard/wizard-buttons/wizard-buttons.component.mjs +68 -68
  127. package/{esm2022 → esm2020}/lib/shared/wizard/wizard-progress/wizard-progress.component.mjs +18 -18
  128. package/esm2020/public-api.mjs +117 -0
  129. package/fesm2015/energycap-components.mjs +13370 -0
  130. package/fesm2015/energycap-components.mjs.map +1 -0
  131. package/{fesm2022 → fesm2020}/energycap-components.mjs +12971 -11819
  132. package/fesm2020/energycap-components.mjs.map +1 -0
  133. package/index.d.ts +5 -5
  134. package/lib/components.module.d.ts +92 -91
  135. package/lib/controls/banner/banner.component.d.ts +50 -50
  136. package/lib/controls/button/button.component.d.ts +78 -78
  137. package/lib/controls/button/copy-button-base.directive.d.ts +20 -20
  138. package/lib/controls/button/copy-button.directive.d.ts +14 -14
  139. package/lib/controls/button/copy-table-button.directive.d.ts +19 -19
  140. package/lib/controls/calendar/calendar-item.component.d.ts +22 -17
  141. package/lib/controls/calendar/calendar.component.d.ts +52 -54
  142. package/lib/controls/calendar/calendar.types.d.ts +11 -7
  143. package/lib/controls/checkbox/checkbox.component.d.ts +65 -65
  144. package/lib/controls/collapsible-toggle/collapsible-toggle.component.d.ts +25 -25
  145. package/lib/controls/combobox/combobox.component.d.ts +418 -418
  146. package/lib/controls/date-input/date-input-selection-strategies/date-input-selection-strategy-base.d.ts +42 -0
  147. package/lib/controls/date-input/date-input-selection-strategies/day-selection-strategy.d.ts +21 -0
  148. package/lib/controls/date-input/date-input-selection-strategies/last-28-days-selection-strategy.d.ts +21 -0
  149. package/lib/controls/date-input/date-input-selection-strategies/last-7-days-selection-strategy.d.ts +21 -0
  150. package/lib/controls/date-input/date-input-selection-strategies/month-selection-strategy.d.ts +18 -0
  151. package/lib/controls/date-input/date-input-selection-strategies/quarter-selection-strategy.d.ts +18 -0
  152. package/lib/controls/date-input/date-input-selection-strategies/range-selection-strategy.d.ts +21 -0
  153. package/lib/controls/date-input/date-input-selection-strategies/year-selection-strategy.d.ts +20 -0
  154. package/lib/controls/date-input/date-input.component.d.ts +115 -80
  155. package/lib/controls/date-input/date-input.types.d.ts +62 -0
  156. package/lib/controls/dropdown/dropdown.component.d.ts +161 -161
  157. package/lib/controls/file-upload/file-upload.component.d.ts +124 -124
  158. package/lib/controls/form-control/form-control.component.d.ts +28 -30
  159. package/lib/controls/form-control-base.d.ts +110 -110
  160. package/lib/controls/form-control-label/form-control-label.component.d.ts +73 -73
  161. package/lib/controls/form-group/form-group.component.d.ts +105 -105
  162. package/lib/controls/help-popover/help-popover.component.d.ts +11 -11
  163. package/lib/controls/item-picker/item-picker.component.d.ts +164 -164
  164. package/lib/controls/link-button/link-button.component.d.ts +5 -5
  165. package/lib/controls/menu/menu.component.d.ts +255 -255
  166. package/lib/controls/navigation/link-item.d.ts +32 -32
  167. package/lib/controls/navigation/nav-group.d.ts +18 -18
  168. package/lib/controls/navigation/nav-item-active.directive.d.ts +42 -42
  169. package/lib/controls/navigation/nav-item.d.ts +31 -31
  170. package/lib/controls/numericbox/numericbox.component.d.ts +148 -148
  171. package/lib/controls/popover/popover.component.d.ts +51 -51
  172. package/lib/controls/radio-button/radio-button-option.d.ts +19 -19
  173. package/lib/controls/radio-button/radio-button.component.d.ts +53 -53
  174. package/lib/controls/select/select.component.d.ts +44 -44
  175. package/lib/controls/tabs/tabs.component.d.ts +30 -30
  176. package/lib/controls/textbox/textbox.component.d.ts +107 -107
  177. package/lib/core/cache.service.d.ts +33 -33
  178. package/lib/core/custom-validators.d.ts +20 -20
  179. package/lib/core/date-time-helper.d.ts +101 -101
  180. package/lib/core/error.service.d.ts +20 -20
  181. package/lib/core/router-helper.service.d.ts +48 -48
  182. package/lib/core/scroll.service.d.ts +36 -36
  183. package/lib/core/telemetry-tracker.service.d.ts +13 -13
  184. package/lib/core/telemetry.service.d.ts +31 -31
  185. package/lib/core/validation-message.service.d.ts +26 -26
  186. package/lib/core/validation-patterns.d.ts +22 -22
  187. package/lib/core/window.service.d.ts +116 -116
  188. package/lib/display/app-bar/app-bar.component.d.ts +20 -20
  189. package/lib/display/avatar/avatar.component.d.ts +35 -35
  190. package/lib/display/avatar/avatar.service.d.ts +24 -24
  191. package/lib/display/confirm/confirm.component.d.ts +123 -123
  192. package/lib/display/dialog/dialog-content.d.ts +19 -19
  193. package/lib/display/dialog/dialog-group/dialog-group.component.d.ts +32 -32
  194. package/lib/display/dialog/dialog-types.d.ts +130 -130
  195. package/lib/display/dialog/dialog.component.d.ts +120 -120
  196. package/lib/display/dialog/dialog.service.d.ts +48 -48
  197. package/lib/display/help/help-types.d.ts +33 -33
  198. package/lib/display/hierarchy/hierarchy-base.d.ts +97 -97
  199. package/lib/display/hierarchy/hierarchy-mocks.spec.d.ts +53 -53
  200. package/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.d.ts +34 -34
  201. package/lib/display/item-display/item-display.component.d.ts +43 -43
  202. package/lib/display/json-display/json-display.component.d.ts +16 -16
  203. package/lib/display/resizable/resizable-base.d.ts +67 -67
  204. package/lib/display/resizable/resizable.component.d.ts +31 -31
  205. package/lib/display/spinner/spinner.component.d.ts +5 -5
  206. package/lib/display/splash/splash.component.d.ts +16 -16
  207. package/lib/display/splash/splash.service.d.ts +22 -22
  208. package/lib/display/table/resizable-column.component.d.ts +10 -10
  209. package/lib/display/table/resizable-table.directive.d.ts +93 -93
  210. package/lib/display/table/searchable-table.component.d.ts +206 -206
  211. package/lib/display/table/table-detail-row.component.d.ts +8 -8
  212. package/lib/display/table/table-locked-column.component.d.ts +20 -20
  213. package/lib/display/table/table-master-header-row.component.d.ts +9 -9
  214. package/lib/display/table/table-master-row.component.d.ts +113 -113
  215. package/lib/display/table/table-pagination.component.d.ts +91 -91
  216. package/lib/display/table/table-selectable-row.component.d.ts +102 -102
  217. package/lib/display/table/table.component.d.ts +121 -121
  218. package/lib/display/tags/tag.d.ts +18 -18
  219. package/lib/display/tags/tags.component.d.ts +48 -48
  220. package/lib/display/toast/toast/toast.component.d.ts +23 -23
  221. package/lib/display/toast/toast-types.d.ts +24 -24
  222. package/lib/display/toast/toast.service.d.ts +20 -20
  223. package/lib/display/toast/toaster/toaster.component.d.ts +35 -35
  224. package/lib/display/tooltip/tooltip.component.d.ts +70 -70
  225. package/lib/display/tooltip/tooltip.service.d.ts +16 -16
  226. package/lib/display/tooltip-directive/tooltip.directive.d.ts +44 -44
  227. package/lib/display/tour/tour-types.d.ts +70 -70
  228. package/lib/display/tour/tour.component.d.ts +147 -147
  229. package/lib/display/tour/tour.service.d.ts +38 -38
  230. package/lib/display/tree/tree.component.d.ts +75 -75
  231. package/lib/display/view-overlay/view-overlay.component.d.ts +38 -38
  232. package/lib/shared/directives/click-area-for/click-area-for.directive.d.ts +14 -14
  233. package/lib/shared/directives/if-viewport-width/if-viewport-width.directive.d.ts +60 -60
  234. package/lib/shared/directives/keyboard-nav-container/keyboard-nav-container.directive.d.ts +23 -0
  235. package/lib/shared/directives/popup/popup-container.directive.d.ts +101 -101
  236. package/lib/shared/display/pipes/date-display.pipe.d.ts +21 -21
  237. package/lib/shared/display/pipes/highlight-text.pipe.d.ts +9 -9
  238. package/lib/shared/display/pipes/relative-date.pipe.d.ts +36 -36
  239. package/lib/shared/display/pipes/row-count.pipe.d.ts +23 -23
  240. package/lib/shared/display/pipes/time-display.pipe.d.ts +18 -18
  241. package/lib/shared/display.d.ts +42 -42
  242. package/lib/shared/form-group.helper.d.ts +31 -31
  243. package/lib/shared/json-helper.d.ts +7 -7
  244. package/lib/shared/lodash-helper.d.ts +18 -18
  245. package/lib/shared/page/page-base/page-base.component.d.ts +259 -259
  246. package/lib/shared/page/page-statuses.d.ts +13 -13
  247. package/lib/shared/page/page-title/page-title.component.d.ts +9 -9
  248. package/lib/shared/page/page-view/page-view.component.d.ts +102 -102
  249. package/lib/shared/testing/copy-button-base-test-injector-factory.spec.d.ts +4 -4
  250. package/lib/shared/testing/hierarchy-base-test-injector-factory.spec.d.ts +4 -4
  251. package/lib/shared/testing/page-base-component-test-helper.spec.d.ts +30 -30
  252. package/lib/shared/testing/page-base-component-test-injector-factory.spec.d.ts +28 -28
  253. package/lib/shared/testing/public-mocks.spec.d.ts +90 -90
  254. package/lib/shared/testing/spy-factory.spec.d.ts +27 -27
  255. package/lib/shared/testing/translation-mocks.spec.d.ts +30 -30
  256. package/lib/shared/user-preference.service.d.ts +13 -13
  257. package/lib/shared/wizard/wizard-base/wizard-base.component.d.ts +134 -134
  258. package/lib/shared/wizard/wizard-buttons/wizard-buttons.component.d.ts +27 -27
  259. package/lib/shared/wizard/wizard-progress/wizard-progress.component.d.ts +10 -10
  260. package/package.json +18 -12
  261. package/public-api.d.ts +113 -111
  262. package/schematics/rxjs-7-upgrade/index.d.ts +3 -3
  263. package/schematics/rxjs-7-upgrade/index.js +67 -67
  264. package/schematics/rxjs-7-upgrade/index.js.map +1 -1
  265. package/schematics/rxjs-7-upgrade/schema.d.ts +4 -4
  266. package/schematics/rxjs-7-upgrade/schema.js +2 -2
  267. package/schematics/utilities/typescript.d.ts +7 -7
  268. package/schematics/utilities/typescript.js +41 -41
  269. package/schematics/utilities/workspace.d.ts +8 -8
  270. package/schematics/utilities/workspace.js +71 -71
  271. package/schematics/utilities/workspace.js.map +1 -1
  272. package/src/assets/locales/en_US.json +9 -1
  273. package/esm2022/lib/components.module.mjs +0 -418
  274. package/esm2022/lib/controls/banner/banner.component.mjs +0 -109
  275. package/esm2022/lib/controls/button/button.component.mjs +0 -106
  276. package/esm2022/lib/controls/button/copy-button-base.directive.mjs +0 -67
  277. package/esm2022/lib/controls/button/copy-table-button.directive.mjs +0 -43
  278. package/esm2022/lib/controls/calendar/calendar-item.component.mjs +0 -59
  279. package/esm2022/lib/controls/calendar/calendar.component.mjs +0 -200
  280. package/esm2022/lib/controls/calendar/calendar.types.mjs +0 -4
  281. package/esm2022/lib/controls/checkbox/checkbox.component.mjs +0 -140
  282. package/esm2022/lib/controls/combobox/combobox.component.mjs +0 -879
  283. package/esm2022/lib/controls/date-input/date-input.component.mjs +0 -256
  284. package/esm2022/lib/controls/dropdown/dropdown.component.mjs +0 -243
  285. package/esm2022/lib/controls/file-upload/file-upload.component.mjs +0 -261
  286. package/esm2022/lib/controls/form-control/form-control.component.mjs +0 -104
  287. package/esm2022/lib/controls/form-control-base.mjs +0 -151
  288. package/esm2022/lib/controls/form-control-label/form-control-label.component.mjs +0 -136
  289. package/esm2022/lib/controls/form-group/form-group.component.mjs +0 -261
  290. package/esm2022/lib/controls/item-picker/item-picker.component.mjs +0 -329
  291. package/esm2022/lib/controls/menu/menu.component.mjs +0 -485
  292. package/esm2022/lib/controls/navigation/nav-group.mjs +0 -39
  293. package/esm2022/lib/controls/navigation/nav-item-active.directive.mjs +0 -92
  294. package/esm2022/lib/controls/numericbox/numericbox.component.mjs +0 -372
  295. package/esm2022/lib/controls/popover/popover.component.mjs +0 -117
  296. package/esm2022/lib/controls/radio-button/radio-button.component.mjs +0 -82
  297. package/esm2022/lib/controls/select/select.component.mjs +0 -88
  298. package/esm2022/lib/controls/tabs/tabs.component.mjs +0 -47
  299. package/esm2022/lib/controls/textbox/textbox.component.mjs +0 -155
  300. package/esm2022/lib/core/cache.service.mjs +0 -105
  301. package/esm2022/lib/core/custom-validators.mjs +0 -29
  302. package/esm2022/lib/core/date-time-helper.mjs +0 -220
  303. package/esm2022/lib/core/error.service.mjs +0 -61
  304. package/esm2022/lib/core/router-helper.service.mjs +0 -111
  305. package/esm2022/lib/core/scroll.service.mjs +0 -89
  306. package/esm2022/lib/core/validation-message.service.mjs +0 -185
  307. package/esm2022/lib/core/window.service.mjs +0 -186
  308. package/esm2022/lib/display/app-bar/app-bar.component.mjs +0 -46
  309. package/esm2022/lib/display/avatar/avatar.component.mjs +0 -67
  310. package/esm2022/lib/display/avatar/avatar.service.mjs +0 -64
  311. package/esm2022/lib/display/confirm/confirm.component.mjs +0 -168
  312. package/esm2022/lib/display/dialog/dialog-group/dialog-group.component.mjs +0 -63
  313. package/esm2022/lib/display/dialog/dialog.component.mjs +0 -281
  314. package/esm2022/lib/display/hierarchy/hierarchy-base.mjs +0 -111
  315. package/esm2022/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.mjs +0 -61
  316. package/esm2022/lib/display/item-display/item-display.component.mjs +0 -81
  317. package/esm2022/lib/display/json-display/json-display.component.mjs +0 -47
  318. package/esm2022/lib/display/resizable/resizable-base.mjs +0 -120
  319. package/esm2022/lib/display/splash/splash.component.mjs +0 -42
  320. package/esm2022/lib/display/table/resizable-table.directive.mjs +0 -227
  321. package/esm2022/lib/display/table/searchable-table.component.mjs +0 -342
  322. package/esm2022/lib/display/table/table-locked-column.component.mjs +0 -58
  323. package/esm2022/lib/display/table/table-master-row.component.mjs +0 -163
  324. package/esm2022/lib/display/table/table-pagination.component.mjs +0 -155
  325. package/esm2022/lib/display/table/table-selectable-row.component.mjs +0 -235
  326. package/esm2022/lib/display/table/table.component.mjs +0 -249
  327. package/esm2022/lib/display/tags/tag.mjs +0 -18
  328. package/esm2022/lib/display/tags/tags.component.mjs +0 -77
  329. package/esm2022/lib/display/toast/toast/toast.component.mjs +0 -77
  330. package/esm2022/lib/display/toast/toaster/toaster.component.mjs +0 -114
  331. package/esm2022/lib/display/tooltip-directive/tooltip.directive.mjs +0 -173
  332. package/esm2022/lib/display/tour/tour.component.mjs +0 -398
  333. package/esm2022/lib/display/tour/tour.service.mjs +0 -75
  334. package/esm2022/lib/display/tree/tree.component.mjs +0 -135
  335. package/esm2022/lib/display/view-overlay/view-overlay.component.mjs +0 -58
  336. package/esm2022/lib/shared/directives/click-area-for/click-area-for.directive.mjs +0 -32
  337. package/esm2022/lib/shared/directives/if-viewport-width/if-viewport-width.directive.mjs +0 -111
  338. package/esm2022/lib/shared/directives/popup/popup-container.directive.mjs +0 -166
  339. package/esm2022/lib/shared/display/pipes/date-display.pipe.mjs +0 -50
  340. package/esm2022/lib/shared/display/pipes/highlight-text.pipe.mjs +0 -30
  341. package/esm2022/lib/shared/display/pipes/relative-date.pipe.mjs +0 -62
  342. package/esm2022/lib/shared/display/pipes/row-count.pipe.mjs +0 -48
  343. package/esm2022/lib/shared/display/pipes/time-display.pipe.mjs +0 -41
  344. package/esm2022/lib/shared/display.mjs +0 -6
  345. package/esm2022/lib/shared/form-group.helper.mjs +0 -67
  346. package/esm2022/lib/shared/json-helper.mjs +0 -19
  347. package/esm2022/lib/shared/lodash-helper.mjs +0 -52
  348. package/esm2022/lib/shared/page/page-base/page-base.component.mjs +0 -387
  349. package/esm2022/lib/shared/page/page-view/page-view.component.mjs +0 -147
  350. package/esm2022/lib/shared/testing/page-base-component-test-injector-factory.spec.mjs +0 -98
  351. package/esm2022/lib/shared/wizard/wizard-base/wizard-base.component.mjs +0 -246
  352. package/esm2022/public-api.mjs +0 -115
  353. package/fesm2022/energycap-components.mjs.map +0 -1
@@ -1,81 +0,0 @@
1
- import { Component, Input, HostBinding } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/common";
4
- import * as i2 from "@angular/router";
5
- import * as i3 from "../../controls/help-popover/help-popover.component";
6
- import * as i4 from "@ngx-translate/core";
7
- export class ItemDisplayComponent {
8
- constructor() {
9
- /** The value of the host element's id attribute */
10
- this.id = '';
11
- this.internalValue = { value: '' };
12
- /**
13
- * Set link as an href or routerLink
14
- */
15
- this.externalLink = false;
16
- this.condensed = false;
17
- /**
18
- * The link target when url is provided. Defaults to _self (same window)
19
- * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a
20
- */
21
- this.target = '_self';
22
- }
23
- set labelHelpPopover(labelHelpPopover) {
24
- if (typeof labelHelpPopover === 'string') {
25
- this._labelHelpPopover = { text: labelHelpPopover };
26
- }
27
- else {
28
- this._labelHelpPopover = labelHelpPopover;
29
- }
30
- }
31
- get labelHelpPopover() {
32
- return this._labelHelpPopover;
33
- }
34
- set value(value) {
35
- if (typeof value === 'string') {
36
- this.internalValue = { value: value };
37
- }
38
- else if (value) {
39
- this.internalValue = value;
40
- }
41
- else {
42
- this.internalValue = { value: '' };
43
- }
44
- }
45
- ;
46
- /**
47
- * When provided, displays the value as a link
48
- */
49
- set url(value) {
50
- this.externalLink = (value?.startsWith('http')) ? true : false;
51
- this._url = value;
52
- }
53
- ;
54
- get url() {
55
- return this._url;
56
- }
57
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ItemDisplayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
58
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ItemDisplayComponent, selector: "ec-item-display", inputs: { id: "id", label: "label", labelHelpPopover: "labelHelpPopover", value: "value", url: "url", condensed: "condensed", target: "target" }, host: { properties: { "attr.id": "this.id" } }, ngImport: i0, template: "<div id=\"{{id}}_label_0\"\r\n class=\"text-caption-1 d-flex align-items-center\">\r\n <span>{{label | translate}}</span>\r\n <ec-help-popover *ngIf=\"labelHelpPopover\"\r\n class=\"mx-n1 my-n2\"\r\n [text]=\"labelHelpPopover.text\"\r\n [contentPosition]=\"labelHelpPopover?.contentPosition ?? 'top-left'\"\r\n [maxWidth]=\"labelHelpPopover?.maxWidth ?? '15rem'\">\r\n </ec-help-popover>\r\n</div>\r\n\r\n<div id=\"{{id}}_value_0\" class=\"{{condensed ? 'text-body-2' : 'text-display-1'}} {{internalValue.classnames}}\"\r\n [class.font-color-hint]=\"!internalValue.value && internalValue.noValueText\"\r\n title=\"{{internalValue.tooltip}}\">\r\n\r\n <ng-container *ngIf=\"url else content\">\r\n <a *ngIf=\"!externalLink\"\r\n id=\"{{id}}_link\"\r\n routerLink=\"{{url}}\"\r\n target=\"{{target}}\">\r\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\r\n </a>\r\n <a *ngIf=\"externalLink\"\r\n id=\"{{id}}_link\"\r\n href=\"{{url}}\"\r\n target=\"{{target}}\">\r\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\r\n </a>\r\n </ng-container>\r\n</div>\r\n\r\n\r\n<ng-template #content>\r\n <i *ngIf=\"internalValue?.icon\" class=\"ec-icon {{internalValue?.icon}}\"></i>\r\n <span>{{(internalValue?.value || internalValue?.noValueText) | translate}}</span>\r\n <ng-content></ng-content>\r\n</ng-template>\r\n", styles: [":host{display:inline-block;margin-bottom:1rem;vertical-align:top}.ec-icon{font-size:1em;top:.125em;position:relative;margin-right:.25em}\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: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i3.HelpPopoverComponent, selector: "ec-help-popover", inputs: ["id", "text", "contentPosition", "maxWidth"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
59
- }
60
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ItemDisplayComponent, decorators: [{
61
- type: Component,
62
- args: [{ selector: 'ec-item-display', template: "<div id=\"{{id}}_label_0\"\r\n class=\"text-caption-1 d-flex align-items-center\">\r\n <span>{{label | translate}}</span>\r\n <ec-help-popover *ngIf=\"labelHelpPopover\"\r\n class=\"mx-n1 my-n2\"\r\n [text]=\"labelHelpPopover.text\"\r\n [contentPosition]=\"labelHelpPopover?.contentPosition ?? 'top-left'\"\r\n [maxWidth]=\"labelHelpPopover?.maxWidth ?? '15rem'\">\r\n </ec-help-popover>\r\n</div>\r\n\r\n<div id=\"{{id}}_value_0\" class=\"{{condensed ? 'text-body-2' : 'text-display-1'}} {{internalValue.classnames}}\"\r\n [class.font-color-hint]=\"!internalValue.value && internalValue.noValueText\"\r\n title=\"{{internalValue.tooltip}}\">\r\n\r\n <ng-container *ngIf=\"url else content\">\r\n <a *ngIf=\"!externalLink\"\r\n id=\"{{id}}_link\"\r\n routerLink=\"{{url}}\"\r\n target=\"{{target}}\">\r\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\r\n </a>\r\n <a *ngIf=\"externalLink\"\r\n id=\"{{id}}_link\"\r\n href=\"{{url}}\"\r\n target=\"{{target}}\">\r\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\r\n </a>\r\n </ng-container>\r\n</div>\r\n\r\n\r\n<ng-template #content>\r\n <i *ngIf=\"internalValue?.icon\" class=\"ec-icon {{internalValue?.icon}}\"></i>\r\n <span>{{(internalValue?.value || internalValue?.noValueText) | translate}}</span>\r\n <ng-content></ng-content>\r\n</ng-template>\r\n", styles: [":host{display:inline-block;margin-bottom:1rem;vertical-align:top}.ec-icon{font-size:1em;top:.125em;position:relative;margin-right:.25em}\n"] }]
63
- }], propDecorators: { id: [{
64
- type: HostBinding,
65
- args: ['attr.id']
66
- }, {
67
- type: Input
68
- }], label: [{
69
- type: Input
70
- }], labelHelpPopover: [{
71
- type: Input
72
- }], value: [{
73
- type: Input
74
- }], url: [{
75
- type: Input
76
- }], condensed: [{
77
- type: Input
78
- }], target: [{
79
- type: Input
80
- }] } });
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS1kaXNwbGF5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9kaXNwbGF5L2l0ZW0tZGlzcGxheS9pdGVtLWRpc3BsYXkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2Rpc3BsYXkvaXRlbS1kaXNwbGF5L2l0ZW0tZGlzcGxheS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQXVCOUQsTUFBTSxPQUFPLG9CQUFvQjtJQUxqQztRQU9FLG1EQUFtRDtRQUVuQyxPQUFFLEdBQVcsRUFBRSxDQUFDO1FBMEJ6QixrQkFBYSxHQUFpQixFQUFDLEtBQUssRUFBRSxFQUFFLEVBQUMsQ0FBQztRQWNqRDs7V0FFRztRQUNJLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBRXJCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFbEM7OztXQUdHO1FBQ2EsV0FBTSxHQUFlLE9BQU8sQ0FBQztLQUM5QztJQS9DQyxJQUFhLGdCQUFnQixDQUFDLGdCQUF3RDtRQUNwRixJQUFHLE9BQU8sZ0JBQWdCLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLENBQUM7UUFDdEQsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsaUJBQWlCLEdBQUcsZ0JBQWdCLENBQUM7UUFDNUMsQ0FBQztJQUNILENBQUM7SUFDRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNoQyxDQUFDO0lBR0QsSUFBYSxLQUFLLENBQUMsS0FBd0M7UUFDekQsSUFBRyxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUMsS0FBSyxFQUFFLEtBQUssRUFBQyxDQUFDO1FBQ3RDLENBQUM7YUFBTSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzdCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFDLEtBQUssRUFBRSxFQUFFLEVBQUMsQ0FBQztRQUNuQyxDQUFDO0lBQ0gsQ0FBQztJQUFBLENBQUM7SUFHRjs7T0FFRztJQUNILElBQWEsR0FBRyxDQUFDLEtBQXlCO1FBQ3hDLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQy9ELElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFBQSxDQUFDO0lBQ0YsSUFBSSxHQUFHO1FBQ0wsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7K0dBekNVLG9CQUFvQjttR0FBcEIsb0JBQW9CLHlQQ3ZCakMsbTlDQXFDQTs7NEZEZGEsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGlCQUFpQjs4QkFRWCxFQUFFO3NCQURqQixXQUFXO3VCQUFDLFNBQVM7O3NCQUNyQixLQUFLO2dCQUVVLEtBQUs7c0JBQXBCLEtBQUs7Z0JBR08sZ0JBQWdCO3NCQUE1QixLQUFLO2dCQVlPLEtBQUs7c0JBQWpCLEtBQUs7Z0JBY08sR0FBRztzQkFBZixLQUFLO2dCQWNVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBTVUsTUFBTTtzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIEhvc3RCaW5kaW5nIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFBvcG92ZXJDb250ZW50UG9zaXRpb24gfSBmcm9tICcuLi8uLi9jb250cm9scy9wb3BvdmVyL3BvcG92ZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTGlua1RhcmdldCB9IGZyb20gJy4uL3RhZ3MvdGFnJztcclxuXHJcbmV4cG9ydCB0eXBlIERpc3BsYXlWYWx1ZSA9IHtcclxuICB2YWx1ZTpzdHJpbmcsXHJcbiAgY2xhc3NuYW1lcz86c3RyaW5nLFxyXG4gIGljb24/OnN0cmluZyxcclxuICBub1ZhbHVlVGV4dD86c3RyaW5nLFxyXG4gIHRvb2x0aXA/OiBzdHJpbmdcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgSGVscFBvcG92ZXJDb25maWcgPSB7XHJcbiAgdGV4dDogc3RyaW5nO1xyXG4gIGNvbnRlbnRQb3NpdGlvbj86IFBvcG92ZXJDb250ZW50UG9zaXRpb247XHJcbiAgbWF4V2lkdGg/OiBzdHJpbmc7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZWMtaXRlbS1kaXNwbGF5JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaXRlbS1kaXNwbGF5LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pdGVtLWRpc3BsYXkuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSXRlbURpc3BsYXlDb21wb25lbnQge1xyXG5cclxuICAvKiogVGhlIHZhbHVlIG9mIHRoZSBob3N0IGVsZW1lbnQncyBpZCBhdHRyaWJ1dGUgKi9cclxuICBASG9zdEJpbmRpbmcoJ2F0dHIuaWQnKVxyXG4gIEBJbnB1dCgpIHB1YmxpYyBpZDogc3RyaW5nID0gJyc7XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBsYWJlbCE6IHN0cmluZztcclxuXHJcbiAgcHJpdmF0ZSBfbGFiZWxIZWxwUG9wb3Zlcj86IEhlbHBQb3BvdmVyQ29uZmlnO1xyXG4gIEBJbnB1dCgpIHNldCBsYWJlbEhlbHBQb3BvdmVyKGxhYmVsSGVscFBvcG92ZXI6IHN0cmluZyB8IEhlbHBQb3BvdmVyQ29uZmlnIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBpZih0eXBlb2YgbGFiZWxIZWxwUG9wb3ZlciA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgdGhpcy5fbGFiZWxIZWxwUG9wb3ZlciA9IHsgdGV4dDogbGFiZWxIZWxwUG9wb3ZlciB9O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fbGFiZWxIZWxwUG9wb3ZlciA9IGxhYmVsSGVscFBvcG92ZXI7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBsYWJlbEhlbHBQb3BvdmVyKCk6IEhlbHBQb3BvdmVyQ29uZmlnIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLl9sYWJlbEhlbHBQb3BvdmVyO1xyXG4gIH1cclxuXHJcblxyXG4gIEBJbnB1dCgpIHNldCB2YWx1ZSh2YWx1ZTogc3RyaW5nIHwgRGlzcGxheVZhbHVlIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBpZih0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIHRoaXMuaW50ZXJuYWxWYWx1ZSA9IHt2YWx1ZTogdmFsdWV9O1xyXG4gICAgfSBlbHNlIGlmICh2YWx1ZSkge1xyXG4gICAgICB0aGlzLmludGVybmFsVmFsdWUgPSB2YWx1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaW50ZXJuYWxWYWx1ZSA9IHt2YWx1ZTogJyd9O1xyXG4gICAgfVxyXG4gIH07XHJcbiAgcHVibGljIGludGVybmFsVmFsdWU6IERpc3BsYXlWYWx1ZSA9IHt2YWx1ZTogJyd9O1xyXG5cclxuICAvKipcclxuICAgKiBXaGVuIHByb3ZpZGVkLCBkaXNwbGF5cyB0aGUgdmFsdWUgYXMgYSBsaW5rXHJcbiAgICovXHJcbiAgQElucHV0KCkgc2V0IHVybCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLmV4dGVybmFsTGluayA9ICh2YWx1ZT8uc3RhcnRzV2l0aCgnaHR0cCcpKSA/IHRydWUgOiBmYWxzZTtcclxuICAgIHRoaXMuX3VybCA9IHZhbHVlO1xyXG4gIH07XHJcbiAgZ2V0IHVybCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuX3VybDtcclxuICB9XHJcbiAgcHJpdmF0ZSBfdXJsPzogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBTZXQgbGluayBhcyBhbiBocmVmIG9yIHJvdXRlckxpbmtcclxuICAgKi9cclxuICBwdWJsaWMgZXh0ZXJuYWxMaW5rOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBjb25kZW5zZWQgPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIGxpbmsgdGFyZ2V0IHdoZW4gdXJsIGlzIHByb3ZpZGVkLiBEZWZhdWx0cyB0byBfc2VsZiAoc2FtZSB3aW5kb3cpXHJcbiAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyB0YXJnZXQ6IExpbmtUYXJnZXQgPSAnX3NlbGYnO1xyXG59XHJcbiIsIjxkaXYgaWQ9XCJ7e2lkfX1fbGFiZWxfMFwiXHJcbiAgICAgY2xhc3M9XCJ0ZXh0LWNhcHRpb24tMSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgPHNwYW4+e3tsYWJlbCB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gIDxlYy1oZWxwLXBvcG92ZXIgKm5nSWY9XCJsYWJlbEhlbHBQb3BvdmVyXCJcclxuICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXgtbjEgbXktbjJcIlxyXG4gICAgICAgICAgICAgICAgICAgW3RleHRdPVwibGFiZWxIZWxwUG9wb3Zlci50ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgIFtjb250ZW50UG9zaXRpb25dPVwibGFiZWxIZWxwUG9wb3Zlcj8uY29udGVudFBvc2l0aW9uID8/ICd0b3AtbGVmdCdcIlxyXG4gICAgICAgICAgICAgICAgICAgW21heFdpZHRoXT1cImxhYmVsSGVscFBvcG92ZXI/Lm1heFdpZHRoID8/ICcxNXJlbSdcIj5cclxuICA8L2VjLWhlbHAtcG9wb3Zlcj5cclxuPC9kaXY+XHJcblxyXG48ZGl2IGlkPVwie3tpZH19X3ZhbHVlXzBcIiBjbGFzcz1cInt7Y29uZGVuc2VkID8gJ3RleHQtYm9keS0yJyA6ICd0ZXh0LWRpc3BsYXktMSd9fSB7e2ludGVybmFsVmFsdWUuY2xhc3NuYW1lc319XCJcclxuICAgICBbY2xhc3MuZm9udC1jb2xvci1oaW50XT1cIiFpbnRlcm5hbFZhbHVlLnZhbHVlICYmIGludGVybmFsVmFsdWUubm9WYWx1ZVRleHRcIlxyXG4gICAgIHRpdGxlPVwie3tpbnRlcm5hbFZhbHVlLnRvb2x0aXB9fVwiPlxyXG5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwidXJsIGVsc2UgY29udGVudFwiPlxyXG4gICAgPGEgKm5nSWY9XCIhZXh0ZXJuYWxMaW5rXCJcclxuICAgICAgICBpZD1cInt7aWR9fV9saW5rXCJcclxuICAgICAgICByb3V0ZXJMaW5rPVwie3t1cmx9fVwiXHJcbiAgICAgICAgdGFyZ2V0PVwie3t0YXJnZXR9fVwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9hPlxyXG4gICAgPGEgKm5nSWY9XCJleHRlcm5hbExpbmtcIlxyXG4gICAgICAgIGlkPVwie3tpZH19X2xpbmtcIlxyXG4gICAgICAgIGhyZWY9XCJ7e3VybH19XCJcclxuICAgICAgICB0YXJnZXQ9XCJ7e3RhcmdldH19XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L2E+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvZGl2PlxyXG5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjY29udGVudD5cclxuICA8aSAqbmdJZj1cImludGVybmFsVmFsdWU/Lmljb25cIiBjbGFzcz1cImVjLWljb24ge3tpbnRlcm5hbFZhbHVlPy5pY29ufX1cIj48L2k+XHJcbiAgPHNwYW4+e3soaW50ZXJuYWxWYWx1ZT8udmFsdWUgfHwgaW50ZXJuYWxWYWx1ZT8ubm9WYWx1ZVRleHQpIHwgdHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
@@ -1,47 +0,0 @@
1
- import { Component, HostBinding, Input } from '@angular/core';
2
- import { UntypedFormControl } from '@angular/forms';
3
- import { JsonHelper } from '../../shared/json-helper';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@ngx-translate/core";
6
- import * as i2 from "@angular/common";
7
- import * as i3 from "../../controls/button/button.component";
8
- import * as i4 from "../../controls/button/copy-button.directive";
9
- export class JsonDisplayComponent {
10
- constructor(translate) {
11
- this.translate = translate;
12
- this.maxLength = 10000;
13
- this.jsonDisplay = new UntypedFormControl('');
14
- }
15
- ngOnChanges() {
16
- if (this.id) {
17
- this.attrId = this.id;
18
- }
19
- if (this.jsonString) {
20
- let display = this.jsonString;
21
- let parsedJson = JsonHelper.tryParseJSON(this.jsonString);
22
- if (parsedJson) {
23
- display = JSON.stringify(parsedJson, null, 2);
24
- }
25
- if (display.length > this.maxLength) {
26
- display = display.substr(0, this.maxLength) + `\r\n${this.translate.instant('MessageTooLong_Truncated_SC')}`;
27
- }
28
- this.jsonDisplay.patchValue(display);
29
- }
30
- }
31
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: JsonDisplayComponent, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
32
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: JsonDisplayComponent, selector: "ec-json-display", inputs: { id: "id", jsonString: "jsonString", maxLength: "maxLength" }, host: { properties: { "attr.id": "this.attrId" } }, usesOnChanges: true, ngImport: i0, template: "<ec-button id=\"{{id}}_copy\"\r\n class=\"copy-button\"\r\n *ngIf=\"jsonDisplay.value\"\r\n type=\"icon\"\r\n icon=\"icon-copy\"\r\n [ecCopyButton]=\"jsonDisplay\">\r\n</ec-button>\r\n<pre><code>{{jsonDisplay.value}}</code></pre>", styles: [":host{display:block;position:relative;color:var(--ec-color-primary-light);background:#354751;max-height:15rem;min-height:2.125rem;font-size:var(--ec-font-size-label);border-radius:var(--ec-border-radius-card);overflow-x:auto;overflow-y:auto;text-align:right}pre{margin-bottom:0;margin-top:-2rem;text-align:left}pre code{display:block;padding:.5rem}.copy-button{position:sticky;top:0}.copy-button ::ng-deep .ec-icon{color:var(--ec-color-secondary-light)!important}.copy-button ::ng-deep button:hover{background-color:transparent!important}.copy-button ::ng-deep button:hover .ec-icon{color:var(--ec-color-primary-light)!important}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.ButtonComponent, selector: "ec-button", inputs: ["id", "disabled", "icon", "label", "badge", "tabindex", "type", "pending", "pendingIcon", "customTemplate", "isSubmit", "autofocus"], outputs: ["clicked"] }, { kind: "directive", type: i4.CopyButtonDirective, selector: "[ecCopyButton]", inputs: ["ecCopyButton"] }] }); }
33
- }
34
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: JsonDisplayComponent, decorators: [{
35
- type: Component,
36
- args: [{ selector: 'ec-json-display', template: "<ec-button id=\"{{id}}_copy\"\r\n class=\"copy-button\"\r\n *ngIf=\"jsonDisplay.value\"\r\n type=\"icon\"\r\n icon=\"icon-copy\"\r\n [ecCopyButton]=\"jsonDisplay\">\r\n</ec-button>\r\n<pre><code>{{jsonDisplay.value}}</code></pre>", styles: [":host{display:block;position:relative;color:var(--ec-color-primary-light);background:#354751;max-height:15rem;min-height:2.125rem;font-size:var(--ec-font-size-label);border-radius:var(--ec-border-radius-card);overflow-x:auto;overflow-y:auto;text-align:right}pre{margin-bottom:0;margin-top:-2rem;text-align:left}pre code{display:block;padding:.5rem}.copy-button{position:sticky;top:0}.copy-button ::ng-deep .ec-icon{color:var(--ec-color-secondary-light)!important}.copy-button ::ng-deep button:hover{background-color:transparent!important}.copy-button ::ng-deep button:hover .ec-icon{color:var(--ec-color-primary-light)!important}\n"] }]
37
- }], ctorParameters: () => [{ type: i1.TranslateService }], propDecorators: { id: [{
38
- type: Input
39
- }], attrId: [{
40
- type: HostBinding,
41
- args: ['attr.id']
42
- }], jsonString: [{
43
- type: Input
44
- }], maxLength: [{
45
- type: Input
46
- }] } });
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi1kaXNwbGF5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9kaXNwbGF5L2pzb24tZGlzcGxheS9qc29uLWRpc3BsYXkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2Rpc3BsYXkvanNvbi1kaXNwbGF5L2pzb24tZGlzcGxheS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7QUFPdEQsTUFBTSxPQUFPLG9CQUFvQjtJQVEvQixZQUFvQixTQUEyQjtRQUEzQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUh0QyxjQUFTLEdBQVcsS0FBSyxDQUFDO1FBQzVCLGdCQUFXLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUVHLENBQUM7SUFFcEQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ1osSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3hCLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNwQixJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBRTlCLElBQUksVUFBVSxHQUF3QixVQUFVLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMvRSxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUNmLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDaEQsQ0FBQztZQUVELElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ3BDLE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyw2QkFBNkIsQ0FBQyxFQUFFLENBQUM7WUFDL0csQ0FBQztZQUVELElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7SUFDSCxDQUFDOytHQTdCVSxvQkFBb0I7bUdBQXBCLG9CQUFvQix3TUNWakMseVJBTzZDOzs0RkRHaEMsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGlCQUFpQjtxRkFNbEIsRUFBRTtzQkFBVixLQUFLO2dCQUNrQixNQUFNO3NCQUE3QixXQUFXO3VCQUFDLFNBQVM7Z0JBQ2IsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQsIE9uQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBVbnR5cGVkRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgSnNvbkhlbHBlciB9IGZyb20gJy4uLy4uL3NoYXJlZC9qc29uLWhlbHBlcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VjLWpzb24tZGlzcGxheScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2pzb24tZGlzcGxheS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vanNvbi1kaXNwbGF5LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEpzb25EaXNwbGF5Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuXHJcbiAgQElucHV0KCkgaWQ/OiBzdHJpbmc7XHJcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJykgYXR0cklkPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGpzb25TdHJpbmc/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgbWF4TGVuZ3RoOiBudW1iZXIgPSAxMDAwMDtcclxuICBwdWJsaWMganNvbkRpc3BsYXkgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKCcnKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpIHsgfVxyXG5cclxuICBuZ09uQ2hhbmdlcygpIHtcclxuICAgIGlmICh0aGlzLmlkKSB7XHJcbiAgICAgIHRoaXMuYXR0cklkID0gdGhpcy5pZDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5qc29uU3RyaW5nKSB7XHJcbiAgICAgIGxldCBkaXNwbGF5ID0gdGhpcy5qc29uU3RyaW5nO1xyXG5cclxuICAgICAgbGV0IHBhcnNlZEpzb246IHVua25vd24gfCB1bmRlZmluZWQgPSBKc29uSGVscGVyLnRyeVBhcnNlSlNPTih0aGlzLmpzb25TdHJpbmcpO1xyXG4gICAgICBpZiAocGFyc2VkSnNvbikge1xyXG4gICAgICAgIGRpc3BsYXkgPSBKU09OLnN0cmluZ2lmeShwYXJzZWRKc29uLCBudWxsLCAyKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGRpc3BsYXkubGVuZ3RoID4gdGhpcy5tYXhMZW5ndGgpIHtcclxuICAgICAgICBkaXNwbGF5ID0gZGlzcGxheS5zdWJzdHIoMCwgdGhpcy5tYXhMZW5ndGgpICsgYFxcclxcbiR7dGhpcy50cmFuc2xhdGUuaW5zdGFudCgnTWVzc2FnZVRvb0xvbmdfVHJ1bmNhdGVkX1NDJyl9YDtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5qc29uRGlzcGxheS5wYXRjaFZhbHVlKGRpc3BsYXkpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZWMtYnV0dG9uIGlkPVwie3tpZH19X2NvcHlcIlxyXG4gICAgICAgICAgIGNsYXNzPVwiY29weS1idXR0b25cIlxyXG4gICAgICAgICAgICpuZ0lmPVwianNvbkRpc3BsYXkudmFsdWVcIlxyXG4gICAgICAgICAgIHR5cGU9XCJpY29uXCJcclxuICAgICAgICAgICBpY29uPVwiaWNvbi1jb3B5XCJcclxuICAgICAgICAgICBbZWNDb3B5QnV0dG9uXT1cImpzb25EaXNwbGF5XCI+XHJcbjwvZWMtYnV0dG9uPlxyXG48cHJlPjxjb2RlPnt7anNvbkRpc3BsYXkudmFsdWV9fTwvY29kZT48L3ByZT4iXX0=
@@ -1,120 +0,0 @@
1
- import { Inject, Input, Directive } from '@angular/core';
2
- import { DOCUMENT } from '@angular/common';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "../../core/cache.service";
5
- /**
6
- * Base class for handling click and drag resizing of elements with a mouse.
7
- * Derived classes must provide the element to be resized and implement the setWidth function.
8
- */
9
- export class ResizableBase {
10
- ngAfterViewInit() {
11
- if (this.rememberWidth && this.id) {
12
- let cached = this.cacheService.getItem('resizable-' + this.id);
13
- if (cached && cached.widths && cached.widths.length > 0) {
14
- this.restoreWidths(cached.widths);
15
- }
16
- }
17
- }
18
- constructor(renderer, cacheService, document) {
19
- this.renderer = renderer;
20
- this.cacheService = cacheService;
21
- this.document = document;
22
- /**Set to true if the resizable should remember its width. Requires the element to have an ID*/
23
- this.rememberWidth = false;
24
- /**The id of the resizable, used for GI and for remembering the width */
25
- this.id = '';
26
- /** The element that is current being resized */
27
- this.currentEl = null;
28
- /** The x position of the mouse when dragging starts. Relative to the viewport. */
29
- this.startScreenX = 0;
30
- /** The width of the current element when dragging starts. */
31
- this.startElWidth = 0;
32
- }
33
- /**
34
- * On a mousedown event
35
- * * store the width of the current element to calculate the new width
36
- * * store the horizontal position of the pointer to calculate the new width.
37
- * * add the 'is-active' class to the current element
38
- * * set up listeners on the document to know when dragging starts and stops.
39
- * Mouse event listeners are added to the document because the cursor may move
40
- * off the current element while dragging.
41
- */
42
- startDrag(event) {
43
- if (this.currentEl) {
44
- this.startElWidth = this.currentEl.offsetWidth;
45
- this.startScreenX = event.screenX;
46
- this.renderer.addClass(this.currentEl, 'is-active');
47
- this.renderer.setStyle(this.document.body, 'cursor', 'col-resize');
48
- // Remove any listeners that may have not been cleaned up before we register new listeners.
49
- if (this.mouseupListener) {
50
- this.mouseupListener();
51
- this.mouseupListener = undefined;
52
- }
53
- if (this.mousemoveListener) {
54
- this.mousemoveListener();
55
- this.mousemoveListener = undefined;
56
- }
57
- this.mouseupListener = this.renderer.listen(this.document, 'mouseup', this.stopDrag.bind(this));
58
- this.mousemoveListener = this.renderer.listen(this.document, 'mousemove', this.drag.bind(this));
59
- }
60
- else {
61
- throw new Error(`currentEl is ${this.currentEl}. currentEl must be assigned before startDrag() is called.`);
62
- }
63
- }
64
- /**
65
- * On a mousemove event, calculate the new width of the current element by
66
- * adding the difference of the start pageX position and the current pageX
67
- * position to the width of the element when we started dragging. Pass the
68
- * calculated with to the setWidth method.
69
- */
70
- drag(event) {
71
- this.setWidth(this.startElWidth + (event.screenX - this.startScreenX));
72
- }
73
- /**
74
- * On a mouseup event
75
- * * remove the mouse event listeners on the document.
76
- * * remove the 'is-active' class from the current element
77
- * * reset the cursor style on the body
78
- */
79
- stopDrag(event) {
80
- if (this.mousemoveListener) {
81
- this.mousemoveListener();
82
- this.mousemoveListener = undefined;
83
- }
84
- if (this.mouseupListener) {
85
- this.mouseupListener();
86
- this.mouseupListener = undefined;
87
- }
88
- if (this.currentEl) {
89
- this.renderer.removeClass(this.currentEl, 'is-active');
90
- }
91
- this.renderer.removeStyle(this.document.body, 'cursor');
92
- }
93
- /**Called after the view initializes if the component supports restoring widths and there are cached widths to restore.
94
- * To be overridden in a derived class if it supports restoring widths, defaults to a no-op*/
95
- restoreWidths(widths) { }
96
- /** Store the provided widths in cache so they can be retrieved later */
97
- saveWidths(widths) {
98
- if (this.rememberWidth && this.id) {
99
- this.cacheService.setItem('resizable-' + this.id, {
100
- widths: widths
101
- });
102
- }
103
- else if (this.rememberWidth) {
104
- console.error('rememberWidth is set but will not take effect unless ID is also set');
105
- }
106
- }
107
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ResizableBase, deps: [{ token: i0.Renderer2 }, { token: i1.CacheService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive }); }
108
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: ResizableBase, inputs: { rememberWidth: "rememberWidth", id: "id" }, ngImport: i0 }); }
109
- }
110
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ResizableBase, decorators: [{
111
- type: Directive
112
- }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i1.CacheService }, { type: Document, decorators: [{
113
- type: Inject,
114
- args: [DOCUMENT]
115
- }] }], propDecorators: { rememberWidth: [{
116
- type: Input
117
- }], id: [{
118
- type: Input
119
- }] } });
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXphYmxlLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvZGlzcGxheS9yZXNpemFibGUvcmVzaXphYmxlLWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFhLE1BQU0sRUFBRSxLQUFLLEVBQWlCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQUszQzs7O0dBR0c7QUFFSCxNQUFNLE9BQWdCLGFBQWE7SUFDakMsZUFBZTtRQUNiLElBQUcsSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsRUFBRSxFQUFDLENBQUM7WUFDaEMsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQW1CLFlBQVksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDakYsSUFBRyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUMsQ0FBQztnQkFDdEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDcEMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBeUJELFlBQ1ksUUFBbUIsRUFDckIsWUFBMEIsRUFDTixRQUFrQjtRQUZwQyxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ3JCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQ04sYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQTFCaEQsK0ZBQStGO1FBRXhGLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBRXRDLHlFQUF5RTtRQUVsRSxPQUFFLEdBQVcsRUFBRSxDQUFDO1FBRXZCLGdEQUFnRDtRQUN0QyxjQUFTLEdBQXVCLElBQUksQ0FBQztRQUUvQyxrRkFBa0Y7UUFDeEUsaUJBQVks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SSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxFQUFFLEVBQXFCO2dCQUNuRSxNQUFNLEVBQUUsTUFBTTthQUNmLENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxJQUFHLElBQUksQ0FBQyxhQUFhLEVBQUMsQ0FBQztZQUM1QixPQUFPLENBQUMsS0FBSyxDQUFDLHFFQUFxRSxDQUFDLENBQUM7UUFDdkYsQ0FBQztJQUNILENBQUM7K0dBNUhtQixhQUFhLHVFQW9DdkIsUUFBUTttR0FwQ0UsYUFBYTs7NEZBQWIsYUFBYTtrQkFEbEMsU0FBUzs7MEJBcUNMLE1BQU07MkJBQUMsUUFBUTt5Q0F4QlgsYUFBYTtzQkFEbkIsS0FBSztnQkFLQyxFQUFFO3NCQURSLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZW5kZXJlcjIsIEluamVjdCwgSW5wdXQsIEFmdGVyVmlld0luaXQsIERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENhY2hlU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvY2FjaGUuc2VydmljZSc7XHJcblxyXG5leHBvcnQgdHlwZSBSZXNpemVDYWNoZUVudHJ5ID0geyB3aWR0aHM6IG51bWJlcltdIH07XHJcblxyXG4vKipcclxuICogQmFzZSBjbGFzcyBmb3IgaGFuZGxpbmcgY2xpY2sgYW5kIGRyYWcgcmVzaXppbmcgb2YgZWxlbWVudHMgd2l0aCBhIG1vdXNlLiBcclxuICogRGVyaXZlZCBjbGFzc2VzIG11c3QgcHJvdmlkZSB0aGUgZWxlbWVudCB0byBiZSByZXNpemVkIGFuZCBpbXBsZW1lbnQgdGhlIHNldFdpZHRoIGZ1bmN0aW9uLlxyXG4gKi9cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBSZXNpemFibGVCYXNlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgaWYodGhpcy5yZW1lbWJlcldpZHRoICYmIHRoaXMuaWQpe1xyXG4gICAgICBsZXQgY2FjaGVkID0gdGhpcy5jYWNoZVNlcnZpY2UuZ2V0SXRlbTxSZXNpemVDYWNoZUVudHJ5PigncmVzaXphYmxlLScgKyB0aGlzLmlkKTtcclxuICAgICAgaWYoY2FjaGVkICYmIGNhY2hlZC53aWR0aHMgJiYgY2FjaGVkLndpZHRocy5sZW5ndGggPiAwKXtcclxuICAgICAgICB0aGlzLnJlc3RvcmVXaWR0aHMoY2FjaGVkLndpZHRocyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlNldCB0byB0cnVlIGlmIHRoZSByZXNpemFibGUgc2hvdWxkIHJlbWVtYmVyIGl0cyB3aWR0aC4gUmVxdWlyZXMgdGhlIGVsZW1lbnQgdG8gaGF2ZSBhbiBJRCovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgcmVtZW1iZXJXaWR0aDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipUaGUgaWQgb2YgdGhlIHJlc2l6YWJsZSwgdXNlZCBmb3IgR0kgYW5kIGZvciByZW1lbWJlcmluZyB0aGUgd2lkdGggICovXHJcbiAgQElucHV0KCkgXHJcbiAgcHVibGljIGlkOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgLyoqIFRoZSBlbGVtZW50IHRoYXQgaXMgY3VycmVudCBiZWluZyByZXNpemVkICovXHJcbiAgcHJvdGVjdGVkIGN1cnJlbnRFbDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLyoqIFRoZSB4IHBvc2l0aW9uIG9mIHRoZSBtb3VzZSB3aGVuIGRyYWdnaW5nIHN0YXJ0cy4gUmVsYXRpdmUgdG8gdGhlIHZpZXdwb3J0LiAqL1xyXG4gIHByb3RlY3RlZCBzdGFydFNjcmVlblg6IG51bWJlciA9IDA7XHJcblxyXG4gICAvKiogVGhlIHdpZHRoIG9mIHRoZSBjdXJyZW50IGVsZW1lbnQgd2hlbiBkcmFnZ2luZyBzdGFydHMuICovXHJcbiAgcHJvdGVjdGVkIHN0YXJ0RWxXaWR0aDogbnVtYmVyID0gMDtcclxuXHJcbiAgLyoqIFxyXG4gICAqIFN0b3JlZCAndW5saXN0ZW4nIGZ1bmN0aW9ucyB0aGF0IHJlbW92ZSB0aGVpciByZXNwZWN0aXZlIGxpc3RlbmVycyB3aGVuIGNhbGxlZCBcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgbW91c2V1cExpc3RlbmVyPzogKCkgPT4gdm9pZDtcclxuICBwcm90ZWN0ZWQgbW91c2Vtb3ZlTGlzdGVuZXI/OiAoKSA9PiB2b2lkO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByb3RlY3RlZCByZW5kZXJlcjogUmVuZGVyZXIyLCBcclxuICAgIHByaXZhdGUgY2FjaGVTZXJ2aWNlOiBDYWNoZVNlcnZpY2UsXHJcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcm90ZWN0ZWQgZG9jdW1lbnQ6IERvY3VtZW50XHJcbiAgKXt9XHJcblxyXG4gIC8qKiBcclxuICAgKiBPbiBhIG1vdXNlZG93biBldmVudFxyXG4gICAqICogc3RvcmUgdGhlIHdpZHRoIG9mIHRoZSBjdXJyZW50IGVsZW1lbnQgdG8gY2FsY3VsYXRlIHRoZSBuZXcgd2lkdGhcclxuICAgKiAqIHN0b3JlIHRoZSBob3Jpem9udGFsIHBvc2l0aW9uIG9mIHRoZSBwb2ludGVyIHRvIGNhbGN1bGF0ZSB0aGUgbmV3IHdpZHRoLiBcclxuICAgKiAqIGFkZCB0aGUgJ2lzLWFjdGl2ZScgY2xhc3MgdG8gdGhlIGN1cnJlbnQgZWxlbWVudFxyXG4gICAqICogc2V0IHVwIGxpc3RlbmVycyBvbiB0aGUgZG9jdW1lbnQgdG8ga25vdyB3aGVuIGRyYWdnaW5nIHN0YXJ0cyBhbmQgc3RvcHMuIFxyXG4gICAqIE1vdXNlIGV2ZW50IGxpc3RlbmVycyBhcmUgYWRkZWQgdG8gdGhlIGRvY3VtZW50IGJlY2F1c2UgdGhlIGN1cnNvciBtYXkgbW92ZSBcclxuICAgKiBvZmYgdGhlIGN1cnJlbnQgZWxlbWVudCB3aGlsZSBkcmFnZ2luZy5cclxuICAgKi9cclxuICBwdWJsaWMgc3RhcnREcmFnKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50RWwpIHtcclxuICAgICAgdGhpcy5zdGFydEVsV2lkdGggPSB0aGlzLmN1cnJlbnRFbC5vZmZzZXRXaWR0aDtcclxuICAgICAgdGhpcy5zdGFydFNjcmVlblggPSBldmVudC5zY3JlZW5YO1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuY3VycmVudEVsLCAnaXMtYWN0aXZlJyk7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5kb2N1bWVudC5ib2R5LCAnY3Vyc29yJywgJ2NvbC1yZXNpemUnKTtcclxuXHJcbiAgICAgIC8vIFJlbW92ZSBhbnkgbGlzdGVuZXJzIHRoYXQgbWF5IGhhdmUgbm90IGJlZW4gY2xlYW5lZCB1cCBiZWZvcmUgd2UgcmVnaXN0ZXIgbmV3IGxpc3RlbmVycy5cclxuICAgICAgaWYgKHRoaXMubW91c2V1cExpc3RlbmVyKSB7XHJcbiAgICAgICAgdGhpcy5tb3VzZXVwTGlzdGVuZXIoKTtcclxuICAgICAgICB0aGlzLm1vdXNldXBMaXN0ZW5lciA9IHVuZGVmaW5lZDtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5tb3VzZW1vdmVMaXN0ZW5lcikge1xyXG4gICAgICAgIHRoaXMubW91c2Vtb3ZlTGlzdGVuZXIoKTtcclxuICAgICAgICB0aGlzLm1vdXNlbW92ZUxpc3RlbmVyID0gdW5kZWZpbmVkO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLm1vdXNldXBMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMuZG9jdW1lbnQsICdtb3VzZXVwJywgdGhpcy5zdG9wRHJhZy5iaW5kKHRoaXMpKTtcclxuICAgICAgdGhpcy5tb3VzZW1vdmVMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMuZG9jdW1lbnQsICdtb3VzZW1vdmUnLCB0aGlzLmRyYWcuYmluZCh0aGlzKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGN1cnJlbnRFbCBpcyAke3RoaXMuY3VycmVudEVsfS4gY3VycmVudEVsIG11c3QgYmUgYXNzaWduZWQgYmVmb3JlIHN0YXJ0RHJhZygpIGlzIGNhbGxlZC5gKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9uIGEgbW91c2Vtb3ZlIGV2ZW50LCBjYWxjdWxhdGUgdGhlIG5ldyB3aWR0aCBvZiB0aGUgY3VycmVudCBlbGVtZW50IGJ5IFxyXG4gICAqIGFkZGluZyB0aGUgZGlmZmVyZW5jZSBvZiB0aGUgc3RhcnQgcGFnZVggcG9zaXRpb24gYW5kIHRoZSBjdXJyZW50IHBhZ2VYIFxyXG4gICAqIHBvc2l0aW9uIHRvIHRoZSB3aWR0aCBvZiB0aGUgZWxlbWVudCB3aGVuIHdlIHN0YXJ0ZWQgZHJhZ2dpbmcuIFBhc3MgdGhlIFxyXG4gICAqIGNhbGN1bGF0ZWQgd2l0aCB0byB0aGUgc2V0V2lkdGggbWV0aG9kLlxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBkcmFnKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLnNldFdpZHRoKHRoaXMuc3RhcnRFbFdpZHRoICsgKGV2ZW50LnNjcmVlblggLSB0aGlzLnN0YXJ0U2NyZWVuWCkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIHRoZSBjdXJyZW50IGVsZW1lbnQncyB3aWR0aC4gQ2FsbGVkIGFmdGVyIGEgbW91c2Vtb3ZlIGV2ZW50LlxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBzZXRXaWR0aCh3aWR0aDogbnVtYmVyKTogdm9pZDtcclxuXHJcbiAgLyoqXHJcbiAgICogT24gYSBtb3VzZXVwIGV2ZW50XHJcbiAgICogKiByZW1vdmUgdGhlIG1vdXNlIGV2ZW50IGxpc3RlbmVycyBvbiB0aGUgZG9jdW1lbnQuXHJcbiAgICogKiByZW1vdmUgdGhlICdpcy1hY3RpdmUnIGNsYXNzIGZyb20gdGhlIGN1cnJlbnQgZWxlbWVudFxyXG4gICAqICogcmVzZXQgdGhlIGN1cnNvciBzdHlsZSBvbiB0aGUgYm9keVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBzdG9wRHJhZyhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMubW91c2Vtb3ZlTGlzdGVuZXIpIHtcclxuICAgICAgdGhpcy5tb3VzZW1vdmVMaXN0ZW5lcigpO1xyXG4gICAgICB0aGlzLm1vdXNlbW92ZUxpc3RlbmVyID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBpZiAodGhpcy5tb3VzZXVwTGlzdGVuZXIpIHtcclxuICAgICAgdGhpcy5tb3VzZXVwTGlzdGVuZXIoKTtcclxuICAgICAgdGhpcy5tb3VzZXVwTGlzdGVuZXIgPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGlmICh0aGlzLmN1cnJlbnRFbCkge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuY3VycmVudEVsLCAnaXMtYWN0aXZlJyk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZSh0aGlzLmRvY3VtZW50LmJvZHksICdjdXJzb3InKTtcclxuICB9XHJcblxyXG4gIC8qKkNhbGxlZCBhZnRlciB0aGUgdmlldyBpbml0aWFsaXplcyBpZiB0aGUgY29tcG9uZW50IHN1cHBvcnRzIHJlc3RvcmluZyB3aWR0aHMgYW5kIHRoZXJlIGFyZSBjYWNoZWQgd2lkdGhzIHRvIHJlc3RvcmUuIFxyXG4gICAqIFRvIGJlIG92ZXJyaWRkZW4gaW4gYSBkZXJpdmVkIGNsYXNzIGlmIGl0IHN1cHBvcnRzIHJlc3RvcmluZyB3aWR0aHMsIGRlZmF1bHRzIHRvIGEgbm8tb3AqL1xyXG4gIHByb3RlY3RlZCByZXN0b3JlV2lkdGhzKHdpZHRoczogbnVtYmVyW10pOiB2b2lkIHsgfVxyXG5cclxuICAvKiogU3RvcmUgdGhlIHByb3ZpZGVkIHdpZHRocyBpbiBjYWNoZSBzbyB0aGV5IGNhbiBiZSByZXRyaWV2ZWQgbGF0ZXIgKi9cclxuICBwcm90ZWN0ZWQgc2F2ZVdpZHRocyh3aWR0aHM6IG51bWJlcltdKXtcclxuICAgIGlmKHRoaXMucmVtZW1iZXJXaWR0aCAmJiB0aGlzLmlkKXtcclxuICAgICAgdGhpcy5jYWNoZVNlcnZpY2Uuc2V0SXRlbSgncmVzaXphYmxlLScgKyB0aGlzLmlkLCA8UmVzaXplQ2FjaGVFbnRyeT4ge1xyXG4gICAgICAgIHdpZHRoczogd2lkdGhzXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmKHRoaXMucmVtZW1iZXJXaWR0aCl7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ3JlbWVtYmVyV2lkdGggaXMgc2V0IGJ1dCB3aWxsIG5vdCB0YWtlIGVmZmVjdCB1bmxlc3MgSUQgaXMgYWxzbyBzZXQnKTtcclxuICAgIH1cclxuICB9XHJcbn0iXX0=
@@ -1,42 +0,0 @@
1
- import { Component } from '@angular/core';
2
- import { Subject, timer } from 'rxjs';
3
- import { takeUntil, tap } from 'rxjs/operators';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "./splash.service";
6
- export class SplashComponent {
7
- constructor(splashService) {
8
- this.splashService = splashService;
9
- /** Sets the visibility of the splash display */
10
- this.isVisible = true;
11
- this.stopAnimation = false;
12
- /** Emits when the service is destroyed */
13
- this.destroyed = new Subject();
14
- }
15
- ngOnInit() {
16
- this.splashService.splashVisibility.pipe(takeUntil(this.destroyed), tap(async (value) => {
17
- if (value) {
18
- this.stopAnimation = false;
19
- }
20
- else {
21
- // Prevent animation from continuing after splash screen is hidden
22
- // but if we hide it then show while the timer is running, don't stop the animation after all
23
- timer(1000).pipe(takeUntil(this.splashService.splashVisibility)).subscribe(() => {
24
- this.stopAnimation = true;
25
- });
26
- }
27
- })).subscribe(showSplash => {
28
- this.isVisible = showSplash;
29
- });
30
- }
31
- ngOnDestroy() {
32
- this.destroyed.next();
33
- this.destroyed.unsubscribe();
34
- }
35
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SplashComponent, deps: [{ token: i1.SplashService }], target: i0.ɵɵFactoryTarget.Component }); }
36
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SplashComponent, selector: "ec-splash", ngImport: i0, template: "<div class=\"app-splash\" [class.app-loaded]=\"!isVisible\">\r\n <img src=\"/assets/images/splash.gif\">\r\n</div>" }); }
37
- }
38
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SplashComponent, decorators: [{
39
- type: Component,
40
- args: [{ selector: 'ec-splash', template: "<div class=\"app-splash\" [class.app-loaded]=\"!isVisible\">\r\n <img src=\"/assets/images/splash.gif\">\r\n</div>" }]
41
- }], ctorParameters: () => [{ type: i1.SplashService }] });
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsYXNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9kaXNwbGF5L3NwbGFzaC9zcGxhc2guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2Rpc3BsYXkvc3BsYXNoL3NwbGFzaC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV0QyxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFNaEQsTUFBTSxPQUFPLGVBQWU7SUFRMUIsWUFBb0IsYUFBNEI7UUFBNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFQaEQsZ0RBQWdEO1FBQ3pDLGNBQVMsR0FBWSxJQUFJLENBQUM7UUFDMUIsa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFFdEMsMENBQTBDO1FBQ2xDLGNBQVMsR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUVHLENBQUM7SUFFckQsUUFBUTtRQUNOLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUN0QyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUN6QixHQUFHLENBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxFQUFFO1lBQ2hCLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQ1YsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7WUFDN0IsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLGtFQUFrRTtnQkFDbEUsNkZBQTZGO2dCQUM3RixLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRSxFQUFFO29CQUM3RSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztnQkFDNUIsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMvQixDQUFDOytHQWhDVSxlQUFlO21HQUFmLGVBQWUsaURDVDVCLHVIQUVNOzs0RkRPTyxlQUFlO2tCQUozQixTQUFTOytCQUNFLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRpbWVyIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFNwbGFzaFNlcnZpY2UgfSBmcm9tICcuL3NwbGFzaC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VjLXNwbGFzaCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NwbGFzaC5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFNwbGFzaENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICAvKiogU2V0cyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgc3BsYXNoIGRpc3BsYXkgKi9cclxuICBwdWJsaWMgaXNWaXNpYmxlOiBib29sZWFuID0gdHJ1ZTtcclxuICBwdWJsaWMgc3RvcEFuaW1hdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKiogRW1pdHMgd2hlbiB0aGUgc2VydmljZSBpcyBkZXN0cm95ZWQgKi9cclxuICBwcml2YXRlIGRlc3Ryb3llZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3BsYXNoU2VydmljZTogU3BsYXNoU2VydmljZSkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5zcGxhc2hTZXJ2aWNlLnNwbGFzaFZpc2liaWxpdHkucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkKSxcclxuICAgICAgdGFwKGFzeW5jIHZhbHVlID0+IHtcclxuICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgIHRoaXMuc3RvcEFuaW1hdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAvLyBQcmV2ZW50IGFuaW1hdGlvbiBmcm9tIGNvbnRpbnVpbmcgYWZ0ZXIgc3BsYXNoIHNjcmVlbiBpcyBoaWRkZW5cclxuICAgICAgICAgIC8vIGJ1dCBpZiB3ZSBoaWRlIGl0IHRoZW4gc2hvdyB3aGlsZSB0aGUgdGltZXIgaXMgcnVubmluZywgZG9uJ3Qgc3RvcCB0aGUgYW5pbWF0aW9uIGFmdGVyIGFsbFxyXG4gICAgICAgICAgdGltZXIoMTAwMCkucGlwZSh0YWtlVW50aWwodGhpcy5zcGxhc2hTZXJ2aWNlLnNwbGFzaFZpc2liaWxpdHkpKS5zdWJzY3JpYmUoKCk9PntcclxuICAgICAgICAgICAgdGhpcy5zdG9wQW5pbWF0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICkuc3Vic2NyaWJlKHNob3dTcGxhc2ggPT4ge1xyXG4gICAgICB0aGlzLmlzVmlzaWJsZSA9IHNob3dTcGxhc2g7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5kZXN0cm95ZWQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95ZWQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImFwcC1zcGxhc2hcIiBbY2xhc3MuYXBwLWxvYWRlZF09XCIhaXNWaXNpYmxlXCI+XHJcbiAgICA8aW1nIHNyYz1cIi9hc3NldHMvaW1hZ2VzL3NwbGFzaC5naWZcIj5cclxuPC9kaXY+Il19
@@ -1,227 +0,0 @@
1
- import { Directive, Inject, Input } from '@angular/core';
2
- import { DOCUMENT } from '@angular/common';
3
- import { ResizableBase } from '../resizable/resizable-base';
4
- import { Subject } from 'rxjs';
5
- import { takeUntil } from 'rxjs/operators';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "../../core/cache.service";
8
- /**
9
- * Add the ability to resize columns to a standard HTML table.
10
- * Specify a column as resizable by adding the .is-resizable class to a <th>.
11
- *
12
- * Usage:
13
- ```html
14
- <table [ecResizableTable]>
15
- <colgroup><col><col><col></colgroup>
16
- <thead>
17
- <tr>
18
- <th class="is-resizable">Resizable</th>
19
- <th class="is-resizable">Resizable</th>
20
- <th>Static</th>
21
- </tr>
22
- </thead>
23
- ...
24
- </table>
25
-
26
- ```
27
- * Note: this directive is meant to be used internally with the TableComponent
28
- * and is not exposed in the public-api of the library
29
- */
30
- export class ResizableTableDirective extends ResizableBase {
31
- constructor(el, renderer, cacheService, document) {
32
- super(renderer, cacheService, document);
33
- this.el = el;
34
- this.sortableTable = false;
35
- /**
36
- * Stored reference to the <col> element children. Will throw if none are found. Will
37
- * warn if the number of <col> elements do not match the number of <th> elements
38
- */
39
- this.cols = [];
40
- /**
41
- * The widths of each table column. These are updated as columns are resized and
42
- * are used to calculate the new table width.
43
- */
44
- this.colWidths = [];
45
- /**
46
- * The current table width
47
- */
48
- this.currentTableWidth = 0;
49
- /**
50
- * The width of the table when the component was initialized. The table cannot
51
- * be shrunk below this width. If a column resize would cause the current table
52
- * width to be below this value, the last column is widened instead.
53
- */
54
- this.minTableWidth = 0;
55
- /**
56
- * The width the column can not be resized below.
57
- */
58
- this.minColWidth = 32;
59
- this.destroyed = new Subject();
60
- }
61
- ngOnInit() {
62
- this.initResizableColumns();
63
- this.resizableColumns.changes.pipe(takeUntil(this.destroyed)).subscribe(() => this.initResizableColumns());
64
- }
65
- ngOnDestroy() {
66
- this.destroyed.next();
67
- this.destroyed.complete();
68
- }
69
- /**
70
- * Initialize
71
- * * Check that the host element is a table and that <col> elements are present
72
- * * Save the initial width of table as the minimum table width
73
- * * Store a reference to all <col> elements
74
- * * Add a handle to each resizable column and set up mousedown listeners to start dragging
75
- */
76
- initResizableColumns() {
77
- if (this.isResizable !== false) {
78
- this.tableEl = this.el.nativeElement;
79
- if (this.tableEl.tagName !== 'TABLE') {
80
- throw new Error(`The 'ecResizableTable' directive can only be placed on a <table> element.`);
81
- }
82
- if (this.sortableTable) {
83
- this.minColWidth = 48;
84
- }
85
- const headers = this.tableEl.querySelectorAll('th');
86
- const cols = this.tableEl.querySelectorAll('col');
87
- this.cols = [];
88
- this.colWidths = [];
89
- if (cols.length === 0) {
90
- const fragment = this.document.createDocumentFragment();
91
- const colgroup = this.renderer.createElement('colgroup');
92
- headers.forEach(() => {
93
- const col = this.renderer.createElement('col');
94
- this.cols.push(col);
95
- this.renderer.appendChild(fragment, col);
96
- });
97
- this.renderer.appendChild(colgroup, fragment);
98
- this.renderer.insertBefore(this.tableEl, colgroup, this.tableEl.firstElementChild);
99
- }
100
- else {
101
- cols.forEach(colEl => {
102
- this.cols.push(colEl);
103
- });
104
- if (headers.length !== cols.length) {
105
- console.warn(`There are ${headers.length} <th> elements and ${this.cols.length} <col> elements in this this table. The number of columns and table headers must match. <th> elements with a 'colspan' attribute are currently not supported.`);
106
- }
107
- }
108
- const lastResizableIndex = Array.from(headers).reverse().findIndex(el => el.classList.contains('is-resizable')) + 1;
109
- this.lastColIndex = this.cols.length - lastResizableIndex;
110
- headers.forEach(th => {
111
- if (th.classList.contains('is-resizable')) {
112
- const handle = th.querySelector('.handle');
113
- this.renderer.listen(handle, 'mousedown', (event) => {
114
- this.currentEl = th;
115
- this.startDrag(event);
116
- });
117
- }
118
- });
119
- // We need to wait a tick for a view that was previously loaded to be removed
120
- // from the DOM and allow this directive's parent view to fully expand in the
121
- // viewport before getting widths.
122
- window.setTimeout(() => {
123
- this.setInitialWidths(headers);
124
- });
125
- }
126
- }
127
- /**
128
- * Update the column with the calculated width while resizing.
129
- * If the column is narrowed so that the table would be narrower than the min-width,
130
- * expand the last column. If the table is then widened, return the last column
131
- * to its initial width.
132
- * @param width
133
- */
134
- setWidth(width) {
135
- if (this.currentEl) {
136
- const cellIndex = this.currentEl.cellIndex;
137
- width = Math.max(width, this.minColWidth);
138
- this.colWidths[cellIndex] = width;
139
- this.renderer.setStyle(this.cols[cellIndex], 'width', width + 'px');
140
- let totalColWidths = 0;
141
- this.colWidths.forEach(w => {
142
- totalColWidths += w;
143
- });
144
- const containerWidth = this.containerEl.nativeElement.clientWidth;
145
- if (this.minTableWidth !== containerWidth) {
146
- this.minTableWidth = containerWidth;
147
- }
148
- const diff = totalColWidths - this.minTableWidth;
149
- if (diff < 0) {
150
- const colIndex = cellIndex === this.lastColIndex ? this.lastColIndex - 1 : this.lastColIndex;
151
- const colWidth = Math.max(this.colWidths[colIndex] + Math.abs(diff), this.minColWidth);
152
- this.renderer.setStyle(this.cols[colIndex], 'width', colWidth + 'px');
153
- this.renderer.setStyle(this.tableEl, 'width', this.minTableWidth + 'px');
154
- }
155
- else {
156
- this.renderer.setStyle(this.tableEl, 'width', totalColWidths + 'px');
157
- }
158
- }
159
- }
160
- stopDrag(event) {
161
- super.stopDrag(event);
162
- if (this.currentEl) {
163
- const cellIndex = this.currentEl.cellIndex;
164
- const currentCol = this.resizableColumns.find(col => col.el.nativeElement.cellIndex === cellIndex);
165
- if (currentCol) {
166
- currentCol.emitWidth(Math.round(this.colWidths[cellIndex]));
167
- }
168
- }
169
- }
170
- /**
171
- * Capture the initial width of the table and the table headers.
172
- * @param headers
173
- */
174
- setInitialWidths(headers) {
175
- this.currentTableWidth = this.tableEl.offsetWidth;
176
- this.minTableWidth = this.containerEl.nativeElement.clientWidth;
177
- headers.forEach(th => {
178
- this.colWidths[th.cellIndex] = th.offsetWidth;
179
- const width = th.style.width;
180
- if (width) {
181
- this.renderer.setStyle(this.cols[th.cellIndex], 'width', width);
182
- this.renderer.removeStyle(th, 'width');
183
- }
184
- });
185
- let totalColWidths = 0;
186
- this.colWidths.forEach(w => {
187
- totalColWidths += w;
188
- });
189
- // Check to see if our total column widths is greater than our table width
190
- let colWidthDifference = totalColWidths - this.currentTableWidth;
191
- // If the total column widths is greater than zero then its larger than our table container
192
- // To prevent a horizontal scroll we will bump a columns width down to match the table size
193
- if (colWidthDifference > 0) {
194
- // Ideally we will choose the second to the last column, but if there is only one that'll do
195
- let columnToReduce = headers.length > 1 ? headers.length - 2 : 0;
196
- // Shrink the column
197
- let th = headers[columnToReduce];
198
- this.colWidths[th.cellIndex] = th.offsetWidth - colWidthDifference;
199
- this.renderer.setStyle(this.cols[th.cellIndex], 'width', this.colWidths[th.cellIndex] + 'px');
200
- // Reduce our totalColWidths to reflect
201
- totalColWidths = totalColWidths - colWidthDifference;
202
- }
203
- this.renderer.setStyle(this.tableEl, 'width', Math.max(this.currentTableWidth, totalColWidths) + 'px');
204
- this.renderer.setStyle(this.tableEl, 'minWidth', '100%');
205
- }
206
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ResizableTableDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.CacheService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive }); }
207
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: ResizableTableDirective, selector: "[ecResizableTable]", inputs: { isResizable: ["ecResizableTable", "isResizable"], containerEl: "containerEl", sortableTable: "sortableTable", resizableColumns: "resizableColumns" }, usesInheritance: true, ngImport: i0 }); }
208
- }
209
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ResizableTableDirective, decorators: [{
210
- type: Directive,
211
- args: [{
212
- selector: '[ecResizableTable]'
213
- }]
214
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.CacheService }, { type: Document, decorators: [{
215
- type: Inject,
216
- args: [DOCUMENT]
217
- }] }], propDecorators: { isResizable: [{
218
- type: Input,
219
- args: ['ecResizableTable']
220
- }], containerEl: [{
221
- type: Input
222
- }], sortableTable: [{
223
- type: Input
224
- }], resizableColumns: [{
225
- type: Input
226
- }] } });
227
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXphYmxlLXRhYmxlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9kaXNwbGF5L3RhYmxlL3Jlc2l6YWJsZS10YWJsZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBaUMsTUFBTSxFQUFFLEtBQUssRUFBd0IsTUFBTSxlQUFlLENBQUM7QUFDOUcsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUU1RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBRzNDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFJSCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsYUFBYTtJQStDeEQsWUFDVSxFQUFjLEVBQ3RCLFFBQW1CLEVBQ25CLFlBQTBCLEVBQ1IsUUFBa0I7UUFFcEMsS0FBSyxDQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFMaEMsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQTdDZixrQkFBYSxHQUFZLEtBQUssQ0FBQztRQVd4Qzs7O1dBR0c7UUFDSyxTQUFJLEdBQTBCLEVBQUUsQ0FBQztRQUV6Qzs7O1dBR0c7UUFDSyxjQUFTLEdBQWEsRUFBRSxDQUFDO1FBRWpDOztXQUVHO1FBQ0ssc0JBQWlCLEdBQVcsQ0FBQyxDQUFDO1FBRXRDOzs7O1dBSUc7UUFDSyxrQkFBYSxHQUFXLENBQUMsQ0FBQztRQUVsQzs7V0FFRztRQUNLLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBSXpCLGNBQVMsR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQVNqRCxDQUFDO0lBRU0sUUFBUTtR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QUFTLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1lBRTlGLHVDQUF1QztZQUN2QyxjQUFjLEdBQUcsY0FBYyxHQUFHLGtCQUFrQixDQUFDO1FBQ3ZELENBQUM7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxjQUFjLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUN2RyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMzRCxDQUFDOytHQWhPVSx1QkFBdUIsaUdBbUR4QixRQUFRO21HQW5EUCx1QkFBdUI7OzRGQUF2Qix1QkFBdUI7a0JBSG5DLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtpQkFDL0I7OzBCQW9ESSxNQUFNOzJCQUFDLFFBQVE7eUNBbERTLFdBQVc7c0JBQXJDLEtBQUs7dUJBQUMsa0JBQWtCO2dCQUNoQixXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBTUcsZ0JBQWdCO3NCQUF4QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBPbkluaXQsIFJlbmRlcmVyMiwgSW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBRdWVyeUxpc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBSZXNpemFibGVCYXNlIH0gZnJvbSAnLi4vcmVzaXphYmxlL3Jlc2l6YWJsZS1iYXNlJztcclxuaW1wb3J0IHsgQ2FjaGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9jYWNoZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFJlc2l6YWJsZUNvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4vcmVzaXphYmxlLWNvbHVtbi5jb21wb25lbnQnO1xyXG5cclxuLyoqXHJcbiAqIEFkZCB0aGUgYWJpbGl0eSB0byByZXNpemUgY29sdW1ucyB0byBhIHN0YW5kYXJkIEhUTUwgdGFibGUuXHJcbiAqIFNwZWNpZnkgYSBjb2x1bW4gYXMgcmVzaXphYmxlIGJ5IGFkZGluZyB0aGUgLmlzLXJlc2l6YWJsZSBjbGFzcyB0byBhIDx0aD4uXHJcbiAqIFxyXG4gKiBVc2FnZTpcclxuICBgYGBodG1sXHJcbiAgPHRhYmxlIFtlY1Jlc2l6YWJsZVRhYmxlXT5cclxuICAgIDxjb2xncm91cD48Y29sPjxjb2w+PGNvbD48L2NvbGdyb3VwPlxyXG4gICAgPHRoZWFkPlxyXG4gICAgICA8dHI+XHJcbiAgICAgICAgPHRoIGNsYXNzPVwiaXMtcmVzaXphYmxlXCI+UmVzaXphYmxlPC90aD5cclxuICAgICAgICA8dGggY2xhc3M9XCJpcy1yZXNpemFibGVcIj5SZXNpemFibGU8L3RoPlxyXG4gICAgICAgIDx0aD5TdGF0aWM8L3RoPlxyXG4gICAgICA8L3RyPlxyXG4gICAgPC90aGVhZD5cclxuICAgIC4uLlxyXG4gIDwvdGFibGU+XHJcblxyXG4gIGBgYFxyXG4gICogTm90ZTogdGhpcyBkaXJlY3RpdmUgaXMgbWVhbnQgdG8gYmUgdXNlZCBpbnRlcm5hbGx5IHdpdGggdGhlIFRhYmxlQ29tcG9uZW50XHJcbiAgKiBhbmQgaXMgbm90IGV4cG9zZWQgaW4gdGhlIHB1YmxpYy1hcGkgb2YgdGhlIGxpYnJhcnlcclxuICovXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2VjUmVzaXphYmxlVGFibGVdJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVzaXphYmxlVGFibGVEaXJlY3RpdmUgZXh0ZW5kcyBSZXNpemFibGVCYXNlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgnZWNSZXNpemFibGVUYWJsZScpIGlzUmVzaXphYmxlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIGNvbnRhaW5lckVsITogRWxlbWVudFJlZjtcclxuICBASW5wdXQoKSBzb3J0YWJsZVRhYmxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKiBcclxuICAgKiBVc2VkIHRvIG5vdGlmeSB0aGUgcmVzaXphYmxlIGRpcmVjdGl2ZSB0aGF0IHRoZSBjb2x1bW5zIGFyZSByZWFkeSB0byBiZSBjb25maWd1cmVkLlxyXG4gICAqIE11c3QgYmUgdXNlZCBpZiB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgY2FuIGNoYW5nZSBvdmVyIHRoZSB0YWJsZSdzIGxpZmVjeWNsZS5cclxuICAgKi9cclxuICBASW5wdXQoKSByZXNpemFibGVDb2x1bW5zITogUXVlcnlMaXN0PFJlc2l6YWJsZUNvbHVtbkNvbXBvbmVudD47XHJcblxyXG4gIC8qKiBUaGUgaG9zdCA8dGFibGU+IGVsZW1lbnQuIFdpbGwgdGhyb3cgaWYgaG9zdCBlbGVtZW50IGlzIG5vdCBhIDx0YWJsZT4gKi9cclxuICBwcml2YXRlIHRhYmxlRWwhOiBIVE1MVGFibGVFbGVtZW50O1xyXG5cclxuICAvKiogXHJcbiAgICogU3RvcmVkIHJlZmVyZW5jZSB0byB0aGUgPGNvbD4gZWxlbWVudCBjaGlsZHJlbi4gV2lsbCB0aHJvdyBpZiBub25lIGFyZSBmb3VuZC4gV2lsbFxyXG4gICAqIHdhcm4gaWYgdGhlIG51bWJlciBvZiA8Y29sPiBlbGVtZW50cyBkbyBub3QgbWF0Y2ggdGhlIG51bWJlciBvZiA8dGg+IGVsZW1lbnRzXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjb2xzOiBIVE1MVGFibGVDb2xFbGVtZW50W10gPSBbXTtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIHdpZHRocyBvZiBlYWNoIHRhYmxlIGNvbHVtbi4gVGhlc2UgYXJlIHVwZGF0ZWQgYXMgY29sdW1ucyBhcmUgcmVzaXplZCBhbmRcclxuICAgKiBhcmUgdXNlZCB0byBjYWxjdWxhdGUgdGhlIG5ldyB0YWJsZSB3aWR0aC5cclxuICAgKi9cclxuICBwcml2YXRlIGNvbFdpZHRoczogbnVtYmVyW10gPSBbXTtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIGN1cnJlbnQgdGFibGUgd2lkdGhcclxuICAgKi9cclxuICBwcml2YXRlIGN1cnJlbnRUYWJsZVdpZHRoOiBudW1iZXIgPSAwO1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgd2lkdGggb2YgdGhlIHRhYmxlIHdoZW4gdGhlIGNvbXBvbmVudCB3YXMgaW5pdGlhbGl6ZWQuIFRoZSB0YWJsZSBjYW5ub3RcclxuICAgKiBiZSBzaHJ1bmsgYmVsb3cgdGhpcyB3aWR0aC4gSWYgYSBjb2x1bW4gcmVzaXplIHdvdWxkIGNhdXNlIHRoZSBjdXJyZW50IHRhYmxlXHJcbiAgICogd2lkdGggdG8gYmUgYmVsb3cgdGhpcyB2YWx1ZSwgdGhlIGxhc3QgY29sdW1uIGlzIHdpZGVuZWQgaW5zdGVhZC5cclxuICAgKi9cclxuICBwcml2YXRlIG1pblRhYmxlV2lkdGg6IG51bWJlciA9IDA7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSB3aWR0aCB0aGUgY29sdW1uIGNhbiBub3QgYmUgcmVzaXplZCBiZWxvdy5cclxuICAgKi9cclxuICBwcml2YXRlIG1pbkNvbFdpZHRoOiBudW1iZXIgPSAzMjtcclxuXHJcbiAgcHJpdmF0ZSBsYXN0Q29sSW5kZXghOiBudW1iZXI7XHJcblxyXG4gIHByaXZhdGUgZGVzdHJveWVkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmLFxyXG4gICAgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIGNhY2hlU2VydmljZTogQ2FjaGVTZXJ2aWNlLFxyXG4gICAgQEluamVjdChET0NVTUVOVCkgZG9jdW1lbnQ6IERvY3VtZW50XHJcbiAgKSB7XHJcbiAgICBzdXBlcihyZW5kZXJlciwgY2FjaGVTZXJ2aWNlLCBkb2N1bWVudCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmluaXRSZXNpemFibGVDb2x1bW5zKCk7XHJcblxyXG4gICAgdGhpcy5yZXNpemFibGVDb2x1bW5zLmNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5pbml0UmVzaXphYmxlQ29sdW1ucygpKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5kZXN0cm95ZWQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95ZWQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemVcclxuICAgKiAqIENoZWNrIHRoYXQgdGhlIGhvc3QgZWxlbWVudCBpcyBhIHRhYmxlIGFuZCB0aGF0IDxjb2w+IGVsZW1lbnRzIGFyZSBwcmVzZW50XHJcbiAgICogKiBTYXZlIHRoZSBpbml0aWFsIHdpZHRoIG9mIHRhYmxlIGFzIHRoZSBtaW5pbXVtIHRhYmxlIHdpZHRoXHJcbiAgICogKiBTdG9yZSBhIHJlZmVyZW5jZSB0byBhbGwgPGNvbD4gZWxlbWVudHNcclxuICAgKiAqIEFkZCBhIGhhbmRsZSB0byBlYWNoIHJlc2l6YWJsZSBjb2x1bW4gYW5kIHNldCB1cCBtb3VzZWRvd24gbGlzdGVuZXJzIHRvIHN0YXJ0IGRyYWdnaW5nXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBpbml0UmVzaXphYmxlQ29sdW1ucygpIHtcclxuICAgIGlmICh0aGlzLmlzUmVzaXphYmxlICE9PSBmYWxzZSkge1xyXG5cclxuICAgICAgdGhpcy50YWJsZUVsID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50O1xyXG4gICAgICBpZiAodGhpcy50YWJsZUVsLnRhZ05hbWUgIT09ICdUQUJMRScpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSAnZWNSZXNpemFibGVUYWJsZScgZGlyZWN0aXZlIGNhbiBvbmx5IGJlIHBsYWNlZCBvbiBhIDx0YWJsZT4gZWxlbWVudC5gKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuc29ydGFibGVUYWJsZSkge1xyXG4gICAgICAgIHRoaXMubWluQ29sV2lkdGggPSA0ODtcclxuICAgICAgfVxyXG4gIFxyXG4gICAgICBjb25zdCBoZWFkZXJzID0gdGhpcy50YWJsZUVsLnF1ZXJ5U2VsZWN0b3JBbGwoJ3RoJyk7XHJcbiAgICAgIGNvbnN0IGNvbHMgPSB0aGlzLnRhYmxlRWwucXVlcnlTZWxlY3RvckFsbCgnY29sJyk7XHJcbiAgICAgIHRoaXMuY29scyA9IFtdO1xyXG4gICAgICB0aGlzLmNvbFdpZHRocyA9IFtdO1xyXG4gIFxyXG4gICAgICBpZiAoY29scy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICBjb25zdCBmcmFnbWVudCA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO1xyXG4gICAgICAgIGNvbnN0IGNvbGdyb3VwOiBIVE1MRWxlbWVudCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnY29sZ3JvdXAnKTtcclxuICAgICAgICBoZWFkZXJzLmZvckVhY2goKCkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgY29sID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdjb2wnKTtcclxuICAgICAgICAgIHRoaXMuY29scy5wdXNoKGNvbCk7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKGZyYWdtZW50LCBjb2wpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQoY29sZ3JvdXAsIGZyYWdtZW50KTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLmluc2VydEJlZm9yZSh0aGlzLnRhYmxlRWwsIGNvbGdyb3VwLCB0aGlzLnRhYmxlRWwuZmlyc3RFbGVtZW50Q2hpbGQpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbHMuZm9yRWFjaChjb2xFbCA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNvbHMucHVzaChjb2xFbCk7XHJcbiAgICAgICAgfSk7XHJcbiAgXHJcbiAgICAgICAgaWYgKGhlYWRlcnMubGVuZ3RoICE9PSBjb2xzLmxlbmd0aCkge1xyXG4gICAgICAgICAgY29uc29sZS53YXJuKGBUaGVyZSBhcmUgJHtoZWFkZXJzLmxlbmd0aH0gPHRoPiBlbGVtZW50cyBhbmQgJHt0aGlzLmNvbHMubGVuZ3RofSA8Y29sPiBlbGVtZW50cyBpbiB0aGlzIHRoaXMgdGFibGUuIFRoZSBudW1iZXIgb2YgY29sdW1ucyBhbmQgdGFibGUgaGVhZGVycyBtdXN0IG1hdGNoLiA8dGg+IGVsZW1lbnRzIHdpdGggYSAnY29sc3BhbicgYXR0cmlidXRlIGFyZSBjdXJyZW50bHkgbm90IHN1cHBvcnRlZC5gKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGxhc3RSZXNpemFibGVJbmRleCA9IEFycmF5LmZyb20oaGVhZGVycykucmV2ZXJzZSgpLmZpbmRJbmRleChlbCA9PiBlbC5jbGFzc0xpc3QuY29udGFpbnMoJ2lzLXJlc2l6YWJsZScpKSArIDE7XHJcbiAgICAgIHRoaXMubGFzdENvbEluZGV4ID0gdGhpcy5jb2xzLmxlbmd0aCAtIGxhc3RSZXNpemFibGVJbmRleDtcclxuICBcclxuICAgICAgaGVhZGVycy5mb3JFYWNoKHRoID0+IHtcclxuICAgICAgICBpZiAodGguY2xhc3NMaXN0LmNvbnRhaW5zKCdpcy1yZXNpemFibGUnKSkge1xyXG4gICAgICAgICAgY29uc3QgaGFuZGxlID0gdGgucXVlcnlTZWxlY3RvcignLmhhbmRsZScpO1xyXG5cclxuICAgICAgICAgIHRoaXMucmVuZGVyZXIubGlzdGVuKGhhbmRsZSwgJ21vdXNlZG93bicsIChldmVudDogTW91c2VFdmVudCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRFbCA9IHRoO1xyXG4gICAgICAgICAgICB0aGlzLnN0YXJ0RHJhZyhldmVudCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIFxyXG4gICAgICAvLyBXZSBuZWVkIHRvIHdhaXQgYSB0aWNrIGZvciBhIHZpZXcgdGhhdCB3YXMgcHJldmlvdXNseSBsb2FkZWQgdG8gYmUgcmVtb3ZlZFxyXG4gICAgICAvLyBmcm9tIHRoZSBET00gYW5kIGFsbG93IHRoaXMgZGlyZWN0aXZlJ3MgcGFyZW50IHZpZXcgdG8gZnVsbHkgZXhwYW5kIGluIHRoZSBcclxuICAgICAgLy8gdmlld3BvcnQgYmVmb3JlIGdldHRpbmcgd2lkdGhzLlxyXG4gICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXRJbml0aWFsV2lkdGhzKGhlYWRlcnMpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZSB0aGUgY29sdW1uIHdpdGggdGhlIGNhbGN1bGF0ZWQgd2lkdGggd2hpbGUgcmVzaXppbmcuXHJcbiAgICogSWYgdGhlIGNvbHVtbiBpcyBuYXJyb3dlZCBzbyB0aGF0IHRoZSB0YWJsZSB3b3VsZCBiZSBuYXJyb3dlciB0aGFuIHRoZSBtaW4td2lkdGgsXHJcbiAgICogZXhwYW5kIHRoZSBsYXN0IGNvbHVtbi4gSWYgdGhlIHRhYmxlIGlzIHRoZW4gd2lkZW5lZCwgcmV0dXJuIHRoZSBsYXN0IGNvbHVtblxyXG4gICAqIHRvIGl0cyBpbml0aWFsIHdpZHRoLlxyXG4gICAqIEBwYXJhbSB3aWR0aCBcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgc2V0V2lkdGgod2lkdGg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY3VycmVudEVsKSB7XHJcbiAgICAgIGNvbnN0IGNlbGxJbmRleDogbnVtYmVyID0gKDxIVE1MVGFibGVIZWFkZXJDZWxsRWxlbWVudD50aGlzLmN1cnJlbnRFbCkuY2VsbEluZGV4O1xyXG4gICAgICB3aWR0aCA9IE1hdGgubWF4KHdpZHRoLCB0aGlzLm1pbkNvbFdpZHRoKTtcclxuICAgICAgdGhpcy5jb2xXaWR0aHNbY2VsbEluZGV4XSA9IHdpZHRoO1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuY29sc1tjZWxsSW5kZXhdLCAnd2lkdGgnLCB3aWR0aCArICdweCcpO1xyXG5cclxuICAgICAgbGV0IHRvdGFsQ29sV2lkdGhzID0gMDtcclxuICAgICAgdGhpcy5jb2xXaWR0aHMuZm9yRWFjaCh3ID0+IHtcclxuICAgICAgICB0b3RhbENvbFdpZHRocyArPSB3O1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoID0gKDxIVE1MRGl2RWxlbWVudD50aGlzLmNvbnRhaW5lckVsLm5hdGl2ZUVsZW1lbnQpLmNsaWVudFdpZHRoO1xyXG4gICAgICBpZiAodGhpcy5taW5UYWJsZVdpZHRoICE9PSBjb250YWluZXJXaWR0aCkge1xyXG4gICAgICAgIHRoaXMubWluVGFibGVXaWR0aCA9IGNvbnRhaW5lcldpZHRoO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBkaWZmID0gdG90YWxDb2xXaWR0aHMgLSB0aGlzLm1pblRhYmxlV2lkdGg7ICAgICAgXHJcbiAgICAgIGlmIChkaWZmIDwgMCkge1xyXG4gICAgICAgIGNvbnN0IGNvbEluZGV4ID0gY2VsbEluZGV4ID09PSB0aGlzLmxhc3RDb2xJbmRleCA/IHRoaXMubGFzdENvbEluZGV4IC0gMSA6IHRoaXMubGFzdENvbEluZGV4O1xyXG4gICAgICAgIGNvbnN0IGNvbFdpZHRoID0gTWF0aC5tYXgodGhpcy5jb2xXaWR0aHNbY29sSW5kZXhdICsgTWF0aC5hYnMoZGlmZiksIHRoaXMubWluQ29sV2lkdGgpO1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5jb2xzW2NvbEluZGV4XSwgJ3dpZHRoJywgY29sV2lkdGggKyAncHgnKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudGFibGVFbCwgJ3dpZHRoJywgdGhpcy5taW5UYWJsZVdpZHRoICsgJ3B4Jyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRhYmxlRWwsICd3aWR0aCcsIHRvdGFsQ29sV2lkdGhzICsgJ3B4Jyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBzdG9wRHJhZyhldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgc3VwZXIuc3RvcERyYWcoZXZlbnQpO1xyXG4gICAgXHJcbiAgICBpZiAodGhpcy5jdXJyZW50RWwpIHtcclxuICAgICAgY29uc3QgY2VsbEluZGV4ID0gKDxIVE1MVGFibGVIZWFkZXJDZWxsRWxlbWVudD50aGlzLmN1cnJlbnRFbCkuY2VsbEluZGV4O1xyXG4gICAgICBjb25zdCBjdXJyZW50Q29sID0gdGhpcy5yZXNpemFibGVDb2x1bW5zLmZpbmQoY29sID0+ICg8SFRNTFRhYmxlSGVhZGVyQ2VsbEVsZW1lbnQ+Y29sLmVsLm5hdGl2ZUVsZW1lbnQpLmNlbGxJbmRleCA9PT0gY2VsbEluZGV4KTtcclxuICAgICAgaWYgKGN1cnJlbnRDb2wpIHtcclxuICAgICAgICBjdXJyZW50Q29sLmVtaXRXaWR0aChNYXRoLnJvdW5kKHRoaXMuY29sV2lkdGhzW2NlbGxJbmRleF0pKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2FwdHVyZSB0aGUgaW5pdGlhbCB3aWR0aCBvZiB0aGUgdGFibGUgYW5kIHRoZSB0YWJsZSBoZWFkZXJzLlxyXG4gICAqIEBwYXJhbSBoZWFkZXJzIFxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2V0SW5pdGlhbFdpZHRocyhoZWFkZXJzOiBOb2RlTGlzdE9mPEhUTUxUYWJsZUhlYWRlckNlbGxFbGVtZW50Pik6IHZvaWQge1xyXG4gICAgdGhpcy5jdXJyZW50VGFibGVXaWR0aCA9IHRoaXMudGFibGVFbC5vZmZzZXRXaWR0aDtcclxuICAgIHRoaXMubWluVGFibGVXaWR0aCA9IHRoaXMuY29udGFpbmVyRWwubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aDtcclxuXHJcbiAgICBoZWFkZXJzLmZvckVhY2godGggPT4ge1xyXG4gICAgICB0aGlzLmNvbFdpZHRoc1t0aC5jZWxsSW5kZXhdID0gdGgub2Zmc2V0V2lkdGg7XHJcbiAgICAgIGNvbnN0IHdpZHRoID0gdGguc3R5bGUud2lkdGg7XHJcbiAgICAgIGlmICh3aWR0aCkge1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5jb2xzW3RoLmNlbGxJbmRleF0sICd3aWR0aCcsIHdpZHRoKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZVN0eWxlKHRoLCAnd2lkdGgnKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgbGV0IHRvdGFsQ29sV2lkdGhzID0gMDtcclxuICAgIHRoaXMuY29sV2lkdGhzLmZvckVhY2godyA9PiB7XHJcbiAgICAgIHRvdGFsQ29sV2lkdGhzICs9IHc7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBDaGVjayB0byBzZWUgaWYgb3VyIHRvdGFsIGNvbHVtbiB3aWR0aHMgaXMgZ3JlYXRlciB0aGFuIG91ciB0YWJsZSB3aWR0aFxyXG4gICAgbGV0IGNvbFdpZHRoRGlmZmVyZW5jZSA9IHRvdGFsQ29sV2lkdGhzIC0gdGhpcy5jdXJyZW50VGFibGVXaWR0aDtcclxuICAgXHJcbiAgICAvLyBJZiB0aGUgdG90YWwgY29sdW1uIHdpZHRocyBpcyBncmVhdGVyIHRoYW4gemVybyB0aGVuIGl0cyBsYXJnZXIgdGhhbiBvdXIgdGFibGUgY29udGFpbmVyXHJcbiAgICAvLyBUbyBwcmV2ZW50IGEgaG9yaXpvbnRhbCBzY3JvbGwgd2Ugd2lsbCBidW1wIGEgY29sdW1ucyB3aWR0aCBkb3duIHRvIG1hdGNoIHRoZSB0YWJsZSBzaXplXHJcbiAgICBpZiAoY29sV2lkdGhEaWZmZXJlbmNlID4gMCkge1xyXG4gICAgICAvLyBJZGVhbGx5IHdlIHdpbGwgY2hvb3NlIHRoZSBzZWNvbmQgdG8gdGhlIGxhc3QgY29sdW1uLCBidXQgaWYgdGhlcmUgaXMgb25seSBvbmUgdGhhdCdsbCBkb1xyXG4gICAgICBsZXQgY29sdW1uVG9SZWR1Y2UgPSBoZWFkZXJzLmxlbmd0aCA+IDEgPyBoZWFkZXJzLmxlbmd0aCAtIDIgOiAwO1xyXG5cclxuICAgICAgLy8gU2hyaW5rIHRoZSBjb2x1bW5cclxuICAgICAgbGV0IHRoID0gaGVhZGVyc1tjb2x1bW5Ub1JlZHVjZV07XHJcbiAgICAgIHRoaXMuY29sV2lkdGhzW3RoLmNlbGxJbmRleF0gPSB0aC5vZmZzZXRXaWR0aCAtIGNvbFdpZHRoRGlmZmVyZW5jZTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmNvbHNbdGguY2VsbEluZGV4XSwgJ3dpZHRoJywgdGhpcy5jb2xXaWR0aHNbdGguY2VsbEluZGV4XSArICdweCcpO1xyXG4gICAgXHJcbiAgICAgIC8vIFJlZHVjZSBvdXIgdG90YWxDb2xXaWR0aHMgdG8gcmVmbGVjdFxyXG4gICAgICB0b3RhbENvbFdpZHRocyA9IHRvdGFsQ29sV2lkdGhzIC0gY29sV2lkdGhEaWZmZXJlbmNlO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy50YWJsZUVsLCAnd2lkdGgnLCBNYXRoLm1heCh0aGlzLmN1cnJlbnRUYWJsZVdpZHRoLCB0b3RhbENvbFdpZHRocykgKyAncHgnKTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy50YWJsZUVsLCAnbWluV2lkdGgnLCAnMTAwJScpO1xyXG4gIH1cclxufVxyXG4iXX0=