@bizdoc/core 1.9.8 → 1.9.13

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 (304) hide show
  1. package/assets/themes/brown.min.css +1 -1
  2. package/assets/themes/dark.min.css +1 -1
  3. package/assets/themes/default.min.css +1 -1
  4. package/assets/themes/green.min.css +1 -1
  5. package/assets/themes/indigo.min.css +1 -1
  6. package/esm2020/lib/admin/admin-dismiss.service.mjs +3 -3
  7. package/esm2020/lib/admin/admin-menu.component.mjs +3 -3
  8. package/esm2020/lib/admin/core/ace.input.mjs +3 -3
  9. package/esm2020/lib/admin/core/color-picker.input.mjs +3 -3
  10. package/esm2020/lib/admin/core/search.input.mjs +3 -3
  11. package/esm2020/lib/admin/diff/configuration-diff.component.mjs +3 -3
  12. package/esm2020/lib/admin/document-trace/document-trace.component.mjs +3 -3
  13. package/esm2020/lib/admin/document-trace/reassign.dialog.mjs +3 -3
  14. package/esm2020/lib/admin/document-trace/trace-element.component.mjs +3 -3
  15. package/esm2020/lib/admin/form/form.resolve.service.mjs +3 -3
  16. package/esm2020/lib/admin/form/form.service.mjs +3 -3
  17. package/esm2020/lib/admin/form/workflow/node.component.mjs +3 -3
  18. package/esm2020/lib/admin/form/workflow/role-node.component.mjs +3 -3
  19. package/esm2020/lib/admin/form/workflow/workflow.component.mjs +3 -3
  20. package/esm2020/lib/admin/indices/manage-cube-index.component.mjs +3 -3
  21. package/esm2020/lib/admin/patterns/patterns.component.mjs +3 -3
  22. package/esm2020/lib/admin/permissions/permissions.component.mjs +3 -3
  23. package/esm2020/lib/admin/positions/positions-popup.component.mjs +3 -3
  24. package/esm2020/lib/admin/positions/positions.component.mjs +119 -25
  25. package/esm2020/lib/admin/profiler/profiler.component.mjs +3 -3
  26. package/esm2020/lib/admin/utility-wrapper.component.mjs +3 -3
  27. package/esm2020/lib/admin/utility.pane.component.mjs +3 -3
  28. package/esm2020/lib/app.component.mjs +6 -6
  29. package/esm2020/lib/bizdoc.module.mjs +4 -4
  30. package/esm2020/lib/browse/browse-items.component.mjs +10 -5
  31. package/esm2020/lib/browse/browse.mobile.component.mjs +3 -3
  32. package/esm2020/lib/browse/browse.pane.component.mjs +5 -5
  33. package/esm2020/lib/browse/expanded-item/expanded-item.component.mjs +3 -3
  34. package/esm2020/lib/browse/filter/filter.component.mjs +6 -9
  35. package/esm2020/lib/browse/folders-menu.component.mjs +5 -5
  36. package/esm2020/lib/chat/chat-info.mjs +3 -3
  37. package/esm2020/lib/chat/chat.mobile.component.mjs +3 -3
  38. package/esm2020/lib/chat/chat.service.mjs +3 -3
  39. package/esm2020/lib/chat/contacts.component.mjs +6 -6
  40. package/esm2020/lib/chat/contacts.pane.component.mjs +3 -3
  41. package/esm2020/lib/chat/conversation.component.mjs +3 -3
  42. package/esm2020/lib/chat/conversation.pane.component.mjs +3 -3
  43. package/esm2020/lib/compose/action/action-picker.component.mjs +3 -3
  44. package/esm2020/lib/compose/action/action.dialog.mjs +3 -3
  45. package/esm2020/lib/compose/action/action.pane.dialog.mjs +3 -3
  46. package/esm2020/lib/compose/action/assign-action.component.mjs +3 -3
  47. package/esm2020/lib/compose/action/return-action.component.mjs +3 -3
  48. package/esm2020/lib/compose/attachments/attachments.component.mjs +3 -3
  49. package/esm2020/lib/compose/attachments/preview/attachment-preview.component.mjs +19 -17
  50. package/esm2020/lib/compose/attachments/progress-button.directive.mjs +3 -3
  51. package/esm2020/lib/compose/can-deactivate-changes.service.mjs +3 -3
  52. package/esm2020/lib/compose/comments/Comments.pane.component.mjs +3 -3
  53. package/esm2020/lib/compose/comments/comment.component.mjs +3 -3
  54. package/esm2020/lib/compose/comments/comments.component.mjs +3 -3
  55. package/esm2020/lib/compose/comments/edit-comment.component.mjs +3 -3
  56. package/esm2020/lib/compose/comments/edits.component.mjs +3 -3
  57. package/esm2020/lib/compose/comments/quick-comment.component.exp.mjs +3 -3
  58. package/esm2020/lib/compose/comments/votes.component.mjs +3 -3
  59. package/esm2020/lib/compose/compose-resolve.service.mjs +6 -6
  60. package/esm2020/lib/compose/compose.mobile.component.mjs +3 -3
  61. package/esm2020/lib/compose/compose.pane.component.mjs +9 -6
  62. package/esm2020/lib/compose/copy/copy.dialog.mjs +3 -3
  63. package/esm2020/lib/compose/dismiss.service.mjs +3 -3
  64. package/esm2020/lib/compose/document-resolver.service.mjs +3 -3
  65. package/esm2020/lib/compose/document.component.mjs +10 -12
  66. package/esm2020/lib/compose/document.mobile.component.mjs +3 -3
  67. package/esm2020/lib/compose/document.pane.component.mjs +3 -3
  68. package/esm2020/lib/compose/events/events.component.mjs +3 -3
  69. package/esm2020/lib/compose/form-ref.mjs +6 -7
  70. package/esm2020/lib/compose/form-selector/form-selector.sheet.mjs +3 -3
  71. package/esm2020/lib/compose/form.component.mjs +5 -5
  72. package/esm2020/lib/compose/new-menu.component.mjs +5 -5
  73. package/esm2020/lib/compose/privilage.directive.mjs +6 -6
  74. package/esm2020/lib/compose/recipient-resolver.service.mjs +3 -3
  75. package/esm2020/lib/compose/save-changes.dialog.mjs +3 -3
  76. package/esm2020/lib/compose/state.component.mjs +3 -3
  77. package/esm2020/lib/compose/tag/tags.component.mjs +3 -3
  78. package/esm2020/lib/compose/trace/flow.component.mjs +4 -5
  79. package/esm2020/lib/compose/trace/people.component.mjs +3 -3
  80. package/esm2020/lib/compose/trace/trace.base.mjs +3 -3
  81. package/esm2020/lib/compose/trace/trace.component.mjs +3 -3
  82. package/esm2020/lib/compose/trace/trace.pane.component.mjs +3 -3
  83. package/esm2020/lib/compose/version-compare/version-compare.component.mjs +8 -10
  84. package/esm2020/lib/compose/version-compare/version-compare.directive.mjs +9 -9
  85. package/esm2020/lib/compose/version-compare/version.pane.component.mjs +12 -7
  86. package/esm2020/lib/core/NgComponentOutlet.mjs +3 -3
  87. package/esm2020/lib/core/account.service.mjs +8 -5
  88. package/esm2020/lib/core/animated-icon/animated-icon.directive.mjs +3 -3
  89. package/esm2020/lib/core/avatar/avatar.component.mjs +3 -3
  90. package/esm2020/lib/core/component-factory-resolver.mjs +3 -3
  91. package/esm2020/lib/core/configuration.mjs +1 -1
  92. package/esm2020/lib/core/controls/address.input.mjs +3 -3
  93. package/esm2020/lib/core/controls/auto-complete.input.mjs +3 -3
  94. package/esm2020/lib/core/controls/combination-picker-body.mjs +3 -3
  95. package/esm2020/lib/core/controls/combination-picker.mjs +3 -3
  96. package/esm2020/lib/core/controls/combination-pool.mjs +3 -3
  97. package/esm2020/lib/core/controls/select.input.mjs +3 -3
  98. package/esm2020/lib/core/controls/time-picker.mjs +3 -3
  99. package/esm2020/lib/core/controls/timespan.input.mjs +3 -3
  100. package/esm2020/lib/core/datasource.service.mjs +3 -3
  101. package/esm2020/lib/core/guide/guide.component.mjs +3 -3
  102. package/esm2020/lib/core/guide/guide.service.mjs +3 -3
  103. package/esm2020/lib/core/http.interceptor.mjs +3 -3
  104. package/esm2020/lib/core/hub.service.mjs +3 -3
  105. package/esm2020/lib/core/identity/identity.component.mjs +3 -3
  106. package/esm2020/lib/core/info/attachment-info.service.mjs +3 -3
  107. package/esm2020/lib/core/info/document-info.service.mjs +3 -3
  108. package/esm2020/lib/core/info/location-info.component.mjs +3 -3
  109. package/esm2020/lib/core/info/map-info.mjs +3 -3
  110. package/esm2020/lib/core/layout/autocomplete.field.mjs +3 -3
  111. package/esm2020/lib/core/layout/checkbox.field.mjs +3 -3
  112. package/esm2020/lib/core/layout/checkbox.mjs +3 -3
  113. package/esm2020/lib/core/layout/date-range.field.mjs +3 -3
  114. package/esm2020/lib/core/layout/date.field.mjs +3 -3
  115. package/esm2020/lib/core/layout/expression.field.mjs +3 -3
  116. package/esm2020/lib/core/layout/html.field.mjs +3 -3
  117. package/esm2020/lib/core/layout/input.base.mjs +3 -3
  118. package/esm2020/lib/core/layout/input.field.mjs +3 -3
  119. package/esm2020/lib/core/layout/layout.component.mjs +3 -3
  120. package/esm2020/lib/core/layout/numeric.field.mjs +3 -3
  121. package/esm2020/lib/core/layout/select.field.mjs +3 -3
  122. package/esm2020/lib/core/layout/switch.field.mjs +3 -3
  123. package/esm2020/lib/core/layout/textarea.field.mjs +3 -3
  124. package/esm2020/lib/core/layout/timespan.field.mjs +3 -3
  125. package/esm2020/lib/core/lottie-animation.mjs +3 -3
  126. package/esm2020/lib/core/mailbox.service.mjs +3 -3
  127. package/esm2020/lib/core/models.mjs +1 -1
  128. package/esm2020/lib/core/none.component.mjs +3 -3
  129. package/esm2020/lib/core/pipes/action.pipe.mjs +3 -3
  130. package/esm2020/lib/core/pipes/daterange.pipe.mjs +6 -6
  131. package/esm2020/lib/core/pipes/duration.pipe.mjs +3 -3
  132. package/esm2020/lib/core/pipes/form.pipe.mjs +3 -3
  133. package/esm2020/lib/core/pipes/join.pipe.mjs +3 -3
  134. package/esm2020/lib/core/pipes/role.pipe.mjs +3 -3
  135. package/esm2020/lib/core/pipes/sanitize-html.pipe.mjs +3 -3
  136. package/esm2020/lib/core/pipes/sort.pipe.mjs +6 -6
  137. package/esm2020/lib/core/pipes/state.pipe.mjs +3 -3
  138. package/esm2020/lib/core/pipes/translate.pipe.mjs +3 -3
  139. package/esm2020/lib/core/pipes/type-value.pipe.mjs +3 -3
  140. package/esm2020/lib/core/pipes/user-name.pipe.mjs +3 -3
  141. package/esm2020/lib/core/popup/popup.component.mjs +3 -3
  142. package/esm2020/lib/core/popup/popup.service.mjs +3 -3
  143. package/esm2020/lib/core/popup/tooltip.directive.mjs +6 -6
  144. package/esm2020/lib/core/prompt/ask/ask.dialog.mjs +3 -3
  145. package/esm2020/lib/core/prompt/mask/mask.component.mjs +3 -3
  146. package/esm2020/lib/core/prompt.service.mjs +3 -3
  147. package/esm2020/lib/core/router.mjs +6 -6
  148. package/esm2020/lib/core/session.service.mjs +3 -3
  149. package/esm2020/lib/core/slots/router.directive.mjs +3 -3
  150. package/esm2020/lib/core/slots/router.service.mjs +3 -3
  151. package/esm2020/lib/core/slots/slots.component.mjs +17 -19
  152. package/esm2020/lib/core/tagging/documents.component.mjs +3 -3
  153. package/esm2020/lib/core/tagging/edit-input.component.mjs +3 -3
  154. package/esm2020/lib/core/tagging/emoji.component.mjs +3 -3
  155. package/esm2020/lib/core/tagging/tagging-item.directive.mjs +3 -3
  156. package/esm2020/lib/core/tagging/tagging.component-base.mjs +3 -3
  157. package/esm2020/lib/core/tagging/tagging.directive.mjs +3 -3
  158. package/esm2020/lib/core/tagging/tagging.pipe.mjs +3 -3
  159. package/esm2020/lib/core/tagging/users.component.mjs +3 -3
  160. package/esm2020/lib/core/translate.service.mjs +15 -15
  161. package/esm2020/lib/core/window-title.service.mjs +3 -3
  162. package/esm2020/lib/cube/accum/accum.component.mjs +15 -9
  163. package/esm2020/lib/cube/chart/chart.component.mjs +10 -5
  164. package/esm2020/lib/cube/cube-info.service.mjs +3 -3
  165. package/esm2020/lib/cube/cube-menu.component.mjs +3 -3
  166. package/esm2020/lib/cube/cube-view.component.mjs +11 -8
  167. package/esm2020/lib/cube/cube.service.mjs +3 -3
  168. package/esm2020/lib/cube/declarations.mjs +1 -1
  169. package/esm2020/lib/cube/explore/document-item.component.mjs +3 -3
  170. package/esm2020/lib/cube/explore/explore-item.component.mjs +3 -3
  171. package/esm2020/lib/cube/explore/explore-items.component.mjs +3 -3
  172. package/esm2020/lib/cube/explore/explore.pane.component.mjs +3 -3
  173. package/esm2020/lib/cube/explore/item-resolver.service.mjs +6 -6
  174. package/esm2020/lib/cube/explore/item.pane.component.mjs +3 -3
  175. package/esm2020/lib/cube/filter/filter-tags.component.exp.mjs +3 -3
  176. package/esm2020/lib/cube/filter/filter.component.mjs +3 -3
  177. package/esm2020/lib/cube/grid/grid.component.mjs +21 -9
  178. package/esm2020/lib/cube/grid/spreadsheet.component.mjs +115 -109
  179. package/esm2020/lib/cube/matrix/matrix.base.mjs +3 -3
  180. package/esm2020/lib/cube/matrix/matrix.component.mjs +3 -3
  181. package/esm2020/lib/cube/matrix/matrix.mobile.component.mjs +3 -3
  182. package/esm2020/lib/cube/matrix/matrix.pane.component.mjs +3 -3
  183. package/esm2020/lib/cube/matrix/table.component.mjs +7 -7
  184. package/esm2020/lib/cube/parallel/parallel.component.mjs +3 -3
  185. package/esm2020/lib/cube/pivot/pivot.component.mjs +6 -6
  186. package/esm2020/lib/cube/sum/sum.component.mjs +3 -3
  187. package/esm2020/lib/cube/view-base.mjs +3 -3
  188. package/esm2020/lib/cube/view.mobile.component.mjs +3 -3
  189. package/esm2020/lib/cube/view.pane.component.mjs +4 -4
  190. package/esm2020/lib/dashboard/actions/actions.widget.mjs +3 -3
  191. package/esm2020/lib/dashboard/cube/accum-cube.widget.mjs +5 -5
  192. package/esm2020/lib/dashboard/cube/cube-analysis.base.mjs +4 -4
  193. package/esm2020/lib/dashboard/cube/cube-analysis.widget.mjs +3 -3
  194. package/esm2020/lib/dashboard/cube/cube-chart.widget.mjs +3 -3
  195. package/esm2020/lib/dashboard/cube/documents.widget.mjs +3 -3
  196. package/esm2020/lib/dashboard/cube/filter/filter.component.mjs +3 -3
  197. package/esm2020/lib/dashboard/dashboard.component.mjs +3 -3
  198. package/esm2020/lib/dashboard/dashboard.pane.component.mjs +3 -3
  199. package/esm2020/lib/dashboard/recents/recents.widget.mjs +3 -3
  200. package/esm2020/lib/dashboard/score/activity.widget.mjs +3 -3
  201. package/esm2020/lib/dashboard/score/compare-departments.widget.mjs +3 -3
  202. package/esm2020/lib/dashboard/score/peers-performance.widget.mjs +3 -3
  203. package/esm2020/lib/dashboard/score/pending-results.widget.mjs +3 -3
  204. package/esm2020/lib/dashboard/score/personal-score.widget.mjs +3 -3
  205. package/esm2020/lib/dashboard/widget-item.component.mjs +3 -3
  206. package/esm2020/lib/desktop.module.mjs +4 -4
  207. package/esm2020/lib/home/about/about.dialog.mjs +3 -3
  208. package/esm2020/lib/home/home-base.component.mjs +5 -4
  209. package/esm2020/lib/home/home.desktop.component.mjs +5 -5
  210. package/esm2020/lib/home/home.mobile.component.mjs +5 -5
  211. package/esm2020/lib/home/notifications/notifications.component.mjs +3 -3
  212. package/esm2020/lib/home/options/options.component.mjs +3 -3
  213. package/esm2020/lib/home/outofoffice/outofoffice.component.mjs +3 -3
  214. package/esm2020/lib/home/search.service.mjs +3 -3
  215. package/esm2020/lib/home/sign/sign.component.mjs +3 -3
  216. package/esm2020/lib/home/tools.component.mjs +3 -3
  217. package/esm2020/lib/impersonate/impersonate.component.mjs +3 -3
  218. package/esm2020/lib/mobile.module.mjs +4 -4
  219. package/esm2020/lib/modules/chart.module.mjs +4 -4
  220. package/esm2020/lib/modules/circular-gauge.module.mjs +4 -4
  221. package/esm2020/lib/modules/diagram.module.mjs +4 -4
  222. package/esm2020/lib/modules/grid.module.mjs +4 -4
  223. package/esm2020/lib/modules/material.module.mjs +4 -4
  224. package/esm2020/lib/modules/pivot.module.mjs +4 -4
  225. package/esm2020/lib/modules/schedule.module.mjs +4 -4
  226. package/esm2020/lib/modules/spreadsheet.module.mjs +4 -4
  227. package/esm2020/lib/notifications/filter.component.mjs +3 -3
  228. package/esm2020/lib/notifications/notifications-table.component.mjs +3 -3
  229. package/esm2020/lib/notifications/notifications.mobile.component.mjs +3 -3
  230. package/esm2020/lib/notifications/notifications.pane.component.mjs +3 -3
  231. package/esm2020/lib/notifications/notifications.service.mjs +3 -3
  232. package/esm2020/lib/notifications/types/commented.notification.mjs +3 -3
  233. package/esm2020/lib/notifications/types/cube-anomaly.notification.mjs +3 -3
  234. package/esm2020/lib/notifications/types/escalated.notification.mjs +3 -3
  235. package/esm2020/lib/notifications/types/liked.notification.mjs +3 -3
  236. package/esm2020/lib/notifications/types/long-running-task.notification.mjs +3 -3
  237. package/esm2020/lib/notifications/types/notification-base.mjs +3 -3
  238. package/esm2020/lib/notifications/types/nudge.notification.mjs +3 -3
  239. package/esm2020/lib/notifications/types/state-changed.notification.mjs +3 -3
  240. package/esm2020/lib/notifications/types/tagged.notification.mjs +3 -3
  241. package/esm2020/lib/notifications/types/text.notification.mjs +3 -3
  242. package/esm2020/lib/notifications/types/upcoming-event.notification.mjs +3 -3
  243. package/esm2020/lib/options/options.component.mjs +3 -3
  244. package/esm2020/lib/options/options.service.mjs +3 -3
  245. package/esm2020/lib/reports/arguments-component.mjs +3 -3
  246. package/esm2020/lib/reports/cube/grid-documents.component.mjs +3 -3
  247. package/esm2020/lib/reports/cube/table-documents.component.mjs +3 -3
  248. package/esm2020/lib/reports/cube/usage-args.component.mjs +3 -3
  249. package/esm2020/lib/reports/cube/usage-base.mjs +3 -3
  250. package/esm2020/lib/reports/cube/usage-chart.component.mjs +3 -3
  251. package/esm2020/lib/reports/cube/usage-pivot.component.mjs +3 -3
  252. package/esm2020/lib/reports/report-viewer.component.mjs +3 -3
  253. package/esm2020/lib/reports/report.mobile.component.mjs +3 -3
  254. package/esm2020/lib/reports/report.pane.component.mjs +3 -3
  255. package/esm2020/lib/reports/reports-menu.component.mjs +3 -3
  256. package/esm2020/lib/reports/substitution/substitution.component.mjs +3 -3
  257. package/esm2020/lib/reports/table/table-view.component.mjs +3 -3
  258. package/esm2020/lib/reports/tasks/tasks.component.mjs +3 -3
  259. package/esm2020/lib/routes.desktop.mjs +8 -8
  260. package/esm2020/lib/scheduler/schedule.component.mjs +3 -3
  261. package/esm2020/lib/scheduler/scheduler.mobile.component.mjs +3 -3
  262. package/esm2020/lib/scheduler/scheduler.pane.component.mjs +3 -3
  263. package/esm2020/lib/shared.module.mjs +4 -4
  264. package/esm2020/lib/system.module.mjs +4 -4
  265. package/esm2020/lib/views/cube/chart.component.mjs +3 -3
  266. package/esm2020/lib/views/cube/cube-base.mjs +3 -3
  267. package/esm2020/lib/views/cube/explore.component.mjs +3 -3
  268. package/esm2020/lib/views/cube/matrix.component.mjs +8 -8
  269. package/esm2020/lib/views/cube/parallel.component.mjs +3 -3
  270. package/esm2020/lib/views/cube/pivot.component.mjs +3 -3
  271. package/esm2020/lib/views/cube/sum.component.mjs +3 -3
  272. package/esm2020/lib/views/cube/view.component.mjs +3 -3
  273. package/esm2020/lib/views/timeline/timeline.component.exp.mjs +3 -3
  274. package/esm2020/lib/views/view-item.component.mjs +3 -3
  275. package/esm2020/lib/views/views.component.mjs +3 -3
  276. package/esm2020/lib/views/views.mobile.component.mjs +3 -3
  277. package/esm2020/lib/views/views.pane.component.mjs +3 -3
  278. package/fesm2015/bizdoc-core.mjs +1221 -1084
  279. package/fesm2015/bizdoc-core.mjs.map +1 -1
  280. package/fesm2020/bizdoc-core.mjs +1216 -1083
  281. package/fesm2020/bizdoc-core.mjs.map +1 -1
  282. package/lib/admin/positions/positions.component.d.ts +11 -3
  283. package/lib/browse/browse-items.component.d.ts +1 -1
  284. package/lib/compose/attachments/preview/attachment-preview.component.d.ts +3 -1
  285. package/lib/compose/compose.pane.component.d.ts +1 -0
  286. package/lib/compose/document.component.d.ts +2 -4
  287. package/lib/compose/form-ref.d.ts +1 -3
  288. package/lib/compose/version-compare/version-compare.component.d.ts +2 -4
  289. package/lib/core/configuration.d.ts +3 -0
  290. package/lib/core/models.d.ts +2 -2
  291. package/lib/core/slots/slots.component.d.ts +1 -2
  292. package/lib/cube/accum/accum.component.d.ts +1 -1
  293. package/lib/cube/chart/chart.component.d.ts +1 -1
  294. package/lib/cube/cube-view.component.d.ts +3 -1
  295. package/lib/cube/declarations.d.ts +1 -0
  296. package/lib/cube/grid/grid.component.d.ts +8 -4
  297. package/lib/cube/grid/spreadsheet.component.d.ts +10 -4
  298. package/lib/cube/matrix/table.component.d.ts +1 -1
  299. package/lib/cube/pivot/pivot.component.d.ts +1 -1
  300. package/lib/dashboard/cube/accum-cube.widget.d.ts +2 -2
  301. package/lib/dashboard/cube/cube-analysis.base.d.ts +0 -4
  302. package/lib/home/home-base.component.d.ts +1 -0
  303. package/lib/views/cube/matrix.component.d.ts +2 -2
  304. package/package.json +9 -9
