@bizdoc/core 1.14.16 → 1.15.2

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 (612) hide show
  1. package/assets/themes/brown.min.css +5 -5
  2. package/assets/themes/dark.min.css +5 -5
  3. package/assets/themes/deep-purple-light-blue.min.css +6 -6
  4. package/assets/themes/deep-purple-teal.min.css +6 -6
  5. package/assets/themes/default.min.css +6 -6
  6. package/assets/themes/green.min.css +5 -5
  7. package/assets/themes/indigo.min.css +5 -5
  8. package/esm2020/lib/admin/admin-dismiss.service.mjs +3 -3
  9. package/esm2020/lib/admin/admin-menu.component.mjs +9 -9
  10. package/esm2020/lib/admin/configuration-designer/designer-element.component.mjs +77 -0
  11. package/esm2020/lib/admin/configuration-designer/designer.base.mjs +13 -0
  12. package/esm2020/lib/admin/configuration-designer/designer.component.mjs +102 -0
  13. package/esm2020/lib/admin/configuration-designer/elements/action.component.mjs +31 -0
  14. package/esm2020/lib/admin/configuration-designer/elements/analysis-widget.component.mjs +73 -0
  15. package/esm2020/lib/admin/configuration-designer/elements/anomaly-rule.component.mjs +31 -0
  16. package/esm2020/lib/admin/configuration-designer/elements/box-form.component.mjs +31 -0
  17. package/esm2020/lib/admin/configuration-designer/elements/chart-view.component.mjs +76 -0
  18. package/esm2020/lib/admin/configuration-designer/elements/cube-view.component.mjs +44 -0
  19. package/esm2020/lib/admin/configuration-designer/elements/cube.component.mjs +32 -0
  20. package/esm2020/lib/admin/configuration-designer/elements/documents-report.component.mjs +51 -0
  21. package/esm2020/lib/admin/configuration-designer/elements/documents-widget.component.mjs +50 -0
  22. package/esm2020/lib/admin/configuration-designer/elements/explore-view.component.mjs +43 -0
  23. package/esm2020/lib/admin/configuration-designer/elements/folder.component.mjs +32 -0
  24. package/esm2020/lib/admin/configuration-designer/elements/form.component.mjs +79 -0
  25. package/esm2020/lib/admin/configuration-designer/elements/guide.component.mjs +36 -0
  26. package/esm2020/lib/admin/configuration-designer/elements/matrix-view.component.mjs +65 -0
  27. package/esm2020/lib/admin/configuration-designer/elements/parallel-view.component.mjs +56 -0
  28. package/esm2020/lib/admin/configuration-designer/elements/performance-widget.component.mjs +47 -0
  29. package/esm2020/lib/admin/configuration-designer/elements/pivot-view.component.mjs +57 -0
  30. package/esm2020/lib/admin/configuration-designer/elements/report.component.mjs +32 -0
  31. package/esm2020/lib/admin/configuration-designer/elements/role.component.mjs +31 -0
  32. package/esm2020/lib/admin/configuration-designer/elements/rule.component.mjs +29 -0
  33. package/esm2020/lib/admin/configuration-designer/elements/sum-view.component.mjs +57 -0
  34. package/esm2020/lib/admin/configuration-designer/elements/tasks-report.component.mjs +60 -0
  35. package/esm2020/lib/admin/configuration-designer/elements/type.component.mjs +33 -0
  36. package/esm2020/lib/admin/configuration-designer/elements/usage-report.component.mjs +60 -0
  37. package/esm2020/lib/admin/configuration-designer/elements/utility.component.mjs +32 -0
  38. package/esm2020/lib/admin/configuration-designer/elements/view.component.mjs +32 -0
  39. package/esm2020/lib/admin/configuration-designer/elements/widget.component.mjs +31 -0
  40. package/esm2020/lib/admin/configuration-designer/privileges.component.mjs +35 -0
  41. package/esm2020/lib/admin/core/ace.input.mjs +5 -12
  42. package/esm2020/lib/admin/core/color-picker.input.mjs +7 -7
  43. package/esm2020/lib/admin/core/search.input.mjs +9 -16
  44. package/esm2020/lib/admin/diff/configuration-diff.component.mjs +17 -17
  45. package/esm2020/lib/admin/document-trace/document-trace.component.mjs +22 -22
  46. package/esm2020/lib/admin/document-trace/reassign.dialog.mjs +13 -13
  47. package/esm2020/lib/admin/document-trace/trace-element.component.mjs +12 -12
  48. package/esm2020/lib/admin/form/designer/designer.component.mjs +56 -0
  49. package/esm2020/lib/admin/form/form.resolve.service.mjs +3 -3
  50. package/esm2020/lib/admin/form/form.service.mjs +11 -6
  51. package/esm2020/lib/admin/form/workflow/node.component.mjs +11 -11
  52. package/esm2020/lib/admin/form/workflow/role-node.component.mjs +15 -15
  53. package/esm2020/lib/admin/form/workflow/workflow.component.mjs +12 -12
  54. package/esm2020/lib/admin/indices/manage-cube-index.component.mjs +13 -13
  55. package/esm2020/lib/admin/patterns/patterns.component.mjs +25 -25
  56. package/esm2020/lib/admin/permissions/permissions.component.mjs +12 -12
  57. package/esm2020/lib/admin/positions/positions-popup.component.mjs +13 -13
  58. package/esm2020/lib/admin/positions/positions.component.mjs +19 -19
  59. package/esm2020/lib/admin/profiler/outofoffice.component.mjs +21 -21
  60. package/esm2020/lib/admin/profiler/profiler.component.mjs +17 -17
  61. package/esm2020/lib/admin/utility-ref.mjs +2 -2
  62. package/esm2020/lib/admin/utility-wrapper.component.mjs +3 -3
  63. package/esm2020/lib/admin/utility.pane.component.mjs +3 -3
  64. package/esm2020/lib/app.component.mjs +6 -6
  65. package/esm2020/lib/bizdoc.module.mjs +11 -13
  66. package/esm2020/lib/browse/browse-items.component.mjs +25 -25
  67. package/esm2020/lib/browse/browse.mobile.component.mjs +17 -17
  68. package/esm2020/lib/browse/browse.pane.component.mjs +17 -17
  69. package/esm2020/lib/browse/expanded-item/expanded-item.component.mjs +13 -13
  70. package/esm2020/lib/browse/filter/filter.component.mjs +13 -13
  71. package/esm2020/lib/browse/folders-menu.component.mjs +12 -12
  72. package/esm2020/lib/chat/chat-info.mjs +3 -3
  73. package/esm2020/lib/chat/chat.mobile.component.mjs +7 -7
  74. package/esm2020/lib/chat/chat.service.mjs +3 -3
  75. package/esm2020/lib/chat/contacts.component.mjs +23 -23
  76. package/esm2020/lib/chat/contacts.pane.component.mjs +3 -3
  77. package/esm2020/lib/chat/conversation.component.mjs +11 -11
  78. package/esm2020/lib/chat/conversation.pane.component.mjs +6 -12
  79. package/esm2020/lib/compose/action/action-picker.component.mjs +9 -9
  80. package/esm2020/lib/compose/action/action.dialog.mjs +7 -7
  81. package/esm2020/lib/compose/action/action.pane.dialog.exp.mjs +5 -5
  82. package/esm2020/lib/compose/action/assign-action.component.mjs +13 -13
  83. package/esm2020/lib/compose/action/moveto-action.component.mjs +10 -10
  84. package/esm2020/lib/compose/action/return-action.component.mjs +12 -12
  85. package/esm2020/lib/compose/attachments/attachments.component.mjs +10 -10
  86. package/esm2020/lib/compose/attachments/preview/attachment-preview.component.mjs +8 -8
  87. package/esm2020/lib/compose/attachments/progress-button.directive.mjs +3 -3
  88. package/esm2020/lib/compose/can-deactivate-changes.service.mjs +3 -3
  89. package/esm2020/lib/compose/comments/comment.component.mjs +15 -15
  90. package/esm2020/lib/compose/comments/comments.component.mjs +7 -7
  91. package/esm2020/lib/compose/comments/{Comments.pane.component.mjs → comments.pane.component.mjs} +6 -14
  92. package/esm2020/lib/compose/comments/edit-comment.component.mjs +3 -3
  93. package/esm2020/lib/compose/comments/edits.component.mjs +10 -10
  94. package/esm2020/lib/compose/comments/quick-comment.component.exp.mjs +5 -5
  95. package/esm2020/lib/compose/comments/votes.component.mjs +10 -10
  96. package/esm2020/lib/compose/compose-resolve.service.mjs +6 -6
  97. package/esm2020/lib/compose/compose.mobile.component.mjs +17 -17
  98. package/esm2020/lib/compose/compose.pane.component.mjs +13 -13
  99. package/esm2020/lib/compose/copy/copy.dialog.mjs +8 -8
  100. package/esm2020/lib/compose/dismiss.service.mjs +3 -3
  101. package/esm2020/lib/compose/document-resolver.service.mjs +3 -3
  102. package/esm2020/lib/compose/document.component.mjs +3 -3
  103. package/esm2020/lib/compose/document.mobile.component.mjs +3 -3
  104. package/esm2020/lib/compose/document.pane.component.mjs +3 -3
  105. package/esm2020/lib/compose/events/events.component.mjs +8 -8
  106. package/esm2020/lib/compose/form-selector/form-selector.sheet.mjs +8 -8
  107. package/esm2020/lib/compose/form.component.mjs +7 -7
  108. package/esm2020/lib/compose/new-menu.component.mjs +10 -10
  109. package/esm2020/lib/compose/privilage.directive.mjs +6 -6
  110. package/esm2020/lib/compose/recipient-resolver.service.mjs +3 -3
  111. package/esm2020/lib/compose/state.component.mjs +3 -3
  112. package/esm2020/lib/compose/tag/tags.component.mjs +8 -8
  113. package/esm2020/lib/compose/trace/flow.component.mjs +63 -82
  114. package/esm2020/lib/compose/trace/people.component.mjs +5 -5
  115. package/esm2020/lib/compose/trace/trace.base.mjs +16 -7
  116. package/esm2020/lib/compose/trace/trace.component.mjs +16 -24
  117. package/esm2020/lib/compose/trace/trace.pane.component.mjs +3 -3
  118. package/esm2020/lib/compose/version-compare/version-compare.component.mjs +3 -3
  119. package/esm2020/lib/compose/version-compare/version-compare.directive.mjs +9 -9
  120. package/esm2020/lib/compose/version-compare/version.pane.component.mjs +11 -11
  121. package/esm2020/lib/core/NgComponentOutlet.mjs +3 -3
  122. package/esm2020/lib/core/account.service.mjs +3 -3
  123. package/esm2020/lib/core/animated-icon/animated-icon.directive.mjs +3 -3
  124. package/esm2020/lib/core/avatar/avatar.component.mjs +3 -3
  125. package/esm2020/lib/core/component-factory-resolver.mjs +4 -4
  126. package/esm2020/lib/core/controls/address.input.mjs +11 -17
  127. package/esm2020/lib/core/controls/auto-complete.input.mjs +11 -11
  128. package/esm2020/lib/core/controls/combination-picker-body.mjs +11 -11
  129. package/esm2020/lib/core/controls/combination-picker.mjs +3 -3
  130. package/esm2020/lib/core/controls/combination-pool.mjs +7 -7
  131. package/esm2020/lib/core/controls/file.input.mjs +10 -10
  132. package/esm2020/lib/core/controls/select.input.mjs +6 -6
  133. package/esm2020/lib/core/controls/time-picker.mjs +9 -9
  134. package/esm2020/lib/core/controls/timespan.input.mjs +8 -35
  135. package/esm2020/lib/core/datasource.service.mjs +3 -3
  136. package/esm2020/lib/core/guide/guide.component.mjs +10 -10
  137. package/esm2020/lib/core/guide/guide.service.mjs +3 -3
  138. package/esm2020/lib/core/guide/help-tip.component.mjs +11 -23
  139. package/esm2020/lib/core/http.interceptor.mjs +3 -3
  140. package/esm2020/lib/core/hub.service.mjs +3 -3
  141. package/esm2020/lib/core/identity/identity.component.mjs +5 -5
  142. package/esm2020/lib/core/info/attachment-info.service.mjs +3 -3
  143. package/esm2020/lib/core/info/document-info.service.mjs +3 -3
  144. package/esm2020/lib/core/info/location-info.component.mjs +3 -3
  145. package/esm2020/lib/core/info/map-info.mjs +3 -3
  146. package/esm2020/lib/core/layout/autocomplete.field.mjs +8 -8
  147. package/esm2020/lib/core/layout/checkbox.field.mjs +7 -7
  148. package/esm2020/lib/core/layout/checkbox.mjs +6 -6
  149. package/esm2020/lib/core/layout/date-range.field.mjs +6 -6
  150. package/esm2020/lib/core/layout/date.field.mjs +9 -9
  151. package/esm2020/lib/core/layout/expression.field.mjs +8 -8
  152. package/esm2020/lib/core/layout/file.field.mjs +11 -9
  153. package/esm2020/lib/core/layout/html.field.mjs +8 -8
  154. package/esm2020/lib/core/layout/input.base.mjs +4 -5
  155. package/esm2020/lib/core/layout/input.field.mjs +8 -8
  156. package/esm2020/lib/core/layout/layout.component.mjs +3 -3
  157. package/esm2020/lib/core/layout/numeric.field.mjs +8 -8
  158. package/esm2020/lib/core/layout/select.field.mjs +10 -10
  159. package/esm2020/lib/core/layout/switch.field.mjs +7 -7
  160. package/esm2020/lib/core/layout/textarea.field.mjs +8 -8
  161. package/esm2020/lib/core/layout/timespan.field.mjs +9 -9
  162. package/esm2020/lib/core/lottie-animation.mjs +3 -3
  163. package/esm2020/lib/core/mailbox.service.mjs +6 -4
  164. package/esm2020/lib/core/models.mjs +1 -1
  165. package/esm2020/lib/core/none.component.mjs +7 -7
  166. package/esm2020/lib/core/pipes/action.pipe.mjs +3 -3
  167. package/esm2020/lib/core/pipes/calendar.pipe.mjs +3 -3
  168. package/esm2020/lib/core/pipes/date-format.pipe.mjs +3 -3
  169. package/esm2020/lib/core/pipes/daterange.pipe.mjs +6 -6
  170. package/esm2020/lib/core/pipes/difference.pipe.mjs +3 -3
  171. package/esm2020/lib/core/pipes/duration-format.pipe.mjs +3 -3
  172. package/esm2020/lib/core/pipes/duration.pipe.mjs +3 -3
  173. package/esm2020/lib/core/pipes/form.pipe.mjs +3 -3
  174. package/esm2020/lib/core/pipes/join.pipe.mjs +3 -3
  175. package/esm2020/lib/core/pipes/role.pipe.mjs +3 -3
  176. package/esm2020/lib/core/pipes/sanitize-html.pipe.mjs +3 -3
  177. package/esm2020/lib/core/pipes/sort.pipe.mjs +6 -6
  178. package/esm2020/lib/core/pipes/state.pipe.mjs +3 -3
  179. package/esm2020/lib/core/pipes/time-ago.pipe.mjs +3 -3
  180. package/esm2020/lib/core/pipes/translate.pipe.mjs +6 -6
  181. package/esm2020/lib/core/pipes/type-value.pipe.mjs +3 -3
  182. package/esm2020/lib/core/pipes/user-name.pipe.mjs +3 -3
  183. package/esm2020/lib/core/popup/popup.component.mjs +3 -3
  184. package/esm2020/lib/core/popup/popup.service.mjs +3 -3
  185. package/esm2020/lib/core/popup/tooltip.directive.mjs +6 -6
  186. package/esm2020/lib/core/prompt/ask/ask.dialog.mjs +5 -5
  187. package/esm2020/lib/core/prompt/mask/mask.component.mjs +3 -3
  188. package/esm2020/lib/core/prompt.service.mjs +3 -3
  189. package/esm2020/lib/core/router.mjs +6 -6
  190. package/esm2020/lib/core/save-changes.dialog.mjs +5 -5
  191. package/esm2020/lib/core/session.service.mjs +3 -3
  192. package/esm2020/lib/core/slots/router.directive.mjs +3 -3
  193. package/esm2020/lib/core/slots/router.service.mjs +3 -3
  194. package/esm2020/lib/core/slots/slots.component.mjs +14 -14
  195. package/esm2020/lib/core/tagging/documents.component.mjs +7 -7
  196. package/esm2020/lib/core/tagging/edit-input.component.mjs +10 -10
  197. package/esm2020/lib/core/tagging/emoji.component.mjs +4 -4
  198. package/esm2020/lib/core/tagging/tagging-item.directive.mjs +3 -3
  199. package/esm2020/lib/core/tagging/tagging.component-base.mjs +3 -3
  200. package/esm2020/lib/core/tagging/tagging.directive.mjs +3 -3
  201. package/esm2020/lib/core/tagging/tagging.pipe.mjs +3 -3
  202. package/esm2020/lib/core/tagging/users.component.mjs +7 -7
  203. package/esm2020/lib/core/translate.service.mjs +3 -3
  204. package/esm2020/lib/core/translations.mjs +11 -1
  205. package/esm2020/lib/core/window-title.service.mjs +3 -3
  206. package/esm2020/lib/cube/accum/accum.component.mjs +3 -3
  207. package/esm2020/lib/cube/chart/chart.component.mjs +3 -3
  208. package/esm2020/lib/cube/cube-info.service.mjs +3 -3
  209. package/esm2020/lib/cube/cube-menu.component.mjs +10 -10
  210. package/esm2020/lib/cube/cube-view.component.mjs +3 -3
  211. package/esm2020/lib/cube/cube.service.mjs +4 -4
  212. package/esm2020/lib/cube/explore/document-item.component.mjs +3 -3
  213. package/esm2020/lib/cube/explore/explore-item.component.mjs +3 -3
  214. package/esm2020/lib/cube/explore/explore-items.component.mjs +8 -8
  215. package/esm2020/lib/cube/explore/explore.pane.component.mjs +12 -15
  216. package/esm2020/lib/cube/explore/item-resolver.service.mjs +6 -6
  217. package/esm2020/lib/cube/explore/item.pane.component.mjs +3 -3
  218. package/esm2020/lib/cube/filter/filter-tags.component.exp.mjs +7 -7
  219. package/esm2020/lib/cube/filter/filter.component.mjs +11 -11
  220. package/esm2020/lib/cube/grid/grid.component.mjs +3 -3
  221. package/esm2020/lib/cube/grid/spreadsheet.component.mjs +5 -5
  222. package/esm2020/lib/cube/matrix/matrix.base.mjs +6 -10
  223. package/esm2020/lib/cube/matrix/matrix.mobile.component.mjs +20 -16
  224. package/esm2020/lib/cube/matrix/matrix.pane.component.mjs +20 -16
  225. package/esm2020/lib/cube/matrix/popup.component.mjs +11 -11
  226. package/esm2020/lib/cube/matrix/table.component.mjs +4 -4
  227. package/esm2020/lib/cube/parallel/parallel.component.mjs +5 -5
  228. package/esm2020/lib/cube/pivot/pivot.component.mjs +6 -11
  229. package/esm2020/lib/cube/sum/sum.component.mjs +6 -6
  230. package/esm2020/lib/cube/view-base.mjs +6 -10
  231. package/esm2020/lib/cube/view.mobile.component.mjs +14 -14
  232. package/esm2020/lib/cube/view.pane.component.mjs +13 -13
  233. package/esm2020/lib/dashboard/actions/actions.widget.mjs +3 -3
  234. package/esm2020/lib/dashboard/cube/accum-cube.widget.mjs +4 -4
  235. package/esm2020/lib/dashboard/cube/compare.widget.mjs +12 -12
  236. package/esm2020/lib/dashboard/cube/cube-analysis.base.mjs +3 -3
  237. package/esm2020/lib/dashboard/cube/cube-analysis.widget.mjs +3 -3
  238. package/esm2020/lib/dashboard/cube/cube-chart.widget.mjs +4 -4
  239. package/esm2020/lib/dashboard/cube/documents.widget.mjs +4 -4
  240. package/esm2020/lib/dashboard/cube/filter/filter.component.mjs +3 -3
  241. package/esm2020/lib/dashboard/dashboard.component.mjs +11 -11
  242. package/esm2020/lib/dashboard/dashboard.pane.component.mjs +5 -11
  243. package/esm2020/lib/dashboard/recents/recents.widget.mjs +9 -9
  244. package/esm2020/lib/dashboard/score/activity.widget.mjs +3 -3
  245. package/esm2020/lib/dashboard/score/compare-groups.widget.mjs +3 -3
  246. package/esm2020/lib/dashboard/score/peers-performance.widget.mjs +3 -3
  247. package/esm2020/lib/dashboard/score/pending-results.widget.mjs +12 -12
  248. package/esm2020/lib/dashboard/score/personal-score.widget.mjs +3 -3
  249. package/esm2020/lib/dashboard/widget-item.component.mjs +3 -3
  250. package/esm2020/lib/desktop.module.mjs +11 -13
  251. package/esm2020/lib/home/about/about.dialog.mjs +7 -7
  252. package/esm2020/lib/home/home-base.component.mjs +3 -3
  253. package/esm2020/lib/home/home.desktop.component.mjs +19 -19
  254. package/esm2020/lib/home/home.mobile.component.mjs +16 -16
  255. package/esm2020/lib/home/notifications/notifications.component.mjs +12 -12
  256. package/esm2020/lib/home/options/options.component.mjs +11 -11
  257. package/esm2020/lib/home/outofoffice/outofoffice.component.mjs +8 -8
  258. package/esm2020/lib/home/search.service.mjs +3 -3
  259. package/esm2020/lib/home/sign/sign.component.mjs +6 -6
  260. package/esm2020/lib/home/tools.component.mjs +13 -13
  261. package/esm2020/lib/impersonate/impersonate.component.mjs +10 -10
  262. package/esm2020/lib/mobile.module.mjs +11 -13
  263. package/esm2020/lib/modules/chart.module.mjs +6 -6
  264. package/esm2020/lib/modules/circular-gauge.module.mjs +5 -5
  265. package/esm2020/lib/modules/date.adapter.mjs +1 -1
  266. package/esm2020/lib/modules/datepicker.intl.mjs +4 -4
  267. package/esm2020/lib/modules/dayjs.module.mjs +5 -5
  268. package/esm2020/lib/modules/diagram.module.mjs +7 -9
  269. package/esm2020/lib/modules/gantt.module.mjs +5 -5
  270. package/esm2020/lib/modules/grid.module.mjs +6 -6
  271. package/esm2020/lib/modules/material.module.mjs +20 -22
  272. package/esm2020/lib/modules/paginator.intl.mjs +4 -4
  273. package/esm2020/lib/modules/pivot.module.mjs +5 -7
  274. package/esm2020/lib/modules/schedule.module.mjs +6 -6
  275. package/esm2020/lib/modules/spreadsheet.module.mjs +7 -9
  276. package/esm2020/lib/modules/stepper.intl.mjs +4 -4
  277. package/esm2020/lib/modules/texteditor.module.mjs +6 -8
  278. package/esm2020/lib/notifications/filter.component.mjs +8 -8
  279. package/esm2020/lib/notifications/notifications-table.component.mjs +16 -16
  280. package/esm2020/lib/notifications/notifications.mobile.component.mjs +3 -3
  281. package/esm2020/lib/notifications/notifications.pane.component.mjs +3 -3
  282. package/esm2020/lib/notifications/notifications.service.mjs +3 -3
  283. package/esm2020/lib/notifications/types/commented.notification.mjs +5 -5
  284. package/esm2020/lib/notifications/types/cube-anomaly.notification.mjs +5 -5
  285. package/esm2020/lib/notifications/types/escalated.notification.mjs +6 -6
  286. package/esm2020/lib/notifications/types/liked.notification.mjs +5 -5
  287. package/esm2020/lib/notifications/types/long-running-task.notification.mjs +3 -3
  288. package/esm2020/lib/notifications/types/notification-base.mjs +3 -3
  289. package/esm2020/lib/notifications/types/nudge.notification.mjs +6 -6
  290. package/esm2020/lib/notifications/types/state-changed.notification.mjs +6 -6
  291. package/esm2020/lib/notifications/types/tagged.notification.mjs +5 -5
  292. package/esm2020/lib/notifications/types/text.notification.mjs +3 -3
  293. package/esm2020/lib/notifications/types/upcoming-event.notification.mjs +5 -5
  294. package/esm2020/lib/options/options.component.mjs +15 -15
  295. package/esm2020/lib/options/options.service.mjs +3 -3
  296. package/esm2020/lib/reports/arguments-component.mjs +3 -3
  297. package/esm2020/lib/reports/cube/documents.component.mjs +3 -3
  298. package/esm2020/lib/reports/cube/grid-documents.component.mjs +9 -9
  299. package/esm2020/lib/reports/cube/table-documents.component.mjs +10 -10
  300. package/esm2020/lib/reports/cube/usage-args.component.mjs +3 -3
  301. package/esm2020/lib/reports/cube/usage-base.mjs +3 -3
  302. package/esm2020/lib/reports/cube/usage-chart.component.mjs +4 -4
  303. package/esm2020/lib/reports/cube/usage-pivot.component.mjs +4 -4
  304. package/esm2020/lib/reports/cube/usage.component.mjs +3 -3
  305. package/esm2020/lib/reports/report-viewer.component.mjs +3 -3
  306. package/esm2020/lib/reports/report.mobile.component.mjs +12 -12
  307. package/esm2020/lib/reports/report.pane.component.mjs +11 -11
  308. package/esm2020/lib/reports/reports-menu.component.mjs +9 -9
  309. package/esm2020/lib/reports/substitution/substitution.component.mjs +12 -12
  310. package/esm2020/lib/reports/table/table-view.component.mjs +8 -8
  311. package/esm2020/lib/reports/tasks/tasks.component.mjs +3 -3
  312. package/esm2020/lib/routes.desktop.mjs +1 -1
  313. package/esm2020/lib/scheduler/schedule.component.mjs +13 -13
  314. package/esm2020/lib/scheduler/scheduler.mobile.component.mjs +3 -3
  315. package/esm2020/lib/scheduler/scheduler.pane.component.mjs +3 -3
  316. package/esm2020/lib/shared.module.mjs +30 -32
  317. package/esm2020/lib/system.module.mjs +61 -19
  318. package/esm2020/lib/views/cube/chart.component.mjs +7 -7
  319. package/esm2020/lib/views/cube/cube-base.mjs +3 -3
  320. package/esm2020/lib/views/cube/explore.component.mjs +9 -9
  321. package/esm2020/lib/views/cube/matrix.component.mjs +12 -12
  322. package/esm2020/lib/views/cube/parallel.component.mjs +5 -5
  323. package/esm2020/lib/views/cube/pivot.component.mjs +5 -5
  324. package/esm2020/lib/views/cube/sum.component.mjs +10 -10
  325. package/esm2020/lib/views/cube/view.component.mjs +9 -9
  326. package/esm2020/lib/views/timeline/timeline.component.exp.mjs +3 -3
  327. package/esm2020/lib/views/view-item.component.mjs +3 -3
  328. package/esm2020/lib/views/views.component.mjs +5 -5
  329. package/esm2020/lib/views/views.mobile.component.mjs +3 -3
  330. package/esm2020/lib/views/views.pane.component.mjs +5 -10
  331. package/esm2020/public-api.mjs +2 -2
  332. package/fesm2015/bizdoc-core.mjs +2891 -1853
  333. package/fesm2015/bizdoc-core.mjs.map +1 -1
  334. package/fesm2020/bizdoc-core.mjs +2888 -1855
  335. package/fesm2020/bizdoc-core.mjs.map +1 -1
  336. package/{bizdoc-core.d.ts → index.d.ts} +0 -0
  337. package/lib/admin/admin-menu.component.d.ts +1 -1
  338. package/lib/admin/configuration-designer/designer-element.component.d.ts +23 -0
  339. package/lib/admin/configuration-designer/designer.base.d.ts +38 -0
  340. package/lib/admin/configuration-designer/designer.component.d.ts +47 -0
  341. package/lib/admin/configuration-designer/elements/action.component.d.ts +20 -0
  342. package/lib/admin/configuration-designer/elements/analysis-widget.component.d.ts +45 -0
  343. package/lib/admin/configuration-designer/elements/anomaly-rule.component.d.ts +20 -0
  344. package/lib/admin/configuration-designer/elements/box-form.component.d.ts +20 -0
  345. package/lib/admin/configuration-designer/elements/chart-view.component.d.ts +45 -0
  346. package/lib/admin/configuration-designer/elements/cube-view.component.d.ts +37 -0
  347. package/lib/admin/configuration-designer/elements/cube.component.d.ts +20 -0
  348. package/lib/admin/configuration-designer/elements/documents-report.component.d.ts +37 -0
  349. package/lib/admin/configuration-designer/elements/documents-widget.component.d.ts +36 -0
  350. package/lib/admin/configuration-designer/elements/explore-view.component.d.ts +35 -0
  351. package/lib/admin/configuration-designer/elements/folder.component.d.ts +19 -0
  352. package/lib/admin/configuration-designer/elements/form.component.d.ts +35 -0
  353. package/lib/admin/configuration-designer/elements/guide.component.d.ts +22 -0
  354. package/lib/admin/configuration-designer/elements/matrix-view.component.d.ts +45 -0
  355. package/lib/admin/configuration-designer/elements/parallel-view.component.d.ts +41 -0
  356. package/lib/admin/configuration-designer/elements/performance-widget.component.d.ts +32 -0
  357. package/lib/admin/configuration-designer/elements/pivot-view.component.d.ts +39 -0
  358. package/lib/admin/configuration-designer/elements/report.component.d.ts +20 -0
  359. package/lib/admin/configuration-designer/elements/role.component.d.ts +20 -0
  360. package/lib/admin/configuration-designer/elements/rule.component.d.ts +17 -0
  361. package/lib/admin/configuration-designer/elements/sum-view.component.d.ts +42 -0
  362. package/lib/admin/configuration-designer/elements/tasks-report.component.d.ts +39 -0
  363. package/lib/admin/configuration-designer/elements/type.component.d.ts +21 -0
  364. package/lib/admin/configuration-designer/elements/usage-report.component.d.ts +39 -0
  365. package/lib/admin/configuration-designer/elements/utility.component.d.ts +20 -0
  366. package/lib/admin/configuration-designer/elements/view.component.d.ts +20 -0
  367. package/lib/admin/configuration-designer/elements/widget.component.d.ts +20 -0
  368. package/lib/admin/configuration-designer/privileges.component.d.ts +20 -0
  369. package/lib/admin/core/ace.input.d.ts +1 -1
  370. package/lib/admin/core/color-picker.input.d.ts +1 -1
  371. package/lib/admin/core/search.input.d.ts +2 -2
  372. package/lib/admin/diff/configuration-diff.component.d.ts +1 -1
  373. package/lib/admin/document-trace/document-trace.component.d.ts +7 -4
  374. package/lib/admin/document-trace/reassign.dialog.d.ts +6 -3
  375. package/lib/admin/document-trace/trace-element.component.d.ts +1 -1
  376. package/lib/admin/form/designer/designer.component.d.ts +46 -0
  377. package/lib/admin/form/form.service.d.ts +6 -4
  378. package/lib/admin/form/workflow/node.component.d.ts +5 -2
  379. package/lib/admin/form/workflow/role-node.component.d.ts +14 -2
  380. package/lib/admin/form/workflow/workflow.component.d.ts +1 -1
  381. package/lib/admin/indices/manage-cube-index.component.d.ts +1 -1
  382. package/lib/admin/patterns/patterns.component.d.ts +10 -6
  383. package/lib/admin/permissions/permissions.component.d.ts +1 -1
  384. package/lib/admin/positions/positions-popup.component.d.ts +2 -2
  385. package/lib/admin/positions/positions.component.d.ts +14 -6
  386. package/lib/admin/profiler/outofoffice.component.d.ts +26 -7
  387. package/lib/admin/profiler/profiler.component.d.ts +3 -3
  388. package/lib/admin/utility-wrapper.component.d.ts +1 -1
  389. package/lib/admin/utility.pane.component.d.ts +1 -1
  390. package/lib/app.component.d.ts +2 -2
  391. package/lib/browse/browse-items.component.d.ts +1 -1
  392. package/lib/browse/browse.mobile.component.d.ts +1 -1
  393. package/lib/browse/browse.pane.component.d.ts +2 -2
  394. package/lib/browse/expanded-item/expanded-item.component.d.ts +1 -1
  395. package/lib/browse/filter/filter.component.d.ts +10 -3
  396. package/lib/browse/folders-menu.component.d.ts +1 -1
  397. package/lib/chat/chat.mobile.component.d.ts +1 -1
  398. package/lib/chat/contacts.component.d.ts +3 -3
  399. package/lib/chat/contacts.pane.component.d.ts +1 -1
  400. package/lib/chat/conversation.component.d.ts +1 -1
  401. package/lib/chat/conversation.pane.component.d.ts +1 -1
  402. package/lib/compose/action/action-picker.component.d.ts +1 -1
  403. package/lib/compose/action/action.dialog.d.ts +1 -1
  404. package/lib/compose/action/action.pane.dialog.exp.d.ts +1 -1
  405. package/lib/compose/action/assign-action.component.d.ts +8 -3
  406. package/lib/compose/action/moveto-action.component.d.ts +6 -3
  407. package/lib/compose/action/return-action.component.d.ts +5 -2
  408. package/lib/compose/attachments/attachments.component.d.ts +1 -1
  409. package/lib/compose/attachments/preview/attachment-preview.component.d.ts +1 -1
  410. package/lib/compose/attachments/progress-button.directive.d.ts +1 -1
  411. package/lib/compose/comments/comment.component.d.ts +1 -1
  412. package/lib/compose/comments/comments.component.d.ts +1 -1
  413. package/lib/compose/comments/{Comments.pane.component.d.ts → comments.pane.component.d.ts} +1 -1
  414. package/lib/compose/comments/edit-comment.component.d.ts +1 -1
  415. package/lib/compose/comments/edits.component.d.ts +1 -1
  416. package/lib/compose/comments/quick-comment.component.exp.d.ts +1 -1
  417. package/lib/compose/comments/votes.component.d.ts +1 -1
  418. package/lib/compose/compose.mobile.component.d.ts +1 -1
  419. package/lib/compose/compose.pane.component.d.ts +1 -1
  420. package/lib/compose/copy/copy.dialog.d.ts +2 -2
  421. package/lib/compose/document.component.d.ts +1 -1
  422. package/lib/compose/document.mobile.component.d.ts +1 -1
  423. package/lib/compose/document.pane.component.d.ts +1 -1
  424. package/lib/compose/events/events.component.d.ts +1 -1
  425. package/lib/compose/form-selector/form-selector.sheet.d.ts +1 -1
  426. package/lib/compose/form.component.d.ts +1 -1
  427. package/lib/compose/new-menu.component.d.ts +2 -2
  428. package/lib/compose/privilage.directive.d.ts +2 -2
  429. package/lib/compose/state.component.d.ts +1 -1
  430. package/lib/compose/tag/tags.component.d.ts +2 -2
  431. package/lib/compose/trace/flow.component.d.ts +11 -8
  432. package/lib/compose/trace/people.component.d.ts +1 -1
  433. package/lib/compose/trace/trace.base.d.ts +8 -3
  434. package/lib/compose/trace/trace.component.d.ts +5 -8
  435. package/lib/compose/trace/trace.pane.component.d.ts +1 -1
  436. package/lib/compose/version-compare/version-compare.component.d.ts +1 -1
  437. package/lib/compose/version-compare/version-compare.directive.d.ts +3 -3
  438. package/lib/compose/version-compare/version.pane.component.d.ts +1 -1
  439. package/lib/core/NgComponentOutlet.d.ts +1 -1
  440. package/lib/core/animated-icon/animated-icon.directive.d.ts +1 -1
  441. package/lib/core/avatar/avatar.component.d.ts +1 -1
  442. package/lib/core/component-factory-resolver.d.ts +1 -1
  443. package/lib/core/controls/address.input.d.ts +2 -2
  444. package/lib/core/controls/auto-complete.input.d.ts +2 -2
  445. package/lib/core/controls/combination-picker-body.d.ts +2 -2
  446. package/lib/core/controls/combination-picker.d.ts +1 -1
  447. package/lib/core/controls/combination-pool.d.ts +1 -1
  448. package/lib/core/controls/file.input.d.ts +1 -1
  449. package/lib/core/controls/select.input.d.ts +2 -2
  450. package/lib/core/controls/time-picker.d.ts +2 -2
  451. package/lib/core/controls/timespan.input.d.ts +6 -2
  452. package/lib/core/guide/guide.component.d.ts +1 -1
  453. package/lib/core/guide/help-tip.component.d.ts +1 -1
  454. package/lib/core/identity/identity.component.d.ts +1 -1
  455. package/lib/core/info/location-info.component.d.ts +1 -1
  456. package/lib/core/layout/autocomplete.field.d.ts +2 -2
  457. package/lib/core/layout/checkbox.d.ts +1 -1
  458. package/lib/core/layout/checkbox.field.d.ts +2 -2
  459. package/lib/core/layout/date-range.field.d.ts +5 -2
  460. package/lib/core/layout/date.field.d.ts +2 -2
  461. package/lib/core/layout/expression.field.d.ts +2 -2
  462. package/lib/core/layout/file.field.d.ts +3 -2
  463. package/lib/core/layout/html.field.d.ts +2 -2
  464. package/lib/core/layout/input.base.d.ts +2 -2
  465. package/lib/core/layout/input.field.d.ts +2 -2
  466. package/lib/core/layout/layout.component.d.ts +1 -1
  467. package/lib/core/layout/numeric.field.d.ts +2 -2
  468. package/lib/core/layout/select.field.d.ts +2 -2
  469. package/lib/core/layout/switch.field.d.ts +2 -2
  470. package/lib/core/layout/textarea.field.d.ts +2 -2
  471. package/lib/core/layout/timespan.field.d.ts +2 -2
  472. package/lib/core/lottie-animation.d.ts +1 -1
  473. package/lib/core/mailbox.service.d.ts +7 -0
  474. package/lib/core/none.component.d.ts +1 -1
  475. package/lib/core/pipes/action.pipe.d.ts +1 -1
  476. package/lib/core/pipes/calendar.pipe.d.ts +1 -1
  477. package/lib/core/pipes/date-format.pipe.d.ts +1 -1
  478. package/lib/core/pipes/daterange.pipe.d.ts +2 -2
  479. package/lib/core/pipes/difference.pipe.d.ts +1 -1
  480. package/lib/core/pipes/duration-format.pipe.d.ts +1 -1
  481. package/lib/core/pipes/duration.pipe.d.ts +1 -1
  482. package/lib/core/pipes/form.pipe.d.ts +1 -1
  483. package/lib/core/pipes/join.pipe.d.ts +1 -1
  484. package/lib/core/pipes/role.pipe.d.ts +1 -1
  485. package/lib/core/pipes/sanitize-html.pipe.d.ts +1 -1
  486. package/lib/core/pipes/sort.pipe.d.ts +2 -2
  487. package/lib/core/pipes/state.pipe.d.ts +1 -1
  488. package/lib/core/pipes/time-ago.pipe.d.ts +1 -1
  489. package/lib/core/pipes/translate.pipe.d.ts +2 -2
  490. package/lib/core/pipes/type-value.pipe.d.ts +1 -1
  491. package/lib/core/pipes/user-name.pipe.d.ts +1 -1
  492. package/lib/core/popup/popup.component.d.ts +1 -1
  493. package/lib/core/popup/tooltip.directive.d.ts +2 -2
  494. package/lib/core/prompt/ask/ask.dialog.d.ts +1 -1
  495. package/lib/core/prompt/mask/mask.component.d.ts +1 -1
  496. package/lib/core/save-changes.dialog.d.ts +1 -1
  497. package/lib/core/slots/router.directive.d.ts +1 -1
  498. package/lib/core/slots/slots.component.d.ts +2 -2
  499. package/lib/core/tagging/documents.component.d.ts +1 -1
  500. package/lib/core/tagging/edit-input.component.d.ts +1 -1
  501. package/lib/core/tagging/emoji.component.d.ts +1 -1
  502. package/lib/core/tagging/tagging-item.directive.d.ts +1 -1
  503. package/lib/core/tagging/tagging.component-base.d.ts +1 -1
  504. package/lib/core/tagging/tagging.directive.d.ts +1 -1
  505. package/lib/core/tagging/tagging.pipe.d.ts +1 -1
  506. package/lib/core/tagging/users.component.d.ts +1 -1
  507. package/lib/core/translations.d.ts +10 -0
  508. package/lib/cube/accum/accum.component.d.ts +1 -1
  509. package/lib/cube/chart/chart.component.d.ts +1 -1
  510. package/lib/cube/cube-menu.component.d.ts +1 -1
  511. package/lib/cube/cube-view.component.d.ts +1 -1
  512. package/lib/cube/explore/document-item.component.d.ts +1 -1
  513. package/lib/cube/explore/explore-item.component.d.ts +1 -1
  514. package/lib/cube/explore/explore-items.component.d.ts +1 -1
  515. package/lib/cube/explore/explore.pane.component.d.ts +1 -1
  516. package/lib/cube/explore/item.pane.component.d.ts +1 -1
  517. package/lib/cube/filter/filter-tags.component.exp.d.ts +1 -1
  518. package/lib/cube/filter/filter.component.d.ts +1 -1
  519. package/lib/cube/grid/grid.component.d.ts +1 -1
  520. package/lib/cube/grid/spreadsheet.component.d.ts +1 -1
  521. package/lib/cube/matrix/matrix.base.d.ts +2 -2
  522. package/lib/cube/matrix/matrix.mobile.component.d.ts +3 -1
  523. package/lib/cube/matrix/matrix.pane.component.d.ts +3 -2
  524. package/lib/cube/matrix/popup.component.d.ts +1 -1
  525. package/lib/cube/matrix/table.component.d.ts +1 -1
  526. package/lib/cube/parallel/parallel.component.d.ts +1 -1
  527. package/lib/cube/pivot/pivot.component.d.ts +1 -1
  528. package/lib/cube/sum/sum.component.d.ts +1 -1
  529. package/lib/cube/view-base.d.ts +2 -2
  530. package/lib/cube/view.mobile.component.d.ts +1 -2
  531. package/lib/cube/view.pane.component.d.ts +1 -1
  532. package/lib/dashboard/actions/actions.widget.d.ts +1 -1
  533. package/lib/dashboard/cube/accum-cube.widget.d.ts +1 -1
  534. package/lib/dashboard/cube/compare.widget.d.ts +3 -3
  535. package/lib/dashboard/cube/cube-analysis.base.d.ts +1 -1
  536. package/lib/dashboard/cube/cube-analysis.widget.d.ts +1 -1
  537. package/lib/dashboard/cube/cube-chart.widget.d.ts +1 -1
  538. package/lib/dashboard/cube/documents.widget.d.ts +1 -1
  539. package/lib/dashboard/cube/filter/filter.component.d.ts +1 -1
  540. package/lib/dashboard/dashboard.component.d.ts +1 -1
  541. package/lib/dashboard/dashboard.pane.component.d.ts +1 -1
  542. package/lib/dashboard/recents/recents.widget.d.ts +2 -2
  543. package/lib/dashboard/score/activity.widget.d.ts +1 -1
  544. package/lib/dashboard/score/compare-groups.widget.d.ts +1 -1
  545. package/lib/dashboard/score/peers-performance.widget.d.ts +1 -1
  546. package/lib/dashboard/score/pending-results.widget.d.ts +1 -1
  547. package/lib/dashboard/score/personal-score.widget.d.ts +1 -1
  548. package/lib/dashboard/widget-item.component.d.ts +1 -1
  549. package/lib/desktop.module.d.ts +1 -1
  550. package/lib/home/about/about.dialog.d.ts +1 -1
  551. package/lib/home/home-base.component.d.ts +1 -1
  552. package/lib/home/home.desktop.component.d.ts +1 -1
  553. package/lib/home/home.mobile.component.d.ts +1 -1
  554. package/lib/home/notifications/notifications.component.d.ts +1 -1
  555. package/lib/home/options/options.component.d.ts +1 -1
  556. package/lib/home/outofoffice/outofoffice.component.d.ts +1 -1
  557. package/lib/home/sign/sign.component.d.ts +1 -1
  558. package/lib/home/tools.component.d.ts +2 -2
  559. package/lib/impersonate/impersonate.component.d.ts +2 -2
  560. package/lib/notifications/filter.component.d.ts +5 -2
  561. package/lib/notifications/notifications-table.component.d.ts +1 -1
  562. package/lib/notifications/notifications.mobile.component.d.ts +1 -1
  563. package/lib/notifications/notifications.pane.component.d.ts +1 -1
  564. package/lib/notifications/types/commented.notification.d.ts +1 -1
  565. package/lib/notifications/types/cube-anomaly.notification.d.ts +1 -1
  566. package/lib/notifications/types/escalated.notification.d.ts +1 -1
  567. package/lib/notifications/types/liked.notification.d.ts +1 -1
  568. package/lib/notifications/types/long-running-task.notification.d.ts +1 -1
  569. package/lib/notifications/types/notification-base.d.ts +1 -1
  570. package/lib/notifications/types/nudge.notification.d.ts +1 -1
  571. package/lib/notifications/types/state-changed.notification.d.ts +1 -1
  572. package/lib/notifications/types/tagged.notification.d.ts +1 -1
  573. package/lib/notifications/types/text.notification.d.ts +1 -1
  574. package/lib/notifications/types/upcoming-event.notification.d.ts +1 -1
  575. package/lib/options/options.component.d.ts +37 -6
  576. package/lib/reports/arguments-component.d.ts +1 -1
  577. package/lib/reports/cube/documents.component.d.ts +1 -1
  578. package/lib/reports/cube/grid-documents.component.d.ts +1 -1
  579. package/lib/reports/cube/table-documents.component.d.ts +1 -1
  580. package/lib/reports/cube/usage-args.component.d.ts +1 -1
  581. package/lib/reports/cube/usage-base.d.ts +1 -1
  582. package/lib/reports/cube/usage-chart.component.d.ts +1 -1
  583. package/lib/reports/cube/usage-pivot.component.d.ts +1 -1
  584. package/lib/reports/cube/usage.component.d.ts +1 -1
  585. package/lib/reports/report-viewer.component.d.ts +1 -1
  586. package/lib/reports/report.mobile.component.d.ts +1 -1
  587. package/lib/reports/report.pane.component.d.ts +1 -1
  588. package/lib/reports/reports-menu.component.d.ts +1 -1
  589. package/lib/reports/substitution/substitution.component.d.ts +1 -1
  590. package/lib/reports/table/table-view.component.d.ts +1 -1
  591. package/lib/reports/tasks/tasks.component.d.ts +1 -1
  592. package/lib/scheduler/schedule.component.d.ts +1 -1
  593. package/lib/scheduler/scheduler.mobile.component.d.ts +1 -1
  594. package/lib/scheduler/scheduler.pane.component.d.ts +1 -1
  595. package/lib/shared.module.d.ts +1 -1
  596. package/lib/system.module.d.ts +57 -27
  597. package/lib/views/cube/chart.component.d.ts +1 -1
  598. package/lib/views/cube/cube-base.d.ts +1 -1
  599. package/lib/views/cube/explore.component.d.ts +1 -1
  600. package/lib/views/cube/matrix.component.d.ts +1 -1
  601. package/lib/views/cube/parallel.component.d.ts +1 -1
  602. package/lib/views/cube/pivot.component.d.ts +1 -1
  603. package/lib/views/cube/sum.component.d.ts +1 -2
  604. package/lib/views/cube/view.component.d.ts +1 -1
  605. package/lib/views/timeline/timeline.component.exp.d.ts +1 -1
  606. package/lib/views/view-item.component.d.ts +1 -1
  607. package/lib/views/views.component.d.ts +1 -1
  608. package/lib/views/views.mobile.component.d.ts +1 -1
  609. package/lib/views/views.pane.component.d.ts +1 -1
  610. package/package.json +33 -33
  611. package/public-api.d.ts +1 -1
  612. package/assets/.gitkeep +0 -0
