@energycap/components 0.41.1-ECAP-26841-date-input-features.20250108-1149 → 0.42.1

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 (357) hide show
  1. package/{esm2020 → esm2022}/energycap-components.mjs +4 -4
  2. package/{esm2020 → esm2022}/lib/components.module.mjs +423 -423
  3. package/esm2022/lib/controls/banner/banner.component.mjs +109 -0
  4. package/esm2022/lib/controls/button/button.component.mjs +106 -0
  5. package/esm2022/lib/controls/button/copy-button-base.directive.mjs +67 -0
  6. package/{esm2020 → esm2022}/lib/controls/button/copy-button.directive.mjs +28 -28
  7. package/esm2022/lib/controls/button/copy-table-button.directive.mjs +43 -0
  8. package/esm2022/lib/controls/calendar/calendar-item.component.mjs +91 -0
  9. package/esm2022/lib/controls/calendar/calendar.component.mjs +248 -0
  10. package/{esm2020 → esm2022}/lib/controls/calendar/calendar.types.mjs +1 -1
  11. package/esm2022/lib/controls/checkbox/checkbox.component.mjs +140 -0
  12. package/{esm2020 → esm2022}/lib/controls/collapsible-toggle/collapsible-toggle.component.mjs +38 -38
  13. package/esm2022/lib/controls/combobox/combobox.component.mjs +879 -0
  14. package/esm2022/lib/controls/date-input/date-input-selection-strategies/date-input-selection-strategy-base.mjs +57 -0
  15. package/esm2022/lib/controls/date-input/date-input-selection-strategies/day-selection-strategy.mjs +62 -0
  16. package/esm2022/lib/controls/date-input/date-input-selection-strategies/last-28-days-selection-strategy.mjs +100 -0
  17. package/esm2022/lib/controls/date-input/date-input-selection-strategies/last-7-days-selection-strategy.mjs +101 -0
  18. package/esm2022/lib/controls/date-input/date-input-selection-strategies/month-selection-strategy.mjs +76 -0
  19. package/esm2022/lib/controls/date-input/date-input-selection-strategies/quarter-selection-strategy.mjs +79 -0
  20. package/esm2022/lib/controls/date-input/date-input-selection-strategies/range-selection-strategy.mjs +210 -0
  21. package/esm2022/lib/controls/date-input/date-input-selection-strategies/year-selection-strategy.mjs +81 -0
  22. package/esm2022/lib/controls/date-input/date-input.component.mjs +465 -0
  23. package/{esm2020 → esm2022}/lib/controls/date-input/date-input.types.mjs +44 -44
  24. package/esm2022/lib/controls/dropdown/dropdown.component.mjs +243 -0
  25. package/esm2022/lib/controls/file-upload/file-upload.component.mjs +261 -0
  26. package/esm2022/lib/controls/form-control/form-control.component.mjs +98 -0
  27. package/esm2022/lib/controls/form-control-base.mjs +151 -0
  28. package/esm2022/lib/controls/form-control-label/form-control-label.component.mjs +136 -0
  29. package/esm2022/lib/controls/form-group/form-group.component.mjs +261 -0
  30. package/{esm2020 → esm2022}/lib/controls/help-popover/help-popover.component.mjs +31 -31
  31. package/esm2022/lib/controls/item-picker/item-picker.component.mjs +329 -0
  32. package/{esm2020 → esm2022}/lib/controls/link-button/link-button.component.mjs +11 -11
  33. package/esm2022/lib/controls/menu/menu.component.mjs +485 -0
  34. package/{esm2020 → esm2022}/lib/controls/navigation/link-item.mjs +1 -1
  35. package/esm2022/lib/controls/navigation/nav-group.mjs +39 -0
  36. package/esm2022/lib/controls/navigation/nav-item-active.directive.mjs +92 -0
  37. package/{esm2020 → esm2022}/lib/controls/navigation/nav-item.mjs +1 -1
  38. package/esm2022/lib/controls/numericbox/numericbox.component.mjs +372 -0
  39. package/esm2022/lib/controls/popover/popover.component.mjs +117 -0
  40. package/{esm2020 → esm2022}/lib/controls/radio-button/radio-button-option.mjs +2 -2
  41. package/esm2022/lib/controls/radio-button/radio-button.component.mjs +82 -0
  42. package/esm2022/lib/controls/select/select.component.mjs +88 -0
  43. package/esm2022/lib/controls/tabs/tabs.component.mjs +47 -0
  44. package/esm2022/lib/controls/textbox/textbox.component.mjs +155 -0
  45. package/esm2022/lib/core/cache.service.mjs +105 -0
  46. package/esm2022/lib/core/custom-validators.mjs +29 -0
  47. package/esm2022/lib/core/date-time-helper.mjs +228 -0
  48. package/esm2022/lib/core/error.service.mjs +61 -0
  49. package/esm2022/lib/core/router-helper.service.mjs +111 -0
  50. package/esm2022/lib/core/scroll.service.mjs +89 -0
  51. package/{esm2020 → esm2022}/lib/core/telemetry-tracker.service.mjs +16 -16
  52. package/{esm2020 → esm2022}/lib/core/telemetry.service.mjs +38 -38
  53. package/esm2022/lib/core/validation-message.service.mjs +185 -0
  54. package/{esm2020 → esm2022}/lib/core/validation-patterns.mjs +30 -30
  55. package/esm2022/lib/core/window.service.mjs +186 -0
  56. package/esm2022/lib/display/app-bar/app-bar.component.mjs +46 -0
  57. package/esm2022/lib/display/avatar/avatar.component.mjs +67 -0
  58. package/esm2022/lib/display/avatar/avatar.service.mjs +64 -0
  59. package/esm2022/lib/display/confirm/confirm.component.mjs +168 -0
  60. package/{esm2020 → esm2022}/lib/display/dialog/dialog-content.mjs +1 -1
  61. package/esm2022/lib/display/dialog/dialog-group/dialog-group.component.mjs +63 -0
  62. package/{esm2020 → esm2022}/lib/display/dialog/dialog-types.mjs +76 -76
  63. package/esm2022/lib/display/dialog/dialog.component.mjs +281 -0
  64. package/{esm2020 → esm2022}/lib/display/dialog/dialog.service.mjs +71 -71
  65. package/{esm2020 → esm2022}/lib/display/help/help-types.mjs +1 -1
  66. package/esm2022/lib/display/hierarchy/hierarchy-base.mjs +111 -0
  67. package/{esm2020 → esm2022}/lib/display/hierarchy/hierarchy-mocks.spec.mjs +53 -53
  68. package/esm2022/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.mjs +61 -0
  69. package/esm2022/lib/display/item-display/item-display.component.mjs +81 -0
  70. package/esm2022/lib/display/json-display/json-display.component.mjs +47 -0
  71. package/esm2022/lib/display/resizable/resizable-base.mjs +120 -0
  72. package/{esm2020 → esm2022}/lib/display/resizable/resizable.component.mjs +52 -52
  73. package/{esm2020 → esm2022}/lib/display/spinner/spinner.component.mjs +12 -12
  74. package/esm2022/lib/display/splash/splash.component.mjs +42 -0
  75. package/{esm2020 → esm2022}/lib/display/splash/splash.service.mjs +35 -35
  76. package/{esm2020 → esm2022}/lib/display/table/resizable-column.component.mjs +20 -20
  77. package/esm2022/lib/display/table/resizable-table.directive.mjs +227 -0
  78. package/esm2022/lib/display/table/searchable-table.component.mjs +342 -0
  79. package/{esm2020 → esm2022}/lib/display/table/table-detail-row.component.mjs +19 -19
  80. package/esm2022/lib/display/table/table-locked-column.component.mjs +58 -0
  81. package/{esm2020 → esm2022}/lib/display/table/table-master-header-row.component.mjs +14 -14
  82. package/esm2022/lib/display/table/table-master-row.component.mjs +163 -0
  83. package/esm2022/lib/display/table/table-pagination.component.mjs +155 -0
  84. package/esm2022/lib/display/table/table-selectable-row.component.mjs +235 -0
  85. package/esm2022/lib/display/table/table.component.mjs +249 -0
  86. package/esm2022/lib/display/tags/tag.mjs +18 -0
  87. package/esm2022/lib/display/tags/tags.component.mjs +77 -0
  88. package/esm2022/lib/display/toast/toast/toast.component.mjs +77 -0
  89. package/{esm2020 → esm2022}/lib/display/toast/toast-types.mjs +7 -7
  90. package/{esm2020 → esm2022}/lib/display/toast/toast.service.mjs +35 -35
  91. package/esm2022/lib/display/toast/toaster/toaster.component.mjs +114 -0
  92. package/{esm2020 → esm2022}/lib/display/tooltip/tooltip.component.mjs +28 -28
  93. package/{esm2020 → esm2022}/lib/display/tooltip/tooltip.service.mjs +78 -78
  94. package/esm2022/lib/display/tooltip-directive/tooltip.directive.mjs +173 -0
  95. package/{esm2020 → esm2022}/lib/display/tour/tour-types.mjs +33 -33
  96. package/esm2022/lib/display/tour/tour.component.mjs +398 -0
  97. package/esm2022/lib/display/tour/tour.service.mjs +75 -0
  98. package/esm2022/lib/display/tree/tree.component.mjs +135 -0
  99. package/esm2022/lib/display/view-overlay/view-overlay.component.mjs +58 -0
  100. package/esm2022/lib/shared/directives/click-area-for/click-area-for.directive.mjs +32 -0
  101. package/esm2022/lib/shared/directives/if-viewport-width/if-viewport-width.directive.mjs +111 -0
  102. package/{esm2020 → esm2022}/lib/shared/directives/keyboard-nav-container/keyboard-nav-container.directive.mjs +100 -100
  103. package/esm2022/lib/shared/directives/popup/popup-container.directive.mjs +166 -0
  104. package/esm2022/lib/shared/display/pipes/date-display.pipe.mjs +50 -0
  105. package/esm2022/lib/shared/display/pipes/highlight-text.pipe.mjs +30 -0
  106. package/esm2022/lib/shared/display/pipes/relative-date.pipe.mjs +62 -0
  107. package/esm2022/lib/shared/display/pipes/row-count.pipe.mjs +48 -0
  108. package/esm2022/lib/shared/display/pipes/time-display.pipe.mjs +41 -0
  109. package/esm2022/lib/shared/display.mjs +6 -0
  110. package/esm2022/lib/shared/form-group.helper.mjs +67 -0
  111. package/esm2022/lib/shared/json-helper.mjs +19 -0
  112. package/esm2022/lib/shared/lodash-helper.mjs +52 -0
  113. package/esm2022/lib/shared/page/page-base/page-base.component.mjs +387 -0
  114. package/{esm2020 → esm2022}/lib/shared/page/page-statuses.mjs +22 -22
  115. package/{esm2020 → esm2022}/lib/shared/page/page-title/page-title.component.mjs +23 -23
  116. package/esm2022/lib/shared/page/page-view/page-view.component.mjs +147 -0
  117. package/{esm2020 → esm2022}/lib/shared/testing/copy-button-base-test-injector-factory.spec.mjs +16 -16
  118. package/{esm2020 → esm2022}/lib/shared/testing/hierarchy-base-test-injector-factory.spec.mjs +16 -16
  119. package/{esm2020 → esm2022}/lib/shared/testing/page-base-component-test-helper.spec.mjs +37 -37
  120. package/esm2022/lib/shared/testing/page-base-component-test-injector-factory.spec.mjs +98 -0
  121. package/{esm2020 → esm2022}/lib/shared/testing/public-mocks.spec.mjs +148 -148
  122. package/{esm2020 → esm2022}/lib/shared/testing/spy-factory.spec.mjs +39 -39
  123. package/{esm2020 → esm2022}/lib/shared/testing/translation-mocks.spec.mjs +56 -56
  124. package/{esm2020 → esm2022}/lib/shared/user-preference.service.mjs +17 -17
  125. package/esm2022/lib/shared/wizard/wizard-base/wizard-base.component.mjs +246 -0
  126. package/{esm2020 → esm2022}/lib/shared/wizard/wizard-buttons/wizard-buttons.component.mjs +68 -68
  127. package/{esm2020 → esm2022}/lib/shared/wizard/wizard-progress/wizard-progress.component.mjs +18 -18
  128. package/{esm2020 → esm2022}/public-api.mjs +116 -116
  129. package/{fesm2020 → fesm2022}/energycap-components.mjs +12956 -12952
  130. package/fesm2022/energycap-components.mjs.map +1 -0
  131. package/index.d.ts +5 -5
  132. package/lib/components.module.d.ts +92 -92
  133. package/lib/controls/banner/banner.component.d.ts +50 -50
  134. package/lib/controls/button/button.component.d.ts +78 -78
  135. package/lib/controls/button/copy-button-base.directive.d.ts +20 -20
  136. package/lib/controls/button/copy-button.directive.d.ts +14 -14
  137. package/lib/controls/button/copy-table-button.directive.d.ts +19 -19
  138. package/lib/controls/calendar/calendar-item.component.d.ts +22 -22
  139. package/lib/controls/calendar/calendar.component.d.ts +52 -52
  140. package/lib/controls/calendar/calendar.types.d.ts +11 -11
  141. package/lib/controls/checkbox/checkbox.component.d.ts +65 -65
  142. package/lib/controls/collapsible-toggle/collapsible-toggle.component.d.ts +25 -25
  143. package/lib/controls/combobox/combobox.component.d.ts +418 -418
  144. package/lib/controls/date-input/date-input-selection-strategies/date-input-selection-strategy-base.d.ts +42 -42
  145. package/lib/controls/date-input/date-input-selection-strategies/day-selection-strategy.d.ts +21 -21
  146. package/lib/controls/date-input/date-input-selection-strategies/last-28-days-selection-strategy.d.ts +21 -21
  147. package/lib/controls/date-input/date-input-selection-strategies/last-7-days-selection-strategy.d.ts +21 -21
  148. package/lib/controls/date-input/date-input-selection-strategies/month-selection-strategy.d.ts +18 -18
  149. package/lib/controls/date-input/date-input-selection-strategies/quarter-selection-strategy.d.ts +18 -18
  150. package/lib/controls/date-input/date-input-selection-strategies/range-selection-strategy.d.ts +21 -21
  151. package/lib/controls/date-input/date-input-selection-strategies/year-selection-strategy.d.ts +20 -20
  152. package/lib/controls/date-input/date-input.component.d.ts +115 -115
  153. package/lib/controls/date-input/date-input.types.d.ts +62 -62
  154. package/lib/controls/dropdown/dropdown.component.d.ts +161 -161
  155. package/lib/controls/file-upload/file-upload.component.d.ts +124 -124
  156. package/lib/controls/form-control/form-control.component.d.ts +28 -28
  157. package/lib/controls/form-control-base.d.ts +110 -110
  158. package/lib/controls/form-control-label/form-control-label.component.d.ts +73 -73
  159. package/lib/controls/form-group/form-group.component.d.ts +105 -105
  160. package/lib/controls/help-popover/help-popover.component.d.ts +11 -11
  161. package/lib/controls/item-picker/item-picker.component.d.ts +164 -164
  162. package/lib/controls/link-button/link-button.component.d.ts +5 -5
  163. package/lib/controls/menu/menu.component.d.ts +255 -255
  164. package/lib/controls/navigation/link-item.d.ts +32 -32
  165. package/lib/controls/navigation/nav-group.d.ts +18 -18
  166. package/lib/controls/navigation/nav-item-active.directive.d.ts +42 -42
  167. package/lib/controls/navigation/nav-item.d.ts +31 -31
  168. package/lib/controls/numericbox/numericbox.component.d.ts +148 -148
  169. package/lib/controls/popover/popover.component.d.ts +51 -51
  170. package/lib/controls/radio-button/radio-button-option.d.ts +19 -19
  171. package/lib/controls/radio-button/radio-button.component.d.ts +53 -53
  172. package/lib/controls/select/select.component.d.ts +44 -44
  173. package/lib/controls/tabs/tabs.component.d.ts +30 -30
  174. package/lib/controls/textbox/textbox.component.d.ts +107 -107
  175. package/lib/core/cache.service.d.ts +33 -33
  176. package/lib/core/custom-validators.d.ts +20 -20
  177. package/lib/core/date-time-helper.d.ts +101 -101
  178. package/lib/core/error.service.d.ts +20 -20
  179. package/lib/core/router-helper.service.d.ts +48 -48
  180. package/lib/core/scroll.service.d.ts +36 -36
  181. package/lib/core/telemetry-tracker.service.d.ts +13 -13
  182. package/lib/core/telemetry.service.d.ts +31 -31
  183. package/lib/core/validation-message.service.d.ts +26 -26
  184. package/lib/core/validation-patterns.d.ts +22 -22
  185. package/lib/core/window.service.d.ts +116 -116
  186. package/lib/display/app-bar/app-bar.component.d.ts +20 -20
  187. package/lib/display/avatar/avatar.component.d.ts +35 -35
  188. package/lib/display/avatar/avatar.service.d.ts +24 -24
  189. package/lib/display/confirm/confirm.component.d.ts +123 -123
  190. package/lib/display/dialog/dialog-content.d.ts +19 -19
  191. package/lib/display/dialog/dialog-group/dialog-group.component.d.ts +32 -32
  192. package/lib/display/dialog/dialog-types.d.ts +130 -130
  193. package/lib/display/dialog/dialog.component.d.ts +120 -120
  194. package/lib/display/dialog/dialog.service.d.ts +48 -48
  195. package/lib/display/help/help-types.d.ts +33 -33
  196. package/lib/display/hierarchy/hierarchy-base.d.ts +97 -97
  197. package/lib/display/hierarchy/hierarchy-mocks.spec.d.ts +53 -53
  198. package/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.d.ts +34 -34
  199. package/lib/display/item-display/item-display.component.d.ts +43 -43
  200. package/lib/display/json-display/json-display.component.d.ts +16 -16
  201. package/lib/display/resizable/resizable-base.d.ts +67 -67
  202. package/lib/display/resizable/resizable.component.d.ts +31 -31
  203. package/lib/display/spinner/spinner.component.d.ts +5 -5
  204. package/lib/display/splash/splash.component.d.ts +16 -16
  205. package/lib/display/splash/splash.service.d.ts +22 -22
  206. package/lib/display/table/resizable-column.component.d.ts +10 -10
  207. package/lib/display/table/resizable-table.directive.d.ts +93 -93
  208. package/lib/display/table/searchable-table.component.d.ts +206 -206
  209. package/lib/display/table/table-detail-row.component.d.ts +8 -8
  210. package/lib/display/table/table-locked-column.component.d.ts +20 -20
  211. package/lib/display/table/table-master-header-row.component.d.ts +9 -9
  212. package/lib/display/table/table-master-row.component.d.ts +113 -113
  213. package/lib/display/table/table-pagination.component.d.ts +91 -91
  214. package/lib/display/table/table-selectable-row.component.d.ts +102 -102
  215. package/lib/display/table/table.component.d.ts +121 -121
  216. package/lib/display/tags/tag.d.ts +18 -18
  217. package/lib/display/tags/tags.component.d.ts +48 -48
  218. package/lib/display/toast/toast/toast.component.d.ts +23 -23
  219. package/lib/display/toast/toast-types.d.ts +24 -24
  220. package/lib/display/toast/toast.service.d.ts +20 -20
  221. package/lib/display/toast/toaster/toaster.component.d.ts +35 -35
  222. package/lib/display/tooltip/tooltip.component.d.ts +70 -70
  223. package/lib/display/tooltip/tooltip.service.d.ts +16 -16
  224. package/lib/display/tooltip-directive/tooltip.directive.d.ts +44 -44
  225. package/lib/display/tour/tour-types.d.ts +70 -70
  226. package/lib/display/tour/tour.component.d.ts +147 -147
  227. package/lib/display/tour/tour.service.d.ts +38 -38
  228. package/lib/display/tree/tree.component.d.ts +75 -75
  229. package/lib/display/view-overlay/view-overlay.component.d.ts +38 -38
  230. package/lib/shared/directives/click-area-for/click-area-for.directive.d.ts +14 -14
  231. package/lib/shared/directives/if-viewport-width/if-viewport-width.directive.d.ts +60 -60
  232. package/lib/shared/directives/keyboard-nav-container/keyboard-nav-container.directive.d.ts +23 -23
  233. package/lib/shared/directives/popup/popup-container.directive.d.ts +101 -101
  234. package/lib/shared/display/pipes/date-display.pipe.d.ts +21 -21
  235. package/lib/shared/display/pipes/highlight-text.pipe.d.ts +9 -9
  236. package/lib/shared/display/pipes/relative-date.pipe.d.ts +36 -36
  237. package/lib/shared/display/pipes/row-count.pipe.d.ts +23 -23
  238. package/lib/shared/display/pipes/time-display.pipe.d.ts +18 -18
  239. package/lib/shared/display.d.ts +42 -42
  240. package/lib/shared/form-group.helper.d.ts +31 -31
  241. package/lib/shared/json-helper.d.ts +7 -7
  242. package/lib/shared/lodash-helper.d.ts +18 -18
  243. package/lib/shared/page/page-base/page-base.component.d.ts +259 -259
  244. package/lib/shared/page/page-statuses.d.ts +13 -13
  245. package/lib/shared/page/page-title/page-title.component.d.ts +9 -9
  246. package/lib/shared/page/page-view/page-view.component.d.ts +102 -102
  247. package/lib/shared/testing/copy-button-base-test-injector-factory.spec.d.ts +4 -4
  248. package/lib/shared/testing/hierarchy-base-test-injector-factory.spec.d.ts +4 -4
  249. package/lib/shared/testing/page-base-component-test-helper.spec.d.ts +30 -30
  250. package/lib/shared/testing/page-base-component-test-injector-factory.spec.d.ts +28 -28
  251. package/lib/shared/testing/public-mocks.spec.d.ts +90 -90
  252. package/lib/shared/testing/spy-factory.spec.d.ts +27 -27
  253. package/lib/shared/testing/translation-mocks.spec.d.ts +30 -30
  254. package/lib/shared/user-preference.service.d.ts +13 -13
  255. package/lib/shared/wizard/wizard-base/wizard-base.component.d.ts +134 -134
  256. package/lib/shared/wizard/wizard-buttons/wizard-buttons.component.d.ts +27 -27
  257. package/lib/shared/wizard/wizard-progress/wizard-progress.component.d.ts +10 -10
  258. package/package.json +12 -18
  259. package/public-api.d.ts +113 -113
  260. package/schematics/rxjs-7-upgrade/index.d.ts +3 -3
  261. package/schematics/rxjs-7-upgrade/index.js +67 -67
  262. package/schematics/rxjs-7-upgrade/index.js.map +1 -1
  263. package/schematics/rxjs-7-upgrade/schema.d.ts +4 -4
  264. package/schematics/rxjs-7-upgrade/schema.js +2 -2
  265. package/schematics/utilities/typescript.d.ts +7 -7
  266. package/schematics/utilities/typescript.js +41 -41
  267. package/schematics/utilities/workspace.d.ts +8 -8
  268. package/schematics/utilities/workspace.js +71 -71
  269. package/schematics/utilities/workspace.js.map +1 -1
  270. package/esm2020/lib/controls/banner/banner.component.mjs +0 -109
  271. package/esm2020/lib/controls/button/button.component.mjs +0 -106
  272. package/esm2020/lib/controls/button/copy-button-base.directive.mjs +0 -67
  273. package/esm2020/lib/controls/button/copy-table-button.directive.mjs +0 -43
  274. package/esm2020/lib/controls/calendar/calendar-item.component.mjs +0 -91
  275. package/esm2020/lib/controls/calendar/calendar.component.mjs +0 -248
  276. package/esm2020/lib/controls/checkbox/checkbox.component.mjs +0 -140
  277. package/esm2020/lib/controls/combobox/combobox.component.mjs +0 -879
  278. package/esm2020/lib/controls/date-input/date-input-selection-strategies/date-input-selection-strategy-base.mjs +0 -57
  279. package/esm2020/lib/controls/date-input/date-input-selection-strategies/day-selection-strategy.mjs +0 -62
  280. package/esm2020/lib/controls/date-input/date-input-selection-strategies/last-28-days-selection-strategy.mjs +0 -100
  281. package/esm2020/lib/controls/date-input/date-input-selection-strategies/last-7-days-selection-strategy.mjs +0 -101
  282. package/esm2020/lib/controls/date-input/date-input-selection-strategies/month-selection-strategy.mjs +0 -76
  283. package/esm2020/lib/controls/date-input/date-input-selection-strategies/quarter-selection-strategy.mjs +0 -79
  284. package/esm2020/lib/controls/date-input/date-input-selection-strategies/range-selection-strategy.mjs +0 -210
  285. package/esm2020/lib/controls/date-input/date-input-selection-strategies/year-selection-strategy.mjs +0 -81
  286. package/esm2020/lib/controls/date-input/date-input.component.mjs +0 -465
  287. package/esm2020/lib/controls/dropdown/dropdown.component.mjs +0 -243
  288. package/esm2020/lib/controls/file-upload/file-upload.component.mjs +0 -261
  289. package/esm2020/lib/controls/form-control/form-control.component.mjs +0 -98
  290. package/esm2020/lib/controls/form-control-base.mjs +0 -151
  291. package/esm2020/lib/controls/form-control-label/form-control-label.component.mjs +0 -136
  292. package/esm2020/lib/controls/form-group/form-group.component.mjs +0 -261
  293. package/esm2020/lib/controls/item-picker/item-picker.component.mjs +0 -329
  294. package/esm2020/lib/controls/menu/menu.component.mjs +0 -485
  295. package/esm2020/lib/controls/navigation/nav-group.mjs +0 -39
  296. package/esm2020/lib/controls/navigation/nav-item-active.directive.mjs +0 -92
  297. package/esm2020/lib/controls/numericbox/numericbox.component.mjs +0 -372
  298. package/esm2020/lib/controls/popover/popover.component.mjs +0 -117
  299. package/esm2020/lib/controls/radio-button/radio-button.component.mjs +0 -82
  300. package/esm2020/lib/controls/select/select.component.mjs +0 -88
  301. package/esm2020/lib/controls/tabs/tabs.component.mjs +0 -47
  302. package/esm2020/lib/controls/textbox/textbox.component.mjs +0 -155
  303. package/esm2020/lib/core/cache.service.mjs +0 -105
  304. package/esm2020/lib/core/custom-validators.mjs +0 -29
  305. package/esm2020/lib/core/date-time-helper.mjs +0 -228
  306. package/esm2020/lib/core/error.service.mjs +0 -61
  307. package/esm2020/lib/core/router-helper.service.mjs +0 -111
  308. package/esm2020/lib/core/scroll.service.mjs +0 -89
  309. package/esm2020/lib/core/validation-message.service.mjs +0 -185
  310. package/esm2020/lib/core/window.service.mjs +0 -186
  311. package/esm2020/lib/display/app-bar/app-bar.component.mjs +0 -46
  312. package/esm2020/lib/display/avatar/avatar.component.mjs +0 -67
  313. package/esm2020/lib/display/avatar/avatar.service.mjs +0 -64
  314. package/esm2020/lib/display/confirm/confirm.component.mjs +0 -168
  315. package/esm2020/lib/display/dialog/dialog-group/dialog-group.component.mjs +0 -63
  316. package/esm2020/lib/display/dialog/dialog.component.mjs +0 -281
  317. package/esm2020/lib/display/hierarchy/hierarchy-base.mjs +0 -111
  318. package/esm2020/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.mjs +0 -61
  319. package/esm2020/lib/display/item-display/item-display.component.mjs +0 -81
  320. package/esm2020/lib/display/json-display/json-display.component.mjs +0 -47
  321. package/esm2020/lib/display/resizable/resizable-base.mjs +0 -120
  322. package/esm2020/lib/display/splash/splash.component.mjs +0 -42
  323. package/esm2020/lib/display/table/resizable-table.directive.mjs +0 -227
  324. package/esm2020/lib/display/table/searchable-table.component.mjs +0 -342
  325. package/esm2020/lib/display/table/table-locked-column.component.mjs +0 -58
  326. package/esm2020/lib/display/table/table-master-row.component.mjs +0 -163
  327. package/esm2020/lib/display/table/table-pagination.component.mjs +0 -155
  328. package/esm2020/lib/display/table/table-selectable-row.component.mjs +0 -235
  329. package/esm2020/lib/display/table/table.component.mjs +0 -249
  330. package/esm2020/lib/display/tags/tag.mjs +0 -18
  331. package/esm2020/lib/display/tags/tags.component.mjs +0 -77
  332. package/esm2020/lib/display/toast/toast/toast.component.mjs +0 -77
  333. package/esm2020/lib/display/toast/toaster/toaster.component.mjs +0 -114
  334. package/esm2020/lib/display/tooltip-directive/tooltip.directive.mjs +0 -173
  335. package/esm2020/lib/display/tour/tour.component.mjs +0 -398
  336. package/esm2020/lib/display/tour/tour.service.mjs +0 -75
  337. package/esm2020/lib/display/tree/tree.component.mjs +0 -135
  338. package/esm2020/lib/display/view-overlay/view-overlay.component.mjs +0 -58
  339. package/esm2020/lib/shared/directives/click-area-for/click-area-for.directive.mjs +0 -32
  340. package/esm2020/lib/shared/directives/if-viewport-width/if-viewport-width.directive.mjs +0 -111
  341. package/esm2020/lib/shared/directives/popup/popup-container.directive.mjs +0 -163
  342. package/esm2020/lib/shared/display/pipes/date-display.pipe.mjs +0 -50
  343. package/esm2020/lib/shared/display/pipes/highlight-text.pipe.mjs +0 -30
  344. package/esm2020/lib/shared/display/pipes/relative-date.pipe.mjs +0 -62
  345. package/esm2020/lib/shared/display/pipes/row-count.pipe.mjs +0 -48
  346. package/esm2020/lib/shared/display/pipes/time-display.pipe.mjs +0 -41
  347. package/esm2020/lib/shared/display.mjs +0 -6
  348. package/esm2020/lib/shared/form-group.helper.mjs +0 -67
  349. package/esm2020/lib/shared/json-helper.mjs +0 -19
  350. package/esm2020/lib/shared/lodash-helper.mjs +0 -51
  351. package/esm2020/lib/shared/page/page-base/page-base.component.mjs +0 -387
  352. package/esm2020/lib/shared/page/page-view/page-view.component.mjs +0 -147
  353. package/esm2020/lib/shared/testing/page-base-component-test-injector-factory.spec.mjs +0 -98
  354. package/esm2020/lib/shared/wizard/wizard-base/wizard-base.component.mjs +0 -246
  355. package/fesm2015/energycap-components.mjs +0 -13373
  356. package/fesm2015/energycap-components.mjs.map +0 -1
  357. package/fesm2020/energycap-components.mjs.map +0 -1