@@ -38,9 +38,9 @@ export class HtmlSimplePipe {
38
38
  return value.replace(HTML_EXP, '');
39
39
  }
40
40
  }
41
- HtmlSimplePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: HtmlSimplePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
42
- HtmlSimplePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: HtmlSimplePipe, name: "htmlToText" });
43
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: HtmlSimplePipe, decorators: [{
41
+ HtmlSimplePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: HtmlSimplePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
42
+ HtmlSimplePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: HtmlSimplePipe, name: "htmlToText" });
43
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: HtmlSimplePipe, decorators: [{
44
44
  type: Pipe,
45
45
  args: [{ name: 'htmlToText' }]
46
46
  }] });
@@ -91,9 +91,9 @@ export class ContactsComponent {
91
91
  this._destroy.complete();
92
92
  }
93
93
  }
94
- ContactsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ContactsComponent, deps: [{ token: i1.ChatService }, { token: i2.PromptService }, { token: i3.SessionService }, { token: i4.AccountService }, { token: i0.ChangeDetectorRef }, { token: i5.HubService }], target: i0.ɵɵFactoryTarget.Component });
95
- ContactsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: ContactsComponent, selector: "bizdoc-contacts", outputs: { selected: "selected" }, ngImport: i0, template: " <!-- search -->\r\n<mat-form-field floatLabel=\"never\" class=\"search\">\r\n <input type=\"search\" matInput [formControl]=\"searchControl\" [matAutocomplete]=\"user\" placeholder=\"{{'SearchContacts' | translate}}\" />\r\n <button mat-button *ngIf=\"searchControl.value\" matSuffix mat-icon-button aria-label=\"\" (click)=\"searchControl.setValue('')\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n <mat-autocomplete #user (optionSelected)=\"optionSelected($event)\">\r\n <mat-option *ngFor=\"let u of users$ | async\" [value]=\"u.id\">\r\n {{u.name}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n</mat-form-field>\r\n<!-- contacts -->\r\n<mat-nav-list>\r\n <mat-list-item *ngFor=\"let c of contacts |filter:'forgotten':undefined| sort : 'time' : 'desc'\" (click)=\"open(c)\" [class.read]=\"c.visited>=c.time\">\r\n <bizdoc-avatar [person]=\"c\" *ngIf=\"c.name\" [interactive]=\"false\"></bizdoc-avatar>\r\n <h3 matLine>\r\n {{c.nick || c.name}}\r\n </h3>\r\n <div matLine>\r\n <div class=\"chat-text\" [innerText]=\"c.text | htmlToText\"></div>\r\n </div>\r\n <p matLine>\r\n <small [bizdocTooltip]=\"c.time | amCalendar\">{{c.time | amTimeAgo}}</small>\r\n <small *ngIf=\"!c.accepted\">\r\n {{'You' | translate }}\r\n </small>\r\n <mat-icon *ngIf=\"!c.accepted && c.watermark>=c.time\" class=\"watermark\">done_all</mat-icon>\r\n </p>\r\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" (click)=\"$event.stopPropagation()\" class=\"tool\">\r\n <mat-icon [matBadge]=\"c.count\" [matBadgeHidden]=\"!c.count\" matBadgeSize=\"medium\" matBadgeColor=\"accent\" matBadgePosition=\"before\" matBadgeOverlap=\"false\">more_vert</mat-icon>\r\n </button>\r\n <mat-menu #menu>\r\n <button mat-menu-item (click)=\"forget(c)\">{{'Forget'|translate}}</button>\r\n </mat-menu>\r\n </mat-list-item>\r\n</mat-nav-list>\r\n", styles: [":host{display:flex;flex-direction:column}.search{padding:8px 8px 0;animation:width ease-in-out 1}.search.collapse{width:0}mat-nav-list{flex:1 1 auto;overflow:auto}mat-nav-list mat-list-item .chat-text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:150px;display:block}mat-nav-list mat-list-item .watermark{width:16px;height:16px;font-size:16px}mat-nav-list mat-list-item .tool{opacity:0}mat-nav-list mat-list-item:hover .tool{opacity:1}\n"], components: [{ type: i6.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i7.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: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i9.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i10.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i11.MatNavList, selector: "mat-nav-list", inputs: ["disableRipple", "disabled"], exportAs: ["matNavList"] }, { type: i11.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["disableRipple", "disabled"], exportAs: ["matListItem"] }, { type: i12.AvatarComponent, selector: "bizdoc-avatar", inputs: ["person", "interactive", "dense"] }, { type: i13.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i13.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }], directives: [{ type: i14.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i15.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: i9.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i15.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i15.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i16.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.MatSuffix, selector: "[matSuffix]" }, { type: i16.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.MatLine, selector: "[mat-line], [matLine]" }, { type: i17.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i13.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i18.MatBadge, selector: "[matBadge]", inputs: ["matBadgeDisabled", "matBadgeColor", "matBadgeOverlap", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }], pipes: { "translate": i19.TranslatePipe, "async": i16.AsyncPipe, "sort": i20.ArraySortPipe, "filter": i20.FilterPipe, "htmlToText": HtmlSimplePipe, "amCalendar": i21.CalendarPipe, "amTimeAgo": i21.TimeAgoPipe } });
96
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ContactsComponent, decorators: [{
94
+ ContactsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: ContactsComponent, deps: [{ token: i1.ChatService }, { token: i2.PromptService }, { token: i3.SessionService }, { token: i4.AccountService }, { token: i0.ChangeDetectorRef }, { token: i5.HubService }], target: i0.ɵɵFactoryTarget.Component });
95
+ ContactsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: ContactsComponent, selector: "bizdoc-contacts", outputs: { selected: "selected" }, ngImport: i0, template: " <!-- search -->\r\n<mat-form-field floatLabel=\"never\" class=\"search\">\r\n <input type=\"search\" matInput [formControl]=\"searchControl\" [matAutocomplete]=\"user\" placeholder=\"{{'SearchContacts' | translate}}\" />\r\n <button mat-button *ngIf=\"searchControl.value\" matSuffix mat-icon-button aria-label=\"\" (click)=\"searchControl.setValue('')\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n <mat-autocomplete #user (optionSelected)=\"optionSelected($event)\">\r\n <mat-option *ngFor=\"let u of users$ | async\" [value]=\"u.id\">\r\n {{u.name}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n</mat-form-field>\r\n<!-- contacts -->\r\n<mat-nav-list>\r\n <mat-list-item *ngFor=\"let c of contacts |filter:'forgotten':undefined| sort : 'time' : 'desc'\" (click)=\"open(c)\" [class.read]=\"c.visited>=c.time\">\r\n <bizdoc-avatar [person]=\"c\" *ngIf=\"c.name\" [interactive]=\"false\"></bizdoc-avatar>\r\n <h3 matLine>\r\n {{c.nick || c.name}}\r\n </h3>\r\n <div matLine>\r\n <div class=\"chat-text\" [innerText]=\"c.text | htmlToText\"></div>\r\n </div>\r\n <p matLine>\r\n <small [bizdocTooltip]=\"c.time | amCalendar\">{{c.time | amTimeAgo}}</small>\r\n <small *ngIf=\"!c.accepted\">\r\n {{'You' | translate }}\r\n </small>\r\n <mat-icon *ngIf=\"!c.accepted && c.watermark>=c.time\" class=\"watermark\">done_all</mat-icon>\r\n </p>\r\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" (click)=\"$event.stopPropagation()\" class=\"tool\">\r\n <mat-icon [matBadge]=\"c.count\" [matBadgeHidden]=\"!c.count\" matBadgeSize=\"medium\" matBadgeColor=\"accent\" matBadgePosition=\"before\" matBadgeOverlap=\"false\">more_vert</mat-icon>\r\n </button>\r\n <mat-menu #menu>\r\n <button mat-menu-item (click)=\"forget(c)\">{{'Forget'|translate}}</button>\r\n </mat-menu>\r\n </mat-list-item>\r\n</mat-nav-list>\r\n", styles: [":host{display:flex;flex-direction:column}.search{padding:8px 8px 0;animation:width ease-in-out 1}.search.collapse{width:0}mat-nav-list{flex:1 1 auto;overflow:auto}mat-nav-list mat-list-item .chat-text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:150px;display:block}mat-nav-list mat-list-item .watermark{width:16px;height:16px;font-size:16px}mat-nav-list mat-list-item .tool{opacity:0}mat-nav-list mat-list-item:hover .tool{opacity:1}\n"], components: [{ type: i6.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i7.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: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i9.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i10.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i11.MatNavList, selector: "mat-nav-list", inputs: ["disableRipple", "disabled"], exportAs: ["matNavList"] }, { type: i11.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["disableRipple", "disabled"], exportAs: ["matListItem"] }, { type: i12.AvatarComponent, selector: "bizdoc-avatar", inputs: ["person", "interactive", "dense"] }, { type: i13.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i13.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }], directives: [{ type: i14.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i15.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: i9.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i15.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i15.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i16.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.MatSuffix, selector: "[matSuffix]" }, { type: i16.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.MatLine, selector: "[mat-line], [matLine]" }, { type: i17.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i13.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i18.MatBadge, selector: "[matBadge]", inputs: ["matBadgeDisabled", "matBadgeColor", "matBadgeOverlap", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }], pipes: { "translate": i19.TranslatePipe, "async": i16.AsyncPipe, "sort": i20.ArraySortPipe, "filter": i20.FilterPipe, "htmlToText": HtmlSimplePipe, "amCalendar": i21.CalendarPipe, "amTimeAgo": i21.TimeAgoPipe } });
96
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: ContactsComponent, decorators: [{
97
97
  type: Component,
98
98
  args: [{ selector: 'bizdoc-contacts', template: " <!-- search -->\r\n<mat-form-field floatLabel=\"never\" class=\"search\">\r\n <input type=\"search\" matInput [formControl]=\"searchControl\" [matAutocomplete]=\"user\" placeholder=\"{{'SearchContacts' | translate}}\" />\r\n <button mat-button *ngIf=\"searchControl.value\" matSuffix mat-icon-button aria-label=\"\" (click)=\"searchControl.setValue('')\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n <mat-autocomplete #user (optionSelected)=\"optionSelected($event)\">\r\n <mat-option *ngFor=\"let u of users$ | async\" [value]=\"u.id\">\r\n {{u.name}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n</mat-form-field>\r\n<!-- contacts -->\r\n<mat-nav-list>\r\n <mat-list-item *ngFor=\"let c of contacts |filter:'forgotten':undefined| sort : 'time' : 'desc'\" (click)=\"open(c)\" [class.read]=\"c.visited>=c.time\">\r\n <bizdoc-avatar [person]=\"c\" *ngIf=\"c.name\" [interactive]=\"false\"></bizdoc-avatar>\r\n <h3 matLine>\r\n {{c.nick || c.name}}\r\n </h3>\r\n <div matLine>\r\n <div class=\"chat-text\" [innerText]=\"c.text | htmlToText\"></div>\r\n </div>\r\n <p matLine>\r\n <small [bizdocTooltip]=\"c.time | amCalendar\">{{c.time | amTimeAgo}}</small>\r\n <small *ngIf=\"!c.accepted\">\r\n {{'You' | translate }}\r\n </small>\r\n <mat-icon *ngIf=\"!c.accepted && c.watermark>=c.time\" class=\"watermark\">done_all</mat-icon>\r\n </p>\r\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" (click)=\"$event.stopPropagation()\" class=\"tool\">\r\n <mat-icon [matBadge]=\"c.count\" [matBadgeHidden]=\"!c.count\" matBadgeSize=\"medium\" matBadgeColor=\"accent\" matBadgePosition=\"before\" matBadgeOverlap=\"false\">more_vert</mat-icon>\r\n </button>\r\n <mat-menu #menu>\r\n <button mat-menu-item (click)=\"forget(c)\">{{'Forget'|translate}}</button>\r\n </mat-menu>\r\n </mat-list-item>\r\n</mat-nav-list>\r\n", styles: [":host{display:flex;flex-direction:column}.search{padding:8px 8px 0;animation:width ease-in-out 1}.search.collapse{width:0}mat-nav-list{flex:1 1 auto;overflow:auto}mat-nav-list mat-list-item .chat-text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:150px;display:block}mat-nav-list mat-list-item .watermark{width:16px;height:16px;font-size:16px}mat-nav-list mat-list-item .tool{opacity:0}mat-nav-list mat-list-item:hover .tool{opacity:1}\n"] }]
99
99
  }], ctorParameters: function () { return [{ type: i1.ChatService }, { type: i2.PromptService }, { type: i3.SessionService }, { type: i4.AccountService }, { type: i0.ChangeDetectorRef }, { type: i5.HubService }]; }, propDecorators: { selected: [{
@@ -15,9 +15,9 @@ export class ContactsPaneComponent {
15
15
  });
16
16
  }
17
17
  }