@@ -19,26 +19,26 @@ import * as i5 from "../../core/window-title.service";
19
19
  import * as i6 from "../../core/translate.service";
20
20
  import * as i7 from "../../core/popup/popup.service";
21
21
  import * as i8 from "@angular/material/dialog";
22
- import * as i9 from "@angular/material/toolbar";
23
- import * as i10 from "@angular/material/button";
24
- import * as i11 from "@angular/material/icon";
25
- import * as i12 from "../core/search.input";
26
- import * as i13 from "@angular/material/menu";
22
+ import * as i9 from "@angular/common";
23
+ import * as i10 from "@angular/forms";
24
+ import * as i11 from "@angular/flex-layout/flex";
25
+ import * as i12 from "@angular/material/table";
26
+ import * as i13 from "@angular/material/sort";
27
27
  import * as i14 from "@angular/material/progress-bar";
28
28
  import * as i15 from "@angular/material/list";
29
- import * as i16 from "@angular/material/table";
30
- import * as i17 from "@angular/material/sort";
31
- import * as i18 from "@angular/material/divider";
29
+ import * as i16 from "@angular/material/divider";
30
+ import * as i17 from "@angular/material/toolbar";
31
+ import * as i18 from "@angular/material/core";
32
32
  import * as i19 from "@angular/material/form-field";
