@colijnit/sharedcomponents 1.0.57 → 1.0.59

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 (484) hide show
  1. package/README.md +24 -24
  2. package/bundles/colijnit-sharedcomponents.umd.js +9938 -6389
  3. package/bundles/colijnit-sharedcomponents.umd.js.map +1 -1
  4. package/colijnit-sharedcomponents.d.ts +91 -74
  5. package/colijnit-sharedcomponents.metadata.json +1 -1
  6. package/esm2015/colijnit-sharedcomponents.js +92 -75
  7. package/esm2015/lib/assets/dictionary/text.properties.js +11 -11
  8. package/esm2015/lib/businessobject/build-images-and-documentation-result.js +2 -0
  9. package/esm2015/lib/businessobject/co-document-right.bo.js +3 -0
  10. package/esm2015/lib/businessobject/drag-drop-container-element.js +2 -0
  11. package/esm2015/lib/businessobject/drag-drop-container.js +7 -0
  12. package/esm2015/lib/components/activity-list/activity-list.component.js +130 -0
  13. package/esm2015/lib/components/activity-list/activity-list.module.js +24 -0
  14. package/esm2015/lib/components/app-file-dropzone/app-file-dropzone.component.js +47 -0
  15. package/esm2015/lib/components/app-file-dropzone/app-file-dropzone.module.js +20 -0
  16. package/esm2015/lib/components/date-planning/component/agenda/agenda-base-view.component.js +61 -61
  17. package/esm2015/lib/components/date-planning/component/agenda/agenda-day-view.component.js +36 -36
  18. package/esm2015/lib/components/date-planning/component/agenda/agenda-event.component.js +56 -56
  19. package/esm2015/lib/components/date-planning/component/agenda/agenda-events.component.js +47 -47
  20. package/esm2015/lib/components/date-planning/component/agenda/agenda-half-hour-cell.component.js +68 -68
  21. package/esm2015/lib/components/date-planning/component/agenda/agenda-header.component.js +243 -243
  22. package/esm2015/lib/components/date-planning/component/agenda/agenda-hour-cell.component.js +36 -36
  23. package/esm2015/lib/components/date-planning/component/agenda/agenda-hour-view-labels.component.js +50 -50
  24. package/esm2015/lib/components/date-planning/component/agenda/agenda-hour-view.component.js +46 -46
  25. package/esm2015/lib/components/date-planning/component/agenda/agenda-month-view.component.js +61 -61
  26. package/esm2015/lib/components/date-planning/component/agenda/agenda-select-event.component.js +39 -39
  27. package/esm2015/lib/components/date-planning/component/agenda/agenda-view.component.js +35 -35
  28. package/esm2015/lib/components/date-planning/component/agenda/agenda-week-select-view.component.js +64 -64
  29. package/esm2015/lib/components/date-planning/component/agenda/agenda-week-view.component.js +48 -48
  30. package/esm2015/lib/components/date-planning/component/agenda/view-select.component.js +42 -42
  31. package/esm2015/lib/components/date-planning/component/calendar/calendar-all-months.component.js +34 -34
  32. package/esm2015/lib/components/date-planning/component/calendar/calendar-all-years.component.js +48 -48
  33. package/esm2015/lib/components/date-planning/component/calendar/calendar-header.component.js +107 -107
  34. package/esm2015/lib/components/date-planning/component/calendar/calendar-view.component.js +178 -178
  35. package/esm2015/lib/components/date-planning/component/calendar/calendar.component.js +34 -34
  36. package/esm2015/lib/components/date-planning/date-planning.component.js +113 -113
  37. package/esm2015/lib/components/date-planning/date-planning.module.js +63 -63
  38. package/esm2015/lib/components/docsign/component/signature/signature.component.js +75 -75
  39. package/esm2015/lib/components/docsign/component/signatures/signatures.component.js +44 -44
  40. package/esm2015/lib/components/docsign/docsign.component.js +242 -242
  41. package/esm2015/lib/components/docsign/docsign.module.js +23 -23
  42. package/esm2015/lib/components/file-upload/file-upload.component.js +189 -0
  43. package/esm2015/lib/components/file-upload/file-upload.module.js +25 -0
  44. package/esm2015/lib/components/file-upload-popup/file-upload-popup.component.js +397 -0
  45. package/esm2015/lib/components/file-upload-popup/file-upload-popup.module.js +30 -0
  46. package/esm2015/lib/components/files-upload/components/base-file-upload.component.js +469 -0
  47. package/esm2015/lib/components/files-upload/components/drag-drop-container.component.js +115 -0
  48. package/esm2015/lib/components/files-upload/files-upload.component.js +131 -0
  49. package/esm2015/lib/components/files-upload/files-upload.module.js +47 -0
  50. package/esm2015/lib/components/image-display/image-display.component.js +36 -0
  51. package/esm2015/lib/components/image-display/image-display.module.js +23 -0
  52. package/esm2015/lib/components/key-pad/key-pad.component.js +200 -200
  53. package/esm2015/lib/components/key-pad/key-pad.module.js +22 -22
  54. package/esm2015/lib/components/layout-switcher/layout-switcher.component.js +74 -74
  55. package/esm2015/lib/components/layout-switcher/layout-switcher.module.js +21 -21
  56. package/esm2015/lib/components/linear-gauge/co-linear-gauge.component.js +59 -59
  57. package/esm2015/lib/components/linear-gauge/co-linear-gauge.module.js +19 -19
  58. package/esm2015/lib/components/multi-property-toggler/multiple-property-toggler.component.js +89 -0
  59. package/esm2015/lib/components/multi-property-toggler/multiple-property-toggler.module.js +21 -0
  60. package/esm2015/lib/components/send-method-dialog/components/layout-selection/layout-selection.component.js +79 -79
  61. package/esm2015/lib/components/send-method-dialog/components/layout-selection/layout-selection.module.js +21 -21
  62. package/esm2015/lib/components/send-method-dialog/components/printer-selection/printer-selection.component.js +85 -85
  63. package/esm2015/lib/components/send-method-dialog/components/printer-selection/printer-selection.module.js +21 -21
  64. package/esm2015/lib/components/send-method-dialog/components/send-method-email/send-method-email.component.js +64 -64
  65. package/esm2015/lib/components/send-method-dialog/components/send-method-email/send-method-email.module.js +26 -26
  66. package/esm2015/lib/components/send-method-dialog/components/send-method-pdf/send-method-pdf.component.js +40 -40
  67. package/esm2015/lib/components/send-method-dialog/components/send-method-pdf/send-method-pdf.module.js +23 -23
  68. package/esm2015/lib/components/send-method-dialog/components/send-method-printer/send-method-printer.component.js +61 -61
  69. package/esm2015/lib/components/send-method-dialog/components/send-method-printer/send-method-printer.module.js +28 -28
  70. package/esm2015/lib/components/send-method-dialog/components/signature-button/signature-button.component.js +38 -38
  71. package/esm2015/lib/components/send-method-dialog/components/signature-button/signature-button.module.js +21 -21
  72. package/esm2015/lib/components/send-method-dialog/model/email-address-viewmodel.js +7 -7
  73. package/esm2015/lib/components/send-method-dialog/send-method-dialog.component.js +258 -258
  74. package/esm2015/lib/components/send-method-dialog/send-method-dialog.module.js +35 -35
  75. package/esm2015/lib/components/send-method-dialog/send-method-params.interface.js +2 -2
  76. package/esm2015/lib/components/send-method-dialog/service/send-method.service.js +59 -59
  77. package/esm2015/lib/components/simple-tags/simple-tags.component.js +229 -229
  78. package/esm2015/lib/components/simple-tags/simple-tags.module.js +26 -26
  79. package/esm2015/lib/components/statusbar/statusbar-popup.component.js +97 -97
  80. package/esm2015/lib/components/statusbar/statusbar.component.js +81 -81
  81. package/esm2015/lib/components/statusbar/statusbar.module.js +27 -27
  82. package/esm2015/lib/components/stock/components/allocation-stock-history/allocation-stock-history.component.js +47 -47
  83. package/esm2015/lib/components/stock/components/order-commission-stock-history/order-commission-stock-history.component.js +47 -47
  84. package/esm2015/lib/components/stock/components/order-stock-history/order-stock-history.component.js +47 -47
  85. package/esm2015/lib/components/stock/components/order-stock-tab/order-stock-tab.component.js +47 -47
  86. package/esm2015/lib/components/stock/components/order-supply-stock-history/order-supply-stock-history.component.js +47 -47
  87. package/esm2015/lib/components/stock/components/order-tab/order-tab.component.js +67 -67
  88. package/esm2015/lib/components/stock/components/stock-history/stock-history.component.js +53 -53
  89. package/esm2015/lib/components/stock/components/stock-location/stock-location.component.js +240 -240
  90. package/esm2015/lib/components/stock/components/stock-prognose/stock-prognose.component.js +52 -52
  91. package/esm2015/lib/components/stock/components/stock-tab/stock-tab.component.js +41 -41
  92. package/esm2015/lib/components/stock/localization/translation.js +63 -63
  93. package/esm2015/lib/components/stock/stock-history-tabs/stock-history-tabs.component.js +33 -33
  94. package/esm2015/lib/components/stock/stock-information/stock-information.component.js +48 -48
  95. package/esm2015/lib/components/stock/stock-information-grid/stock-information-grid.component.js +457 -457
  96. package/esm2015/lib/components/stock/stock-tabs/stock-tabs.component.js +241 -241
  97. package/esm2015/lib/components/stock/stock-transfer/co-drop-down-list-fields.interface.js +2 -2
  98. package/esm2015/lib/components/stock/stock-transfer/stock-change-amount.component.js +72 -72
  99. package/esm2015/lib/components/stock/stock-transfer/stock-transfer.component.js +149 -149
  100. package/esm2015/lib/components/stock/stock.component.js +193 -193
  101. package/esm2015/lib/components/stock/stock.module.js +80 -80
  102. package/esm2015/lib/components/stock-statusbar/stock-statusbar.component.js +23 -23
  103. package/esm2015/lib/components/stock-statusbar/stock-statusbar.module.js +19 -19
  104. package/esm2015/lib/components/tab-bar/tab-bar.component.js +88 -88
  105. package/esm2015/lib/components/tab-bar/tab-bar.module.js +21 -21
  106. package/esm2015/lib/components/tab-bar/tab.interface.js +2 -2
  107. package/esm2015/lib/components/tile-renderer/tile-render.component.js +80 -0
  108. package/esm2015/lib/components/tile-renderer/tile-render.module.js +26 -0
  109. package/esm2015/lib/decorator/input-boolean.decorator.js +34 -0
  110. package/esm2015/lib/enum/calendar-view.enum.js +9 -9
  111. package/esm2015/lib/enum/document-email-report.enum.js +18 -0
  112. package/esm2015/lib/enum/domain-multiple-name.enum.js +13 -0
  113. package/esm2015/lib/enum/file-type.js +14 -0
  114. package/esm2015/lib/enum/files-upload-config-objects.js +3 -0
  115. package/esm2015/lib/enum/gauge-color.enum.js +10 -10
  116. package/esm2015/lib/enum/icon.enum.js +44 -38
  117. package/esm2015/lib/enum/internal-param.enum.js +38 -0
  118. package/esm2015/lib/enum/keyboard-code.enum.js +32 -32
  119. package/esm2015/lib/enum/language-code.enum.js +8 -8
  120. package/esm2015/lib/enum/month.enum.js +17 -17
  121. package/esm2015/lib/enum/read-write-access-config-names.enum.js +2 -0
  122. package/esm2015/lib/enum/table-name.enum.js +86 -0
  123. package/esm2015/lib/enum/tag-category.enum.js +22 -0
  124. package/esm2015/lib/enum/tags-component-config-names.js +2 -0
  125. package/esm2015/lib/enum/thumb-three-way-state.js +19 -19
  126. package/esm2015/lib/enum/tile-size-type.js +7 -0
  127. package/esm2015/lib/enum/time-period.enum.js +11 -11
  128. package/esm2015/lib/event/co-drag-event.js +2 -0
  129. package/esm2015/lib/event/co-drop-event.js +2 -0
  130. package/esm2015/lib/interface/key-value-pair.js +2 -0
  131. package/esm2015/lib/interface/operation-callback-simple-function.js +4 -0
  132. package/esm2015/lib/localization/localization.module.js +19 -19
  133. package/esm2015/lib/localization/localize.pipe.js +26 -26
  134. package/esm2015/lib/localization/localize.service.js +30 -30
  135. package/esm2015/lib/localization/translation.js +3 -3
  136. package/esm2015/lib/model/agenda-event-per-day.model.js +6 -6
  137. package/esm2015/lib/model/agenda-event.model.js +8 -8
  138. package/esm2015/lib/model/agenda-null-objects.js +11 -11
  139. package/esm2015/lib/model/constant/all-months.js +17 -17
  140. package/esm2015/lib/model/date-range.js +5 -5
  141. package/esm2015/lib/model/day.model.js +7 -7
  142. package/esm2015/lib/model/icon-svg.js +43 -37
  143. package/esm2015/lib/model/month.model.js +11 -11
  144. package/esm2015/lib/model/send-method.js +8 -8
  145. package/esm2015/lib/model/settings.js +4 -4
  146. package/esm2015/lib/model/tag-tree-item.bo.js +16 -0
  147. package/esm2015/lib/model/time-window.bo.js +26 -26
  148. package/esm2015/lib/model/tree-object.js +15 -0
  149. package/esm2015/lib/model/week.model.js +6 -6
  150. package/esm2015/lib/model/weekday.model.js +10 -10
  151. package/esm2015/lib/pipe/array-number.pipe.js +15 -15
  152. package/esm2015/lib/pipe/file-type-image.pipe.js +51 -0
  153. package/esm2015/lib/pipe/master-pipes.js +9 -7
  154. package/esm2015/lib/pipe/ucfirst.pipe.js +16 -16
  155. package/esm2015/lib/service/dictionary.service.js +76 -76
  156. package/esm2015/lib/service/drag-drop.service.js +365 -0
  157. package/esm2015/lib/service/icon-cache.service.js +51 -51
  158. package/esm2015/lib/service/options.service.js +48 -48
  159. package/esm2015/lib/service/shared-connector.service.js +433 -424
  160. package/esm2015/lib/service/shared.service.js +60 -60
  161. package/esm2015/lib/service/stock.service.js +110 -110
  162. package/esm2015/lib/utils/array-utils.js +202 -0
  163. package/esm2015/lib/utils/calendar.utils.js +68 -68
  164. package/esm2015/lib/utils/check-precision-and-scale-result.js +2 -0
  165. package/esm2015/lib/utils/check-within-stepped-bounds-result.js +2 -0
  166. package/esm2015/lib/utils/co-document-shared-field-logic.js +50 -0
  167. package/esm2015/lib/utils/date-utils.js +264 -264
  168. package/esm2015/lib/utils/enum-utils.js +128 -0
  169. package/esm2015/lib/utils/function/not-nill.function.js +5 -5
  170. package/esm2015/lib/utils/is-nill.function.js +5 -0
  171. package/esm2015/lib/utils/map-utils.js +41 -41
  172. package/esm2015/lib/utils/number-utils.js +390 -0
  173. package/esm2015/lib/utils/object-utils.js +278 -0
  174. package/esm2015/lib/utils/ref-code-utils.js +49 -0
  175. package/esm2015/lib/utils/string-utils.js +93 -64
  176. package/esm2015/public-api.js +31 -27
  177. package/fesm2015/colijnit-sharedcomponents.js +10379 -6857
  178. package/fesm2015/colijnit-sharedcomponents.js.map +1 -1
  179. package/lib/assets/dictionary/text.properties.d.ts +3 -3
  180. package/lib/businessobject/build-images-and-documentation-result.d.ts +5 -0
  181. package/lib/businessobject/co-document-right.bo.d.ts +6 -0
  182. package/lib/businessobject/drag-drop-container-element.d.ts +6 -0
  183. package/lib/businessobject/drag-drop-container.d.ts +6 -0
  184. package/lib/components/access/read-write-access.scss +25 -0
  185. package/lib/components/access/style/_layout.scss +23 -0
  186. package/lib/components/access/style/_material-definition.scss +12 -0
  187. package/lib/components/access/style/_theme.scss +4 -0
  188. package/lib/components/access/style/material.scss +4 -0
  189. package/lib/components/activity-list/activity-list.component.d.ts +33 -0
  190. package/lib/components/activity-list/activity-list.module.d.ts +2 -0
  191. package/lib/components/activity-list/style/_layout.scss +68 -0
  192. package/lib/components/activity-list/style/_material-definition.scss +0 -0
  193. package/lib/components/activity-list/style/_theme.scss +4 -0
  194. package/lib/components/activity-list/style/material.scss +4 -0
  195. package/lib/components/app-file-dropzone/app-file-dropzone.component.d.ts +14 -0
  196. package/lib/components/app-file-dropzone/app-file-dropzone.module.d.ts +2 -0
  197. package/lib/components/app-file-dropzone/style/_layout.scss +61 -0
  198. package/lib/components/app-file-dropzone/style/_material-definition.scss +0 -0
  199. package/lib/components/app-file-dropzone/style/_theme.scss +4 -0
  200. package/lib/components/app-file-dropzone/style/material.scss +4 -0
  201. package/lib/components/date-planning/component/agenda/agenda-base-view.component.d.ts +21 -21
  202. package/lib/components/date-planning/component/agenda/agenda-day-view.component.d.ts +7 -7
  203. package/lib/components/date-planning/component/agenda/agenda-event.component.d.ts +18 -18
  204. package/lib/components/date-planning/component/agenda/agenda-events.component.d.ts +13 -13
  205. package/lib/components/date-planning/component/agenda/agenda-half-hour-cell.component.d.ts +18 -18
  206. package/lib/components/date-planning/component/agenda/agenda-header.component.d.ts +48 -48
  207. package/lib/components/date-planning/component/agenda/agenda-hour-cell.component.d.ts +9 -9
  208. package/lib/components/date-planning/component/agenda/agenda-hour-view-labels.component.d.ts +8 -8
  209. package/lib/components/date-planning/component/agenda/agenda-hour-view.component.d.ts +7 -7
  210. package/lib/components/date-planning/component/agenda/agenda-month-view.component.d.ts +10 -10
  211. package/lib/components/date-planning/component/agenda/agenda-select-event.component.d.ts +12 -12
  212. package/lib/components/date-planning/component/agenda/agenda-view.component.d.ts +12 -12
  213. package/lib/components/date-planning/component/agenda/agenda-week-select-view.component.d.ts +10 -10
  214. package/lib/components/date-planning/component/agenda/agenda-week-view.component.d.ts +9 -9
  215. package/lib/components/date-planning/component/agenda/style/_layout.scss +443 -443
  216. package/lib/components/date-planning/component/agenda/style/_material-definition.scss +12 -12
  217. package/lib/components/date-planning/component/agenda/style/_theme.scss +7 -7
  218. package/lib/components/date-planning/component/agenda/style/material.scss +5 -5
  219. package/lib/components/date-planning/component/agenda/view-select.component.d.ts +11 -11
  220. package/lib/components/date-planning/component/calendar/calendar-all-months.component.d.ts +9 -9
  221. package/lib/components/date-planning/component/calendar/calendar-all-years.component.d.ts +9 -9
  222. package/lib/components/date-planning/component/calendar/calendar-header.component.d.ts +23 -23
  223. package/lib/components/date-planning/component/calendar/calendar-view.component.d.ts +31 -31
  224. package/lib/components/date-planning/component/calendar/calendar.component.d.ts +10 -10
  225. package/lib/components/date-planning/component/calendar/style/_layout.scss +167 -167
  226. package/lib/components/date-planning/component/calendar/style/_material-definition.scss +7 -7
  227. package/lib/components/date-planning/component/calendar/style/_theme.scss +7 -7
  228. package/lib/components/date-planning/component/calendar/style/material.scss +5 -5
  229. package/lib/components/date-planning/date-planning.component.d.ts +28 -28
  230. package/lib/components/date-planning/date-planning.module.d.ts +2 -2
  231. package/lib/components/date-planning/style/_layout.scss +45 -45
  232. package/lib/components/date-planning/style/_theme.scss +5 -5
  233. package/lib/components/date-planning/style/material.scss +7 -7
  234. package/lib/components/docsign/component/signature/signature.component.d.ts +16 -16
  235. package/lib/components/docsign/component/signature/style/_layout.scss +40 -40
  236. package/lib/components/docsign/component/signature/style/_material-definition.scss +11 -11
  237. package/lib/components/docsign/component/signature/style/_theme.scss +13 -13
  238. package/lib/components/docsign/component/signature/style/material.scss +4 -4
  239. package/lib/components/docsign/component/signatures/signatures.component.d.ts +12 -12
  240. package/lib/components/docsign/component/signatures/style/_layout.scss +13 -13
  241. package/lib/components/docsign/component/signatures/style/_material-definition.scss +1 -1
  242. package/lib/components/docsign/component/signatures/style/_theme.scss +4 -4
  243. package/lib/components/docsign/component/signatures/style/material.scss +5 -5
  244. package/lib/components/docsign/docsign.component.d.ts +94 -94
  245. package/lib/components/docsign/docsign.module.d.ts +2 -2
  246. package/lib/components/docsign/style/_layout.scss +40 -40
  247. package/lib/components/docsign/style/_material-definition.scss +12 -12
  248. package/lib/components/docsign/style/_theme.scss +12 -12
  249. package/lib/components/docsign/style/material.scss +15 -15
  250. package/lib/components/file-upload/file-upload.component.d.ts +42 -0
  251. package/lib/components/file-upload/file-upload.module.d.ts +2 -0
  252. package/lib/components/file-upload/style/_layout.scss +59 -0
  253. package/lib/components/file-upload/style/_material-definition.scss +2 -0
  254. package/lib/components/file-upload/style/_theme.scss +4 -0
  255. package/lib/components/file-upload/style/material.scss +4 -0
  256. package/lib/components/file-upload-popup/file-upload-popup.component.d.ts +75 -0
  257. package/lib/components/file-upload-popup/file-upload-popup.module.d.ts +2 -0
  258. package/lib/components/file-upload-popup/style/_layout.scss +48 -0
  259. package/lib/components/file-upload-popup/style/_material-definition.scss +2 -0
  260. package/lib/components/file-upload-popup/style/_theme.scss +5 -0
  261. package/lib/components/file-upload-popup/style/material.scss +4 -0
  262. package/lib/components/files-upload/components/base-file-upload.component.d.ts +98 -0
  263. package/lib/components/files-upload/components/drag-drop-container.component.d.ts +34 -0
  264. package/lib/components/files-upload/files-upload.component.d.ts +32 -0
  265. package/lib/components/files-upload/files-upload.module.d.ts +2 -0
  266. package/lib/components/files-upload/style/_layout.scss +49 -0
  267. package/lib/components/files-upload/style/_material-definition.scss +0 -0
  268. package/lib/components/files-upload/style/_theme.scss +5 -0
  269. package/lib/components/files-upload/style/material.scss +4 -0
  270. package/lib/components/image-display/image-display.component.d.ts +14 -0
  271. package/lib/components/image-display/image-display.module.d.ts +2 -0
  272. package/lib/components/image-display/style/_layout.scss +56 -0
  273. package/lib/components/image-display/style/_material-definition.scss +4 -0
  274. package/lib/components/image-display/style/_theme.scss +6 -0
  275. package/lib/components/image-display/style/material.scss +3 -0
  276. package/lib/components/key-pad/key-pad.component.d.ts +38 -38
  277. package/lib/components/key-pad/key-pad.module.d.ts +2 -2
  278. package/lib/components/key-pad/style/_layout.scss +160 -160
  279. package/lib/components/key-pad/style/_material-definition.scss +19 -19
  280. package/lib/components/key-pad/style/_theme.scss +35 -35
  281. package/lib/components/key-pad/style/material.scss +4 -4
  282. package/lib/components/layout-switcher/layout-switcher.component.d.ts +16 -16
  283. package/lib/components/layout-switcher/layout-switcher.module.d.ts +2 -2
  284. package/lib/components/layout-switcher/style/_layout.scss +94 -94
  285. package/lib/components/layout-switcher/style/_material-definition.scss +16 -16
  286. package/lib/components/layout-switcher/style/_theme.scss +4 -4
  287. package/lib/components/layout-switcher/style/material.scss +6 -6
  288. package/lib/components/linear-gauge/co-linear-gauge.component.d.ts +11 -11
  289. package/lib/components/linear-gauge/co-linear-gauge.module.d.ts +2 -2
  290. package/lib/components/linear-gauge/style/_layout.scss +20 -20
  291. package/lib/components/linear-gauge/style/_material-definition.scss +8 -8
  292. package/lib/components/linear-gauge/style/_theme.scss +4 -4
  293. package/lib/components/linear-gauge/style/material.scss +6 -6
  294. package/lib/components/login/style/_layout.scss +57 -57
  295. package/lib/components/login/style/_material-definition.scss +23 -23
  296. package/lib/components/login/style/_theme.scss +7 -7
  297. package/lib/components/login/style/material.scss +4 -4
  298. package/lib/components/multi-property-toggler/multiple-property-toggler.component.d.ts +27 -0
  299. package/lib/components/multi-property-toggler/multiple-property-toggler.module.d.ts +2 -0
  300. package/lib/components/multi-property-toggler/style/_layout.scss +24 -0
  301. package/lib/components/multi-property-toggler/style/_material-definition.scss +0 -0
  302. package/lib/components/multi-property-toggler/style/_theme.scss +4 -0
  303. package/lib/components/multi-property-toggler/style/material.scss +4 -0
  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/stock-location.component.d.ts +50 -50
  373. package/lib/components/stock/components/stock-prognose/stock-prognose.component.d.ts +11 -11
  374. package/lib/components/stock/components/stock-tab/stock-tab.component.d.ts +9 -9
  375. package/lib/components/stock/localization/translation.d.ts +60 -60
  376. package/lib/components/stock/stock-history-tabs/stock-history-tabs.component.d.ts +7 -7
  377. package/lib/components/stock/stock-information/stock-information.component.d.ts +8 -8
  378. package/lib/components/stock/stock-information-grid/stock-information-grid.component.d.ts +75 -75
  379. package/lib/components/stock/stock-tabs/stock-tabs.component.d.ts +56 -56
  380. package/lib/components/stock/stock-transfer/co-drop-down-list-fields.interface.d.ts +4 -4
  381. package/lib/components/stock/stock-transfer/stock-change-amount.component.d.ts +18 -18
  382. package/lib/components/stock/stock-transfer/stock-transfer.component.d.ts +42 -42
  383. package/lib/components/stock/stock.component.d.ts +57 -57
  384. package/lib/components/stock/stock.module.d.ts +2 -2
  385. package/lib/components/stock/style/_layout.scss +286 -286
  386. package/lib/components/stock/style/_material-definition.scss +25 -25
  387. package/lib/components/stock/style/_theme.scss +5 -5
  388. package/lib/components/stock/style/material.scss +4 -4
  389. package/lib/components/stock-statusbar/stock-statusbar.component.d.ts +4 -4
  390. package/lib/components/stock-statusbar/stock-statusbar.module.d.ts +2 -2
  391. package/lib/components/stock-statusbar/style/_layout.scss +24 -24
  392. package/lib/components/stock-statusbar/style/material.scss +4 -4
  393. package/lib/components/tab-bar/style/_layout.scss +78 -78
  394. package/lib/components/tab-bar/style/_material-definition.scss +6 -6
  395. package/lib/components/tab-bar/style/material.scss +4 -4
  396. package/lib/components/tab-bar/tab-bar.component.d.ts +21 -21
  397. package/lib/components/tab-bar/tab-bar.module.d.ts +2 -2
  398. package/lib/components/tab-bar/tab.interface.d.ts +5 -5
  399. package/lib/components/tags/component/style/_layout.scss +67 -67
  400. package/lib/components/tags/component/style/_material-definition.scss +1 -1
  401. package/lib/components/tags/component/style/_theme.scss +8 -8
  402. package/lib/components/tags/component/style/material.scss +3 -3
  403. package/lib/components/tags/component/tag-join-label/style/_layout.scss +97 -97
  404. package/lib/components/tags/component/tag-join-label/style/_material-definition.scss +4 -4
  405. package/lib/components/tags/component/tag-join-label/style/_theme.scss +8 -8
  406. package/lib/components/tags/component/tag-join-label/style/material.scss +3 -3
  407. package/lib/components/tile-renderer/style/_layout.scss +90 -0
  408. package/lib/components/tile-renderer/style/_material-definition.scss +0 -0
  409. package/lib/components/tile-renderer/style/_theme.scss +4 -0
  410. package/lib/components/tile-renderer/style/material.scss +4 -0
  411. package/lib/components/tile-renderer/tile-render.component.d.ts +31 -0
  412. package/lib/components/tile-renderer/tile-render.module.d.ts +2 -0
  413. package/lib/decorator/input-boolean.decorator.d.ts +8 -0
  414. package/lib/enum/calendar-view.enum.d.ts +7 -7
  415. package/lib/enum/document-email-report.enum.d.ts +15 -0
  416. package/lib/enum/domain-multiple-name.enum.d.ts +10 -0
  417. package/lib/enum/file-type.d.ts +7 -0
  418. package/lib/enum/files-upload-config-objects.d.ts +22 -0
  419. package/lib/enum/gauge-color.enum.d.ts +8 -8
  420. package/lib/enum/icon.enum.d.ts +42 -36
  421. package/lib/enum/internal-param.enum.d.ts +34 -0
  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 -0
  426. package/lib/enum/table-name.enum.d.ts +84 -0
  427. package/lib/enum/tag-category.enum.d.ts +19 -0
  428. package/lib/enum/tags-component-config-names.d.ts +4 -0
  429. package/lib/enum/thumb-three-way-state.d.ts +6 -6
  430. package/lib/enum/tile-size-type.d.ts +4 -0
  431. package/lib/enum/time-period.enum.d.ts +8 -8
  432. package/lib/event/co-drag-event.d.ts +5 -0
  433. package/lib/event/co-drop-event.d.ts +8 -0
  434. package/lib/interface/key-value-pair.d.ts +4 -0
  435. package/lib/interface/operation-callback-simple-function.d.ts +4 -0
  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 -0
  451. package/lib/model/time-window.bo.d.ts +13 -13
  452. package/lib/model/tree-object.d.ts +8 -0
  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 -0
  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 -0
  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 -53
  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 -0
  470. package/lib/utils/calendar.utils.d.ts +10 -10
  471. package/lib/utils/check-precision-and-scale-result.d.ts +4 -0
  472. package/lib/utils/check-within-stepped-bounds-result.d.ts +8 -0
  473. package/lib/utils/co-document-shared-field-logic.d.ts +7 -0
  474. package/lib/utils/date-utils.d.ts +44 -44
  475. package/lib/utils/enum-utils.d.ts +31 -0
  476. package/lib/utils/function/not-nill.function.d.ts +1 -1
  477. package/lib/utils/is-nill.function.d.ts +1 -0
  478. package/lib/utils/map-utils.d.ts +16 -16
  479. package/lib/utils/number-utils.d.ts +125 -0
  480. package/lib/utils/object-utils.d.ts +40 -0
  481. package/lib/utils/ref-code-utils.d.ts +10 -0
  482. package/lib/utils/string-utils.d.ts +38 -22
  483. package/package.json +6 -6
  484. package/public-api.d.ts +27 -23