18
- ContactsPaneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ContactsPaneComponent, deps: [{ token: i1.PaneRef }, { token: i2.TranslateService }, { token: i3.PanesRouter }], target: i0.ɵɵFactoryTarget.Component });
19
- ContactsPaneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: ContactsPaneComponent, selector: "ng-component", host: { classAttribute: "pane" }, ngImport: i0, template: `<bizdoc-contacts (selected)="selected($event)"></bizdoc-contacts>`, isInline: true, components: [{ type: i4.ContactsComponent, selector: "bizdoc-contacts", outputs: ["selected"] }] });
20
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ContactsPaneComponent, decorators: [{
18
+ ContactsPaneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: ContactsPaneComponent, deps: [{ token: i1.PaneRef }, { token: i2.TranslateService }, { token: i3.PanesRouter }], target: i0.ɵɵFactoryTarget.Component });
19
+ ContactsPaneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: ContactsPaneComponent, selector: "ng-component", host: { classAttribute: "pane" }, ngImport: i0, template: `<bizdoc-contacts (selected)="selected($event)"></bizdoc-contacts>`, isInline: true, components: [{ type: i4.ContactsComponent, selector: "bizdoc-contacts", outputs: ["selected"] }] });
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: ContactsPaneComponent, decorators: [{
21
21
  type: Component,
22
22
  args: [{
23
23
  template: `<bizdoc-contacts (selected)="selected($event)"></bizdoc-contacts>`,
@@ -168,9 +168,9 @@ export class ConversationComponent {
168
168
  window.localStorage.setItem(this.profile.id, this._input.text);
169
169
  }
170
170
  }
171
- ConversationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ConversationComponent, deps: [{ token: BIZDOC_CONFIG }, { token: i1.ChatService }, { token: i2.HubService }, { token: i3.TranslateService }, { token: i4.AccountService }, { token: i5.PromptService }, { token: i0.ViewContainerRef }, { token: i6.Overlay }], target: i0.ɵɵFactoryTarget.Component });
172
- ConversationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: ConversationComponent, selector: "bizdoc-chat-conversation", inputs: { contact: "contact" }, viewQueries: [{ propertyName: "_input", first: true, predicate: EditInputComponent, descendants: true, static: true }, { propertyName: "conversationElement", first: true, predicate: ["conversation"], descendants: true, read: ElementRef, static: true }, { propertyName: "previewTemplate", first: true, predicate: ["previewTemplate"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div (wheel)=\"onScroll($event)\" class=\"chat-conversation\" #conversation>\r\n <bizdoc-none *ngIf=\"!items.length\" title=\"Chat\" icon=\"chat\"></bizdoc-none>\r\n\r\n <ng-container *ngFor=\"let item of items; let i = index; trackBy: trackBy\">\r\n <div class=\"chat-item\" [class.you]=\"item.userId!==contact.id\">\r\n <div class=\"chat-text\" [innerHTML]=\"item.text|taggingHtml:item.resource\"></div>\r\n <img *ngIf=\"item.image\" [src]=\"'data:image/png;base64,'+item.image\" alt=\"\" (click)=\"preview(item)\" />\r\n <div class=\"chat-info\" *ngIf=\"(i===items.length - 1)||item.userId!==items[i+1].userId\">\r\n <small>\r\n <bizdoc-identity-name [identity]=\"item.userId\" chating=\"none\">\r\n </bizdoc-identity-name>\r\n </small>\r\n <span class=\"divider\"></span>\r\n <small class=\"chat-time\" [bizdocTooltip]=\"item.time | amDateFormat: 'lll'\">{{item.time | amCalendar : null : CALENDAR_SPEC }}</small>\r\n </div>\r\n </div>\r\n <div class=\"chat-watermark\" *ngIf=\"watermark && ((i<items.length - 1 && items[i+1].time>watermark&&item.time<=watermark)||(i===items.length - 1 &&item.time<=watermark))\">\r\n <mat-icon [bizdocTooltip]=\"'Watched' | translate : (watermark | amTimeAgo)\">done_all</mat-icon>\r\n </div>\r\n </ng-container>\r\n</div>\r\n<div class=\"chat-typing\" [style.visibility]=\"typing ? 'visible':'hidden'\" [innerHTML]=\"(profile?.gender === 'Male' ? 'TypingMale' : profile?.gender === 'Female' ? 'TypingFemale' : 'Typing') | translate : (profile?.nick || profile?.name)\"></div>\r\n\r\n<bizdoc-edit-text (ok)=\"send($event)\" (focus)=\"onFocus()\"\r\n (focusout)=\"onBlur()\" [disabled]=\"sending\" (change)=\"_textChange.next()\"></bizdoc-edit-text>\r\n<ng-template #previewTemplate let-item=\"item\">\r\n <img [src]=\"'data:image/png;base64,'+item.image\" alt=\"\" />\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column;flex:1 auto;overflow-y:auto}.chat-conversation{flex:1 1 auto;overflow-y:auto;overflow-x:hidden;padding:0 4px}\n"], components: [{ type: i7.NoneComponent, selector: "bizdoc-none", inputs: ["title", "subtitle", "icon"] }, { type: i8.IdentityName, selector: "bizdoc-identity-name", inputs: ["identity", "by", "chating"] }, { type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i10.EditInputComponent, selector: "bizdoc-edit-text", inputs: ["placeholder", "text", "image", "resource", "disabled", "autofocus", "cache"], outputs: ["change", "ok", "focus", "blur"] }], directives: [{ type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i11.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i12.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }], pipes: { "taggingHtml": i13.TaggingPipe, "amDateFormat": i14.DateFormatPipe, "amCalendar": i14.CalendarPipe, "translate": i15.TranslatePipe, "amTimeAgo": i14.TimeAgoPipe } });
173
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ConversationComponent, decorators: [{
171
+ ConversationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: ConversationComponent, deps: [{ token: BIZDOC_CONFIG }, { token: i1.ChatService }, { token: i2.HubService }, { token: i3.TranslateService }, { token: i4.AccountService }, { token: i5.PromptService }, { token: i0.ViewContainerRef }, { token: i6.Overlay }], target: i0.ɵɵFactoryTarget.Component });
172
+ ConversationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: ConversationComponent, selector: "bizdoc-chat-conversation", inputs: { contact: "contact" }, viewQueries: [{ propertyName: "_input", first: true, predicate: EditInputComponent, descendants: true, static: true }, { propertyName: "conversationElement", first: true, predicate: ["conversation"], descendants: true, read: ElementRef, static: true }, { propertyName: "previewTemplate", first: true, predicate: ["previewTemplate"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div (wheel)=\"onScroll($event)\" class=\"chat-conversation\" #conversation>\r\n <bizdoc-none *ngIf=\"!items.length\" title=\"Chat\" icon=\"chat\"></bizdoc-none>\r\n\r\n <ng-container *ngFor=\"let item of items; let i = index; trackBy: trackBy\">\r\n <div class=\"chat-item\" [class.you]=\"item.userId!==contact.id\">\r\n <div class=\"chat-text\" [innerHTML]=\"item.text|taggingHtml:item.resource\"></div>\r\n <img *ngIf=\"item.image\" [src]=\"'data:image/png;base64,'+item.image\" alt=\"\" (click)=\"preview(item)\" />\r\n <div class=\"chat-info\" *ngIf=\"(i===items.length - 1)||item.userId!==items[i+1].userId\">\r\n <small>\r\n <bizdoc-identity-name [identity]=\"item.userId\" chating=\"none\">\r\n </bizdoc-identity-name>\r\n </small>\r\n <span class=\"divider\"></span>\r\n <small class=\"chat-time\" [bizdocTooltip]=\"item.time | amDateFormat: 'lll'\">{{item.time | amCalendar : null : CALENDAR_SPEC }}</small>\r\n </div>\r\n </div>\r\n <div class=\"chat-watermark\" *ngIf=\"watermark && ((i<items.length - 1 && items[i+1].time>watermark&&item.time<=watermark)||(i===items.length - 1 &&item.time<=watermark))\">\r\n <mat-icon [bizdocTooltip]=\"'Watched' | translate : (watermark | amTimeAgo)\">done_all</mat-icon>\r\n </div>\r\n </ng-container>\r\n</div>\r\n<div class=\"chat-typing\" [style.visibility]=\"typing ? 'visible':'hidden'\" [innerHTML]=\"(profile?.gender === 'Male' ? 'TypingMale' : profile?.gender === 'Female' ? 'TypingFemale' : 'Typing') | translate : (profile?.nick || profile?.name)\"></div>\r\n\r\n<bizdoc-edit-text (ok)=\"send($event)\" (focus)=\"onFocus()\"\r\n (focusout)=\"onBlur()\" [disabled]=\"sending\" (change)=\"_textChange.next()\"></bizdoc-edit-text>\r\n<ng-template #previewTemplate let-item=\"item\">\r\n <img [src]=\"'data:image/png;base64,'+item.image\" alt=\"\" />\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column;flex:1 auto;overflow-y:auto}.chat-conversation{flex:1 1 auto;overflow-y:auto;overflow-x:hidden;padding:0 4px}\n"], components: [{ type: i7.NoneComponent, selector: "bizdoc-none", inputs: ["title", "subtitle", "icon"] }, { type: i8.IdentityName, selector: "bizdoc-identity-name", inputs: ["identity", "by", "chating"] }, { type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i10.EditInputComponent, selector: "bizdoc-edit-text", inputs: ["placeholder", "text", "image", "resource", "disabled", "autofocus", "cache"], outputs: ["change", "ok", "focus", "blur"] }], directives: [{ type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i11.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i12.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }], pipes: { "taggingHtml": i13.TaggingPipe, "amDateFormat": i14.DateFormatPipe, "amCalendar": i14.CalendarPipe, "translate": i15.TranslatePipe, "amTimeAgo": i14.TimeAgoPipe } });
173
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: ConversationComponent, decorators: [{
174
174
  type: Component,
175
175
  args: [{ selector: 'bizdoc-chat-conversation', template: "<div (wheel)=\"onScroll($event)\" class=\"chat-conversation\" #conversation>\r\n <bizdoc-none *ngIf=\"!items.length\" title=\"Chat\" icon=\"chat\"></bizdoc-none>\r\n\r\n <ng-container *ngFor=\"let item of items; let i = index; trackBy: trackBy\">\r\n <div class=\"chat-item\" [class.you]=\"item.userId!==contact.id\">\r\n <div class=\"chat-text\" [innerHTML]=\"item.text|taggingHtml:item.resource\"></div>\r\n <img *ngIf=\"item.image\" [src]=\"'data:image/png;base64,'+item.image\" alt=\"\" (click)=\"preview(item)\" />\r\n <div class=\"chat-info\" *ngIf=\"(i===items.length - 1)||item.userId!==items[i+1].userId\">\r\n <small>\r\n <bizdoc-identity-name [identity]=\"item.userId\" chating=\"none\">\r\n </bizdoc-identity-name>\r\n </small>\r\n <span class=\"divider\"></span>\r\n <small class=\"chat-time\" [bizdocTooltip]=\"item.time | amDateFormat: 'lll'\">{{item.time | amCalendar : null : CALENDAR_SPEC }}</small>\r\n </div>\r\n </div>\r\n <div class=\"chat-watermark\" *ngIf=\"watermark && ((i<items.length - 1 && items[i+1].time>watermark&&item.time<=watermark)||(i===items.length - 1 &&item.time<=watermark))\">\r\n <mat-icon [bizdocTooltip]=\"'Watched' | translate : (watermark | amTimeAgo)\">done_all</mat-icon>\r\n </div>\r\n </ng-container>\r\n</div>\r\n<div class=\"chat-typing\" [style.visibility]=\"typing ? 'visible':'hidden'\" [innerHTML]=\"(profile?.gender === 'Male' ? 'TypingMale' : profile?.gender === 'Female' ? 'TypingFemale' : 'Typing') | translate : (profile?.nick || profile?.name)\"></div>\r\n\r\n<bizdoc-edit-text (ok)=\"send($event)\" (focus)=\"onFocus()\"\r\n (focusout)=\"onBlur()\" [disabled]=\"sending\" (change)=\"_textChange.next()\"></bizdoc-edit-text>\r\n<ng-template #previewTemplate let-item=\"item\">\r\n <img [src]=\"'data:image/png;base64,'+item.image\" alt=\"\" />\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column;flex:1 auto;overflow-y:auto}.chat-conversation{flex:1 1 auto;overflow-y:auto;overflow-x:hidden;padding:0 4px}\n"] }]
176
176
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
@@ -27,9 +27,9 @@ export class ConversationPaneComponent {
27
27
  this._destroy.complete();
28
28
  }
29
29
  }
30
- ConversationPaneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ConversationPaneComponent, deps: [{ token: i1.PaneRef }, { token: i2.TranslateService }, { token: i3.AccountService }, { token: i4.ChatService }, { token: i5.SessionService }], target: i0.ɵɵFactoryTarget.Component });
31
- ConversationPaneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: ConversationPaneComponent, selector: "ng-component", host: { classAttribute: "pane" }, ngImport: i0, template: '<bizdoc-chat-conversation [contact]=contact></bizdoc-chat-conversation>', isInline: true, styles: [":host{min-width:320px}\n"], components: [{ type: i6.ConversationComponent, selector: "bizdoc-chat-conversation", inputs: ["contact"] }] });
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ConversationPaneComponent, decorators: [{
30
+ ConversationPaneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: ConversationPaneComponent, deps: [{ token: i1.PaneRef }, { token: i2.TranslateService }, { token: i3.AccountService }, { token: i4.ChatService }, { token: i5.SessionService }], target: i0.ɵɵFactoryTarget.Component });
31
+ ConversationPaneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: ConversationPaneComponent, selector: "ng-component", host: { classAttribute: "pane" }, ngImport: i0, template: '<bizdoc-chat-conversation [contact]=contact></bizdoc-chat-conversation>', isInline: true, styles: [":host{min-width:320px}\n"], components: [{ type: i6.ConversationComponent, selector: "bizdoc-chat-conversation", inputs: ["contact"] }] });
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: ConversationPaneComponent, decorators: [{
33
33
  type: Component,
34
34
  args: [{
35
35
  template: '<bizdoc-chat-conversation [contact]=contact></bizdoc-chat-conversation>',
@@ -95,9 +95,9 @@ export class ActionPicker {
95
95
  }
96
96
  }
97
97
  }
98
- ActionPicker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ActionPicker, deps: [{ token: DOCUMENT_MODEL }, { token: i1.SessionService }, { token: i2.MailboxService }, { token: i3.MatDialog }, { token: i4.PromptService }], target: i0.ɵɵFactoryTarget.Component });
99
- ActionPicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: ActionPicker, selector: "bizdoc-action-picker", inputs: { working: "working" }, outputs: { workingChange: "workingChange" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"actions.length\">\r\n <button mat-raised-button color=\"primary\" [attr.data-help]=\"'action-'+actions[0].name\" (click)=\"send(actions[0])\" [disabled]=\"working\">\r\n <span>{{actions[0].title}}</span>\r\n </button>\r\n &nbsp;\r\n <ng-container [ngSwitch]=\"actions.length\">\r\n <button mat-stroked-button [attr.data-help]=\"'action-'+actions[1].name\" *ngSwitchCase=\"2\" [disabled]=\"working\" (click)=\"send(actions[1])\">\r\n <span>{{actions[1].title}}</span>\r\n </button>\r\n <ng-container *ngSwitchDefault>\r\n <button mat-stroked-button data-help=\"send\" [matMenuTriggerFor]=\"actionMenu\" [disabled]=\"working\" [bizdocTooltip]=\"'Send' | translate\">\r\n <span>{{'Actions' | translate}}</span> <mat-icon>arrow_drop_down</mat-icon>\r\n </button>\r\n <!-- action -->\r\n <mat-menu #actionMenu>\r\n <ng-template matMenuContent>\r\n <ng-container *ngFor=\"let a of actions.slice(1); let i = index\">\r\n <mat-divider *ngIf=\"i > 1 && actions[i - 1].group !== a.group\"></mat-divider>\r\n <button mat-menu-item (click)=\"send(a)\">{{a.title}}</button>\r\n </ng-container>\r\n </ng-template>\r\n </mat-menu>\r\n </ng-container>\r\n </ng-container>\r\n</ng-container>\r\n", styles: [":host{display:flex;flex-direction:row}\n"], components: [{ type: i5.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: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i7.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i8.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { type: i7.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }], directives: [{ type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i9.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i9.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i7.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i10.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i7.MatMenuContent, selector: "ng-template[matMenuContent]" }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "translate": i11.TranslatePipe } });
100
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ActionPicker, decorators: [{
98
+ ActionPicker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: ActionPicker, deps: [{ token: DOCUMENT_MODEL }, { token: i1.SessionService }, { token: i2.MailboxService }, { token: i3.MatDialog }, { token: i4.PromptService }], target: i0.ɵɵFactoryTarget.Component });
99
+ ActionPicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: ActionPicker, selector: "bizdoc-action-picker", inputs: { working: "working" }, outputs: { workingChange: "workingChange" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"actions.length\">\r\n <button mat-raised-button color=\"primary\" [attr.data-help]=\"'action-'+actions[0].name\" (click)=\"send(actions[0])\" [disabled]=\"working\">\r\n <span>{{actions[0].title}}</span>\r\n </button>\r\n &nbsp;\r\n <ng-container [ngSwitch]=\"actions.length\">\r\n <button mat-stroked-button [attr.data-help]=\"'action-'+actions[1].name\" *ngSwitchCase=\"2\" [disabled]=\"working\" (click)=\"send(actions[1])\">\r\n <span>{{actions[1].title}}</span>\r\n </button>\r\n <ng-container *ngSwitchDefault>\r\n <button mat-stroked-button data-help=\"send\" [matMenuTriggerFor]=\"actionMenu\" [disabled]=\"working\" [bizdocTooltip]=\"'Send' | translate\">\r\n <span>{{'Actions' | translate}}</span> <mat-icon>arrow_drop_down</mat-icon>\r\n </button>\r\n <!-- action -->\r\n <mat-menu #actionMenu>\r\n <ng-template matMenuContent>\r\n <ng-container *ngFor=\"let a of actions.slice(1); let i = index\">\r\n <mat-divider *ngIf=\"i > 1 && actions[i - 1].group !== a.group\"></mat-divider>\r\n <button mat-menu-item (click)=\"send(a)\">{{a.title}}</button>\r\n </ng-container>\r\n </ng-template>\r\n </mat-menu>\r\n </ng-container>\r\n </ng-container>\r\n</ng-container>\r\n", styles: [":host{display:flex;flex-direction:row}\n"], components: [{ type: i5.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: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i7.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i8.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { type: i7.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }], directives: [{ type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i9.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i9.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i7.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i10.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i7.MatMenuContent, selector: "ng-template[matMenuContent]" }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "translate": i11.TranslatePipe } });
100
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: ActionPicker, decorators: [{
101
101
  type: Component,
102
102
  args: [{ selector: 'bizdoc-action-picker', template: "<ng-container *ngIf=\"actions.length\">\r\n <button mat-raised-button color=\"primary\" [attr.data-help]=\"'action-'+actions[0].name\" (click)=\"send(actions[0])\" [disabled]=\"working\">\r\n <span>{{actions[0].title}}</span>\r\n </button>\r\n &nbsp;\r\n <ng-container [ngSwitch]=\"actions.length\">\r\n <button mat-stroked-button [attr.data-help]=\"'action-'+actions[1].name\" *ngSwitchCase=\"2\" [disabled]=\"working\" (click)=\"send(actions[1])\">\r\n <span>{{actions[1].title}}</span>\r\n </button>\r\n <ng-container *ngSwitchDefault>\r\n <button mat-stroked-button data-help=\"send\" [matMenuTriggerFor]=\"actionMenu\" [disabled]=\"working\" [bizdocTooltip]=\"'Send' | translate\">\r\n <span>{{'Actions' | translate}}</span> <mat-icon>arrow_drop_down</mat-icon>\r\n </button>\r\n <!-- action -->\r\n <mat-menu #actionMenu>\r\n <ng-template matMenuContent>\r\n <ng-container *ngFor=\"let a of actions.slice(1); let i = index\">\r\n <mat-divider *ngIf=\"i > 1 && actions[i - 1].group !== a.group\"></mat-divider>\r\n <button mat-menu-item (click)=\"send(a)\">{{a.title}}</button>\r\n </ng-container>\r\n </ng-template>\r\n </mat-menu>\r\n </ng-container>\r\n </ng-container>\r\n</ng-container>\r\n", styles: [":host{display:flex;flex-direction:row}\n"] }]
103
103
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
@@ -46,9 +46,9 @@ export class ActionDialog {
46
46
  this._destroy.complete();
47
47
  }
48
48
  }
49
- ActionDialog.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ActionDialog, deps: [{ token: MAT_DIALOG_DATA }, { token: i1.SessionService }, { token: i2.BizDocComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Component });
50
- ActionDialog.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: ActionDialog, selector: "ng-component", viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<h2 mat-dialog-title>{{action.title}}</h2>\r\n<mat-dialog-content fxLayout=\"column\">\r\n <p *ngIf=\"!action.arguments.length\">\r\n {{ 'ActionAsk' | translate : (action.verb || action.title).toLowerCase() }}\r\n </p>\r\n <bizdoc-layout [fields]=\"action.arguments\"\r\n *ngIf=\"!action.template; else template\"\r\n [(model)]=\"arguments\"\r\n [(valid)]=\"valid\"></bizdoc-layout>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-button type=\"submit\" [disabled]=\"!valid\" [mat-dialog-close]=\"arguments\" color=\"primary\">{{'Yes'|translate}}</button>\r\n <button mat-button mat-dialog-close>{{'No' | translate}}</button>\r\n</mat-dialog-actions>\r\n<ng-template #template>\r\n <ngx-component-outlet [type]=\"comp\" [injector]=\"injector\" (create)=\"bind($event)\"></ngx-component-outlet>\r\n</ng-template>\r\n", styles: [":host ::ng-deep form{display:flex}\n"], components: [{ type: i3.LayoutComponent, selector: "bizdoc-layout", inputs: ["fields", "model", "dirty", "params", "valid"], outputs: ["modelChange", "dirtyChange", "validChange"] }, { type: i4.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: i5.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i5.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i6.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: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i5.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { type: i8.NgxComponentOutlet, selector: "ngx-component-outlet", inputs: ["type", "injector", "ngxComponentOutletContent"], outputs: ["create"] }], pipes: { "translate": i9.TranslatePipe } });
51
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ActionDialog, decorators: [{
49
+ ActionDialog.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: ActionDialog, deps: [{ token: MAT_DIALOG_DATA }, { token: i1.SessionService }, { token: i2.BizDocComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Component });
50
+ ActionDialog.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: ActionDialog, selector: "ng-component", viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<h2 mat-dialog-title>{{action.title}}</h2>\r\n<mat-dialog-content fxLayout=\"column\">\r\n <p *ngIf=\"!action.arguments.length\">\r\n {{ 'ActionAsk' | translate : (action.verb || action.title).toLowerCase() }}\r\n </p>\r\n <bizdoc-layout [fields]=\"action.arguments\"\r\n *ngIf=\"!action.template; else template\"\r\n [(model)]=\"arguments\"\r\n [(valid)]=\"valid\"></bizdoc-layout>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-button type=\"submit\" [disabled]=\"!valid\" [mat-dialog-close]=\"arguments\" color=\"primary\">{{'Yes'|translate}}</button>\r\n <button mat-button mat-dialog-close>{{'No' | translate}}</button>\r\n</mat-dialog-actions>\r\n<ng-template #template>\r\n <ngx-component-outlet [type]=\"comp\" [injector]=\"injector\" (create)=\"bind($event)\"></ngx-component-outlet>\r\n</ng-template>\r\n", styles: [":host ::ng-deep form{display:flex}\n"], components: [{ type: i3.LayoutComponent, selector: "bizdoc-layout", inputs: ["fields", "model", "dirty", "params", "valid"], outputs: ["modelChange", "dirtyChange", "validChange"] }, { type: i4.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: i5.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i5.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i6.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: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i5.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { type: i8.NgxComponentOutlet, selector: "ngx-component-outlet", inputs: ["type", "injector", "ngxComponentOutletContent"], outputs: ["create"] }], pipes: { "translate": i9.TranslatePipe } });
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: ActionDialog, decorators: [{
52
52
  type: Component,
53
53
  args: [{ template: "<h2 mat-dialog-title>{{action.title}}</h2>\r\n<mat-dialog-content fxLayout=\"column\">\r\n <p *ngIf=\"!action.arguments.length\">\r\n {{ 'ActionAsk' | translate : (action.verb || action.title).toLowerCase() }}\r\n </p>\r\n <bizdoc-layout [fields]=\"action.arguments\"\r\n *ngIf=\"!action.template; else template\"\r\n [(model)]=\"arguments\"\r\n [(valid)]=\"valid\"></bizdoc-layout>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-button type=\"submit\" [disabled]=\"!valid\" [mat-dialog-close]=\"arguments\" color=\"primary\">{{'Yes'|translate}}</button>\r\n <button mat-button mat-dialog-close>{{'No' | translate}}</button>\r\n</mat-dialog-actions>\r\n<ng-template #template>\r\n <ngx-component-outlet [type]=\"comp\" [injector]=\"injector\" (create)=\"bind($event)\"></ngx-component-outlet>\r\n</ng-template>\r\n", styles: [":host ::ng-deep form{display:flex}\n"] }]
54
54
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
@@ -45,9 +45,9 @@ export class ActionPaneDialog {
45
45
  this._destroy.complete();
46
46
  }
47
47
  }
48
- ActionPaneDialog.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ActionPaneDialog, deps: [{ token: i1.PaneRef }, { token: i2.BizDocComponentFactoryResolver }, { token: i0.ComponentFactoryResolver }, { token: i3.SessionService }], target: i0.ɵɵFactoryTarget.Component });
49
- ActionPaneDialog.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: ActionPaneDialog, selector: "bizdoc-action-dialog.pane", host: { classAttribute: "pane" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: "<h2 mat-dialog-title>{{action.title}}</h2>\r\n<mat-dialog-content>\r\n <p *ngIf=\"!action.arguments.length\">\r\n {{ 'ActionAsk' | translate : (action.verb || action.title).toLowerCase() }}\r\n </p>\r\n <ng-container #container>\r\n </ng-container>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-button type=\"submit\" [disabled]=\"!valid\" [mat-dialog-close]=\"arguments\" color=\"primary\" cdkFocusInitial>{{'Yes'|translate}}</button>\r\n <button mat-button mat-dialog-close>{{'No' | translate}}</button>\r\n</mat-dialog-actions>\r\n", styles: [":host ::ng-deep form{display:flex}\n"], components: [{ type: i4.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: i5.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i5.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i5.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }], pipes: { "translate": i7.TranslatePipe } });
50
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ActionPaneDialog, decorators: [{
48
+ ActionPaneDialog.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: ActionPaneDialog, deps: [{ token: i1.PaneRef }, { token: i2.BizDocComponentFactoryResolver }, { token: i0.ComponentFactoryResolver }, { token: i3.SessionService }], target: i0.ɵɵFactoryTarget.Component });
49
+ ActionPaneDialog.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: ActionPaneDialog, selector: "bizdoc-action-dialog.pane", host: { classAttribute: "pane" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: "<h2 mat-dialog-title>{{action.title}}</h2>\r\n<mat-dialog-content>\r\n <p *ngIf=\"!action.arguments.length\">\r\n {{ 'ActionAsk' | translate : (action.verb || action.title).toLowerCase() }}\r\n </p>\r\n <ng-container #container>\r\n </ng-container>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-button type=\"submit\" [disabled]=\"!valid\" [mat-dialog-close]=\"arguments\" color=\"primary\" cdkFocusInitial>{{'Yes'|translate}}</button>\r\n <button mat-button mat-dialog-close>{{'No' | translate}}</button>\r\n</mat-dialog-actions>\r\n", styles: [":host ::ng-deep form{display:flex}\n"], components: [{ type: i4.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: i5.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i5.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i5.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }], pipes: { "translate": i7.TranslatePipe } });
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: ActionPaneDialog, decorators: [{
51
51
  type: Component,
52
52
  args: [{ selector: 'bizdoc-action-dialog.pane', host: {
53
53
  class: 'pane'
@@ -41,15 +41,15 @@ let AssignActionComponent = class AssignActionComponent {
41
41
  this.form.controls['userId'].setValue(evt.option.value.id);
42
42
  }
43
43
  };
44
- AssignActionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: AssignActionComponent, deps: [{ token: i1.FormBuilder }, { token: i2.SessionService }, { token: i3.AccountService }], target: i0.ɵɵFactoryTarget.Component });
45
- AssignActionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: AssignActionComponent, selector: "ng-component", ngImport: i0, template: "<form autocomplete=\"off\" fxLayout=\"column\" [formGroup]=\"form\">\r\n <mat-form-field>\r\n <input matInput type=\"search\" [matAutocomplete]=\"auto\" cdkFocusInitial [placeholder]=\"'User'|translate\" required formControlName=userId/>\r\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"display\"\r\n (optionSelected)=\"change($event)\">\r\n <mat-option *ngFor=\"let u of users | async\" [value]=\"u\">{{u.name}}</mat-option>\r\n </mat-autocomplete>\r\n <mat-error *ngIf=\"form.controls.userId.hasError('required')\">{{'Required'|translate:('User'|translate)}}</mat-error>\r\n </mat-form-field>\r\n <mat-checkbox formControlName=fyi> {{ 'FYI' | translate }}</mat-checkbox>\r\n <mat-checkbox formControlName=forward> {{ 'Forward' | translate }}</mat-checkbox>\r\n <mat-form-field>\r\n <textarea matInput cdkTextareaAutosize formControlName=\"note\" [placeholder]=\"'Note'|translate\" maxlength=\"200\">\r\n </textarea>\r\n <mat-hint align=\"end\">{{form.controls['note'].value?.length || 0}} / {{200}}</mat-hint>\r\n </mat-form-field>\r\n</form>\r\n", components: [{ type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i7.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }], directives: [{ type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i8.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: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1.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: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.MatError, selector: "mat-error", inputs: ["id"] }, { type: i11.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }], pipes: { "translate": i12.TranslatePipe, "async": i10.AsyncPipe } });
44
+ AssignActionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: AssignActionComponent, deps: [{ token: i1.FormBuilder }, { token: i2.SessionService }, { token: i3.AccountService }], target: i0.ɵɵFactoryTarget.Component });
45
+ AssignActionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: AssignActionComponent, selector: "ng-component", ngImport: i0, template: "<form autocomplete=\"off\" fxLayout=\"column\" [formGroup]=\"form\">\r\n <mat-form-field>\r\n <input matInput type=\"search\" [matAutocomplete]=\"auto\" cdkFocusInitial [placeholder]=\"'User'|translate\" required formControlName=userId/>\r\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"display\"\r\n (optionSelected)=\"change($event)\">\r\n <mat-option *ngFor=\"let u of users | async\" [value]=\"u\">{{u.name}}</mat-option>\r\n </mat-autocomplete>\r\n <mat-error *ngIf=\"form.controls.userId.hasError('required')\">{{'Required'|translate:('User'|translate)}}</mat-error>\r\n </mat-form-field>\r\n <mat-checkbox formControlName=fyi> {{ 'FYI' | translate }}</mat-checkbox>\r\n <mat-checkbox formControlName=forward> {{ 'Forward' | translate }}</mat-checkbox>\r\n <mat-form-field>\r\n <textarea matInput cdkTextareaAutosize formControlName=\"note\" [placeholder]=\"'Note'|translate\" maxlength=\"200\">\r\n </textarea>\r\n <mat-hint align=\"end\">{{form.controls['note'].value?.length || 0}} / {{200}}</mat-hint>\r\n </mat-form-field>\r\n</form>\r\n", components: [{ type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i7.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }], directives: [{ type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i8.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: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1.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: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.MatError, selector: "mat-error", inputs: ["id"] }, { type: i11.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }], pipes: { "translate": i12.TranslatePipe, "async": i10.AsyncPipe } });
46
46
  AssignActionComponent = __decorate([
47
47
  BizDoc({
48
48
  selector: 'bizdoc-action-assign'
49
49
  })
50
50
  ], AssignActionComponent);