33
33
  import * as i20 from "@angular/material/select";
34
- import * as i21 from "@angular/material/core";
35
- import * as i22 from "../../core/popup/tooltip.directive";
36
- import * as i23 from "@angular/flex-layout/flex";
37
- import * as i24 from "@angular/common";
38
- import * as i25 from "@angular/forms";
39
- import * as i26 from "@angular/material/input";
40
- import * as i27 from "../../core/pipes/translate.pipe";
41
- import * as i28 from "../../core/pipes/sanitize-html.pipe";
34
+ import * as i21 from "@angular/material/button";
35
+ import * as i22 from "@angular/material/input";
36
+ import * as i23 from "@angular/material/icon";
37
+ import * as i24 from "@angular/material/menu";
38
+ import * as i25 from "../../core/popup/tooltip.directive";
39
+ import * as i26 from "../core/search.input";
40
+ import * as i27 from "../../core/pipes/sanitize-html.pipe";
41
+ import * as i28 from "../../core/pipes/translate.pipe";
42
42
  import * as i29 from "../utility-ref";
43
43
  let PositionsComponent = class PositionsComponent {
44
44
  /** positions ctor */
@@ -423,14 +423,14 @@ let PositionsComponent = class PositionsComponent {
423
423
  this._destroy.complete();
424
424
  }
425
425
  };