@@ -1,91 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';
2
- import moment from 'moment';
3
- import { DateTimeHelper } from '../../core/date-time-helper';
4
- import { DateInput } from '../date-input/date-input.types';
5
- import * as i0 from "@angular/core";
6
- export class CalendarItemComponent {
7
- get disabled() {
8
- return this.hidden || undefined;
9
- }
10
- constructor() {
11
- this.view = { mode: 'day', date: new Date() };
12
- this.minDate = DateTimeHelper.minDatePickerDate;
13
- this.maxDate = DateTimeHelper.maxDatePickerDate;
14
- this.today = false;
15
- this.selected = false;
16
- this.outsideActiveMonth = false;
17
- this.hidden = false;
18
- }
19
- ngOnChanges() {
20
- if (this.view.mode !== 'day') {
21
- this.today = false;
22
- this.outsideActiveMonth = false;
23
- }
24
- else {
25
- this.today = moment(this.item?.date).isSame(moment(), 'day');
26
- this.outsideActiveMonth = !moment(this.item?.date).isSame(this.view.date, 'month');
27
- }
28
- if (this.item?.date) {
29
- this.hidden = this.isHidden(this.item.date, this.minDate, this.maxDate, this.view.mode);
30
- }
31
- else {
32
- this.hidden = true;
33
- }
34
- this.selected = this.isSelected(this.item?.date, this.selection, this.view.mode);
35
- }
36
- isSelected(date, selection, view) {
37
- if (!date || !selection) {
38
- return false;
39
- }
40
- if (DateInput.isSelectionSingleDate(selection)) {
41
- return moment(date).isSame(selection, view);
42
- }
43
- else {
44
- if (selection.start && !selection.end) {
45
- return moment(date).isSame(selection.start, view);
46
- }
47
- else if (!selection.start && selection.end) {
48
- return moment(date).isSame(selection.end, view);
49
- }
50
- else if (selection.start && selection.end) {
51
- return moment(date).isBetween(selection.start, selection.end, view, '[]');
52
- }
53
- }
54
- return false;
55
- }
56
- isHidden(date, minDate, maxDate, view) {
57
- return moment(date).isBefore(minDate, view) || moment(date).isAfter(maxDate, view);
58
- }
59
- }
60
- CalendarItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CalendarItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
61
- CalendarItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: CalendarItemComponent, selector: "button[ec-calendar-item]", inputs: { item: "item", selection: "selection", view: "view", minDate: "minDate", maxDate: "maxDate" }, host: { properties: { "class.is-today": "this.today", "class.is-selected": "this.selected", "class.is-outside-active-month": "this.outsideActiveMonth", "class.is-hidden": "this.hidden", "attr.disabled": "this.disabled" } }, usesOnChanges: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [":host{font-size:var(--ec-font-size-action);height:2rem;line-height:1.25rem;padding:.3125rem .5rem;border:0;border-radius:var(--ec-border-radius);display:flex;align-items:center;justify-content:center;cursor:pointer;background-color:transparent;line-height:1.125rem}:host .label{display:flex;align-items:center;justify-content:center;white-space:nowrap;flex:auto}:host .ec-icon{flex:none}:host .ec-icon+.label{flex:none;margin-left:.25rem}:host.has-badge{padding-right:.0625rem}:host:focus{outline:none;position:relative;z-index:1}:host:disabled{background-color:var(--ec-background-color-disabled);border:1px solid var(--ec-form-control-border-color-disabled);color:var(--ec-color-disabled-dark);opacity:var(--ec-form-control-opacity-disabled);cursor:default}:host:disabled{background-color:transparent;border-color:transparent;color:var(--ec-color-hint-dark);--ec-color-icon: var(--ec-color-hint-dark)}:host:hover:not(:disabled){background-color:var(--ec-background-color-hover)}:host:active:not(:disabled){background-color:var(--ec-background-color-selected);font-weight:700}:host:focus:not(:disabled){box-shadow:var(--ec-button-box-shadow-active, 0 0 0 2px var(--ec-border-color-focus))}:host.is-selected{background-color:var(--ec-background-color-selected);font-weight:700}:host.is-selected,:host.is-selected:disabled{background-color:var(--ec-background-color-selected);font-weight:700}:host.is-today{text-decoration:underline}:host.is-outside-active-month{color:var(--ec-color-hint-dark)}:host.is-hidden{opacity:0!important}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
62
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CalendarItemComponent, decorators: [{
63
- type: Component,
64
- args: [{ selector: 'button[ec-calendar-item]', template: '<ng-content></ng-content>', changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{font-size:var(--ec-font-size-action);height:2rem;line-height:1.25rem;padding:.3125rem .5rem;border:0;border-radius:var(--ec-border-radius);display:flex;align-items:center;justify-content:center;cursor:pointer;background-color:transparent;line-height:1.125rem}:host .label{display:flex;align-items:center;justify-content:center;white-space:nowrap;flex:auto}:host .ec-icon{flex:none}:host .ec-icon+.label{flex:none;margin-left:.25rem}:host.has-badge{padding-right:.0625rem}:host:focus{outline:none;position:relative;z-index:1}:host:disabled{background-color:var(--ec-background-color-disabled);border:1px solid var(--ec-form-control-border-color-disabled);color:var(--ec-color-disabled-dark);opacity:var(--ec-form-control-opacity-disabled);cursor:default}:host:disabled{background-color:transparent;border-color:transparent;color:var(--ec-color-hint-dark);--ec-color-icon: var(--ec-color-hint-dark)}:host:hover:not(:disabled){background-color:var(--ec-background-color-hover)}:host:active:not(:disabled){background-color:var(--ec-background-color-selected);font-weight:700}:host:focus:not(:disabled){box-shadow:var(--ec-button-box-shadow-active, 0 0 0 2px var(--ec-border-color-focus))}:host.is-selected{background-color:var(--ec-background-color-selected);font-weight:700}:host.is-selected,:host.is-selected:disabled{background-color:var(--ec-background-color-selected);font-weight:700}:host.is-today{text-decoration:underline}:host.is-outside-active-month{color:var(--ec-color-hint-dark)}:host.is-hidden{opacity:0!important}\n"] }]
65
- }], ctorParameters: function () { return []; }, propDecorators: { item: [{
66
- type: Input
67
- }], selection: [{
68
- type: Input
69
- }], view: [{
70
- type: Input
71
- }], minDate: [{
72
- type: Input
73
- }], maxDate: [{
74
- type: Input
75
- }], today: [{
76
- type: HostBinding,
77
- args: ['class.is-today']
78
- }], selected: [{
79
- type: HostBinding,
80
- args: ['class.is-selected']
81
- }], outsideActiveMonth: [{
82
- type: HostBinding,
83
- args: ['class.is-outside-active-month']
84
- }], hidden: [{
85
- type: HostBinding,
86
- args: ['class.is-hidden']
87
- }], disabled: [{
88
- type: HostBinding,
89
- args: ['attr.disabled']
90
- }] } });
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvY29udHJvbHMvY2FsZW5kYXIvY2FsZW5kYXItaXRlbS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOztBQVMzRCxNQUFNLE9BQU8scUJBQXFCO0lBWWhDLElBQXlDLFFBQVE7UUFDL0MsT0FBTyxJQUFJLENBQUMsTUFBTSxJQUFJLFNBQVMsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7UUFaZ0IsU0FBSSxHQUFrQixFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUN4RCxZQUFPLEdBQVMsY0FBYyxDQUFDLGlCQUFpQixDQUFDO1FBQ2pELFlBQU8sR0FBUyxjQUFjLENBQUMsaUJBQWlCLENBQUM7UUFFM0IsVUFBSyxHQUFZLEtBQUssQ0FBQztRQUNwQixhQUFRLEdBQVksS0FBSyxDQUFDO1FBQ2QsdUJBQWtCLEdBQVksS0FBSyxDQUFDO1FBQ2xELFdBQU0sR0FBWSxLQUFLLENBQUM7SUFLL0MsQ0FBQztJQUVqQixXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxLQUFLLEVBQUU7WUFDNUIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDbkIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztTQUNqQzthQUFNO1lBQ0ws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QTFDLFdBQVc7dUJBQUMsZ0JBQWdCO2dCQUNZLFFBQVE7c0JBQWhELFdBQVc7dUJBQUMsbUJBQW1CO2dCQUNxQixrQkFBa0I7c0JBQXRFLFdBQVc7dUJBQUMsK0JBQStCO2dCQUNMLE1BQU07c0JBQTVDLFdBQVc7dUJBQUMsaUJBQWlCO2dCQUNXLFFBQVE7c0JBQWhELFdBQVc7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25DaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcclxuaW1wb3J0IHsgRGF0ZVRpbWVIZWxwZXIgfSBmcm9tICcuLi8uLi9jb3JlL2RhdGUtdGltZS1oZWxwZXInO1xyXG5pbXBvcnQgeyBEYXRlSW5wdXQgfSBmcm9tICcuLi9kYXRlLWlucHV0L2RhdGUtaW5wdXQudHlwZXMnO1xyXG5pbXBvcnQgeyBDYWxlbmRhciB9IGZyb20gJy4vY2FsZW5kYXIudHlwZXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdidXR0b25bZWMtY2FsZW5kYXItaXRlbV0nLFxyXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY2FsZW5kYXItaXRlbS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2FsZW5kYXJJdGVtQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIGl0ZW0/OiBDYWxlbmRhci5JdGVtO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBzZWxlY3Rpb24/OiBEYXRlSW5wdXQuU2VsZWN0aW9uO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyB2aWV3OiBDYWxlbmRhci5WaWV3ID0geyBtb2RlOiAnZGF5JywgZGF0ZTogbmV3IERhdGUoKSB9O1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBtaW5EYXRlOiBEYXRlID0gRGF0ZVRpbWVIZWxwZXIubWluRGF0ZVBpY2tlckRhdGU7XHJcbiAgQElucHV0KCkgcHVibGljIG1heERhdGU6IERhdGUgPSBEYXRlVGltZUhlbHBlci5tYXhEYXRlUGlja2VyRGF0ZTtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pcy10b2RheScpIHB1YmxpYyB0b2RheTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaXMtc2VsZWN0ZWQnKSBwdWJsaWMgc2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlzLW91dHNpZGUtYWN0aXZlLW1vbnRoJykgcHVibGljIG91dHNpZGVBY3RpdmVNb250aDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaXMtaGlkZGVuJykgcHVibGljIGhpZGRlbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBIb3N0QmluZGluZygnYXR0ci5kaXNhYmxlZCcpIHB1YmxpYyBnZXQgZGlzYWJsZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5oaWRkZW4gfHwgdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy52aWV3Lm1vZGUgIT09ICdkYXknKSB7XHJcbiAgICAgIHRoaXMudG9kYXkgPSBmYWxzZTtcclxuICAgICAgdGhpcy5vdXRzaWRlQWN0aXZlTW9udGggPSBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudG9kYXkgPSBtb21lbnQodGhpcy5pdGVtPy5kYXRlKS5pc1NhbWUobW9tZW50KCksICdkYXknKTtcclxuICAgICAgdGhpcy5vdXRzaWRlQWN0aXZlTW9udGggPSAhbW9tZW50KHRoaXMuaXRlbT8uZGF0ZSkuaXNTYW1lKHRoaXMudmlldy5kYXRlLCAnbW9udGgnKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5pdGVtPy5kYXRlKSB7XHJcbiAgICAgIHRoaXMuaGlkZGVuID0gdGhpcy5pc0hpZGRlbih0aGlzLml0ZW0uZGF0ZSwgdGhpcy5taW5EYXRlLCB0aGlzLm1heERhdGUsIHRoaXMudmlldy5tb2RlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaGlkZGVuID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgdGhpcy5zZWxlY3RlZCA9IHRoaXMuaXNTZWxlY3RlZCh0aGlzLml0ZW0/LmRhdGUsIHRoaXMuc2VsZWN0aW9uLCB0aGlzLnZpZXcubW9kZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzU2VsZWN0ZWQoZGF0ZT86IERhdGUsIHNlbGVjdGlvbj86IERhdGVJbnB1dC5TZWxlY3Rpb24sIHZpZXc/OiBDYWxlbmRhci5WaWV3TW9kZSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCFkYXRlIHx8ICFzZWxlY3Rpb24pIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChEYXRlSW5wdXQuaXNTZWxlY3Rpb25TaW5nbGVEYXRlKHNlbGVjdGlvbikpIHtcclxuICAgICAgcmV0dXJuIG1vbWVudChkYXRlKS5pc1NhbWUoc2VsZWN0aW9uLCB2aWV3KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChzZWxlY3Rpb24uc3RhcnQgJiYgIXNlbGVjdGlvbi5lbmQpIHtcclxuICAgICAgICByZXR1cm4gbW9tZW50KGRhdGUpLmlzU2FtZShzZWxlY3Rpb24uc3RhcnQsIHZpZXcpO1xyXG4gICAgICB9IGVsc2UgaWYgKCFzZWxlY3Rpb24uc3RhcnQgJiYgc2VsZWN0aW9uLmVuZCkge1xyXG4gICAgICAgIHJldHVybiBtb21lbnQoZGF0ZSkuaXNTYW1lKHNlbGVjdGlvbi5lbmQsIHZpZXcpO1xyXG4gICAgICB9IGVsc2UgaWYgKHNlbGVjdGlvbi5zdGFydCAmJiBzZWxlY3Rpb24uZW5kKSB7XHJcbiAgICAgICAgcmV0dXJuIG1vbWVudChkYXRlKS5pc0JldHdlZW4oc2VsZWN0aW9uLnN0YXJ0LCBzZWxlY3Rpb24uZW5kLCB2aWV3LCAnW10nKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNIaWRkZW4oZGF0ZTogRGF0ZSwgbWluRGF0ZTogRGF0ZSwgbWF4RGF0ZTogRGF0ZSwgdmlldzogQ2FsZW5kYXIuVmlld01vZGUpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBtb21lbnQoZGF0ZSkuaXNCZWZvcmUobWluRGF0ZSwgdmlldykgfHwgbW9tZW50KGRhdGUpLmlzQWZ0ZXIobWF4RGF0ZSwgdmlldyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,248 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';
2
- import { range } from 'lodash';
3
- import moment from 'moment';
4
- import { DateTimeHelper } from '../../core/date-time-helper';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/common";
7
- import * as i2 from "./calendar-item.component";
8
- export class CalendarComponent {
9
- constructor() {
10
- this.id = 'calendar';
11
- this.selection = null;
12
- this.selectionMode = 'day';
13
- this.minDate = DateTimeHelper.minDatePickerDate;
14
- this.maxDate = DateTimeHelper.maxDatePickerDate;
15
- this.dateSelected = new EventEmitter();
16
- /** Determines the current view of the calendar. */
17
- this.view = { mode: 'day', date: new Date() };
18
- this.viewChange = new EventEmitter();
19
- /** Array of calendar item rows to display in the calendar. */
20
- this.calendarItems = [];
21
- /** Weekday labels to show at the top of the calendar in day view. */
22
- this.weekDays = moment.weekdaysShort().map(d => d.slice(0, 1));
23
- this.disablePreviousButton = false;
24
- this.disableNextButton = false;
25
- // Trackby functions for ngFor loops. These reduce the number of DOM elements that need to be updated when the calendar is re-drawn.
26
- // Without these there are some change-detection issues on the first-time rendering of the calendar.
27
- this.trackByDateRow = (index, row) => `${row[0].date.toISOString()}-${row[row.length - 1].date.toISOString()}`;
28
- this.trackByDate = (index, item) => item.date.toISOString();
29
- }
30
- ngOnChanges(changes) {
31
- if (changes.view) {
32
- this.drawCalendar(this.view);
33
- }
34
- if (changes.minDate || changes.maxDate) {
35
- this.updateNextPreviousStates();
36
- }
37
- }
38
- ngOnInit() {
39
- if (!this.calendarItems.length) {
40
- this.drawCalendar(this.view);
41
- }
42
- }
43
- onNextClick() {
44
- // If we're in day view, we're incrementing by month
45
- // In month, quarter, and year views we're incrementing by year\
46
- const unit = this.view.mode === 'day' ? 'month' : 'year';
47
- // In year view, we're moving by 16 years at a time. Otherwise we're just moving by 1 month/year.
48
- const count = this.view.mode === 'year' ? 16 : 1;
49
- const goToDate = moment(this.view.date).add(count, unit).toDate();
50
- this.drawCalendar({ mode: this.view.mode, date: goToDate });
51
- }
52
- onPreviousClick() {
53
- // If we're in day view, we're incrementing by month
54
- // In month, quarter, and year views we're incrementing by year
55
- const unit = this.view.mode === 'day' ? 'month' : 'year';
56
- // In year view, we're moving by 16 years at a time. Otherwise we're just moving by 1 month/year.
57
- const count = this.view.mode === 'year' ? 16 : 1;
58
- const goToDate = moment(this.view.date).subtract(count, unit).toDate();
59
- this.drawCalendar({ mode: this.view.mode, date: goToDate });
60
- }
61
- /** Switches the calendar to month view. */
62
- onMonthClick() {
63
- this.drawCalendar({ mode: 'month', date: this.view.date });
64
- }
65
- /** Switches the calendar to year view. */
66
- onYearClick() {
67
- this.drawCalendar({ mode: 'year', date: this.view.date });
68
- }
69
- onItemSelected(item) {
70
- switch (this.view.mode) {
71
- case 'day':
72
- this.onDaySelected(item);
73
- break;
74
- case 'month':
75
- this.onMonthSelected(item);
76
- break;
77
- case 'quarter':
78
- this.onQuarterSelected(item);
79
- break;
80
- case 'year':
81
- this.onYearSelected(item);
82
- break;
83
- }
84
- }
85
- onYearSelected(item) {
86
- // If in year selection mode, emit the calendar item so the date picker can update the selection.
87
- if (this.selectionMode === 'year') {
88
- this.dateSelected.emit(item.date);
89
- // If we're in quarter selection mode, draw the quarter view.
90
- }
91
- else if (this.selectionMode === 'quarter') {
92
- this.drawCalendar({ mode: 'quarter', date: item.date });
93
- // All other selection modes should zoom in to the month view when a year is selected.
94
- }
95
- else {
96
- this.drawCalendar({ mode: 'month', date: item.date });
97
- }
98
- }
99
- onQuarterSelected(item) {
100
- // Quarter view is only accessible when in quarter selection mode,
101
- // so there's no other views to draw from here. Just emit the selected item.
102
- this.dateSelected.emit(item.date);
103
- }
104
- onMonthSelected(item) {
105
- // When in month selection mode, emit the selected month item and don't change the view.
106
- if (this.selectionMode === 'month') {
107
- this.dateSelected.emit(item.date);
108
- // Month view is only accessible from day, last7days, last28days, month, and range selection modes.
109
- // If we're not in month selection mode, we need to zoom in to the day view.
110
- }
111
- else {
112
- this.drawCalendar({ mode: 'day', date: item.date });
113
- }
114
- }
115
- onDaySelected(item) {
116
- // No further views other than day mode. Just emit the selected item.
117
- this.dateSelected.emit(item.date);
118
- }
119
- drawCalendar(view) {
120
- // If the view has changed, emit the new view.
121
- if (view.date !== this.view.date || view.mode !== this.view.mode) {
122
- this.view = view;
123
- this.viewChange.emit(view);
124
- }
125
- this.month = moment(this.view.date).format('MMM');
126
- this.year = moment(this.view.date).format('YYYY');
127
- this.calendarItems = this.getCalendarItems(this.view);
128
- const startYear = this.calendarItems[0][0].date < this.minDate ? this.minDate : this.calendarItems[0][0].date;
129
- const lastItem = this.getLastItem();
130
- const endYear = lastItem.date > this.maxDate ? this.maxDate : lastItem.date;
131
- this.yearRange = `${moment(startYear).format('YYYY')}&ndash;${moment(endYear).format('YYYY')}`;
132
- this.updateNextPreviousStates();
133
- }
134
- getCalendarItems(view) {
135
- switch (view.mode) {
136
- case 'day': return this.getDayViewItems(view.date);
137
- case 'month': return this.getMonthViewItems(view.date);
138
- case 'quarter': return this.getQuarterViewItems(view.date);
139
- case 'year': return this.getYearViewItems(view.date);
140
- }
141
- }
142
- getDayViewItems(activeDate) {
143
- // 6 rows of 7 days = 42 days
144
- return range(0, 6).map(r => {
145
- return range(0, 7).map(d => {
146
- // Use the start of the week of the first day of the month.
147
- // This pads out the first week with any days from the previous month.
148
- const date = moment(activeDate).startOf('month').startOf('week').add(r * 7 + d, 'day');
149
- return {
150
- date: date.toDate(),
151
- label: date.format('D')
152
- };
153
- });
154
- });
155
- }
156
- getMonthViewItems(activeDate) {
157
- // 4 rows of 3 months = 12 months
158
- return range(0, 4).map(r => {
159
- return range(0, 3).map(m => {
160
- const date = moment(activeDate).startOf('year').add(r * 3 + m, 'month');
161
- return {
162
- date: date.toDate(),
163
- label: date.format('MMM')
164
- };
165
- });
166
- });
167
- }
168
- getQuarterViewItems(activeDate) {
169
- // 2 rows of 2 quarters = 4 quarters
170
- return range(0, 2).map(r => {
171
- return range(0, 2).map(q => {
172
- const date = moment(activeDate).startOf('year').add(r * 2 + q, 'quarter');
173
- const endDate = moment(date).endOf('quarter');
174
- return {
175
- date: date.toDate(),
176
- label: `${date.format('MMM')}&ndash;${endDate.format('MMM')}`
177
- };
178
- });
179
- });
180
- }
181
- getYearViewItems(activeDate) {
182
- // 4 rows of 4 years = 16 years
183
- return range(0, 4).map(r => {
184
- return range(0, 4).map(y => {
185
- // Subtracting 8 years to put the current active year at the beginning of the 3rd row.
186
- const date = moment(activeDate).startOf('year').subtract(8, 'years').add(r * 4 + y, 'year');
187
- return {
188
- date: date.toDate(),
189
- label: date.format('YYYY')
190
- };
191
- });
192
- });
193
- }
194
- updateNextPreviousStates() {
195
- // We change the granularity of the min and max date checks based on the current view mode.
196
- // We don't want to disable the next/previous buttons if the min or max date is within the
197
- // next or previous view
198
- const unit = this.view.mode === 'day' ? 'month' : 'year';
199
- // When in year view, we need to subtract 9 years to determine if we're past the min date.
200
- // The year view is 16 years long, and the current date is the 9th year in the view.
201
- const subCount = this.view.mode === 'year' ? 9 : 1;
202
- if (moment(this.view.date).subtract(subCount, unit).isBefore(this.minDate, unit)) {
203
- this.disablePreviousButton = true;
204
- }
205
- else {
206
- this.disablePreviousButton = false;
207
- }
208
- // When in year view, we need to add 8 years to determine if we're past the max date.
209
- // The year view is 16 years long, and the current date is the 9th year in the view.
210
- const addCount = this.view.mode === 'year' ? 8 : 1;
211
- if (moment(this.view.date).add(addCount, unit).isAfter(this.maxDate, unit)) {
212
- this.disableNextButton = true;
213
- }
214
- else {
215
- this.disableNextButton = false;
216
- }
217
- }
218
- getLastItem() {
219
- const lastRow = this.calendarItems[this.calendarItems.length - 1];
220
- return lastRow[lastRow.length - 1];
221
- }
222
- }
223
- CalendarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
224
- CalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: CalendarComponent, selector: "ec-calendar", inputs: { id: "id", selection: "selection", selectionMode: "selectionMode", minDate: "minDate", maxDate: "maxDate", view: "view" }, outputs: { dateSelected: "dateSelected", viewChange: "viewChange" }, host: { properties: { "attr.id": "this.id" } }, usesOnChanges: true, ngImport: i0, template: "<header class=\"d-flex align-items-center mt-1 mb-2 px-1\">\r\n <button id=\"{{id}}_prev_button\"\r\n class=\"mr-auto\"\r\n (click)=\"onPreviousClick()\"\r\n [disabled]=\"disablePreviousButton\">\r\n <i class=\"ec-icon icon-angle-down rotate-90\"></i>\r\n </button>\r\n\r\n <button *ngIf=\"view.mode === 'day'\"\r\n id=\"{{id}}_month_button\"\r\n class=\"text-body-1 font-weight-bold\"\r\n (click)=\"onMonthClick()\">\r\n {{month}}\r\n </button>\r\n\r\n <button *ngIf=\"view.mode !== 'year'\"\r\n id=\"{{id}}_year_button\"\r\n class=\"text-body-1 font-weight-bold\"\r\n (click)=\"onYearClick()\">\r\n {{year}}\r\n </button>\r\n\r\n <div id=\"{{id}}_year_range\"\r\n *ngIf=\"view.mode === 'year'\"\r\n class=\"text-body-1 font-weight-bold\"\r\n [innerHTML]=\"yearRange\">\r\n </div>\r\n\r\n <button id=\"{{id}}_next_button\"\r\n class=\"ml-auto\"\r\n (click)=\"onNextClick()\"\r\n [disabled]=\"disableNextButton\">\r\n <i class=\"ec-icon icon-angle-down rotate-270\"></i>\r\n </button>\r\n</header>\r\n\r\n<div *ngIf=\"view.mode === 'day'\"\r\n class=\"mb-1 px-2 d-flex\">\r\n <h3 *ngFor=\"let day of weekDays\"\r\n class=\"text-heading-3 d-flex justify-content-center align-items-center\"\r\n style=\"width: 2rem; height: 1.75rem;\">{{day}}</h3>\r\n</div>\r\n\r\n<div *ngFor=\"let row of calendarItems; last as isLast; trackBy: trackByDateRow\"\r\n class=\"px-2 d-flex {{view.mode}}-view\"\r\n [class.mb-1]=\"!isLast\"\r\n [class.mb-2]=\"isLast\">\r\n <button *ngFor=\"let item of row; trackBy: trackByDate\"\r\n id=\"{{id}}_item_{{item.date | date:'MM_dd_yyyy'}}\"\r\n ec-calendar-item\r\n [item]=\"item\"\r\n [selection]=\"selection\"\r\n [view]=\"view\"\r\n (click)=\"onItemSelected(item)\"\r\n [innerHTML]=\"item.label\"\r\n [minDate]=\"minDate\"\r\n [maxDate]=\"maxDate\">\r\n </button>\r\n</div>\r\n", styles: [":host{display:inline-block}button{font-size:var(--ec-font-size-action);height:2rem;line-height:1.25rem;padding:.3125rem .5rem;border:0;border-radius:var(--ec-border-radius);display:flex;align-items:center;justify-content:center;cursor:pointer;background-color:transparent}button .label{display:flex;align-items:center;justify-content:center;white-space:nowrap;flex:auto}button .ec-icon{flex:none}button .ec-icon+.label{flex:none;margin-left:.25rem}button.has-badge{padding-right:.0625rem}button:focus{outline:none;position:relative;z-index:1}button:disabled{background-color:var(--ec-background-color-disabled);border:1px solid var(--ec-form-control-border-color-disabled);color:var(--ec-color-disabled-dark);opacity:var(--ec-form-control-opacity-disabled);cursor:default}button:disabled{background-color:transparent;border-color:transparent;color:var(--ec-color-hint-dark);--ec-color-icon: var(--ec-color-hint-dark)}button:hover:not(:disabled){background-color:var(--ec-background-color-hover)}button:active:not(:disabled){background-color:var(--ec-background-color-selected);font-weight:700}button:focus:not(:disabled){box-shadow:var(--ec-button-box-shadow-active, 0 0 0 2px var(--ec-border-color-focus))}button.is-selected{background-color:var(--ec-background-color-selected);font-weight:700}.day-view button{width:2rem;height:1.75rem}.month-view button{width:4.67rem;height:3.25rem}.quarter-view button{width:7rem;height:6.75rem}.year-view button{width:3.5rem;height:3.25rem}.is-selected:has(+ .is-selected:not(:disabled)){border-top-right-radius:0;border-bottom-right-radius:0}.is-selected:not(:disabled)+.is-selected{border-top-left-radius:0;border-bottom-left-radius:0}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.CalendarItemComponent, selector: "button[ec-calendar-item]", inputs: ["item", "selection", "view", "minDate", "maxDate"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
225
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CalendarComponent, decorators: [{
226
- type: Component,
227
- args: [{ selector: 'ec-calendar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<header class=\"d-flex align-items-center mt-1 mb-2 px-1\">\r\n <button id=\"{{id}}_prev_button\"\r\n class=\"mr-auto\"\r\n (click)=\"onPreviousClick()\"\r\n [disabled]=\"disablePreviousButton\">\r\n <i class=\"ec-icon icon-angle-down rotate-90\"></i>\r\n </button>\r\n\r\n <button *ngIf=\"view.mode === 'day'\"\r\n id=\"{{id}}_month_button\"\r\n class=\"text-body-1 font-weight-bold\"\r\n (click)=\"onMonthClick()\">\r\n {{month}}\r\n </button>\r\n\r\n <button *ngIf=\"view.mode !== 'year'\"\r\n id=\"{{id}}_year_button\"\r\n class=\"text-body-1 font-weight-bold\"\r\n (click)=\"onYearClick()\">\r\n {{year}}\r\n </button>\r\n\r\n <div id=\"{{id}}_year_range\"\r\n *ngIf=\"view.mode === 'year'\"\r\n class=\"text-body-1 font-weight-bold\"\r\n [innerHTML]=\"yearRange\">\r\n </div>\r\n\r\n <button id=\"{{id}}_next_button\"\r\n class=\"ml-auto\"\r\n (click)=\"onNextClick()\"\r\n [disabled]=\"disableNextButton\">\r\n <i class=\"ec-icon icon-angle-down rotate-270\"></i>\r\n </button>\r\n</header>\r\n\r\n<div *ngIf=\"view.mode === 'day'\"\r\n class=\"mb-1 px-2 d-flex\">\r\n <h3 *ngFor=\"let day of weekDays\"\r\n class=\"text-heading-3 d-flex justify-content-center align-items-center\"\r\n style=\"width: 2rem; height: 1.75rem;\">{{day}}</h3>\r\n</div>\r\n\r\n<div *ngFor=\"let row of calendarItems; last as isLast; trackBy: trackByDateRow\"\r\n class=\"px-2 d-flex {{view.mode}}-view\"\r\n [class.mb-1]=\"!isLast\"\r\n [class.mb-2]=\"isLast\">\r\n <button *ngFor=\"let item of row; trackBy: trackByDate\"\r\n id=\"{{id}}_item_{{item.date | date:'MM_dd_yyyy'}}\"\r\n ec-calendar-item\r\n [item]=\"item\"\r\n [selection]=\"selection\"\r\n [view]=\"view\"\r\n (click)=\"onItemSelected(item)\"\r\n [innerHTML]=\"item.label\"\r\n [minDate]=\"minDate\"\r\n [maxDate]=\"maxDate\">\r\n </button>\r\n</div>\r\n", styles: [":host{display:inline-block}button{font-size:var(--ec-font-size-action);height:2rem;line-height:1.25rem;padding:.3125rem .5rem;border:0;border-radius:var(--ec-border-radius);display:flex;align-items:center;justify-content:center;cursor:pointer;background-color:transparent}button .label{display:flex;align-items:center;justify-content:center;white-space:nowrap;flex:auto}button .ec-icon{flex:none}button .ec-icon+.label{flex:none;margin-left:.25rem}button.has-badge{padding-right:.0625rem}button:focus{outline:none;position:relative;z-index:1}button:disabled{background-color:var(--ec-background-color-disabled);border:1px solid var(--ec-form-control-border-color-disabled);color:var(--ec-color-disabled-dark);opacity:var(--ec-form-control-opacity-disabled);cursor:default}button:disabled{background-color:transparent;border-color:transparent;color:var(--ec-color-hint-dark);--ec-color-icon: var(--ec-color-hint-dark)}button:hover:not(:disabled){background-color:var(--ec-background-color-hover)}button:active:not(:disabled){background-color:var(--ec-background-color-selected);font-weight:700}button:focus:not(:disabled){box-shadow:var(--ec-button-box-shadow-active, 0 0 0 2px var(--ec-border-color-focus))}button.is-selected{background-color:var(--ec-background-color-selected);font-weight:700}.day-view button{width:2rem;height:1.75rem}.month-view button{width:4.67rem;height:3.25rem}.quarter-view button{width:7rem;height:6.75rem}.year-view button{width:3.5rem;height:3.25rem}.is-selected:has(+ .is-selected:not(:disabled)){border-top-right-radius:0;border-bottom-right-radius:0}.is-selected:not(:disabled)+.is-selected{border-top-left-radius:0;border-bottom-left-radius:0}\n"] }]
228
- }], propDecorators: { id: [{
229
- type: HostBinding,
230
- args: ['attr.id']
231
- }, {
232
- type: Input
233
- }], selection: [{
234
- type: Input
235
- }], selectionMode: [{
236
- type: Input
237
- }], minDate: [{
238
- type: Input
239
- }], maxDate: [{
240
- type: Input
241
- }], dateSelected: [{
242
- type: Output
243
- }], view: [{
244
- type: Input
245
- }], viewChange: [{
246
- type: Output
247
- }] } });
248
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL2NhbGVuZGFyL2NhbGVuZGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9jYWxlbmRhci9jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQy9JLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDL0IsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7OztBQVU3RCxNQUFNLE9BQU8saUJBQWlCO0lBTjlCO1FBU2tCLE9BQUUsR0FBVyxVQUFVLENBQUM7UUFFL0IsY0FBUyxHQUErQixJQUFJLENBQUM7UUFDN0Msa0JBQWEsR0FBNEIsS0FBSyxDQUFDO1FBRS9DLFlBQU8sR0FBUyxjQUFjLENBQUMsaUJBQWlCLENBQUM7UUFDakQsWUFBTyxHQUFTLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQztRQUVoRCxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFbEQsbURBQW1EO1FBQ25DLFNBQUksR0FBa0IsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLElBQUksRUFBRSxFQUFFLENBQUM7UUFDdkQsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFpQixDQUFDO1FBV2hFLDhEQUE4RDtRQUN2RCxrQkFBYSxHQUFzQixFQUFFLENBQUM7UUFFN0MscUVBQXFFO1FBQzlELGFBQVEs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R1MsSUFBSTtzQkFBbkIsS0FBSztnQkFDVyxVQUFVO3NCQUExQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgcmFuZ2UgfSBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcbmltcG9ydCB7IERhdGVUaW1lSGVscGVyIH0gZnJvbSAnLi4vLi4vY29yZS9kYXRlLXRpbWUtaGVscGVyJztcclxuaW1wb3J0IHsgRGF0ZUlucHV0IH0gZnJvbSAnLi4vZGF0ZS1pbnB1dC9kYXRlLWlucHV0LnR5cGVzJztcclxuaW1wb3J0IHsgQ2FsZW5kYXIgfSBmcm9tICcuL2NhbGVuZGFyLnR5cGVzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZWMtY2FsZW5kYXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY2FsZW5kYXIuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2FsZW5kYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCB7XHJcblxyXG4gIEBIb3N0QmluZGluZygnYXR0ci5pZCcpXHJcbiAgQElucHV0KCkgcHVibGljIGlkOiBzdHJpbmcgPSAnY2FsZW5kYXInO1xyXG5cclxuICBASW5wdXQoKSBzZWxlY3Rpb246IERhdGVJbnB1dC5TZWxlY3Rpb24gfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoKSBzZWxlY3Rpb25Nb2RlOiBEYXRlSW5wdXQuU2VsZWN0aW9uTW9kZSA9ICdkYXknO1xyXG5cclxuICBASW5wdXQoKSBtaW5EYXRlOiBEYXRlID0gRGF0ZVRpbWVIZWxwZXIubWluRGF0ZVBpY2tlckRhdGU7XHJcbiAgQElucHV0KCkgbWF4RGF0ZTogRGF0ZSA9IERhdGVUaW1lSGVscGVyLm1heERhdGVQaWNrZXJEYXRlO1xyXG5cclxuICBAT3V0cHV0KCkgZGF0ZVNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xyXG5cclxuICAvKiogRGV0ZXJtaW5lcyB0aGUgY3VycmVudCB2aWV3IG9mIHRoZSBjYWxlbmRhci4gKi9cclxuICBASW5wdXQoKSBwdWJsaWMgdmlldzogQ2FsZW5kYXIuVmlldyA9IHsgbW9kZTogJ2RheScsIGRhdGU6IG5ldyBEYXRlKCkgfTtcclxuICBAT3V0cHV0KCkgcHVibGljIHZpZXdDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPENhbGVuZGFyLlZpZXc+KCk7XHJcblxyXG4gIC8qKiBNb250aCBvZiB0aGUgYWN0aXZlIGRhdGUgZGlzcGxheWVkIGluIHRoZSBoZWFkZXIgYnV0dG9ucy4gKi9cclxuICBwdWJsaWMgbW9udGg/OiBzdHJpbmc7XHJcblxyXG4gIC8qKiBZZWFyIG9mIHRoZSBhY3RpdmUgZGF0ZSBkaXNwbGF5ZWQgaW4gdGhlIGhlYWRlciBidXR0b25zLiAqL1xyXG4gIHB1YmxpYyB5ZWFyPzogc3RyaW5nO1xyXG5cclxuICAvKiogUmFuZ2Ugb2YgeWVhcnMgdG8gZGlzcGxheSBpbiB0aGUgeWVhciB2aWV3LiAqL1xyXG4gIHB1YmxpYyB5ZWFyUmFuZ2U/OiBzdHJpbmc7XHJcblxyXG4gIC8qKiBBcnJheSBvZiBjYWxlbmRhciBpdGVtIHJvd3MgdG8gZGlzcGxheSBpbiB0aGUgY2FsZW5kYXIuICovXHJcbiAgcHVibGljIGNhbGVuZGFySXRlbXM6IENhbGVuZGFyLkl0ZW1bXVtdID0gW107XHJcblxyXG4gIC8qKiBXZWVrZGF5IGxhYmVscyB0byBzaG93IGF0IHRoZSB0b3Agb2YgdGhlIGNhbGVuZGFyIGluIGRheSB2aWV3LiAqL1xyXG4gIHB1YmxpYyB3ZWVrRGF5cyA9IG1vbWVudC53ZWVrZGF5c1Nob3J0KCkubWFwKGQgPT4gZC5zbGljZSgwLCAxKSk7XHJcblxyXG4gIHB1YmxpYyBkaXNhYmxlUHJldmlvdXNCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgZGlzYWJsZU5leHRCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy8gVHJhY2tieSBmdW5jdGlvbnMgZm9yIG5nRm9yIGxvb3BzLiBUaGVzZSByZWR1Y2UgdGhlIG51bWJlciBvZiBET00gZWxlbWVudHMgdGhhdCBuZWVkIHRvIGJlIHVwZGF0ZWQgd2hlbiB0aGUgY2FsZW5kYXIgaXMgcmUtZHJhd24uXHJcbiAgLy8gV2l0aG91dCB0aGVzZSB0aGVyZSBhcmUgc29tZSBjaGFuZ2UtZGV0ZWN0aW9uIGlzc3VlcyBvbiB0aGUgZmlyc3QtdGltZSByZW5kZXJpbmcgb2YgdGhlIGNhbGVuZGFyLlxyXG4gIHB1YmxpYyB0cmFja0J5RGF0ZVJvdyA9IChpbmRleDogbnVtYmVyLCByb3c6IENhbGVuZGFyLkl0ZW1bXSkgPT4gYCR7cm93WzBdLmRhdGUudG9JU09TdHJpbmcoKX0tJHtyb3dbcm93Lmxlbmd0aCAtIDFdLmRhdGUudG9JU09TdHJpbmcoKX1gO1xyXG4gIHB1YmxpYyB0cmFja0J5RGF0ZSA9IChpbmRleDogbnVtYmVyLCBpdGVtOiBDYWxlbmRhci5JdGVtKSA9PiBpdGVtLmRhdGUudG9JU09TdHJpbmcoKTtcclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXMudmlldykge1xyXG4gICAgICB0aGlzLmRyYXdDYWxlbmRhcih0aGlzLnZpZXcpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjaGFuZ2VzLm1pbkRhdGUgfHwgY2hhbmdlcy5tYXhEYXRlKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlTmV4dFByZXZpb3VzU3RhdGVzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5jYWxlbmRhckl0ZW1zLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmRyYXdDYWxlbmRhcih0aGlzLnZpZXcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uTmV4dENsaWNrKCk6IHZvaWQge1xyXG4gICAgLy8gSWYgd2UncmUgaW4gZGF5IHZpZXcsIHdlJ3JlIGluY3JlbWVudGluZyBieSBtb250aFxyXG4gICAgLy8gSW4gbW9udGgsIHF1YXJ0ZXIsIGFuZCB5ZWFyIHZpZXdzIHdlJ3JlIGluY3JlbWVudGluZyBieSB5ZWFyXFxcclxuICAgIGNvbnN0IHVuaXQgPSB0aGlzLnZpZXcubW9kZSA9PT0gJ2RheScgPyAnbW9udGgnIDogJ3llYXInO1xyXG4gICAgLy8gSW4geWVhciB2aWV3LCB3ZSdyZSBtb3ZpbmcgYnkgMTYgeWVhcnMgYXQgYSB0aW1lLiBPdGhlcndpc2Ugd2UncmUganVzdCBtb3ZpbmcgYnkgMSBtb250aC95ZWFyLlxyXG4gICAgY29uc3QgY291bnQgPSB0aGlzLnZpZXcubW9kZSA9PT0gJ3llYXInID8gMTYgOiAxO1xyXG4gICAgY29uc3QgZ29Ub0RhdGUgPSBtb21lbnQodGhpcy52aWV3LmRhdGUpLmFkZChjb3VudCwgdW5pdCkudG9EYXRlKCk7XHJcbiAgICB0aGlzLmRyYXdDYWxlbmRhcih7IG1vZGU6IHRoaXMudmlldy5tb2RlLCBkYXRlOiBnb1RvRGF0ZSB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvblByZXZpb3VzQ2xpY2soKTogdm9pZCB7XHJcbiAgICAvLyBJZiB3ZSdyZSBpbiBkYXkgdmlldywgd2UncmUgaW5jcmVtZW50aW5nIGJ5IG1vbnRoXHJcbiAgICAvLyBJbiBtb250aCwgcXVhcnRlciwgYW5kIHllYXIgdmlld3Mgd2UncmUgaW5jcmVtZW50aW5nIGJ5IHllYXJcclxuICAgIGNvbnN0IHVuaXQgPSB0aGlzLnZpZXcubW9kZSA9PT0gJ2RheScgPyAnbW9udGgnIDogJ3llYXInO1xyXG4gICAgLy8gSW4geWVhciB2aWV3LCB3ZSdyZSBtb3ZpbmcgYnkgMTYgeWVhcnMgYXQgYSB0aW1lLiBPdGhlcndpc2Ugd2UncmUganVzdCBtb3ZpbmcgYnkgMSBtb250aC95ZWFyLlxyXG4gICAgY29uc3QgY291bnQgPSB0aGlzLnZpZXcubW9kZSA9PT0gJ3llYXInID8gMTYgOiAxO1xyXG4gICAgY29uc3QgZ29Ub0RhdGUgPSBtb21lbnQodGhpcy52aWV3LmRhdGUpLnN1YnRyYWN0KGNvdW50LCB1bml0KS50b0RhdGUoKTtcclxuICAgIHRoaXMuZHJhd0NhbGVuZGFyKHsgbW9kZTogdGhpcy52aWV3Lm1vZGUsIGRhdGU6IGdvVG9EYXRlIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqIFN3aXRjaGVzIHRoZSBjYWxlbmRhciB0byBtb250aCB2aWV3LiAqL1xyXG4gIHB1YmxpYyBvbk1vbnRoQ2xpY2soKTogdm9pZCB7XHJcbiAgICB0aGlzLmRyYXdDYWxlbmRhcih7IG1vZGU6ICdtb250aCcsIGRhdGU6IHRoaXMudmlldy5kYXRlIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqIFN3aXRjaGVzIHRoZSBjYWxlbmRhciB0byB5ZWFyIHZpZXcuICovXHJcbiAgcHVibGljIG9uWWVhckNsaWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kcmF3Q2FsZW5kYXIoeyBtb2RlOiAneWVhcicsIGRhdGU6IHRoaXMudmlldy5kYXRlIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uSXRlbVNlbGVjdGVkKGl0ZW06IENhbGVuZGFyLkl0ZW0pOiB2b2lkIHtcclxuICAgIHN3aXRjaCh0aGlzLnZpZXcubW9kZSkge1xyXG4gICAgICBjYXNlICdkYXknOlxyXG4gICAgICAgIHRoaXMub25EYXlTZWxlY3RlZChpdGVtKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnbW9udGgnOlxyXG4gICAgICAgIHRoaXMub25Nb250aFNlbGVjdGVkKGl0ZW0pO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdxdWFydGVyJzpcclxuICAgICAgICB0aGlzLm9uUXVhcnRlclNlbGVjdGVkKGl0ZW0pO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICd5ZWFyJzpcclxuICAgICAgICB0aGlzLm9uWWVhclNlbGVjdGVkKGl0ZW0pO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvblllYXJTZWxlY3RlZChpdGVtOiBDYWxlbmRhci5JdGVtKTogdm9pZCB7XHJcbiAgICAvLyBJZiBpbiB5ZWFyIHNlbGVjdGlvbiBtb2RlLCBlbWl0IHRoZSBjYWxlbmRhciBpdGVtIHNvIHRoZSBkYXRlIHBpY2tlciBjYW4gdXBkYXRlIHRoZSBzZWxlY3Rpb24uXHJcbiAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09PSAneWVhcicpIHtcclxuICAgICAgdGhpcy5kYXRlU2VsZWN0ZWQuZW1pdChpdGVtLmRhdGUpO1xyXG4gICAgLy8gSWYgd2UncmUgaW4gcXVhcnRlciBzZWxlY3Rpb24gbW9kZSwgZHJhdyB0aGUgcXVhcnRlciB2aWV3LlxyXG4gICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICdxdWFydGVyJykge1xyXG4gICAgICB0aGlzLmRyYXdDYWxlbmRhcih7IG1vZGU6ICdxdWFydGVyJywgZGF0ZTogaXRlbS5kYXRlIH0pO1xyXG4gICAgLy8gQWxsIG90aGVyIHNlbGVjdGlvbiBtb2RlcyBzaG91bGQgem9vbSBpbiB0byB0aGUgbW9udGggdmlldyB3aGVuIGEgeWVhciBpcyBzZWxlY3RlZC5cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZHJhd0NhbGVuZGFyKHsgbW9kZTogJ21vbnRoJywgZGF0ZTogaXRlbS5kYXRlIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvblF1YXJ0ZXJTZWxlY3RlZChpdGVtOiBDYWxlbmRhci5JdGVtKTogdm9pZCB7XHJcbiAgICAvLyBRdWFydGVyIHZpZXcgaXMgb25seSBhY2Nlc3NpYmxlIHdoZW4gaW4gcXVhcnRlciBzZWxlY3Rpb24gbW9kZSxcclxuICAgIC8vIHNvIHRoZXJlJ3Mgbm8gb3RoZXIgdmlld3MgdG8gZHJhdyBmcm9tIGhlcmUuIEp1c3QgZW1pdCB0aGUgc2VsZWN0ZWQgaXRlbS5cclxuICAgIHRoaXMuZGF0ZVNlbGVjdGVkLmVtaXQoaXRlbS5kYXRlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25Nb250aFNlbGVjdGVkKGl0ZW06IENhbGVuZGFyLkl0ZW0pOiB2b2lkIHtcclxuICAgIC8vIFdoZW4gaW4gbW9udGggc2VsZWN0aW9uIG1vZGUsIGVtaXQgdGhlIHNlbGVjdGVkIG1vbnRoIGl0ZW0gYW5kIGRvbid0IGNoYW5nZSB0aGUgdmlldy5cclxuICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICdtb250aCcpIHtcclxuICAgICAgdGhpcy5kYXRlU2VsZWN0ZWQuZW1pdChpdGVtLmRhdGUpO1xyXG4gICAgLy8gTW9udGggdmlldyBpcyBvbmx5IGFjY2Vzc2libGUgZnJvbSBkYXksIGxhc3Q3ZGF5cywgbGFzdDI4ZGF5cywgbW9udGgsIGFuZCByYW5nZSBzZWxlY3Rpb24gbW9kZXMuXHJcbiAgICAvLyBJZiB3ZSdyZSBub3QgaW4gbW9udGggc2VsZWN0aW9uIG1vZGUsIHdlIG5lZWQgdG8gem9vbSBpbiB0byB0aGUgZGF5IHZpZXcuXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRyYXdDYWxlbmRhcih7IG1vZGU6ICdkYXknLCBkYXRlOiBpdGVtLmRhdGUgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uRGF5U2VsZWN0ZWQoaXRlbTogQ2FsZW5kYXIuSXRlbSk6IHZvaWQge1xyXG4gICAgLy8gTm8gZnVydGhlciB2aWV3cyBvdGhlciB0aGFuIGRheSBtb2RlLiBKdXN0IGVtaXQgdGhlIHNlbGVjdGVkIGl0ZW0uXHJcbiAgICB0aGlzLmRhdGVTZWxlY3RlZC5lbWl0KGl0ZW0uZGF0ZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRyYXdDYWxlbmRhcih2aWV3OiBDYWxlbmRhci5WaWV3KTogdm9pZCB7XHJcbiAgICAvLyBJZiB0aGUgdmlldyBoYXMgY2hhbmdlZCwgZW1pdCB0aGUgbmV3IHZpZXcuXHJcbiAgICBpZiAodmlldy5kYXRlICE9PSB0aGlzLnZpZXcuZGF0ZSB8fCB2aWV3Lm1vZGUgIT09IHRoaXMudmlldy5tb2RlKSB7XHJcbiAgICAgIHRoaXMudmlldyA9IHZpZXc7XHJcbiAgICAgIHRoaXMudmlld0NoYW5nZS5lbWl0KHZpZXcpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICB0aGlzLm1vbnRoID0gbW9tZW50KHRoaXMudmlldy5kYXRlKS5mb3JtYXQoJ01NTScpO1xyXG4gICAgdGhpcy55ZWFyID0gbW9tZW50KHRoaXMudmlldy5kYXRlKS5mb3JtYXQoJ1lZWVknKTtcclxuICAgIHRoaXMuY2FsZW5kYXJJdGVtcyA9IHRoaXMuZ2V0Q2FsZW5kYXJJdGVtcyh0aGlzLnZpZXcpO1xyXG5cclxuICAgIGNvbnN0IHN0YXJ0WWVhciA9IHRoaXMuY2FsZW5kYXJJdGVtc1swXVswXS5kYXRlIDwgdGhpcy5taW5EYXRlID8gdGhpcy5taW5EYXRlIDogdGhpcy5jYWxlbmRhckl0ZW1zWzBdWzBdLmRhdGU7XHJcbiAgICBjb25zdCBsYXN0SXRlbSA9IHRoaXMuZ2V0TGFzdEl0ZW0oKTtcclxuICAgIGNvbnN0IGVuZFllYXIgPSBsYXN0SXRlbS5kYXRlID4gdGhpcy5tYXhEYXRlID8gdGhpcy5tYXhEYXRlIDogbGFzdEl0ZW0uZGF0ZTtcclxuICAgIHRoaXMueWVhclJhbmdlID0gYCR7bW9tZW50KHN0YXJ0WWVhcikuZm9ybWF0KCdZWVlZJyl9Jm5kYXNoOyR7bW9tZW50KGVuZFllYXIpLmZvcm1hdCgnWVlZWScpfWA7XHJcblxyXG4gICAgdGhpcy51cGRhdGVOZXh0UHJldmlvdXNTdGF0ZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Q2FsZW5kYXJJdGVtcyh2aWV3OiBDYWxlbmRhci5WaWV3KTogQ2FsZW5kYXIuSXRlbVtdW10ge1xyXG4gICAgc3dpdGNoICh2aWV3Lm1vZGUpIHtcclxuICAgICAgY2FzZSAnZGF5JzogcmV0dXJuIHRoaXMuZ2V0RGF5Vmlld0l0ZW1zKHZpZXcuZGF0ZSk7XHJcbiAgICAgIGNhc2UgJ21vbnRoJzogcmV0dXJuIHRoaXMuZ2V0TW9udGhWaWV3SXRlbXModmlldy5kYXRlKTtcclxuICAgICAgY2FzZSAncXVhcnRlcic6IHJldHVybiB0aGlzLmdldFF1YXJ0ZXJWaWV3SXRlbXModmlldy5kYXRlKTtcclxuICAgICAgY2FzZSAneWVhcic6IHJldHVybiB0aGlzLmdldFllYXJWaWV3SXRlbXModmlldy5kYXRlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RGF5Vmlld0l0ZW1zKGFjdGl2ZURhdGU6IERhdGUpOiBDYWxlbmRhci5JdGVtW11bXSB7XHJcbiAgICAvLyA2IHJvd3Mgb2YgNyBkYXlzID0gNDIgZGF5c1xyXG4gICAgcmV0dXJuIHJhbmdlKDAsIDYpLm1hcChyID0+IHtcclxuICAgICAgcmV0dXJuIHJhbmdlKDAsIDcpLm1hcChkID0+IHtcclxuICAgICAgICAvLyBVc2UgdGhlIHN0YXJ0IG9mIHRoZSB3ZWVrIG9mIHRoZSBmaXJzdCBkYXkgb2YgdGhlIG1vbnRoLlxyXG4gICAgICAgIC8vIFRoaXMgcGFkcyBvdXQgdGhlIGZpcnN0IHdlZWsgd2l0aCBhbnkgZGF5cyBmcm9tIHRoZSBwcmV2aW91cyBtb250aC5cclxuICAgICAgICBjb25zdCBkYXRlID0gbW9tZW50KGFjdGl2ZURhdGUpLnN0YXJ0T2YoJ21vbnRoJykuc3RhcnRPZignd2VlaycpLmFkZChyICogNyArIGQsICdkYXknKTtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgZGF0ZTogZGF0ZS50b0RhdGUoKSxcclxuICAgICAgICAgIGxhYmVsOiBkYXRlLmZvcm1hdCgnRCcpXHJcbiAgICAgICAgfTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0TW9udGhWaWV3SXRlbXMoYWN0aXZlRGF0ZTogRGF0ZSk6IENhbGVuZGFyLkl0ZW1bXVtdIHtcclxuICAgIC8vIDQgcm93cyBvZiAzIG1vbnRocyA9IDEyIG1vbnRoc1xyXG4gICAgcmV0dXJuIHJhbmdlKDAsIDQpLm1hcChyID0+IHtcclxuICAgICAgcmV0dXJuIHJhbmdlKDAsIDMpLm1hcChtID0+IHtcclxuICAgICAgICBjb25zdCBkYXRlID0gbW9tZW50KGFjdGl2ZURhdGUpLnN0YXJ0T2YoJ3llYXInKS5hZGQociAqIDMgKyBtLCAnbW9udGgnKTtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgZGF0ZTogZGF0ZS50b0RhdGUoKSxcclxuICAgICAgICAgIGxhYmVsOiBkYXRlLmZvcm1hdCgnTU1NJylcclxuICAgICAgICB9O1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRRdWFydGVyVmlld0l0ZW1zKGFjdGl2ZURhdGU6IERhdGUpOiBDYWxlbmRhci5JdGVtW11bXSB7XHJcbiAgICAvLyAyIHJvd3Mgb2YgMiBxdWFydGVycyA9IDQgcXVhcnRlcnNcclxuICAgIHJldHVybiByYW5nZSgwLCAyKS5tYXAociA9PiB7XHJcbiAgICAgIHJldHVybiByYW5nZSgwLCAyKS5tYXAocSA9PiB7XHJcbiAgICAgICAgY29uc3QgZGF0ZSA9IG1vbWVudChhY3RpdmVEYXRlKS5zdGFydE9mKCd5ZWFyJykuYWRkKHIgKiAyICsgcSwgJ3F1YXJ0ZXInKTtcclxuICAgICAgICBjb25zdCBlbmREYXRlID0gbW9tZW50KGRhdGUpLmVuZE9mKCdxdWFydGVyJyk7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGRhdGU6IGRhdGUudG9EYXRlKCksXHJcbiAgICAgICAgICBsYWJlbDogYCR7ZGF0ZS5mb3JtYXQoJ01NTScpfSZuZGFzaDske2VuZERhdGUuZm9ybWF0KCdNTU0nKX1gXHJcbiAgICAgICAgfTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0WWVhclZpZXdJdGVtcyhhY3RpdmVEYXRlOiBEYXRlKTogQ2FsZW5kYXIuSXRlbVtdW10ge1xyXG4gICAgLy8gNCByb3dzIG9mIDQgeWVhcnMgPSAxNiB5ZWFyc1xyXG4gICAgcmV0dXJuIHJhbmdlKDAsIDQpLm1hcChyID0+IHtcclxuICAgICAgcmV0dXJuIHJhbmdlKDAsIDQpLm1hcCh5ID0+IHtcclxuICAgICAgICAvLyBTdWJ0cmFjdGluZyA4IHllYXJzIHRvIHB1dCB0aGUgY3VycmVudCBhY3RpdmUgeWVhciBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSAzcmQgcm93LlxyXG4gICAgICAgIGNvbnN0IGRhdGUgPSBtb21lbnQoYWN0aXZlRGF0ZSkuc3RhcnRPZigneWVhcicpLnN1YnRyYWN0KDgsICd5ZWFycycpLmFkZChyICogNCArIHksICd5ZWFyJyk7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGRhdGU6IGRhdGUudG9EYXRlKCksXHJcbiAgICAgICAgICBsYWJlbDogZGF0ZS5mb3JtYXQoJ1lZWVknKVxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZU5leHRQcmV2aW91c1N0YXRlcygpOiB2b2lkIHtcclxuICAgIC8vIFdlIGNoYW5nZSB0aGUgZ3JhbnVsYXJpdHkgb2YgdGhlIG1pbiBhbmQgbWF4IGRhdGUgY2hlY2tzIGJhc2VkIG9uIHRoZSBjdXJyZW50IHZpZXcgbW9kZS5cclxuICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gZGlzYWJsZSB0aGUgbmV4dC9wcmV2aW91cyBidXR0b25zIGlmIHRoZSBtaW4gb3IgbWF4IGRhdGUgaXMgd2l0aGluIHRoZVxyXG4gICAgLy8gbmV4dCBvciBwcmV2aW91cyB2aWV3XHJcbiAgICBjb25zdCB1bml0ID0gdGhpcy52aWV3Lm1vZGUgPT09ICdkYXknID8gJ21vbnRoJyA6ICd5ZWFyJztcclxuXHJcbiAgICAvLyBXaGVuIGluIHllYXIgdmlldywgd2UgbmVlZCB0byBzdWJ0cmFjdCA5IHllYXJzIHRvIGRldGVybWluZSBpZiB3ZSdyZSBwYXN0IHRoZSBtaW4gZGF0ZS5cclxuICAgIC8vIFRoZSB5ZWFyIHZpZXcgaXMgMTYgeWVhcnMgbG9uZywgYW5kIHRoZSBjdXJyZW50IGRhdGUgaXMgdGhlIDl0aCB5ZWFyIGluIHRoZSB2aWV3LlxyXG4gICAgY29uc3Qgc3ViQ291bnQgPSB0aGlzLnZpZXcubW9kZSA9PT0gJ3llYXInID8gOSA6IDE7XHJcbiAgICBpZiAobW9tZW50KHRoaXMudmlldy5kYXRlKS5zdWJ0cmFjdChzdWJDb3VudCwgdW5pdCkuaXNCZWZvcmUodGhpcy5taW5EYXRlLCB1bml0KSkge1xyXG4gICAgICB0aGlzLmRpc2FibGVQcmV2aW91c0J1dHRvbiA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRpc2FibGVQcmV2aW91c0J1dHRvbiA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFdoZW4gaW4geWVhciB2aWV3LCB3ZSBuZWVkIHRvIGFkZCA4IHllYXJzIHRvIGRldGVybWluZSBpZiB3ZSdyZSBwYXN0IHRoZSBtYXggZGF0ZS5cclxuICAgIC8vIFRoZSB5ZWFyIHZpZXcgaXMgMTYgeWVhcnMgbG9uZywgYW5kIHRoZSBjdXJyZW50IGRhdGUgaXMgdGhlIDl0aCB5ZWFyIGluIHRoZSB2aWV3LlxyXG4gICAgY29uc3QgYWRkQ291bnQgPSB0aGlzLnZpZXcubW9kZSA9PT0gJ3llYXInID8gOCA6IDE7XHJcbiAgICBpZiAobW9tZW50KHRoaXMudmlldy5kYXRlKS5hZGQoYWRkQ291bnQsIHVuaXQpLmlzQWZ0ZXIodGhpcy5tYXhEYXRlLCB1bml0KSkge1xyXG4gICAgICB0aGlzLmRpc2FibGVOZXh0QnV0dG9uID0gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZGlzYWJsZU5leHRCdXR0b24gPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0TGFzdEl0ZW0oKTogQ2FsZW5kYXIuSXRlbSB7XHJcbiAgICBjb25zdCBsYXN0Um93ID0gdGhpcy5jYWxlbmRhckl0ZW1zW3RoaXMuY2FsZW5kYXJJdGVtcy5sZW5ndGggLSAxXTtcclxuICAgIHJldHVybiBsYXN0Um93W2xhc3RSb3cubGVuZ3RoIC0gMV07XHJcbiAgfVxyXG59XHJcbiIsIjxoZWFkZXIgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG10LTEgbWItMiBweC0xXCI+XHJcbiAgPGJ1dHRvbiBpZD1cInt7aWR9fV9wcmV2X2J1dHRvblwiXHJcbiAgICAgICAgICBjbGFzcz1cIm1yLWF1dG9cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9uUHJldmlvdXNDbGljaygpXCJcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlUHJldmlvdXNCdXR0b25cIj5cclxuICAgIDxpIGNsYXNzPVwiZWMtaWNvbiBpY29uLWFuZ2xlLWRvd24gcm90YXRlLTkwXCI+PC9pPlxyXG4gIDwvYnV0dG9uPlxyXG5cclxuICA8YnV0dG9uICpuZ0lmPVwidmlldy5tb2RlID09PSAnZGF5J1wiXHJcbiAgICAgICAgICBpZD1cInt7aWR9fV9tb250aF9idXR0b25cIlxyXG4gICAgICAgICAgY2xhc3M9XCJ0ZXh0LWJvZHktMSBmb250LXdlaWdodC1ib2xkXCJcclxuICAgICAgICAgIChjbGljayk9XCJvbk1vbnRoQ2xpY2soKVwiPlxyXG4gICAge3ttb250aH19XHJcbiAgPC9idXR0b24+XHJcblxyXG4gIDxidXR0b24gKm5nSWY9XCJ2aWV3Lm1vZGUgIT09ICd5ZWFyJ1wiXHJcbiAgICAgICAgICBpZD1cInt7aWR9fV95ZWFyX2J1dHRvblwiXHJcbiAgICAgICAgICBjbGFzcz1cInRleHQtYm9keS0xIGZvbnQtd2VpZ2h0LWJvbGRcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9uWWVhckNsaWNrKClcIj5cclxuICAgIHt7eWVhcn19XHJcbiAgPC9idXR0b24+XHJcblxyXG4gIDxkaXYgaWQ9XCJ7e2lkfX1feWVhcl9yYW5nZVwiXHJcbiAgICAgICAqbmdJZj1cInZpZXcubW9kZSA9PT0gJ3llYXInXCJcclxuICAgICAgIGNsYXNzPVwidGV4dC1ib2R5LTEgZm9udC13ZWlnaHQtYm9sZFwiXHJcbiAgICAgICBbaW5uZXJIVE1MXT1cInllYXJSYW5nZVwiPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8YnV0dG9uIGlkPVwie3tpZH19X25leHRfYnV0dG9uXCJcclxuICAgICAgICAgIGNsYXNzPVwibWwtYXV0b1wiXHJcbiAgICAgICAgICAoY2xpY2spPVwib25OZXh0Q2xpY2soKVwiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZU5leHRCdXR0b25cIj5cclxuICAgIDxpIGNsYXNzPVwiZWMtaWNvbiBpY29uLWFuZ2xlLWRvd24gcm90YXRlLTI3MFwiPjwvaT5cclxuICA8L2J1dHRvbj5cclxuPC9oZWFkZXI+XHJcblxyXG48ZGl2ICpuZ0lmPVwidmlldy5tb2RlID09PSAnZGF5J1wiXHJcbiAgICAgY2xhc3M9XCJtYi0xIHB4LTIgZC1mbGV4XCI+XHJcbiAgPGgzICpuZ0Zvcj1cImxldCBkYXkgb2Ygd2Vla0RheXNcIlxyXG4gICAgICBjbGFzcz1cInRleHQtaGVhZGluZy0zIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgIHN0eWxlPVwid2lkdGg6IDJyZW07IGhlaWdodDogMS43NXJlbTtcIj57e2RheX19PC9oMz5cclxuPC9kaXY+XHJcblxyXG48ZGl2ICpuZ0Zvcj1cImxldCByb3cgb2YgY2FsZW5kYXJJdGVtczsgbGFzdCBhcyBpc0xhc3Q7IHRyYWNrQnk6IHRyYWNrQnlEYXRlUm93XCJcclxuICAgICBjbGFzcz1cInB4LTIgZC1mbGV4IHt7dmlldy5tb2RlfX0tdmlld1wiXHJcbiAgICAgW2NsYXNzLm1iLTFdPVwiIWlzTGFzdFwiXHJcbiAgICAgW2NsYXNzLm1iLTJdPVwiaXNMYXN0XCI+XHJcbiAgPGJ1dHRvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiByb3c7IHRyYWNrQnk6IHRyYWNrQnlEYXRlXCJcclxuICAgICAgICAgIGlkPVwie3tpZH19X2l0ZW1fe3tpdGVtLmRhdGUgfCBkYXRlOidNTV9kZF95eXl5J319XCJcclxuICAgICAgICAgIGVjLWNhbGVuZGFyLWl0ZW1cclxuICAgICAgICAgIFtpdGVtXT1cIml0ZW1cIlxyXG4gICAgICAgICAgW3NlbGVjdGlvbl09XCJzZWxlY3Rpb25cIlxyXG4gICAgICAgICAgW3ZpZXddPVwidmlld1wiXHJcbiAgICAgICAgICAoY2xpY2spPVwib25JdGVtU2VsZWN0ZWQoaXRlbSlcIlxyXG4gICAgICAgICAgW2lubmVySFRNTF09XCJpdGVtLmxhYmVsXCJcclxuICAgICAgICAgIFttaW5EYXRlXT1cIm1pbkRhdGVcIlxyXG4gICAgICAgICAgW21heERhdGVdPVwibWF4RGF0ZVwiPlxyXG4gIDwvYnV0dG9uPlxyXG48L2Rpdj5cclxuIl19