@@ -0,0 +1,365 @@
1
+ import { Injectable } from "@angular/core";
2
+ import { Subject } from "rxjs";
3
+ import { ArrayUtils } from "../utils/array-utils";
4
+ import { CoOrientation } from "@colijnit/corecomponents_v12";
5
+ import * as i0 from "@angular/core";
6
+ /**
7
+ * Handles drag and drop elements
8
+ */
9
+ export class DragDropService {
10
+ constructor() {
11
+ this.drag = new Subject();
12
+ this.drop = new Subject();
13
+ // Container(s) holding the elements to be dragged.
14
+ this._containers = [];
15
+ this._disabledContainers = [];
16
+ // Drag handle(s) that contains the classes of the handles.
17
+ this._dragHandles = [];
18
+ this._isdragging = false;
19
+ this._clickCounter = 0;
20
+ this._ghostLeft = 0;
21
+ this._ghostTop = 0;
22
+ this._mouseDown = false;
23
+ this._currentMousePosition = { x: 0, y: 0 };
24
+ this._currentMouseOffset = { x: 0, y: 0 };
25
+ // Handles the mouse down event. Saves the current mouse position.
26
+ this._handleMouseDown = (event) => {
27
+ this._currentMousePosition.x = event.screenX;
28
+ this._currentMousePosition.y = event.screenY;
29
+ if (event.buttons !== 1 || event.metaKey || event.ctrlKey) {
30
+ return;
31
+ }
32
+ const element = event.target ? event.target : event.srcElement;
33
+ const dragElement = this._getValidDragDropElement(element, true);
34
+ if (!dragElement) {
35
+ return;
36
+ }
37
+ if (this._disabledContainers.indexOf(dragElement.container) !== -1) {
38
+ return;
39
+ }
40
+ this._dragElement = dragElement;
41
+ this._dragInContainer = dragElement.container.element;
42
+ const offset = this._getOffset();
43
+ this._currentMouseOffset.x = event.clientX - offset.left;
44
+ this._currentMouseOffset.y = event.clientY - offset.top;
45
+ this._mouseDown = true;
46
+ this._handleEventListener(document, "mousemove", this._handleMouseMove);
47
+ this._clickCounter++;
48
+ };
49
+ this._handleMouseUp = (event) => {
50
+ this._mouseDown = false;
51
+ this._handleEventListener(document, "mousemove", this._handleMouseMove, false);
52
+ this._clickCounter--;
53
+ if (this._isdragging) {
54
+ this._endDrag();
55
+ }
56
+ };
57
+ this._handleMouseMove = (event) => {
58
+ // nothing to drag?
59
+ if (!this._dragElement) {
60
+ return;
61
+ }
62
+ // only drag when mouse down and there actually is movement
63
+ if (!this._mouseDown || (this._currentMousePosition.x === event.screenX && this._currentMousePosition.y === event.screenY)) {
64
+ return;
65
+ }
66
+ this._isdragging = true;
67
+ this._startDrag();
68
+ this._drag(event);
69
+ this._currentMousePosition.x = event.screenX;
70
+ this._currentMousePosition.y = event.screenY;
71
+ };
72
+ }
73
+ set renderer(value) {
74
+ this._renderer = value;
75
+ this._setEvents();
76
+ }
77
+ set ghostLeft(value) {
78
+ this._ghostLeft = value;
79
+ this._positionGhostImage();
80
+ }
81
+ set ghostTop(value) {
82
+ this._ghostTop = value;
83
+ this._positionGhostImage();
84
+ }
85
+ ngOnDestroy() {
86
+ this._removeListeners();
87
+ }
88
+ addContainer(container) {
89
+ const direction = (getComputedStyle(container.element).flexDirection === "row" && getComputedStyle(container.element).display === "flex")
90
+ ? CoOrientation.Horizontal
91
+ : CoOrientation.Vertical;
92
+ container.direction = direction;
93
+ this._containers.push(container);
94
+ }
95
+ addDragHandle(handle) {
96
+ this._dragHandles.push(handle);
97
+ }
98
+ removeContainer(container) {
99
+ ArrayUtils.RemoveElement(container, this._containers);
100
+ ArrayUtils.RemoveElement(container, this._disabledContainers);
101
+ if (!this._containers || this._containers.length === 0) {
102
+ this._removeListeners();
103
+ }
104
+ }
105
+ removeDragHandle(handle) {
106
+ ArrayUtils.RemoveElement(handle, this._dragHandles);
107
+ }
108
+ enableContainer(container) {
109
+ ArrayUtils.RemoveElement(container, this._disabledContainers);
110
+ }
111
+ disableContainer(container) {
112
+ this._disabledContainers.push(container);
113
+ }
114
+ _removeListeners() {
115
+ this._handleEventListener(document, "mouseup", this._handleMouseUp, false);
116
+ this._handleEventListener(document, "mousemove", this._handleMouseMove, false);
117
+ }
118
+ _setEvents() {
119
+ this._handleEventListener(document, "mousedown", this._handleMouseDown); //TODO: mousedown only within given containers
120
+ this._handleEventListener(document, "mouseup", this._handleMouseUp);
121
+ }
122
+ _setElementClass(element, elementClass) {
123
+ if (!this._renderer) {
124
+ return;
125
+ }
126
+ this._renderer.addClass(element, elementClass);
127
+ }
128
+ _handleEventListener(element, event, handler, add = true) {
129
+ if (add) {
130
+ element.removeEventListener(event, handler);
131
+ element.addEventListener(event, handler);
132
+ }
133
+ else {
134
+ element.removeEventListener(event, handler);
135
+ }
136
+ }
137
+ // Returns the container that holds given element.
138
+ _getContainerOfElement(element) {
139
+ for (let i = 0, len1 = this._containers.length; i < len1; i++) {
140
+ const container = this._containers[i];
141
+ for (let ii = 0, len2 = container.element.children.length; ii < len2; ii++) {
142
+ if (container.element.children[ii] === element) {
143
+ return container;
144
+ }
145
+ }
146
+ }
147
+ }
148
+ /**
149
+ * Checks if given element is a child of container(s)
150
+ * @param element
151
+ * @returns {number} index of element
152
+ */
153
+ _getElementOfContainer(element) {
154
+ for (let i = 0, len1 = this._containers.length; i < len1; i++) {
155
+ const container = this._containers[i];
156
+ for (let ii = 0, len2 = container.element.children.length; ii < len2; ii++) {
157
+ if (container.element.children[ii] === element) {
158
+ return { container: container, element: element, elementIdx: ii };
159
+ }
160
+ }
161
+ }
162
+ return { container: undefined, element: undefined, elementIdx: -1 };
163
+ }
164
+ /**
165
+ * Returns next sibling of container that contains given element.
166
+ * @param element
167
+ * @returns {any} null if there are no siblings left
168
+ */
169
+ _getNextElementInContainer(element) {
170
+ const container = this._getContainerOfElement(element);
171
+ for (let i = 0, len = container.element.children.length; i < len; i++) {
172
+ if (container.element.children[i] === element) {
173
+ return i < (len - 1) ? { container: container, element: container.element.children[i + 1], elementIdx: i } : null;
174
+ }
175
+ }
176
+ }
177
+ _getDragHandleClicked(element) {
178
+ if (this._dragHandles && this._dragHandles.length > 0) { // check if handle clicked
179
+ while (element) {
180
+ for (let i = 0, len = this._dragHandles.length; i < len; i++) {
181
+ if (element.classList && element.classList.length > 0 && !!this._dragHandles[i]) {
182
+ if (element.classList.contains(this._dragHandles[i])) {
183
+ return true;
184
+ }
185
+ }
186
+ }
187
+ element = element.parentNode === document ? null : element.parentNode;
188
+ }
189
+ return false;
190
+ }
191
+ else {
192
+ return true;
193
+ }
194
+ }
195
+ // Returns element when it's a valid drop target, false otherwise.
196
+ _getValidDragDropElement(element, checkHandle = false) {
197
+ if (checkHandle) {
198
+ const validHandleClicked = this._getDragHandleClicked(element);
199
+ if (!validHandleClicked) {
200
+ return undefined;
201
+ }
202
+ }
203
+ while (element) {
204
+ const elementOfContainer = this._getElementOfContainer(element);
205
+ if (elementOfContainer.elementIdx > -1) {
206
+ return elementOfContainer;
207
+ }
208
+ element = element.parentNode === document ? null : element.parentNode;
209
+ }
210
+ return undefined;
211
+ }
212
+ _getNextSibling(element) {
213
+ return this._getNextElementInContainer(element);
214
+ }
215
+ // Returns the current index of element within its container.
216
+ _indexOf(element) {
217
+ const elementOfContainer = this._getElementOfContainer(element.hasOwnProperty("element") ? element.element : element);
218
+ return elementOfContainer ? elementOfContainer.elementIdx : -1;
219
+ }
220
+ // Creates a ghost image/element of the element being dragged.
221
+ _createGhostImage() {
222
+ if (this._ghostDragImage) {
223
+ return;
224
+ }
225
+ // create ghost drag image
226
+ const offsetRect = this._getOffset();
227
+ this._ghostDragImage = this._dragElement.element.cloneNode(true);
228
+ this._ghostDragImage.style.width = offsetRect.width + "px";
229
+ this._ghostDragImage.style.height = offsetRect.height + "px";
230
+ this.ghostLeft = offsetRect.left;
231
+ this.ghostTop = offsetRect.top;
232
+ this._setElementClass(this._ghostDragImage, "ghost-image");
233
+ this._setElementClass(document.activeElement, "no-select");
234
+ document.body.appendChild(this._ghostDragImage);
235
+ }
236
+ _destroyGhostImage() {
237
+ if (this._ghostDragImage) {
238
+ this._renderer.removeClass(document.activeElement, "no-select");
239
+ document.body.removeChild(this._ghostDragImage);
240
+ this._ghostDragImage = undefined;
241
+ }
242
+ }
243
+ // Positions the ghost image at the given coordinates.
244
+ _positionGhostImage() {
245
+ if (!this._ghostDragImage) {
246
+ return;
247
+ }
248
+ this._ghostDragImage.style.left = this._ghostLeft + "px";
249
+ this._ghostDragImage.style.top = this._ghostTop + "px";
250
+ }
251
+ _getScroll(scrollProp, offsetProp) {
252
+ if (document.activeElement.clientHeight) {
253
+ return document.activeElement[scrollProp];
254
+ }
255
+ return document.body[scrollProp];
256
+ }
257
+ _getOffset() {
258
+ const rect = this._dragElement.element.getBoundingClientRect();
259
+ const scrollLeft = 0;
260
+ const scrollTop = 0;
261
+ return {
262
+ bottom: rect.bottom,
263
+ height: rect.height,
264
+ left: rect.left + scrollLeft,
265
+ right: rect.right,
266
+ top: rect.top + scrollTop,
267
+ width: rect.width
268
+ };
269
+ }
270
+ _determineDroptarget(element, x, y) {
271
+ const dropElement = this._getValidDragDropElement(element);
272
+ if (dropElement) {
273
+ if (dropElement.element !== this._dragElement.element) {
274
+ this._dropTargetElement = dropElement;
275
+ return;
276
+ }
277
+ }
278
+ this._dropTargetElement = null;
279
+ }
280
+ /**
281
+ * Briefly hides the ghost image to be able to determine which element is under mouse.
282
+ * @param x
283
+ * @param y
284
+ * @returns {Element} Top level element
285
+ */
286
+ _getHoveredElement(x, y) {
287
+ this._setElementClass(this._ghostDragImage, "ghost-image-hide");
288
+ const elm = document.elementFromPoint(x, y);
289
+ this._renderer.removeClass(this._ghostDragImage, "ghost-image-hide");
290
+ return elm;
291
+ }
292
+ _animateVisibility(element, transitionTime = 0.2, start = "0", end = "1") {
293
+ if (!element) {
294
+ return;
295
+ }
296
+ const transitionStyle = "opacity " + transitionTime + "s ease-in-out";
297
+ const transition = element.style.transition;
298
+ element.style.transition = transition + (transition ? "," : "") + transitionStyle;
299
+ element.style.opacity = start;
300
+ element.style.opacity = end;
301
+ return new Promise((resolve) => {
302
+ setTimeout(() => {
303
+ resolve();
304
+ }, transitionTime * 1000);
305
+ });
306
+ }
307
+ _animateMove(parent, dragElement, dropTargetElement, down) {
308
+ if (down) { // insert element before
309
+ parent.insertBefore(dragElement.element, dropTargetElement.element);
310
+ }
311
+ else { // insert after
312
+ parent.insertBefore(dragElement.element, dropTargetElement.element.nextSibling);
313
+ }
314
+ }
315
+ _startDrag() {
316
+ this._createGhostImage();
317
+ this._setElementClass(this._dragElement.element, "is-dragged");
318
+ }
319
+ _drag(event) {
320
+ this.ghostLeft = this._ghostLeft + (event.screenX - this._currentMousePosition.x);
321
+ this.ghostTop = this._ghostTop + (event.screenY - this._currentMousePosition.y);
322
+ const x = event.clientX;
323
+ const y = event.clientY;
324
+ const hoveredElement = this._getHoveredElement(x, y);
325
+ this._determineDroptarget(hoveredElement, x, y);
326
+ if (this._dropTargetElement) {
327
+ const down = (this._dropTargetElement.container.direction === CoOrientation.Vertical && event.screenY > this._currentMousePosition.y) ||
328
+ (this._dropTargetElement.container.direction === CoOrientation.Horizontal && event.screenX > this._currentMousePosition.x);
329
+ this._animateMove(this._dropTargetElement.container.element, this._dragElement, this._dropTargetElement, down);
330
+ this.drag.next({
331
+ element: this._dragElement,
332
+ elementIndex: this._dragElement.elementIdx,
333
+ source: this._dropTargetElement.container.element
334
+ });
335
+ this._lastDropTarget = this._dropTargetElement;
336
+ }
337
+ }
338
+ // element is dropped
339
+ _endDrag() {
340
+ this._renderer.removeClass(this._dragElement.element, "is-dragged");
341
+ this._destroyGhostImage();
342
+ this.drop.next({
343
+ element: this._dragElement.element,
344
+ elementIndex: this._dragElement.elementIdx,
345
+ target: this._lastDropTarget ? this._lastDropTarget.element : null,
346
+ targetIndex: this._lastDropTarget ? this._lastDropTarget.elementIdx : -1,
347
+ container: this._lastDropTarget ? this._lastDropTarget.container : null
348
+ });
349
+ this._resetDrag();
350
+ }
351
+ _resetDrag() {
352
+ this._dragElement = null;
353
+ this._dragInContainer = null;
354
+ this._lastDropTarget = null;
355
+ this._isdragging = false;
356
+ }
357
+ }
358
+ DragDropService.ɵprov = i0.ɵɵdefineInjectable({ factory: function DragDropService_Factory() { return new DragDropService(); }, token: DragDropService, providedIn: "root" });
359
+ DragDropService.decorators = [
360
+ { type: Injectable, args: [{
361
+ providedIn: "root"
362
+ },] }
363
+ ];
364
+ DragDropService.ctorParameters = () => [];
365
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1kcm9wLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWRjb21wb25lbnRzL3NyYy9saWIvc2VydmljZS9kcmFnLWRyb3Auc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVksVUFBVSxFQUF1QixNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBSTdCLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sOEJBQThCLENBQUM7O0FBRzNEOztHQUVHO0FBSUgsTUFBTSxPQUFPLGVBQWU7SUFtRHhCO1FBMUNPLFNBQUksR0FBeUIsSUFBSSxPQUFPLEVBQWUsQ0FBQztRQUN4RCxTQUFJLEdBQXlCLElBQUksT0FBTyxFQUFlLENBQUM7UUFHL0QsbURBQW1EO1FBQzNDLGdCQUFXLEdBQXdCLEVBQUUsQ0FBQztRQUV0Qyx3QkFBbUIsR0FBd0IsRUFBRSxDQUFDO1FBSXRELDJEQUEyRDtRQUNuRCxpQkFBWSxHQUFVLEVBQUUsQ0FBQztRQUN6QixnQkFBVyxHQUFZLEtBQUssQ0FBQztRQVM3QixrQkFBYSxHQUFXLENBQUMsQ0FBQztRQVkxQixlQUFVLEdBQVcsQ0FBQyxDQUFDO1FBQ3ZCLGNBQVMsR0FBVyxDQUFDLENBQUM7UUFFdEIsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUU1QiwwQkFBcUIsR0FBUSxFQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBQyxDQUFDO1FBQzFDLHdCQUFtQixHQUFRLEVBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFDLENBQUM7UUFvUWhELGtFQUFrRTtRQUMxRCxxQkFBZ0IsR0FBYSxDQUFDLEtBQWlCLEVBQVEsRUFBRTtZQUM3RCxJQUFJLENB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QUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSTtTQUMxRSxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVPLFVBQVU7UUFDZCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQzdCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBQzVCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQzdCLENBQUM7Ozs7WUF6WkosVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEluamVjdGFibGUsIE9uRGVzdHJveSwgUmVuZGVyZXIyfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtTdWJqZWN0fSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtDb0Ryb3BFdmVudH0gZnJvbSBcIi4uL2V2ZW50L2NvLWRyb3AtZXZlbnRcIjtcbmltcG9ydCB7Q29EcmFnRXZlbnR9IGZyb20gXCIuLi9ldmVudC9jby1kcmFnLWV2ZW50XCI7XG5pbXBvcnQge0RyYWdEcm9wQ29udGFpbmVyfSBmcm9tIFwiLi4vYnVzaW5lc3NvYmplY3QvZHJhZy1kcm9wLWNvbnRhaW5lclwiO1xuaW1wb3J0IHtBcnJheVV0aWxzfSBmcm9tIFwiLi4vdXRpbHMvYXJyYXktdXRpbHNcIjtcbmltcG9ydCB7Q29PcmllbnRhdGlvbn0gZnJvbSBcIkBjb2xpam5pdC9jb3JlY29tcG9uZW50c192MTJcIjtcbmltcG9ydCB7RHJhZ0Ryb3BDb250YWluZXJFbGVtZW50fSBmcm9tIFwiLi4vYnVzaW5lc3NvYmplY3QvZHJhZy1kcm9wLWNvbnRhaW5lci1lbGVtZW50XCI7XG5cbi8qKlxuICogSGFuZGxlcyBkcmFnIGFuZCBkcm9wIGVsZW1lbnRzXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogXCJyb290XCJcbn0pXG5leHBvcnQgY2xhc3MgRHJhZ0Ryb3BTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICBwdWJsaWMgc2V0IHJlbmRlcmVyKHZhbHVlOiBSZW5kZXJlcjIpIHtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5fc2V0RXZlbnRzKCk7XG4gICAgfVxuXG4gICAgLy8gVG9EbzogdXNlIGRyYWcgYW5kIGRyb3AgU3ViamVjdHMgaW5zdGVhZCBhbmQgdHJhY2sgb3JpZ2luIGFuZCB0YXJnZXQgY29tcG9uZW50c1xuICAgIHB1YmxpYyBkcmFnRGF0YTogYW55O1xuXG4gICAgcHVibGljIGRyYWc6IFN1YmplY3Q8Q29EcmFnRXZlbnQ+ID0gbmV3IFN1YmplY3Q8Q29EcmFnRXZlbnQ+KCk7XG4gICAgcHVibGljIGRyb3A6IFN1YmplY3Q8Q29Ecm9wRXZlbnQ+ID0gbmV3IFN1YmplY3Q8Q29Ecm9wRXZlbnQ+KCk7XG5cbiAgICBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyO1xuICAgIC8vIENvbnRhaW5lcihzKSBob2xkaW5nIHRoZSBlbGVtZW50cyB0byBiZSBkcmFnZ2VkLlxuICAgIHByaXZhdGUgX2NvbnRhaW5lcnM6IERyYWdEcm9wQ29udGFpbmVyW10gPSBbXTtcblxuICAgIHByaXZhdGUgX2Rpc2FibGVkQ29udGFpbmVyczogRHJhZ0Ryb3BDb250YWluZXJbXSA9IFtdO1xuXG4gICAgcHJpdmF0ZSBfZHJvcFRhcmdldEVsZW1lbnQ6IERyYWdEcm9wQ29udGFpbmVyRWxlbWVudDtcblxuICAgIC8vIERyYWcgaGFuZGxlKHMpIHRoYXQgY29udGFpbnMgdGhlIGNsYXNzZXMgb2YgdGhlIGhhbmRsZXMuXG4gICAgcHJpdmF0ZSBfZHJhZ0hhbmRsZXM6IGFueVtdID0gW107XG4gICAgcHJpdmF0ZSBfaXNkcmFnZ2luZzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2RyYWdFbGVtZW50OiBEcmFnRHJvcENvbnRhaW5lckVsZW1lbnQ7XG4gICAgcHJpdmF0ZSBfZHJhZ0luQ29udGFpbmVyOiBhbnk7XG4gICAgcHJpdmF0ZSBfbGFzdERyb3BUYXJnZXQ6IERyYWdEcm9wQ29udGFpbmVyRWxlbWVudDtcbiAgICAvKipcbiAgICAgKiBHaG9zdCBpbWFnZSBvZiB0aGUgZWxlbWVudCBiZWluZyBkcmFnZ2VkXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZ2hvc3REcmFnSW1hZ2U6IGFueTtcblxuICAgIHByaXZhdGUgX2NsaWNrQ291bnRlcjogbnVtYmVyID0gMDtcblxuICAgIHByaXZhdGUgc2V0IGdob3N0TGVmdCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX2dob3N0TGVmdCA9IHZhbHVlO1xuICAgICAgICB0aGlzLl9wb3NpdGlvbkdob3N0SW1hZ2UoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldCBnaG9zdFRvcCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX2dob3N0VG9wID0gdmFsdWU7XG4gICAgICAgIHRoaXMuX3Bvc2l0aW9uR2hvc3RJbWFnZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2dob3N0TGVmdDogbnVtYmVyID0gMDtcbiAgICBwcml2YXRlIF9naG9zdFRvcDogbnVtYmVyID0gMDtcblxuICAgIHByaXZhdGUgX21vdXNlRG93bjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBfY3VycmVudE1vdXNlUG9zaXRpb246IGFueSA9IHt4OiAwLCB5OiAwfTtcbiAgICBwcml2YXRlIF9jdXJyZW50TW91c2VPZmZzZXQ6IGFueSA9IHt4OiAwLCB5OiAwfTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9yZW1vdmVMaXN0ZW5lcnMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkQ29udGFpbmVyKGNvbnRhaW5lcjogRHJhZ0Ryb3BDb250YWluZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZGlyZWN0aW9uOiBDb09yaWVudGF0aW9uID1cbiAgICAgICAgICAgIChnZXRDb21wdXRlZFN0eWxlKGNvbnRhaW5lci5lbGVtZW50KS5mbGV4RGlyZWN0aW9uID09PSBcInJvd1wiICYmIGdldENvbXB1dGVkU3R5bGUoY29udGFpbmVyLmVsZW1lbnQpLmRpc3BsYXkgPT09IFwiZmxleFwiKVxuICAgICAgICAgICAgICAgID8gQ29PcmllbnRhdGlvbi5Ib3Jpem9udGFsXG4gICAgICAgICAgICAgICAgOiBDb09yaWVudGF0aW9uLlZlcnRpY2FsO1xuICAgICAgICBjb250YWluZXIuZGlyZWN0aW9uID0gZGlyZWN0aW9uO1xuICAgICAgICB0aGlzLl9jb250YWluZXJzLnB1c2goY29udGFpbmVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRHJhZ0hhbmRsZShoYW5kbGU6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9kcmFnSGFuZGxlcy5wdXNoKGhhbmRsZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZUNvbnRhaW5lcihjb250YWluZXI6IERyYWdEcm9wQ29udGFpbmVyKTogdm9pZCB7XG4gICAgICAgIEFycmF5VXRpbHMuUmVtb3ZlRWxlbWVudChjb250YWluZXIsIHRoaXMuX2NvbnRhaW5lcnMpO1xuICAgICAgICBBcnJheVV0aWxzLlJlbW92ZUVsZW1lbnQoY29udGFpbmVyLCB0aGlzLl9kaXNhYmxlZENvbnRhaW5lcnMpO1xuICAgICAgICBpZiAoIXRoaXMuX2NvbnRhaW5lcnMgfHwgdGhpcy5fY29udGFpbmVycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuX3JlbW92ZUxpc3RlbmVycygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZURyYWdIYW5kbGUoaGFuZGxlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgQXJyYXlVdGlscy5SZW1vdmVFbGVtZW50KGhhbmRsZSwgdGhpcy5fZHJhZ0hhbmRsZXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBlbmFibGVDb250YWluZXIoY29udGFpbmVyOiBEcmFnRHJvcENvbnRhaW5lcik6IHZvaWQge1xuICAgICAgICBBcnJheVV0aWxzLlJlbW92ZUVsZW1lbnQoY29udGFpbmVyLCB0aGlzLl9kaXNhYmxlZENvbnRhaW5lcnMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBkaXNhYmxlQ29udGFpbmVyKGNvbnRhaW5lcjogRHJhZ0Ryb3BDb250YWluZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZGlzYWJsZWRDb250YWluZXJzLnB1c2goY29udGFpbmVyKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9yZW1vdmVMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2hhbmRsZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQsIFwibW91c2V1cFwiLCB0aGlzLl9oYW5kbGVNb3VzZVVwLCBmYWxzZSk7XG4gICAgICAgIHRoaXMuX2hhbmRsZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQsIFwibW91c2Vtb3ZlXCIsIHRoaXMuX2hhbmRsZU1vdXNlTW92ZSwgZmFsc2UpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3NldEV2ZW50cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faGFuZGxlRXZlbnRMaXN0ZW5lcihkb2N1bWVudCwgXCJtb3VzZWRvd25cIiwgdGhpcy5faGFuZGxlTW91c2VEb3duKTsgLy9UT0RPOiBtb3VzZWRvd24gb25seSB3aXRoaW4gZ2l2ZW4gY29udGFpbmVyc1xuICAgICAgICB0aGlzLl9oYW5kbGVFdmVudExpc3RlbmVyKGRvY3VtZW50LCBcIm1vdXNldXBcIiwgdGhpcy5faGFuZGxlTW91c2VVcCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2V0RWxlbWVudENsYXNzKGVsZW1lbnQ6IGFueSwgZWxlbWVudENsYXNzOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9yZW5kZXJlcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyLmFkZENsYXNzKGVsZW1lbnQsIGVsZW1lbnRDbGFzcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaGFuZGxlRXZlbnRMaXN0ZW5lcihlbGVtZW50OiBhbnksIGV2ZW50OiBzdHJpbmcsIGhhbmRsZXI6IGFueSwgYWRkOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICBpZiAoYWRkKSB7XG4gICAgICAgICAgICBlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQsIGhhbmRsZXIpO1xuICAgICAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCBoYW5kbGVyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudCwgaGFuZGxlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXR1cm5zIHRoZSBjb250YWluZXIgdGhhdCBob2xkcyBnaXZlbiBlbGVtZW50LlxuICAgIHByaXZhdGUgX2dldENvbnRhaW5lck9mRWxlbWVudChlbGVtZW50OiBIVE1MRWxlbWVudCk6IERyYWdEcm9wQ29udGFpbmVyIHtcbiAgICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMCwgbGVuMTogbnVtYmVyID0gdGhpcy5fY29udGFpbmVycy5sZW5ndGg7IGkgPCBsZW4xOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lcjogRHJhZ0Ryb3BDb250YWluZXIgPSB0aGlzLl9jb250YWluZXJzW2ldO1xuICAgICAgICAgICAgZm9yIChsZXQgaWk6IG51bWJlciA9IDAsIGxlbjI6IG51bWJlciA9IGNvbnRhaW5lci5lbGVtZW50LmNoaWxkcmVuLmxlbmd0aDsgaWkgPCBsZW4yOyBpaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGNvbnRhaW5lci5lbGVtZW50LmNoaWxkcmVuW2lpXSA9PT0gZWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGFpbmVyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBnaXZlbiBlbGVtZW50IGlzIGEgY2hpbGQgb2YgY29udGFpbmVyKHMpXG4gICAgICogQHBhcmFtIGVsZW1lbnRcbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBpbmRleCBvZiBlbGVtZW50XG4gICAgICovXG4gICAgcHJpdmF0ZSBfZ2V0RWxlbWVudE9mQ29udGFpbmVyKGVsZW1lbnQ6IGFueSk6IERyYWdEcm9wQ29udGFpbmVyRWxlbWVudCB7XG4gICAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDAsIGxlbjE6IG51bWJlciA9IHRoaXMuX2NvbnRhaW5lcnMubGVuZ3RoOyBpIDwgbGVuMTsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBjb250YWluZXI6IERyYWdEcm9wQ29udGFpbmVyID0gdGhpcy5fY29udGFpbmVyc1tpXTtcbiAgICAgICAgICAgIGZvciAobGV0IGlpOiBudW1iZXIgPSAwLCBsZW4yOiBudW1iZXIgPSBjb250YWluZXIuZWxlbWVudC5jaGlsZHJlbi5sZW5ndGg7IGlpIDwgbGVuMjsgaWkrKykge1xuICAgICAgICAgICAgICAgIGlmIChjb250YWluZXIuZWxlbWVudC5jaGlsZHJlbltpaV0gPT09IGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtjb250YWluZXI6IGNvbnRhaW5lciwgZWxlbWVudDogZWxlbWVudCwgZWxlbWVudElkeDogaWl9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge2NvbnRhaW5lcjogdW5kZWZpbmVkLCBlbGVtZW50OiB1bmRlZmluZWQsIGVsZW1lbnRJZHg6IC0xfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIG5leHQgc2libGluZyBvZiBjb250YWluZXIgdGhhdCBjb250YWlucyBnaXZlbiBlbGVtZW50LlxuICAgICAqIEBwYXJhbSBlbGVtZW50XG4gICAgICogQHJldHVybnMge2FueX0gbnVsbCBpZiB0aGVyZSBhcmUgbm8gc2libGluZ3MgbGVmdFxuICAgICAqL1xuICAgIHByaXZhdGUgX2dldE5leHRFbGVtZW50SW5Db250YWluZXIoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBEcmFnRHJvcENvbnRhaW5lckVsZW1lbnQge1xuICAgICAgICBjb25zdCBjb250YWluZXI6IERyYWdEcm9wQ29udGFpbmVyID0gdGhpcy5fZ2V0Q29udGFpbmVyT2ZFbGVtZW50KGVsZW1lbnQpO1xuICAgICAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwLCBsZW46IG51bWJlciA9IGNvbnRhaW5lci5lbGVtZW50LmNoaWxkcmVuLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoY29udGFpbmVyLmVsZW1lbnQuY2hpbGRyZW5baV0gPT09IGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaSA8IChsZW4gLSAxKSA/IHtjb250YWluZXI6IGNvbnRhaW5lciwgZWxlbWVudDogPEhUTUxFbGVtZW50PmNvbnRhaW5lci5lbGVtZW50LmNoaWxkcmVuW2kgKyAxXSwgZWxlbWVudElkeDogaX0gOiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0RHJhZ0hhbmRsZUNsaWNrZWQoZWxlbWVudDogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLl9kcmFnSGFuZGxlcyAmJiB0aGlzLl9kcmFnSGFuZGxlcy5sZW5ndGggPiAwKSB7IC8vIGNoZWNrIGlmIGhhbmRsZSBjbGlja2VkXG4gICAgICAgICAgICB3aGlsZSAoZWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDAsIGxlbjogbnVtYmVyID0gdGhpcy5fZHJhZ0hhbmRsZXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuY2xhc3NMaXN0ICYmIGVsZW1lbnQuY2xhc3NMaXN0Lmxlbmd0aCA+IDAgJiYgISF0aGlzLl9kcmFnSGFuZGxlc1tpXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKHRoaXMuX2RyYWdIYW5kbGVzW2ldKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50LnBhcmVudE5vZGUgPT09IGRvY3VtZW50ID8gbnVsbCA6IGVsZW1lbnQucGFyZW50Tm9kZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmV0dXJucyBlbGVtZW50IHdoZW4gaXQncyBhIHZhbGlkIGRyb3AgdGFyZ2V0LCBmYWxzZSBvdGhlcndpc2UuXG4gICAgcHJpdmF0ZSBfZ2V0VmFsaWREcmFnRHJvcEVsZW1lbnQoZWxlbWVudDogYW55LCBjaGVja0hhbmRsZTogYm9vbGVhbiA9IGZhbHNlKTogRHJhZ0Ryb3BDb250YWluZXJFbGVtZW50IHtcbiAgICAgICAgaWYgKGNoZWNrSGFuZGxlKSB7XG4gICAgICAgICAgICBjb25zdCB2YWxpZEhhbmRsZUNsaWNrZWQ6IGJvb2xlYW4gPSB0aGlzLl9nZXREcmFnSGFuZGxlQ2xpY2tlZChlbGVtZW50KTtcbiAgICAgICAgICAgIGlmICghdmFsaWRIYW5kbGVDbGlja2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAoZWxlbWVudCkge1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudE9mQ29udGFpbmVyOiBEcmFnRHJvcENvbnRhaW5lckVsZW1lbnQgPSB0aGlzLl9nZXRFbGVtZW50T2ZDb250YWluZXIoZWxlbWVudCk7XG4gICAgICAgICAgICBpZiAoZWxlbWVudE9mQ29udGFpbmVyLmVsZW1lbnRJZHggPiAtMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50T2ZDb250YWluZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5wYXJlbnROb2RlID09PSBkb2N1bWVudCA/IG51bGwgOiBlbGVtZW50LnBhcmVudE5vZGU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9nZXROZXh0U2libGluZyhlbGVtZW50OiBIVE1MRWxlbWVudCk6IERyYWdEcm9wQ29udGFpbmVyRWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXROZXh0RWxlbWVudEluQ29udGFpbmVyKGVsZW1lbnQpO1xuICAgIH1cblxuICAgIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgaW5kZXggb2YgZWxlbWVudCB3aXRoaW4gaXRzIGNvbnRhaW5lci5cbiAgICBwcml2YXRlIF9pbmRleE9mKGVsZW1lbnQ6IGFueSk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRPZkNvbnRhaW5lcjogRHJhZ0Ryb3BDb250YWluZXJFbGVtZW50ID0gdGhpcy5fZ2V0RWxlbWVudE9mQ29udGFpbmVyKGVsZW1lbnQuaGFzT3duUHJvcGVydHkoXCJlbGVtZW50XCIpID8gZWxlbWVudC5lbGVtZW50IDogZWxlbWVudCk7XG4gICAgICAgIHJldHVybiBlbGVtZW50T2ZDb250YWluZXIgPyBlbGVtZW50T2ZDb250YWluZXIuZWxlbWVudElkeCA6IC0xO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZXMgYSBnaG9zdCBpbWFnZS9lbGVtZW50IG9mIHRoZSBlbGVtZW50IGJlaW5nIGRyYWdnZWQuXG4gICAgcHJpdmF0ZSBfY3JlYXRlR2hvc3RJbWFnZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2dob3N0RHJhZ0ltYWdlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gY3JlYXRlIGdob3N0IGRyYWcgaW1hZ2VcbiAgICAgICAgY29uc3Qgb2Zmc2V0UmVjdDogYW55ID0gdGhpcy5fZ2V0T2Zmc2V0KCk7XG4gICAgICAgIHRoaXMuX2dob3N0RHJhZ0ltYWdlID0gdGhpcy5fZHJhZ0VsZW1lbnQuZWxlbWVudC5jbG9uZU5vZGUodHJ1ZSk7XG4gICAgICAgIHRoaXMuX2dob3N0RHJhZ0ltYWdlLnN0eWxlLndpZHRoID0gb2Zmc2V0UmVjdC53aWR0aCArIFwicHhcIjtcbiAgICAgICAgdGhpcy5fZ2hvc3REcmFnSW1hZ2Uuc3R5bGUuaGVpZ2h0ID0gb2Zmc2V0UmVjdC5oZWlnaHQgKyBcInB4XCI7XG4gICAgICAgIHRoaXMuZ2hvc3RMZWZ0ID0gb2Zmc2V0UmVjdC5sZWZ0O1xuICAgICAgICB0aGlzLmdob3N0VG9wID0gb2Zmc2V0UmVjdC50b3A7XG4gICAgICAgIHRoaXMuX3NldEVsZW1lbnRDbGFzcyh0aGlzLl9naG9zdERyYWdJbWFnZSwgXCJnaG9zdC1pbWFnZVwiKTtcbiAgICAgICAgdGhpcy5fc2V0RWxlbWVudENsYXNzKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQsIFwibm8tc2VsZWN0XCIpO1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMuX2dob3N0RHJhZ0ltYWdlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9kZXN0cm95R2hvc3RJbWFnZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2dob3N0RHJhZ0ltYWdlKSB7XG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJlci5yZW1vdmVDbGFzcyhkb2N1bWVudC5hY3RpdmVFbGVtZW50LCBcIm5vLXNlbGVjdFwiKTtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGhpcy5fZ2hvc3REcmFnSW1hZ2UpO1xuICAgICAgICAgICAgdGhpcy5fZ2hvc3REcmFnSW1hZ2UgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBQb3NpdGlvbnMgdGhlIGdob3N0IGltYWdlIGF0IHRoZSBnaXZlbiBjb29yZGluYXRlcy5cbiAgICBwcml2YXRlIF9wb3NpdGlvbkdob3N0SW1hZ2UoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fZ2hvc3REcmFnSW1hZ2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9naG9zdERyYWdJbWFnZS5zdHlsZS5sZWZ0ID0gdGhpcy5fZ2hvc3RMZWZ0ICsgXCJweFwiO1xuICAgICAgICB0aGlzLl9naG9zdERyYWdJbWFnZS5zdHlsZS50b3AgPSB0aGlzLl9naG9zdFRvcCArIFwicHhcIjtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9nZXRTY3JvbGwoc2Nyb2xsUHJvcDogc3RyaW5nLCBvZmZzZXRQcm9wOiBzdHJpbmcpOiBhbnkge1xuICAgICAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQpIHtcbiAgICAgICAgICAgIHJldHVybiBkb2N1bWVudC5hY3RpdmVFbGVtZW50W3Njcm9sbFByb3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkb2N1bWVudC5ib2R5W3Njcm9sbFByb3BdO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2dldE9mZnNldCgpOiBDbGllbnRSZWN0IHtcbiAgICAgICAgY29uc3QgcmVjdDogQ2xpZW50UmVjdCA9IHRoaXMuX2RyYWdFbGVtZW50LmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IHNjcm9sbExlZnQ6IG51bWJlciA9IDA7XG4gICAgICAgIGNvbnN0IHNjcm9sbFRvcDogbnVtYmVyID0gMDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJvdHRvbTogcmVjdC5ib3R0b20sXG4gICAgICAgICAgICBoZWlnaHQ6IHJlY3QuaGVpZ2h0LFxuICAgICAgICAgICAgbGVmdDogcmVjdC5sZWZ0ICsgc2Nyb2xsTGVmdCxcbiAgICAgICAgICAgIHJpZ2h0OiByZWN0LnJpZ2h0LFxuICAgICAgICAgICAgdG9wOiByZWN0LnRvcCArIHNjcm9sbFRvcCxcbiAgICAgICAgICAgIHdpZHRoOiByZWN0LndpZHRoXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZGV0ZXJtaW5lRHJvcHRhcmdldChlbGVtZW50OiBhbnksIHg6IG51bWJlciwgeTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGRyb3BFbGVtZW50OiBEcmFnRHJvcENvbnRhaW5lckVsZW1lbnQgPSB0aGlzLl9nZXRWYWxpZERyYWdEcm9wRWxlbWVudChlbGVtZW50KTtcbiAgICAgICAgaWYgKGRyb3BFbGVtZW50KSB7XG4gICAgICAgICAgICBpZiAoZHJvcEVsZW1lbnQuZWxlbWVudCAhPT0gdGhpcy5fZHJhZ0VsZW1lbnQuZWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2Ryb3BUYXJnZXRFbGVtZW50ID0gZHJvcEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2Ryb3BUYXJnZXRFbGVtZW50ID0gbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBCcmllZmx5IGhpZGVzIHRoZSBnaG9zdCBpbWFnZSB0byBiZSBhYmxlIHRvIGRldGVybWluZSB3aGljaCBlbGVtZW50IGlzIHVuZGVyIG1vdXNlLlxuICAgICAqIEBwYXJhbSB4XG4gICAgICogQHBhcmFtIHlcbiAgICAgKiBAcmV0dXJucyB7RWxlbWVudH0gVG9wIGxldmVsIGVsZW1lbnRcbiAgICAgKi9cbiAgICBwcml2YXRlIF9nZXRIb3ZlcmVkRWxlbWVudCh4OiBudW1iZXIsIHk6IG51bWJlcik6IGFueSB7XG4gICAgICAgIHRoaXMuX3NldEVsZW1lbnRDbGFzcyh0aGlzLl9naG9zdERyYWdJbWFnZSwgXCJnaG9zdC1pbWFnZS1oaWRlXCIpO1xuICAgICAgICBjb25zdCBlbG06IGFueSA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoeCwgeSk7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuX2dob3N0RHJhZ0ltYWdlLCBcImdob3N0LWltYWdlLWhpZGVcIik7XG4gICAgICAgIHJldHVybiBlbG07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfYW5pbWF0ZVZpc2liaWxpdHkoZWxlbWVudDogYW55LCB0cmFuc2l0aW9uVGltZTogbnVtYmVyID0gMC4yLCBzdGFydDogc3RyaW5nID0gXCIwXCIsIGVuZDogc3RyaW5nID0gXCIxXCIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKCFlbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdHJhbnNpdGlvblN0eWxlOiBzdHJpbmcgPSBcIm9wYWNpdHkgXCIgKyB0cmFuc2l0aW9uVGltZSArIFwicyBlYXNlLWluLW91dFwiO1xuICAgICAgICBjb25zdCB0cmFuc2l0aW9uOiBzdHJpbmcgPSBlbGVtZW50LnN0eWxlLnRyYW5zaXRpb247XG4gICAgICAgIGVsZW1lbnQuc3R5bGUudHJhbnNpdGlvbiA9IHRyYW5zaXRpb24gKyAodHJhbnNpdGlvbiA/IFwiLFwiIDogXCJcIikgKyB0cmFuc2l0aW9uU3R5bGU7XG4gICAgICAgIGVsZW1lbnQuc3R5bGUub3BhY2l0eSA9IHN0YXJ0O1xuICAgICAgICBlbGVtZW50LnN0eWxlLm9wYWNpdHkgPSBlbmQ7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZTogRnVuY3Rpb24pID0+IHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH0sIHRyYW5zaXRpb25UaW1lICogMTAwMCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2FuaW1hdGVNb3ZlKHBhcmVudDogSFRNTEVsZW1lbnQsIGRyYWdFbGVtZW50OiBEcmFnRHJvcENvbnRhaW5lckVsZW1lbnQsIGRyb3BUYXJnZXRFbGVtZW50OiBEcmFnRHJvcENvbnRhaW5lckVsZW1lbnQsIGRvd246IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKGRvd24pIHsgLy8gaW5zZXJ0IGVsZW1lbnQgYmVmb3JlXG4gICAgICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKGRyYWdFbGVtZW50LmVsZW1lbnQsIGRyb3BUYXJnZXRFbGVtZW50LmVsZW1lbnQpO1xuICAgICAgICB9IGVsc2UgeyAvLyBpbnNlcnQgYWZ0ZXJcbiAgICAgICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoZHJhZ0VsZW1lbnQuZWxlbWVudCwgZHJvcFRhcmdldEVsZW1lbnQuZWxlbWVudC5uZXh0U2libGluZyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBIYW5kbGVzIHRoZSBtb3VzZSBkb3duIGV2ZW50LiBTYXZlcyB0aGUgY3VycmVudCBtb3VzZSBwb3NpdGlvbi5cbiAgICBwcml2YXRlIF9oYW5kbGVNb3VzZURvd246IEZ1bmN0aW9uID0gKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRNb3VzZVBvc2l0aW9uLnggPSBldmVudC5zY3JlZW5YO1xuICAgICAgICB0aGlzLl9jdXJyZW50TW91c2VQb3NpdGlvbi55ID0gZXZlbnQuc2NyZWVuWTtcbiAgICAgICAgaWYgKGV2ZW50LmJ1dHRvbnMgIT09IDEgfHwgZXZlbnQubWV0YUtleSB8fCBldmVudC5jdHJsS2V5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZWxlbWVudDogYW55ID0gZXZlbnQudGFyZ2V0ID8gZXZlbnQudGFyZ2V0IDogZXZlbnQuc3JjRWxlbWVudDtcbiAgICAgICAgY29uc3QgZHJhZ0VsZW1lbnQ6IERyYWdEcm9wQ29udGFpbmVyRWxlbWVudCA9IHRoaXMuX2dldFZhbGlkRHJhZ0Ryb3BFbGVtZW50KGVsZW1lbnQsIHRydWUpO1xuICAgICAgICBpZiAoIWRyYWdFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX2Rpc2FibGVkQ29udGFpbmVycy5pbmRleE9mKGRyYWdFbGVtZW50LmNvbnRhaW5lcikgIT09IC0xKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZHJhZ0VsZW1lbnQgPSBkcmFnRWxlbWVudDtcbiAgICAgICAgdGhpcy5fZHJhZ0luQ29udGFpbmVyID0gZHJhZ0VsZW1lbnQuY29udGFpbmVyLmVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IG9mZnNldDogYW55ID0gdGhpcy5fZ2V0T2Zmc2V0KCk7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRNb3VzZU9mZnNldC54ID0gZXZlbnQuY2xpZW50WCAtIG9mZnNldC5sZWZ0O1xuICAgICAgICB0aGlzLl9jdXJyZW50TW91c2VPZmZzZXQueSA9IGV2ZW50LmNsaWVudFkgLSBvZmZzZXQudG9wO1xuICAgICAgICB0aGlzLl9tb3VzZURvd24gPSB0cnVlO1xuICAgICAgICB0aGlzLl9oYW5kbGVFdmVudExpc3RlbmVyKGRvY3VtZW50LCBcIm1vdXNlbW92ZVwiLCB0aGlzLl9oYW5kbGVNb3VzZU1vdmUpO1xuICAgICAgICB0aGlzLl9jbGlja0NvdW50ZXIrKztcbiAgICB9XG5cbiAgICBwcml2YXRlIF9oYW5kbGVNb3VzZVVwOiBGdW5jdGlvbiA9IChldmVudDogTW91c2VFdmVudCk6IHZvaWQgPT4ge1xuICAgICAgICB0aGlzLl9tb3VzZURvd24gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5faGFuZGxlRXZlbnRMaXN0ZW5lcihkb2N1bWVudCwgXCJtb3VzZW1vdmVcIiwgdGhpcy5faGFuZGxlTW91c2VNb3ZlLCBmYWxzZSk7XG4gICAgICAgIHRoaXMuX2NsaWNrQ291bnRlci0tO1xuXG4gICAgICAgIGlmICh0aGlzLl9pc2RyYWdnaW5nKSB7XG4gICAgICAgICAgICB0aGlzLl9lbmREcmFnKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9oYW5kbGVNb3VzZU1vdmU6IEZ1bmN0aW9uID0gKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCA9PiB7XG4gICAgICAgIC8vIG5vdGhpbmcgdG8gZHJhZz9cbiAgICAgICAgaWYgKCF0aGlzLl9kcmFnRWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIG9ubHkgZHJhZyB3aGVuIG1vdXNlIGRvd24gYW5kIHRoZXJlIGFjdHVhbGx5IGlzIG1vdmVtZW50XG4gICAgICAgIGlmICghdGhpcy5fbW91c2VEb3duIHx8ICh0aGlzLl9jdXJyZW50TW91c2VQb3NpdGlvbi54ID09PSBldmVudC5zY3JlZW5YICYmIHRoaXMuX2N1cnJlbnRNb3VzZVBvc2l0aW9uLnkgPT09IGV2ZW50LnNjcmVlblkpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faXNkcmFnZ2luZyA9IHRydWU7XG4gICAgICAgIHRoaXMuX3N0YXJ0RHJhZygpO1xuICAgICAgICB0aGlzLl9kcmFnKGV2ZW50KTtcbiAgICAgICAgdGhpcy5fY3VycmVudE1vdXNlUG9zaXRpb24ueCA9IGV2ZW50LnNjcmVlblg7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRNb3VzZVBvc2l0aW9uLnkgPSBldmVudC5zY3JlZW5ZO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3N0YXJ0RHJhZygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY3JlYXRlR2hvc3RJbWFnZSgpO1xuICAgICAgICB0aGlzLl9zZXRFbGVtZW50Q2xhc3ModGhpcy5fZHJhZ0VsZW1lbnQuZWxlbWVudCwgXCJpcy1kcmFnZ2VkXCIpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2RyYWcoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5naG9zdExlZnQgPSB0aGlzLl9naG9zdExlZnQgKyAoZXZlbnQuc2NyZWVuWCAtIHRoaXMuX2N1cnJlbnRNb3VzZVBvc2l0aW9uLngpO1xuICAgICAgICB0aGlzLmdob3N0VG9wID0gdGhpcy5fZ2hvc3RUb3AgKyAoZXZlbnQuc2NyZWVuWSAtIHRoaXMuX2N1cnJlbnRNb3VzZVBvc2l0aW9uLnkpO1xuXG4gICAgICAgIGNvbnN0IHg6IG51bWJlciA9IGV2ZW50LmNsaWVudFg7XG4gICAgICAgIGNvbnN0IHk6IG51bWJlciA9IGV2ZW50LmNsaWVudFk7XG4gICAgICAgIGNvbnN0IGhvdmVyZWRFbGVtZW50OiBhbnkgPSB0aGlzLl9nZXRIb3ZlcmVkRWxlbWVudCh4LCB5KTtcbiAgICAgICAgdGhpcy5fZGV0ZXJtaW5lRHJvcHRhcmdldChob3ZlcmVkRWxlbWVudCwgeCwgeSk7XG4gICAgICAgIGlmICh0aGlzLl9kcm9wVGFyZ2V0RWxlbWVudCkge1xuICAgICAgICAgICAgY29uc3QgZG93bjogYm9vbGVhbiA9XG4gICAgICAgICAgICAgICAgKHRoaXMuX2Ryb3BUYXJnZXRFbGVtZW50LmNvbnRhaW5lci5kaXJlY3Rpb24gPT09IENvT3JpZW50YXRpb24uVmVydGljYWwgJiYgZXZlbnQuc2NyZWVuWSA+IHRoaXMuX2N1cnJlbnRNb3VzZVBvc2l0aW9uLnkpIHx8XG4gICAgICAgICAgICAgICAgKHRoaXMuX2Ryb3BUYXJnZXRFbGVtZW50LmNvbnRhaW5lci5kaXJlY3Rpb24gPT09IENvT3JpZW50YXRpb24uSG9yaXpvbnRhbCAmJiBldmVudC5zY3JlZW5YID4gdGhpcy5fY3VycmVudE1vdXNlUG9zaXRpb24ueCk7XG4gICAgICAgICAgICB0aGlzLl9hbmltYXRlTW92ZSh0aGlzLl9kcm9wVGFyZ2V0RWxlbWVudC5jb250YWluZXIuZWxlbWVudCwgdGhpcy5fZHJhZ0VsZW1lbnQsIHRoaXMuX2Ryb3BUYXJnZXRFbGVtZW50LCBkb3duKTtcbiAgICAgICAgICAgIHRoaXMuZHJhZy5uZXh0KHtcbiAgICAgICAgICAgICAgICBlbGVtZW50OiB0aGlzLl9kcmFnRWxlbWVudCxcbiAgICAgICAgICAgICAgICBlbGVtZW50SW5kZXg6IHRoaXMuX2RyYWdFbGVtZW50LmVsZW1lbnRJZHgsXG4gICAgICAgICAgICAgICAgc291cmNlOiB0aGlzLl9kcm9wVGFyZ2V0RWxlbWVudC5jb250YWluZXIuZWxlbWVudFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLl9sYXN0RHJvcFRhcmdldCA9IHRoaXMuX2Ryb3BUYXJnZXRFbGVtZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gZWxlbWVudCBpcyBkcm9wcGVkXG4gICAgcHJpdmF0ZSBfZW5kRHJhZygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5fZHJhZ0VsZW1lbnQuZWxlbWVudCwgXCJpcy1kcmFnZ2VkXCIpO1xuICAgICAgICB0aGlzLl9kZXN0cm95R2hvc3RJbWFnZSgpO1xuICAgICAgICB0aGlzLmRyb3AubmV4dCh7XG4gICAgICAgICAgICBlbGVtZW50OiB0aGlzLl9kcmFnRWxlbWVudC5lbGVtZW50LFxuICAgICAgICAgICAgZWxlbWVudEluZGV4OiB0aGlzLl9kcmFnRWxlbWVudC5lbGVtZW50SWR4LFxuICAgICAgICAgICAgdGFyZ2V0OiB0aGlzLl9sYXN0RHJvcFRhcmdldCA/IHRoaXMuX2xhc3REcm9wVGFyZ2V0LmVsZW1lbnQgOiBudWxsLFxuICAgICAgICAgICAgdGFyZ2V0SW5kZXg6IHRoaXMuX2xhc3REcm9wVGFyZ2V0ID8gdGhpcy5fbGFzdERyb3BUYXJnZXQuZWxlbWVudElkeCA6IC0xLCAvLyBpdGVtcyBhcmUgYWxyZWFkeSBzaGlmdGVkIHNvIHN1YnRyYWN0IDEgZnJvbSB0YXJnZXQgaW5kZXhcbiAgICAgICAgICAgIGNvbnRhaW5lcjogdGhpcy5fbGFzdERyb3BUYXJnZXQgPyB0aGlzLl9sYXN0RHJvcFRhcmdldC5jb250YWluZXIgOiBudWxsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9yZXNldERyYWcoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9yZXNldERyYWcoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2RyYWdFbGVtZW50ID0gbnVsbDtcbiAgICAgICAgdGhpcy5fZHJhZ0luQ29udGFpbmVyID0gbnVsbDtcbiAgICAgICAgdGhpcy5fbGFzdERyb3BUYXJnZXQgPSBudWxsO1xuICAgICAgICB0aGlzLl9pc2RyYWdnaW5nID0gZmFsc2U7XG4gICAgfVxufVxuIl19
@@ -1,51 +1,51 @@
1
- import { Injectable } from "@angular/core";
2
- import { DomSanitizer } from "@angular/platform-browser";
3
- import { IconSvg } from "../model/icon-svg";
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/platform-browser";
6
- export class IconCacheService {
7
- constructor(_sanitizer) {
8
- this._sanitizer = _sanitizer;
9
- this._iconCache = {};
10
- this.setIconCache();
11
- }
12
- /**
13
- * All the icons as a large JSON object, from the all-icons.json file.
14
- * The object has property keys that are the icon names, and property values with the data string of the actual svg icon.
15
- */
16
- get iconCache() {
17
- return this._iconCache;
18
- }
19
- getIcon(iconName) {
20
- if (iconName) {
21
- return this._iconCache[iconName.toLowerCase()];
22
- }
23
- }
24
- getIconAsBase64(iconName) {
25
- const icon = IconSvg[iconName];
26
- const base64Data = window.btoa(icon);
27
- return this._sanitizer.bypassSecurityTrustUrl(`data:image/svg+xml;base64,${base64Data}`);
28
- }
29
- getRawIcon(iconName) {
30
- if (iconName) {
31
- return IconSvg[iconName.toLowerCase()];
32
- }
33
- }
34
- setIconCache() {
35
- for (const key in IconSvg) {
36
- if (IconSvg.hasOwnProperty(key) && typeof IconSvg[key] !== "function") {
37
- this._iconCache[key.toLowerCase()] = this._sanitizer.bypassSecurityTrustHtml(IconSvg[key]);
38
- }
39
- }
40
- }
41
- }
42
- IconCacheService.ɵprov = i0.ɵɵdefineInjectable({ factory: function IconCacheService_Factory() { return new IconCacheService(i0.ɵɵinject(i1.DomSanitizer)); }, token: IconCacheService, providedIn: "root" });
43
- IconCacheService.decorators = [
44
- { type: Injectable, args: [{
45
- providedIn: "root"
46
- },] }
47
- ];
48
- IconCacheService.ctorParameters = () => [
49
- { type: DomSanitizer }
50
- ];
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi1jYWNoZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkY29tcG9uZW50cy9zcmMvbGliL3NlcnZpY2UvaWNvbi1jYWNoZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLFlBQVksRUFBVyxNQUFNLDJCQUEyQixDQUFDO0FBRWpFLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBSzFDLE1BQU0sT0FBTyxnQkFBZ0I7SUFXM0IsWUFDVSxVQUF3QjtRQUF4QixlQUFVLEdBQVYsVUFBVSxDQUFjO1FBSDFCLGVBQVUsR0FBcUMsRUFBRSxDQUFDO1FBS3hELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBZEQ7OztPQUdHO0lBQ0gsSUFBVyxTQUFTO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBVU0sT0FBTyxDQUFDLFFBQXVCO1FBQ3BDLElBQUksUUFBUSxFQUFFO1lBQ1osT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1NBQ2hEO0lBQ0gsQ0FBQztJQUVNLGVBQWUsQ0FBQyxRQUFjO1FBQ25DLE1BQU0sSUFBSSxHQUFXLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2QyxNQUFNLFVBQVUsR0FBVyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyw2QkFBNkIsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBRU0sVUFBVSxDQUFDLFFBQWM7UUFDOUIsSUFBSSxRQUFRLEVBQUU7WUFDWixPQUFPLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztTQUN4QztJQUNILENBQUM7SUFFTSxZQUFZO1FBQ2pCLEtBQUssTUFBTSxHQUFHLElBQUksT0FBTyxFQUFFO1lBQ3pCLElBQUksT0FBTyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxVQUFVLEVBQUU7Z0JBQ3JFLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUM1RjtTQUNGO0lBQ0gsQ0FBQzs7OztZQTVDRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQU5PLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7RG9tU2FuaXRpemVyLCBTYWZlSHRtbH0gZnJvbSBcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXJcIjtcclxuaW1wb3J0IHtJY29ufSBmcm9tIFwiLi4vZW51bS9pY29uLmVudW1cIjtcclxuaW1wb3J0IHtJY29uU3ZnfSBmcm9tIFwiLi4vbW9kZWwvaWNvbi1zdmdcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiBcInJvb3RcIlxyXG59KVxyXG5leHBvcnQgY2xhc3MgSWNvbkNhY2hlU2VydmljZSB7XHJcbiAgLyoqXHJcbiAgICogQWxsIHRoZSBpY29ucyBhcyBhIGxhcmdlIEpTT04gb2JqZWN0LCBmcm9tIHRoZSBhbGwtaWNvbnMuanNvbiBmaWxlLlxyXG4gICAqIFRoZSBvYmplY3QgaGFzIHByb3BlcnR5IGtleXMgdGhhdCBhcmUgdGhlIGljb24gbmFtZXMsIGFuZCBwcm9wZXJ0eSB2YWx1ZXMgd2l0aCB0aGUgZGF0YSBzdHJpbmcgb2YgdGhlIGFjdHVhbCBzdmcgaWNvbi5cclxuICAgKi9cclxuICBwdWJsaWMgZ2V0IGljb25DYWNoZSgpOiB7IFtpY29uTmFtZTogc3RyaW5nXTogU2FmZUh0bWwgfSB7XHJcbiAgICByZXR1cm4gdGhpcy5faWNvbkNhY2hlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaWNvbkNhY2hlOiB7IFtpY29uTmFtZTogc3RyaW5nXTogU2FmZUh0bWwgfSA9IHt9O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX3Nhbml0aXplcjogRG9tU2FuaXRpemVyXHJcbiAgKSB7XHJcbiAgICB0aGlzLnNldEljb25DYWNoZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEljb24oaWNvbk5hbWU6IEljb24gfCBzdHJpbmcpOiBTYWZlSHRtbCB7XHJcbiAgICBpZiAoaWNvbk5hbWUpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX2ljb25DYWNoZVtpY29uTmFtZS50b0xvd2VyQ2FzZSgpXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRJY29uQXNCYXNlNjQoaWNvbk5hbWU6IEljb24pOiBTYWZlSHRtbCB7XHJcbiAgICBjb25zdCBpY29uOiBzdHJpbmcgPSBJY29uU3ZnW2ljb25OYW1lXTtcclxuICAgIGNvbnN0IGJhc2U2NERhdGE6IHN0cmluZyA9IHdpbmRvdy5idG9hKGljb24pO1xyXG4gICAgcmV0dXJuIHRoaXMuX3Nhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0VXJsKGBkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LCR7YmFzZTY0RGF0YX1gKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRSYXdJY29uKGljb25OYW1lOiBJY29uKTogc3RyaW5nIHtcclxuICAgIGlmIChpY29uTmFtZSkge1xyXG4gICAgICByZXR1cm4gSWNvblN2Z1tpY29uTmFtZS50b0xvd2VyQ2FzZSgpXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRJY29uQ2FjaGUoKTogdm9pZCB7XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBJY29uU3ZnKSB7XHJcbiAgICAgIGlmIChJY29uU3ZnLmhhc093blByb3BlcnR5KGtleSkgJiYgdHlwZW9mIEljb25Tdmdba2V5XSAhPT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgdGhpcy5faWNvbkNhY2hlW2tleS50b0xvd2VyQ2FzZSgpXSA9IHRoaXMuX3Nhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChJY29uU3ZnW2tleV0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
1
+ import { Injectable } from "@angular/core";
2
+ import { DomSanitizer } from "@angular/platform-browser";
3
+ import { IconSvg } from "../model/icon-svg";
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/platform-browser";
6
+ export class IconCacheService {
7
+ constructor(_sanitizer) {
8
+ this._sanitizer = _sanitizer;
9
+ this._iconCache = {};
10
+ this.setIconCache();
11
+ }
12
+ /**
13
+ * All the icons as a large JSON object, from the all-icons.json file.
14
+ * The object has property keys that are the icon names, and property values with the data string of the actual svg icon.
15
+ */
16
+ get iconCache() {
17
+ return this._iconCache;
18
+ }
19
+ getIcon(iconName) {
20
+ if (iconName) {
21
+ return this._iconCache[iconName.toLowerCase()];
22
+ }
23
+ }
24
+ getIconAsBase64(iconName) {
25
+ const icon = IconSvg[iconName];
26
+ const base64Data = window.btoa(icon);
27
+ return this._sanitizer.bypassSecurityTrustUrl(`data:image/svg+xml;base64,${base64Data}`);
28
+ }
29
+ getRawIcon(iconName) {
30
+ if (iconName) {
31
+ return IconSvg[iconName.toLowerCase()];
32
+ }
33
+ }
34
+ setIconCache() {
35
+ for (const key in IconSvg) {
36
+ if (IconSvg.hasOwnProperty(key) && typeof IconSvg[key] !== "function") {
37
+ this._iconCache[key.toLowerCase()] = this._sanitizer.bypassSecurityTrustHtml(IconSvg[key]);
38
+ }
39
+ }
40
+ }
41
+ }
42
+ IconCacheService.ɵprov = i0.ɵɵdefineInjectable({ factory: function IconCacheService_Factory() { return new IconCacheService(i0.ɵɵinject(i1.DomSanitizer)); }, token: IconCacheService, providedIn: "root" });
43
+ IconCacheService.decorators = [
44
+ { type: Injectable, args: [{
45
+ providedIn: "root"
46
+ },] }
47
+ ];
48
+ IconCacheService.ctorParameters = () => [
49
+ { type: DomSanitizer }
50
+ ];
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi1jYWNoZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkY29tcG9uZW50cy9zcmMvbGliL3NlcnZpY2UvaWNvbi1jYWNoZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLFlBQVksRUFBVyxNQUFNLDJCQUEyQixDQUFDO0FBRWpFLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBSzFDLE1BQU0sT0FBTyxnQkFBZ0I7SUFXM0IsWUFDVSxVQUF3QjtRQUF4QixlQUFVLEdBQVYsVUFBVSxDQUFjO1FBSDFCLGVBQVUsR0FBcUMsRUFBRSxDQUFDO1FBS3hELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBZEQ7OztPQUdHO0lBQ0gsSUFBVyxTQUFTO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBVU0sT0FBTyxDQUFDLFFBQXVCO1FBQ3BDLElBQUksUUFBUSxFQUFFO1lBQ1osT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1NBQ2hEO0lBQ0gsQ0FBQztJQUVNLGVBQWUsQ0FBQyxRQUFjO1FBQ25DLE1BQU0sSUFBSSxHQUFXLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2QyxNQUFNLFVBQVUsR0FBVyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyw2QkFBNkIsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBRU0sVUFBVSxDQUFDLFFBQWM7UUFDOUIsSUFBSSxRQUFRLEVBQUU7WUFDWixPQUFPLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztTQUN4QztJQUNILENBQUM7SUFFTSxZQUFZO1FBQ2pCLEtBQUssTUFBTSxHQUFHLElBQUksT0FBTyxFQUFFO1lBQ3pCLElBQUksT0FBTyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxVQUFVLEVBQUU7Z0JBQ3JFLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUM1RjtTQUNGO0lBQ0gsQ0FBQzs7OztZQTVDRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQU5PLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge0RvbVNhbml0aXplciwgU2FmZUh0bWx9IGZyb20gXCJAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyXCI7XG5pbXBvcnQge0ljb259IGZyb20gXCIuLi9lbnVtL2ljb24uZW51bVwiO1xuaW1wb3J0IHtJY29uU3ZnfSBmcm9tIFwiLi4vbW9kZWwvaWNvbi1zdmdcIjtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiBcInJvb3RcIlxufSlcbmV4cG9ydCBjbGFzcyBJY29uQ2FjaGVTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIEFsbCB0aGUgaWNvbnMgYXMgYSBsYXJnZSBKU09OIG9iamVjdCwgZnJvbSB0aGUgYWxsLWljb25zLmpzb24gZmlsZS5cbiAgICogVGhlIG9iamVjdCBoYXMgcHJvcGVydHkga2V5cyB0aGF0IGFyZSB0aGUgaWNvbiBuYW1lcywgYW5kIHByb3BlcnR5IHZhbHVlcyB3aXRoIHRoZSBkYXRhIHN0cmluZyBvZiB0aGUgYWN0dWFsIHN2ZyBpY29uLlxuICAgKi9cbiAgcHVibGljIGdldCBpY29uQ2FjaGUoKTogeyBbaWNvbk5hbWU6IHN0cmluZ106IFNhZmVIdG1sIH0ge1xuICAgIHJldHVybiB0aGlzLl9pY29uQ2FjaGU7XG4gIH1cblxuICBwcml2YXRlIF9pY29uQ2FjaGU6IHsgW2ljb25OYW1lOiBzdHJpbmddOiBTYWZlSHRtbCB9ID0ge307XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfc2FuaXRpemVyOiBEb21TYW5pdGl6ZXJcbiAgKSB7XG4gICAgdGhpcy5zZXRJY29uQ2FjaGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRJY29uKGljb25OYW1lOiBJY29uIHwgc3RyaW5nKTogU2FmZUh0bWwge1xuICAgIGlmIChpY29uTmFtZSkge1xuICAgICAgcmV0dXJuIHRoaXMuX2ljb25DYWNoZVtpY29uTmFtZS50b0xvd2VyQ2FzZSgpXTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0SWNvbkFzQmFzZTY0KGljb25OYW1lOiBJY29uKTogU2FmZUh0bWwge1xuICAgIGNvbnN0IGljb246IHN0cmluZyA9IEljb25TdmdbaWNvbk5hbWVdO1xuICAgIGNvbnN0IGJhc2U2NERhdGE6IHN0cmluZyA9IHdpbmRvdy5idG9hKGljb24pO1xuICAgIHJldHVybiB0aGlzLl9zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFVybChgZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCwke2Jhc2U2NERhdGF9YCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0UmF3SWNvbihpY29uTmFtZTogSWNvbik6IHN0cmluZyB7XG4gICAgaWYgKGljb25OYW1lKSB7XG4gICAgICByZXR1cm4gSWNvblN2Z1tpY29uTmFtZS50b0xvd2VyQ2FzZSgpXTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0SWNvbkNhY2hlKCk6IHZvaWQge1xuICAgIGZvciAoY29uc3Qga2V5IGluIEljb25TdmcpIHtcbiAgICAgIGlmIChJY29uU3ZnLmhhc093blByb3BlcnR5KGtleSkgJiYgdHlwZW9mIEljb25Tdmdba2V5XSAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHRoaXMuX2ljb25DYWNoZVtrZXkudG9Mb3dlckNhc2UoKV0gPSB0aGlzLl9zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoSWNvblN2Z1trZXldKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==