426
- PositionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PositionsComponent, deps: [{ token: i1.SessionService }, { token: UtilityRef }, { token: i2.DatasourceService }, { token: i3.PromptService }, { token: i4.AccountService }, { token: i5.WindowTitleService }, { token: i6.TranslateService }, { token: i7.Popup }, { token: i8.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
427
- PositionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: PositionsComponent, selector: "ng-component", host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" } }, viewQueries: [{ propertyName: "_fileElement", first: true, predicate: ["file"], descendants: true, static: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "noRoleTpl", first: true, predicate: ["noRoleTpl"], descendants: true, static: true }, { propertyName: "roleTpl", first: true, predicate: ["roleTpl"], descendants: true, static: true }, { propertyName: "patternTpl", first: true, predicate: ["patternTpl"], descendants: true, static: true }, { propertyName: "newGroupTpl", first: true, predicate: ["groupTpl"], descendants: true, static: true }], ngImport: i0, template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"tools = !tools\" [bizdocTooltip]=\"'Collapse' | translate\"><mat-icon>view_sidebar</mat-icon></button>\r\n <button mat-button (click)=\"save()\" color=\"primary\" [disabled]=\"!dirty\">{{'SaveChanges'|translate}}</button>\r\n <span class=\"divider\"></span>\r\n <bizdoc-search-input (valueChange)=\"search($event)\"></bizdoc-search-input>\r\n <button mat-icon-button [matMenuTriggerFor]=\"newMenu\" [bizdocTooltip]=\"'Add'|translate\"><mat-icon>add</mat-icon></button>\r\n <mat-menu #newMenu>\r\n <button mat-menu-item (click)=\"newRole()\">{{'Role'|translate}}</button>\r\n <button mat-menu-item (click)=\"newPattern()\">{{'Pattern'|translate}}</button>\r\n <button mat-menu-item (click)=\"newGroup()\">{{'Group'|translate}} </button>\r\n </mat-menu>\r\n <button mat-icon-button [bizdocTooltip]=\"'Download' | translate\" (click)=\"download()\" [disabled]=\"dirty\"><mat-icon>save_alt</mat-icon></button>\r\n</mat-toolbar>\r\n<mat-progress-bar [mode]=\"loading\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<div fxLayout=\"row\" fxFlex>\r\n <mat-list class=\"timeline\" [style.display]=\"tools?'':'none'\">\r\n <mat-list-item *ngFor=\"let t of types\" (click)=\"change(t.name)\" [class.active]=\"t === type\">{{t.title}}</mat-list-item>\r\n </mat-list>\r\n <table mat-table matSort [dataSource]=\"dataSource\" [style.display]=\"dataSource ? '': 'none'\" fxFlex>\r\n <ng-container *ngFor=\"let column of (type?.columns ||[])\" [matColumnDef]=\"column.name\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{column.label}}</th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element[column.name]}} </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"key\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{''}}</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <span [ngSwitch]=\"element.type\">\r\n <ng-container *ngSwitchCase=\"'group'\">({{'Group'|translate}})</ng-container>\r\n <ng-container *ngSwitchCase=\"'pattern'\">({{'Pattern'|translate}})</ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{element.key}}\r\n </ng-container>\r\n </span>\r\n </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"value\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{''}}</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n {{element.value}}\r\n </td>\r\n </ng-container>\r\n <ng-container *ngFor=\"let role of roles\" [matColumnDef]=\"role.name\">\r\n <th mat-header-cell *matHeaderCellDef>{{role.title}}</th>\r\n <td mat-cell *matCellDef=\"let element\" [attr.data-role]=\"role.name\" class=\"role-column\">\r\n <ng-container *ngIf=\"positions[role.name][element.key]\">\r\n <ng-container *ngFor=\"let u of positions[role.name][element.key]; let first = first\">\r\n <ng-container *ngIf=\"!first\">, </ng-container>\r\n {{profiles[u]?.name}}\r\n </ng-container>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"options\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <button mat-icon-button [matMenuTriggerFor]=\"options\" *ngIf=\"element.type === 'pattern' || element.type === 'group'\"><mat-icon>more_vert</mat-icon></button>\r\n <mat-menu #options>\r\n <ng-container *ngIf=\"element.type === 'pattern'\">\r\n <button mat-menu-item (click)=\"editPattern(element.key)\">{{'Edit'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"deletePattern(element.key)\">{{'Remove'|translate}} </button>\r\n </ng-container>\r\n <ng-container *ngIf=\"element.type === 'group'\">\r\n <button mat-menu-item (click)=\"editGroup(element.key)\">{{'Edit'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"deleteGroup(element.key)\">{{'Remove'|translate}} </button>\r\n </ng-container>\r\n </mat-menu>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\r\n <tr mat-row *matRowDef=\"let element; columns: displayedColumns\" (click)=\"edit(element.key, $event)\"></tr>\r\n </table>\r\n</div>\r\n<!-- role template -->\r\n<ng-template #roleTpl>\r\n <h2 mat-dialog-title>{{'Role' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"role\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"role.value\" color=\"primary\" [disabled]=\"!role.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<!-- pattern template -->\r\n<ng-template #patternTpl>\r\n <h2 mat-dialog-title>{{'Pattern' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"pattern\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <input matInput formControlName=\"expression\" [placeholder]=\"'Regex'| translate\" required autocomplete=\"off\" />\r\n <mat-hint><span [innerHTML]=\"'RegexHint' | translate : 'https://regex101.com/'| sanitizeHtml\"></span></mat-hint>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"pattern.value\" color=\"primary\" [disabled]=\"!pattern.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<!-- group -->\r\n<ng-template #groupTpl>\r\n <h2 mat-dialog-title>{{'Group' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"group\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-select [placeholder]=\"'Items'|translate\" multiple formControlName=\"items\" required>\r\n <mat-select-trigger>\r\n {{group.value.items ? group.value.items[0] : ''}}\r\n <span *ngIf=\"group.value.items?.length > 1\" class=\"additional-selection\">\r\n (+{{group.value.items.length - 1}} {{(group.value.items?.length === 2 ? 'Other' : 'Others')|translate}})\r\n </span>\r\n </mat-select-trigger>\r\n <mat-option *ngFor=\"let v of source\" [value]=\"v.key\">\r\n <span *ngIf=\"!type.columns\">{{v.value}}</span>\r\n <span *ngIf=\"type.columns\"><span *ngFor=\"let c of type.columns\">{{v.value[c.name]}}</span></span>\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"group.value\" color=\"primary\" [disabled]=\"!group.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<ng-template #noRoleTpl>\r\n <mat-dialog-content>\r\n {{'NoRoles'|translate : type?.title}}\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"true\" color=\"primary\">{{'CreateRole' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<!--<form style=\"display:none\">\r\n <input type=\"file\" name=\"file\" (onchange)=\"upload($event)\" #file/>\r\n</form>-->\r\n", styles: [":host{flex-direction:column}table{width:100%}.form{padding:8px}:host ::ng-deep .mat-list-item{cursor:pointer}table ::ng-deep .role-column{cursor:pointer}\n"], components: [{ type: i9.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { type: i10.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i11.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i12.SearchInput, selector: "bizdoc-search-input", outputs: ["valueChange"] }, { type: i13.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i13.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i14.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i15.MatList, selector: "mat-list, mat-action-list", inputs: ["disableRipple", "disabled"], exportAs: ["matList"] }, { type: i15.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["disableRipple", "disabled"], exportAs: ["matListItem"] }, { type: i16.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: i17.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { type: i18.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { type: i16.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i16.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { type: i19.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i20.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i21.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i22.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i13.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i23.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i23.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { type: i24.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i17.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { type: i16.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i16.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i16.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i16.MatCellDef, selector: "[matCellDef]" }, { type: i16.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: i24.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i24.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i24.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i24.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i16.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i16.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { type: i8.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i8.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i25.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i25.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i25.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i26.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i25.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i25.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i25.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i25.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i8.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i8.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { type: i19.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i20.MatSelectTrigger, selector: "mat-select-trigger" }], pipes: { "translate": i27.TranslatePipe, "sanitizeHtml": i28.SanitizeHtmlPipe } });
426
+ PositionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: PositionsComponent, deps: [{ token: i1.SessionService }, { token: UtilityRef }, { token: i2.DatasourceService }, { token: i3.PromptService }, { token: i4.AccountService }, { token: i5.WindowTitleService }, { token: i6.TranslateService }, { token: i7.Popup }, { token: i8.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
427
+ PositionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: PositionsComponent, selector: "ng-component", host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" } }, viewQueries: [{ propertyName: "_fileElement", first: true, predicate: ["file"], descendants: true, static: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "noRoleTpl", first: true, predicate: ["noRoleTpl"], descendants: true, static: true }, { propertyName: "roleTpl", first: true, predicate: ["roleTpl"], descendants: true, static: true }, { propertyName: "patternTpl", first: true, predicate: ["patternTpl"], descendants: true, static: true }, { propertyName: "newGroupTpl", first: true, predicate: ["groupTpl"], descendants: true, static: true }], ngImport: i0, template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"tools = !tools\" [bizdocTooltip]=\"'Collapse' | translate\"><mat-icon>view_sidebar</mat-icon></button>\r\n <button mat-button (click)=\"save()\" color=\"primary\" [disabled]=\"!dirty\">{{'SaveChanges'|translate}}</button>\r\n <span class=\"divider\"></span>\r\n <bizdoc-search-input (valueChange)=\"search($event)\"></bizdoc-search-input>\r\n <button mat-icon-button [matMenuTriggerFor]=\"newMenu\" [bizdocTooltip]=\"'Add'|translate\"><mat-icon>add</mat-icon></button>\r\n <mat-menu #newMenu>\r\n <button mat-menu-item (click)=\"newRole()\">{{'Role'|translate}}</button>\r\n <button mat-menu-item (click)=\"newPattern()\">{{'Pattern'|translate}}</button>\r\n <button mat-menu-item (click)=\"newGroup()\">{{'Group'|translate}} </button>\r\n </mat-menu>\r\n <button mat-icon-button [bizdocTooltip]=\"'Download' | translate\" (click)=\"download()\" [disabled]=\"dirty\"><mat-icon>save_alt</mat-icon></button>\r\n</mat-toolbar>\r\n<mat-progress-bar [mode]=\"loading\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<div fxLayout=\"row\" fxFlex>\r\n <mat-list class=\"timeline\" [style.display]=\"tools?'':'none'\">\r\n <mat-list-item *ngFor=\"let t of types\" (click)=\"change(t.name)\" [class.active]=\"t === type\">{{t.title}}</mat-list-item>\r\n </mat-list>\r\n <table mat-table matSort [dataSource]=\"dataSource\" [style.display]=\"dataSource ? '': 'none'\" fxFlex>\r\n <ng-container *ngFor=\"let column of (type?.columns ||[])\" [matColumnDef]=\"column.name\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{column.label}}</th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element[column.name]}} </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"key\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{''}}</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <span [ngSwitch]=\"element.type\">\r\n <ng-container *ngSwitchCase=\"'group'\">({{'Group'|translate}})</ng-container>\r\n <ng-container *ngSwitchCase=\"'pattern'\">({{'Pattern'|translate}})</ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{element.key}}\r\n </ng-container>\r\n </span>\r\n </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"value\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{''}}</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n {{element.value}}\r\n </td>\r\n </ng-container>\r\n <ng-container *ngFor=\"let role of roles\" [matColumnDef]=\"role.name\">\r\n <th mat-header-cell *matHeaderCellDef>{{role.title}}</th>\r\n <td mat-cell *matCellDef=\"let element\" [attr.data-role]=\"role.name\" class=\"role-column\">\r\n <ng-container *ngIf=\"positions[role.name][element.key]\">\r\n <ng-container *ngFor=\"let u of positions[role.name][element.key]; let first = first\">\r\n <ng-container *ngIf=\"!first\">, </ng-container>\r\n {{profiles[u]?.name}}\r\n </ng-container>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"options\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <button mat-icon-button [matMenuTriggerFor]=\"options\" *ngIf=\"element.type === 'pattern' || element.type === 'group'\"><mat-icon>more_vert</mat-icon></button>\r\n <mat-menu #options>\r\n <ng-container *ngIf=\"element.type === 'pattern'\">\r\n <button mat-menu-item (click)=\"editPattern(element.key)\">{{'Edit'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"deletePattern(element.key)\">{{'Remove'|translate}} </button>\r\n </ng-container>\r\n <ng-container *ngIf=\"element.type === 'group'\">\r\n <button mat-menu-item (click)=\"editGroup(element.key)\">{{'Edit'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"deleteGroup(element.key)\">{{'Remove'|translate}} </button>\r\n </ng-container>\r\n </mat-menu>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\r\n <tr mat-row *matRowDef=\"let element; columns: displayedColumns\" (click)=\"edit(element.key, $event)\"></tr>\r\n </table>\r\n</div>\r\n<!-- role template -->\r\n<ng-template #roleTpl>\r\n <h2 mat-dialog-title>{{'Role' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"role\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"role.value\" color=\"primary\" [disabled]=\"!role.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<!-- pattern template -->\r\n<ng-template #patternTpl>\r\n <h2 mat-dialog-title>{{'Pattern' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"pattern\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <input matInput formControlName=\"expression\" [placeholder]=\"'Regex'| translate\" required autocomplete=\"off\" />\r\n <mat-hint><span [innerHTML]=\"'RegexHint' | translate : 'https://regex101.com/'| sanitizeHtml\"></span></mat-hint>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"pattern.value\" color=\"primary\" [disabled]=\"!pattern.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<!-- group -->\r\n<ng-template #groupTpl>\r\n <h2 mat-dialog-title>{{'Group' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"group\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-select [placeholder]=\"'Items'|translate\" multiple formControlName=\"items\" required>\r\n <mat-select-trigger>\r\n {{group.value.items ? group.value.items[0] : ''}}\r\n <span *ngIf=\"group.value.items?.length > 1\" class=\"additional-selection\">\r\n (+{{group.value.items.length - 1}} {{(group.value.items?.length === 2 ? 'Other' : 'Others')|translate}})\r\n </span>\r\n </mat-select-trigger>\r\n <mat-option *ngFor=\"let v of source\" [value]=\"v.key\">\r\n <span *ngIf=\"!type.columns\">{{v.value}}</span>\r\n <span *ngIf=\"type.columns\"><span *ngFor=\"let c of type.columns\">{{v.value[c.name]}}</span></span>\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"group.value\" color=\"primary\" [disabled]=\"!group.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<ng-template #noRoleTpl>\r\n <mat-dialog-content>\r\n {{'NoRoles'|translate : type?.title}}\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"true\" color=\"primary\">{{'CreateRole' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<!--<form style=\"display:none\">\r\n <input type=\"file\" name=\"file\" (onchange)=\"upload($event)\" #file/>\r\n</form>-->\r\n", styles: [":host{flex-direction:column}table{width:100%}.form{padding:8px}:host ::ng-deep .mat-list-item{cursor:pointer}table ::ng-deep .role-column{cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i9.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i9.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i9.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i10.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i10.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i10.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i10.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i10.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i10.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i11.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i11.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i12.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i12.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i12.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i12.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i12.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i12.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i12.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i12.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i12.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i12.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i13.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i13.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "directive", type: i8.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i8.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i8.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i8.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: i14.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i15.MatList, selector: "mat-list, mat-action-list", inputs: ["disableRipple", "disabled"], exportAs: ["matList"] }, { kind: "component", type: i15.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["disableRipple", "disabled"], exportAs: ["matListItem"] }, { kind: "component", type: i16.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i17.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i18.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i19.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i19.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "component", type: i20.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "directive", type: i20.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i21.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i22.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i23.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i24.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i24.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i24.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i25.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "component", type: i26.SearchInput, selector: "bizdoc-search-input", outputs: ["valueChange"] }, { kind: "pipe", type: i27.SanitizeHtmlPipe, name: "sanitizeHtml" }, { kind: "pipe", type: i28.TranslatePipe, name: "translate" }] });
428
428
  PositionsComponent = __decorate([
429
429
  BizDoc({ selector: 'bizdoc-positions' })
430
430
  /** positions component*/
431
431
  ], PositionsComponent);
432
432
  export { PositionsComponent };
433
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PositionsComponent, decorators: [{
433
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: PositionsComponent, decorators: [{
434
434
  type: Component,
435
435
  args: [{ template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"tools = !tools\" [bizdocTooltip]=\"'Collapse' | translate\"><mat-icon>view_sidebar</mat-icon></button>\r\n <button mat-button (click)=\"save()\" color=\"primary\" [disabled]=\"!dirty\">{{'SaveChanges'|translate}}</button>\r\n <span class=\"divider\"></span>\r\n <bizdoc-search-input (valueChange)=\"search($event)\"></bizdoc-search-input>\r\n <button mat-icon-button [matMenuTriggerFor]=\"newMenu\" [bizdocTooltip]=\"'Add'|translate\"><mat-icon>add</mat-icon></button>\r\n <mat-menu #newMenu>\r\n <button mat-menu-item (click)=\"newRole()\">{{'Role'|translate}}</button>\r\n <button mat-menu-item (click)=\"newPattern()\">{{'Pattern'|translate}}</button>\r\n <button mat-menu-item (click)=\"newGroup()\">{{'Group'|translate}} </button>\r\n </mat-menu>\r\n <button mat-icon-button [bizdocTooltip]=\"'Download' | translate\" (click)=\"download()\" [disabled]=\"dirty\"><mat-icon>save_alt</mat-icon></button>\r\n</mat-toolbar>\r\n<mat-progress-bar [mode]=\"loading\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<div fxLayout=\"row\" fxFlex>\r\n <mat-list class=\"timeline\" [style.display]=\"tools?'':'none'\">\r\n <mat-list-item *ngFor=\"let t of types\" (click)=\"change(t.name)\" [class.active]=\"t === type\">{{t.title}}</mat-list-item>\r\n </mat-list>\r\n <table mat-table matSort [dataSource]=\"dataSource\" [style.display]=\"dataSource ? '': 'none'\" fxFlex>\r\n <ng-container *ngFor=\"let column of (type?.columns ||[])\" [matColumnDef]=\"column.name\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{column.label}}</th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element[column.name]}} </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"key\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{''}}</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <span [ngSwitch]=\"element.type\">\r\n <ng-container *ngSwitchCase=\"'group'\">({{'Group'|translate}})</ng-container>\r\n <ng-container *ngSwitchCase=\"'pattern'\">({{'Pattern'|translate}})</ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{element.key}}\r\n </ng-container>\r\n </span>\r\n </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"value\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{''}}</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n {{element.value}}\r\n </td>\r\n </ng-container>\r\n <ng-container *ngFor=\"let role of roles\" [matColumnDef]=\"role.name\">\r\n <th mat-header-cell *matHeaderCellDef>{{role.title}}</th>\r\n <td mat-cell *matCellDef=\"let element\" [attr.data-role]=\"role.name\" class=\"role-column\">\r\n <ng-container *ngIf=\"positions[role.name][element.key]\">\r\n <ng-container *ngFor=\"let u of positions[role.name][element.key]; let first = first\">\r\n <ng-container *ngIf=\"!first\">, </ng-container>\r\n {{profiles[u]?.name}}\r\n </ng-container>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"options\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <button mat-icon-button [matMenuTriggerFor]=\"options\" *ngIf=\"element.type === 'pattern' || element.type === 'group'\"><mat-icon>more_vert</mat-icon></button>\r\n <mat-menu #options>\r\n <ng-container *ngIf=\"element.type === 'pattern'\">\r\n <button mat-menu-item (click)=\"editPattern(element.key)\">{{'Edit'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"deletePattern(element.key)\">{{'Remove'|translate}} </button>\r\n </ng-container>\r\n <ng-container *ngIf=\"element.type === 'group'\">\r\n <button mat-menu-item (click)=\"editGroup(element.key)\">{{'Edit'|translate}}</button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"deleteGroup(element.key)\">{{'Remove'|translate}} </button>\r\n </ng-container>\r\n </mat-menu>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\r\n <tr mat-row *matRowDef=\"let element; columns: displayedColumns\" (click)=\"edit(element.key, $event)\"></tr>\r\n </table>\r\n</div>\r\n<!-- role template -->\r\n<ng-template #roleTpl>\r\n <h2 mat-dialog-title>{{'Role' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"role\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"role.value\" color=\"primary\" [disabled]=\"!role.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<!-- pattern template -->\r\n<ng-template #patternTpl>\r\n <h2 mat-dialog-title>{{'Pattern' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"pattern\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <input matInput formControlName=\"expression\" [placeholder]=\"'Regex'| translate\" required autocomplete=\"off\" />\r\n <mat-hint><span [innerHTML]=\"'RegexHint' | translate : 'https://regex101.com/'| sanitizeHtml\"></span></mat-hint>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"pattern.value\" color=\"primary\" [disabled]=\"!pattern.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<!-- group -->\r\n<ng-template #groupTpl>\r\n <h2 mat-dialog-title>{{'Group' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form [formGroup]=\"group\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"title\" [placeholder]=\"'Title'| translate\" required autocomplete=\"off\" />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-select [placeholder]=\"'Items'|translate\" multiple formControlName=\"items\" required>\r\n <mat-select-trigger>\r\n {{group.value.items ? group.value.items[0] : ''}}\r\n <span *ngIf=\"group.value.items?.length > 1\" class=\"additional-selection\">\r\n (+{{group.value.items.length - 1}} {{(group.value.items?.length === 2 ? 'Other' : 'Others')|translate}})\r\n </span>\r\n </mat-select-trigger>\r\n <mat-option *ngFor=\"let v of source\" [value]=\"v.key\">\r\n <span *ngIf=\"!type.columns\">{{v.value}}</span>\r\n <span *ngIf=\"type.columns\"><span *ngFor=\"let c of type.columns\">{{v.value[c.name]}}</span></span>\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"group.value\" color=\"primary\" [disabled]=\"!group.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<ng-template #noRoleTpl>\r\n <mat-dialog-content>\r\n {{'NoRoles'|translate : type?.title}}\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"true\" color=\"primary\">{{'CreateRole' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<!--<form style=\"display:none\">\r\n <input type=\"file\" name=\"file\" (onchange)=\"upload($event)\" #file/>\r\n</form>-->\r\n", styles: [":host{flex-direction:column}table{width:100%}.form{padding:8px}:host ::ng-deep .mat-list-item{cursor:pointer}table ::ng-deep .role-column{cursor:pointer}\n"] }]
436
436
  }], ctorParameters: function () { return [{ type: i1.SessionService }, { type: i29.UtilityRef, decorators: [{
@@ -11,19 +11,19 @@ import * as i0 from "@angular/core";
11
11
  import * as i1 from "../../core/account.service";
12
12
  import * as i2 from "@angular/material/dialog";
13
13
  import * as i3 from "@angular/forms";
14
- import * as i4 from "@angular/material/slide-toggle";
15
- import * as i5 from "@angular/material/form-field";
16
- import * as i6 from "@angular/material/autocomplete";
17
- import * as i7 from "@angular/material/core";
18
- import * as i8 from "@angular/material/datepicker";
19
- import * as i9 from "@angular/material/chips";
20
- import * as i10 from "@angular/material/icon";
21
- import * as i11 from "@angular/material/button";
22
- import * as i12 from "@angular/flex-layout/flex";
14
+ import * as i4 from "@angular/common";
15
+ import * as i5 from "@angular/flex-layout/flex";
16
+ import * as i6 from "@angular/material/chips";
17
+ import * as i7 from "@angular/material/datepicker";
18
+ import * as i8 from "@angular/material/autocomplete";
19
+ import * as i9 from "@angular/material/core";
20
+ import * as i10 from "@angular/material/form-field";
21
+ import * as i11 from "@angular/material/slide-toggle";
22
+ import * as i12 from "@angular/material/button";
23
23
  import * as i13 from "@angular/material/input";
24
- import * as i14 from "@angular/common";
25
- import * as i15 from "../../core/pipes/translate.pipe";
26
- import * as i16 from "../../core/pipes/user-name.pipe";
24
+ import * as i14 from "@angular/material/icon";
25
+ import * as i15 from "../../core/pipes/user-name.pipe";
26
+ import * as i16 from "../../core/pipes/translate.pipe";
27
27
  export class ProfileSettingsDialog {
28
28
  constructor(_accounts, _dialogRef, _fb, model) {
29
29
  this._accounts = _accounts;
@@ -31,7 +31,7 @@ export class ProfileSettingsDialog {
31
31
  this._fb = _fb;
32
32
  this.model = model;
33
33
  this.separatorKeysCodes = [ENTER, COMMA, SEMICOLON];
34
- this.substitute = this._fb.control([]);
34
+ this.substitute = this._fb.control(null);
35
35
  this.grants = this._fb.control([]);
36
36
  this.outOfOffice = this._fb.group({
37
37
  active: this._fb.control(false),
@@ -41,7 +41,7 @@ export class ProfileSettingsDialog {
41
41
  });
42
42
  this.grantAccess = this._fb.group({
43
43
  active: this._fb.control(false),
44
- users: this._fb.control(null)
44
+ users: this._fb.control([])
45
45
  });
46
46
  this.form = this._fb.group({
47
47
  outOfOffice: this.outOfOffice,
@@ -115,7 +115,7 @@ export class ProfileSettingsDialog {
115
115
  * @param id
116
116
  */
117
117
  removeGrant(id) {
118
- const users = this.form.value.grantAccess.users;
118
+ const users = this.form.value.grantAccess?.users;
119
119
  const index = users.indexOf(id);
120
120
  if (index >= 0)
121
121
  users.splice(index, 1);
@@ -127,7 +127,7 @@ export class ProfileSettingsDialog {
127
127
  * @param event
128
128
  */
129
129
  addGrant(inp, event) {
130
- const users = this.form.value.grantAccess.users;
130
+ const users = this.form.value.grantAccess?.users;
131
131
  const id = event.option.value;
132
132
  if (!users)
133
133
  this.grantAccess.controls['users'].setValue([id]);
@@ -137,11 +137,11 @@ export class ProfileSettingsDialog {
137
137
  this.form.patchValue({});
138
138
  }
139
139
  }
140
- ProfileSettingsDialog.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ProfileSettingsDialog, deps: [{ token: i1.AccountService }, { token: i2.MatDialogRef }, { token: i3.FormBuilder }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
141
- ProfileSettingsDialog.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: ProfileSettingsDialog, selector: "ng-component", viewQueries: [{ propertyName: "substitueInput", first: true, predicate: ["substitueInput"], descendants: true, read: MatInput }, { propertyName: "grantInput", first: true, predicate: ["grantInput"], descendants: true, read: MatChipInput }], ngImport: i0, template: "<h2 mat-dialog-title>{{'Settings' | translate }}</h2>\r\n<mat-dialog-content>\r\n <form autocomplete=\"off\" [formGroup]=\"form\">\r\n <div fxLayout=\"column\" formGroupName=\"outOfOffice\">\r\n <h3 class=\"mat-body-strong\">{{'OutOfOffice'|translate}}</h3>\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <br />\r\n <mat-form-field fxFlex>\r\n <input matInput [formControl]=\"substitute\" type=\"search\" [matAutocomplete]=\"sauto\" #substitueInput\r\n [placeholder]=\"'Associate' | translate\" [required]=\"outOfOffice.value.active\" />\r\n <mat-autocomplete #sauto=\"matAutocomplete\" [displayWith]=\"userDisplay\"\r\n (optionSelected)=\"setId($event)\">\r\n <mat-option *ngFor=\"let u of ousers$ | async\" [value]=\"u\">\r\n <span>{{u.name}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n <div>\r\n <mat-form-field>\r\n <input matInput [matDatepicker]=\"from\" formControlName=\"from\" placeholder=\"{{'From'| translate}}\" />\r\n <mat-datepicker-toggle [for]=\"from\" matSuffix></mat-datepicker-toggle>\r\n <mat-datepicker #from></mat-datepicker>\r\n </mat-form-field>\r\n &nbsp;\r\n <mat-form-field>\r\n <input matInput [matDatepicker]=\"to\" formControlName=\"to\" [min]=\"form.value?.from\" placeholder=\"{{'To'| translate}}\" />\r\n <mat-datepicker-toggle [for]=\"to\" matSuffix></mat-datepicker-toggle>\r\n <mat-datepicker #to></mat-datepicker>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <!--<hr />-->\r\n <div fxLayout=\"column\" formGroupName=\"grantAccess\">\r\n <h3 class=\"mat-body-strong\">{{'GrantAccess'|translate}}</h3>\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <mat-form-field>\r\n <mat-chip-list #grantList [attr.aria-label]=\"\" [disabled]=\"!grantAccess.value.active\">\r\n <mat-chip *ngFor=\"let u of grantAccess.value.users || []\"\r\n [removable]=\"grantAccess.value.active\"\r\n (removed)=\"removeGrant(u)\">\r\n {{u | userName | async}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n <input [formControl]=\"grants\" placeholder=\"{{'Users'| translate}}\"\r\n [required]=\"grantAccess.value.active\"\r\n [matAutocomplete]=\"grantAuto\"\r\n #grantInput\r\n [matChipInputFor]=\"grantList\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\">\r\n </mat-chip-list>\r\n <mat-autocomplete #grantAuto=\"matAutocomplete\" (optionSelected)=\"addGrant(grantInput, $event)\">\r\n <mat-option *ngFor=\"let u of gusers$ | async\" [value]=\"u.id\">\r\n {{u.name}}\r\n <span *ngIf=\"u.email\">&nbsp; - {{u.email}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n </div> \r\n </form>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"form.value\" color=\"primary\" [disabled]=\"!form.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n</mat-dialog-actions>\r\n", components: [{ type: i4.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex", "name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "checked"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { type: i5.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i6.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i7.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i8.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { type: i8.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { type: i9.MatChipList, selector: "mat-chip-list", inputs: ["errorStateMatcher", "multiple", "compareWith", "value", "required", "placeholder", "disabled", "aria-orientation", "selectable", "tabIndex"], outputs: ["change", "valueChange"], exportAs: ["matChipList"] }, { type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i11.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i12.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i3.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i12.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { type: i13.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i6.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i14.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i8.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { type: i5.MatSuffix, selector: "[matSuffix]" }, { type: i9.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disableRipple", "tabIndex", "selected", "value", "selectable", "disabled", "removable"], outputs: ["selectionChange", "destroyed", "removed"], exportAs: ["matChip"] }, { type: i9.MatChipRemove, selector: "[matChipRemove]" }, { type: i9.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { type: i14.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i2.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }], pipes: { "translate": i15.TranslatePipe, "async": i14.AsyncPipe, "userName": i16.UserNamePipe } });
142
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ProfileSettingsDialog, decorators: [{
140
+ ProfileSettingsDialog.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ProfileSettingsDialog, deps: [{ token: i1.AccountService }, { token: i2.MatDialogRef }, { token: i3.FormBuilder }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
141
+ ProfileSettingsDialog.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: ProfileSettingsDialog, selector: "ng-component", viewQueries: [{ propertyName: "substitueInput", first: true, predicate: ["substitueInput"], descendants: true, read: MatInput }, { propertyName: "grantInput", first: true, predicate: ["grantInput"], descendants: true, read: MatChipInput }], ngImport: i0, template: "<h2 mat-dialog-title>{{'Settings' | translate }}</h2>\r\n<mat-dialog-content>\r\n <form autocomplete=\"off\" [formGroup]=\"form\">\r\n <div fxLayout=\"column\" formGroupName=\"outOfOffice\">\r\n <h3 class=\"mat-body-strong\">{{'OutOfOffice'|translate}}</h3>\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <br />\r\n <mat-form-field fxFlex>\r\n <input matInput [formControl]=\"substitute\" type=\"search\" [matAutocomplete]=\"sauto\" #substitueInput\r\n [placeholder]=\"'Associate' | translate\" [required]=\"outOfOffice.value.active\" />\r\n <mat-autocomplete #sauto=\"matAutocomplete\" [displayWith]=\"userDisplay\"\r\n (optionSelected)=\"setId($event)\">\r\n <mat-option *ngFor=\"let u of ousers$ | async\" [value]=\"u\">\r\n <span>{{u.name}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n <div>\r\n <mat-form-field>\r\n <input matInput [matDatepicker]=\"from\" formControlName=\"from\" placeholder=\"{{'From'| translate}}\" />\r\n <mat-datepicker-toggle [for]=\"from\" matSuffix></mat-datepicker-toggle>\r\n <mat-datepicker #from></mat-datepicker>\r\n </mat-form-field>\r\n &nbsp;\r\n <mat-form-field>\r\n <input matInput [matDatepicker]=\"to\" formControlName=\"to\" [min]=\"form.controls['from'].value\" placeholder=\"{{'To'| translate}}\" />\r\n <mat-datepicker-toggle [for]=\"to\" matSuffix></mat-datepicker-toggle>\r\n <mat-datepicker #to></mat-datepicker>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <!--<hr />-->\r\n <div fxLayout=\"column\" formGroupName=\"grantAccess\">\r\n <h3 class=\"mat-body-strong\">{{'GrantAccess'|translate}}</h3>\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <mat-form-field>\r\n <mat-chip-list #grantList [attr.aria-label]=\"\" [disabled]=\"!grantAccess.value.active\">\r\n <mat-chip *ngFor=\"let u of grantAccess.value.users || []\"\r\n [removable]=\"grantAccess.value.active\"\r\n (removed)=\"removeGrant(u)\">\r\n {{u | userName | async}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n <input [formControl]=\"grants\" placeholder=\"{{'Users'| translate}}\"\r\n [required]=\"grantAccess.value.active\"\r\n [matAutocomplete]=\"grantAuto\"\r\n #grantInput\r\n [matChipInputFor]=\"grantList\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\">\r\n </mat-chip-list>\r\n <mat-autocomplete #grantAuto=\"matAutocomplete\" (optionSelected)=\"addGrant(grantInput, $event)\">\r\n <mat-option *ngFor=\"let u of gusers$ | async\" [value]=\"u.id\">\r\n {{u.name}}\r\n <span *ngIf=\"u.email\">&nbsp; - {{u.email}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n </div> \r\n </form>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"form.value\" color=\"primary\" [disabled]=\"!form.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n</mat-dialog-actions>\r\n", dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i5.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i5.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i6.MatChipList, selector: "mat-chip-list", inputs: ["role", "aria-describedby", "errorStateMatcher", "multiple", "compareWith", "value", "required", "placeholder", "disabled", "aria-orientation", "selectable", "tabIndex"], outputs: ["change", "valueChange"], exportAs: ["matChipList"] }, { kind: "directive", type: i6.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disableRipple", "tabIndex", "role", "selected", "value", "selectable", "disabled", "removable"], outputs: ["selectionChange", "destroyed", "removed"], exportAs: ["matChip"] }, { kind: "directive", type: i6.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i6.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i7.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i7.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i7.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "directive", type: i2.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: i8.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i8.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i9.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i10.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i10.MatSuffix, selector: "[matSuffix]" }, { kind: "component", type: i11.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "component", type: i12.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i13.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i14.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i15.UserNamePipe, name: "userName" }, { kind: "pipe", type: i16.TranslatePipe, name: "translate" }] });
142
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ProfileSettingsDialog, decorators: [{
143
143
  type: Component,
144
- args: [{ template: "<h2 mat-dialog-title>{{'Settings' | translate }}</h2>\r\n<mat-dialog-content>\r\n <form autocomplete=\"off\" [formGroup]=\"form\">\r\n <div fxLayout=\"column\" formGroupName=\"outOfOffice\">\r\n <h3 class=\"mat-body-strong\">{{'OutOfOffice'|translate}}</h3>\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <br />\r\n <mat-form-field fxFlex>\r\n <input matInput [formControl]=\"substitute\" type=\"search\" [matAutocomplete]=\"sauto\" #substitueInput\r\n [placeholder]=\"'Associate' | translate\" [required]=\"outOfOffice.value.active\" />\r\n <mat-autocomplete #sauto=\"matAutocomplete\" [displayWith]=\"userDisplay\"\r\n (optionSelected)=\"setId($event)\">\r\n <mat-option *ngFor=\"let u of ousers$ | async\" [value]=\"u\">\r\n <span>{{u.name}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n <div>\r\n <mat-form-field>\r\n <input matInput [matDatepicker]=\"from\" formControlName=\"from\" placeholder=\"{{'From'| translate}}\" />\r\n <mat-datepicker-toggle [for]=\"from\" matSuffix></mat-datepicker-toggle>\r\n <mat-datepicker #from></mat-datepicker>\r\n </mat-form-field>\r\n &nbsp;\r\n <mat-form-field>\r\n <input matInput [matDatepicker]=\"to\" formControlName=\"to\" [min]=\"form.value?.from\" placeholder=\"{{'To'| translate}}\" />\r\n <mat-datepicker-toggle [for]=\"to\" matSuffix></mat-datepicker-toggle>\r\n <mat-datepicker #to></mat-datepicker>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <!--<hr />-->\r\n <div fxLayout=\"column\" formGroupName=\"grantAccess\">\r\n <h3 class=\"mat-body-strong\">{{'GrantAccess'|translate}}</h3>\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <mat-form-field>\r\n <mat-chip-list #grantList [attr.aria-label]=\"\" [disabled]=\"!grantAccess.value.active\">\r\n <mat-chip *ngFor=\"let u of grantAccess.value.users || []\"\r\n [removable]=\"grantAccess.value.active\"\r\n (removed)=\"removeGrant(u)\">\r\n {{u | userName | async}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n <input [formControl]=\"grants\" placeholder=\"{{'Users'| translate}}\"\r\n [required]=\"grantAccess.value.active\"\r\n [matAutocomplete]=\"grantAuto\"\r\n #grantInput\r\n [matChipInputFor]=\"grantList\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\">\r\n </mat-chip-list>\r\n <mat-autocomplete #grantAuto=\"matAutocomplete\" (optionSelected)=\"addGrant(grantInput, $event)\">\r\n <mat-option *ngFor=\"let u of gusers$ | async\" [value]=\"u.id\">\r\n {{u.name}}\r\n <span *ngIf=\"u.email\">&nbsp; - {{u.email}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n </div> \r\n </form>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"form.value\" color=\"primary\" [disabled]=\"!form.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n</mat-dialog-actions>\r\n" }]
144
+ args: [{ template: "<h2 mat-dialog-title>{{'Settings' | translate }}</h2>\r\n<mat-dialog-content>\r\n <form autocomplete=\"off\" [formGroup]=\"form\">\r\n <div fxLayout=\"column\" formGroupName=\"outOfOffice\">\r\n <h3 class=\"mat-body-strong\">{{'OutOfOffice'|translate}}</h3>\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <br />\r\n <mat-form-field fxFlex>\r\n <input matInput [formControl]=\"substitute\" type=\"search\" [matAutocomplete]=\"sauto\" #substitueInput\r\n [placeholder]=\"'Associate' | translate\" [required]=\"outOfOffice.value.active\" />\r\n <mat-autocomplete #sauto=\"matAutocomplete\" [displayWith]=\"userDisplay\"\r\n (optionSelected)=\"setId($event)\">\r\n <mat-option *ngFor=\"let u of ousers$ | async\" [value]=\"u\">\r\n <span>{{u.name}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n <div>\r\n <mat-form-field>\r\n <input matInput [matDatepicker]=\"from\" formControlName=\"from\" placeholder=\"{{'From'| translate}}\" />\r\n <mat-datepicker-toggle [for]=\"from\" matSuffix></mat-datepicker-toggle>\r\n <mat-datepicker #from></mat-datepicker>\r\n </mat-form-field>\r\n &nbsp;\r\n <mat-form-field>\r\n <input matInput [matDatepicker]=\"to\" formControlName=\"to\" [min]=\"form.controls['from'].value\" placeholder=\"{{'To'| translate}}\" />\r\n <mat-datepicker-toggle [for]=\"to\" matSuffix></mat-datepicker-toggle>\r\n <mat-datepicker #to></mat-datepicker>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <!--<hr />-->\r\n <div fxLayout=\"column\" formGroupName=\"grantAccess\">\r\n <h3 class=\"mat-body-strong\">{{'GrantAccess'|translate}}</h3>\r\n <mat-slide-toggle formControlName=\"active\">{{'Active' | translate}}</mat-slide-toggle>\r\n <mat-form-field>\r\n <mat-chip-list #grantList [attr.aria-label]=\"\" [disabled]=\"!grantAccess.value.active\">\r\n <mat-chip *ngFor=\"let u of grantAccess.value.users || []\"\r\n [removable]=\"grantAccess.value.active\"\r\n (removed)=\"removeGrant(u)\">\r\n {{u | userName | async}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n <input [formControl]=\"grants\" placeholder=\"{{'Users'| translate}}\"\r\n [required]=\"grantAccess.value.active\"\r\n [matAutocomplete]=\"grantAuto\"\r\n #grantInput\r\n [matChipInputFor]=\"grantList\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\">\r\n </mat-chip-list>\r\n <mat-autocomplete #grantAuto=\"matAutocomplete\" (optionSelected)=\"addGrant(grantInput, $event)\">\r\n <mat-option *ngFor=\"let u of gusers$ | async\" [value]=\"u.id\">\r\n {{u.name}}\r\n <span *ngIf=\"u.email\">&nbsp; - {{u.email}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n </div> \r\n </form>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"form.value\" color=\"primary\" [disabled]=\"!form.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n</mat-dialog-actions>\r\n" }]
145
145
  }], ctorParameters: function () { return [{ type: i1.AccountService }, { type: i2.MatDialogRef }, { type: i3.FormBuilder }, { type: undefined, decorators: [{
146
146
  type: Inject,
147
147
  args: [MAT_DIALOG_DATA]
@@ -152,4 +152,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImpor
152
152
  type: ViewChild,
153
153
  args: ['grantInput', { read: MatChipInput }]
154
154
  }] } });
155
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0b2ZvZmZpY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9wcm9maWxlci9vdXRvZm9mZmljZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL3Byb2ZpbGVyL291dG9mb2ZmaWNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUEwQixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFnQixlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUFjLFNBQVMsRUFBa0IsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFckYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVaEQsTUFBTSxPQUFPLHFCQUFxQjtJQXVCaEMsWUFBb0IsU0FBeUIsRUFDbkMsVUFBK0MsRUFDL0MsR0FBZ0IsRUFFakIsS0FBc0I7UUFKWCxjQUFTLEdBQVQsU0FBUyxDQUFnQjtRQUNuQyxlQUFVLEdBQVYsVUFBVSxDQUFxQztRQUMvQyxRQUFHLEdBQUgsR0FBRyxDQUFhO1FBRWpCLFVBQUssR0FBTCxL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SyxDQUFDLE1BQU0sQ0FBQyxLQUFlLENBQUM7UUFDeEMsSUFBSSxDQUFDLEtBQUs7WUFDUixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDOztZQUVsRCxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLEdBQUcsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0IsQ0FBQzs7a0hBNUhVLHFCQUFxQix1R0EwQnRCLGVBQWU7c0dBMUJkLHFCQUFxQixpSkFJSyxRQUFRLG1HQUNaLFlBQVksNkJDekIvQyxpNEdBZ0VBOzJGRDVDYSxxQkFBcUI7a0JBRGpDLFNBQVM7OzswQkEyQkwsTUFBTTsyQkFBQyxlQUFlOzRDQXRCd0IsY0FBYztzQkFBOUQsU0FBUzt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7Z0JBQ0UsVUFBVTtzQkFBMUQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRU5URVIsIENPTU1BLCBTRU1JQ09MT04gfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2tleWNvZGVzXCI7XHJcbmltcG9ydCB7IFZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlXCI7XHJcbmltcG9ydCB7IE1hdENoaXBJbnB1dCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jaGlwc1wiO1xyXG5pbXBvcnQgeyBNYXREaWFsb2dSZWYsIE1BVF9ESUFMT0dfREFUQSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2dcIjtcclxuaW1wb3J0IHsgTWF0SW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXRcIjtcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGFrZVVudGlsLCBzdGFydFdpdGgsIHRhcCwgZmlsdGVyLCBzd2l0Y2hNYXAsIG1hcCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IEFjY291bnRTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2NvcmUvYWNjb3VudC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IGlzU3RyaW5nIH0gZnJvbSBcIi4uLy4uL2NvcmUvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCB7IE91dE9mT2ZmaWNlU2V0dGluZ3MsIEdyYW50U2V0dGluZ3MsIFVzZXJJbmZvLCB9IGZyb20gXCIuLi8uLi9jb3JlL21vZGVsc1wiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBPdXRPZk9mZmljZURhdGEge1xyXG4gIHVzZXJJZDogc3RyaW5nO1xyXG4gIG91dE9mT2ZmaWNlOiBPdXRPZk9mZmljZVNldHRpbmdzO1xyXG4gIGdyYW50QWNjZXNzOiBHcmFudFNldHRpbmdzO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHsgdGVtcGxhdGVVcmw6ICdvdXRvZm9mZmljZS5jb21wb25lbnQuaHRtbCcgfSlcclxuZXhwb3J0IGNsYXNzIFByb2ZpbGVTZXR0aW5nc0RpYWxvZyBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcmVhZG9ubHkgc2VwYXJhdG9yS2V5c0NvZGVzOiBudW1iZXJbXSA9IFtFTlRFUiwgQ09NTUEsIFNFTUlDT0xPTl07XHJcbiAgcmVhZG9ubHkgc3Vic3RpdHV0ZSA9IHRoaXMuX2ZiLmNvbnRyb2woW10pO1xyXG4gIHJlYWRvbmx5IGdyYW50cyA9IHRoaXMuX2ZiLmNvbnRyb2woW10pO1xyXG4gIEBWaWV3Q2hpbGQoJ3N1YnN0aXR1ZUlucHV0JywgeyByZWFkOiBNYXRJbnB1dCB9KSBzdWJzdGl0dWVJbnB1dDogTWF0SW5wdXQ7XHJcbiAgQFZpZXdDaGlsZCgnZ3JhbnRJbnB1dCcsIHsgcmVhZDogTWF0Q2hpcElucHV0IH0pIGdyYW50SW5wdXQ6IE1hdENoaXBJbnB1dDtcclxuICByZWFkb25seSBvdXRPZk9mZmljZSA9IHRoaXMuX2ZiLmdyb3VwKHtcclxuICAgIGFjdGl2ZTogdGhpcy5fZmIuY29udHJvbChmYWxzZSksXHJcbiAgICBzdWJzdGl0dWVJZDogdGhpcy5fZmIuY29udHJvbChudWxsKSxcclxuICAgIGZyb206IHRoaXMuX2ZiLmNvbnRyb2wobnVsbCksXHJcbiAgICB0bzogdGhpcy5fZmIuY29udHJvbChudWxsKVxyXG4gIH0pO1xyXG4gIHJlYWRvbmx5IGdyYW50QWNjZXNzID0gdGhpcy5fZmIuZ3JvdXAoe1xyXG4gICAgYWN0aXZlOiB0aGlzLl9mYi5jb250cm9sKGZhbHNlKSxcclxuICAgIHVzZXJzOiB0aGlzLl9mYi5jb250cm9sKG51bGwpXHJcbiAgfSk7XHJcbiAgcmVhZG9ubHkgZm9ybSA9IHRoaXMuX2ZiLmdyb3VwKHtcclxuICAgIG91dE9mT2ZmaWNlOiB0aGlzLm91dE9mT2ZmaWNlLFxyXG4gICAgZ3JhbnRBY2Nlc3M6IHRoaXMuZ3JhbnRBY2Nlc3NcclxuICB9KTtcclxuICBvdXNlcnMkOiBPYnNlcnZhYmxlPFVzZXJJbmZvW10+O1xyXG4gIGd1c2VycyQ6IE9ic2VydmFibGU8VXNlckluZm9bXT47XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2FjY291bnRzOiBBY2NvdW50U2VydmljZSxcclxuICAgIHByaXZhdGUgX2RpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFByb2ZpbGVTZXR0aW5nc0RpYWxvZz4sXHJcbiAgICBwcml2YXRlIF9mYjogRm9ybUJ1aWxkZXIsXHJcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSlcclxuICAgIHB1YmxpYyBtb2RlbDogT3V0T2ZPZmZpY2VEYXRhKSB7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUodGhpcy5tb2RlbCk7XHJcbiAgICBjb25zdCB7IGFjdGl2ZSwgdG8sIGZyb20gfSA9IHRoaXMub3V0T2ZPZmZpY2UuY29udHJvbHM7XHJcbiAgICBpZiAoIXRoaXMubW9kZWwub3V0T2ZPZmZpY2UgfHwgIXRoaXMubW9kZWwub3V0T2ZPZmZpY2UuYWN0aXZlKSB7XHJcbiAgICAgIHRvLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICBmcm9tLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICB0aGlzLnN1YnN0aXR1dGUuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc3Vic3RpdHV0ZS5hZGRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICBpZiAoIXRoaXMubW9kZWwub3V0T2ZPZmZpY2UuZnJvbSlcclxuICAgICAgICB0by5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgIH1cclxuICAgIHRoaXMubW9kZWwub3V0T2ZPZmZpY2Uuc3Vic3RpdHVlSWQgJiZcclxuICAgICAgdGhpcy5fYWNjb3VudHMuZ2V0KHRoaXMubW9kZWwub3V0T2ZPZmZpY2Uuc3Vic3RpdHVlSWQpLnN1YnNjcmliZSh1ID0+XHJcbiAgICAgICAgdGhpcy5zdWJzdGl0dXRlLnNldFZhbHVlKHUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KSk7XHJcbiAgICBhY3RpdmUudmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX2RpYWxvZ1JlZi5hZnRlckNsb3NlZCgpKSkuXHJcbiAgICAgIHN1YnNjcmliZShhY3RpdmUgPT4ge1xyXG4gICAgICAgIGlmIChhY3RpdmUpIHtcclxuICAgICAgICAgIGZyb20uZW5hYmxlKCk7XHJcbiAgICAgICAgICBmcm9tLnZhbHVlICYmIHRvLmVuYWJsZSgpO1xyXG4gICAgICAgICAgdGhpcy5zdWJzdGl0dXRlLmVuYWJsZSgpO1xyXG4gICAgICAgICAgdGhpcy5zdWJzdGl0dXRlLmFkZFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgICAgICB0aGlzLnN1YnN0aXR1ZUlucHV0LmZvY3VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgZnJvbS5kaXNhYmxlKCk7XHJcbiAgICAgICAgICB0by5kaXNhYmxlKCk7XHJcbiAgICAgICAgICB0aGlzLnN1YnN0aXR1dGUuY2xlYXJWYWxpZGF0b3JzKCk7XHJcbiAgICAgICAgICB0aGlzLnN1YnN0aXR1dGUuZGlzYWJsZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB0aGlzLm91c2VycyQgPSB0aGlzLnN1YnN0aXR1dGUudmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX2RpYWxvZ1JlZi5hZnRlckNsb3NlZCgpKSxcclxuICAgICAgZmlsdGVyKHYgPT4gaXNTdHJpbmcodikpLFxyXG4gICAgICBzd2l0Y2hNYXAodiA9PiB0aGlzLl9hY2NvdW50cy5maW5kQWxsKHYpKSxcclxuICAgICAgbWFwKHIgPT4gci5maWx0ZXIodSA9PiB1LmlkICE9PSB0aGlzLm1vZGVsLnVzZXJJZCkpKTtcclxuICAgIGZyb20udmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX2RpYWxvZ1JlZi5hZnRlckNsb3NlZCgpKSkuXHJcbiAgICAgIHN1YnNjcmliZSh2ID0+IHtcclxuICAgICAgICBpZiAodilcclxuICAgICAgICAgIHRvLmVuYWJsZSgpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIHRvLmRpc2FibGUoKTtcclxuICAgICAgfSk7XHJcbiAgICBpZiAoIXRoaXMubW9kZWwuZ3JhbnRBY2Nlc3MgfHwgIXRoaXMubW9kZWwuZ3JhbnRBY2Nlc3MuYWN0aXZlKSB7XHJcbiAgICAgIHRoaXMuZ3JhbnRzLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5ncmFudEFjY2Vzcy5jb250cm9sc1snYWN0aXZlJ10udmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX2RpYWxvZ1JlZi5hZnRlckNsb3NlZCgpKSkuXHJcbiAgICAgIHN1YnNjcmliZSh2ID0+IHtcclxuICAgICAgICBpZiAodikge1xyXG4gICAgICAgICAgdGhpcy5ncmFudHMuZW5hYmxlKCk7XHJcbiAgICAgICAgICB0aGlzLmdyYW50cy5hZGRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgdGhpcy5ncmFudElucHV0LmZvY3VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5ncmFudHMuY2xlYXJWYWxpZGF0b3JzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIHRoaXMuZ3VzZXJzJCA9IHRoaXMuZ3JhbnRzLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLl9kaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKSksXHJcbiAgICAgIGZpbHRlcih2ID0+IGlzU3RyaW5nKHYpKSxcclxuICAgICAgc3dpdGNoTWFwKHYgPT4gdGhpcy5fYWNjb3VudHMuZmluZEFsbCh2KSksXHJcbiAgICAgIG1hcChyID0+IHIuZmlsdGVyKHUgPT4gdS5pZCAhPT0gdGhpcy5tb2RlbC51c2VySWQpKSk7XHJcbiAgfVxyXG4gIHVzZXJEaXNwbGF5ID0gKGl0ZW06IFVzZXJJbmZvKSA9PiB7XHJcbiAgICByZXR1cm4gaXRlbSA/IGl0ZW0ubmFtZSA6IG51bGw7XHJcbiAgfVxyXG4gIHNldElkKGV2ZW50OiBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50KSB7XHJcbiAgICBjb25zdCB7IGlkIH0gPSBldmVudC5vcHRpb24udmFsdWUgYXMgVXNlckluZm87XHJcbiAgICB0aGlzLm91dE9mT2ZmaWNlLmNvbnRyb2xzWydzdWJzdGl0dWVJZCddLnNldFZhbHVlKGlkKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGlkXHJcbiAgICovXHJcbiAgcmVtb3ZlR3JhbnQoaWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgdXNlcnMgPSB0aGlzLmZvcm0udmFsdWUuZ3JhbnRBY2Nlc3MudXNlcnMgYXMgc3RyaW5nW107XHJcbiAgICBjb25zdCBpbmRleCA9IHVzZXJzLmluZGV4T2YoaWQpO1xyXG5cclxuICAgIGlmIChpbmRleCA+PSAwKVxyXG4gICAgICB1c2Vycy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoe30pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gaW5wXHJcbiAgICogQHBhcmFtIGV2ZW50XHJcbiAgICovXHJcbiAgYWRkR3JhbnQoaW5wOiBIVE1MSW5wdXRFbGVtZW50LCBldmVudDogTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCk6IHZvaWQge1xyXG4gICAgY29uc3QgdXNlcnMgPSB0aGlzLmZvcm0udmFsdWUuZ3JhbnRBY2Nlc3MudXNlcnMgYXMgc3RyaW5nW107XHJcbiAgICBjb25zdCBpZCA9IGV2ZW50Lm9wdGlvbi52YWx1ZSBhcyBzdHJpbmc7XHJcbiAgICBpZiAoIXVzZXJzKVxyXG4gICAgICB0aGlzLmdyYW50QWNjZXNzLmNvbnRyb2xzWyd1c2VycyddLnNldFZhbHVlKFtpZF0pO1xyXG4gICAgZWxzZVxyXG4gICAgICB1c2Vycy5wdXNoKGlkKTtcclxuICAgIGlucC52YWx1ZSA9ICcnO1xyXG4gICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoe30pO1xyXG4gIH1cclxufVxyXG4iLCI8aDIgbWF0LWRpYWxvZy10aXRsZT57eydTZXR0aW5ncycgfCB0cmFuc2xhdGUgfX08L2gyPlxyXG48bWF0LWRpYWxvZy1jb250ZW50PlxyXG4gIDxmb3JtIGF1dG9jb21wbGV0ZT1cIm9mZlwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxyXG4gICAgPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZvcm1Hcm91cE5hbWU9XCJvdXRPZk9mZmljZVwiPlxyXG4gICAgICA8aDMgY2xhc3M9XCJtYXQtYm9keS1zdHJvbmdcIj57eydPdXRPZk9mZmljZSd8dHJhbnNsYXRlfX08L2gzPlxyXG4gICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBmb3JtQ29udHJvbE5hbWU9XCJhY3RpdmVcIj57eydBY3RpdmUnIHwgdHJhbnNsYXRlfX08L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgIDxiciAvPlxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQgZnhGbGV4PlxyXG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwic3Vic3RpdHV0ZVwiIHR5cGU9XCJzZWFyY2hcIiBbbWF0QXV0b2NvbXBsZXRlXT1cInNhdXRvXCIgI3N1YnN0aXR1ZUlucHV0XHJcbiAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInQXNzb2NpYXRlJyB8IHRyYW5zbGF0ZVwiIFtyZXF1aXJlZF09XCJvdXRPZk9mZmljZS52YWx1ZS5hY3RpdmVcIiAvPlxyXG4gICAgICAgIDxtYXQtYXV0b2NvbXBsZXRlICNzYXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiIFtkaXNwbGF5V2l0aF09XCJ1c2VyRGlzcGxheVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9wdGlvblNlbGVjdGVkKT1cInNldElkKCRldmVudClcIj5cclxuICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCB1IG9mIG91c2VycyQgfCBhc3luY1wiIFt2YWx1ZV09XCJ1XCI+XHJcbiAgICAgICAgICAgIDxzcGFuPnt7dS5uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbbWF0RGF0ZXBpY2tlcl09XCJmcm9tXCIgZm9ybUNvbnRyb2xOYW1lPVwiZnJvbVwiIHBsYWNlaG9sZGVyPVwie3snRnJvbSd8IHRyYW5zbGF0ZX19XCIgLz5cclxuICAgICAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgW2Zvcl09XCJmcm9tXCIgbWF0U3VmZml4PjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxyXG4gICAgICAgICAgPG1hdC1kYXRlcGlja2VyICNmcm9tPjwvbWF0LWRhdGVwaWNrZXI+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAmbmJzcDtcclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW21hdERhdGVwaWNrZXJdPVwidG9cIiBmb3JtQ29udHJvbE5hbWU9XCJ0b1wiIFttaW5dPVwiZm9ybS52YWx1ZT8uZnJvbVwiIHBsYWNlaG9sZGVyPVwie3snVG8nfCB0cmFuc2xhdGV9fVwiIC8+XHJcbiAgICAgICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlIFtmb3JdPVwidG9cIiBtYXRTdWZmaXg+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XHJcbiAgICAgICAgICA8bWF0LWRhdGVwaWNrZXIgI3RvPjwvbWF0LWRhdGVwaWNrZXI+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS08aHIgLz4tLT5cclxuICAgIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmb3JtR3JvdXBOYW1lPVwiZ3JhbnRBY2Nlc3NcIj5cclxuICAgICAgPGgzIGNsYXNzPVwibWF0LWJvZHktc3Ryb25nXCI+e3snR3JhbnRBY2Nlc3MnfHRyYW5zbGF0ZX19PC9oMz5cclxuICAgICAgPG1hdC1zbGlkZS10b2dnbGUgZm9ybUNvbnRyb2xOYW1lPVwiYWN0aXZlXCI+e3snQWN0aXZlJyB8IHRyYW5zbGF0ZX19PC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPG1hdC1jaGlwLWxpc3QgI2dyYW50TGlzdCBbYXR0ci5hcmlhLWxhYmVsXT1cIlwiIFtkaXNhYmxlZF09XCIhZ3JhbnRBY2Nlc3MudmFsdWUuYWN0aXZlXCI+XHJcbiAgICAgICAgICA8bWF0LWNoaXAgKm5nRm9yPVwibGV0IHUgb2YgZ3JhbnRBY2Nlc3MudmFsdWUudXNlcnMgfHwgW11cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyZW1vdmFibGVdPVwiZ3JhbnRBY2Nlc3MudmFsdWUuYWN0aXZlXCJcclxuICAgICAgICAgICAgICAgICAgICAocmVtb3ZlZCk9XCJyZW1vdmVHcmFudCh1KVwiPlxyXG4gICAgICAgICAgICB7e3UgfCB1c2VyTmFtZSB8IGFzeW5jfX1cclxuICAgICAgICAgICAgPG1hdC1pY29uIG1hdENoaXBSZW1vdmU+Y2FuY2VsPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvbWF0LWNoaXA+XHJcbiAgICAgICAgICA8aW5wdXQgW2Zvcm1Db250cm9sXT1cImdyYW50c1wiIHBsYWNlaG9sZGVyPVwie3snVXNlcnMnfCB0cmFuc2xhdGV9fVwiXHJcbiAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cImdyYW50QWNjZXNzLnZhbHVlLmFjdGl2ZVwiXHJcbiAgICAgICAgICAgICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJncmFudEF1dG9cIlxyXG4gICAgICAgICAgICAgICAgICNncmFudElucHV0XHJcbiAgICAgICAgICAgICAgICAgW21hdENoaXBJbnB1dEZvcl09XCJncmFudExpc3RcIlxyXG4gICAgICAgICAgICAgICAgIFttYXRDaGlwSW5wdXRTZXBhcmF0b3JLZXlDb2Rlc109XCJzZXBhcmF0b3JLZXlzQ29kZXNcIj5cclxuICAgICAgICA8L21hdC1jaGlwLWxpc3Q+XHJcbiAgICAgICAgPG1hdC1hdXRvY29tcGxldGUgI2dyYW50QXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiIChvcHRpb25TZWxlY3RlZCk9XCJhZGRHcmFudChncmFudElucHV0LCAkZXZlbnQpXCI+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgdSBvZiBndXNlcnMkIHwgYXN5bmNcIiBbdmFsdWVdPVwidS5pZFwiPlxyXG4gICAgICAgICAgICB7e3UubmFtZX19XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidS5lbWFpbFwiPiZuYnNwOyAtIHt7dS5lbWFpbH19PC9zcGFuPlxyXG4gICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZGl2PiBcclxuICA8L2Zvcm0+XHJcbjwvbWF0LWRpYWxvZy1jb250ZW50PlxyXG48bWF0LWRpYWxvZy1hY3Rpb25zPlxyXG4gIDxidXR0b24gbWF0LWJ1dHRvbiBbbWF0LWRpYWxvZy1jbG9zZV09XCJmb3JtLnZhbHVlXCIgY29sb3I9XCJwcmltYXJ5XCIgW2Rpc2FibGVkXT1cIiFmb3JtLnZhbGlkXCI+e3snT0snIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICA8YnV0dG9uIG1hdC1idXR0b24gbWF0LWRpYWxvZy1jbG9zZT57eydDYW5jZWwnIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuPC9tYXQtZGlhbG9nLWFjdGlvbnM+XHJcbiJdfQ==
155
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0b2ZvZmZpY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9wcm9maWxlci9vdXRvZm9mZmljZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL3Byb2ZpbGVyL291dG9mb2ZmaWNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQWdCLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQWMsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXJFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBVWhELE1BQU0sT0FBTyxxQkFBcUI7SUF1QmhDLFlBQW9CLFNBQXlCLEVBQ25DLFVBQStDLEVBQy9DLEdBQWdCLEVBRWpCLEtBQXNCO1FBSlgsY0FBUyxHQUFULFNBQVMsQ0FBZ0I7UUFDbkMsZUFBVSxHQUFWLFVBQVUsQ0FBcUM7UUFDL0MsUUFBRyxHQUFILEdBQUcsQ0FBYTtRQUVqQixVQUFLLEdBQUwsS0FB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Q0FBQyxNQUFNLENBQUMsS0FBZSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxLQUFLO1lBQ1IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzs7WUFFbEQsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqQixHQUFHLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLENBQUM7O2tIQTVIVSxxQkFBcUIsdUdBMEJ0QixlQUFlO3NHQTFCZCxxQkFBcUIsaUpBSUssUUFBUSxtR0FDWixZQUFZLDZCQ3pCL0MsNDRHQWdFQTsyRkQ1Q2EscUJBQXFCO2tCQURqQyxTQUFTOzs7MEJBMkJMLE1BQU07MkJBQUMsZUFBZTs0Q0F0QndCLGNBQWM7c0JBQTlELFNBQVM7dUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO2dCQUNFLFVBQVU7c0JBQTFELFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVOVEVSLCBDT01NQSwgU0VNSUNPTE9OIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9rZXljb2Rlc1wiO1xyXG5pbXBvcnQgeyBWaWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGVcIjtcclxuaW1wb3J0IHsgTWF0Q2hpcElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NoaXBzXCI7XHJcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5pbXBvcnQgeyBNYXRJbnB1dCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pbnB1dFwiO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0YWtlVW50aWwsIGZpbHRlciwgc3dpdGNoTWFwLCBtYXAgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBBY2NvdW50U2VydmljZSB9IGZyb20gXCIuLi8uLi9jb3JlL2FjY291bnQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBpc1N0cmluZyB9IGZyb20gXCIuLi8uLi9jb3JlL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgeyBPdXRPZk9mZmljZVNldHRpbmdzLCBHcmFudFNldHRpbmdzLCBVc2VySW5mbywgfSBmcm9tIFwiLi4vLi4vY29yZS9tb2RlbHNcIjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgT3V0T2ZPZmZpY2VEYXRhIHtcclxuICB1c2VySWQ6IHN0cmluZztcclxuICBvdXRPZk9mZmljZTogT3V0T2ZPZmZpY2VTZXR0aW5ncztcclxuICBncmFudEFjY2VzczogR3JhbnRTZXR0aW5ncztcclxufVxyXG5cclxuQENvbXBvbmVudCh7IHRlbXBsYXRlVXJsOiAnb3V0b2ZvZmZpY2UuY29tcG9uZW50Lmh0bWwnIH0pXHJcbmV4cG9ydCBjbGFzcyBQcm9maWxlU2V0dGluZ3NEaWFsb2cgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHJlYWRvbmx5IHNlcGFyYXRvcktleXNDb2RlczogbnVtYmVyW10gPSBbRU5URVIsIENPTU1BLCBTRU1JQ09MT05dO1xyXG4gIHJlYWRvbmx5IHN1YnN0aXR1dGUgPSB0aGlzLl9mYi5jb250cm9sPFVzZXJJbmZvIHwgc3RyaW5nPihudWxsKTtcclxuICByZWFkb25seSBncmFudHMgPSB0aGlzLl9mYi5jb250cm9sKFtdKTtcclxuICBAVmlld0NoaWxkKCdzdWJzdGl0dWVJbnB1dCcsIHsgcmVhZDogTWF0SW5wdXQgfSkgc3Vic3RpdHVlSW5wdXQ6IE1hdElucHV0O1xyXG4gIEBWaWV3Q2hpbGQoJ2dyYW50SW5wdXQnLCB7IHJlYWQ6IE1hdENoaXBJbnB1dCB9KSBncmFudElucHV0OiBNYXRDaGlwSW5wdXQ7XHJcbiAgcmVhZG9ubHkgb3V0T2ZPZmZpY2UgPSB0aGlzLl9mYi5ncm91cCh7XHJcbiAgICBhY3RpdmU6IHRoaXMuX2ZiLmNvbnRyb2woZmFsc2UpLFxyXG4gICAgc3Vic3RpdHVlSWQ6IHRoaXMuX2ZiLmNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCksXHJcbiAgICBmcm9tOiB0aGlzLl9mYi5jb250cm9sPERhdGUgfCBudWxsPihudWxsKSxcclxuICAgIHRvOiB0aGlzLl9mYi5jb250cm9sPERhdGUgfCBudWxsPihudWxsKVxyXG4gIH0pO1xyXG4gIHJlYWRvbmx5IGdyYW50QWNjZXNzID0gdGhpcy5fZmIuZ3JvdXAoe1xyXG4gICAgYWN0aXZlOiB0aGlzLl9mYi5jb250cm9sKGZhbHNlKSxcclxuICAgIHVzZXJzOiB0aGlzLl9mYi5jb250cm9sPHN0cmluZ1tdPihbXSlcclxuICB9KTtcclxuICByZWFkb25seSBmb3JtID0gdGhpcy5fZmIuZ3JvdXAoe1xyXG4gICAgb3V0T2ZPZmZpY2U6IHRoaXMub3V0T2ZPZmZpY2UsXHJcbiAgICBncmFudEFjY2VzczogdGhpcy5ncmFudEFjY2Vzc1xyXG4gIH0pO1xyXG4gIG91c2VycyQ6IE9ic2VydmFibGU8VXNlckluZm9bXT47XHJcbiAgZ3VzZXJzJDogT2JzZXJ2YWJsZTxVc2VySW5mb1tdPjtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfYWNjb3VudHM6IEFjY291bnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8UHJvZmlsZVNldHRpbmdzRGlhbG9nPixcclxuICAgIHByaXZhdGUgX2ZiOiBGb3JtQnVpbGRlcixcclxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKVxyXG4gICAgcHVibGljIG1vZGVsOiBPdXRPZk9mZmljZURhdGEpIHtcclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh0aGlzLm1vZGVsKTtcclxuICAgIGNvbnN0IHsgYWN0aXZlLCB0bywgZnJvbSB9ID0gdGhpcy5vdXRPZk9mZmljZS5jb250cm9scztcclxuICAgIGlmICghdGhpcy5tb2RlbC5vdXRPZk9mZmljZSB8fCAhdGhpcy5tb2RlbC5vdXRPZk9mZmljZS5hY3RpdmUpIHtcclxuICAgICAgdG8uZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgIGZyb20uZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgIHRoaXMuc3Vic3RpdHV0ZS5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zdWJzdGl0dXRlLmFkZFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgIGlmICghdGhpcy5tb2RlbC5vdXRPZk9mZmljZS5mcm9tKVxyXG4gICAgICAgIHRvLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5tb2RlbC5vdXRPZk9mZmljZS5zdWJzdGl0dWVJZCAmJlxyXG4gICAgICB0aGlzLl9hY2NvdW50cy5nZXQodGhpcy5tb2RlbC5vdXRPZk9mZmljZS5zdWJzdGl0dWVJZCkuc3Vic2NyaWJlKHUgPT5cclxuICAgICAgICB0aGlzLnN1YnN0aXR1dGUuc2V0VmFsdWUodSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pKTtcclxuICAgIGFjdGl2ZS52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5fZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkpKS5cclxuICAgICAgc3Vic2NyaWJlKGFjdGl2ZSA9PiB7XHJcbiAgICAgICAgaWYgKGFjdGl2ZSkge1xyXG4gICAgICAgICAgZnJvbS5lbmFibGUoKTtcclxuICAgICAgICAgIGZyb20udmFsdWUgJiYgdG8uZW5hYmxlKCk7XHJcbiAgICAgICAgICB0aGlzLnN1YnN0aXR1dGUuZW5hYmxlKCk7XHJcbiAgICAgICAgICB0aGlzLnN1YnN0aXR1dGUuYWRkVmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgIHRoaXMuc3Vic3RpdHVlSW5wdXQuZm9jdXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBmcm9tLmRpc2FibGUoKTtcclxuICAgICAgICAgIHRvLmRpc2FibGUoKTtcclxuICAgICAgICAgIHRoaXMuc3Vic3RpdHV0ZS5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgICAgICAgIHRoaXMuc3Vic3RpdHV0ZS5kaXNhYmxlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIHRoaXMub3VzZXJzJCA9IHRoaXMuc3Vic3RpdHV0ZS52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5fZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkpLFxyXG4gICAgICBmaWx0ZXIodiA9PiBpc1N0cmluZyh2KSksXHJcbiAgICAgIHN3aXRjaE1hcCh2ID0+IHRoaXMuX2FjY291bnRzLmZpbmRBbGwodiBhcyBhbnkpKSxcclxuICAgICAgbWFwKHIgPT4gci5maWx0ZXIodSA9PiB1LmlkICE9PSB0aGlzLm1vZGVsLnVzZXJJZCkpKTtcclxuICAgIGZyb20udmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX2RpYWxvZ1JlZi5hZnRlckNsb3NlZCgpKSkuXHJcbiAgICAgIHN1YnNjcmliZSh2ID0+IHtcclxuICAgICAgICBpZiAodilcclxuICAgICAgICAgIHRvLmVuYWJsZSgpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIHRvLmRpc2FibGUoKTtcclxuICAgICAgfSk7XHJcbiAgICBpZiAoIXRoaXMubW9kZWwuZ3JhbnRBY2Nlc3MgfHwgIXRoaXMubW9kZWwuZ3JhbnRBY2Nlc3MuYWN0aXZlKSB7XHJcbiAgICAgIHRoaXMuZ3JhbnRzLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5ncmFudEFjY2Vzcy5jb250cm9sc1snYWN0aXZlJ10udmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX2RpYWxvZ1JlZi5hZnRlckNsb3NlZCgpKSkuXHJcbiAgICAgIHN1YnNjcmliZSh2ID0+IHtcclxuICAgICAgICBpZiAodikge1xyXG4gICAgICAgICAgdGhpcy5ncmFudHMuZW5hYmxlKCk7XHJcbiAgICAgICAgICB0aGlzLmdyYW50cy5hZGRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgdGhpcy5ncmFudElucHV0LmZvY3VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5ncmFudHMuY2xlYXJWYWxpZGF0b3JzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIHRoaXMuZ3VzZXJzJCA9IHRoaXMuZ3JhbnRzLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLl9kaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKSksXHJcbiAgICAgIGZpbHRlcih2ID0+IGlzU3RyaW5nKHYpKSxcclxuICAgICAgc3dpdGNoTWFwKHYgPT4gdGhpcy5fYWNjb3VudHMuZmluZEFsbCh2IGFzIGFueSkpLFxyXG4gICAgICBtYXAociA9PiByLmZpbHRlcih1ID0+IHUuaWQgIT09IHRoaXMubW9kZWwudXNlcklkKSkpO1xyXG4gIH1cclxuICB1c2VyRGlzcGxheSA9IChpdGVtOiBVc2VySW5mbykgPT4ge1xyXG4gICAgcmV0dXJuIGl0ZW0gPyBpdGVtLm5hbWUgOiBudWxsO1xyXG4gIH1cclxuICBzZXRJZChldmVudDogTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCkge1xyXG4gICAgY29uc3QgeyBpZCB9ID0gZXZlbnQub3B0aW9uLnZhbHVlIGFzIFVzZXJJbmZvO1xyXG4gICAgdGhpcy5vdXRPZk9mZmljZS5jb250cm9sc1snc3Vic3RpdHVlSWQnXS5zZXRWYWx1ZShpZCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBpZFxyXG4gICAqL1xyXG4gIHJlbW92ZUdyYW50KGlkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IHVzZXJzID0gdGhpcy5mb3JtLnZhbHVlLmdyYW50QWNjZXNzPy51c2VycztcclxuICAgIGNvbnN0IGluZGV4ID0gdXNlcnMuaW5kZXhPZihpZCk7XHJcblxyXG4gICAgaWYgKGluZGV4ID49IDApXHJcbiAgICAgIHVzZXJzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7fSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBpbnBcclxuICAgKiBAcGFyYW0gZXZlbnRcclxuICAgKi9cclxuICBhZGRHcmFudChpbnA6IEhUTUxJbnB1dEVsZW1lbnQsIGV2ZW50OiBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCB1c2VycyA9IHRoaXMuZm9ybS52YWx1ZS5ncmFudEFjY2Vzcz8udXNlcnM7XHJcbiAgICBjb25zdCBpZCA9IGV2ZW50Lm9wdGlvbi52YWx1ZSBhcyBzdHJpbmc7XHJcbiAgICBpZiAoIXVzZXJzKVxyXG4gICAgICB0aGlzLmdyYW50QWNjZXNzLmNvbnRyb2xzWyd1c2VycyddLnNldFZhbHVlKFtpZF0pO1xyXG4gICAgZWxzZVxyXG4gICAgICB1c2Vycy5wdXNoKGlkKTtcclxuICAgIGlucC52YWx1ZSA9ICcnO1xyXG4gICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoe30pO1xyXG4gIH1cclxufVxyXG4iLCI8aDIgbWF0LWRpYWxvZy10aXRsZT57eydTZXR0aW5ncycgfCB0cmFuc2xhdGUgfX08L2gyPlxyXG48bWF0LWRpYWxvZy1jb250ZW50PlxyXG4gIDxmb3JtIGF1dG9jb21wbGV0ZT1cIm9mZlwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxyXG4gICAgPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZvcm1Hcm91cE5hbWU9XCJvdXRPZk9mZmljZVwiPlxyXG4gICAgICA8aDMgY2xhc3M9XCJtYXQtYm9keS1zdHJvbmdcIj57eydPdXRPZk9mZmljZSd8dHJhbnNsYXRlfX08L2gzPlxyXG4gICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBmb3JtQ29udHJvbE5hbWU9XCJhY3RpdmVcIj57eydBY3RpdmUnIHwgdHJhbnNsYXRlfX08L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgIDxiciAvPlxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQgZnhGbGV4PlxyXG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwic3Vic3RpdHV0ZVwiIHR5cGU9XCJzZWFyY2hcIiBbbWF0QXV0b2NvbXBsZXRlXT1cInNhdXRvXCIgI3N1YnN0aXR1ZUlucHV0XHJcbiAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInQXNzb2NpYXRlJyB8IHRyYW5zbGF0ZVwiIFtyZXF1aXJlZF09XCJvdXRPZk9mZmljZS52YWx1ZS5hY3RpdmVcIiAvPlxyXG4gICAgICAgIDxtYXQtYXV0b2NvbXBsZXRlICNzYXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiIFtkaXNwbGF5V2l0aF09XCJ1c2VyRGlzcGxheVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9wdGlvblNlbGVjdGVkKT1cInNldElkKCRldmVudClcIj5cclxuICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCB1IG9mIG91c2VycyQgfCBhc3luY1wiIFt2YWx1ZV09XCJ1XCI+XHJcbiAgICAgICAgICAgIDxzcGFuPnt7dS5uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbbWF0RGF0ZXBpY2tlcl09XCJmcm9tXCIgZm9ybUNvbnRyb2xOYW1lPVwiZnJvbVwiIHBsYWNlaG9sZGVyPVwie3snRnJvbSd8IHRyYW5zbGF0ZX19XCIgLz5cclxuICAgICAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgW2Zvcl09XCJmcm9tXCIgbWF0U3VmZml4PjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxyXG4gICAgICAgICAgPG1hdC1kYXRlcGlja2VyICNmcm9tPjwvbWF0LWRhdGVwaWNrZXI+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAmbmJzcDtcclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW21hdERhdGVwaWNrZXJdPVwidG9cIiBmb3JtQ29udHJvbE5hbWU9XCJ0b1wiIFttaW5dPVwiZm9ybS5jb250cm9sc1snZnJvbSddLnZhbHVlXCIgcGxhY2Vob2xkZXI9XCJ7eydUbyd8IHRyYW5zbGF0ZX19XCIgLz5cclxuICAgICAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgW2Zvcl09XCJ0b1wiIG1hdFN1ZmZpeD48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cclxuICAgICAgICAgIDxtYXQtZGF0ZXBpY2tlciAjdG8+PC9tYXQtZGF0ZXBpY2tlcj5cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLTxociAvPi0tPlxyXG4gICAgPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZvcm1Hcm91cE5hbWU9XCJncmFudEFjY2Vzc1wiPlxyXG4gICAgICA8aDMgY2xhc3M9XCJtYXQtYm9keS1zdHJvbmdcIj57eydHcmFudEFjY2Vzcyd8dHJhbnNsYXRlfX08L2gzPlxyXG4gICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBmb3JtQ29udHJvbE5hbWU9XCJhY3RpdmVcIj57eydBY3RpdmUnIHwgdHJhbnNsYXRlfX08L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8bWF0LWNoaXAtbGlzdCAjZ3JhbnRMaXN0IFthdHRyLmFyaWEtbGFiZWxdPVwiXCIgW2Rpc2FibGVkXT1cIiFncmFudEFjY2Vzcy52YWx1ZS5hY3RpdmVcIj5cclxuICAgICAgICAgIDxtYXQtY2hpcCAqbmdGb3I9XCJsZXQgdSBvZiBncmFudEFjY2Vzcy52YWx1ZS51c2VycyB8fCBbXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3JlbW92YWJsZV09XCJncmFudEFjY2Vzcy52YWx1ZS5hY3RpdmVcIlxyXG4gICAgICAgICAgICAgICAgICAgIChyZW1vdmVkKT1cInJlbW92ZUdyYW50KHUpXCI+XHJcbiAgICAgICAgICAgIHt7dSB8IHVzZXJOYW1lIHwgYXN5bmN9fVxyXG4gICAgICAgICAgICA8bWF0LWljb24gbWF0Q2hpcFJlbW92ZT5jYW5jZWw8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9tYXQtY2hpcD5cclxuICAgICAgICAgIDxpbnB1dCBbZm9ybUNvbnRyb2xdPVwiZ3JhbnRzXCIgcGxhY2Vob2xkZXI9XCJ7eydVc2Vycyd8IHRyYW5zbGF0ZX19XCJcclxuICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiZ3JhbnRBY2Nlc3MudmFsdWUuYWN0aXZlXCJcclxuICAgICAgICAgICAgICAgICBbbWF0QXV0b2NvbXBsZXRlXT1cImdyYW50QXV0b1wiXHJcbiAgICAgICAgICAgICAgICAgI2dyYW50SW5wdXRcclxuICAgICAgICAgICAgICAgICBbbWF0Q2hpcElucHV0Rm9yXT1cImdyYW50TGlzdFwiXHJcbiAgICAgICAgICAgICAgICAgW21hdENoaXBJbnB1dFNlcGFyYXRvcktleUNvZGVzXT1cInNlcGFyYXRvcktleXNDb2Rlc1wiPlxyXG4gICAgICAgIDwvbWF0LWNoaXAtbGlzdD5cclxuICAgICAgICA8bWF0LWF1dG9jb21wbGV0ZSAjZ3JhbnRBdXRvPVwibWF0QXV0b2NvbXBsZXRlXCIgKG9wdGlvblNlbGVjdGVkKT1cImFkZEdyYW50KGdyYW50SW5wdXQsICRldmVudClcIj5cclxuICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCB1IG9mIGd1c2VycyQgfCBhc3luY1wiIFt2YWx1ZV09XCJ1LmlkXCI+XHJcbiAgICAgICAgICAgIHt7dS5uYW1lfX1cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ1LmVtYWlsXCI+Jm5ic3A7IC0ge3t1LmVtYWlsfX08L3NwYW4+XHJcbiAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+IFxyXG4gIDwvZm9ybT5cclxuPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XHJcbjxtYXQtZGlhbG9nLWFjdGlvbnM+XHJcbiAgPGJ1dHRvbiBtYXQtYnV0dG9uIFttYXQtZGlhbG9nLWNsb3NlXT1cImZvcm0udmFsdWVcIiBjb2xvcj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwiIWZvcm0udmFsaWRcIj57eydPSycgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gIDxidXR0b24gbWF0LWJ1dHRvbiBtYXQtZGlhbG9nLWNsb3NlPnt7J0NhbmNlbCcgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG48L21hdC1kaWFsb2ctYWN0aW9ucz5cclxuIl19
@@ -24,23 +24,23 @@ import * as i10 from "../../core/slots/pane-ref";
24
24
  import * as i11 from "../../core/translate.service";
25
25
  import * as i12 from "../../core/account.service";
26
26
  import * as i13 from "@angular/forms";
27
- import * as i14 from "@angular/material/toolbar";
28
- import * as i15 from "@angular/material/icon";
29
- import * as i16 from "@angular/material/autocomplete";
30
- import * as i17 from "@angular/material/core";
31
- import * as i18 from "@angular/material/button";
32
- import * as i19 from "@angular/material/card";
33
- import * as i20 from "@syncfusion/ej2-angular-charts";
27
+ import * as i14 from "@angular/common";
28
+ import * as i15 from "@angular/flex-layout/flex";
29
+ import * as i16 from "@syncfusion/ej2-angular-charts";
30
+ import * as i17 from "@angular/material/card";
31
+ import * as i18 from "@angular/material/toolbar";
32
+ import * as i19 from "@angular/material/autocomplete";
33
+ import * as i20 from "@angular/material/core";
34
34
  import * as i21 from "@angular/material/form-field";
35
35
  import * as i22 from "@angular/material/select";
36
- import * as i23 from "@angular/material/input";
37
- import * as i24 from "@angular/common";
38
- import * as i25 from "../../core/popup/tooltip.directive";
39
- import * as i26 from "@angular/flex-layout/flex";
40
- import * as i27 from "../../core/pipes/translate.pipe";
36
+ import * as i23 from "@angular/material/button";
37
+ import * as i24 from "@angular/material/input";
38
+ import * as i25 from "@angular/material/icon";
39
+ import * as i26 from "../../core/popup/tooltip.directive";
40
+ import * as i27 from "../../core/pipes/difference.pipe";
41
41
  import * as i28 from "../../core/pipes/duration.pipe";
42
- import * as i29 from "../../core/pipes/difference.pipe";
43
- import * as i30 from "../../core/pipes/role.pipe";
42
+ import * as i29 from "../../core/pipes/role.pipe";
43
+ import * as i30 from "../../core/pipes/translate.pipe";
44
44
  let ProfilerComponent = class ProfilerComponent {
45
45
  /** ctor */
46
46
  constructor(_sb, _utilityRef, _session, _dialog, _documentInfo, media, _chat, _guide, _router, _cd, _pane, _translate, _accounts, _fb) {
@@ -254,14 +254,14 @@ let ProfilerComponent = class ProfilerComponent {
254
254
  this._destroy.complete();
255
255
  }
256
256
  };
257
- ProfilerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ProfilerComponent, deps: [{ token: i1.PromptService }, { token: i2.UtilityRef }, { token: i3.SessionService }, { token: i4.MatDialog }, { token: i5.DocumentInfo }, { token: i6.MediaObserver }, { token: i7.ChatInfo }, { token: i8.GuideService }, { token: i9.PanesRouter }, { token: i0.ChangeDetectorRef }, { token: i10.PaneRef }, { token: i11.TranslateService }, { token: i12.AccountService }, { token: i13.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
258
- ProfilerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: ProfilerComponent, selector: "ng-component", host: { listeners: { "window:keydown.f1": "guide($event)" }, classAttribute: "pane" }, viewQueries: [{ propertyName: "chart", first: true, predicate: ["activity"], descendants: true }, { propertyName: "chartElement", first: true, predicate: ["activity"], descendants: true, read: ElementRef }, { propertyName: "assignTpl", first: true, predicate: ["assignTpl"], descendants: true }], ngImport: i0, template: "<mat-toolbar>\r\n <mat-icon (click)=\"null\" class=\"mat-icon-rtl-mirror\">search</mat-icon>\r\n <input matInput type=\"search\" [matAutocomplete]=\"auto\" [formControl]=\"search\" data-help=\"search\" width=\"20\" />\r\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"userDisplay\"\r\n (optionSelected)=\"change($event)\">\r\n <mat-option *ngFor=\"let u of users$ | async\" [value]=\"u\">\r\n <span>{{u.name}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"guide()\" [bizdocTooltip]=\"'Help' | translate\"><mat-icon>help_outline</mat-icon></button>\r\n</mat-toolbar>\r\n<div *ngIf=\"data\" fxLayout=\"row wrap\">\r\n <!-- info -->\r\n <mat-card fxFlex>\r\n <mat-card-header>\r\n <mat-card-title>\r\n <span>{{data.info.name}}</span>\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <br />\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <button mat-icon-button (click)=\"chat()\" [bizdocTooltip]=\"'Chat' | translate\" [disabled]=\"!data\"><mat-icon>chat</mat-icon></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"settings()\" [bizdocTooltip]=\"'Settings' | translate\" [disabled]=\"!data\" data-help=\"settings\"><mat-icon>settings</mat-icon></button>\r\n </mat-card-actions>\r\n </mat-card>\r\n <mat-card fxFlex data-help=\"activity\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n {{'Activity' | translate}}\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <ejs-chart #activity [primaryXAxis]=\"primaryXAxis\" [primaryYAxis]=\"primaryYAxis\" [zoomSettings]=\"zoomSettings\" [tooltip]='tooltip' (tooltipRender)=\"tooltipRender($event)\" [palettes]=\"palettes\" background=\"transparent\" [theme]='theme' [border]=\"border\" (pointClick)=\"pointClick($event)\">\r\n <e-series-collection>\r\n </e-series-collection>\r\n </ejs-chart>\r\n </mat-card-content>\r\n </mat-card>\r\n <!-- pending -->\r\n <mat-card fxFlex data-help=\"pending\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n {{'Pending' | translate}}\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <table class=\"mat-table\" *ngIf=\"data.pending.length; else none\">\r\n <thead>\r\n <tr class=\"mat-row\">\r\n <td class=\"mat-header-cell\"></td>\r\n <td class=\"mat-header-cell\"></td>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let r of data.pending\" class=\"mat-row\">\r\n <td class=\"mat-cell\"><a (click)=\"trace(r.id)\">{{r.number}}</a></td>\r\n <td class=\"mat-cell\">{{ r.received | amDifference : null : 's' | amDuration : 's'}}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </mat-card-content>\r\n </mat-card>\r\n <!-- positions -->\r\n <mat-card fxFlex data-help=\"positions\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n {{'Positions' | translate}}\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <table class=\"mat-table\" *ngIf=\"data.positions.length; else none\">\r\n <tr *ngFor=\"let p of data.positions\" class=\"mat-row\">\r\n <td class=\"mat-cell\">{{p.value }}</td>\r\n <td class=\"mat-cell\">{{p.role | role}}</td>\r\n <td class=\"mat-cell\">\r\n <button mat-icon-button (click)=\"reassign(p)\" [bizdocTooltip]=\"'Reassign' | translate\"><mat-icon>swap_horiz</mat-icon></button>\r\n </td>\r\n </tr>\r\n </table>\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"reassign()\" [bizdocTooltip]=\"'ReassignAll' | translate\" [disabled]=\"!data || !data.positions.length\" data-help=\"reassign\"><mat-icon>swap_horiz</mat-icon></button>\r\n </mat-card-actions>\r\n </mat-card>\r\n</div>\r\n<!-- assign dialog -->\r\n<ng-template #assignTpl>\r\n <h2 mat-dialog-title>{{'Reassign' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form autocomplete=\"off\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <mat-select placeholder=\"{{'Who' | translate}}\" [formControl]=\"who\" required>\r\n <mat-option *ngFor=\"let u of assignable$ | async\" [value]=\"u.id\">{{u.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"who.value\" color=\"primary\" [disabled]=\"!who.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<ng-template #none>\r\n <span class=\"mat-body-2\">{{'None' | translate }}</span>\r\n</ng-template>\r\n", styles: [":host{min-width:560px;display:block}.mat-card{margin:5px}.mat-card:hover{box-shadow:0 3px 3px -2px #0003,0 3px 4px #00000024,0 1px 8px #0000001f}.mat-table{width:100%}\n"], components: [{ type: i14.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { type: i15.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i16.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i17.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i18.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i19.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { type: i19.MatCardHeader, selector: "mat-card-header" }, { type: i20.ChartComponent, selector: "ejs-chart", inputs: ["allowExport", "allowMultiSelection", "annotations", "axes", "background", "backgroundImage", "border", "chartArea", "columns", "crosshair", "currencyCode", "dataSource", "description", "enableAnimation", "enableAutoIntervalOnBothAxis", "enableCanvas", "enableExport", "enablePersistence", "enableRtl", "enableSideBySidePlacement", "height", "highlightColor", "highlightMode", "highlightPattern", "indicators", "isMultiSelect", "isTransposed", "legendSettings", "locale", "margin", "palettes", "primaryXAxis", "primaryYAxis", "rangeColorSettings", "rows", "selectedDataIndexes", "selectionMode", "selectionPattern", "series", "subTitle", "subTitleStyle", "tabIndex", "theme", "title", "titleStyle", "tooltip", "useGroupingSeparator", "width", "zoomSettings"], outputs: ["afterExport", "animationComplete", "annotationRender", "axisLabelClick", "axisLabelRender", "axisMultiLabelRender", "axisRangeCalculated", "beforeExport", "beforePrint", "beforeResize", "chartDoubleClick", "chartMouseClick", "chartMouseDown", "chartMouseLeave", "chartMouseMove", "chartMouseUp", "drag", "dragComplete", "dragEnd", "dragStart", "legendClick", "legendRender", "load", "loaded", "multiLevelLabelClick", "onZooming", "pointClick", "pointDoubleClick", "pointMove", "pointRender", "resized", "scrollChanged", "scrollEnd", "scrollStart", "selectionComplete", "seriesRender", "sharedTooltipRender", "textRender", "tooltipRender", "zoomComplete", "dataSourceChange"] }, { type: i21.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i22.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }], directives: [{ type: i23.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i16.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i13.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i13.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i13.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i24.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i25.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i24.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i26.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i26.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { type: i19.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { type: i19.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { type: i19.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { type: i20.SeriesCollectionDirective, selector: "ej-chart>e-series-collection" }, { type: i4.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i4.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i13.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i13.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i13.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i4.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i4.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }], pipes: { "async": i24.AsyncPipe, "translate": i27.TranslatePipe, "amDuration": i28.DurationPipe, "amDifference": i29.DifferencePipe, "role": i30.RolePipe } });
257
+ ProfilerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ProfilerComponent, deps: [{ token: i1.PromptService }, { token: i2.UtilityRef }, { token: i3.SessionService }, { token: i4.MatDialog }, { token: i5.DocumentInfo }, { token: i6.MediaObserver }, { token: i7.ChatInfo }, { token: i8.GuideService }, { token: i9.PanesRouter }, { token: i0.ChangeDetectorRef }, { token: i10.PaneRef }, { token: i11.TranslateService }, { token: i12.AccountService }, { token: i13.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
258
+ ProfilerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: ProfilerComponent, selector: "ng-component", host: { listeners: { "window:keydown.f1": "guide($event)" }, classAttribute: "pane" }, viewQueries: [{ propertyName: "chart", first: true, predicate: ["activity"], descendants: true }, { propertyName: "chartElement", first: true, predicate: ["activity"], descendants: true, read: ElementRef }, { propertyName: "assignTpl", first: true, predicate: ["assignTpl"], descendants: true }], ngImport: i0, template: "<mat-toolbar>\r\n <mat-icon (click)=\"null\" class=\"mat-icon-rtl-mirror\">search</mat-icon>\r\n <input matInput type=\"search\" [matAutocomplete]=\"auto\" [formControl]=\"search\" data-help=\"search\" width=\"20\" />\r\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"userDisplay\"\r\n (optionSelected)=\"change($event)\">\r\n <mat-option *ngFor=\"let u of users$ | async\" [value]=\"u\">\r\n <span>{{u.name}}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"guide()\" [bizdocTooltip]=\"'Help' | translate\"><mat-icon>help_outline</mat-icon></button>\r\n</mat-toolbar>\r\n<div *ngIf=\"data\" fxLayout=\"row wrap\">\r\n <!-- info -->\r\n <mat-card fxFlex>\r\n <mat-card-header>\r\n <mat-card-title>\r\n <span>{{data.info.name}}</span>\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <br />\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <button mat-icon-button (click)=\"chat()\" [bizdocTooltip]=\"'Chat' | translate\" [disabled]=\"!data\"><mat-icon>chat</mat-icon></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"settings()\" [bizdocTooltip]=\"'Settings' | translate\" [disabled]=\"!data\" data-help=\"settings\"><mat-icon>settings</mat-icon></button>\r\n </mat-card-actions>\r\n </mat-card>\r\n <mat-card fxFlex data-help=\"activity\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n {{'Activity' | translate}}\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <ejs-chart #activity [primaryXAxis]=\"primaryXAxis\" [primaryYAxis]=\"primaryYAxis\" [zoomSettings]=\"zoomSettings\" [tooltip]='tooltip' (tooltipRender)=\"tooltipRender($event)\" [palettes]=\"palettes\" background=\"transparent\" [theme]='theme' [border]=\"border\" (pointClick)=\"pointClick($event)\">\r\n <e-series-collection>\r\n </e-series-collection>\r\n </ejs-chart>\r\n </mat-card-content>\r\n </mat-card>\r\n <!-- pending -->\r\n <mat-card fxFlex data-help=\"pending\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n {{'Pending' | translate}}\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <table class=\"mat-table\" *ngIf=\"data.pending.length; else none\">\r\n <thead>\r\n <tr class=\"mat-row\">\r\n <td class=\"mat-header-cell\"></td>\r\n <td class=\"mat-header-cell\"></td>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let r of data.pending\" class=\"mat-row\">\r\n <td class=\"mat-cell\"><a (click)=\"trace(r.id)\">{{r.number}}</a></td>\r\n <td class=\"mat-cell\">{{ r.received | amDifference : null : 's' | amDuration : 's'}}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </mat-card-content>\r\n </mat-card>\r\n <!-- positions -->\r\n <mat-card fxFlex data-help=\"positions\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n {{'Positions' | translate}}\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <table class=\"mat-table\" *ngIf=\"data.positions.length; else none\">\r\n <tr *ngFor=\"let p of data.positions\" class=\"mat-row\">\r\n <td class=\"mat-cell\">{{p.value }}</td>\r\n <td class=\"mat-cell\">{{p.role | role}}</td>\r\n <td class=\"mat-cell\">\r\n <button mat-icon-button (click)=\"reassign(p)\" [bizdocTooltip]=\"'Reassign' | translate\"><mat-icon>swap_horiz</mat-icon></button>\r\n </td>\r\n </tr>\r\n </table>\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"reassign()\" [bizdocTooltip]=\"'ReassignAll' | translate\" [disabled]=\"!data || !data.positions.length\" data-help=\"reassign\"><mat-icon>swap_horiz</mat-icon></button>\r\n </mat-card-actions>\r\n </mat-card>\r\n</div>\r\n<!-- assign dialog -->\r\n<ng-template #assignTpl>\r\n <h2 mat-dialog-title>{{'Reassign' | translate }}</h2>\r\n <mat-dialog-content>\r\n <form autocomplete=\"off\" fxLayout=\"column\">\r\n <mat-form-field>\r\n <mat-select placeholder=\"{{'Who' | translate}}\" [formControl]=\"who\" required>\r\n <mat-option *ngFor=\"let u of assignable$ | async\" [value]=\"u.id\">{{u.name}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </form>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button [mat-dialog-close]=\"who.value\" color=\"primary\" [disabled]=\"!who.valid\">{{'OK' | translate}}</button>\r\n <button mat-button mat-dialog-close>{{'Cancel' | translate}}</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n<ng-template #none>\r\n <span class=\"mat-body-2\">{{'None' | translate }}</span>\r\n</ng-template>\r\n", styles: [":host{min-width:560px;display:block}.mat-card{margin:5px}.mat-card:hover{box-shadow:0 3px 3px -2px #0003,0 3px 4px #00000024,0 1px 8px #0000001f}.mat-table{width:100%}\n"], dependencies: [{ kind: "directive", type: i14.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i14.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i13.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i13.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i13.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i13.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i13.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i13.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i15.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i15.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i16.ChartComponent, selector: "ejs-chart", inputs: ["allowExport", "allowMultiSelection", "annotations", "axes", "background", "backgroundImage", "border", "chartArea", "columns", "crosshair", "currencyCode", "dataSource", "description", "enableAnimation", "enableAutoIntervalOnBothAxis", "enableCanvas", "enableExport", "enablePersistence", "enableRtl", "enableSideBySidePlacement", "height", "highlightColor", "highlightMode", "highlightPattern", "indicators", "isMultiSelect", "isTransposed", "legendSettings", "locale", "margin", "palettes", "primaryXAxis", "primaryYAxis", "rangeColorSettings", "rows", "selectedDataIndexes", "selectionMode", "selectionPattern", "series", "subTitle", "subTitleStyle", "tabIndex", "theme", "title", "titleStyle", "tooltip", "useGroupingSeparator", "width", "zoomSettings"], outputs: ["afterExport", "animationComplete", "annotationRender", "axisLabelClick", "axisLabelRender", "axisMultiLabelRender", "axisRangeCalculated", "beforeExport", "beforePrint", "beforeResize", "chartDoubleClick", "chartMouseClick", "chartMouseDown", "chartMouseLeave", "chartMouseMove", "chartMouseUp", "drag", "dragComplete", "dragEnd", "dragStart", "legendClick", "legendRender", "load", "loaded", "multiLevelLabelClick", "onZooming", "pointClick", "pointDoubleClick", "pointMove", "pointRender", "resized", "scrollChanged", "scrollEnd", "scrollStart", "selectionComplete", "seriesRender", "sharedTooltipRender", "textRender", "tooltipRender", "zoomComplete", "dataSourceChange"] }, { kind: "directive", type: i16.SeriesCollectionDirective, selector: "ej-chart>e-series-collection" }, { kind: "component", type: i17.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "component", type: i17.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i17.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { kind: "directive", type: i17.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: i17.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i4.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i4.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i4.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i4.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: i18.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i19.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i19.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i20.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i21.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i22.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i23.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i24.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i25.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i26.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: i14.AsyncPipe, name: "async" }, { kind: "pipe", type: i27.DifferencePipe, name: "amDifference" }, { kind: "pipe", type: i28.DurationPipe, name: "amDuration" }, { kind: "pipe", type: i29.RolePipe, name: "role" }, { kind: "pipe", type: i30.TranslatePipe, name: "translate" }] });
259
259
  ProfilerComponent = __decorate([
260
260
  BizDoc({ selector: 'bizdoc-user-profiler' })
261
261
  /** component*/
262
262
  ], ProfilerComponent);
263
263
  export { ProfilerComponent };
264
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ProfilerComponent, decorators: [{
264
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ProfilerComponent, decorators: [{
265
265
  type: Component,
266
266
  args: [{ host: {
267
267
  class: 'pane'