@colijnit/sharedcomponents 1.0.64 → 1.0.66

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 (488) hide show
  1. package/3rdpartylicenses.txt +1200 -0
  2. package/README.md +24 -24
  3. package/bundles/colijnit-sharedcomponents.umd.js +10078 -9926
  4. package/bundles/colijnit-sharedcomponents.umd.js.map +1 -1
  5. package/colijnit-sharedcomponents.d.ts +92 -91
  6. package/colijnit-sharedcomponents.metadata.json +1 -1
  7. package/esm2015/colijnit-sharedcomponents.js +93 -92
  8. package/esm2015/lib/assets/dictionary/text.properties.js +11 -11
  9. package/esm2015/lib/businessobject/build-images-and-documentation-result.js +2 -2
  10. package/esm2015/lib/businessobject/co-document-right.bo.js +3 -3
  11. package/esm2015/lib/businessobject/drag-drop-container-element.js +2 -2
  12. package/esm2015/lib/businessobject/drag-drop-container.js +7 -7
  13. package/esm2015/lib/components/activity-list/activity-list.component.js +130 -130
  14. package/esm2015/lib/components/activity-list/activity-list.module.js +24 -24
  15. package/esm2015/lib/components/app-file-dropzone/app-file-dropzone.component.js +47 -47
  16. package/esm2015/lib/components/app-file-dropzone/app-file-dropzone.module.js +20 -20
  17. package/esm2015/lib/components/date-planning/component/agenda/agenda-base-view.component.js +61 -61
  18. package/esm2015/lib/components/date-planning/component/agenda/agenda-day-view.component.js +36 -36
  19. package/esm2015/lib/components/date-planning/component/agenda/agenda-event.component.js +56 -56
  20. package/esm2015/lib/components/date-planning/component/agenda/agenda-events.component.js +47 -47
  21. package/esm2015/lib/components/date-planning/component/agenda/agenda-half-hour-cell.component.js +68 -68
  22. package/esm2015/lib/components/date-planning/component/agenda/agenda-header.component.js +243 -243
  23. package/esm2015/lib/components/date-planning/component/agenda/agenda-hour-cell.component.js +36 -36
  24. package/esm2015/lib/components/date-planning/component/agenda/agenda-hour-view-labels.component.js +50 -50
  25. package/esm2015/lib/components/date-planning/component/agenda/agenda-hour-view.component.js +46 -46
  26. package/esm2015/lib/components/date-planning/component/agenda/agenda-month-view.component.js +61 -61
  27. package/esm2015/lib/components/date-planning/component/agenda/agenda-select-event.component.js +39 -39
  28. package/esm2015/lib/components/date-planning/component/agenda/agenda-view.component.js +35 -35
  29. package/esm2015/lib/components/date-planning/component/agenda/agenda-week-select-view.component.js +64 -64
  30. package/esm2015/lib/components/date-planning/component/agenda/agenda-week-view.component.js +48 -48
  31. package/esm2015/lib/components/date-planning/component/agenda/view-select.component.js +42 -42
  32. package/esm2015/lib/components/date-planning/component/calendar/calendar-all-months.component.js +34 -34
  33. package/esm2015/lib/components/date-planning/component/calendar/calendar-all-years.component.js +48 -48
  34. package/esm2015/lib/components/date-planning/component/calendar/calendar-header.component.js +107 -107
  35. package/esm2015/lib/components/date-planning/component/calendar/calendar-view.component.js +178 -178
  36. package/esm2015/lib/components/date-planning/component/calendar/calendar.component.js +34 -34
  37. package/esm2015/lib/components/date-planning/date-planning.component.js +113 -113
  38. package/esm2015/lib/components/date-planning/date-planning.module.js +63 -63
  39. package/esm2015/lib/components/docsign/component/signature/signature.component.js +75 -75
  40. package/esm2015/lib/components/docsign/component/signatures/signatures.component.js +44 -44
  41. package/esm2015/lib/components/docsign/docsign.component.js +242 -242
  42. package/esm2015/lib/components/docsign/docsign.module.js +23 -23
  43. package/esm2015/lib/components/file-upload/file-upload.component.js +189 -189
  44. package/esm2015/lib/components/file-upload/file-upload.module.js +25 -25
  45. package/esm2015/lib/components/file-upload-popup/file-upload-popup.component.js +397 -397
  46. package/esm2015/lib/components/file-upload-popup/file-upload-popup.module.js +30 -30
  47. package/esm2015/lib/components/files-upload/components/base-file-upload.component.js +469 -469
  48. package/esm2015/lib/components/files-upload/components/drag-drop-container.component.js +115 -115
  49. package/esm2015/lib/components/files-upload/files-upload.component.js +131 -131
  50. package/esm2015/lib/components/files-upload/files-upload.module.js +47 -47
  51. package/esm2015/lib/components/image-display/image-display.component.js +36 -36
  52. package/esm2015/lib/components/image-display/image-display.module.js +23 -23
  53. package/esm2015/lib/components/key-pad/key-pad.component.js +200 -200
  54. package/esm2015/lib/components/key-pad/key-pad.module.js +22 -22
  55. package/esm2015/lib/components/layout-switcher/layout-switcher.component.js +74 -74
  56. package/esm2015/lib/components/layout-switcher/layout-switcher.module.js +21 -21
  57. package/esm2015/lib/components/linear-gauge/co-linear-gauge.component.js +59 -59
  58. package/esm2015/lib/components/linear-gauge/co-linear-gauge.module.js +19 -19
  59. package/esm2015/lib/components/multi-property-toggler/multiple-property-toggler.component.js +89 -89
  60. package/esm2015/lib/components/multi-property-toggler/multiple-property-toggler.module.js +21 -21
  61. package/esm2015/lib/components/send-method-dialog/components/layout-selection/layout-selection.component.js +79 -79
  62. package/esm2015/lib/components/send-method-dialog/components/layout-selection/layout-selection.module.js +21 -21
  63. package/esm2015/lib/components/send-method-dialog/components/printer-selection/printer-selection.component.js +85 -85
  64. package/esm2015/lib/components/send-method-dialog/components/printer-selection/printer-selection.module.js +21 -21
  65. package/esm2015/lib/components/send-method-dialog/components/send-method-email/send-method-email.component.js +64 -64
  66. package/esm2015/lib/components/send-method-dialog/components/send-method-email/send-method-email.module.js +26 -26
  67. package/esm2015/lib/components/send-method-dialog/components/send-method-pdf/send-method-pdf.component.js +40 -40
  68. package/esm2015/lib/components/send-method-dialog/components/send-method-pdf/send-method-pdf.module.js +23 -23
  69. package/esm2015/lib/components/send-method-dialog/components/send-method-printer/send-method-printer.component.js +61 -61
  70. package/esm2015/lib/components/send-method-dialog/components/send-method-printer/send-method-printer.module.js +28 -28
  71. package/esm2015/lib/components/send-method-dialog/components/signature-button/signature-button.component.js +38 -38
  72. package/esm2015/lib/components/send-method-dialog/components/signature-button/signature-button.module.js +21 -21
  73. package/esm2015/lib/components/send-method-dialog/model/email-address-viewmodel.js +7 -7
  74. package/esm2015/lib/components/send-method-dialog/send-method-dialog.component.js +258 -258
  75. package/esm2015/lib/components/send-method-dialog/send-method-dialog.module.js +35 -35
  76. package/esm2015/lib/components/send-method-dialog/send-method-params.interface.js +2 -2
  77. package/esm2015/lib/components/send-method-dialog/service/send-method.service.js +59 -59
  78. package/esm2015/lib/components/simple-tags/simple-tags.component.js +229 -229
  79. package/esm2015/lib/components/simple-tags/simple-tags.module.js +26 -26
  80. package/esm2015/lib/components/statusbar/statusbar-popup.component.js +97 -97
  81. package/esm2015/lib/components/statusbar/statusbar.component.js +81 -81
  82. package/esm2015/lib/components/statusbar/statusbar.module.js +27 -27
  83. package/esm2015/lib/components/stock/components/allocation-stock-history/allocation-stock-history.component.js +47 -47
  84. package/esm2015/lib/components/stock/components/order-commission-stock-history/order-commission-stock-history.component.js +47 -47
  85. package/esm2015/lib/components/stock/components/order-stock-history/order-stock-history.component.js +47 -47
  86. package/esm2015/lib/components/stock/components/order-stock-tab/order-stock-tab.component.js +47 -47
  87. package/esm2015/lib/components/stock/components/order-supply-stock-history/order-supply-stock-history.component.js +47 -47
  88. package/esm2015/lib/components/stock/components/order-tab/order-tab.component.js +67 -67
  89. package/esm2015/lib/components/stock/components/stock-history/stock-history.component.js +53 -53
  90. package/esm2015/lib/components/stock/components/stock-location/components/stock-location-popup/stock-location-popup.component.js +210 -0
  91. package/esm2015/lib/components/stock/components/stock-location/stock-location.component.js +248 -251
  92. package/esm2015/lib/components/stock/components/stock-prognose/stock-prognose.component.js +52 -52
  93. package/esm2015/lib/components/stock/components/stock-tab/stock-tab.component.js +39 -39
  94. package/esm2015/lib/components/stock/localization/translation.js +74 -72
  95. package/esm2015/lib/components/stock/stock-history-tabs/stock-history-tabs.component.js +33 -33
  96. package/esm2015/lib/components/stock/stock-information/stock-information.component.js +48 -48
  97. package/esm2015/lib/components/stock/stock-information-grid/stock-information-grid.component.js +457 -457
  98. package/esm2015/lib/components/stock/stock-tabs/stock-tabs.component.js +251 -243
  99. package/esm2015/lib/components/stock/stock-transfer/co-drop-down-list-fields.interface.js +2 -2
  100. package/esm2015/lib/components/stock/stock-transfer/stock-change-amount.component.js +72 -72
  101. package/esm2015/lib/components/stock/stock-transfer/stock-transfer.component.js +160 -160
  102. package/esm2015/lib/components/stock/stock.component.js +237 -237
  103. package/esm2015/lib/components/stock/stock.module.js +82 -80
  104. package/esm2015/lib/components/stock-statusbar/stock-statusbar.component.js +23 -23
  105. package/esm2015/lib/components/stock-statusbar/stock-statusbar.module.js +19 -19
  106. package/esm2015/lib/components/tab-bar/tab-bar.component.js +90 -90
  107. package/esm2015/lib/components/tab-bar/tab-bar.module.js +21 -21
  108. package/esm2015/lib/components/tab-bar/tab.interface.js +2 -2
  109. package/esm2015/lib/components/tile-renderer/tile-render.component.js +80 -80
  110. package/esm2015/lib/components/tile-renderer/tile-render.module.js +26 -26
  111. package/esm2015/lib/decorator/input-boolean.decorator.js +34 -34
  112. package/esm2015/lib/enum/calendar-view.enum.js +9 -9
  113. package/esm2015/lib/enum/document-email-report.enum.js +18 -18
  114. package/esm2015/lib/enum/domain-multiple-name.enum.js +13 -13
  115. package/esm2015/lib/enum/file-type.js +14 -14
  116. package/esm2015/lib/enum/files-upload-config-objects.js +3 -3
  117. package/esm2015/lib/enum/gauge-color.enum.js +10 -10
  118. package/esm2015/lib/enum/icon.enum.js +49 -48
  119. package/esm2015/lib/enum/internal-param.enum.js +38 -38
  120. package/esm2015/lib/enum/keyboard-code.enum.js +32 -32
  121. package/esm2015/lib/enum/language-code.enum.js +8 -8
  122. package/esm2015/lib/enum/month.enum.js +17 -17
  123. package/esm2015/lib/enum/read-write-access-config-names.enum.js +2 -2
  124. package/esm2015/lib/enum/table-name.enum.js +86 -86
  125. package/esm2015/lib/enum/tag-category.enum.js +22 -22
  126. package/esm2015/lib/enum/tags-component-config-names.js +2 -2
  127. package/esm2015/lib/enum/thumb-three-way-state.js +19 -19
  128. package/esm2015/lib/enum/tile-size-type.js +7 -7
  129. package/esm2015/lib/enum/time-period.enum.js +11 -11
  130. package/esm2015/lib/event/co-drag-event.js +2 -2
  131. package/esm2015/lib/event/co-drop-event.js +2 -2
  132. package/esm2015/lib/interface/key-value-pair.js +2 -2
  133. package/esm2015/lib/interface/operation-callback-simple-function.js +4 -4
  134. package/esm2015/lib/localization/localization.module.js +19 -19
  135. package/esm2015/lib/localization/localize.pipe.js +26 -26
  136. package/esm2015/lib/localization/localize.service.js +30 -30
  137. package/esm2015/lib/localization/translation.js +3 -3
  138. package/esm2015/lib/model/agenda-event-per-day.model.js +6 -6
  139. package/esm2015/lib/model/agenda-event.model.js +8 -8
  140. package/esm2015/lib/model/agenda-null-objects.js +11 -11
  141. package/esm2015/lib/model/constant/all-months.js +17 -17
  142. package/esm2015/lib/model/date-range.js +5 -5
  143. package/esm2015/lib/model/day.model.js +7 -7
  144. package/esm2015/lib/model/icon-svg.js +48 -47
  145. package/esm2015/lib/model/month.model.js +11 -11
  146. package/esm2015/lib/model/send-method.js +8 -8
  147. package/esm2015/lib/model/settings.js +4 -4
  148. package/esm2015/lib/model/tag-tree-item.bo.js +16 -16
  149. package/esm2015/lib/model/time-window.bo.js +26 -26
  150. package/esm2015/lib/model/tree-object.js +15 -15
  151. package/esm2015/lib/model/week.model.js +6 -6
  152. package/esm2015/lib/model/weekday.model.js +10 -10
  153. package/esm2015/lib/pipe/array-number.pipe.js +15 -15
  154. package/esm2015/lib/pipe/file-type-image.pipe.js +51 -51
  155. package/esm2015/lib/pipe/master-pipes.js +9 -9
  156. package/esm2015/lib/pipe/ucfirst.pipe.js +16 -16
  157. package/esm2015/lib/service/dictionary.service.js +76 -76
  158. package/esm2015/lib/service/drag-drop.service.js +365 -365
  159. package/esm2015/lib/service/icon-cache.service.js +51 -51
  160. package/esm2015/lib/service/options.service.js +48 -48
  161. package/esm2015/lib/service/shared-connector.service.js +433 -433
  162. package/esm2015/lib/service/shared.service.js +60 -60
  163. package/esm2015/lib/service/stock.service.js +110 -110
  164. package/esm2015/lib/utils/array-utils.js +202 -202
  165. package/esm2015/lib/utils/calendar.utils.js +68 -68
  166. package/esm2015/lib/utils/check-precision-and-scale-result.js +2 -2
  167. package/esm2015/lib/utils/check-within-stepped-bounds-result.js +2 -2
  168. package/esm2015/lib/utils/co-document-shared-field-logic.js +50 -50
  169. package/esm2015/lib/utils/date-utils.js +264 -264
  170. package/esm2015/lib/utils/enum-utils.js +128 -128
  171. package/esm2015/lib/utils/function/not-nill.function.js +5 -5
  172. package/esm2015/lib/utils/is-nill.function.js +5 -5
  173. package/esm2015/lib/utils/map-utils.js +41 -41
  174. package/esm2015/lib/utils/number-utils.js +390 -390
  175. package/esm2015/lib/utils/object-utils.js +278 -278
  176. package/esm2015/lib/utils/ref-code-utils.js +49 -49
  177. package/esm2015/lib/utils/string-utils.js +93 -93
  178. package/esm2015/public-api.js +31 -31
  179. package/favicon.ico +0 -0
  180. package/fesm2015/colijnit-sharedcomponents.js +10622 -10408
  181. package/fesm2015/colijnit-sharedcomponents.js.map +1 -1
  182. package/index.html +12 -0
  183. package/lib/assets/dictionary/text.properties.d.ts +3 -3
  184. package/lib/businessobject/build-images-and-documentation-result.d.ts +5 -5
  185. package/lib/businessobject/co-document-right.bo.d.ts +6 -6
  186. package/lib/businessobject/drag-drop-container-element.d.ts +6 -6
  187. package/lib/businessobject/drag-drop-container.d.ts +6 -6
  188. package/lib/components/access/read-write-access.scss +25 -25
  189. package/lib/components/access/style/_layout.scss +23 -23
  190. package/lib/components/access/style/_material-definition.scss +12 -12
  191. package/lib/components/access/style/_theme.scss +4 -4
  192. package/lib/components/access/style/material.scss +4 -4
  193. package/lib/components/activity-list/activity-list.component.d.ts +33 -33
  194. package/lib/components/activity-list/activity-list.module.d.ts +2 -2
  195. package/lib/components/activity-list/style/_layout.scss +68 -68
  196. package/lib/components/activity-list/style/_theme.scss +4 -4
  197. package/lib/components/activity-list/style/material.scss +4 -4
  198. package/lib/components/app-file-dropzone/app-file-dropzone.component.d.ts +14 -14
  199. package/lib/components/app-file-dropzone/app-file-dropzone.module.d.ts +2 -2
  200. package/lib/components/app-file-dropzone/style/_layout.scss +61 -61
  201. package/lib/components/app-file-dropzone/style/_theme.scss +4 -4
  202. package/lib/components/app-file-dropzone/style/material.scss +4 -4
  203. package/lib/components/date-planning/component/agenda/agenda-base-view.component.d.ts +21 -21
  204. package/lib/components/date-planning/component/agenda/agenda-day-view.component.d.ts +7 -7
  205. package/lib/components/date-planning/component/agenda/agenda-event.component.d.ts +18 -18
  206. package/lib/components/date-planning/component/agenda/agenda-events.component.d.ts +13 -13
  207. package/lib/components/date-planning/component/agenda/agenda-half-hour-cell.component.d.ts +18 -18
  208. package/lib/components/date-planning/component/agenda/agenda-header.component.d.ts +48 -48
  209. package/lib/components/date-planning/component/agenda/agenda-hour-cell.component.d.ts +9 -9
  210. package/lib/components/date-planning/component/agenda/agenda-hour-view-labels.component.d.ts +8 -8
  211. package/lib/components/date-planning/component/agenda/agenda-hour-view.component.d.ts +7 -7
  212. package/lib/components/date-planning/component/agenda/agenda-month-view.component.d.ts +10 -10
  213. package/lib/components/date-planning/component/agenda/agenda-select-event.component.d.ts +12 -12
  214. package/lib/components/date-planning/component/agenda/agenda-view.component.d.ts +12 -12
  215. package/lib/components/date-planning/component/agenda/agenda-week-select-view.component.d.ts +10 -10
  216. package/lib/components/date-planning/component/agenda/agenda-week-view.component.d.ts +9 -9
  217. package/lib/components/date-planning/component/agenda/style/_layout.scss +443 -443
  218. package/lib/components/date-planning/component/agenda/style/_material-definition.scss +12 -12
  219. package/lib/components/date-planning/component/agenda/style/_theme.scss +7 -7
  220. package/lib/components/date-planning/component/agenda/style/material.scss +5 -5
  221. package/lib/components/date-planning/component/agenda/view-select.component.d.ts +11 -11
  222. package/lib/components/date-planning/component/calendar/calendar-all-months.component.d.ts +9 -9
  223. package/lib/components/date-planning/component/calendar/calendar-all-years.component.d.ts +9 -9
  224. package/lib/components/date-planning/component/calendar/calendar-header.component.d.ts +23 -23
  225. package/lib/components/date-planning/component/calendar/calendar-view.component.d.ts +31 -31
  226. package/lib/components/date-planning/component/calendar/calendar.component.d.ts +10 -10
  227. package/lib/components/date-planning/component/calendar/style/_layout.scss +167 -167
  228. package/lib/components/date-planning/component/calendar/style/_material-definition.scss +7 -7
  229. package/lib/components/date-planning/component/calendar/style/_theme.scss +7 -7
  230. package/lib/components/date-planning/component/calendar/style/material.scss +5 -5
  231. package/lib/components/date-planning/date-planning.component.d.ts +28 -28
  232. package/lib/components/date-planning/date-planning.module.d.ts +2 -2
  233. package/lib/components/date-planning/style/_layout.scss +45 -45
  234. package/lib/components/date-planning/style/_theme.scss +5 -5
  235. package/lib/components/date-planning/style/material.scss +7 -7
  236. package/lib/components/docsign/component/signature/signature.component.d.ts +16 -16
  237. package/lib/components/docsign/component/signature/style/_layout.scss +40 -40
  238. package/lib/components/docsign/component/signature/style/_material-definition.scss +11 -11
  239. package/lib/components/docsign/component/signature/style/_theme.scss +13 -13
  240. package/lib/components/docsign/component/signature/style/material.scss +4 -4
  241. package/lib/components/docsign/component/signatures/signatures.component.d.ts +12 -12
  242. package/lib/components/docsign/component/signatures/style/_layout.scss +13 -13
  243. package/lib/components/docsign/component/signatures/style/_material-definition.scss +1 -1
  244. package/lib/components/docsign/component/signatures/style/_theme.scss +4 -4
  245. package/lib/components/docsign/component/signatures/style/material.scss +5 -5
  246. package/lib/components/docsign/docsign.component.d.ts +94 -94
  247. package/lib/components/docsign/docsign.module.d.ts +2 -2
  248. package/lib/components/docsign/style/_layout.scss +40 -40
  249. package/lib/components/docsign/style/_material-definition.scss +12 -12
  250. package/lib/components/docsign/style/_theme.scss +12 -12
  251. package/lib/components/docsign/style/material.scss +15 -15
  252. package/lib/components/file-upload/file-upload.component.d.ts +42 -42
  253. package/lib/components/file-upload/file-upload.module.d.ts +2 -2
  254. package/lib/components/file-upload/style/_layout.scss +59 -59
  255. package/lib/components/file-upload/style/_material-definition.scss +2 -2
  256. package/lib/components/file-upload/style/_theme.scss +4 -4
  257. package/lib/components/file-upload/style/material.scss +4 -4
  258. package/lib/components/file-upload-popup/file-upload-popup.component.d.ts +75 -75
  259. package/lib/components/file-upload-popup/file-upload-popup.module.d.ts +2 -2
  260. package/lib/components/file-upload-popup/style/_layout.scss +48 -48
  261. package/lib/components/file-upload-popup/style/_material-definition.scss +2 -2
  262. package/lib/components/file-upload-popup/style/_theme.scss +5 -5
  263. package/lib/components/file-upload-popup/style/material.scss +4 -4
  264. package/lib/components/files-upload/components/base-file-upload.component.d.ts +98 -98
  265. package/lib/components/files-upload/components/drag-drop-container.component.d.ts +34 -34
  266. package/lib/components/files-upload/files-upload.component.d.ts +32 -32
  267. package/lib/components/files-upload/files-upload.module.d.ts +2 -2
  268. package/lib/components/files-upload/style/_layout.scss +49 -49
  269. package/lib/components/files-upload/style/_theme.scss +5 -5
  270. package/lib/components/files-upload/style/material.scss +4 -4
  271. package/lib/components/image-display/image-display.component.d.ts +14 -14
  272. package/lib/components/image-display/image-display.module.d.ts +2 -2
  273. package/lib/components/image-display/style/_layout.scss +56 -56
  274. package/lib/components/image-display/style/_material-definition.scss +4 -4
  275. package/lib/components/image-display/style/_theme.scss +6 -6
  276. package/lib/components/image-display/style/material.scss +3 -3
  277. package/lib/components/key-pad/key-pad.component.d.ts +38 -38
  278. package/lib/components/key-pad/key-pad.module.d.ts +2 -2
  279. package/lib/components/key-pad/style/_layout.scss +160 -160
  280. package/lib/components/key-pad/style/_material-definition.scss +19 -19
  281. package/lib/components/key-pad/style/_theme.scss +35 -35
  282. package/lib/components/key-pad/style/material.scss +4 -4
  283. package/lib/components/layout-switcher/layout-switcher.component.d.ts +16 -16
  284. package/lib/components/layout-switcher/layout-switcher.module.d.ts +2 -2
  285. package/lib/components/layout-switcher/style/_layout.scss +94 -94
  286. package/lib/components/layout-switcher/style/_material-definition.scss +16 -16
  287. package/lib/components/layout-switcher/style/_theme.scss +4 -4
  288. package/lib/components/layout-switcher/style/material.scss +6 -6
  289. package/lib/components/linear-gauge/co-linear-gauge.component.d.ts +11 -11
  290. package/lib/components/linear-gauge/co-linear-gauge.module.d.ts +2 -2
  291. package/lib/components/linear-gauge/style/_layout.scss +20 -20
  292. package/lib/components/linear-gauge/style/_material-definition.scss +8 -8
  293. package/lib/components/linear-gauge/style/_theme.scss +4 -4
  294. package/lib/components/linear-gauge/style/material.scss +6 -6
  295. package/lib/components/login/style/_layout.scss +57 -57
  296. package/lib/components/login/style/_material-definition.scss +23 -23
  297. package/lib/components/login/style/_theme.scss +7 -7
  298. package/lib/components/login/style/material.scss +4 -4
  299. package/lib/components/multi-property-toggler/multiple-property-toggler.component.d.ts +27 -27
  300. package/lib/components/multi-property-toggler/multiple-property-toggler.module.d.ts +2 -2
  301. package/lib/components/multi-property-toggler/style/_layout.scss +24 -24
  302. package/lib/components/multi-property-toggler/style/_theme.scss +4 -4
  303. package/lib/components/multi-property-toggler/style/material.scss +4 -4
  304. package/lib/components/screen-config-generator/style/_layout.scss +95 -95
  305. package/lib/components/screen-config-generator/style/_theme.scss +4 -4
  306. package/lib/components/screen-config-generator/style/material.scss +4 -4
  307. package/lib/components/send-method-dialog/components/layout-selection/layout-selection.component.d.ts +19 -19
  308. package/lib/components/send-method-dialog/components/layout-selection/layout-selection.module.d.ts +2 -2
  309. package/lib/components/send-method-dialog/components/layout-selection/style/_layout.scss +44 -44
  310. package/lib/components/send-method-dialog/components/layout-selection/style/_material-definition.scss +19 -19
  311. package/lib/components/send-method-dialog/components/layout-selection/style/_theme.scss +17 -17
  312. package/lib/components/send-method-dialog/components/layout-selection/style/material.scss +4 -4
  313. package/lib/components/send-method-dialog/components/printer-selection/printer-selection.component.d.ts +19 -19
  314. package/lib/components/send-method-dialog/components/printer-selection/printer-selection.module.d.ts +2 -2
  315. package/lib/components/send-method-dialog/components/printer-selection/style/_layout.scss +69 -69
  316. package/lib/components/send-method-dialog/components/printer-selection/style/_material-definition.scss +37 -37
  317. package/lib/components/send-method-dialog/components/printer-selection/style/_theme.scss +23 -23
  318. package/lib/components/send-method-dialog/components/printer-selection/style/material.scss +4 -4
  319. package/lib/components/send-method-dialog/components/send-method-email/send-method-email.component.d.ts +14 -14
  320. package/lib/components/send-method-dialog/components/send-method-email/send-method-email.module.d.ts +2 -2
  321. package/lib/components/send-method-dialog/components/send-method-email/style/_layout.scss +29 -29
  322. package/lib/components/send-method-dialog/components/send-method-email/style/_material-definition.scss +8 -8
  323. package/lib/components/send-method-dialog/components/send-method-email/style/_theme.scss +5 -5
  324. package/lib/components/send-method-dialog/components/send-method-email/style/material.scss +4 -4
  325. package/lib/components/send-method-dialog/components/send-method-pdf/send-method-pdf.component.d.ts +8 -8
  326. package/lib/components/send-method-dialog/components/send-method-pdf/send-method-pdf.module.d.ts +2 -2
  327. package/lib/components/send-method-dialog/components/send-method-pdf/style/_layout.scss +25 -25
  328. package/lib/components/send-method-dialog/components/send-method-pdf/style/_material-definition.scss +5 -5
  329. package/lib/components/send-method-dialog/components/send-method-pdf/style/_theme.scss +5 -5
  330. package/lib/components/send-method-dialog/components/send-method-pdf/style/material.scss +4 -4
  331. package/lib/components/send-method-dialog/components/send-method-printer/send-method-printer.component.d.ts +13 -13
  332. package/lib/components/send-method-dialog/components/send-method-printer/send-method-printer.module.d.ts +2 -2
  333. package/lib/components/send-method-dialog/components/send-method-printer/style/_layout.scss +30 -30
  334. package/lib/components/send-method-dialog/components/send-method-printer/style/_material-definition.scss +5 -5
  335. package/lib/components/send-method-dialog/components/send-method-printer/style/_theme.scss +5 -5
  336. package/lib/components/send-method-dialog/components/send-method-printer/style/material.scss +4 -4
  337. package/lib/components/send-method-dialog/components/signature-button/signature-button.component.d.ts +12 -12
  338. package/lib/components/send-method-dialog/components/signature-button/signature-button.module.d.ts +2 -2
  339. package/lib/components/send-method-dialog/components/signature-button/style/_layout.scss +28 -28
  340. package/lib/components/send-method-dialog/components/signature-button/style/_material-definition.scss +8 -8
  341. package/lib/components/send-method-dialog/components/signature-button/style/_theme.scss +4 -4
  342. package/lib/components/send-method-dialog/components/signature-button/style/material.scss +4 -4
  343. package/lib/components/send-method-dialog/model/email-address-viewmodel.d.ts +5 -5
  344. package/lib/components/send-method-dialog/send-method-dialog.component.d.ts +71 -71
  345. package/lib/components/send-method-dialog/send-method-dialog.module.d.ts +2 -2
  346. package/lib/components/send-method-dialog/send-method-params.interface.d.ts +13 -13
  347. package/lib/components/send-method-dialog/service/send-method.service.d.ts +23 -23
  348. package/lib/components/send-method-dialog/style/_layout.scss +165 -165
  349. package/lib/components/send-method-dialog/style/_material-definition.scss +48 -48
  350. package/lib/components/send-method-dialog/style/_theme.scss +33 -33
  351. package/lib/components/send-method-dialog/style/material.scss +10 -10
  352. package/lib/components/simple-tags/simple-tags.component.d.ts +31 -31
  353. package/lib/components/simple-tags/simple-tags.module.d.ts +2 -2
  354. package/lib/components/simple-tags/style/_layout.scss +272 -272
  355. package/lib/components/simple-tags/style/_material-definition.scss +39 -39
  356. package/lib/components/simple-tags/style/_theme.scss +4 -4
  357. package/lib/components/simple-tags/style/material.scss +4 -4
  358. package/lib/components/statusbar/statusbar-popup.component.d.ts +21 -21
  359. package/lib/components/statusbar/statusbar.component.d.ts +26 -26
  360. package/lib/components/statusbar/statusbar.module.d.ts +2 -2
  361. package/lib/components/statusbar/style/_layout.scss +70 -70
  362. package/lib/components/statusbar/style/_material-definition.scss +23 -23
  363. package/lib/components/statusbar/style/_theme.scss +13 -13
  364. package/lib/components/statusbar/style/material.scss +5 -5
  365. package/lib/components/stock/components/allocation-stock-history/allocation-stock-history.component.d.ts +9 -9
  366. package/lib/components/stock/components/order-commission-stock-history/order-commission-stock-history.component.d.ts +9 -9
  367. package/lib/components/stock/components/order-stock-history/order-stock-history.component.d.ts +9 -9
  368. package/lib/components/stock/components/order-stock-tab/order-stock-tab.component.d.ts +11 -11
  369. package/lib/components/stock/components/order-supply-stock-history/order-supply-stock-history.component.d.ts +9 -9
  370. package/lib/components/stock/components/order-tab/order-tab.component.d.ts +20 -20
  371. package/lib/components/stock/components/stock-history/stock-history.component.d.ts +13 -13
  372. package/lib/components/stock/components/stock-location/components/stock-location-popup/stock-location-popup.component.d.ts +41 -0
  373. package/lib/components/stock/components/stock-location/stock-location.component.d.ts +54 -52
  374. package/lib/components/stock/components/stock-prognose/stock-prognose.component.d.ts +11 -11
  375. package/lib/components/stock/components/stock-tab/stock-tab.component.d.ts +7 -7
  376. package/lib/components/stock/localization/translation.d.ts +71 -69
  377. package/lib/components/stock/stock-history-tabs/stock-history-tabs.component.d.ts +7 -7
  378. package/lib/components/stock/stock-information/stock-information.component.d.ts +9 -9
  379. package/lib/components/stock/stock-information-grid/stock-information-grid.component.d.ts +75 -75
  380. package/lib/components/stock/stock-tabs/stock-tabs.component.d.ts +59 -56
  381. package/lib/components/stock/stock-transfer/co-drop-down-list-fields.interface.d.ts +4 -4
  382. package/lib/components/stock/stock-transfer/stock-change-amount.component.d.ts +18 -18
  383. package/lib/components/stock/stock-transfer/stock-transfer.component.d.ts +38 -38
  384. package/lib/components/stock/stock.component.d.ts +64 -64
  385. package/lib/components/stock/stock.module.d.ts +2 -2
  386. package/lib/components/stock/style/_layout.scss +519 -473
  387. package/lib/components/stock/style/_material-definition.scss +28 -28
  388. package/lib/components/stock/style/_theme.scss +5 -5
  389. package/lib/components/stock/style/material.scss +4 -4
  390. package/lib/components/stock-statusbar/stock-statusbar.component.d.ts +4 -4
  391. package/lib/components/stock-statusbar/stock-statusbar.module.d.ts +2 -2
  392. package/lib/components/stock-statusbar/style/_layout.scss +24 -24
  393. package/lib/components/stock-statusbar/style/material.scss +4 -4
  394. package/lib/components/tab-bar/style/_layout.scss +83 -83
  395. package/lib/components/tab-bar/style/_material-definition.scss +6 -6
  396. package/lib/components/tab-bar/style/material.scss +4 -4
  397. package/lib/components/tab-bar/tab-bar.component.d.ts +21 -21
  398. package/lib/components/tab-bar/tab-bar.module.d.ts +2 -2
  399. package/lib/components/tab-bar/tab.interface.d.ts +5 -5
  400. package/lib/components/tags/component/style/_layout.scss +67 -67
  401. package/lib/components/tags/component/style/_material-definition.scss +1 -1
  402. package/lib/components/tags/component/style/_theme.scss +8 -8
  403. package/lib/components/tags/component/style/material.scss +3 -3
  404. package/lib/components/tags/component/tag-join-label/style/_layout.scss +97 -97
  405. package/lib/components/tags/component/tag-join-label/style/_material-definition.scss +4 -4
  406. package/lib/components/tags/component/tag-join-label/style/_theme.scss +8 -8
  407. package/lib/components/tags/component/tag-join-label/style/material.scss +3 -3
  408. package/lib/components/tile-renderer/style/_layout.scss +90 -90
  409. package/lib/components/tile-renderer/style/_theme.scss +4 -4
  410. package/lib/components/tile-renderer/style/material.scss +4 -4
  411. package/lib/components/tile-renderer/tile-render.component.d.ts +31 -31
  412. package/lib/components/tile-renderer/tile-render.module.d.ts +2 -2
  413. package/lib/decorator/input-boolean.decorator.d.ts +8 -8
  414. package/lib/enum/calendar-view.enum.d.ts +7 -7
  415. package/lib/enum/document-email-report.enum.d.ts +15 -15
  416. package/lib/enum/domain-multiple-name.enum.d.ts +10 -10
  417. package/lib/enum/file-type.d.ts +7 -7
  418. package/lib/enum/files-upload-config-objects.d.ts +22 -22
  419. package/lib/enum/gauge-color.enum.d.ts +8 -8
  420. package/lib/enum/icon.enum.d.ts +47 -46
  421. package/lib/enum/internal-param.enum.d.ts +34 -34
  422. package/lib/enum/keyboard-code.enum.d.ts +30 -30
  423. package/lib/enum/language-code.enum.d.ts +6 -6
  424. package/lib/enum/month.enum.d.ts +14 -14
  425. package/lib/enum/read-write-access-config-names.enum.d.ts +4 -4
  426. package/lib/enum/table-name.enum.d.ts +84 -84
  427. package/lib/enum/tag-category.enum.d.ts +19 -19
  428. package/lib/enum/tags-component-config-names.d.ts +4 -4
  429. package/lib/enum/thumb-three-way-state.d.ts +6 -6
  430. package/lib/enum/tile-size-type.d.ts +4 -4
  431. package/lib/enum/time-period.enum.d.ts +8 -8
  432. package/lib/event/co-drag-event.d.ts +5 -5
  433. package/lib/event/co-drop-event.d.ts +8 -8
  434. package/lib/interface/key-value-pair.d.ts +4 -4
  435. package/lib/interface/operation-callback-simple-function.d.ts +4 -4
  436. package/lib/localization/localization.module.d.ts +2 -2
  437. package/lib/localization/localize.pipe.d.ts +7 -7
  438. package/lib/localization/localize.service.d.ts +7 -7
  439. package/lib/localization/translation.d.ts +2 -2
  440. package/lib/model/agenda-event-per-day.model.d.ts +5 -5
  441. package/lib/model/agenda-event.model.d.ts +17 -17
  442. package/lib/model/agenda-null-objects.d.ts +10 -10
  443. package/lib/model/constant/all-months.d.ts +2 -2
  444. package/lib/model/date-range.d.ts +7 -7
  445. package/lib/model/day.model.d.ts +8 -8
  446. package/lib/model/icon-svg.d.ts +4 -4
  447. package/lib/model/month.model.d.ts +5 -5
  448. package/lib/model/send-method.d.ts +7 -7
  449. package/lib/model/settings.d.ts +3 -3
  450. package/lib/model/tag-tree-item.bo.d.ts +18 -18
  451. package/lib/model/time-window.bo.d.ts +13 -13
  452. package/lib/model/tree-object.d.ts +8 -8
  453. package/lib/model/week.model.d.ts +4 -4
  454. package/lib/model/weekday.model.d.ts +16 -16
  455. package/lib/pipe/array-number.pipe.d.ts +4 -4
  456. package/lib/pipe/file-type-image.pipe.d.ts +12 -12
  457. package/lib/pipe/master-pipes.d.ts +1 -1
  458. package/lib/pipe/ucfirst.pipe.d.ts +4 -4
  459. package/lib/service/dictionary.service.d.ts +21 -21
  460. package/lib/service/drag-drop.service.d.ts +86 -86
  461. package/lib/service/icon-cache.service.d.ts +18 -18
  462. package/lib/service/options.service.d.ts +13 -13
  463. package/lib/service/shared-connector.service.d.ts +55 -55
  464. package/lib/service/shared.service.d.ts +18 -18
  465. package/lib/service/stock.service.d.ts +41 -41
  466. package/lib/style/_mixin.scss +14 -14
  467. package/lib/style/_variables.scss +21 -21
  468. package/lib/style/sharedcomponents-globals.scss +10 -10
  469. package/lib/utils/array-utils.d.ts +63 -63
  470. package/lib/utils/calendar.utils.d.ts +10 -10
  471. package/lib/utils/check-precision-and-scale-result.d.ts +4 -4
  472. package/lib/utils/check-within-stepped-bounds-result.d.ts +8 -8
  473. package/lib/utils/co-document-shared-field-logic.d.ts +7 -7
  474. package/lib/utils/date-utils.d.ts +44 -44
  475. package/lib/utils/enum-utils.d.ts +31 -31
  476. package/lib/utils/function/not-nill.function.d.ts +1 -1
  477. package/lib/utils/is-nill.function.d.ts +1 -1
  478. package/lib/utils/map-utils.d.ts +16 -16
  479. package/lib/utils/number-utils.d.ts +125 -125
  480. package/lib/utils/object-utils.d.ts +40 -40
  481. package/lib/utils/ref-code-utils.d.ts +10 -10
  482. package/lib/utils/string-utils.d.ts +38 -38
  483. package/main.1d1ac86d8023edac29b1.js +1 -0
  484. package/package.json +1 -1
  485. package/polyfills.907fe9d1887c5de17993.js +1 -0
  486. package/public-api.d.ts +27 -27
  487. package/runtime.8aac21847ed3d3829cca.js +1 -0
  488. package/styles.42e2561063e306e59f45.css +1 -0