51
51
  export { AssignActionComponent };
52
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: AssignActionComponent, decorators: [{
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: AssignActionComponent, decorators: [{
53
53
  type: Component,
54
54
  args: [{ template: "<form autocomplete=\"off\" fxLayout=\"column\" [formGroup]=\"form\">\r\n <mat-form-field>\r\n <input matInput type=\"search\" [matAutocomplete]=\"auto\" cdkFocusInitial [placeholder]=\"'User'|translate\" required formControlName=userId/>\r\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"display\"\r\n (optionSelected)=\"change($event)\">\r\n <mat-option *ngFor=\"let u of users | async\" [value]=\"u\">{{u.name}}</mat-option>\r\n </mat-autocomplete>\r\n <mat-error *ngIf=\"form.controls.userId.hasError('required')\">{{'Required'|translate:('User'|translate)}}</mat-error>\r\n </mat-form-field>\r\n <mat-checkbox formControlName=fyi> {{ 'FYI' | translate }}</mat-checkbox>\r\n <mat-checkbox formControlName=forward> {{ 'Forward' | translate }}</mat-checkbox>\r\n <mat-form-field>\r\n <textarea matInput cdkTextareaAutosize formControlName=\"note\" [placeholder]=\"'Note'|translate\" maxlength=\"200\">\r\n </textarea>\r\n <mat-hint align=\"end\">{{form.controls['note'].value?.length || 0}} / {{200}}</mat-hint>\r\n </mat-form-field>\r\n</form>\r\n" }]
55
55
  }], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.SessionService }, { type: i3.AccountService }]; } });