@@ -1,243 +1,243 @@
1
- import { __awaiter } from "tslib";
2
- import { Component, ElementRef, EventEmitter, Inject, Input, LOCALE_ID, NgZone, Output, Renderer2, ViewEncapsulation } from "@angular/core";
3
- import { CalendarView } from "../../../../enum/calendar-view.enum";
4
- import { LanguageCode } from "../../../../enum/language-code.enum";
5
- import { CalendarUtils } from "../../../../utils/calendar.utils";
6
- import { NULL_DAY } from "../../../../model/agenda-null-objects";
7
- import { Day } from "../../../../model/day.model";
8
- import { Icon } from "../../../../enum/icon.enum";
9
- import { DateUtils } from "../../../../utils/date-utils";
10
- import { IconCacheService } from "../../../../service/icon-cache.service";
11
- export class AgendaHeaderComponent {
12
- constructor(_locale, _elementRef, _renderer, _ngZone, iconCacheService) {
13
- this._locale = _locale;
14
- this._elementRef = _elementRef;
15
- this._renderer = _renderer;
16
- this._ngZone = _ngZone;
17
- this.iconCacheService = iconCacheService;
18
- this.icons = Icon;
19
- this.viewTypes = CalendarView;
20
- this.scrollbarWidth = 15;
21
- this.today = new Date();
22
- this.viewChange = new EventEmitter();
23
- this.selectedDateChange = new EventEmitter();
24
- this.rangeChange = new EventEmitter();
25
- this.weekDays = [];
26
- this.day = NULL_DAY;
27
- this.showBackButton = true;
28
- this._eventsPerDay = [];
29
- this._onResize = () => __awaiter(this, void 0, void 0, function* () {
30
- this._resizeHost();
31
- });
32
- }
33
- set selectedDate(value) {
34
- this._selectedDate = new Date(value);
35
- this._prepareHeaderData();
36
- }
37
- get selectedDate() {
38
- return this._selectedDate;
39
- }
40
- set firstAvailableDate(value) {
41
- if (value) {
42
- this._firstAvailableDate = new Date(value);
43
- this._prepareHeaderData();
44
- }
45
- }
46
- get firstAvailableDate() {
47
- return this._firstAvailableDate;
48
- }
49
- set eventsPerDay(value) {
50
- this._eventsPerDay = value;
51
- this._prepareHeaderData();
52
- }
53
- ngOnDestroy() {
54
- window.removeEventListener("resize", this._onResize);
55
- this._elementRef = undefined;
56
- }
57
- ngOnInit() {
58
- this._ngZone.runOutsideAngular(() => {
59
- window.addEventListener("resize", this._onResize);
60
- });
61
- }
62
- ngAfterContentChecked() {
63
- this._resizeHost();
64
- }
65
- subUnit() {
66
- if (this.selectedDate) {
67
- const newDate = new Date(this.selectedDate);
68
- switch (this.view) {
69
- case CalendarView.DayView:
70
- newDate.setDate(this.selectedDate.getDate() - 1);
71
- break;
72
- case CalendarView.WeekView:
73
- newDate.setDate(this.selectedDate.getDate() - 7);
74
- break;
75
- case CalendarView.WeekSelectView:
76
- newDate.setDate(this.selectedDate.getDate() - 7);
77
- break;
78
- case CalendarView.MonthView:
79
- newDate.setMonth(this.selectedDate.getMonth() - 1);
80
- break;
81
- }
82
- this.selectedDate = newDate;
83
- this.rangeChange.emit(this.selectedDate);
84
- }
85
- }
86
- addUnit() {
87
- if (this.selectedDate) {
88
- const newDate = new Date(this.selectedDate);
89
- switch (this.view) {
90
- case CalendarView.DayView:
91
- newDate.setDate(this.selectedDate.getDate() + 1);
92
- break;
93
- case CalendarView.WeekView:
94
- newDate.setDate(this.selectedDate.getDate() + 7);
95
- break;
96
- case CalendarView.WeekSelectView:
97
- newDate.setDate(this.selectedDate.getDate() + 7);
98
- break;
99
- case CalendarView.MonthView:
100
- newDate.setMonth(this.selectedDate.getMonth() + 1);
101
- break;
102
- }
103
- this.selectedDate = newDate;
104
- this.rangeChange.emit(this.selectedDate);
105
- }
106
- }
107
- setUnit(weekDay) {
108
- this.selectedDate = weekDay.date;
109
- this.selectedDateChange.emit(this.selectedDate);
110
- }
111
- changeTheView(view) {
112
- this.view = view;
113
- this.viewChange.emit(view);
114
- this._prepareHeaderData();
115
- }
116
- /**
117
- * Need to resize the host component to size it's fixed positioned child through css
118
- */
119
- _resizeHost() {
120
- if (this._elementRef) {
121
- this._renderer.setStyle(this._elementRef.nativeElement, "width", this._elementRef.nativeElement.parentElement.clientWidth - this.scrollbarWidth + "px");
122
- }
123
- }
124
- _prepareHeaderData() {
125
- if (this.selectedDate) {
126
- switch (this.view) {
127
- case CalendarView.DayView:
128
- const day = new Day();
129
- day.date = new Date(this.selectedDate);
130
- const options = { year: "numeric", month: "long", day: "numeric" };
131
- day.description = this.selectedDate.toLocaleDateString(this._locale, options);
132
- this.day = day;
133
- break;
134
- case CalendarView.WeekView:
135
- const weekView = CalendarUtils.GetDaysOfWeek(this.selectedDate);
136
- this.weekDays = weekView.weekDays;
137
- if (this.firstAvailableDate) {
138
- this.showBackButton = this.weekDays.find(wd => DateUtils.DatesEqual(this.firstAvailableDate, wd.date)) === undefined;
139
- }
140
- break;
141
- case CalendarView.WeekSelectView:
142
- const weekSelectView = CalendarUtils.GetDaysOfWeek(this.selectedDate);
143
- this.weekDays = weekSelectView.weekDays;
144
- this.weekDays.forEach((wd) => {
145
- const evPerDay = this._eventsPerDay && this._eventsPerDay.length > 0 ? this._eventsPerDay.find(e => DateUtils.DatesEqual(e.date, wd.date)) : null;
146
- if (evPerDay) {
147
- wd.events = evPerDay.events;
148
- }
149
- else {
150
- wd.weekdaySelected = false;
151
- }
152
- });
153
- if (this.firstAvailableDate) {
154
- this.showBackButton = this.weekDays.find(wd => DateUtils.DatesEqual(this.firstAvailableDate, wd.date)) === undefined;
155
- }
156
- break;
157
- case CalendarView.MonthView:
158
- const weekOfMonth = CalendarUtils.GetDaysOfWeek(this.selectedDate);
159
- this.weekDays = weekOfMonth.weekDays;
160
- if (this.firstAvailableDate) {
161
- this.showBackButton = this.weekDays.find(wd => DateUtils.DatesEqual(this.firstAvailableDate, wd.date)) === undefined;
162
- }
163
- break;
164
- }
165
- }
166
- }
167
- }
168
- AgendaHeaderComponent.decorators = [
169
- { type: Component, args: [{
170
- selector: "agenda-header",
171
- template: `
172
- <div class="agenda-header-wrapper" *ngIf="view === viewTypes.DayView">
173
- <div class="hour-label-placeholder">
174
- <view-select [selectedView]="view" (selectedViewChange)="changeTheView($event)"></view-select>
175
- </div>
176
- <div class="week-day-label">
177
- <co-icon class="pointer-hover no-user-select sub-unit-icon dark"
178
- [iconData]="iconCacheService.getIcon(icons.ArrowPointLeft)" (click)="subUnit()"></co-icon>
179
- <div class="day-description" [textContent]="day.description"></div>
180
- <co-icon class="pointer-hover no-user-select add-unit-icon dark"
181
- [iconData]="iconCacheService.getIcon(icons.ArrowPointRight)" (click)="addUnit()"></co-icon>
182
- </div>
183
- </div>
184
- <div class="agenda-header-wrapper" *ngIf="view === viewTypes.WeekView">
185
-
186
- <div class="week-day-label" *ngFor="let weekDay of weekDays; let index = index"
187
- [class.selected]="weekDay.weekdaySelected" (click)="setUnit(weekDay)">
188
- <co-icon *ngIf="index === 0 && showBackButton" class="pointer-hover no-user-select sub-unit-icon dark"
189
- [iconData]="iconCacheService.getIcon(icons.ArrowPointLeft)" (click)="subUnit()"></co-icon>
190
- <div *ngIf="weekDay.newMonth" [textContent]="weekDay.weekdayMonthLong + ' ' + weekDay.weekdayYear"
191
- class="month-description"></div>
192
- <div class="weekday-value"
193
- [textContent]="weekDay.weekdayLong + ' ' + weekDay.weekdayDay + ' ' + weekDay.weekdayMonthLong + ' ' + weekDay.weekdayYear "></div>
194
- <!-- <div class="weekday-description" [textContent]="weekDay.weekdayYear"></div>-->
195
- <co-icon *ngIf="index === 6" class="pointer-hover no-user-select add-unit-icon dark"
196
- [iconData]="iconCacheService.getIcon(icons.ArrowPointRight)" (click)="addUnit()"></co-icon>
197
- </div>
198
- </div>
199
-
200
-
201
- <div class="agenda-header-wrapper" *ngIf="view === viewTypes.WeekSelectView">
202
- <div class="week-day-label" *ngFor="let weekDay of weekDays; let index = index"
203
- [class.selected]="weekDay.weekdaySelected"
204
- [class.selectable]="weekDay.events && weekDay.events.length > 0"
205
- (click)="setUnit(weekDay)">
206
- <co-icon *ngIf="index === 0 && showBackButton" class="pointer-hover no-user-select sub-unit-icon dark"
207
- [iconData]="iconCacheService.getIcon(icons.ArrowPointLeft)" (click)="subUnit()"></co-icon>
208
- <div class="weekday-description" [textContent]="weekDay.weekdayShort"></div>
209
- <div class="weekday-value" [textContent]="weekDay.weekdayDay + ' ' + weekDay.weekdayMonthShort"></div>
210
- <co-icon *ngIf="index === 6" class="pointer-hover no-user-select add-unit-icon dark"
211
- [iconData]="iconCacheService.getIcon(icons.ArrowPointRight)" (click)="addUnit()"></co-icon>
212
- </div>
213
- </div>
214
- <div class="agenda-header-wrapper" *ngIf="view === viewTypes.MonthView">
215
- <div class="week-day-label" *ngFor="let weekDay of weekDays; let index = index">
216
- <co-icon *ngIf="index === 0 && showBackButton" class="pointer-hover no-user-select sub-unit-icon dark"
217
- [iconData]="iconCacheService.getIcon(icons.ArrowPointLeft)" (click)="subUnit()"></co-icon>
218
- <div class="weekday-description" [textContent]="weekDay.weekdayShort"></div>
219
- <co-icon *ngIf="index === 6" class="pointer-hover no-user-select add-unit-icon dark"
220
- [iconData]="iconCacheService.getIcon(icons.ArrowPointRight)" (click)="addUnit()"></co-icon>
221
- </div>
222
- </div>
223
- `,
224
- encapsulation: ViewEncapsulation.None
225
- },] }
226
- ];
227
- AgendaHeaderComponent.ctorParameters = () => [
228
- { type: LanguageCode, decorators: [{ type: Inject, args: [LOCALE_ID,] }] },
229
- { type: ElementRef },
230
- { type: Renderer2 },
231
- { type: NgZone },
232
- { type: IconCacheService }
233
- ];
234
- AgendaHeaderComponent.propDecorators = {
235
- selectedDate: [{ type: Input }],
236
- view: [{ type: Input }],
237
- firstAvailableDate: [{ type: Input }],
238
- eventsPerDay: [{ type: Input }],
239
- viewChange: [{ type: Output }],
240
- selectedDateChange: [{ type: Output }],
241
- rangeChange: [{ type: Output }]
242
- };
243
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbmRhLWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWRjb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9kYXRlLXBsYW5uaW5nL2NvbXBvbmVudC9hZ2VuZGEvYWdlbmRhLWhlYWRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLFNBQVMsRUFDVCxNQUFNLEVBR04sTUFBTSxFQUNOLFNBQVMsRUFBRSxpQkFBaUIsRUFDN0IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQ2pFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUdqRSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDL0QsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBQy9ELE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQTtBQUMvQyxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFFaEQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBMkR4RSxNQUFNLE9BQU8scUJBQXFCO0lBd0Q5QixZQUN3QyxPQUFxQixFQUNqRCxXQUF1QixFQUN2QixTQUFvQixFQUNwQixPQUFlLEVBQ2hCLGdCQUFrQztRQUpMLFlBQU8sR0FBUCxPQUFPLENBQWM7UUFDakQsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDdkIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixZQUFPLEdBQVAsT0FBTyxD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VCxNQUFNO1lBZ0JBLGdCQUFnQjs7OzJCQW1FbkIsS0FBSzttQkFVTCxLQUFLO2lDQUdMLEtBQUs7MkJBWUwsS0FBSzt5QkFNTCxNQUFNO2lDQUdOLE1BQU07MEJBR04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudENoZWNrZWQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBMT0NBTEVfSUQsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUmVuZGVyZXIyLCBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtDYWxlbmRhclZpZXd9IGZyb20gXCIuLi8uLi8uLi8uLi9lbnVtL2NhbGVuZGFyLXZpZXcuZW51bVwiO1xuaW1wb3J0IHtMYW5ndWFnZUNvZGV9IGZyb20gXCIuLi8uLi8uLi8uLi9lbnVtL2xhbmd1YWdlLWNvZGUuZW51bVwiO1xuaW1wb3J0IHtXZWVrZGF5fSBmcm9tIFwiLi4vLi4vLi4vLi4vbW9kZWwvd2Vla2RheS5tb2RlbFwiO1xuaW1wb3J0IHtXZWVrfSBmcm9tIFwiLi4vLi4vLi4vLi4vbW9kZWwvd2Vlay5tb2RlbFwiO1xuaW1wb3J0IHtDYWxlbmRhclV0aWxzfSBmcm9tIFwiLi4vLi4vLi4vLi4vdXRpbHMvY2FsZW5kYXIudXRpbHNcIjtcbmltcG9ydCB7TlVMTF9EQVl9IGZyb20gXCIuLi8uLi8uLi8uLi9tb2RlbC9hZ2VuZGEtbnVsbC1vYmplY3RzXCI7XG5pbXBvcnQge0RheX0gZnJvbSBcIi4uLy4uLy4uLy4uL21vZGVsL2RheS5tb2RlbFwiXG5pbXBvcnQge0ljb259IGZyb20gXCIuLi8uLi8uLi8uLi9lbnVtL2ljb24uZW51bVwiO1xuaW1wb3J0IHtBZ2VuZGFFdmVudFBlckRheX0gZnJvbSBcIi4uLy4uLy4uLy4uL21vZGVsL2FnZW5kYS1ldmVudC1wZXItZGF5Lm1vZGVsXCI7XG5pbXBvcnQge0RhdGVVdGlsc30gZnJvbSBcIi4uLy4uLy4uLy4uL3V0aWxzL2RhdGUtdXRpbHNcIjtcbmltcG9ydCB7SWNvbkNhY2hlU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uLy4uL3NlcnZpY2UvaWNvbi1jYWNoZS5zZXJ2aWNlXCI7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcImFnZW5kYS1oZWFkZXJcIixcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWdlbmRhLWhlYWRlci13cmFwcGVyXCIgKm5nSWY9XCJ2aWV3ID09PSB2aWV3VHlwZXMuRGF5Vmlld1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhvdXItbGFiZWwtcGxhY2Vob2xkZXJcIj5cbiAgICAgICAgICAgICAgICA8dmlldy1zZWxlY3QgW3NlbGVjdGVkVmlld109XCJ2aWV3XCIgKHNlbGVjdGVkVmlld0NoYW5nZSk9XCJjaGFuZ2VUaGVWaWV3KCRldmVudClcIj48L3ZpZXctc2VsZWN0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2Vlay1kYXktbGFiZWxcIj5cbiAgICAgICAgICAgICAgICA8Y28taWNvbiBjbGFzcz1cInBvaW50ZXItaG92ZXIgbm8tdXNlci1zZWxlY3Qgc3ViLXVuaXQtaWNvbiBkYXJrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLkFycm93UG9pbnRMZWZ0KVwiIChjbGljayk9XCJzdWJVbml0KClcIj48L2NvLWljb24+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRheS1kZXNjcmlwdGlvblwiIFt0ZXh0Q29udGVudF09XCJkYXkuZGVzY3JpcHRpb25cIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8Y28taWNvbiBjbGFzcz1cInBvaW50ZXItaG92ZXIgbm8tdXNlci1zZWxlY3QgYWRkLXVuaXQtaWNvbiBkYXJrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLkFycm93UG9pbnRSaWdodClcIiAoY2xpY2spPVwiYWRkVW5pdCgpXCI+PC9jby1pY29uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWdlbmRhLWhlYWRlci13cmFwcGVyXCIgKm5nSWY9XCJ2aWV3ID09PSB2aWV3VHlwZXMuV2Vla1ZpZXdcIj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndlZWstZGF5LWxhYmVsXCIgKm5nRm9yPVwibGV0IHdlZWtEYXkgb2Ygd2Vla0RheXM7IGxldCBpbmRleCA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cIndlZWtEYXkud2Vla2RheVNlbGVjdGVkXCIgKGNsaWNrKT1cInNldFVuaXQod2Vla0RheSlcIj5cbiAgICAgICAgICAgICAgICA8Y28taWNvbiAqbmdJZj1cImluZGV4ID09PSAwICYmIHNob3dCYWNrQnV0dG9uXCIgY2xhc3M9XCJwb2ludGVyLWhvdmVyIG5vLXVzZXItc2VsZWN0IHN1Yi11bml0LWljb24gZGFya1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5BcnJvd1BvaW50TGVmdClcIiAoY2xpY2spPVwic3ViVW5pdCgpXCI+PC9jby1pY29uPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ3ZWVrRGF5Lm5ld01vbnRoXCIgW3RleHRDb250ZW50XT1cIndlZWtEYXkud2Vla2RheU1vbnRoTG9uZyArICcgJyArIHdlZWtEYXkud2Vla2RheVllYXJcIlxuICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtb250aC1kZXNjcmlwdGlvblwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3ZWVrZGF5LXZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgIFt0ZXh0Q29udGVudF09XCJ3ZWVrRGF5LndlZWtkYXlMb25nICsgJyAnICsgd2Vla0RheS53ZWVrZGF5RGF5ICsgJyAnICsgd2Vla0RheS53ZWVrZGF5TW9udGhMb25nICsgJyAnICsgd2Vla0RheS53ZWVrZGF5WWVhciBcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3ZWVrZGF5LWRlc2NyaXB0aW9uXCIgW3RleHRDb250ZW50XT1cIndlZWtEYXkud2Vla2RheVllYXJcIj48L2Rpdj4tLT5cbiAgICAgICAgICAgICAgICA8Y28taWNvbiAqbmdJZj1cImluZGV4ID09PSA2XCIgY2xhc3M9XCJwb2ludGVyLWhvdmVyIG5vLXVzZXItc2VsZWN0IGFkZC11bml0LWljb24gZGFya1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5BcnJvd1BvaW50UmlnaHQpXCIgKGNsaWNrKT1cImFkZFVuaXQoKVwiPjwvY28taWNvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhZ2VuZGEtaGVhZGVyLXdyYXBwZXJcIiAqbmdJZj1cInZpZXcgPT09IHZpZXdUeXBlcy5XZWVrU2VsZWN0Vmlld1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndlZWstZGF5LWxhYmVsXCIgKm5nRm9yPVwibGV0IHdlZWtEYXkgb2Ygd2Vla0RheXM7IGxldCBpbmRleCA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cIndlZWtEYXkud2Vla2RheVNlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGFibGVdPVwid2Vla0RheS5ldmVudHMgJiYgd2Vla0RheS5ldmVudHMubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXRVbml0KHdlZWtEYXkpXCI+XG4gICAgICAgICAgICAgICAgPGNvLWljb24gKm5nSWY9XCJpbmRleCA9PT0gMCAmJiBzaG93QmFja0J1dHRvblwiIGNsYXNzPVwicG9pbnRlci1ob3ZlciBuby11c2VyLXNlbGVjdCBzdWItdW5pdC1pY29uIGRhcmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuQXJyb3dQb2ludExlZnQpXCIgKGNsaWNrKT1cInN1YlVuaXQoKVwiPjwvY28taWNvbj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2Vla2RheS1kZXNjcmlwdGlvblwiIFt0ZXh0Q29udGVudF09XCJ3ZWVrRGF5LndlZWtkYXlTaG9ydFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3ZWVrZGF5LXZhbHVlXCIgW3RleHRDb250ZW50XT1cIndlZWtEYXkud2Vla2RheURheSArICcgJyArIHdlZWtEYXkud2Vla2RheU1vbnRoU2hvcnRcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8Y28taWNvbiAqbmdJZj1cImluZGV4ID09PSA2XCIgY2xhc3M9XCJwb2ludGVyLWhvdmVyIG5vLXVzZXItc2VsZWN0IGFkZC11bml0LWljb24gZGFya1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5BcnJvd1BvaW50UmlnaHQpXCIgKGNsaWNrKT1cImFkZFVuaXQoKVwiPjwvY28taWNvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFnZW5kYS1oZWFkZXItd3JhcHBlclwiICpuZ0lmPVwidmlldyA9PT0gdmlld1R5cGVzLk1vbnRoVmlld1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndlZWstZGF5LWxhYmVsXCIgKm5nRm9yPVwibGV0IHdlZWtEYXkgb2Ygd2Vla0RheXM7IGxldCBpbmRleCA9IGluZGV4XCI+XG4gICAgICAgICAgICAgICAgPGNvLWljb24gKm5nSWY9XCJpbmRleCA9PT0gMCAmJiBzaG93QmFja0J1dHRvblwiIGNsYXNzPVwicG9pbnRlci1ob3ZlciBuby11c2VyLXNlbGVjdCBzdWItdW5pdC1pY29uIGRhcmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuQXJyb3dQb2ludExlZnQpXCIgKGNsaWNrKT1cInN1YlVuaXQoKVwiPjwvY28taWNvbj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2Vla2RheS1kZXNjcmlwdGlvblwiIFt0ZXh0Q29udGVudF09XCJ3ZWVrRGF5LndlZWtkYXlTaG9ydFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxjby1pY29uICpuZ0lmPVwiaW5kZXggPT09IDZcIiBjbGFzcz1cInBvaW50ZXItaG92ZXIgbm8tdXNlci1zZWxlY3QgYWRkLXVuaXQtaWNvbiBkYXJrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLkFycm93UG9pbnRSaWdodClcIiAoY2xpY2spPVwiYWRkVW5pdCgpXCI+PC9jby1pY29uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIGAsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgQWdlbmRhSGVhZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyQ29udGVudENoZWNrZWQge1xuICAgIHB1YmxpYyByZWFkb25seSBpY29uczogdHlwZW9mIEljb24gPSBJY29uO1xuICAgIHB1YmxpYyByZWFkb25seSB2aWV3VHlwZXM6IHR5cGVvZiBDYWxlbmRhclZpZXcgPSBDYWxlbmRhclZpZXc7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IHNjcm9sbGJhcldpZHRoOiBudW1iZXIgPSAxNTtcblxuICAgIHB1YmxpYyB0b2RheTogRGF0ZSA9IG5ldyBEYXRlKCk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgc2VsZWN0ZWREYXRlKHZhbHVlOiBEYXRlKSB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkRGF0ZSA9IG5ldyBEYXRlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5fcHJlcGFyZUhlYWRlckRhdGEoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHNlbGVjdGVkRGF0ZSgpOiBEYXRlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkRGF0ZTtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB2aWV3OiBDYWxlbmRhclZpZXc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgZmlyc3RBdmFpbGFibGVEYXRlKHZhbHVlOiBEYXRlKSB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fZmlyc3RBdmFpbGFibGVEYXRlID0gbmV3IERhdGUodmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5fcHJlcGFyZUhlYWRlckRhdGEoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZmlyc3RBdmFpbGFibGVEYXRlKCk6IERhdGUge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlyc3RBdmFpbGFibGVEYXRlO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBldmVudHNQZXJEYXkodmFsdWU6IEFnZW5kYUV2ZW50UGVyRGF5W10pIHtcbiAgICAgICAgdGhpcy5fZXZlbnRzUGVyRGF5ID0gdmFsdWU7XG4gICAgICAgIHRoaXMuX3ByZXBhcmVIZWFkZXJEYXRhKCk7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHZpZXdDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDYWxlbmRhclZpZXc+ID0gbmV3IEV2ZW50RW1pdHRlcjxDYWxlbmRhclZpZXc+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgc2VsZWN0ZWREYXRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcmFuZ2VDaGFuZ2U6IEV2ZW50RW1pdHRlcjxEYXRlPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcblxuICAgIHB1YmxpYyB3ZWVrRGF5czogV2Vla2RheVtdID0gW107XG4gICAgcHVibGljIGRheTogRGF5ID0gTlVMTF9EQVk7XG4gICAgcHVibGljIHNob3dCYWNrQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIHByaXZhdGUgX3NlbGVjdGVkRGF0ZTogRGF0ZTtcbiAgICBwcml2YXRlIF9maXJzdEF2YWlsYWJsZURhdGU6IERhdGU7XG4gICAgcHJpdmF0ZSBfZXZlbnRzUGVyRGF5OiBBZ2VuZGFFdmVudFBlckRheVtdID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChMT0NBTEVfSUQpIHByaXZhdGUgcmVhZG9ubHkgX2xvY2FsZTogTGFuZ3VhZ2VDb2RlLFxuICAgICAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICBwcml2YXRlIF9uZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgcHVibGljIGljb25DYWNoZVNlcnZpY2U6IEljb25DYWNoZVNlcnZpY2VcbiAgICApIHtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgdGhpcy5fb25SZXNpemUpO1xuICAgICAgICB0aGlzLl9lbGVtZW50UmVmID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgdGhpcy5fb25SZXNpemUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Jlc2l6ZUhvc3QoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3ViVW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWREYXRlKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdEYXRlOiBEYXRlID0gbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGUpO1xuICAgICAgICAgICAgc3dpdGNoICh0aGlzLnZpZXcpIHtcbiAgICAgICAgICAgICAgICBjYXNlIENhbGVuZGFyVmlldy5EYXlWaWV3OlxuICAgICAgICAgICAgICAgICAgICBuZXdEYXRlLnNldERhdGUodGhpcy5zZWxlY3RlZERhdGUuZ2V0RGF0ZSgpIC0gMSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgQ2FsZW5kYXJWaWV3LldlZWtWaWV3OlxuICAgICAgICAgICAgICAgICAgICBuZXdEYXRlLnNldERhdGUodGhpcy5zZWxlY3RlZERhdGUuZ2V0RGF0ZSgpIC0gNyk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgQ2FsZW5kYXJWaWV3LldlZWtTZWxlY3RWaWV3OlxuICAgICAgICAgICAgICAgICAgICBuZXdEYXRlLnNldERhdGUodGhpcy5zZWxlY3RlZERhdGUuZ2V0RGF0ZSgpIC0gNyk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgQ2FsZW5kYXJWaWV3Lk1vbnRoVmlldzpcbiAgICAgICAgICAgICAgICAgICAgbmV3RGF0ZS5zZXRNb250aCh0aGlzLnNlbGVjdGVkRGF0ZS5nZXRNb250aCgpIC0gMSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSBuZXdEYXRlO1xuICAgICAgICAgICAgdGhpcy5yYW5nZUNoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWREYXRlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhZGRVbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZERhdGUpIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld0RhdGU6IERhdGUgPSBuZXcgRGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZSk7XG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMudmlldykge1xuICAgICAgICAgICAgICAgIGNhc2UgQ2FsZW5kYXJWaWV3LkRheVZpZXc6XG4gICAgICAgICAgICAgICAgICAgIG5ld0RhdGUuc2V0RGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZS5nZXREYXRlKCkgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBDYWxlbmRhclZpZXcuV2Vla1ZpZXc6XG4gICAgICAgICAgICAgICAgICAgIG5ld0RhdGUuc2V0RGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZS5nZXREYXRlKCkgKyA3KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBDYWxlbmRhclZpZXcuV2Vla1NlbGVjdFZpZXc6XG4gICAgICAgICAgICAgICAgICAgIG5ld0RhdGUuc2V0RGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZS5nZXREYXRlKCkgKyA3KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBDYWxlbmRhclZpZXcuTW9udGhWaWV3OlxuICAgICAgICAgICAgICAgICAgICBuZXdEYXRlLnNldE1vbnRoKHRoaXMuc2VsZWN0ZWREYXRlLmdldE1vbnRoKCkgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IG5ld0RhdGU7XG4gICAgICAgICAgICB0aGlzLnJhbmdlQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZERhdGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNldFVuaXQod2Vla0RheTogV2Vla2RheSk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IHdlZWtEYXkuZGF0ZTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkRGF0ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNoYW5nZVRoZVZpZXcodmlldzogQ2FsZW5kYXJWaWV3KTogdm9pZCB7XG4gICAgICAgIHRoaXMudmlldyA9IHZpZXc7XG4gICAgICAgIHRoaXMudmlld0NoYW5nZS5lbWl0KHZpZXcpO1xuICAgICAgICB0aGlzLl9wcmVwYXJlSGVhZGVyRGF0YSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX29uUmVzaXplOiBFdmVudExpc3RlbmVyID0gYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgICB0aGlzLl9yZXNpemVIb3N0KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTmVlZCB0byByZXNpemUgdGhlIGhvc3QgY29tcG9uZW50IHRvIHNpemUgaXQncyBmaXhlZCBwb3NpdGlvbmVkIGNoaWxkIHRocm91Z2ggY3NzXG4gICAgICovXG4gICAgcHJpdmF0ZSBfcmVzaXplSG9zdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2VsZW1lbnRSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgXCJ3aWR0aFwiLCB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudC5jbGllbnRXaWR0aCAtIHRoaXMuc2Nyb2xsYmFyV2lkdGggKyBcInB4XCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcHJlcGFyZUhlYWRlckRhdGEoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkRGF0ZSkge1xuICAgICAgICAgICAgc3dpdGNoICh0aGlzLnZpZXcpIHtcbiAgICAgICAgICAgICAgICBjYXNlIENhbGVuZGFyVmlldy5EYXlWaWV3OlxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXk6IERheSA9IG5ldyBEYXkoKTtcbiAgICAgICAgICAgICAgICAgICAgZGF5LmRhdGUgPSBuZXcgRGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbnM6IGFueSA9IHsgeWVhcjogXCJudW1lcmljXCIsIG1vbnRoOiBcImxvbmdcIiwgZGF5OiBcIm51bWVyaWNcIiB9O1xuICAgICAgICAgICAgICAgICAgICBkYXkuZGVzY3JpcHRpb24gPSB0aGlzLnNlbGVjdGVkRGF0ZS50b0xvY2FsZURhdGVTdHJpbmcodGhpcy5fbG9jYWxlLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXkgPSBkYXk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgQ2FsZW5kYXJWaWV3LldlZWtWaWV3OlxuICAgICAgICAgICAgICAgICAgICBjb25zdCB3ZWVrVmlldzogV2VlayA9IENhbGVuZGFyVXRpbHMuR2V0RGF5c09mV2Vlayh0aGlzLnNlbGVjdGVkRGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMud2Vla0RheXMgPSB3ZWVrVmlldy53ZWVrRGF5cztcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZmlyc3RBdmFpbGFibGVEYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dCYWNrQnV0dG9uID0gdGhpcy53ZWVrRGF5cy5maW5kKHdkID0+IERhdGVVdGlscy5EYXRlc0VxdWFsKHRoaXMuZmlyc3RBdmFpbGFibGVEYXRlLCB3ZC5kYXRlKSkgPT09IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIENhbGVuZGFyVmlldy5XZWVrU2VsZWN0VmlldzpcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2Vla1NlbGVjdFZpZXc6IFdlZWsgPSBDYWxlbmRhclV0aWxzLkdldERheXNPZldlZWsodGhpcy5zZWxlY3RlZERhdGUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLndlZWtEYXlzID0gd2Vla1NlbGVjdFZpZXcud2Vla0RheXM7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMud2Vla0RheXMuZm9yRWFjaCgod2Q6IFdlZWtkYXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGV2UGVyRGF5OiBBZ2VuZGFFdmVudFBlckRheSA9IHRoaXMuX2V2ZW50c1BlckRheSAmJiB0aGlzLl9ldmVudHNQZXJEYXkubGVuZ3RoID4gMCA/IHRoaXMuX2V2ZW50c1BlckRheS5maW5kKGUgPT4gRGF0ZVV0aWxzLkRhdGVzRXF1YWwoZS5kYXRlLCB3ZC5kYXRlKSkgOiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2UGVyRGF5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2QuZXZlbnRzID0gZXZQZXJEYXkuZXZlbnRzO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZC53ZWVrZGF5U2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmZpcnN0QXZhaWxhYmxlRGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93QmFja0J1dHRvbiA9IHRoaXMud2Vla0RheXMuZmluZCh3ZCA9PiBEYXRlVXRpbHMuRGF0ZXNFcXVhbCh0aGlzLmZpcnN0QXZhaWxhYmxlRGF0ZSwgd2QuZGF0ZSkpID09PSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBDYWxlbmRhclZpZXcuTW9udGhWaWV3OlxuICAgICAgICAgICAgICAgICAgICBjb25zdCB3ZWVrT2ZNb250aDogV2VlayA9IENhbGVuZGFyVXRpbHMuR2V0RGF5c09mV2Vlayh0aGlzLnNlbGVjdGVkRGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMud2Vla0RheXMgPSB3ZWVrT2ZNb250aC53ZWVrRGF5cztcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZmlyc3RBdmFpbGFibGVEYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dCYWNrQnV0dG9uID0gdGhpcy53ZWVrRGF5cy5maW5kKHdkID0+IERhdGVVdGlscy5EYXRlc0VxdWFsKHRoaXMuZmlyc3RBdmFpbGFibGVEYXRlLCB3ZC5kYXRlKSkgPT09IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
1
+ import { __awaiter } from "tslib";
2
+ import { Component, ElementRef, EventEmitter, Inject, Input, LOCALE_ID, NgZone, Output, Renderer2, ViewEncapsulation } from "@angular/core";
3
+ import { CalendarView } from "../../../../enum/calendar-view.enum";
4
+ import { LanguageCode } from "../../../../enum/language-code.enum";
5
+ import { CalendarUtils } from "../../../../utils/calendar.utils";
6
+ import { NULL_DAY } from "../../../../model/agenda-null-objects";
7
+ import { Day } from "../../../../model/day.model";
8
+ import { Icon } from "../../../../enum/icon.enum";
9
+ import { DateUtils } from "../../../../utils/date-utils";
10
+ import { IconCacheService } from "../../../../service/icon-cache.service";
11
+ export class AgendaHeaderComponent {
12
+ constructor(_locale, _elementRef, _renderer, _ngZone, iconCacheService) {
13
+ this._locale = _locale;
14
+ this._elementRef = _elementRef;
15
+ this._renderer = _renderer;
16
+ this._ngZone = _ngZone;
17
+ this.iconCacheService = iconCacheService;
18
+ this.icons = Icon;
19
+ this.viewTypes = CalendarView;
20
+ this.scrollbarWidth = 15;
21
+ this.today = new Date();
22
+ this.viewChange = new EventEmitter();
23
+ this.selectedDateChange = new EventEmitter();
24
+ this.rangeChange = new EventEmitter();
25
+ this.weekDays = [];
26
+ this.day = NULL_DAY;
27
+ this.showBackButton = true;
28
+ this._eventsPerDay = [];
29
+ this._onResize = () => __awaiter(this, void 0, void 0, function* () {
30
+ this._resizeHost();
31
+ });
32
+ }
33
+ set selectedDate(value) {
34
+ this._selectedDate = new Date(value);
35
+ this._prepareHeaderData();
36
+ }
37
+ get selectedDate() {
38
+ return this._selectedDate;
39
+ }
40
+ set firstAvailableDate(value) {
41
+ if (value) {
42
+ this._firstAvailableDate = new Date(value);
43
+ this._prepareHeaderData();
44
+ }
45
+ }
46
+ get firstAvailableDate() {
47
+ return this._firstAvailableDate;
48
+ }
49
+ set eventsPerDay(value) {
50
+ this._eventsPerDay = value;
51
+ this._prepareHeaderData();
52
+ }
53
+ ngOnDestroy() {
54
+ window.removeEventListener("resize", this._onResize);
55
+ this._elementRef = undefined;
56
+ }
57
+ ngOnInit() {
58
+ this._ngZone.runOutsideAngular(() => {
59
+ window.addEventListener("resize", this._onResize);
60
+ });
61
+ }
62
+ ngAfterContentChecked() {
63
+ this._resizeHost();
64
+ }
65
+ subUnit() {
66
+ if (this.selectedDate) {
67
+ const newDate = new Date(this.selectedDate);
68
+ switch (this.view) {
69
+ case CalendarView.DayView:
70
+ newDate.setDate(this.selectedDate.getDate() - 1);
71
+ break;
72
+ case CalendarView.WeekView:
73
+ newDate.setDate(this.selectedDate.getDate() - 7);
74
+ break;
75
+ case CalendarView.WeekSelectView:
76
+ newDate.setDate(this.selectedDate.getDate() - 7);
77
+ break;
78
+ case CalendarView.MonthView:
79
+ newDate.setMonth(this.selectedDate.getMonth() - 1);
80
+ break;
81
+ }
82
+ this.selectedDate = newDate;
83
+ this.rangeChange.emit(this.selectedDate);
84
+ }
85
+ }
86
+ addUnit() {
87
+ if (this.selectedDate) {
88
+ const newDate = new Date(this.selectedDate);
89
+ switch (this.view) {
90
+ case CalendarView.DayView:
91
+ newDate.setDate(this.selectedDate.getDate() + 1);
92
+ break;
93
+ case CalendarView.WeekView:
94
+ newDate.setDate(this.selectedDate.getDate() + 7);
95
+ break;
96
+ case CalendarView.WeekSelectView:
97
+ newDate.setDate(this.selectedDate.getDate() + 7);
98
+ break;
99
+ case CalendarView.MonthView:
100
+ newDate.setMonth(this.selectedDate.getMonth() + 1);
101
+ break;
102
+ }
103
+ this.selectedDate = newDate;
104
+ this.rangeChange.emit(this.selectedDate);
105
+ }
106
+ }
107
+ setUnit(weekDay) {
108
+ this.selectedDate = weekDay.date;
109
+ this.selectedDateChange.emit(this.selectedDate);
110
+ }
111
+ changeTheView(view) {
112
+ this.view = view;
113
+ this.viewChange.emit(view);
114
+ this._prepareHeaderData();
115
+ }
116
+ /**
117
+ * Need to resize the host component to size it's fixed positioned child through css
118
+ */
119
+ _resizeHost() {
120
+ if (this._elementRef) {
121
+ this._renderer.setStyle(this._elementRef.nativeElement, "width", this._elementRef.nativeElement.parentElement.clientWidth - this.scrollbarWidth + "px");
122
+ }
123
+ }
124
+ _prepareHeaderData() {
125
+ if (this.selectedDate) {
126
+ switch (this.view) {
127
+ case CalendarView.DayView:
128
+ const day = new Day();
129
+ day.date = new Date(this.selectedDate);
130
+ const options = { year: "numeric", month: "long", day: "numeric" };
131
+ day.description = this.selectedDate.toLocaleDateString(this._locale, options);
132
+ this.day = day;
133
+ break;
134
+ case CalendarView.WeekView:
135
+ const weekView = CalendarUtils.GetDaysOfWeek(this.selectedDate);
136
+ this.weekDays = weekView.weekDays;
137
+ if (this.firstAvailableDate) {
138
+ this.showBackButton = this.weekDays.find(wd => DateUtils.DatesEqual(this.firstAvailableDate, wd.date)) === undefined;
139
+ }
140
+ break;
141
+ case CalendarView.WeekSelectView:
142
+ const weekSelectView = CalendarUtils.GetDaysOfWeek(this.selectedDate);
143
+ this.weekDays = weekSelectView.weekDays;
144
+ this.weekDays.forEach((wd) => {
145
+ const evPerDay = this._eventsPerDay && this._eventsPerDay.length > 0 ? this._eventsPerDay.find(e => DateUtils.DatesEqual(e.date, wd.date)) : null;
146
+ if (evPerDay) {
147
+ wd.events = evPerDay.events;
148
+ }
149
+ else {
150
+ wd.weekdaySelected = false;
151
+ }
152
+ });
153
+ if (this.firstAvailableDate) {
154
+ this.showBackButton = this.weekDays.find(wd => DateUtils.DatesEqual(this.firstAvailableDate, wd.date)) === undefined;
155
+ }
156
+ break;
157
+ case CalendarView.MonthView:
158
+ const weekOfMonth = CalendarUtils.GetDaysOfWeek(this.selectedDate);
159
+ this.weekDays = weekOfMonth.weekDays;
160
+ if (this.firstAvailableDate) {
161
+ this.showBackButton = this.weekDays.find(wd => DateUtils.DatesEqual(this.firstAvailableDate, wd.date)) === undefined;
162
+ }
163
+ break;
164
+ }
165
+ }
166
+ }
167
+ }
168
+ AgendaHeaderComponent.decorators = [
169
+ { type: Component, args: [{
170
+ selector: "agenda-header",
171
+ template: `
172
+ <div class="agenda-header-wrapper" *ngIf="view === viewTypes.DayView">
173
+ <div class="hour-label-placeholder">
174
+ <view-select [selectedView]="view" (selectedViewChange)="changeTheView($event)"></view-select>
175
+ </div>
176
+ <div class="week-day-label">
177
+ <co-icon class="pointer-hover no-user-select sub-unit-icon dark"
178
+ [iconData]="iconCacheService.getIcon(icons.ArrowPointLeft)" (click)="subUnit()"></co-icon>
179
+ <div class="day-description" [textContent]="day.description"></div>
180
+ <co-icon class="pointer-hover no-user-select add-unit-icon dark"
181
+ [iconData]="iconCacheService.getIcon(icons.ArrowPointRight)" (click)="addUnit()"></co-icon>
182
+ </div>
183
+ </div>
184
+ <div class="agenda-header-wrapper" *ngIf="view === viewTypes.WeekView">
185
+
186
+ <div class="week-day-label" *ngFor="let weekDay of weekDays; let index = index"
187
+ [class.selected]="weekDay.weekdaySelected" (click)="setUnit(weekDay)">
188
+ <co-icon *ngIf="index === 0 && showBackButton" class="pointer-hover no-user-select sub-unit-icon dark"
189
+ [iconData]="iconCacheService.getIcon(icons.ArrowPointLeft)" (click)="subUnit()"></co-icon>
190
+ <div *ngIf="weekDay.newMonth" [textContent]="weekDay.weekdayMonthLong + ' ' + weekDay.weekdayYear"
191
+ class="month-description"></div>
192
+ <div class="weekday-value"
193
+ [textContent]="weekDay.weekdayLong + ' ' + weekDay.weekdayDay + ' ' + weekDay.weekdayMonthLong + ' ' + weekDay.weekdayYear "></div>
194
+ <!-- <div class="weekday-description" [textContent]="weekDay.weekdayYear"></div>-->
195
+ <co-icon *ngIf="index === 6" class="pointer-hover no-user-select add-unit-icon dark"
196
+ [iconData]="iconCacheService.getIcon(icons.ArrowPointRight)" (click)="addUnit()"></co-icon>
197
+ </div>
198
+ </div>
199
+
200
+
201
+ <div class="agenda-header-wrapper" *ngIf="view === viewTypes.WeekSelectView">
202
+ <div class="week-day-label" *ngFor="let weekDay of weekDays; let index = index"
203
+ [class.selected]="weekDay.weekdaySelected"
204
+ [class.selectable]="weekDay.events && weekDay.events.length > 0"
205
+ (click)="setUnit(weekDay)">
206
+ <co-icon *ngIf="index === 0 && showBackButton" class="pointer-hover no-user-select sub-unit-icon dark"
207
+ [iconData]="iconCacheService.getIcon(icons.ArrowPointLeft)" (click)="subUnit()"></co-icon>
208
+ <div class="weekday-description" [textContent]="weekDay.weekdayShort"></div>
209
+ <div class="weekday-value" [textContent]="weekDay.weekdayDay + ' ' + weekDay.weekdayMonthShort"></div>
210
+ <co-icon *ngIf="index === 6" class="pointer-hover no-user-select add-unit-icon dark"
211
+ [iconData]="iconCacheService.getIcon(icons.ArrowPointRight)" (click)="addUnit()"></co-icon>
212
+ </div>
213
+ </div>
214
+ <div class="agenda-header-wrapper" *ngIf="view === viewTypes.MonthView">
215
+ <div class="week-day-label" *ngFor="let weekDay of weekDays; let index = index">
216
+ <co-icon *ngIf="index === 0 && showBackButton" class="pointer-hover no-user-select sub-unit-icon dark"
217
+ [iconData]="iconCacheService.getIcon(icons.ArrowPointLeft)" (click)="subUnit()"></co-icon>
218
+ <div class="weekday-description" [textContent]="weekDay.weekdayShort"></div>
219
+ <co-icon *ngIf="index === 6" class="pointer-hover no-user-select add-unit-icon dark"
220
+ [iconData]="iconCacheService.getIcon(icons.ArrowPointRight)" (click)="addUnit()"></co-icon>
221
+ </div>
222
+ </div>
223
+ `,
224
+ encapsulation: ViewEncapsulation.None
225
+ },] }
226
+ ];
227
+ AgendaHeaderComponent.ctorParameters = () => [
228
+ { type: LanguageCode, decorators: [{ type: Inject, args: [LOCALE_ID,] }] },
229
+ { type: ElementRef },
230
+ { type: Renderer2 },
231
+ { type: NgZone },
232
+ { type: IconCacheService }
233
+ ];
234
+ AgendaHeaderComponent.propDecorators = {
235
+ selectedDate: [{ type: Input }],
236
+ view: [{ type: Input }],
237
+ firstAvailableDate: [{ type: Input }],
238
+ eventsPerDay: [{ type: Input }],
239
+ viewChange: [{ type: Output }],
240
+ selectedDateChange: [{ type: Output }],
241
+ rangeChange: [{ type: Output }]
242
+ };
243
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbmRhLWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWRjb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9kYXRlLXBsYW5uaW5nL2NvbXBvbmVudC9hZ2VuZGEvYWdlbmRhLWhlYWRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLFNBQVMsRUFDVCxNQUFNLEVBR04sTUFBTSxFQUNOLFNBQVMsRUFBRSxpQkFBaUIsRUFDN0IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQ2pFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUdqRSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDL0QsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBQy9ELE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQTtBQUMvQyxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFFaEQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBMkR4RSxNQUFNLE9BQU8scUJBQXFCO0lBd0Q5QixZQUN3QyxPQUFxQixFQUNqRCxXQUF1QixFQUN2QixTQUFvQixFQUNwQixPQUFlLEVBQ2hCLGdCQUFrQztRQUpMLFlBQU8sR0FBUCxPQUFPLENBQWM7UUFDakQsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDdkIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2hCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUE1RDdCLFVBQUssR0FBZ0IsSUFBSSxDQUFDO1FBQzFCLGNBQVMsR0FBd0IsWUFBWSxDQUFDO1FBRTdDLG1CQUFjLEdBQVcsRUFBRSxDQUFDO1FBRXRDLFVBQUssR0FBUyxJQUFJLElBQUksRUFBRSxDQUFDO1FBa0N6QixlQUFVLEdBQStCLElBQUksWUFBWSxFQUFnQixDQUFDO1FBRzFFLHVCQUFrQixHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBR2xFLGdCQUFXLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFFM0QsYUFBUSxHQUFjLEVBQUUsQ0FBQztRQUN6QixRQUFHLEdBQVEsUUFBUSxDQUFDO1FBQ3BCLG1CQUFjLEdBQVksSUFBSSxDQUFDO1FBSTlCLGtCQUFhLEdBQXdCLEVBQUUsQ0FBQztRQWlGeEMsY0FBUyxHQUFrQixHQUF3QixFQUFFO1lBQ3pELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN2QixDQUFDLENBQUEsQ0FBQTtJQTFFRCxDQUFDO0lBdkRELElBQ1csWUFBWSxDQUFDLEtBQVc7UUFDL0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBVyxZQUFZO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM5QixDQUFDO0lBS0QsSUFDVyxrQkFBa0IsQ0FBQyxLQUFXO1FBQ3JDLElBQUksS0FBSyxFQUFFO1lBQ1AsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1NBQzdCO0lBQ0wsQ0FBQztJQUVELElBQVcsa0JBQWtCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUNXLFlBQVksQ0FBQyxLQUEwQjtRQUM5QyxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUMzQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBNEJELFdBQVc7UUFDUCxNQUFNLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQ2hDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3RELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELHFCQUFxQjtRQUNqQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVNLE9BQU87UUFDVixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbkIsTUFBTSxPQUFPLEdBQVMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ2xELFFBQVEsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDZixLQUFLLFlBQVksQ0FBQyxPQUFPO29CQUNyQixPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQ2pELE1BQU07Z0JBQ1YsS0FBSyxZQUFZLENBQUMsUUFBUTtvQkFDdEIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUNqRCxNQUFNO2dCQUNWLEtBQUssWUFBWSxDQUFDLGNBQWM7b0JBQzVCLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFDakQsTUFBTTtnQkFDVixLQUFLLFlBQVksQ0FBQyxTQUFTO29CQUN2QixPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQ25ELE1BQU07YUFDYjtZQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDO1lBQzVCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUM1QztJQUNMLENBQUM7SUFFTSxPQUFPO1FBQ1YsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ25CLE1BQU0sT0FBTyxHQUFTLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNsRCxRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQ2YsS0FBSyxZQUFZLENBQUMsT0FBTztvQkFDckIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUNqRCxNQUFNO2dCQUNWLEtBQUssWUFBWSxDQUFDLFFBQVE7b0JBQ3RCLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFDakQsTUFBTTtnQkFDVixLQUFLLFlBQVksQ0FBQyxjQUFjO29CQUM1QixPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQ2pELE1BQU07Z0JBQ1YsS0FBSyxZQUFZLENBQUMsU0FBUztvQkFDdkIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUNuRCxNQUFNO2FBQ2I7WUFDRCxJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQztZQUM1QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDNUM7SUFDTCxDQUFDO0lBRU0sT0FBTyxDQUFDLE9BQWdCO1FBQzNCLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztRQUNqQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRU0sYUFBYSxDQUFDLElBQWtCO1FBQ25DLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFNRDs7T0FFRztJQUNLLFdBQVc7UUFDZixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQ25CLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLENBQUM7U0FDdkk7SUFDTCxDQUFDO0lBRU8sa0JBQWtCO1FBQ3RCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNuQixRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQ2YsS0FBSyxZQUFZLENBQUMsT0FBTztvQkFDckIsTUFBTSxHQUFHLEdBQVEsSUFBSSxHQUFHLEVBQUUsQ0FBQztvQkFDM0IsR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBQ3ZDLE1BQU0sT0FBTyxHQUFRLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsQ0FBQztvQkFDeEUsR0FBRyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7b0JBQzlFLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO29CQUNmLE1BQU07Z0JBQ1YsS0FBSyxZQUFZLENBQUMsUUFBUTtvQkFDdEIsTUFBTSxRQUFRLEdBQVMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBQ3RFLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQztvQkFDbEMsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUU7d0JBQ3pCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUM7cUJBQ3hIO29CQUNELE1BQU07Z0JBQ1YsS0FBSyxZQUFZLENBQUMsY0FBYztvQkFDNUIsTUFBTSxjQUFjLEdBQVMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBQzVFLElBQUksQ0FBQyxRQUFRLEdBQUcsY0FBYyxDQUFDLFFBQVEsQ0FBQztvQkFDeEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFXLEVBQUUsRUFBRTt3QkFDbEMsTUFBTSxRQUFRLEdBQXNCLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO3dCQUNySyxJQUFJLFFBQVEsRUFBRTs0QkFDVixFQUFFLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7eUJBQy9COzZCQUFNOzRCQUNILEVBQUUsQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO3lCQUM5QjtvQkFDTCxDQUFDLENBQUMsQ0FBQztvQkFDSCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTt3QkFDekIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQztxQkFDeEg7b0JBQ0QsTUFBTTtnQkFDVixLQUFLLFlBQVksQ0FBQyxTQUFTO29CQUN2QixNQUFNLFdBQVcsR0FBUyxhQUFhLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztvQkFDekUsSUFBSSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDO29CQUNyQyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTt3QkFDekIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQztxQkFDeEg7b0JBQ0QsTUFBTTthQUNiO1NBQ0o7SUFDTCxDQUFDOzs7WUF2UEosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxlQUFlO2dCQUN6QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FvRFQ7Z0JBQ0gsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7YUFDdEM7OztZQW5FTyxZQUFZLHVCQTZIWCxNQUFNLFNBQUMsU0FBUztZQXpJdkIsVUFBVTtZQVNWLFNBQVM7WUFKVCxNQUFNO1lBZ0JBLGdCQUFnQjs7OzJCQW1FbkIsS0FBSzttQkFVTCxLQUFLO2lDQUdMLEtBQUs7MkJBWUwsS0FBSzt5QkFNTCxNQUFNO2lDQUdOLE1BQU07MEJBR04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJDb250ZW50Q2hlY2tlZCxcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5qZWN0LFxyXG4gIElucHV0LFxyXG4gIExPQ0FMRV9JRCxcclxuICBOZ1pvbmUsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgUmVuZGVyZXIyLCBWaWV3RW5jYXBzdWxhdGlvblxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7Q2FsZW5kYXJWaWV3fSBmcm9tIFwiLi4vLi4vLi4vLi4vZW51bS9jYWxlbmRhci12aWV3LmVudW1cIjtcclxuaW1wb3J0IHtMYW5ndWFnZUNvZGV9IGZyb20gXCIuLi8uLi8uLi8uLi9lbnVtL2xhbmd1YWdlLWNvZGUuZW51bVwiO1xyXG5pbXBvcnQge1dlZWtkYXl9IGZyb20gXCIuLi8uLi8uLi8uLi9tb2RlbC93ZWVrZGF5Lm1vZGVsXCI7XHJcbmltcG9ydCB7V2Vla30gZnJvbSBcIi4uLy4uLy4uLy4uL21vZGVsL3dlZWsubW9kZWxcIjtcclxuaW1wb3J0IHtDYWxlbmRhclV0aWxzfSBmcm9tIFwiLi4vLi4vLi4vLi4vdXRpbHMvY2FsZW5kYXIudXRpbHNcIjtcclxuaW1wb3J0IHtOVUxMX0RBWX0gZnJvbSBcIi4uLy4uLy4uLy4uL21vZGVsL2FnZW5kYS1udWxsLW9iamVjdHNcIjtcclxuaW1wb3J0IHtEYXl9IGZyb20gXCIuLi8uLi8uLi8uLi9tb2RlbC9kYXkubW9kZWxcIlxyXG5pbXBvcnQge0ljb259IGZyb20gXCIuLi8uLi8uLi8uLi9lbnVtL2ljb24uZW51bVwiO1xyXG5pbXBvcnQge0FnZW5kYUV2ZW50UGVyRGF5fSBmcm9tIFwiLi4vLi4vLi4vLi4vbW9kZWwvYWdlbmRhLWV2ZW50LXBlci1kYXkubW9kZWxcIjtcclxuaW1wb3J0IHtEYXRlVXRpbHN9IGZyb20gXCIuLi8uLi8uLi8uLi91dGlscy9kYXRlLXV0aWxzXCI7XHJcbmltcG9ydCB7SWNvbkNhY2hlU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uLy4uL3NlcnZpY2UvaWNvbi1jYWNoZS5zZXJ2aWNlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcImFnZW5kYS1oZWFkZXJcIixcclxuICAgIHRlbXBsYXRlOiBgXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFnZW5kYS1oZWFkZXItd3JhcHBlclwiICpuZ0lmPVwidmlldyA9PT0gdmlld1R5cGVzLkRheVZpZXdcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhvdXItbGFiZWwtcGxhY2Vob2xkZXJcIj5cclxuICAgICAgICAgICAgICAgIDx2aWV3LXNlbGVjdCBbc2VsZWN0ZWRWaWV3XT1cInZpZXdcIiAoc2VsZWN0ZWRWaWV3Q2hhbmdlKT1cImNoYW5nZVRoZVZpZXcoJGV2ZW50KVwiPjwvdmlldy1zZWxlY3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2Vlay1kYXktbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgIDxjby1pY29uIGNsYXNzPVwicG9pbnRlci1ob3ZlciBuby11c2VyLXNlbGVjdCBzdWItdW5pdC1pY29uIGRhcmtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5BcnJvd1BvaW50TGVmdClcIiAoY2xpY2spPVwic3ViVW5pdCgpXCI+PC9jby1pY29uPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRheS1kZXNjcmlwdGlvblwiIFt0ZXh0Q29udGVudF09XCJkYXkuZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxjby1pY29uIGNsYXNzPVwicG9pbnRlci1ob3ZlciBuby11c2VyLXNlbGVjdCBhZGQtdW5pdC1pY29uIGRhcmtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5BcnJvd1BvaW50UmlnaHQpXCIgKGNsaWNrKT1cImFkZFVuaXQoKVwiPjwvY28taWNvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFnZW5kYS1oZWFkZXItd3JhcHBlclwiICpuZ0lmPVwidmlldyA9PT0gdmlld1R5cGVzLldlZWtWaWV3XCI+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2Vlay1kYXktbGFiZWxcIiAqbmdGb3I9XCJsZXQgd2Vla0RheSBvZiB3ZWVrRGF5czsgbGV0IGluZGV4ID0gaW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJ3ZWVrRGF5LndlZWtkYXlTZWxlY3RlZFwiIChjbGljayk9XCJzZXRVbml0KHdlZWtEYXkpXCI+XHJcbiAgICAgICAgICAgICAgICA8Y28taWNvbiAqbmdJZj1cImluZGV4ID09PSAwICYmIHNob3dCYWNrQnV0dG9uXCIgY2xhc3M9XCJwb2ludGVyLWhvdmVyIG5vLXVzZXItc2VsZWN0IHN1Yi11bml0LWljb24gZGFya1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLkFycm93UG9pbnRMZWZ0KVwiIChjbGljayk9XCJzdWJVbml0KClcIj48L2NvLWljb24+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwid2Vla0RheS5uZXdNb250aFwiIFt0ZXh0Q29udGVudF09XCJ3ZWVrRGF5LndlZWtkYXlNb250aExvbmcgKyAnICcgKyB3ZWVrRGF5LndlZWtkYXlZZWFyXCJcclxuICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtb250aC1kZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndlZWtkYXktdmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbdGV4dENvbnRlbnRdPVwid2Vla0RheS53ZWVrZGF5TG9uZyArICcgJyArIHdlZWtEYXkud2Vla2RheURheSArICcgJyArIHdlZWtEYXkud2Vla2RheU1vbnRoTG9uZyArICcgJyArIHdlZWtEYXkud2Vla2RheVllYXIgXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3ZWVrZGF5LWRlc2NyaXB0aW9uXCIgW3RleHRDb250ZW50XT1cIndlZWtEYXkud2Vla2RheVllYXJcIj48L2Rpdj4tLT5cclxuICAgICAgICAgICAgICAgIDxjby1pY29uICpuZ0lmPVwiaW5kZXggPT09IDZcIiBjbGFzcz1cInBvaW50ZXItaG92ZXIgbm8tdXNlci1zZWxlY3QgYWRkLXVuaXQtaWNvbiBkYXJrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuQXJyb3dQb2ludFJpZ2h0KVwiIChjbGljayk9XCJhZGRVbml0KClcIj48L2NvLWljb24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFnZW5kYS1oZWFkZXItd3JhcHBlclwiICpuZ0lmPVwidmlldyA9PT0gdmlld1R5cGVzLldlZWtTZWxlY3RWaWV3XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3ZWVrLWRheS1sYWJlbFwiICpuZ0Zvcj1cImxldCB3ZWVrRGF5IG9mIHdlZWtEYXlzOyBsZXQgaW5kZXggPSBpbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cIndlZWtEYXkud2Vla2RheVNlbGVjdGVkXCJcclxuICAgICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0YWJsZV09XCJ3ZWVrRGF5LmV2ZW50cyAmJiB3ZWVrRGF5LmV2ZW50cy5sZW5ndGggPiAwXCJcclxuICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2V0VW5pdCh3ZWVrRGF5KVwiPlxyXG4gICAgICAgICAgICAgICAgPGNvLWljb24gKm5nSWY9XCJpbmRleCA9PT0gMCAmJiBzaG93QmFja0J1dHRvblwiIGNsYXNzPVwicG9pbnRlci1ob3ZlciBuby11c2VyLXNlbGVjdCBzdWItdW5pdC1pY29uIGRhcmtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5BcnJvd1BvaW50TGVmdClcIiAoY2xpY2spPVwic3ViVW5pdCgpXCI+PC9jby1pY29uPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndlZWtkYXktZGVzY3JpcHRpb25cIiBbdGV4dENvbnRlbnRdPVwid2Vla0RheS53ZWVrZGF5U2hvcnRcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3ZWVrZGF5LXZhbHVlXCIgW3RleHRDb250ZW50XT1cIndlZWtEYXkud2Vla2RheURheSArICcgJyArIHdlZWtEYXkud2Vla2RheU1vbnRoU2hvcnRcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxjby1pY29uICpuZ0lmPVwiaW5kZXggPT09IDZcIiBjbGFzcz1cInBvaW50ZXItaG92ZXIgbm8tdXNlci1zZWxlY3QgYWRkLXVuaXQtaWNvbiBkYXJrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuQXJyb3dQb2ludFJpZ2h0KVwiIChjbGljayk9XCJhZGRVbml0KClcIj48L2NvLWljb24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhZ2VuZGEtaGVhZGVyLXdyYXBwZXJcIiAqbmdJZj1cInZpZXcgPT09IHZpZXdUeXBlcy5Nb250aFZpZXdcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndlZWstZGF5LWxhYmVsXCIgKm5nRm9yPVwibGV0IHdlZWtEYXkgb2Ygd2Vla0RheXM7IGxldCBpbmRleCA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICA8Y28taWNvbiAqbmdJZj1cImluZGV4ID09PSAwICYmIHNob3dCYWNrQnV0dG9uXCIgY2xhc3M9XCJwb2ludGVyLWhvdmVyIG5vLXVzZXItc2VsZWN0IHN1Yi11bml0LWljb24gZGFya1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLkFycm93UG9pbnRMZWZ0KVwiIChjbGljayk9XCJzdWJVbml0KClcIj48L2NvLWljb24+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2Vla2RheS1kZXNjcmlwdGlvblwiIFt0ZXh0Q29udGVudF09XCJ3ZWVrRGF5LndlZWtkYXlTaG9ydFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGNvLWljb24gKm5nSWY9XCJpbmRleCA9PT0gNlwiIGNsYXNzPVwicG9pbnRlci1ob3ZlciBuby11c2VyLXNlbGVjdCBhZGQtdW5pdC1pY29uIGRhcmtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5BcnJvd1BvaW50UmlnaHQpXCIgKGNsaWNrKT1cImFkZFVuaXQoKVwiPjwvY28taWNvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICBgLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIEFnZW5kYUhlYWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlckNvbnRlbnRDaGVja2VkIHtcclxuICAgIHB1YmxpYyByZWFkb25seSBpY29uczogdHlwZW9mIEljb24gPSBJY29uO1xyXG4gICAgcHVibGljIHJlYWRvbmx5IHZpZXdUeXBlczogdHlwZW9mIENhbGVuZGFyVmlldyA9IENhbGVuZGFyVmlldztcclxuXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNjcm9sbGJhcldpZHRoOiBudW1iZXIgPSAxNTtcclxuXHJcbiAgICBwdWJsaWMgdG9kYXk6IERhdGUgPSBuZXcgRGF0ZSgpO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2V0IHNlbGVjdGVkRGF0ZSh2YWx1ZTogRGF0ZSkge1xyXG4gICAgICAgIHRoaXMuX3NlbGVjdGVkRGF0ZSA9IG5ldyBEYXRlKHZhbHVlKTtcclxuICAgICAgICB0aGlzLl9wcmVwYXJlSGVhZGVyRGF0YSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgc2VsZWN0ZWREYXRlKCk6IERhdGUge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZERhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyB2aWV3OiBDYWxlbmRhclZpZXc7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZXQgZmlyc3RBdmFpbGFibGVEYXRlKHZhbHVlOiBEYXRlKSB7XHJcbiAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2ZpcnN0QXZhaWxhYmxlRGF0ZSA9IG5ldyBEYXRlKHZhbHVlKTtcclxuICAgICAgICAgICAgdGhpcy5fcHJlcGFyZUhlYWRlckRhdGEoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBmaXJzdEF2YWlsYWJsZURhdGUoKTogRGF0ZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpcnN0QXZhaWxhYmxlRGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNldCBldmVudHNQZXJEYXkodmFsdWU6IEFnZW5kYUV2ZW50UGVyRGF5W10pIHtcclxuICAgICAgICB0aGlzLl9ldmVudHNQZXJEYXkgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLl9wcmVwYXJlSGVhZGVyRGF0YSgpO1xyXG4gICAgfVxyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIHZpZXdDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDYWxlbmRhclZpZXc+ID0gbmV3IEV2ZW50RW1pdHRlcjxDYWxlbmRhclZpZXc+KCk7XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgc2VsZWN0ZWREYXRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgcmFuZ2VDaGFuZ2U6IEV2ZW50RW1pdHRlcjxEYXRlPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcclxuXHJcbiAgICBwdWJsaWMgd2Vla0RheXM6IFdlZWtkYXlbXSA9IFtdO1xyXG4gICAgcHVibGljIGRheTogRGF5ID0gTlVMTF9EQVk7XHJcbiAgICBwdWJsaWMgc2hvd0JhY2tCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIHByaXZhdGUgX3NlbGVjdGVkRGF0ZTogRGF0ZTtcclxuICAgIHByaXZhdGUgX2ZpcnN0QXZhaWxhYmxlRGF0ZTogRGF0ZTtcclxuICAgIHByaXZhdGUgX2V2ZW50c1BlckRheTogQWdlbmRhRXZlbnRQZXJEYXlbXSA9IFtdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIEBJbmplY3QoTE9DQUxFX0lEKSBwcml2YXRlIHJlYWRvbmx5IF9sb2NhbGU6IExhbmd1YWdlQ29kZSxcclxuICAgICAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgICAgIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICAgICAgcHJpdmF0ZSBfbmdab25lOiBOZ1pvbmUsXHJcbiAgICAgICAgcHVibGljIGljb25DYWNoZVNlcnZpY2U6IEljb25DYWNoZVNlcnZpY2VcclxuICAgICkge1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIHRoaXMuX29uUmVzaXplKTtcclxuICAgICAgICB0aGlzLl9lbGVtZW50UmVmID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XHJcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIHRoaXMuX29uUmVzaXplKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fcmVzaXplSG9zdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdWJVbml0KCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkRGF0ZSkge1xyXG4gICAgICAgICAgICBjb25zdCBuZXdEYXRlOiBEYXRlID0gbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGUpO1xyXG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMudmlldykge1xyXG4gICAgICAgICAgICAgICAgY2FzZSBDYWxlbmRhclZpZXcuRGF5VmlldzpcclxuICAgICAgICAgICAgICAgICAgICBuZXdEYXRlLnNldERhdGUodGhpcy5zZWxlY3RlZERhdGUuZ2V0RGF0ZSgpIC0gMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIENhbGVuZGFyVmlldy5XZWVrVmlldzpcclxuICAgICAgICAgICAgICAgICAgICBuZXdEYXRlLnNldERhdGUodGhpcy5zZWxlY3RlZERhdGUuZ2V0RGF0ZSgpIC0gNyk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIENhbGVuZGFyVmlldy5XZWVrU2VsZWN0VmlldzpcclxuICAgICAgICAgICAgICAgICAgICBuZXdEYXRlLnNldERhdGUodGhpcy5zZWxlY3RlZERhdGUuZ2V0RGF0ZSgpIC0gNyk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIENhbGVuZGFyVmlldy5Nb250aFZpZXc6XHJcbiAgICAgICAgICAgICAgICAgICAgbmV3RGF0ZS5zZXRNb250aCh0aGlzLnNlbGVjdGVkRGF0ZS5nZXRNb250aCgpIC0gMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSBuZXdEYXRlO1xyXG4gICAgICAgICAgICB0aGlzLnJhbmdlQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZERhdGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYWRkVW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZERhdGUpIHtcclxuICAgICAgICAgICAgY29uc3QgbmV3RGF0ZTogRGF0ZSA9IG5ldyBEYXRlKHRoaXMuc2VsZWN0ZWREYXRlKTtcclxuICAgICAgICAgICAgc3dpdGNoICh0aGlzLnZpZXcpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgQ2FsZW5kYXJWaWV3LkRheVZpZXc6XHJcbiAgICAgICAgICAgICAgICAgICAgbmV3RGF0ZS5zZXREYXRlKHRoaXMuc2VsZWN0ZWREYXRlLmdldERhdGUoKSArIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBDYWxlbmRhclZpZXcuV2Vla1ZpZXc6XHJcbiAgICAgICAgICAgICAgICAgICAgbmV3RGF0ZS5zZXREYXRlKHRoaXMuc2VsZWN0ZWREYXRlLmdldERhdGUoKSArIDcpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBDYWxlbmRhclZpZXcuV2Vla1NlbGVjdFZpZXc6XHJcbiAgICAgICAgICAgICAgICAgICAgbmV3RGF0ZS5zZXREYXRlKHRoaXMuc2VsZWN0ZWREYXRlLmdldERhdGUoKSArIDcpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBDYWxlbmRhclZpZXcuTW9udGhWaWV3OlxyXG4gICAgICAgICAgICAgICAgICAgIG5ld0RhdGUuc2V0TW9udGgodGhpcy5zZWxlY3RlZERhdGUuZ2V0TW9udGgoKSArIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gbmV3RGF0ZTtcclxuICAgICAgICAgICAgdGhpcy5yYW5nZUNoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWREYXRlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNldFVuaXQod2Vla0RheTogV2Vla2RheSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gd2Vla0RheS5kYXRlO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZERhdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjaGFuZ2VUaGVWaWV3KHZpZXc6IENhbGVuZGFyVmlldyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudmlldyA9IHZpZXc7XHJcbiAgICAgICAgdGhpcy52aWV3Q2hhbmdlLmVtaXQodmlldyk7XHJcbiAgICAgICAgdGhpcy5fcHJlcGFyZUhlYWRlckRhdGEoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9vblJlc2l6ZTogRXZlbnRMaXN0ZW5lciA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcclxuICAgICAgICB0aGlzLl9yZXNpemVIb3N0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBOZWVkIHRvIHJlc2l6ZSB0aGUgaG9zdCBjb21wb25lbnQgdG8gc2l6ZSBpdCdzIGZpeGVkIHBvc2l0aW9uZWQgY2hpbGQgdGhyb3VnaCBjc3NcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfcmVzaXplSG9zdCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5fZWxlbWVudFJlZikge1xyXG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRTdHlsZShcclxuICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgXCJ3aWR0aFwiLCB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudC5jbGllbnRXaWR0aCAtIHRoaXMuc2Nyb2xsYmFyV2lkdGggKyBcInB4XCIpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9wcmVwYXJlSGVhZGVyRGF0YSgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZERhdGUpIHtcclxuICAgICAgICAgICAgc3dpdGNoICh0aGlzLnZpZXcpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgQ2FsZW5kYXJWaWV3LkRheVZpZXc6XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF5OiBEYXkgPSBuZXcgRGF5KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgZGF5LmRhdGUgPSBuZXcgRGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9uczogYW55ID0geyB5ZWFyOiBcIm51bWVyaWNcIiwgbW9udGg6IFwibG9uZ1wiLCBkYXk6IFwibnVtZXJpY1wiIH07XHJcbiAgICAgICAgICAgICAgICAgICAgZGF5LmRlc2NyaXB0aW9uID0gdGhpcy5zZWxlY3RlZERhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKHRoaXMuX2xvY2FsZSwgb3B0aW9ucyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXkgPSBkYXk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIENhbGVuZGFyVmlldy5XZWVrVmlldzpcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB3ZWVrVmlldzogV2VlayA9IENhbGVuZGFyVXRpbHMuR2V0RGF5c09mV2Vlayh0aGlzLnNlbGVjdGVkRGF0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53ZWVrRGF5cyA9IHdlZWtWaWV3LndlZWtEYXlzO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmZpcnN0QXZhaWxhYmxlRGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dCYWNrQnV0dG9uID0gdGhpcy53ZWVrRGF5cy5maW5kKHdkID0+IERhdGVVdGlscy5EYXRlc0VxdWFsKHRoaXMuZmlyc3RBdmFpbGFibGVEYXRlLCB3ZC5kYXRlKSkgPT09IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIENhbGVuZGFyVmlldy5XZWVrU2VsZWN0VmlldzpcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB3ZWVrU2VsZWN0VmlldzogV2VlayA9IENhbGVuZGFyVXRpbHMuR2V0RGF5c09mV2Vlayh0aGlzLnNlbGVjdGVkRGF0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53ZWVrRGF5cyA9IHdlZWtTZWxlY3RWaWV3LndlZWtEYXlzO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMud2Vla0RheXMuZm9yRWFjaCgod2Q6IFdlZWtkYXkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXZQZXJEYXk6IEFnZW5kYUV2ZW50UGVyRGF5ID0gdGhpcy5fZXZlbnRzUGVyRGF5ICYmIHRoaXMuX2V2ZW50c1BlckRheS5sZW5ndGggPiAwID8gdGhpcy5fZXZlbnRzUGVyRGF5LmZpbmQoZSA9PiBEYXRlVXRpbHMuRGF0ZXNFcXVhbChlLmRhdGUsIHdkLmRhdGUpKSA6IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldlBlckRheSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2QuZXZlbnRzID0gZXZQZXJEYXkuZXZlbnRzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Qud2Vla2RheVNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5maXJzdEF2YWlsYWJsZURhdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93QmFja0J1dHRvbiA9IHRoaXMud2Vla0RheXMuZmluZCh3ZCA9PiBEYXRlVXRpbHMuRGF0ZXNFcXVhbCh0aGlzLmZpcnN0QXZhaWxhYmxlRGF0ZSwgd2QuZGF0ZSkpID09PSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBDYWxlbmRhclZpZXcuTW9udGhWaWV3OlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHdlZWtPZk1vbnRoOiBXZWVrID0gQ2FsZW5kYXJVdGlscy5HZXREYXlzT2ZXZWVrKHRoaXMuc2VsZWN0ZWREYXRlKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLndlZWtEYXlzID0gd2Vla09mTW9udGgud2Vla0RheXM7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZmlyc3RBdmFpbGFibGVEYXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd0JhY2tCdXR0b24gPSB0aGlzLndlZWtEYXlzLmZpbmQod2QgPT4gRGF0ZVV0aWxzLkRhdGVzRXF1YWwodGhpcy5maXJzdEF2YWlsYWJsZURhdGUsIHdkLmRhdGUpKSA9PT0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=