@@ -31,15 +31,15 @@ let ReturnActionComponent = class ReturnActionComponent {
31
31
  this.recipients.splice(0, 0, r));
32
32
  }
33
33
  };
34
- ReturnActionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ReturnActionComponent, deps: [{ token: i1.FormBuilder }, { token: i2.ActionRef }, { token: i3.SessionService }, { token: i4.AccountService }], target: i0.ɵɵFactoryTarget.Component });
35
- ReturnActionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: ReturnActionComponent, selector: "ng-component", ngImport: i0, template: "<form autocomplete=\"off\" fxLayout=\"column\" [formGroup]=\"form\">\r\n <mat-form-field>\r\n <mat-select formControlName=\"recipientId\" cdkFocusInitial [placeholder]=\"'User'|translate\" required>\r\n <mat-option *ngFor=\"let r of recipients\" [value]=\"r.id\">{{r.userId | userName | async }}</mat-option>\r\n </mat-select>\r\n <mat-error *ngIf=\"form.controls.recipientId.hasError('required')\">{{'Required'|translate:('User'|translate)}}</mat-error>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <textarea matInput cdkTextareaAutosize formControlName=\"note\" [placeholder]=\"'Note'|translate\" maxlength=\"200\">\r\n </textarea>\r\n <mat-hint align=\"end\">{{form.controls['note'].value?.length || 0}} / {{200}}</mat-hint>\r\n </mat-form-field>\r\n</form>\r\n", components: [{ type: i5.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i6.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i7.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i8.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: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.MatError, selector: "mat-error", inputs: ["id"] }, { type: i10.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i11.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { type: i1.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: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i5.MatHint, selector: "mat-hint", inputs: ["align", "id"] }], pipes: { "translate": i12.TranslatePipe, "async": i9.AsyncPipe, "userName": i13.UserNamePipe } });
34
+ ReturnActionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: ReturnActionComponent, deps: [{ token: i1.FormBuilder }, { token: i2.ActionRef }, { token: i3.SessionService }, { token: i4.AccountService }], target: i0.ɵɵFactoryTarget.Component });
35
+ ReturnActionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: ReturnActionComponent, selector: "ng-component", ngImport: i0, template: "<form autocomplete=\"off\" fxLayout=\"column\" [formGroup]=\"form\">\r\n <mat-form-field>\r\n <mat-select formControlName=\"recipientId\" cdkFocusInitial [placeholder]=\"'User'|translate\" required>\r\n <mat-option *ngFor=\"let r of recipients\" [value]=\"r.id\">{{r.userId | userName | async }}</mat-option>\r\n </mat-select>\r\n <mat-error *ngIf=\"form.controls.recipientId.hasError('required')\">{{'Required'|translate:('User'|translate)}}</mat-error>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <textarea matInput cdkTextareaAutosize formControlName=\"note\" [placeholder]=\"'Note'|translate\" maxlength=\"200\">\r\n </textarea>\r\n <mat-hint align=\"end\">{{form.controls['note'].value?.length || 0}} / {{200}}</mat-hint>\r\n </mat-form-field>\r\n</form>\r\n", components: [{ type: i5.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i6.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i7.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i8.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: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.MatError, selector: "mat-error", inputs: ["id"] }, { type: i10.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i11.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { type: i1.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: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i5.MatHint, selector: "mat-hint", inputs: ["align", "id"] }], pipes: { "translate": i12.TranslatePipe, "async": i9.AsyncPipe, "userName": i13.UserNamePipe } });
36
36
  ReturnActionComponent = __decorate([
37
37
  BizDoc({
38
38
  selector: 'bizdoc-action-return'
39
39
  })
40
40
  ], ReturnActionComponent);
41
41
  export { ReturnActionComponent };
42
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ReturnActionComponent, decorators: [{
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: ReturnActionComponent, decorators: [{
43
43
  type: Component,
44
44
  args: [{ template: "<form autocomplete=\"off\" fxLayout=\"column\" [formGroup]=\"form\">\r\n <mat-form-field>\r\n <mat-select formControlName=\"recipientId\" cdkFocusInitial [placeholder]=\"'User'|translate\" required>\r\n <mat-option *ngFor=\"let r of recipients\" [value]=\"r.id\">{{r.userId | userName | async }}</mat-option>\r\n </mat-select>\r\n <mat-error *ngIf=\"form.controls.recipientId.hasError('required')\">{{'Required'|translate:('User'|translate)}}</mat-error>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <textarea matInput cdkTextareaAutosize formControlName=\"note\" [placeholder]=\"'Note'|translate\" maxlength=\"200\">\r\n </textarea>\r\n <mat-hint align=\"end\">{{form.controls['note'].value?.length || 0}} / {{200}}</mat-hint>\r\n </mat-form-field>\r\n</form>\r\n" }]
45
45
  }], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.ActionRef }, { type: i3.SessionService }, { type: i4.AccountService }]; } });
@@ -105,9 +105,9 @@ export class AttachmentsComponent {
105
105
  this._sb.ask('DeleteFileAsk', 'DeleteFile', { color: 'warn' }).subscribe(ok => ok && task());
106
106
  }
107
107
  }
108
- AttachmentsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: AttachmentsComponent, deps: [{ token: i1.MailboxService }, { token: i2.SessionService }, { token: i0.ViewContainerRef }, { token: i3.PromptService }, { token: i4.Overlay }, { token: i0.Injector }, { token: i5.Directionality }], target: i0.ɵɵFactoryTarget.Component });
109
- AttachmentsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: AttachmentsComponent, selector: "bizdoc-attachments", inputs: { model: "model", viewedIndicator: "viewedIndicator", includeDeleted: "includeDeleted" }, usesOnChanges: true, ngImport: i0, template: "<div *ngFor=\"let a of attachments\">\r\n <button mat-button class=\"attachment-link\" [matMenuTriggerFor]=\"attachment\" [bizdocTooltip]=\"a.time | amCalendar\" [progressIndicator]=\"a.progress\">\r\n <mat-icon *ngIf=\"viewedIndicator && a.viewed\">done_all</mat-icon>\r\n <!--[bizdocTooltip]=\"a.viewed | amCalendar\"-->\r\n <mat-icon>attachment</mat-icon>&nbsp;\r\n <span [class.deleted]=\"a.deleted\" [class.failed]=\"a.failed\">{{a.fileName}}</span>\r\n </button>\r\n <mat-menu #attachment>\r\n <ng-container *ngIf=\"!a.failed\">\r\n <button mat-menu-item (click)=\"download(a)\">{{\"Download\" | translate}}</button>\r\n <button mat-menu-item *ngIf=\"canPreview(a)\" (click)=\"preview(a)\"><mat-icon>landscape</mat-icon> {{\"Preview\" | translate}}</button>\r\n <ng-container *ngIf=\"hasVersion(a)\">\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item *ngFor=\"let v of getVersions(a)\" (click)=\"previewOrDownload(v)\">{{v.time | amCalendar}}</button>\r\n </ng-container>\r\n <ng-container *ngIf=\"canDelete(a)\">\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"discard(a)\">{{\"Discard\" | translate}}</button>\r\n </ng-container>\r\n </ng-container>\r\n <button mat-menu-item (click)=\"cancel(a)\" *ngIf=\"a.failed\">{{\"Cancel\" | translate}}</button>\r\n </mat-menu>\r\n</div>\r\n", styles: [":host{display:flex;flex-flow:wrap}.attachment-link.failed{color:red}.attachment-link .deleted{text-decoration:line-through}::ng-deep button .progress{background-color:#696969;position:absolute;height:100%}\n"], components: [{ type: i6.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: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i8.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i8.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i9.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }], directives: [{ type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i11.ProgressButtonDirective, selector: "button[progressIndicator]", inputs: ["progressIndicator"] }, { type: i8.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i12.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "amCalendar": i13.CalendarPipe, "translate": i14.TranslatePipe } });
110
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: AttachmentsComponent, decorators: [{
108
+ AttachmentsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: AttachmentsComponent, deps: [{ token: i1.MailboxService }, { token: i2.SessionService }, { token: i0.ViewContainerRef }, { token: i3.PromptService }, { token: i4.Overlay }, { token: i0.Injector }, { token: i5.Directionality }], target: i0.ɵɵFactoryTarget.Component });
109
+ AttachmentsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: AttachmentsComponent, selector: "bizdoc-attachments", inputs: { model: "model", viewedIndicator: "viewedIndicator", includeDeleted: "includeDeleted" }, usesOnChanges: true, ngImport: i0, template: "<div *ngFor=\"let a of attachments\">\r\n <button mat-button class=\"attachment-link\" [matMenuTriggerFor]=\"attachment\" [bizdocTooltip]=\"a.time | amCalendar\" [progressIndicator]=\"a.progress\">\r\n <mat-icon *ngIf=\"viewedIndicator && a.viewed\">done_all</mat-icon>\r\n <!--[bizdocTooltip]=\"a.viewed | amCalendar\"-->\r\n <mat-icon>attachment</mat-icon>&nbsp;\r\n <span [class.deleted]=\"a.deleted\" [class.failed]=\"a.failed\">{{a.fileName}}</span>\r\n </button>\r\n <mat-menu #attachment>\r\n <ng-container *ngIf=\"!a.failed\">\r\n <button mat-menu-item (click)=\"download(a)\">{{\"Download\" | translate}}</button>\r\n <button mat-menu-item *ngIf=\"canPreview(a)\" (click)=\"preview(a)\"><mat-icon>landscape</mat-icon> {{\"Preview\" | translate}}</button>\r\n <ng-container *ngIf=\"hasVersion(a)\">\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item *ngFor=\"let v of getVersions(a)\" (click)=\"previewOrDownload(v)\">{{v.time | amCalendar}}</button>\r\n </ng-container>\r\n <ng-container *ngIf=\"canDelete(a)\">\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"discard(a)\">{{\"Discard\" | translate}}</button>\r\n </ng-container>\r\n </ng-container>\r\n <button mat-menu-item (click)=\"cancel(a)\" *ngIf=\"a.failed\">{{\"Cancel\" | translate}}</button>\r\n </mat-menu>\r\n</div>\r\n", styles: [":host{display:flex;flex-flow:wrap}.attachment-link.failed{color:red}.attachment-link .deleted{text-decoration:line-through}::ng-deep button .progress{background-color:#696969;position:absolute;height:100%}\n"], components: [{ type: i6.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: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i8.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i8.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i9.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }], directives: [{ type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i11.ProgressButtonDirective, selector: "button[progressIndicator]", inputs: ["progressIndicator"] }, { type: i8.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i12.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "amCalendar": i13.CalendarPipe, "translate": i14.TranslatePipe } });
110
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: AttachmentsComponent, decorators: [{
111
111
  type: Component,
112
112
  args: [{ selector: 'bizdoc-attachments', template: "<div *ngFor=\"let a of attachments\">\r\n <button mat-button class=\"attachment-link\" [matMenuTriggerFor]=\"attachment\" [bizdocTooltip]=\"a.time | amCalendar\" [progressIndicator]=\"a.progress\">\r\n <mat-icon *ngIf=\"viewedIndicator && a.viewed\">done_all</mat-icon>\r\n <!--[bizdocTooltip]=\"a.viewed | amCalendar\"-->\r\n <mat-icon>attachment</mat-icon>&nbsp;\r\n <span [class.deleted]=\"a.deleted\" [class.failed]=\"a.failed\">{{a.fileName}}</span>\r\n </button>\r\n <mat-menu #attachment>\r\n <ng-container *ngIf=\"!a.failed\">\r\n <button mat-menu-item (click)=\"download(a)\">{{\"Download\" | translate}}</button>\r\n <button mat-menu-item *ngIf=\"canPreview(a)\" (click)=\"preview(a)\"><mat-icon>landscape</mat-icon> {{\"Preview\" | translate}}</button>\r\n <ng-container *ngIf=\"hasVersion(a)\">\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item *ngFor=\"let v of getVersions(a)\" (click)=\"previewOrDownload(v)\">{{v.time | amCalendar}}</button>\r\n </ng-container>\r\n <ng-container *ngIf=\"canDelete(a)\">\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"discard(a)\">{{\"Discard\" | translate}}</button>\r\n </ng-container>\r\n </ng-container>\r\n <button mat-menu-item (click)=\"cancel(a)\" *ngIf=\"a.failed\">{{\"Cancel\" | translate}}</button>\r\n </mat-menu>\r\n</div>\r\n", styles: [":host{display:flex;flex-flow:wrap}.attachment-link.failed{color:red}.attachment-link .deleted{text-decoration:line-through}::ng-deep button .progress{background-color:#696969;position:absolute;height:100%}\n"] }]
113
113
  }], ctorParameters: function () { return [{ type: i1.MailboxService }, { type: i2.SessionService }, { type: i0.ViewContainerRef }, { type: i3.PromptService }, { type: i4.Overlay }, { type: i0.Injector }, { type: i5.Directionality }]; }, propDecorators: { model: [{
@@ -5,29 +5,31 @@ import { Subject } from 'rxjs';
5
5
  import * as i0 from "@angular/core";
6
6
  import * as i1 from "@angular/cdk/bidi";
7
7
  import * as i2 from "@angular/platform-browser";
8
- import * as i3 from "@angular/cdk/overlay";
9
- import * as i4 from "@angular/material/button";
10
- import * as i5 from "@angular/material/icon";
11
- import * as i6 from "@angular/material/progress-spinner";
12
- import * as i7 from "@angular/common";
13
- import * as i8 from "@angular/flex-layout/flex";
14
- import * as i9 from "../../../core/popup/tooltip.directive";
15
- import * as i10 from "../../../core/pipes/translate.pipe";
8
+ import * as i3 from "../../../core/authentication";
9
+ import * as i4 from "@angular/cdk/overlay";
10
+ import * as i5 from "@angular/material/button";
11
+ import * as i6 from "@angular/material/icon";
12
+ import * as i7 from "@angular/material/progress-spinner";
13
+ import * as i8 from "@angular/common";
14
+ import * as i9 from "@angular/flex-layout/flex";
15
+ import * as i10 from "../../../core/popup/tooltip.directive";
16
+ import * as i11 from "../../../core/pipes/translate.pipe";
16
17
  export const FILE_PREVIEW_DIALOG_DATA = new InjectionToken('FILE_PREVIEW_DIALOG_DATA');
17
18
  export const IMAGE_TYPE = ['image/png', 'image/jpeg', 'image/jpg', 'image/gif'];
18
19
  function isImage(contentType) {
19
20
  return IMAGE_TYPE.indexOf(contentType) > -1;
20
21
  }
21
- function formatUrl(documentId, fileId) {
22
- return `/api/mailbox/download/${documentId}?fileId=${fileId}`;
22
+ function formatUrl(documentId, fileId, token) {
23
+ return `/api/mailbox/download/${documentId}?fileId=${fileId}&access_token=${token}`;
23
24
  }
24
25
  const ANIMATION_TIMINGS = '400ms cubic-bezier(0.25, 0.8, 0.25, 1)';
25
26
  /** attachment-preview component*/
26
27
  export class AttachmentPreview {
27
28
  /** attachment-preview ctor */
28
- constructor(_directionality, _renderer, data, sanitizer, _overlayRef) {
29
+ constructor(_directionality, _renderer, data, sanitizer, _auth, _overlayRef) {
29
30
  this._renderer = _renderer;
30
31
  this.data = data;
32
+ this._auth = _auth;
31
33
  this._overlayRef = _overlayRef;
32
34
  this.loading = true;
33
35
  this.animationState = 'enter';
@@ -57,7 +59,7 @@ export class AttachmentPreview {
57
59
  location.assign(this._url());
58
60
  }
59
61
  _url() {
60
- return formatUrl(this.data.documentId, this.data.file.id);
62
+ return formatUrl(this.data.documentId, this.data.file.id, this._auth.getAccessToken());
61
63
  }
62
64
  rotate() {
63
65
  const elem = (this.isImage ? this.img : this.obj).nativeElement;
@@ -99,8 +101,8 @@ export class AttachmentPreview {
99
101
  this.animationState = 'leave';
100
102
  }
101
103
  }
102
- AttachmentPreview.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: AttachmentPreview, deps: [{ token: i1.Directionality }, { token: i0.Renderer2 }, { token: FILE_PREVIEW_DIALOG_DATA }, { token: i2.DomSanitizer }, { token: i3.OverlayRef }], target: i0.ɵɵFactoryTarget.Component });
103
- AttachmentPreview.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: AttachmentPreview, selector: "bizdoc-attachment-preview", host: { listeners: { "document:resize": "resize()", "document:keydown.escape": "close()" } }, viewQueries: [{ propertyName: "obj", first: true, predicate: ["obj"], descendants: true }, { propertyName: "img", first: true, predicate: ["img"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"overlay-content\" [@slideContent]=\"animationState\" (@slideContent.start)=\"onAnimationStart($event)\"\r\n [dir]=\"dir\" (@slideContent.done)=\"onAnimationDone($event)\">\r\n <div class=\"toolbar-wrapper\" fxLayout=\"row\" [@slideDown]=\"slideDown\" *ngIf=\"!loading\">\r\n <button mat-icon-button (click)=\"close()\" bizdocTooltip=\"{{'Back' | translate}}\"><mat-icon class=\"mat-icon-rtl-mirror\">keyboard_arrow_left</mat-icon></button>\r\n <span class=\"mat-body-1\">{{data.file.fileName}}</span>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"rotate()\" bizdocTooltip=\"{{'Rotate' | translate }}\"><mat-icon>screen_rotation</mat-icon></button>\r\n <button mat-icon-button (click)=\"download()\" bizdocTooltip=\"{{'Download' | translate}}\"><mat-icon>save_alt</mat-icon></button>\r\n </div>\r\n <div class=\"spinner-wrapper\" *ngIf=\"loading\">\r\n <mat-spinner></mat-spinner>\r\n </div>\r\n <object (load)=\"onLoad($event)\" [data]=\"objectData\" [type]=\"data.file.contentType\" *ngIf=\"!isImage\" #obj></object>\r\n <img *ngIf=\"isImage\" (load)=\"onLoad($event)\" [style.opacity]=\"loading ? 0 : 1\" [@fade]=\"loading ? 'fadeOut' : 'fadeIn'\" [src]=\"objectData\" #img>\r\n</div>\r\n", styles: [":host{display:flex;flex-direction:column;align-items:center}.spinner-wrapper{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:-1}img{width:100%;max-width:500px;height:auto}.overlay-content{padding:1em}.overlay-content .toolbar-wrapper{align-items:center;color:#f5f5f5}.divider{flex:1 1 auto}\n"], components: [{ type: i4.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: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i6.MatSpinner, selector: "mat-spinner", inputs: ["color"] }], directives: [{ type: i1.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.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: i9.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }], pipes: { "translate": i10.TranslatePipe }, animations: [
104
+ AttachmentPreview.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: AttachmentPreview, deps: [{ token: i1.Directionality }, { token: i0.Renderer2 }, { token: FILE_PREVIEW_DIALOG_DATA }, { token: i2.DomSanitizer }, { token: i3.AuthenticationImpl }, { token: i4.OverlayRef }], target: i0.ɵɵFactoryTarget.Component });
105
+ AttachmentPreview.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: AttachmentPreview, selector: "bizdoc-attachment-preview", host: { listeners: { "document:resize": "resize()", "document:keydown.escape": "close()" } }, viewQueries: [{ propertyName: "obj", first: true, predicate: ["obj"], descendants: true }, { propertyName: "img", first: true, predicate: ["img"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"overlay-content\" [@slideContent]=\"animationState\" (@slideContent.start)=\"onAnimationStart($event)\"\r\n [dir]=\"dir\" (@slideContent.done)=\"onAnimationDone($event)\">\r\n <div class=\"toolbar-wrapper\" fxLayout=\"row\" [@slideDown]=\"slideDown\" *ngIf=\"!loading\">\r\n <button mat-icon-button (click)=\"close()\" bizdocTooltip=\"{{'Back' | translate}}\"><mat-icon class=\"mat-icon-rtl-mirror\">keyboard_arrow_left</mat-icon></button>\r\n <span class=\"mat-body-1\">{{data.file.fileName}}</span>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"rotate()\" bizdocTooltip=\"{{'Rotate' | translate }}\"><mat-icon>screen_rotation</mat-icon></button>\r\n <button mat-icon-button (click)=\"download()\" bizdocTooltip=\"{{'Download' | translate}}\"><mat-icon>save_alt</mat-icon></button>\r\n </div>\r\n <div class=\"spinner-wrapper\" *ngIf=\"loading\">\r\n <mat-spinner></mat-spinner>\r\n </div>\r\n <object (load)=\"onLoad($event)\" [data]=\"objectData\" [type]=\"data.file.contentType\" *ngIf=\"!isImage\" #obj></object>\r\n <img *ngIf=\"isImage\" (load)=\"onLoad($event)\" [style.opacity]=\"loading ? 0 : 1\" [@fade]=\"loading ? 'fadeOut' : 'fadeIn'\" [src]=\"objectData\" #img>\r\n</div>\r\n", styles: [":host{display:flex;flex-direction:column;align-items:center}.spinner-wrapper{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:-1}img{width:100%;max-width:500px;height:auto}.overlay-content{padding:1em}.overlay-content .toolbar-wrapper{align-items:center;color:#f5f5f5}.divider{flex:1 1 auto}\n"], components: [{ type: i5.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: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i7.MatSpinner, selector: "mat-spinner", inputs: ["color"] }], directives: [{ type: i1.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.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: i10.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }], pipes: { "translate": i11.TranslatePipe }, animations: [
104
106
  trigger('fade', [
105
107
  state('fadeOut', style({ opacity: 0 })),
106
108
  state('fadeIn', style({ opacity: 1 })),
@@ -119,7 +121,7 @@ AttachmentPreview.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
119
121
  transition('* => *', animate(ANIMATION_TIMINGS)),
120
122
  ])
121
123
  ] });
122
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: AttachmentPreview, decorators: [{
124
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: AttachmentPreview, decorators: [{
123
125
  type: Component,
124
126
  args: [{ selector: 'bizdoc-attachment-preview', animations: [
125
127
  trigger('fade', [
@@ -143,7 +145,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImpor
143
145
  }], ctorParameters: function () { return [{ type: i1.Directionality }, { type: i0.Renderer2 }, { type: undefined, decorators: [{
144
146
  type: Inject,
145
147
  args: [FILE_PREVIEW_DIALOG_DATA]
146
- }] }, { type: i2.DomSanitizer }, { type: i3.OverlayRef }]; }, propDecorators: { obj: [{
148
+ }] }, { type: i2.DomSanitizer }, { type: i3.AuthenticationImpl }, { type: i4.OverlayRef }]; }, propDecorators: { obj: [{
147
149
  type: ViewChild,
148
150
  args: ['obj', { static: false }]
149
151
  }], img: [{
@@ -156,4 +158,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImpor
156
158
  type: HostListener,
157
159
  args: ['document:keydown.escape', []]
158
160
  }] } });
159
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNobWVudC1wcmV2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY29tcG9zZS9hdHRhY2htZW50cy9wcmV2aWV3L2F0dGFjaG1lbnQtcHJldmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2NvbXBvc2UvYXR0YWNobWVudHMvcHJldmlldy9hdHRhY2htZW50LXByZXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQVUsU0FBUyxFQUF3QyxNQUFNLGVBQWUsQ0FBQztBQUd2SixPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBa0IsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7OztBQUkzQyxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLGNBQWMsQ0FBYywwQkFBMEIsQ0FBQyxDQUFDO0FBRXBHLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLFdBQVcsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBRWhGLFNBQVMsT0FBTyxDQUFDLFdBQW1CO0lBQ2xDLE9BQU8sVUFBVSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM5QyxDQUFDO0FBQ0QsU0FBVSxTQUFTLENBQUMsVUFBa0IsRUFBRSxNQUFjO0lBQ3BELE9BQU8seUJBQXlCLFVB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QyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLG1DQUFtQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDOzRCQUNwRixLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7NEJBQ3hELEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLHdCQUF3QixFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDOzRCQUMxRSxVQUFVLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO3lCQUNqRCxDQUFDO3FCQUNIOzswQkFpQjJFLE1BQU07MkJBQUMsd0JBQXdCO2dHQWJ0RSxHQUFHO3NCQUF2QyxTQUFTO3VCQUFDLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ0MsR0FBRztzQkFBdEMsU0FBUzt1QkFBQyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQW1CbEMsTUFBTTtzQkFETCxZQUFZO3VCQUFDLGlCQUFpQixFQUFFLEVBQUU7Z0JBb0NuQyxLQUFLO3NCQURKLFlBQVk7dUJBQUMseUJBQXlCLEVBQUUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0aW9uVG9rZW4sIEluamVjdCwgSG9zdExpc3RlbmVyLCBFdmVudEVtaXR0ZXIsIE9uSW5pdCwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBBZnRlclZpZXdJbml0LCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcclxuaW1wb3J0IHsgQXR0YWNobWVudCB9IGZyb20gJy4uLy4uLy4uL2NvcmUvbW9kZWxzJztcclxuaW1wb3J0IHsgdHJpZ2dlciwgc3RhdGUsIHRyYW5zaXRpb24sIHN0eWxlLCBhbmltYXRlLCBBbmltYXRpb25FdmVudCB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyB0YWtlLCBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJzsgXHJcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZVVybCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBEaXJlY3Rpb25hbGl0eSwgRGlyZWN0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xyXG5cclxuZXhwb3J0IGNvbnN0IEZJTEVfUFJFVklFV19ESUFMT0dfREFUQSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxQcmV2aWV3RGF0YT4oJ0ZJTEVfUFJFVklFV19ESUFMT0dfREFUQScpO1xyXG5cclxuZXhwb3J0IGNvbnN0IElNQUdFX1RZUEUgPSBbJ2ltYWdlL3BuZycsICdpbWFnZS9qcGVnJywgJ2ltYWdlL2pwZycsICdpbWFnZS9naWYnXTtcclxuXHJcbmZ1bmN0aW9uIGlzSW1hZ2UoY29udGVudFR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gIHJldHVybiBJTUFHRV9UWVBFLmluZGV4T2YoY29udGVudFR5cGUpID4gLTE7XHJcbn1cclxuZnVuY3Rpb24gIGZvcm1hdFVybChkb2N1bWVudElkOiBudW1iZXIsIGZpbGVJZDogbnVtYmVyKSB7XHJcbiAgcmV0dXJuIGAvYXBpL21haWxib3gvZG93bmxvYWQvJHtkb2N1bWVudElkfT9maWxlSWQ9JHtmaWxlSWR9YDtcclxufVxyXG5cclxuY29uc3QgQU5JTUFUSU9OX1RJTUlOR1MgPSAnNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSknO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdiaXpkb2MtYXR0YWNobWVudC1wcmV2aWV3JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYXR0YWNobWVudC1wcmV2aWV3LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hdHRhY2htZW50LXByZXZpZXcuY29tcG9uZW50LnNjc3MnXSxcclxuICBhbmltYXRpb25zOiBbXHJcbiAgICB0cmlnZ2VyKCdmYWRlJywgW1xyXG4gICAgICBzdGF0ZSgnZmFkZU91dCcsIHN0eWxlKHsgb3BhY2l0eTogMCB9KSksXHJcbiAgICAgIHN0YXRlKCdmYWRlSW4nLCBzdHlsZSh7IG9wYWNpdHk6IDEgfSkpLFxyXG4gICAgICB0cmFuc2l0aW9uKCcqID0+IGZhZGVJbicsIGFuaW1hdGUoQU5JTUFUSU9OX1RJTUlOR1MpKVxyXG4gICAgXSksXHJcbiAgICB0cmlnZ2VyKCdzbGlkZURvd24nLCBbXHJcbiAgICAgIHN0YXRlKCd2b2lkJywgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKC0xMDAlKScgfSkpLFxyXG4gICAgICBzdGF0ZSgnZW50ZXInLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMCknIH0pKSxcclxuICAgICAgc3RhdGUoJ2xlYXZlJywgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKC0xMDAlKScgfSkpLFxyXG4gICAgICB0cmFuc2l0aW9uKCcqID0+IConLCBhbmltYXRlKCc0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKScpKVxyXG4gICAgXSksXHJcbiAgICB0cmlnZ2VyKCdzbGlkZUNvbnRlbnQnLCBbXHJcbiAgICAgIHN0YXRlKCd2b2lkJywgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGUzZCgwLCAyNSUsIDApIHNjYWxlKDAuOSknLCBvcGFjaXR5OiAwIH0pKSxcclxuICAgICAgc3RhdGUoJ2VudGVyJywgc3R5bGUoeyB0cmFuc2Zvcm06ICdub25lJywgb3BhY2l0eTogMSB9KSksXHJcbiAgICAgIHN0YXRlKCdsZWF2ZScsIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlM2QoMCwgMjUlLCAwKScsIG9wYWNpdHk6IDAgfSkpLFxyXG4gICAgICB0cmFuc2l0aW9uKCcqID0+IConLCBhbmltYXRlKEFOSU1BVElPTl9USU1JTkdTKSksXHJcbiAgICBdKVxyXG4gIF1cclxufSlcclxuLyoqIGF0dGFjaG1lbnQtcHJldmlldyBjb21wb25lbnQqL1xyXG5leHBvcnQgY2xhc3MgQXR0YWNobWVudFByZXZpZXcgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG4gIEBWaWV3Q2hpbGQoJ29iaicsIHsgc3RhdGljOiBmYWxzZSB9KSBvYmo6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnaW1nJywgeyBzdGF0aWM6IHRydWUgfSkgaW1nOiBFbGVtZW50UmVmO1xyXG4gIG9iamVjdERhdGE6IFNhZmVVcmw7XHJcbiAgbG9hZGluZyA9IHRydWU7XHJcbiAgZGlyOiBEaXJlY3Rpb247XHJcbiAgaXNJbWFnZTogYm9vbGVhbjtcclxuICBhbmltYXRpb25TdGF0ZTogJ3ZvaWQnIHwgJ2VudGVyJyB8ICdsZWF2ZScgPSAnZW50ZXInO1xyXG4gIHNsaWRlRG93bjogJ2VudGVyJyB8ICdsZWF2ZScgfCAndm9pZCcgPSAnZW50ZXInO1xyXG4gIHJlYWRvbmx5IGFuaW1hdGlvblN0YXRlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8QW5pbWF0aW9uRXZlbnQ+KCk7XHJcbiAgcHJpdmF0ZSBfZGVnID0gMDtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9iZWZvcmVDbG9zZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfYWZ0ZXJDbG9zZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIC8qKiBhdHRhY2htZW50LXByZXZpZXcgY3RvciAqL1xyXG4gIGNvbnN0cnVjdG9yKF9kaXJlY3Rpb25hbGl0eTogRGlyZWN0aW9uYWxpdHksIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIsIEBJbmplY3QoRklMRV9QUkVWSUVXX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogUHJldmlld0RhdGEsIHNhbml0aXplcjogRG9tU2FuaXRpemVyLCBwcml2YXRlIF9vdmVybGF5UmVmOiBPdmVybGF5UmVmKSB7XHJcbiAgICB0aGlzLmRpciA9IF9kaXJlY3Rpb25hbGl0eS52YWx1ZTtcclxuICAgIHRoaXMuaXNJbWFnZSA9IGlzSW1hZ2UodGhpcy5kYXRhLmZpbGUuY29udGVudFR5cGUpO1xyXG4gICAgdGhpcy5vYmplY3REYXRhID0gc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh0aGlzLl91cmwoKSk7XHJcbiAgICB0aGlzLmJlZm9yZUNsb3NlKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMuc2xpZGVEb3duID0gJ2xlYXZlJyk7XHJcbiAgfVxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OnJlc2l6ZScsIFtdKVxyXG4gIHJlc2l6ZSgpIHtcclxuICAgIGlmICghdGhpcy5pc0ltYWdlKSB7XHJcbiAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFN0eWxlKHRoaXMub2JqLm5hdGl2ZUVsZW1lbnQsICdtaW4td2lkdGgnLCBgJHt3aW5kb3cuaW5uZXJXaWR0aH1weGApO1xyXG4gICAgICB0aGlzLl9yZW5kZXJlci5zZXRTdHlsZSh0aGlzLm9iai5uYXRpdmVFbGVtZW50LCAnbWluLWhlaWdodCcsIGAke3dpbmRvdy5pbm5lckhlaWdodH1weGApXHJcbiAgICB9XHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fb3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2xvc2UoKSk7XHJcbiAgfVxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVzaXplKCk7XHJcbiAgfVxyXG4gIGRvd25sb2FkKCkge1xyXG4gICAgbG9jYXRpb24uYXNzaWduKHRoaXMuX3VybCgpKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfdXJsKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gZm9ybWF0VXJsKHRoaXMuZGF0YS5kb2N1bWVudElkLCB0aGlzLmRhdGEuZmlsZS5pZCk7XHJcbiAgfVxyXG5cclxuICByb3RhdGUoKSB7XHJcbiAgICBjb25zdCBlbGVtID0gKHRoaXMuaXNJbWFnZSA/IHRoaXMuaW1nIDogdGhpcy5vYmopLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICB0aGlzLl9kZWcgPSB0aGlzLl9kZWcgPT09IDI3MCA/IDAgOiB0aGlzLl9kZWcgKyA5MDtcclxuICAgIGVsZW0uc3R5bGUudHJhbnNmb3JtID0gYHJvdGF0ZSgke3RoaXMuX2RlZ31kZWcpYDtcclxuICB9XHJcbiAgb25Mb2FkKF9ldnQ6IEV2ZW50KSB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICB9XHJcbiAgYWZ0ZXJDbG9zZWQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWZ0ZXJDbG9zZWQuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG5cclxuICBiZWZvcmVDbG9zZSgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcclxuICAgIHJldHVybiB0aGlzLl9iZWZvcmVDbG9zZS5hc09ic2VydmFibGUoKTtcclxuICB9XHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5lc2NhcGUnLCBbXSlcclxuICBjbG9zZSgpOiB2b2lkIHtcclxuICAgIC8vIExpc3RlbiBmb3IgYW5pbWF0aW9uICdzdGFydCcgZXZlbnRzXHJcbiAgICB0aGlzLmFuaW1hdGlvblN0YXRlQ2hhbmdlZC5waXBlKFxyXG4gICAgICBmaWx0ZXIoZXZlbnQgPT4gZXZlbnQucGhhc2VOYW1lID09PSAnc3RhcnQnKSxcclxuICAgICAgdGFrZSgxKVxyXG4gICAgKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLl9iZWZvcmVDbG9zZS5uZXh0KCk7XHJcbiAgICAgIHRoaXMuX2JlZm9yZUNsb3NlLmNvbXBsZXRlKCk7XHJcbiAgICAgIHRoaXMuX292ZXJsYXlSZWYuZGV0YWNoQmFja2Ryb3AoKTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIExpc3RlbiBmb3IgYW5pbWF0aW9uICdkb25lJyBldmVudHNcclxuICAgIHRoaXMuYW5pbWF0aW9uU3RhdGVDaGFuZ2VkLnBpcGUoXHJcbiAgICAgIGZpbHRlcihldmVudCA9PiBldmVudC5waGFzZU5hbWUgPT09ICdkb25lJyAmJiBldmVudC50b1N0YXRlID09PSAnbGVhdmUnKSxcclxuICAgICAgdGFrZSgxKVxyXG4gICAgKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLl9vdmVybGF5UmVmLmRpc3Bvc2UoKTtcclxuICAgICAgdGhpcy5fYWZ0ZXJDbG9zZWQubmV4dCgpO1xyXG4gICAgICB0aGlzLl9hZnRlckNsb3NlZC5jb21wbGV0ZSgpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gU3RhcnQgZXhpdCBhbmltYXRpb25cclxuICAgIHRoaXMuc3RhcnRFeGl0QW5pbWF0aW9uKCk7XHJcbiAgfVxyXG4gIG9uQW5pbWF0aW9uU3RhcnQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSB7XHJcbiAgICB0aGlzLmFuaW1hdGlvblN0YXRlQ2hhbmdlZC5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIG9uQW5pbWF0aW9uRG9uZShldmVudDogQW5pbWF0aW9uRXZlbnQpIHtcclxuICAgIHRoaXMuYW5pbWF0aW9uU3RhdGVDaGFuZ2VkLmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGFydEV4aXRBbmltYXRpb24oKSB7XHJcbiAgICB0aGlzLmFuaW1hdGlvblN0YXRlID0gJ2xlYXZlJztcclxuICB9XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBQcmV2aWV3RGF0YSB7XHJcbiAgZG9jdW1lbnRJZDogbnVtYmVyO1xyXG4gIGZpbGU6IEF0dGFjaG1lbnQ7XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIm92ZXJsYXktY29udGVudFwiIFtAc2xpZGVDb250ZW50XT1cImFuaW1hdGlvblN0YXRlXCIgKEBzbGlkZUNvbnRlbnQuc3RhcnQpPVwib25BbmltYXRpb25TdGFydCgkZXZlbnQpXCJcclxuIFtkaXJdPVwiZGlyXCIgKEBzbGlkZUNvbnRlbnQuZG9uZSk9XCJvbkFuaW1hdGlvbkRvbmUoJGV2ZW50KVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJ0b29sYmFyLXdyYXBwZXJcIiBmeExheW91dD1cInJvd1wiIFtAc2xpZGVEb3duXT1cInNsaWRlRG93blwiICpuZ0lmPVwiIWxvYWRpbmdcIj5cclxuICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJjbG9zZSgpXCIgYml6ZG9jVG9vbHRpcD1cInt7J0JhY2snIHwgdHJhbnNsYXRlfX1cIj48bWF0LWljb24gY2xhc3M9XCJtYXQtaWNvbi1ydGwtbWlycm9yXCI+a2V5Ym9hcmRfYXJyb3dfbGVmdDwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICA8c3BhbiBjbGFzcz1cIm1hdC1ib2R5LTFcIj57e2RhdGEuZmlsZS5maWxlTmFtZX19PC9zcGFuPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInJvdGF0ZSgpXCIgYml6ZG9jVG9vbHRpcD1cInt7J1JvdGF0ZScgfCB0cmFuc2xhdGUgfX1cIj48bWF0LWljb24+c2NyZWVuX3JvdGF0aW9uPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJkb3dubG9hZCgpXCIgYml6ZG9jVG9vbHRpcD1cInt7J0Rvd25sb2FkJyB8IHRyYW5zbGF0ZX19XCI+PG1hdC1pY29uPnNhdmVfYWx0PC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwic3Bpbm5lci13cmFwcGVyXCIgKm5nSWY9XCJsb2FkaW5nXCI+XHJcbiAgICA8bWF0LXNwaW5uZXI+PC9tYXQtc3Bpbm5lcj5cclxuICA8L2Rpdj5cclxuICA8b2JqZWN0IChsb2FkKT1cIm9uTG9hZCgkZXZlbnQpXCIgW2RhdGFdPVwib2JqZWN0RGF0YVwiIFt0eXBlXT1cImRhdGEuZmlsZS5jb250ZW50VHlwZVwiICpuZ0lmPVwiIWlzSW1hZ2VcIiAjb2JqPjwvb2JqZWN0PlxyXG4gIDxpbWcgKm5nSWY9XCJpc0ltYWdlXCIgKGxvYWQpPVwib25Mb2FkKCRldmVudClcIiBbc3R5bGUub3BhY2l0eV09XCJsb2FkaW5nID8gMCA6IDFcIiBbQGZhZGVdPVwibG9hZGluZyA/ICdmYWRlT3V0JyA6ICdmYWRlSW4nXCIgW3NyY109XCJvYmplY3REYXRhXCIgI2ltZz5cclxuPC9kaXY+XHJcbiJdfQ==
161
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNobWVudC1wcmV2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY29tcG9zZS9hdHRhY2htZW50cy9wcmV2aWV3L2F0dGFjaG1lbnQtcHJldmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2NvbXBvc2UvYXR0YWNobWVudHMvcHJldmlldy9hdHRhY2htZW50LXByZXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQVUsU0FBUyxFQUF3QyxNQUFNLGVBQWUsQ0FBQztBQUd2SixPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBa0IsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFLM0MsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxjQUFjLENBQWMsMEJBQTBCLENBQUMsQ0FBQztBQUVwRyxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxXQUFXLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQztBQUVoRixTQUFTLE9BQU8sQ0FBQyxXQUFtQjtJQUNsQyxPQUFPLFVBQVUsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDOUMsQ0FBQztBQUNELFNBQVMsU0FBUyxDQUFDLFVBQWtCLEVBQUUsTUFBYyxFQUFFLEtBQWE7SUFDbEUsT0FB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QVUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLHdDQUF3QyxDQUFDLENBQUM7eUJBQ3hFLENBQUM7d0JBQ0YsT0FBTyxDQUFDLGNBQWMsRUFBRTs0QkFDdEIsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsbUNBQW1DLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7NEJBQ3BGLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQzs0QkFDeEQsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsd0JBQXdCLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7NEJBQzFFLFVBQVUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7eUJBQ2pELENBQUM7cUJBQ0g7OzBCQWtCZ0MsTUFBTTsyQkFBQyx3QkFBd0I7aUlBZDNCLEdBQUc7c0JBQXZDLFNBQVM7dUJBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDQyxHQUFHO3NCQUF0QyxTQUFTO3VCQUFDLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBdUJsQyxNQUFNO3NCQURMLFlBQVk7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRTtnQkFvQ25DLEtBQUs7c0JBREosWUFBWTt1QkFBQyx5QkFBeUIsRUFBRSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3Rpb25Ub2tlbiwgSW5qZWN0LCBIb3N0TGlzdGVuZXIsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIEFmdGVyVmlld0luaXQsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xyXG5pbXBvcnQgeyBBdHRhY2htZW50IH0gZnJvbSAnLi4vLi4vLi4vY29yZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyB0cmlnZ2VyLCBzdGF0ZSwgdHJhbnNpdGlvbiwgc3R5bGUsIGFuaW1hdGUsIEFuaW1hdGlvbkV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7IHRha2UsIGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgRGlyZWN0aW9uYWxpdHksIERpcmVjdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcclxuaW1wb3J0IHsgQXV0aGVudGljYXRpb25JbXBsIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9hdXRoZW50aWNhdGlvbic7XHJcblxyXG5leHBvcnQgY29uc3QgRklMRV9QUkVWSUVXX0RJQUxPR19EQVRBID0gbmV3IEluamVjdGlvblRva2VuPFByZXZpZXdEYXRhPignRklMRV9QUkVWSUVXX0RJQUxPR19EQVRBJyk7XHJcblxyXG5leHBvcnQgY29uc3QgSU1BR0VfVFlQRSA9IFsnaW1hZ2UvcG5nJywgJ2ltYWdlL2pwZWcnLCAnaW1hZ2UvanBnJywgJ2ltYWdlL2dpZiddO1xyXG5cclxuZnVuY3Rpb24gaXNJbWFnZShjb250ZW50VHlwZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgcmV0dXJuIElNQUdFX1RZUEUuaW5kZXhPZihjb250ZW50VHlwZSkgPiAtMTtcclxufVxyXG5mdW5jdGlvbiBmb3JtYXRVcmwoZG9jdW1lbnRJZDogbnVtYmVyLCBmaWxlSWQ6IG51bWJlciwgdG9rZW46IHN0cmluZykge1xyXG4gIHJldHVybiBgL2FwaS9tYWlsYm94L2Rvd25sb2FkLyR7ZG9jdW1lbnRJZH0/ZmlsZUlkPSR7ZmlsZUlkfSZhY2Nlc3NfdG9rZW49JHt0b2tlbn1gO1xyXG59XHJcblxyXG5jb25zdCBBTklNQVRJT05fVElNSU5HUyA9ICc0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2JpemRvYy1hdHRhY2htZW50LXByZXZpZXcnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hdHRhY2htZW50LXByZXZpZXcuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2F0dGFjaG1lbnQtcHJldmlldy5jb21wb25lbnQuc2NzcyddLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoJ2ZhZGUnLCBbXHJcbiAgICAgIHN0YXRlKCdmYWRlT3V0Jywgc3R5bGUoeyBvcGFjaXR5OiAwIH0pKSxcclxuICAgICAgc3RhdGUoJ2ZhZGVJbicsIHN0eWxlKHsgb3BhY2l0eTogMSB9KSksXHJcbiAgICAgIHRyYW5zaXRpb24oJyogPT4gZmFkZUluJywgYW5pbWF0ZShBTklNQVRJT05fVElNSU5HUykpXHJcbiAgICBdKSxcclxuICAgIHRyaWdnZXIoJ3NsaWRlRG93bicsIFtcclxuICAgICAgc3RhdGUoJ3ZvaWQnLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoLTEwMCUpJyB9KSksXHJcbiAgICAgIHN0YXRlKCdlbnRlcicsIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwKScgfSkpLFxyXG4gICAgICBzdGF0ZSgnbGVhdmUnLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoLTEwMCUpJyB9KSksXHJcbiAgICAgIHRyYW5zaXRpb24oJyogPT4gKicsIGFuaW1hdGUoJzQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpJykpXHJcbiAgICBdKSxcclxuICAgIHRyaWdnZXIoJ3NsaWRlQ29udGVudCcsIFtcclxuICAgICAgc3RhdGUoJ3ZvaWQnLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZTNkKDAsIDI1JSwgMCkgc2NhbGUoMC45KScsIG9wYWNpdHk6IDAgfSkpLFxyXG4gICAgICBzdGF0ZSgnZW50ZXInLCBzdHlsZSh7IHRyYW5zZm9ybTogJ25vbmUnLCBvcGFjaXR5OiAxIH0pKSxcclxuICAgICAgc3RhdGUoJ2xlYXZlJywgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGUzZCgwLCAyNSUsIDApJywgb3BhY2l0eTogMCB9KSksXHJcbiAgICAgIHRyYW5zaXRpb24oJyogPT4gKicsIGFuaW1hdGUoQU5JTUFUSU9OX1RJTUlOR1MpKSxcclxuICAgIF0pXHJcbiAgXVxyXG59KVxyXG4vKiogYXR0YWNobWVudC1wcmV2aWV3IGNvbXBvbmVudCovXHJcbmV4cG9ydCBjbGFzcyBBdHRhY2htZW50UHJldmlldyBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgQFZpZXdDaGlsZCgnb2JqJywgeyBzdGF0aWM6IGZhbHNlIH0pIG9iajogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdpbWcnLCB7IHN0YXRpYzogdHJ1ZSB9KSBpbWc6IEVsZW1lbnRSZWY7XHJcbiAgb2JqZWN0RGF0YTogU2FmZVVybDtcclxuICBsb2FkaW5nID0gdHJ1ZTtcclxuICBkaXI6IERpcmVjdGlvbjtcclxuICBpc0ltYWdlOiBib29sZWFuO1xyXG4gIGFuaW1hdGlvblN0YXRlOiAndm9pZCcgfCAnZW50ZXInIHwgJ2xlYXZlJyA9ICdlbnRlcic7XHJcbiAgc2xpZGVEb3duOiAnZW50ZXInIHwgJ2xlYXZlJyB8ICd2b2lkJyA9ICdlbnRlcic7XHJcbiAgcmVhZG9ubHkgYW5pbWF0aW9uU3RhdGVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxBbmltYXRpb25FdmVudD4oKTtcclxuICBwcml2YXRlIF9kZWcgPSAwO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2JlZm9yZUNsb3NlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9hZnRlckNsb3NlZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgLyoqIGF0dGFjaG1lbnQtcHJldmlldyBjdG9yICovXHJcbiAgY29uc3RydWN0b3IoX2RpcmVjdGlvbmFsaXR5OiBEaXJlY3Rpb25hbGl0eSxcclxuICAgIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIsIEBJbmplY3QoRklMRV9QUkVWSUVXX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogUHJldmlld0RhdGEsXHJcbiAgICBzYW5pdGl6ZXI6IERvbVNhbml0aXplcixcclxuICAgIHByaXZhdGUgX2F1dGg6IEF1dGhlbnRpY2F0aW9uSW1wbCxcclxuICAgIHByaXZhdGUgX292ZXJsYXlSZWY6IE92ZXJsYXlSZWYpIHtcclxuICAgIHRoaXMuZGlyID0gX2RpcmVjdGlvbmFsaXR5LnZhbHVlO1xyXG4gICAgdGhpcy5pc0ltYWdlID0gaXNJbWFnZSh0aGlzLmRhdGEuZmlsZS5jb250ZW50VHlwZSk7XHJcbiAgICB0aGlzLm9iamVjdERhdGEgPSBzYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHRoaXMuX3VybCgpKTtcclxuICAgIHRoaXMuYmVmb3JlQ2xvc2UoKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5zbGlkZURvd24gPSAnbGVhdmUnKTtcclxuICB9XHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6cmVzaXplJywgW10pXHJcbiAgcmVzaXplKCkge1xyXG4gICAgaWYgKCF0aGlzLmlzSW1hZ2UpIHtcclxuICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0U3R5bGUodGhpcy5vYmoubmF0aXZlRWxlbWVudCwgJ21pbi13aWR0aCcsIGAke3dpbmRvdy5pbm5lcldpZHRofXB4YCk7XHJcbiAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFN0eWxlKHRoaXMub2JqLm5hdGl2ZUVsZW1lbnQsICdtaW4taGVpZ2h0JywgYCR7d2luZG93LmlubmVySGVpZ2h0fXB4YClcclxuICAgIH1cclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9vdmVybGF5UmVmLmJhY2tkcm9wQ2xpY2soKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jbG9zZSgpKTtcclxuICB9XHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZXNpemUoKTtcclxuICB9XHJcbiAgZG93bmxvYWQoKSB7XHJcbiAgICBsb2NhdGlvbi5hc3NpZ24odGhpcy5fdXJsKCkpO1xyXG4gIH1cclxuICBwcml2YXRlIF91cmwoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBmb3JtYXRVcmwodGhpcy5kYXRhLmRvY3VtZW50SWQsIHRoaXMuZGF0YS5maWxlLmlkLCB0aGlzLl9hdXRoLmdldEFjY2Vzc1Rva2VuKCkpO1xyXG4gIH1cclxuXHJcbiAgcm90YXRlKCkge1xyXG4gICAgY29uc3QgZWxlbSA9ICh0aGlzLmlzSW1hZ2UgPyB0aGlzLmltZyA6IHRoaXMub2JqKS5uYXRpdmVFbGVtZW50O1xyXG4gICAgdGhpcy5fZGVnID0gdGhpcy5fZGVnID09PSAyNzAgPyAwIDogdGhpcy5fZGVnICsgOTA7XHJcbiAgICBlbGVtLnN0eWxlLnRyYW5zZm9ybSA9IGByb3RhdGUoJHt0aGlzLl9kZWd9ZGVnKWA7XHJcbiAgfVxyXG4gIG9uTG9hZChfZXZ0OiBFdmVudCkge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgfVxyXG4gIGFmdGVyQ2xvc2VkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FmdGVyQ2xvc2VkLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgYmVmb3JlQ2xvc2UoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fYmVmb3JlQ2xvc2UuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uZXNjYXBlJywgW10pXHJcbiAgY2xvc2UoKTogdm9pZCB7XHJcbiAgICAvLyBMaXN0ZW4gZm9yIGFuaW1hdGlvbiAnc3RhcnQnIGV2ZW50c1xyXG4gICAgdGhpcy5hbmltYXRpb25TdGF0ZUNoYW5nZWQucGlwZShcclxuICAgICAgZmlsdGVyKGV2ZW50ID0+IGV2ZW50LnBoYXNlTmFtZSA9PT0gJ3N0YXJ0JyksXHJcbiAgICAgIHRha2UoMSlcclxuICAgICkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5fYmVmb3JlQ2xvc2UubmV4dCgpO1xyXG4gICAgICB0aGlzLl9iZWZvcmVDbG9zZS5jb21wbGV0ZSgpO1xyXG4gICAgICB0aGlzLl9vdmVybGF5UmVmLmRldGFjaEJhY2tkcm9wKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBMaXN0ZW4gZm9yIGFuaW1hdGlvbiAnZG9uZScgZXZlbnRzXHJcbiAgICB0aGlzLmFuaW1hdGlvblN0YXRlQ2hhbmdlZC5waXBlKFxyXG4gICAgICBmaWx0ZXIoZXZlbnQgPT4gZXZlbnQucGhhc2VOYW1lID09PSAnZG9uZScgJiYgZXZlbnQudG9TdGF0ZSA9PT0gJ2xlYXZlJyksXHJcbiAgICAgIHRha2UoMSlcclxuICAgICkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5fb3ZlcmxheVJlZi5kaXNwb3NlKCk7XHJcbiAgICAgIHRoaXMuX2FmdGVyQ2xvc2VkLm5leHQoKTtcclxuICAgICAgdGhpcy5fYWZ0ZXJDbG9zZWQuY29tcGxldGUoKTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIFN0YXJ0IGV4aXQgYW5pbWF0aW9uXHJcbiAgICB0aGlzLnN0YXJ0RXhpdEFuaW1hdGlvbigpO1xyXG4gIH1cclxuICBvbkFuaW1hdGlvblN0YXJ0KGV2ZW50OiBBbmltYXRpb25FdmVudCkge1xyXG4gICAgdGhpcy5hbmltYXRpb25TdGF0ZUNoYW5nZWQuZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICBvbkFuaW1hdGlvbkRvbmUoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSB7XHJcbiAgICB0aGlzLmFuaW1hdGlvblN0YXRlQ2hhbmdlZC5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhcnRFeGl0QW5pbWF0aW9uKCkge1xyXG4gICAgdGhpcy5hbmltYXRpb25TdGF0ZSA9ICdsZWF2ZSc7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgUHJldmlld0RhdGEge1xyXG4gIGRvY3VtZW50SWQ6IG51bWJlcjtcclxuICBmaWxlOiBBdHRhY2htZW50O1xyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJvdmVybGF5LWNvbnRlbnRcIiBbQHNsaWRlQ29udGVudF09XCJhbmltYXRpb25TdGF0ZVwiIChAc2xpZGVDb250ZW50LnN0YXJ0KT1cIm9uQW5pbWF0aW9uU3RhcnQoJGV2ZW50KVwiXHJcbiBbZGlyXT1cImRpclwiIChAc2xpZGVDb250ZW50LmRvbmUpPVwib25BbmltYXRpb25Eb25lKCRldmVudClcIj5cclxuICA8ZGl2IGNsYXNzPVwidG9vbGJhci13cmFwcGVyXCIgZnhMYXlvdXQ9XCJyb3dcIiBbQHNsaWRlRG93bl09XCJzbGlkZURvd25cIiAqbmdJZj1cIiFsb2FkaW5nXCI+XHJcbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiY2xvc2UoKVwiIGJpemRvY1Rvb2x0aXA9XCJ7eydCYWNrJyB8IHRyYW5zbGF0ZX19XCI+PG1hdC1pY29uIGNsYXNzPVwibWF0LWljb24tcnRsLW1pcnJvclwiPmtleWJvYXJkX2Fycm93X2xlZnQ8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJtYXQtYm9keS0xXCI+e3tkYXRhLmZpbGUuZmlsZU5hbWV9fTwvc3Bhbj5cclxuICAgIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJyb3RhdGUoKVwiIGJpemRvY1Rvb2x0aXA9XCJ7eydSb3RhdGUnIHwgdHJhbnNsYXRlIH19XCI+PG1hdC1pY29uPnNjcmVlbl9yb3RhdGlvbjwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiZG93bmxvYWQoKVwiIGJpemRvY1Rvb2x0aXA9XCJ7eydEb3dubG9hZCcgfCB0cmFuc2xhdGV9fVwiPjxtYXQtaWNvbj5zYXZlX2FsdDwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cInNwaW5uZXItd3JhcHBlclwiICpuZ0lmPVwibG9hZGluZ1wiPlxyXG4gICAgPG1hdC1zcGlubmVyPjwvbWF0LXNwaW5uZXI+XHJcbiAgPC9kaXY+XHJcbiAgPG9iamVjdCAobG9hZCk9XCJvbkxvYWQoJGV2ZW50KVwiIFtkYXRhXT1cIm9iamVjdERhdGFcIiBbdHlwZV09XCJkYXRhLmZpbGUuY29udGVudFR5cGVcIiAqbmdJZj1cIiFpc0ltYWdlXCIgI29iaj48L29iamVjdD5cclxuICA8aW1nICpuZ0lmPVwiaXNJbWFnZVwiIChsb2FkKT1cIm9uTG9hZCgkZXZlbnQpXCIgW3N0eWxlLm9wYWNpdHldPVwibG9hZGluZyA/IDAgOiAxXCIgW0BmYWRlXT1cImxvYWRpbmcgPyAnZmFkZU91dCcgOiAnZmFkZUluJ1wiIFtzcmNdPVwib2JqZWN0RGF0YVwiICNpbWc+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -14,9 +14,9 @@ export class ProgressButtonDirective {
14
14
  this.renderer.setStyle(this._progressDiv, 'width', `${this.progressIndicator}%`);
15
15
  }
16
16
  }
17
- ProgressButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ProgressButtonDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
18
- ProgressButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.1", type: ProgressButtonDirective, selector: "button[progressIndicator]", inputs: { progressIndicator: "progressIndicator" }, usesOnChanges: true, ngImport: i0 });
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ProgressButtonDirective, decorators: [{
17
+ ProgressButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: ProgressButtonDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
18
+ ProgressButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.2", type: ProgressButtonDirective, selector: "button[progressIndicator]", inputs: { progressIndicator: "progressIndicator" }, usesOnChanges: true, ngImport: i0 });
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: ProgressButtonDirective, decorators: [{
20
20
  type: Directive,
21
21
  args: [{ selector: 'button[progressIndicator]' }]
22
22
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { progressIndicator: [{