@bizdoc/core 3.2.10 → 3.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (448) hide show
  1. package/assets/themes/brown.min.css +1 -1
  2. package/assets/themes/dark.min.css +3 -3
  3. package/assets/themes/deep-purple-light-blue.min.css +1 -1
  4. package/assets/themes/deep-purple-teal.min.css +1 -1
  5. package/assets/themes/default.min.css +8 -8
  6. package/assets/themes/green.min.css +1 -1
  7. package/assets/themes/indigo-amber.min.css +1 -1
  8. package/assets/themes/indigo.min.css +1 -1
  9. package/fesm2022/bizdoc-core.mjs +2068 -1866
  10. package/fesm2022/bizdoc-core.mjs.map +1 -1
  11. package/lib/admin/admin-menu.component.d.ts +1 -3
  12. package/lib/admin/architecture/designer.base.d.ts +3 -3
  13. package/lib/admin/architecture/elements/form.component.d.ts +1 -1
  14. package/lib/compose/trace/trace.base.d.ts +1 -1
  15. package/lib/core/base.d.ts +5 -0
  16. package/lib/core/fields/options.base.d.ts +2 -2
  17. package/lib/core/inputs/combination-picker-body.d.ts +0 -2
  18. package/lib/core/inputs/combination-picker.d.ts +1 -1
  19. package/lib/core/session.service.d.ts +2 -2
  20. package/lib/core/tagging/tagging.component-base.d.ts +1 -1
  21. package/lib/core/translate.service.d.ts +2 -2
  22. package/lib/cube/matrix/matrix.base.d.ts +1 -1
  23. package/lib/cube/view-base.d.ts +1 -1
  24. package/lib/dashboard/cube/cube-analysis.base.d.ts +1 -1
  25. package/lib/home/home-base.component.d.ts +1 -1
  26. package/lib/home/home.desktop.component.d.ts +5 -3
  27. package/lib/notifications/types/notification-base.d.ts +1 -1
  28. package/lib/reports/cube/usage-base.d.ts +1 -1
  29. package/lib/views/cube/cube-base.d.ts +1 -1
  30. package/package.json +31 -33
  31. package/esm2022/bizdoc-core.mjs +0 -5
  32. package/esm2022/lib/admin/admin-dismiss.service.mjs +0 -28
  33. package/esm2022/lib/admin/admin-menu.component.mjs +0 -24
  34. package/esm2022/lib/admin/architecture/cube-axes-filter.component.mjs +0 -93
  35. package/esm2022/lib/admin/architecture/declarations.mjs +0 -79
  36. package/esm2022/lib/admin/architecture/designer-element.component.mjs +0 -270
  37. package/esm2022/lib/admin/architecture/designer-privileges.component.mjs +0 -96
  38. package/esm2022/lib/admin/architecture/designer.base.mjs +0 -136
  39. package/esm2022/lib/admin/architecture/designer.component.mjs +0 -396
  40. package/esm2022/lib/admin/architecture/elements/action.component.mjs +0 -43
  41. package/esm2022/lib/admin/architecture/elements/analysis-view.component.mjs +0 -50
  42. package/esm2022/lib/admin/architecture/elements/analysis-widget.component.mjs +0 -49
  43. package/esm2022/lib/admin/architecture/elements/anomaly-rule.component.mjs +0 -29
  44. package/esm2022/lib/admin/architecture/elements/attribute.component.mjs +0 -35
  45. package/esm2022/lib/admin/architecture/elements/box-form.component.mjs +0 -49
  46. package/esm2022/lib/admin/architecture/elements/configuration-datasource.component.mjs +0 -66
  47. package/esm2022/lib/admin/architecture/elements/control.component.mjs +0 -21
  48. package/esm2022/lib/admin/architecture/elements/cube-index-utility.component.mjs +0 -32
  49. package/esm2022/lib/admin/architecture/elements/cube-view.component.mjs +0 -34
  50. package/esm2022/lib/admin/architecture/elements/cube.component.mjs +0 -254
  51. package/esm2022/lib/admin/architecture/elements/document-state-widget.component.mjs +0 -40
  52. package/esm2022/lib/admin/architecture/elements/documents-report.component.mjs +0 -34
  53. package/esm2022/lib/admin/architecture/elements/documents-widget.component.mjs +0 -40
  54. package/esm2022/lib/admin/architecture/elements/explore-view.component.mjs +0 -35
  55. package/esm2022/lib/admin/architecture/elements/folder.component.mjs +0 -56
  56. package/esm2022/lib/admin/architecture/elements/form-invite.dialog.mjs +0 -126
  57. package/esm2022/lib/admin/architecture/elements/form.component.mjs +0 -156
  58. package/esm2022/lib/admin/architecture/elements/guide.component.mjs +0 -53
  59. package/esm2022/lib/admin/architecture/elements/job.component.mjs +0 -57
  60. package/esm2022/lib/admin/architecture/elements/matrix-view.component.mjs +0 -98
  61. package/esm2022/lib/admin/architecture/elements/node.component.mjs +0 -18
  62. package/esm2022/lib/admin/architecture/elements/parallel-view.component.mjs +0 -38
  63. package/esm2022/lib/admin/architecture/elements/performance-report.component.mjs +0 -32
  64. package/esm2022/lib/admin/architecture/elements/performance-widget.component.mjs +0 -34
  65. package/esm2022/lib/admin/architecture/elements/pivot-view.component.mjs +0 -40
  66. package/esm2022/lib/admin/architecture/elements/policy.component.mjs +0 -18
  67. package/esm2022/lib/admin/architecture/elements/report.component.mjs +0 -29
  68. package/esm2022/lib/admin/architecture/elements/return-to-role-action.component.mjs +0 -33
  69. package/esm2022/lib/admin/architecture/elements/role.component.mjs +0 -43
  70. package/esm2022/lib/admin/architecture/elements/rule.component.mjs +0 -18
  71. package/esm2022/lib/admin/architecture/elements/source.component.mjs +0 -25
  72. package/esm2022/lib/admin/architecture/elements/state.component.mjs +0 -44
  73. package/esm2022/lib/admin/architecture/elements/sum-view.component.mjs +0 -38
  74. package/esm2022/lib/admin/architecture/elements/tasks-report.component.mjs +0 -39
  75. package/esm2022/lib/admin/architecture/elements/type.component.mjs +0 -83
  76. package/esm2022/lib/admin/architecture/elements/usage-report.component.mjs +0 -64
  77. package/esm2022/lib/admin/architecture/elements/utility.component.mjs +0 -18
  78. package/esm2022/lib/admin/architecture/elements/view.component.mjs +0 -18
  79. package/esm2022/lib/admin/architecture/elements/widget.component.mjs +0 -29
  80. package/esm2022/lib/admin/architecture/icon-picker.component.mjs +0 -173
  81. package/esm2022/lib/admin/core/ace.input.mjs +0 -144
  82. package/esm2022/lib/admin/core/color-picker.input.mjs +0 -183
  83. package/esm2022/lib/admin/core/localized-string.component.mjs +0 -129
  84. package/esm2022/lib/admin/core/search.input.mjs +0 -52
  85. package/esm2022/lib/admin/diff/configuration-diff.component.mjs +0 -573
  86. package/esm2022/lib/admin/document-trace/document-trace.component.mjs +0 -537
  87. package/esm2022/lib/admin/document-trace/reassign.dialog.mjs +0 -39
  88. package/esm2022/lib/admin/document-trace/timeline.mjs +0 -2
  89. package/esm2022/lib/admin/document-trace/trace-element.component.mjs +0 -125
  90. package/esm2022/lib/admin/form/designer/box-designer.component.mjs +0 -270
  91. package/esm2022/lib/admin/form/designer/declarations.mjs +0 -2
  92. package/esm2022/lib/admin/form/designer/design-control.component.mjs +0 -41
  93. package/esm2022/lib/admin/form/designer/properties.component.mjs +0 -71
  94. package/esm2022/lib/admin/form/designer/section.component.mjs +0 -53
  95. package/esm2022/lib/admin/form/designer/settings.component.mjs +0 -51
  96. package/esm2022/lib/admin/form/form.resolve.service.mjs +0 -18
  97. package/esm2022/lib/admin/form/workflow/node-ref.mjs +0 -8
  98. package/esm2022/lib/admin/form/workflow/node.component.mjs +0 -156
  99. package/esm2022/lib/admin/form/workflow/role-node.component.mjs +0 -88
  100. package/esm2022/lib/admin/form/workflow/workflow.component.mjs +0 -586
  101. package/esm2022/lib/admin/indices/manage-cube-index.component.mjs +0 -160
  102. package/esm2022/lib/admin/patterns/patterns.component.mjs +0 -180
  103. package/esm2022/lib/admin/permissions/permissions.component.mjs +0 -98
  104. package/esm2022/lib/admin/positions/positions-popup.component.mjs +0 -75
  105. package/esm2022/lib/admin/positions/positions.component.mjs +0 -463
  106. package/esm2022/lib/admin/profiler/outofoffice.component.mjs +0 -156
  107. package/esm2022/lib/admin/profiler/profiler.component.mjs +0 -284
  108. package/esm2022/lib/admin/system.service.mjs +0 -127
  109. package/esm2022/lib/admin/utility-ref.mjs +0 -39
  110. package/esm2022/lib/admin/utility-wrapper.component.mjs +0 -53
  111. package/esm2022/lib/admin/utility.pane.component.mjs +0 -48
  112. package/esm2022/lib/app.component.mjs +0 -73
  113. package/esm2022/lib/bizdoc.module.mjs +0 -110
  114. package/esm2022/lib/browse/browse-items.component.mjs +0 -496
  115. package/esm2022/lib/browse/browse.mobile.component.mjs +0 -102
  116. package/esm2022/lib/browse/browse.pane.component.mjs +0 -169
  117. package/esm2022/lib/browse/expanded-item/expanded-item.component.mjs +0 -316
  118. package/esm2022/lib/browse/filter/filter.component.mjs +0 -140
  119. package/esm2022/lib/browse/folders-menu.component.mjs +0 -49
  120. package/esm2022/lib/chat/chat-info.mjs +0 -77
  121. package/esm2022/lib/chat/chat.mobile.component.mjs +0 -24
  122. package/esm2022/lib/chat/chat.service.mjs +0 -122
  123. package/esm2022/lib/chat/contacts.component.mjs +0 -107
  124. package/esm2022/lib/chat/contacts.pane.component.mjs +0 -26
  125. package/esm2022/lib/chat/conversation.component.mjs +0 -196
  126. package/esm2022/lib/chat/conversation.pane.component.mjs +0 -46
  127. package/esm2022/lib/compose/action/action-picker.component.mjs +0 -82
  128. package/esm2022/lib/compose/action/action-ref.mjs +0 -19
  129. package/esm2022/lib/compose/action/action.base.mjs +0 -50
  130. package/esm2022/lib/compose/action/action.dialog.mjs +0 -62
  131. package/esm2022/lib/compose/action/action.pane.dialog.exp.mjs +0 -68
  132. package/esm2022/lib/compose/action/assign-action.component.mjs +0 -77
  133. package/esm2022/lib/compose/action/moveto-action.component.mjs +0 -90
  134. package/esm2022/lib/compose/action/return-action.component.mjs +0 -51
  135. package/esm2022/lib/compose/attachments/attachments.component.mjs +0 -130
  136. package/esm2022/lib/compose/attachments/preview/attachment-preview.component.mjs +0 -157
  137. package/esm2022/lib/compose/attachments/progress-button.directive.mjs +0 -25
  138. package/esm2022/lib/compose/box/box.component.mjs +0 -44
  139. package/esm2022/lib/compose/box/control.component.mjs +0 -50
  140. package/esm2022/lib/compose/box/row.component.mjs +0 -41
  141. package/esm2022/lib/compose/can-deactivate-changes.service.mjs +0 -27
  142. package/esm2022/lib/compose/comments/comment.component.mjs +0 -188
  143. package/esm2022/lib/compose/comments/comments.component.mjs +0 -226
  144. package/esm2022/lib/compose/comments/comments.pane.component.mjs +0 -40
  145. package/esm2022/lib/compose/comments/edit-comment.component.mjs +0 -32
  146. package/esm2022/lib/compose/comments/edits.component.mjs +0 -30
  147. package/esm2022/lib/compose/comments/quick-comment.component.exp.mjs +0 -64
  148. package/esm2022/lib/compose/comments/votes.component.mjs +0 -42
  149. package/esm2022/lib/compose/compose-resolve.service.mjs +0 -34
  150. package/esm2022/lib/compose/compose.mobile.component.mjs +0 -114
  151. package/esm2022/lib/compose/compose.pane.component.mjs +0 -202
  152. package/esm2022/lib/compose/copy/copy.dialog.mjs +0 -45
  153. package/esm2022/lib/compose/dismiss.service.mjs +0 -25
  154. package/esm2022/lib/compose/document-resolve.service.mjs +0 -33
  155. package/esm2022/lib/compose/document-resolver.service.mjs +0 -17
  156. package/esm2022/lib/compose/document.component.mjs +0 -48
  157. package/esm2022/lib/compose/document.mobile.component.mjs +0 -23
  158. package/esm2022/lib/compose/document.pane.component.mjs +0 -27
  159. package/esm2022/lib/compose/events/events.component.mjs +0 -29
  160. package/esm2022/lib/compose/form-ref.mjs +0 -43
  161. package/esm2022/lib/compose/form-selector/form-selector.sheet.mjs +0 -57
  162. package/esm2022/lib/compose/form.component.mjs +0 -512
  163. package/esm2022/lib/compose/new-menu.component.mjs +0 -94
  164. package/esm2022/lib/compose/overlay.component.exp.mjs +0 -71
  165. package/esm2022/lib/compose/privilage.directive.mjs +0 -64
  166. package/esm2022/lib/compose/recipient-resolver.service.mjs +0 -18
  167. package/esm2022/lib/compose/state.component.mjs +0 -37
  168. package/esm2022/lib/compose/tag/tags.component.mjs +0 -89
  169. package/esm2022/lib/compose/trace/flow.component.mjs +0 -687
  170. package/esm2022/lib/compose/trace/people.component.mjs +0 -39
  171. package/esm2022/lib/compose/trace/trace.base.mjs +0 -79
  172. package/esm2022/lib/compose/trace/trace.component.mjs +0 -353
  173. package/esm2022/lib/compose/trace/trace.pane.component.mjs +0 -48
  174. package/esm2022/lib/compose/version-compare/version-compare.component.mjs +0 -58
  175. package/esm2022/lib/compose/version-compare/version-compare.directive.mjs +0 -343
  176. package/esm2022/lib/compose/version-compare/version.pane.component.mjs +0 -53
  177. package/esm2022/lib/core/account.service.mjs +0 -38
  178. package/esm2022/lib/core/animated-icon/animated-icon.directive.mjs +0 -17
  179. package/esm2022/lib/core/animations.mjs +0 -168
  180. package/esm2022/lib/core/authentication.mjs +0 -4
  181. package/esm2022/lib/core/avatar/avatar.component.mjs +0 -111
  182. package/esm2022/lib/core/base.mjs +0 -2
  183. package/esm2022/lib/core/checkbox.mjs +0 -38
  184. package/esm2022/lib/core/colors.mjs +0 -322
  185. package/esm2022/lib/core/component-factory-resolver.mjs +0 -48
  186. package/esm2022/lib/core/configuration.mjs +0 -17
  187. package/esm2022/lib/core/datasource.service.mjs +0 -75
  188. package/esm2022/lib/core/decorators.mjs +0 -46
  189. package/esm2022/lib/core/document-factory.service.mjs +0 -156
  190. package/esm2022/lib/core/fields/address.designer.mjs +0 -39
  191. package/esm2022/lib/core/fields/address.field.mjs +0 -65
  192. package/esm2022/lib/core/fields/autocomplete.field.mjs +0 -136
  193. package/esm2022/lib/core/fields/axes-picker.designer.mjs +0 -59
  194. package/esm2022/lib/core/fields/axes-picker.field.mjs +0 -46
  195. package/esm2022/lib/core/fields/checkbox.designer.mjs +0 -38
  196. package/esm2022/lib/core/fields/checkbox.field.mjs +0 -35
  197. package/esm2022/lib/core/fields/checklist.designer.mjs +0 -98
  198. package/esm2022/lib/core/fields/checklist.field.mjs +0 -36
  199. package/esm2022/lib/core/fields/date-range.designer.mjs +0 -43
  200. package/esm2022/lib/core/fields/date-range.field.mjs +0 -46
  201. package/esm2022/lib/core/fields/date.designer.mjs +0 -40
  202. package/esm2022/lib/core/fields/date.field.mjs +0 -40
  203. package/esm2022/lib/core/fields/expression.field.mjs +0 -87
  204. package/esm2022/lib/core/fields/file.designer.mjs +0 -39
  205. package/esm2022/lib/core/fields/file.field.mjs +0 -35
  206. package/esm2022/lib/core/fields/html.designer.mjs +0 -61
  207. package/esm2022/lib/core/fields/html.field.mjs +0 -44
  208. package/esm2022/lib/core/fields/input.designer.mjs +0 -38
  209. package/esm2022/lib/core/fields/input.field.mjs +0 -54
  210. package/esm2022/lib/core/fields/localized-string.field.mjs +0 -49
  211. package/esm2022/lib/core/fields/numeric.designer.mjs +0 -72
  212. package/esm2022/lib/core/fields/numeric.field.mjs +0 -37
  213. package/esm2022/lib/core/fields/options.base.mjs +0 -41
  214. package/esm2022/lib/core/fields/options.component.mjs +0 -58
  215. package/esm2022/lib/core/fields/radio-button.designer.mjs +0 -39
  216. package/esm2022/lib/core/fields/radio-button.field.mjs +0 -33
  217. package/esm2022/lib/core/fields/select.designer.mjs +0 -104
  218. package/esm2022/lib/core/fields/select.field.mjs +0 -36
  219. package/esm2022/lib/core/fields/signature.designer.mjs +0 -37
  220. package/esm2022/lib/core/fields/signature.field.mjs +0 -52
  221. package/esm2022/lib/core/fields/switch.field.mjs +0 -35
  222. package/esm2022/lib/core/fields/tags.designer.mjs +0 -28
  223. package/esm2022/lib/core/fields/tags.field.mjs +0 -51
  224. package/esm2022/lib/core/fields/textarea.designer.mjs +0 -33
  225. package/esm2022/lib/core/fields/textarea.field.mjs +0 -37
  226. package/esm2022/lib/core/fields/time.designer.mjs +0 -41
  227. package/esm2022/lib/core/fields/time.field.mjs +0 -39
  228. package/esm2022/lib/core/fields/timespan.field.mjs +0 -82
  229. package/esm2022/lib/core/fields/yesno.designer.mjs +0 -52
  230. package/esm2022/lib/core/fields/yesno.field.mjs +0 -34
  231. package/esm2022/lib/core/firebase.service.mjs +0 -51
  232. package/esm2022/lib/core/functions.mjs +0 -225
  233. package/esm2022/lib/core/guide/guide.component.mjs +0 -220
  234. package/esm2022/lib/core/guide/guide.service.mjs +0 -124
  235. package/esm2022/lib/core/guide/help-tip.component.mjs +0 -52
  236. package/esm2022/lib/core/http.interceptor.mjs +0 -63
  237. package/esm2022/lib/core/hub.service.mjs +0 -117
  238. package/esm2022/lib/core/identity/identity.component.mjs +0 -66
  239. package/esm2022/lib/core/info/attachment-info.service.mjs +0 -53
  240. package/esm2022/lib/core/info/document-info.service.mjs +0 -21
  241. package/esm2022/lib/core/info/location-info.component.mjs +0 -60
  242. package/esm2022/lib/core/info/map-info.mjs +0 -42
  243. package/esm2022/lib/core/inputs/address.input.mjs +0 -203
  244. package/esm2022/lib/core/inputs/auto-complete.input.mjs +0 -273
  245. package/esm2022/lib/core/inputs/combination-picker-body.mjs +0 -171
  246. package/esm2022/lib/core/inputs/combination-picker.mjs +0 -285
  247. package/esm2022/lib/core/inputs/combination-pool.mjs +0 -105
  248. package/esm2022/lib/core/inputs/file.input.mjs +0 -432
  249. package/esm2022/lib/core/inputs/select.input.mjs +0 -254
  250. package/esm2022/lib/core/inputs/signature.input.mjs +0 -150
  251. package/esm2022/lib/core/inputs/time-picker.mjs +0 -195
  252. package/esm2022/lib/core/inputs/timespan.input.mjs +0 -180
  253. package/esm2022/lib/core/layout.component.mjs +0 -93
  254. package/esm2022/lib/core/lottie-animation.exp.mjs +0 -49
  255. package/esm2022/lib/core/mailbox.service.mjs +0 -445
  256. package/esm2022/lib/core/models.mjs +0 -25
  257. package/esm2022/lib/core/none.component.mjs +0 -37
  258. package/esm2022/lib/core/pipes/action.pipe.mjs +0 -25
  259. package/esm2022/lib/core/pipes/calendar.pipe.mjs +0 -72
  260. package/esm2022/lib/core/pipes/date-format.pipe.mjs +0 -19
  261. package/esm2022/lib/core/pipes/daterange.pipe.mjs +0 -62
  262. package/esm2022/lib/core/pipes/difference.pipe.mjs +0 -15
  263. package/esm2022/lib/core/pipes/duration-format.pipe.mjs +0 -48
  264. package/esm2022/lib/core/pipes/duration.pipe.mjs +0 -19
  265. package/esm2022/lib/core/pipes/filter.pipe.mjs +0 -25
  266. package/esm2022/lib/core/pipes/form.pipe.mjs +0 -25
  267. package/esm2022/lib/core/pipes/join.pipe.mjs +0 -18
  268. package/esm2022/lib/core/pipes/localized-string.pipe.mjs +0 -26
  269. package/esm2022/lib/core/pipes/role.pipe.mjs +0 -25
  270. package/esm2022/lib/core/pipes/sanitize-html.pipe.mjs +0 -18
  271. package/esm2022/lib/core/pipes/sort.pipe.mjs +0 -42
  272. package/esm2022/lib/core/pipes/state.pipe.mjs +0 -25
  273. package/esm2022/lib/core/pipes/time-ago.pipe.mjs +0 -51
  274. package/esm2022/lib/core/pipes/to-now.pipe.mjs +0 -66
  275. package/esm2022/lib/core/pipes/translate.pipe.mjs +0 -58
  276. package/esm2022/lib/core/pipes/type-value.pipe.mjs +0 -42
  277. package/esm2022/lib/core/pipes/user-name.pipe.mjs +0 -21
  278. package/esm2022/lib/core/popup/popup-ref.mjs +0 -20
  279. package/esm2022/lib/core/popup/popup.component.mjs +0 -36
  280. package/esm2022/lib/core/popup/popup.service.mjs +0 -158
  281. package/esm2022/lib/core/popup/tooltip.directive.mjs +0 -81
  282. package/esm2022/lib/core/prompt/ask/ask.dialog.mjs +0 -29
  283. package/esm2022/lib/core/prompt/mask/mask.component.mjs +0 -21
  284. package/esm2022/lib/core/prompt.service.mjs +0 -88
  285. package/esm2022/lib/core/router.mjs +0 -37
  286. package/esm2022/lib/core/save-changes.dialog.mjs +0 -18
  287. package/esm2022/lib/core/session.service.mjs +0 -291
  288. package/esm2022/lib/core/slots/pane-ref.mjs +0 -152
  289. package/esm2022/lib/core/slots/router.directive.mjs +0 -68
  290. package/esm2022/lib/core/slots/router.service.mjs +0 -40
  291. package/esm2022/lib/core/slots/slots.component.mjs +0 -1193
  292. package/esm2022/lib/core/sticky-toolbar.exp.mjs +0 -33
  293. package/esm2022/lib/core/tagging/documents.component.mjs +0 -25
  294. package/esm2022/lib/core/tagging/edit-input.component.mjs +0 -238
  295. package/esm2022/lib/core/tagging/emoji.component.mjs +0 -35
  296. package/esm2022/lib/core/tagging/tagging-item.directive.mjs +0 -39
  297. package/esm2022/lib/core/tagging/tagging.component-base.mjs +0 -29
  298. package/esm2022/lib/core/tagging/tagging.directive.mjs +0 -136
  299. package/esm2022/lib/core/tagging/tagging.pipe.mjs +0 -72
  300. package/esm2022/lib/core/tagging/users.component.mjs +0 -32
  301. package/esm2022/lib/core/translate.service.mjs +0 -125
  302. package/esm2022/lib/core/translations.mjs +0 -1068
  303. package/esm2022/lib/core/virtual-tabs.component.exp.mjs +0 -84
  304. package/esm2022/lib/core/window-title.service.mjs +0 -65
  305. package/esm2022/lib/cube/accum/accum.component.mjs +0 -262
  306. package/esm2022/lib/cube/chart/chart.component.mjs +0 -345
  307. package/esm2022/lib/cube/cube-info.service.mjs +0 -103
  308. package/esm2022/lib/cube/cube-menu.component.mjs +0 -25
  309. package/esm2022/lib/cube/cube-view.component.mjs +0 -186
  310. package/esm2022/lib/cube/cube.service.mjs +0 -446
  311. package/esm2022/lib/cube/declarations.mjs +0 -2
  312. package/esm2022/lib/cube/explore/document-item.component.mjs +0 -38
  313. package/esm2022/lib/cube/explore/explore-item.component.mjs +0 -27
  314. package/esm2022/lib/cube/explore/explore-items.component.mjs +0 -193
  315. package/esm2022/lib/cube/explore/explore.pane.component.mjs +0 -78
  316. package/esm2022/lib/cube/explore/item-resolver.service.mjs +0 -30
  317. package/esm2022/lib/cube/explore/item.pane.component.mjs +0 -21
  318. package/esm2022/lib/cube/filter/filter-tags.component.exp.mjs +0 -75
  319. package/esm2022/lib/cube/filter/filter.component.mjs +0 -137
  320. package/esm2022/lib/cube/grid/grid.component.mjs +0 -210
  321. package/esm2022/lib/cube/matrix/matrix.base.mjs +0 -124
  322. package/esm2022/lib/cube/matrix/matrix.mobile.component.mjs +0 -67
  323. package/esm2022/lib/cube/matrix/matrix.pane.component.mjs +0 -78
  324. package/esm2022/lib/cube/matrix/popup.component.mjs +0 -70
  325. package/esm2022/lib/cube/matrix/table.component.mjs +0 -512
  326. package/esm2022/lib/cube/parallel/item.mjs +0 -40
  327. package/esm2022/lib/cube/parallel/parallel.component.mjs +0 -162
  328. package/esm2022/lib/cube/pivot/pivot.component.mjs +0 -564
  329. package/esm2022/lib/cube/spreadsheet/spreadsheet.component.mjs +0 -382
  330. package/esm2022/lib/cube/spreadsheet/spreadsheet.container.exp.mjs +0 -19
  331. package/esm2022/lib/cube/sum/sum.component.mjs +0 -403
  332. package/esm2022/lib/cube/view-base.mjs +0 -74
  333. package/esm2022/lib/cube/view.mobile.component.mjs +0 -121
  334. package/esm2022/lib/cube/view.pane.component.mjs +0 -99
  335. package/esm2022/lib/dashboard/actions/actions.widget.mjs +0 -127
  336. package/esm2022/lib/dashboard/cube/accum-cube.widget.mjs +0 -151
  337. package/esm2022/lib/dashboard/cube/compare.widget.mjs +0 -216
  338. package/esm2022/lib/dashboard/cube/cube-analysis.base.mjs +0 -117
  339. package/esm2022/lib/dashboard/cube/cube-analysis.widget.mjs +0 -50
  340. package/esm2022/lib/dashboard/cube/cube-chart.widget.mjs +0 -146
  341. package/esm2022/lib/dashboard/cube/document-state.widget.mjs +0 -85
  342. package/esm2022/lib/dashboard/cube/documents.widget.mjs +0 -66
  343. package/esm2022/lib/dashboard/cube/filter/filter.component.mjs +0 -61
  344. package/esm2022/lib/dashboard/dashboard.component.mjs +0 -67
  345. package/esm2022/lib/dashboard/dashboard.pane.component.mjs +0 -18
  346. package/esm2022/lib/dashboard/recents/recents.widget.mjs +0 -98
  347. package/esm2022/lib/dashboard/score/activity.widget.mjs +0 -177
  348. package/esm2022/lib/dashboard/score/compare-groups.widget.mjs +0 -215
  349. package/esm2022/lib/dashboard/score/peers-performance.widget.mjs +0 -251
  350. package/esm2022/lib/dashboard/score/pending-results.widget.mjs +0 -59
  351. package/esm2022/lib/dashboard/score/personal-score.widget.mjs +0 -222
  352. package/esm2022/lib/dashboard/widget-item.component.mjs +0 -91
  353. package/esm2022/lib/dashboard/widget-ref.mjs +0 -18
  354. package/esm2022/lib/designer.module.mjs +0 -106
  355. package/esm2022/lib/desktop.module.mjs +0 -140
  356. package/esm2022/lib/home/about/about.dialog.mjs +0 -25
  357. package/esm2022/lib/home/home-base.component.mjs +0 -92
  358. package/esm2022/lib/home/home.desktop.component.mjs +0 -286
  359. package/esm2022/lib/home/home.mobile.component.mjs +0 -131
  360. package/esm2022/lib/home/notifications/notifications.component.mjs +0 -64
  361. package/esm2022/lib/home/outofoffice/outofoffice.component.mjs +0 -37
  362. package/esm2022/lib/home/sign/sign.component.mjs +0 -56
  363. package/esm2022/lib/impersonate/impersonate.component.mjs +0 -77
  364. package/esm2022/lib/mobile.module.mjs +0 -63
  365. package/esm2022/lib/modules/chart.module.mjs +0 -44
  366. package/esm2022/lib/modules/circular-gauge.module.mjs +0 -20
  367. package/esm2022/lib/modules/date.adapter.mjs +0 -23
  368. package/esm2022/lib/modules/datepicker.intl.mjs +0 -41
  369. package/esm2022/lib/modules/dayjs.module.mjs +0 -43
  370. package/esm2022/lib/modules/diagram.module.mjs +0 -43
  371. package/esm2022/lib/modules/gantt.module.mjs +0 -22
  372. package/esm2022/lib/modules/grid.module.mjs +0 -26
  373. package/esm2022/lib/modules/linear-gauge.module.mjs +0 -17
  374. package/esm2022/lib/modules/material.module.mjs +0 -182
  375. package/esm2022/lib/modules/paginator.intl.mjs +0 -21
  376. package/esm2022/lib/modules/pivot.module.mjs +0 -24
  377. package/esm2022/lib/modules/schedule.module.mjs +0 -24
  378. package/esm2022/lib/modules/spreadsheet.module.mjs +0 -28
  379. package/esm2022/lib/modules/stepper.intl.mjs +0 -17
  380. package/esm2022/lib/modules/texteditor.module.mjs +0 -26
  381. package/esm2022/lib/notifications/filter.component.mjs +0 -24
  382. package/esm2022/lib/notifications/notifications-table.component.mjs +0 -105
  383. package/esm2022/lib/notifications/notifications.component-base.mjs +0 -50
  384. package/esm2022/lib/notifications/notifications.mobile.component.mjs +0 -20
  385. package/esm2022/lib/notifications/notifications.pane.component.mjs +0 -21
  386. package/esm2022/lib/notifications/notifications.service.mjs +0 -78
  387. package/esm2022/lib/notifications/types/commented.notification.mjs +0 -60
  388. package/esm2022/lib/notifications/types/cube-anomaly.notification.mjs +0 -58
  389. package/esm2022/lib/notifications/types/escalated.notification.mjs +0 -33
  390. package/esm2022/lib/notifications/types/invite.notification.mjs +0 -45
  391. package/esm2022/lib/notifications/types/liked.notification.mjs +0 -58
  392. package/esm2022/lib/notifications/types/long-running-task.notification.mjs +0 -31
  393. package/esm2022/lib/notifications/types/notification-base.mjs +0 -40
  394. package/esm2022/lib/notifications/types/nudge.notification.mjs +0 -31
  395. package/esm2022/lib/notifications/types/state-changed.notification.mjs +0 -30
  396. package/esm2022/lib/notifications/types/tagged.notification.mjs +0 -43
  397. package/esm2022/lib/notifications/types/text.notification.mjs +0 -23
  398. package/esm2022/lib/notifications/types/upcoming-event.notification.mjs +0 -36
  399. package/esm2022/lib/options/options.component.mjs +0 -308
  400. package/esm2022/lib/options/options.desktop.component.mjs +0 -26
  401. package/esm2022/lib/options/options.mobile.component.mjs +0 -23
  402. package/esm2022/lib/reports/arguments-component.mjs +0 -81
  403. package/esm2022/lib/reports/cube/documents.component.mjs +0 -38
  404. package/esm2022/lib/reports/cube/grid-documents.component.mjs +0 -72
  405. package/esm2022/lib/reports/cube/performance-hilo.component.mjs +0 -260
  406. package/esm2022/lib/reports/cube/performance-wind.component.mjs +0 -269
  407. package/esm2022/lib/reports/cube/table-documents.component.mjs +0 -57
  408. package/esm2022/lib/reports/cube/usage-args.component.mjs +0 -62
  409. package/esm2022/lib/reports/cube/usage-base.mjs +0 -79
  410. package/esm2022/lib/reports/cube/usage-chart.component.mjs +0 -354
  411. package/esm2022/lib/reports/cube/usage-pivot.component.mjs +0 -257
  412. package/esm2022/lib/reports/cube/usage.component.mjs +0 -40
  413. package/esm2022/lib/reports/report-ref.mjs +0 -38
  414. package/esm2022/lib/reports/report-viewer.component.mjs +0 -156
  415. package/esm2022/lib/reports/report.mobile.component.mjs +0 -127
  416. package/esm2022/lib/reports/report.pane.component.mjs +0 -109
  417. package/esm2022/lib/reports/reports-menu.component.mjs +0 -24
  418. package/esm2022/lib/reports/substitution/substitution.component.mjs +0 -39
  419. package/esm2022/lib/reports/table/table-view.component.mjs +0 -40
  420. package/esm2022/lib/reports/tasks/tasks.component.mjs +0 -95
  421. package/esm2022/lib/routes.desktop.mjs +0 -209
  422. package/esm2022/lib/routes.mobile.mjs +0 -84
  423. package/esm2022/lib/scheduler/schedule.component.mjs +0 -164
  424. package/esm2022/lib/scheduler/scheduler.mobile.component.mjs +0 -37
  425. package/esm2022/lib/scheduler/scheduler.pane.component.mjs +0 -50
  426. package/esm2022/lib/search/cube.component.mjs +0 -47
  427. package/esm2022/lib/search/declarations.mjs +0 -7
  428. package/esm2022/lib/search/document.component.mjs +0 -41
  429. package/esm2022/lib/search/guide.component.mjs +0 -28
  430. package/esm2022/lib/search/path.component.mjs +0 -44
  431. package/esm2022/lib/search/search.service.mjs +0 -155
  432. package/esm2022/lib/shared.module.mjs +0 -622
  433. package/esm2022/lib/system.module.mjs +0 -562
  434. package/esm2022/lib/views/cube/chart.component.mjs +0 -74
  435. package/esm2022/lib/views/cube/cube-base.mjs +0 -101
  436. package/esm2022/lib/views/cube/explore.component.mjs +0 -85
  437. package/esm2022/lib/views/cube/matrix.component.mjs +0 -101
  438. package/esm2022/lib/views/cube/parallel.component.mjs +0 -53
  439. package/esm2022/lib/views/cube/pivot.component.mjs +0 -50
  440. package/esm2022/lib/views/cube/sum.component.mjs +0 -66
  441. package/esm2022/lib/views/cube/view.component.mjs +0 -101
  442. package/esm2022/lib/views/document-view-ref.mjs +0 -27
  443. package/esm2022/lib/views/timeline/timeline.component.mjs +0 -329
  444. package/esm2022/lib/views/view-item.component.mjs +0 -68
  445. package/esm2022/lib/views/views.component.mjs +0 -32
  446. package/esm2022/lib/views/views.mobile.component.mjs +0 -21
  447. package/esm2022/lib/views/views.pane.component.mjs +0 -29
  448. package/esm2022/public-api.mjs +0 -182
@@ -1,273 +0,0 @@
1
- import { Component, Input, HostBinding, Optional, Self, Output, EventEmitter, ViewChild } from '@angular/core';
2
- import { FormControl, Validators } from '@angular/forms';
3
- import { MatFormFieldControl } from '@angular/material/form-field';
4
- import { MatAutocompleteTrigger } from '@angular/material/autocomplete';
5
- import { coerceBooleanProperty } from '@angular/cdk/coercion';
6
- import { Subject } from 'rxjs';
7
- import { debounceTime, takeUntil, switchMap, filter } from 'rxjs/operators';
8
- import { isObject, isString } from '../functions';
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "@angular/forms";
11
- import * as i2 from "@angular/cdk/a11y";
12
- import * as i3 from "../session.service";
13
- import * as i4 from "../datasource.service";
14
- import * as i5 from "@angular/material/autocomplete";
15
- import * as i6 from "@angular/material/core";
16
- import * as i7 from "@angular/material/form-field";
17
- import * as i8 from "@angular/material/button";
18
- import * as i9 from "@angular/material/input";
19
- import * as i10 from "@angular/material/icon";
20
- import * as i11 from "@angular/common";
21
- export class TypeAutocomplete {
22
- focus() {
23
- this.inputElement.nativeElement.focus();
24
- }
25
- static { this.nextId = 0; }
26
- get placeholder() {
27
- return this._placeholder;
28
- }
29
- set placeholder(plh) {
30
- this._placeholder = plh;
31
- this.stateChanges.next();
32
- }
33
- _optionSelected(e) {
34
- const { value, key } = e.option.value || {};
35
- const text = this._column ? value[this._column.name] : value;
36
- this._value = key;
37
- this._textFormControl && this._textFormControl.setValue(text, { emitEvent: false });
38
- this.textChange.emit(text);
39
- this.optionSelected.emit({ value: key, text });
40
- this._onChange && this._onChange(key);
41
- }
42
- get empty() { return !this._control.value || this._control.value === ''; }
43
- get shouldLabelFloat() {
44
- return this.focused || !this.empty;
45
- }
46
- get required() {
47
- return this._required;
48
- }
49
- set required(req) {
50
- this._required = coerceBooleanProperty(req);
51
- if (this._required)
52
- this._control.setValidators(Validators.required);
53
- else
54
- this._control.clearValidators();
55
- this.stateChanges.next();
56
- }
57
- get disabled() { return this._disabled; }
58
- set disabled(value) {
59
- this._disabled = coerceBooleanProperty(value);
60
- if (this._control.disabled !== this._disabled) {
61
- if (this._disabled)
62
- this._control.disable();
63
- else
64
- this._control.enable();
65
- }
66
- this.stateChanges.next();
67
- }
68
- setDescribedByIds(ids) {
69
- this.describedBy = ids.join(' ');
70
- }
71
- onContainerClick() {
72
- this.inputElement.nativeElement.focus();
73
- this.trigger.openPanel();
74
- }
75
- clear() {
76
- this._setValue(null, true);
77
- this._onChange && this._onChange(null);
78
- }
79
- writeValue(obj) {
80
- this._setValue(obj, false);
81
- }
82
- registerOnChange(fn) {
83
- this._onChange = fn;
84
- }
85
- registerOnTouched(fn) {
86
- this._onTouched = fn;
87
- }
88
- setDisabledState(isDisabled) {
89
- this.disabled = isDisabled;
90
- }
91
- get value() {
92
- return this._value;
93
- }
94
- set value(val) {
95
- this._setValue(val, true);
96
- this.stateChanges.next();
97
- }
98
- set minimumChars(val) { this._minimumChars = val; }
99
- _setValue(val, emitEvent) {
100
- this._value = val;
101
- //if (val)
102
- //this.service.get(this.source, val).subscribe(v => {
103
- //});
104
- this._control.setValue(val ? { key: val, value: this.text || val } : val, { emitEvent });
105
- }
106
- ngDoCheck() {
107
- if (this.ngControl) {
108
- this.errorState = this.ngControl.invalid && this.ngControl.touched;
109
- this.stateChanges.next();
110
- }
111
- }
112
- _onFocus() {
113
- this.focused = true;
114
- this._onTouched && this._onTouched();
115
- }
116
- _onBlur() {
117
- this.focused = false;
118
- }
119
- set textFormControlName(val) {
120
- const parent = this.ngControl.control.parent;
121
- this._textFormControl = parent.controls[val];
122
- }
123
- set textFormControl(val) {
124
- this._textFormControl = val;
125
- }
126
- constructor(ngControl, _fm, _elRef, _session, _service) {
127
- this.ngControl = ngControl;
128
- this._fm = _fm;
129
- this._elRef = _elRef;
130
- this._session = _session;
131
- this._service = _service;
132
- this._required = false;
133
- this._disabled = false;
134
- this._control = new FormControl();
135
- this.stateChanges = new Subject();
136
- this.id = `type-auto-complete-${TypeAutocomplete.nextId++}`;
137
- this.textChange = new EventEmitter();
138
- this.optionSelected = new EventEmitter();
139
- this.displayFn = (item) => {
140
- if (!item)
141
- return undefined;
142
- if (!isObject(item.value))
143
- return item.value;
144
- else {
145
- let name = Object.keys(item.value)[0];
146
- return item.value[name];
147
- }
148
- };
149
- this.focused = false;
150
- this.errorState = false;
151
- this.controlType = 'bizdoc-type-auto-complete';
152
- this.describedBy = '';
153
- this._minimumChars = 1;
154
- this._destroy = new Subject();
155
- if (this.ngControl != null) {
156
- this.ngControl.valueAccessor = this;
157
- }
158
- _fm.monitor(_elRef.nativeElement, true).subscribe(origin => {
159
- this.focused = !!origin;
160
- this.stateChanges.next();
161
- });
162
- }
163
- ngOnInit() {
164
- this._configuration = this._session.profile.types.find(t => t.name === this._type);
165
- if (!this._configuration)
166
- throw `${this._type} is not a known type.`;
167
- this._column = this._configuration.columns ? this._configuration.columns.find(c => !c.flags || c.flags.indexOf('Key') < 0) : undefined;
168
- this._items$ = this._control.valueChanges.pipe(takeUntil(this._destroy), debounceTime(250), filter(v => isString(v) && v.length > this._minimumChars), switchMap(v => this._service.all(this._type, v)));
169
- this._control.statusChanges.pipe(takeUntil(this._destroy)).subscribe(() => {
170
- this.errorState = this._control.errors != null;
171
- });
172
- const val = this.value;
173
- if (val)
174
- this._service.get(this._type, val).subscribe(v => this._control.setValue({ key: val, value: v || val }, { emitEvent: false }));
175
- }
176
- ngOnDestroy() {
177
- this._destroy.next();
178
- this._destroy.complete();
179
- this._fm.stopMonitoring(this._elRef.nativeElement);
180
- this.stateChanges.complete();
181
- this.textChange.complete();
182
- this.optionSelected.complete();
183
- }
184
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: TypeAutocomplete, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i2.FocusMonitor }, { token: i0.ElementRef }, { token: i3.SessionService }, { token: i4.DatasourceService }], target: i0.ɵɵFactoryTarget.Component }); }
185
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.5", type: TypeAutocomplete, selector: "bizdoc-autocomplete", inputs: { _type: ["type", "_type"], placeholder: "placeholder", text: "text", required: "required", disabled: "disabled", value: "value", minimumChars: "minimumChars", textFormControlName: "textFormControlName", textFormControl: "textFormControl" }, outputs: { textChange: "textChange", optionSelected: "optionSelected" }, host: { properties: { "class.floating": "this.shouldLabelFloat", "attr.aria-describedby": "this.describedBy", "id": "this.id" }, classAttribute: "row" }, providers: [{ provide: MatFormFieldControl, useExisting: TypeAutocomplete }], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["input"], descendants: true, static: true }, { propertyName: "trigger", first: true, predicate: ["input"], descendants: true, read: MatAutocompleteTrigger, static: true }], ngImport: i0, template: `<input matInput [matAutocomplete]="auto" [placeholder]="placeholder" [formControl]="_control" #input
186
- (focus)="_onFocus()" (blur)="_onBlur()" [required]="required"/>
187
- <mat-autocomplete #auto (optionSelected)="_optionSelected($event)" [displayWith]='displayFn'>
188
- @for (v of _items$ | async; track v) {
189
- <mat-option [value]="v">
190
- @if (!_column) {
191
- <span>{{v.value}}</span>
192
- }
193
- @if (_column) {
194
- <span>{{v.value[_column.name]}}</span>
195
- }
196
- </mat-option>
197
- }
198
- </mat-autocomplete>
199
- @if (_control.value) {
200
- <button mat-icon-button matSuffix (click)="clear()"><mat-icon>close</mat-icon></button>
201
- }`, isInline: true, dependencies: [{ kind: "directive", 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]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i6.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "directive", type: i7.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i11.AsyncPipe, name: "async" }] }); }
202
- }
203
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: TypeAutocomplete, decorators: [{
204
- type: Component,
205
- args: [{
206
- selector: 'bizdoc-autocomplete',
207
- providers: [{ provide: MatFormFieldControl, useExisting: TypeAutocomplete }],
208
- template: `<input matInput [matAutocomplete]="auto" [placeholder]="placeholder" [formControl]="_control" #input
209
- (focus)="_onFocus()" (blur)="_onBlur()" [required]="required"/>
210
- <mat-autocomplete #auto (optionSelected)="_optionSelected($event)" [displayWith]='displayFn'>
211
- @for (v of _items$ | async; track v) {
212
- <mat-option [value]="v">
213
- @if (!_column) {
214
- <span>{{v.value}}</span>
215
- }
216
- @if (_column) {
217
- <span>{{v.value[_column.name]}}</span>
218
- }
219
- </mat-option>
220
- }
221
- </mat-autocomplete>
222
- @if (_control.value) {
223
- <button mat-icon-button matSuffix (click)="clear()"><mat-icon>close</mat-icon></button>
224
- }`,
225
- host: {
226
- class: 'row',
227
- '[class.floating]': 'shouldLabelFloat',
228
- '[attr.aria-describedby]': 'describedBy'
229
- },
230
- }]
231
- }], ctorParameters: () => [{ type: i1.NgControl, decorators: [{
232
- type: Optional
233
- }, {
234
- type: Self
235
- }] }, { type: i2.FocusMonitor }, { type: i0.ElementRef }, { type: i3.SessionService }, { type: i4.DatasourceService }], propDecorators: { inputElement: [{
236
- type: ViewChild,
237
- args: ['input', { static: true }]
238
- }], trigger: [{
239
- type: ViewChild,
240
- args: ['input', { static: true, read: MatAutocompleteTrigger }]
241
- }], id: [{
242
- type: HostBinding
243
- }], _type: [{
244
- type: Input,
245
- args: ['type']
246
- }], placeholder: [{
247
- type: Input
248
- }], text: [{
249
- type: Input
250
- }], textChange: [{
251
- type: Output
252
- }], optionSelected: [{
253
- type: Output
254
- }], shouldLabelFloat: [{
255
- type: HostBinding,
256
- args: ['class.floating']
257
- }], required: [{
258
- type: Input
259
- }], disabled: [{
260
- type: Input
261
- }], describedBy: [{
262
- type: HostBinding,
263
- args: ['attr.aria-describedby']
264
- }], value: [{
265
- type: Input
266
- }], minimumChars: [{
267
- type: Input
268
- }], textFormControlName: [{
269
- type: Input
270
- }], textFormControl: [{
271
- type: Input
272
- }] } });
273
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by1jb21wbGV0ZS5pbnB1dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9jb3JlL2lucHV0cy9hdXRvLWNvbXBsZXRlLmlucHV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFhLFdBQVcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFzQixNQUFNLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBVyxNQUFNLGVBQWUsQ0FBQztBQUN2SixPQUFPLEVBQW1DLFdBQVcsRUFBRSxVQUFVLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRSxPQUFPLEVBQWdDLHNCQUFzQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFdEcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDOUQsT0FBTyxFQUFFLE9BQU8sRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJNUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7Ozs7Ozs7Ozs7QUEyQmxELE1BQU0sT0FDRSxnQkFBZ0I7SUFDdEIsS0FBSztRQUNILElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzFDLENBQUM7YUFDYyxXQUFNLEdBQUcsQ0FBQyxBQUFKLENBQUs7SUFpQjFCLElBQWEsV0FBVztRQUN0QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUNELElBQUksV0FBVyxDQUFDLEdBQVc7UUFDekIsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUM7UUFD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QUMsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxrQkFBa0IsRUFBRSxDQUFDO29CQUM1RSxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7UUFnQko7b0JBQ04sSUFBSSxFQUFFO3dCQUNKLEtBQUssRUFBRSxLQUFLO3dCQUNaLGtCQUFrQixFQUFFLGtCQUFrQjt3QkFDdEMseUJBQXlCLEVBQUUsYUFBYTtxQkFDekM7aUJBQ0Y7OzBCQW1KYyxRQUFROzswQkFBSSxJQUFJOzBKQWpJUyxZQUFZO3NCQUFqRCxTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ2dDLE9BQU87c0JBQTFFLFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsc0JBQXNCLEVBQUU7Z0JBQzFDLEVBQUU7c0JBQXpCLFdBQVc7Z0JBQ0csS0FBSztzQkFBbkIsS0FBSzt1QkFBQyxNQUFNO2dCQUVBLFdBQVc7c0JBQXZCLEtBQUs7Z0JBT0csSUFBSTtzQkFBWixLQUFLO2dCQUNhLFVBQVU7c0JBQTVCLE1BQU07Z0JBQ1ksY0FBYztzQkFBaEMsTUFBTTtnQkF1QkgsZ0JBQWdCO3NCQURuQixXQUFXO3VCQUFDLGdCQUFnQjtnQkFLekIsUUFBUTtzQkFEWCxLQUFLO2dCQWFGLFFBQVE7c0JBRFgsS0FBSztnQkFjZ0MsV0FBVztzQkFBaEQsV0FBVzt1QkFBQyx1QkFBdUI7Z0JBeUJ2QixLQUFLO3NCQUFqQixLQUFLO2dCQVFPLFlBQVk7c0JBQXhCLEtBQUs7Z0JBc0JPLG1CQUFtQjtzQkFBL0IsS0FBSztnQkFJTyxlQUFlO3NCQUEzQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBIb3N0QmluZGluZywgT3B0aW9uYWwsIFNlbGYsIE9uSW5pdCwgRWxlbWVudFJlZiwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFZpZXdDaGlsZCwgRG9DaGVjayB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ0NvbnRyb2wsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtQ29udHJvbCwgVmFsaWRhdG9ycywgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQsIE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xyXG5pbXBvcnQgeyBGb2N1c01vbml0b3IgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XHJcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XHJcbmltcG9ydCB7IFN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlVW50aWwsIHN3aXRjaE1hcCwgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uL3Nlc3Npb24uc2VydmljZSc7XHJcbmltcG9ydCB7IERhdGFzb3VyY2VTZXJ2aWNlIH0gZnJvbSAnLi4vZGF0YXNvdXJjZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHlwZSwgRmllbGRJbmZvIH0gZnJvbSAnLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgaXNPYmplY3QsIGlzU3RyaW5nIH0gZnJvbSAnLi4vZnVuY3Rpb25zJztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdiaXpkb2MtYXV0b2NvbXBsZXRlJyxcclxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE1hdEZvcm1GaWVsZENvbnRyb2wsIHVzZUV4aXN0aW5nOiBUeXBlQXV0b2NvbXBsZXRlIH1dLFxyXG4gIHRlbXBsYXRlOiBgPGlucHV0IG1hdElucHV0IFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiIFtmb3JtQ29udHJvbF09XCJfY29udHJvbFwiICNpbnB1dFxyXG4gICAgICAoZm9jdXMpPVwiX29uRm9jdXMoKVwiIChibHVyKT1cIl9vbkJsdXIoKVwiIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiLz5cclxuICAgICAgPG1hdC1hdXRvY29tcGxldGUgI2F1dG8gKG9wdGlvblNlbGVjdGVkKT1cIl9vcHRpb25TZWxlY3RlZCgkZXZlbnQpXCIgW2Rpc3BsYXlXaXRoXT0nZGlzcGxheUZuJz5cclxuICAgICAgICBAZm9yICh2IG9mIF9pdGVtcyQgfCBhc3luYzsgdHJhY2sgdikge1xyXG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cInZcIj5cclxuICAgICAgICAgICAgQGlmICghX2NvbHVtbikge1xyXG4gICAgICAgICAgICAgIDxzcGFuPnt7di52YWx1ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIEBpZiAoX2NvbHVtbikge1xyXG4gICAgICAgICAgICAgIDxzcGFuPnt7di52YWx1ZVtfY29sdW1uLm5hbWVdfX08L3NwYW4+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICB9XHJcbiAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cclxuICAgICAgQGlmIChfY29udHJvbC52YWx1ZSkge1xyXG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIG1hdFN1ZmZpeCAoY2xpY2spPVwiY2xlYXIoKVwiPjxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICAgIH1gLFxyXG4gIGhvc3Q6IHtcclxuICAgIGNsYXNzOiAncm93JyxcclxuICAgICdbY2xhc3MuZmxvYXRpbmddJzogJ3Nob3VsZExhYmVsRmxvYXQnLFxyXG4gICAgJ1thdHRyLmFyaWEtZGVzY3JpYmVkYnldJzogJ2Rlc2NyaWJlZEJ5J1xyXG4gIH0sXHJcbn0pXHJcbmV4cG9ydFxyXG4gIGNsYXNzIFR5cGVBdXRvY29tcGxldGUgaW1wbGVtZW50cyBNYXRGb3JtRmllbGRDb250cm9sPHN0cmluZyB8IG51bGw+LCBEb0NoZWNrLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25EZXN0cm95LCBPbkluaXQge1xyXG4gIGZvY3VzKCkge1xyXG4gICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gIH1cclxuICBwcml2YXRlIHN0YXRpYyBuZXh0SWQgPSAwO1xyXG4gIHByaXZhdGUgX3BsYWNlaG9sZGVyOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBfcmVxdWlyZWQgPSBmYWxzZTtcclxuICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX3ZhbHVlPzogc3RyaW5nIHwgbnVsbDtcclxuICBwcml2YXRlIF9vbkNoYW5nZTogYW55O1xyXG4gIHByaXZhdGUgX29uVG91Y2hlZDogYW55O1xyXG4gIHJlYWRvbmx5IF9jb250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XHJcbiAgcmVhZG9ubHkgc3RhdGVDaGFuZ2VzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBfaXRlbXMkOiBPYnNlcnZhYmxlPEtleVZhbHVlW10+O1xyXG4gIF9jb2x1bW4/OiBGaWVsZEluZm87XHJcbiAgcHJpdmF0ZSBfY29uZmlndXJhdGlvbjogVHlwZTtcclxuICBAVmlld0NoaWxkKCdpbnB1dCcsIHsgc3RhdGljOiB0cnVlIH0pIGlucHV0RWxlbWVudDogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdpbnB1dCcsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBNYXRBdXRvY29tcGxldGVUcmlnZ2VyIH0pIHRyaWdnZXI6IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXI7XHJcbiAgQEhvc3RCaW5kaW5nKCkgcmVhZG9ubHkgaWQgPSBgdHlwZS1hdXRvLWNvbXBsZXRlLSR7VHlwZUF1dG9jb21wbGV0ZS5uZXh0SWQrK31gO1xyXG4gIEBJbnB1dCgndHlwZScpIF90eXBlITogc3RyaW5nO1xyXG4gIHByaXZhdGUgX3RleHRGb3JtQ29udHJvbDogRm9ybUNvbnRyb2w7XHJcbiAgQElucHV0KCkgZ2V0IHBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGxhY2Vob2xkZXI7XHJcbiAgfVxyXG4gIHNldCBwbGFjZWhvbGRlcihwbGg6IHN0cmluZykge1xyXG4gICAgdGhpcy5fcGxhY2Vob2xkZXIgPSBwbGg7XHJcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIHRleHQ6IHN0cmluZztcclxuICBAT3V0cHV0KCkgcmVhZG9ubHkgdGV4dENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBPdXRwdXQoKSByZWFkb25seSBvcHRpb25TZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudD4oKTtcclxuICBkaXNwbGF5Rm4gPSAoaXRlbTogeyB2YWx1ZTogYW55IH0pID0+IHtcclxuICAgIGlmICghaXRlbSlcclxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIGlmICghaXNPYmplY3QoaXRlbS52YWx1ZSkpXHJcbiAgICAgIHJldHVybiBpdGVtLnZhbHVlO1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIGxldCBuYW1lID0gT2JqZWN0LmtleXMoaXRlbS52YWx1ZSlbMF07XHJcbiAgICAgIHJldHVybiBpdGVtLnZhbHVlW25hbWVdO1xyXG4gICAgfVxyXG4gIH1cclxuICBfb3B0aW9uU2VsZWN0ZWQoZTogTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCkge1xyXG4gICAgY29uc3QgeyB2YWx1ZSwga2V5IH0gPSBlLm9wdGlvbi52YWx1ZSBhcyBLZXlWYWx1ZSB8fCB7fTtcclxuICAgIGNvbnN0IHRleHQgPSB0aGlzLl9jb2x1bW4gPyB2YWx1ZVt0aGlzLl9jb2x1bW4ubmFtZV0gOiB2YWx1ZTtcclxuICAgIHRoaXMuX3ZhbHVlID0ga2V5O1xyXG4gICAgdGhpcy5fdGV4dEZvcm1Db250cm9sICYmIHRoaXMuX3RleHRGb3JtQ29udHJvbC5zZXRWYWx1ZSh0ZXh0LCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICB0aGlzLnRleHRDaGFuZ2UuZW1pdCh0ZXh0KTtcclxuICAgIHRoaXMub3B0aW9uU2VsZWN0ZWQuZW1pdCh7IHZhbHVlOiBrZXksIHRleHQgfSk7XHJcbiAgICB0aGlzLl9vbkNoYW5nZSAmJiB0aGlzLl9vbkNoYW5nZShrZXkpO1xyXG4gIH1cclxuICBmb2N1c2VkID0gZmFsc2U7XHJcbiAgZ2V0IGVtcHR5KCk6IGJvb2xlYW4geyByZXR1cm4gIXRoaXMuX2NvbnRyb2wudmFsdWUgfHwgdGhpcy5fY29udHJvbC52YWx1ZSA9PT0gJyc7IH1cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZsb2F0aW5nJylcclxuICBnZXQgc2hvdWxkTGFiZWxGbG9hdCgpIHtcclxuICAgIHJldHVybiB0aGlzLmZvY3VzZWQgfHwgIXRoaXMuZW1wdHk7XHJcbiAgfVxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkO1xyXG4gIH1cclxuICBzZXQgcmVxdWlyZWQocmVxOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9yZXF1aXJlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShyZXEpO1xyXG4gICAgaWYgKHRoaXMuX3JlcXVpcmVkKVxyXG4gICAgICB0aGlzLl9jb250cm9sLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuX2NvbnRyb2wuY2xlYXJWYWxpZGF0b3JzKCk7XHJcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcbiAgfVxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7IH1cclxuICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2Rpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcclxuICAgIGlmICh0aGlzLl9jb250cm9sLmRpc2FibGVkICE9PSB0aGlzLl9kaXNhYmxlZCkge1xyXG4gICAgICBpZiAodGhpcy5fZGlzYWJsZWQpXHJcbiAgICAgICAgdGhpcy5fY29udHJvbC5kaXNhYmxlKCk7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICB0aGlzLl9jb250cm9sLmVuYWJsZSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG4gIH1cclxuICBlcnJvclN0YXRlID0gZmFsc2U7XHJcbiAgY29udHJvbFR5cGU/OiBzdHJpbmcgPSAnYml6ZG9jLXR5cGUtYXV0by1jb21wbGV0ZSc7XHJcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtZGVzY3JpYmVkYnknKSBkZXNjcmliZWRCeSA9ICcnO1xyXG5cclxuICBzZXREZXNjcmliZWRCeUlkcyhpZHM6IHN0cmluZ1tdKSB7XHJcbiAgICB0aGlzLmRlc2NyaWJlZEJ5ID0gaWRzLmpvaW4oJyAnKTtcclxuICB9XHJcbiAgb25Db250YWluZXJDbGljaygpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgIHRoaXMudHJpZ2dlci5vcGVuUGFuZWwoKTtcclxuICB9XHJcbiAgY2xlYXIoKSB7XHJcbiAgICB0aGlzLl9zZXRWYWx1ZShudWxsLCB0cnVlKTtcclxuICAgIHRoaXMuX29uQ2hhbmdlICYmIHRoaXMuX29uQ2hhbmdlKG51bGwpO1xyXG4gIH1cclxuICB3cml0ZVZhbHVlKG9iajogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLl9zZXRWYWx1ZShvYmosIGZhbHNlKTtcclxuICB9XHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLl9vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLl9vblRvdWNoZWQgPSBmbjtcclxuICB9XHJcbiAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIGdldCB2YWx1ZSgpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLl92YWx1ZSBhcyBzdHJpbmcgfCBudWxsO1xyXG4gIH1cclxuICBzZXQgdmFsdWUodmFsOiBzdHJpbmcgfCBudWxsKSB7XHJcbiAgICB0aGlzLl9zZXRWYWx1ZSh2YWwsIHRydWUpO1xyXG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG4gIH1cclxuICBwcml2YXRlIF9taW5pbXVtQ2hhcnMgPSAxO1xyXG4gIEBJbnB1dCgpIHNldCBtaW5pbXVtQ2hhcnModmFsOiBudW1iZXIpIHsgdGhpcy5fbWluaW11bUNoYXJzID0gdmFsOyB9XHJcbiAgcHJpdmF0ZSBfc2V0VmFsdWUodmFsOiBzdHJpbmcgfCBudWxsLCBlbWl0RXZlbnQ6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX3ZhbHVlID0gdmFsO1xyXG4gICAgLy9pZiAodmFsKVxyXG4gICAgLy90aGlzLnNlcnZpY2UuZ2V0KHRoaXMuc291cmNlLCB2YWwpLnN1YnNjcmliZSh2ID0+IHtcclxuICAgIC8vfSk7XHJcbiAgICB0aGlzLl9jb250cm9sLnNldFZhbHVlKHZhbCA/IHsga2V5OiB2YWwsIHZhbHVlOiB0aGlzLnRleHQgfHwgdmFsIH0gOiB2YWwsIHsgZW1pdEV2ZW50IH0pO1xyXG4gIH1cclxuICBuZ0RvQ2hlY2soKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcclxuICAgICAgdGhpcy5lcnJvclN0YXRlID0gKHRoaXMubmdDb250cm9sLmludmFsaWQgYXMgYm9vbGVhbikgJiYgKHRoaXMubmdDb250cm9sLnRvdWNoZWQgYXMgYm9vbGVhbik7XHJcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIF9vbkZvY3VzKCkge1xyXG4gICAgdGhpcy5mb2N1c2VkID0gdHJ1ZTtcclxuICAgIHRoaXMuX29uVG91Y2hlZCAmJiB0aGlzLl9vblRvdWNoZWQoKTtcclxuICB9XHJcbiAgX29uQmx1cigpIHtcclxuICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xyXG4gIH1cclxuICBASW5wdXQoKSBzZXQgdGV4dEZvcm1Db250cm9sTmFtZSh2YWw6IHN0cmluZykge1xyXG4gICAgY29uc3QgcGFyZW50ID0gKHRoaXMubmdDb250cm9sLmNvbnRyb2wgYXMgRm9ybUNvbnRyb2wpLnBhcmVudCEgYXMgRm9ybUdyb3VwO1xyXG4gICAgdGhpcy5fdGV4dEZvcm1Db250cm9sID0gcGFyZW50LmNvbnRyb2xzW3ZhbF0gYXMgRm9ybUNvbnRyb2w7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIHNldCB0ZXh0Rm9ybUNvbnRyb2wodmFsOiBGb3JtQ29udHJvbCkge1xyXG4gICAgdGhpcy5fdGV4dEZvcm1Db250cm9sID0gdmFsO1xyXG4gIH1cclxuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBAU2VsZigpIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCwgcHJpdmF0ZSBfZm06IEZvY3VzTW9uaXRvciwgcHJpdmF0ZSBfZWxSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LCBwcml2YXRlIF9zZXNzaW9uOiBTZXNzaW9uU2VydmljZSwgcHJpdmF0ZSBfc2VydmljZTogRGF0YXNvdXJjZVNlcnZpY2UpIHtcclxuICAgIGlmICh0aGlzLm5nQ29udHJvbCAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xyXG4gICAgfVxyXG4gICAgX2ZtLm1vbml0b3IoX2VsUmVmLm5hdGl2ZUVsZW1lbnQsIHRydWUpLnN1YnNjcmliZShvcmlnaW4gPT4ge1xyXG4gICAgICB0aGlzLmZvY3VzZWQgPSAhIW9yaWdpbjtcclxuICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fY29uZmlndXJhdGlvbiA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS50eXBlcy5maW5kKHQgPT4gdC5uYW1lID09PSB0aGlzLl90eXBlKSE7XHJcbiAgICBpZiAoIXRoaXMuX2NvbmZpZ3VyYXRpb24pXHJcbiAgICAgIHRocm93IGAke3RoaXMuX3R5cGV9IGlzIG5vdCBhIGtub3duIHR5cGUuYDtcclxuICAgIHRoaXMuX2NvbHVtbiA9IHRoaXMuX2NvbmZpZ3VyYXRpb24uY29sdW1ucyA/IHRoaXMuX2NvbmZpZ3VyYXRpb24uY29sdW1ucy5maW5kKGMgPT4gIWMuZmxhZ3MgfHwgYy5mbGFncy5pbmRleE9mKCdLZXknKSA8IDApIDogdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5faXRlbXMkID0gdGhpcy5fY29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpLFxyXG4gICAgICBkZWJvdW5jZVRpbWUoMjUwKSxcclxuICAgICAgZmlsdGVyKHYgPT4gaXNTdHJpbmcodikgJiYgdi5sZW5ndGggPiB0aGlzLl9taW5pbXVtQ2hhcnMpLFxyXG4gICAgICBzd2l0Y2hNYXAodiA9PlxyXG4gICAgICAgIHRoaXMuX3NlcnZpY2UuYWxsKHRoaXMuX3R5cGUsIHYpKSk7XHJcbiAgICB0aGlzLl9jb250cm9sLnN0YXR1c0NoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZXJyb3JTdGF0ZSA9IHRoaXMuX2NvbnRyb2wuZXJyb3JzICE9IG51bGw7XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IHZhbCA9IHRoaXMudmFsdWU7XHJcbiAgICBpZiAodmFsKVxyXG4gICAgICB0aGlzLl9zZXJ2aWNlLmdldCh0aGlzLl90eXBlLCB2YWwpLnN1YnNjcmliZSh2ID0+XHJcbiAgICAgICAgdGhpcy5fY29udHJvbC5zZXRWYWx1ZSh7IGtleTogdmFsLCB2YWx1ZTogdiB8fCB2YWwgfSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pKTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kZXN0cm95Lm5leHQoKTtcclxuICAgIHRoaXMuX2Rlc3Ryb3kuY29tcGxldGUoKTtcclxuICAgIHRoaXMuX2ZtLnN0b3BNb25pdG9yaW5nKHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMuY29tcGxldGUoKTtcclxuICAgIHRoaXMudGV4dENoYW5nZS5jb21wbGV0ZSgpO1xyXG4gICAgdGhpcy5vcHRpb25TZWxlY3RlZC5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG5pbnRlcmZhY2UgS2V5VmFsdWUgeyBrZXk6IGFueSwgdmFsdWU6IGFueSB9XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQge1xyXG4gIHJlYWRvbmx5IHRleHQ6IHN0cmluZztcclxuICByZWFkb25seSB2YWx1ZTogYW55O1xyXG59XHJcbiJdfQ==
@@ -1,171 +0,0 @@
1
- import { Component, InjectionToken, Optional, Inject, EventEmitter, ViewChildren } from "@angular/core";
2
- import { MatSelect } from "@angular/material/select";
3
- import { MAT_DIALOG_DATA } from "@angular/material/dialog";
4
- import { finalize } from "rxjs/operators";
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/forms";
7
- import * as i2 from "../prompt.service";
8
- import * as i3 from "../../cube/cube-info.service";
9
- import * as i4 from "../datasource.service";
10
- import * as i5 from "../session.service";
11
- import * as i6 from "../../cube/cube.service";
12
- import * as i7 from "@angular/material/progress-bar";
13
- import * as i8 from "@angular/material/list";
14
- import * as i9 from "@angular/material/core";
15
- import * as i10 from "@angular/material/form-field";
16
- import * as i11 from "@angular/material/select";
17
- import * as i12 from "@angular/material/button";
18
- import * as i13 from "@angular/material/icon";
19
- import * as i14 from "../popup/tooltip.directive";
20
- import * as i15 from "../pipes/translate.pipe";
21
- export const COMBINATION_PICKER_BODY = new InjectionToken('combination_body');
22
- /** */
23
- export class CombinationPickerBody {
24
- constructor(dialogData, overlayData, _fb, _snackbar, _accountInfo, _ds, _cd, _session, _service) {
25
- this._fb = _fb;
26
- this._snackbar = _snackbar;
27
- this._accountInfo = _accountInfo;
28
- this._ds = _ds;
29
- this._cd = _cd;
30
- this._session = _session;
31
- this._service = _service;
32
- this.selectionChange = new EventEmitter();
33
- this.modeChange = new EventEmitter();
34
- this._working = false;
35
- this._form = this._fb.group({});
36
- this._keys = {};
37
- this._datatypes = {};
38
- this._data = overlayData || dialogData;
39
- const { cube, exploreSettings } = this._data;
40
- this._explorable = exploreSettings !== undefined;
41
- this._cube = cube ? this._session.profile.cubes.find(c => c.name === cube)
42
- : this._session.profile.cubes[0];
43
- if (!this._cube)
44
- throw 'No cube';
45
- this._axes = this._cube.axes.filter(a => a.combination);
46
- if (!this._axes.length)
47
- throw 'No axis with combination';
48
- }
49
- ngOnInit() {
50
- this._axes.forEach(a => {
51
- const control = this._fb.control(null);
52
- this._keys[a.name] = [];
53
- this._form.addControl(a.name, control);
54
- this._ds.map(a.dataType).subscribe(m => {
55
- this._datatypes[a.dataType] = m;
56
- const keys = this._keys[a.name] = Object.keys(m);
57
- if (keys.length < 2) {
58
- if (keys.length === 1)
59
- control.setValue(keys[0]);
60
- control.disable();
61
- }
62
- });
63
- });
64
- this._form.updateValueAndValidity();
65
- this._data.value && this._patchForm(this._data.value);
66
- this._switchMode('filter');
67
- }
68
- /**
69
- *
70
- * @param code
71
- */
72
- _patchForm(code) {
73
- const codes = code.split(this._data.divider), values = {};
74
- this._axes.forEach((a, i) => codes[i] && (values[a.name] = codes[i]));
75
- this._form.patchValue(values);
76
- }
77
- /**
78
- *
79
- * @param val
80
- */
81
- _switchMode(val) {
82
- this.mode = val;
83
- this.modeChange.emit(val);
84
- setTimeout(() => {
85
- if (val === 'filter')
86
- this.axes.first.focus();
87
- this._cd.detectChanges();
88
- }, 0);
89
- }
90
- /**
91
- * filter */
92
- _filter() {
93
- this._working = true;
94
- const values = this._form.value, args = {};
95
- this._axes.forEach(a => values[a.name] && (args[a.name] = values[a.name]));
96
- this._service.combinations(this._cube.name, args, { take: this._data.limit, progress: false }).
97
- pipe(finalize(() => this._working = false)).
98
- subscribe({
99
- next: r => {
100
- this._combinations = r;
101
- this._switchMode('results');
102
- r.length === this._data.limit && this._snackbar.toast('TakeMore');
103
- }, error: () => this._snackbar.error()
104
- });
105
- }
106
- /**
107
- * item select
108
- * @param code
109
- */
110
- _select(axes) {
111
- const description = this._nameOf(axes), value = this._codeOf(axes);
112
- this.selectionChange.emit({ value, description, axes });
113
- }
114
- /**
115
- *
116
- * @param codes
117
- */
118
- _codeOf(codes) {
119
- return codes.join(this._data.divider);
120
- }
121
- /**
122
- * translate code segments to names
123
- * @param code
124
- */
125
- _nameOf(codes) {
126
- return this._axes.map((a, i) => this._datatypes[a.dataType][codes[i]] || codes[i]).
127
- join(this._data.displayDivider || ' ');
128
- }
129
- /**
130
- * open info
131
- * @param code
132
- * @param evt
133
- */
134
- _info(codes, evt) {
135
- const { defaults } = this._data.exploreSettings || {};
136
- const axes = {
137
- ...defaults
138
- };
139
- codes.slice(0, this._axes.length).forEach((a, i) => axes[this._axes[i].name] = a);
140
- this._accountInfo.popup(axes, evt.target, {
141
- ...this._data.exploreSettings,
142
- cube: this._cube.name
143
- });
144
- evt.preventDefault();
145
- evt.stopPropagation();
146
- }
147
- ngOnDestroy() {
148
- this.selectionChange.complete();
149
- this.modeChange.complete();
150
- }
151
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: CombinationPickerBody, deps: [{ token: MAT_DIALOG_DATA, optional: true }, { token: COMBINATION_PICKER_BODY, optional: true }, { token: i1.FormBuilder }, { token: i2.PromptService }, { token: i3.CubeInfo }, { token: i4.DatasourceService }, { token: i0.ChangeDetectorRef }, { token: i5.SessionService }, { token: i6.CubeService }], target: i0.ɵɵFactoryTarget.Component }); }
152
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.5", type: CombinationPickerBody, selector: "bizdoc-combination-picker-body", viewQueries: [{ propertyName: "axes", predicate: MatSelect, descendants: true }], ngImport: i0, template: "<div class=\"picker-popup\" cdkTrapFocus>\r\n @switch (mode) {\r\n <!--[@transformPanel]=\"enter\"-->\r\n @case ('filter') {\r\n <mat-progress-bar mode=\"indeterminate\" [style.visibility]=\"_working ? 'visible':'hidden'\"></mat-progress-bar>\r\n <!-- filter -->\r\n <form [formGroup]=\"_form\">\r\n @for (a of _axes; track a; let i = $index) {\r\n <mat-form-field subscriptSizing=\"dynamic\">\r\n <mat-label>{{a.title}}</mat-label>\r\n <mat-select [formControlName]=\"a.name\">\r\n @if (_keys[a.name].length>1) {\r\n <mat-option>{{'All'|translate}}</mat-option>\r\n }\r\n @for (key of _keys[a.name]; track key) {\r\n <mat-option [value]=\"key\">{{_values[a.dataType][key]}}</mat-option>\r\n }\r\n </mat-select>\r\n <mat-hint>{{_form.controls[a.name].value}}</mat-hint>\r\n </mat-form-field>\r\n }\r\n </form>\r\n <div class=\"actions\">\r\n <button mat-icon-button (click)=\"_filter()\" [disabled]=\"_working\" [bizdocTooltip]=\"'Search'|translate\" class=\"mat-icon-rtl-mirror\" [tabIndex]=\"_axes.length\">\r\n <mat-icon>search</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n <!-- results -->\r\n @case ('results') {\r\n <div class=\"actions\">\r\n <button mat-icon-button (click)=\"_switchMode('filter')\" [bizdocTooltip]=\"'Filter'|translate\"><mat-icon>filter_list</mat-icon></button>\r\n </div>\r\n <mat-action-list>\r\n @for (codes of _combinations; track codes) {\r\n <mat-list-item (click)=\"_select(codes)\">\r\n <h3 matListItemTitle>{{_nameOf(codes)}}</h3>\r\n @if (_explorable) {\r\n <p matListItemLine><a (click)=\"_info(codes, $event)\">{{_codeOf(codes)}}</a></p>\r\n }\r\n </mat-list-item>\r\n }\r\n </mat-action-list>\r\n }\r\n }\r\n</div>\r\n", styles: [".picker-popup{color:var(--sys-on-surface);display:flex;flex-direction:column;width:100%}.picker-popup form{padding:8px;flex-flow:column wrap;box-sizing:border-box;gap:6px;display:flex}.picker-popup form>*{flex:1 1 100%;box-sizing:border-box;max-width:calc(50% - 4px)}.picker-popup .actions{display:flex;flex-direction:row;place-content:center flex-end;align-items:center;padding:8px}.picker-popup ::ng-deep .mat-mdc-list-base{overflow:auto}.picker-popup ::ng-deep .mat-mdc-list-base .mat-mdc-list-item .mat-line:nth-child(n+2){font-size:14px}@media screen and (min-width: 600px){.account-picker-popup form{flex-flow:row wrap}}\n"], dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i7.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i8.MatActionList, selector: "mat-action-list", exportAs: ["matActionList"] }, { kind: "component", type: i8.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i8.MatListItemLine, selector: "[matListItemLine]" }, { kind: "directive", type: i8.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "component", type: i9.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i10.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i10.MatLabel, selector: "mat-label" }, { kind: "directive", type: i10.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "component", type: i11.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i12.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i13.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i14.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: i15.TranslatePipe, name: "translate" }] }); }
153
- }
154
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: CombinationPickerBody, decorators: [{
155
- type: Component,
156
- args: [{ selector: 'bizdoc-combination-picker-body', template: "<div class=\"picker-popup\" cdkTrapFocus>\r\n @switch (mode) {\r\n <!--[@transformPanel]=\"enter\"-->\r\n @case ('filter') {\r\n <mat-progress-bar mode=\"indeterminate\" [style.visibility]=\"_working ? 'visible':'hidden'\"></mat-progress-bar>\r\n <!-- filter -->\r\n <form [formGroup]=\"_form\">\r\n @for (a of _axes; track a; let i = $index) {\r\n <mat-form-field subscriptSizing=\"dynamic\">\r\n <mat-label>{{a.title}}</mat-label>\r\n <mat-select [formControlName]=\"a.name\">\r\n @if (_keys[a.name].length>1) {\r\n <mat-option>{{'All'|translate}}</mat-option>\r\n }\r\n @for (key of _keys[a.name]; track key) {\r\n <mat-option [value]=\"key\">{{_values[a.dataType][key]}}</mat-option>\r\n }\r\n </mat-select>\r\n <mat-hint>{{_form.controls[a.name].value}}</mat-hint>\r\n </mat-form-field>\r\n }\r\n </form>\r\n <div class=\"actions\">\r\n <button mat-icon-button (click)=\"_filter()\" [disabled]=\"_working\" [bizdocTooltip]=\"'Search'|translate\" class=\"mat-icon-rtl-mirror\" [tabIndex]=\"_axes.length\">\r\n <mat-icon>search</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n <!-- results -->\r\n @case ('results') {\r\n <div class=\"actions\">\r\n <button mat-icon-button (click)=\"_switchMode('filter')\" [bizdocTooltip]=\"'Filter'|translate\"><mat-icon>filter_list</mat-icon></button>\r\n </div>\r\n <mat-action-list>\r\n @for (codes of _combinations; track codes) {\r\n <mat-list-item (click)=\"_select(codes)\">\r\n <h3 matListItemTitle>{{_nameOf(codes)}}</h3>\r\n @if (_explorable) {\r\n <p matListItemLine><a (click)=\"_info(codes, $event)\">{{_codeOf(codes)}}</a></p>\r\n }\r\n </mat-list-item>\r\n }\r\n </mat-action-list>\r\n }\r\n }\r\n</div>\r\n", styles: [".picker-popup{color:var(--sys-on-surface);display:flex;flex-direction:column;width:100%}.picker-popup form{padding:8px;flex-flow:column wrap;box-sizing:border-box;gap:6px;display:flex}.picker-popup form>*{flex:1 1 100%;box-sizing:border-box;max-width:calc(50% - 4px)}.picker-popup .actions{display:flex;flex-direction:row;place-content:center flex-end;align-items:center;padding:8px}.picker-popup ::ng-deep .mat-mdc-list-base{overflow:auto}.picker-popup ::ng-deep .mat-mdc-list-base .mat-mdc-list-item .mat-line:nth-child(n+2){font-size:14px}@media screen and (min-width: 600px){.account-picker-popup form{flex-flow:row wrap}}\n"] }]
157
- }], ctorParameters: () => [{ type: undefined, decorators: [{
158
- type: Optional
159
- }, {
160
- type: Inject,
161
- args: [MAT_DIALOG_DATA]
162
- }] }, { type: undefined, decorators: [{
163
- type: Optional
164
- }, {
165
- type: Inject,
166
- args: [COMBINATION_PICKER_BODY]
167
- }] }, { type: i1.FormBuilder }, { type: i2.PromptService }, { type: i3.CubeInfo }, { type: i4.DatasourceService }, { type: i0.ChangeDetectorRef }, { type: i5.SessionService }, { type: i6.CubeService }], propDecorators: { axes: [{
168
- type: ViewChildren,
169
- args: [MatSelect]
170
- }] } });
171
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYmluYXRpb24tcGlja2VyLWJvZHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvY29yZS9pbnB1dHMvY29tYmluYXRpb24tcGlja2VyLWJvZHkudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvY29yZS9pbnB1dHMvY29tYmluYXRpb24tcGlja2VyLWJvZHkuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixjQUFjLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFnQyxNQUFNLGVBQWUsQ0FBQztBQUV6SixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTMUMsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxjQUFjLENBQXNCLGtCQUFrQixDQUFDLENBQUM7QUErQm5HLE1BQU07QUFNTixNQUFNLE9BQU8scUJBQXFCO0lBZWhDLFlBQ3VDLFVBQStCLEVBQ3ZCLFdBQWdDLEVBQ3JFLEdBQWdCLEVBQ2hCLFNBQXdCLEVBQ3hCLFlBQXNCLEVBQ3RCLEdBQXNCLEVBQ3RCLEdBQXNCLEVBQ3RCLFFBQXdCLEVBQ3hCLFFBQXFCO1FBTnJCLFFBQUcsR0FBSCxHQUFHLENBQWE7UUFDaEIsY0FBUyxHQUFULFNBQVMsQ0FBZTtRQUN4QixpQkFBWSxHQUFaLFlBQVksQ0FBVTtRQUN0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQUN4QixhQUFRLEdBQVIsUUFBUSxDQUFh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QUFDO1FBQ2hDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDN0IsQ0FBQzs4R0ExSVUscUJBQXFCLGtCQWdCVixlQUFlLDZCQUNmLHVCQUF1QjtrR0FqQmxDLHFCQUFxQiwrRkFJbEIsU0FBUyxnREN0RHpCLDQ4REE4Q0E7OzJGRElhLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxnQ0FBZ0M7OzBCQW9CdkMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxlQUFlOzswQkFDbEMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyx1QkFBdUI7Nk9BYnBCLElBQUk7c0JBQTVCLFlBQVk7dUJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQsIEluamVjdGlvblRva2VuLCBPcHRpb25hbCwgSW5qZWN0LCBFdmVudEVtaXR0ZXIsIFZpZXdDaGlsZHJlbiwgUXVlcnlMaXN0LCBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IE1hdFNlbGVjdCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3RcIjtcclxuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5pbXBvcnQgeyBmaW5hbGl6ZSB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQgeyBDdWJlQXhpcywgQ3ViZSB9IGZyb20gXCIuLi9tb2RlbHNcIjtcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tIFwiLi4vc2Vzc2lvbi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEN1YmVTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2N1YmUvY3ViZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IERhdGFzb3VyY2VTZXJ2aWNlIH0gZnJvbSBcIi4uL2RhdGFzb3VyY2Uuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBQcm9tcHRTZXJ2aWNlIH0gZnJvbSBcIi4uL3Byb21wdC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEN1YmVJbmZvIH0gZnJvbSBcIi4uLy4uL2N1YmUvY3ViZS1pbmZvLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU3VtU2V0dGluZ3MgfSBmcm9tIFwiLi4vLi4vY3ViZS9tYXRyaXgvdGFibGUuY29tcG9uZW50XCI7XHJcblxyXG5leHBvcnQgY29uc3QgQ09NQklOQVRJT05fUElDS0VSX0JPRFkgPSBuZXcgSW5qZWN0aW9uVG9rZW48Q29tYmluYXRpb25Cb2R5RGF0YT4oJ2NvbWJpbmF0aW9uX2JvZHknKTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29tYmluYXRpb25Cb2R5RGF0YSB7XHJcbiAgY3ViZTogc3RyaW5nO1xyXG4gIHZhbHVlOiBzdHJpbmc7XHJcbiAgbGltaXQ6IG51bWJlcjtcclxuICBkaXZpZGVyOiBzdHJpbmc7XHJcbiAgZGlzcGxheURpdmlkZXI6IHN0cmluZztcclxuICBleHBsb3JlU2V0dGluZ3M6IEV4cGxvcmVTZXR0aW5ncztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBFeHBsb3JlU2V0dGluZ3Mge1xyXG4gIGVuYWJsZT86IGJvb2xlYW47XHJcbiAgLyoqIGN1YmUgdmlldyBuYW1lICovXHJcbiAgdmlldz86IHN0cmluZztcclxuICBkZWZhdWx0cz86IHtcclxuICAgIFtheGlzOiBzdHJpbmddOiAoc3RyaW5nIHwgbnVtYmVyKTtcclxuICB9O1xyXG4gIGluZGljZXM/OiBzdHJpbmdbXSB8IHN0cmluZztcclxuICAvKiogb25lIG9yIG1vcmUgYXhpcyAqL1xyXG4gIGZpbHRlcnM/OiBzdHJpbmdbXSB8IHN0cmluZztcclxuICB4QXhpczogc3RyaW5nO1xyXG4gIHNlcmllczogc3RyaW5nO1xyXG4gIHN1bT86IFN1bVNldHRpbmdzIHwgU3VtU2V0dGluZ3NbXSxcclxuICAvKiogKi9cclxuICBhZ2dyZWdhdGU/OiBzdHJpbmdbXSB8IHN0cmluZztcclxuICBzZXJpZXNUb3RhbExhYmVsPzogc3RyaW5nO1xyXG4gIHhBeGlzVG90YWxMYWJlbD86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgTW9kZSA9ICdmaWx0ZXInIHwgJ3Jlc3VsdHMnO1xyXG4vKiogKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdiaXpkb2MtY29tYmluYXRpb24tcGlja2VyLWJvZHknLFxyXG4gIHRlbXBsYXRlVXJsOiAnY29tYmluYXRpb24tcGlja2VyLWJvZHkuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJ2NvbWJpbmF0aW9uLXBpY2tlci1ib2R5LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29tYmluYXRpb25QaWNrZXJCb2R5IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHJlYWRvbmx5IHNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q29tYmluYXRpb25TZWxlY3RlZEV2ZW50PigpO1xyXG4gIHJlYWRvbmx5IG1vZGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZGU+KCk7XHJcbiAgbW9kZTogTW9kZTtcclxuICBAVmlld0NoaWxkcmVuKE1hdFNlbGVjdCkgYXhlczogUXVlcnlMaXN0PE1hdFNlbGVjdD47XHJcbiAgcmVhZG9ubHkgX2V4cGxvcmFibGU6IGJvb2xlYW47XHJcbiAgX3dvcmtpbmcgPSBmYWxzZTtcclxuICByZWFkb25seSBfYXhlczogQ3ViZUF4aXNbXTtcclxuICByZWFkb25seSBfZm9ybSA9IHRoaXMuX2ZiLmdyb3VwKHtcclxuICB9KTtcclxuICByZWFkb25seSBfa2V5czogeyBbdHlwZTogc3RyaW5nXTogKHN0cmluZyB8IG51bWJlcilbXSB9ID0ge307XHJcbiAgcmVhZG9ubHkgX2RhdGF0eXBlczogeyBbdHlwZTogc3RyaW5nXTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IHsgW2tleTogc3RyaW5nXTogYW55IH0gfSA9IHt9O1xyXG4gIF9jb21iaW5hdGlvbnM6IHN0cmluZ1tdW107XHJcbiAgcHJpdmF0ZSBfZGF0YTogQ29tYmluYXRpb25Cb2R5RGF0YTtcclxuICBwcml2YXRlIF9jdWJlOiBDdWJlO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIGRpYWxvZ0RhdGE6IENvbWJpbmF0aW9uQm9keURhdGEsXHJcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KENPTUJJTkFUSU9OX1BJQ0tFUl9CT0RZKSBvdmVybGF5RGF0YTogQ29tYmluYXRpb25Cb2R5RGF0YSxcclxuICAgIHByaXZhdGUgX2ZiOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgX3NuYWNrYmFyOiBQcm9tcHRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfYWNjb3VudEluZm86IEN1YmVJbmZvLFxyXG4gICAgcHJpdmF0ZSBfZHM6IERhdGFzb3VyY2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBfc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zZXJ2aWNlOiBDdWJlU2VydmljZSkge1xyXG4gICAgdGhpcy5fZGF0YSA9IG92ZXJsYXlEYXRhIHx8IGRpYWxvZ0RhdGE7XHJcbiAgICBjb25zdCB7IGN1YmUsIGV4cGxvcmVTZXR0aW5ncyB9ID0gdGhpcy5fZGF0YTtcclxuICAgIHRoaXMuX2V4cGxvcmFibGUgPSBleHBsb3JlU2V0dGluZ3MgIT09IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuX2N1YmUgPSBjdWJlID8gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmN1YmVzLmZpbmQoYyA9PiBjLm5hbWUgPT09IGN1YmUpIVxyXG4gICAgICA6IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5jdWJlc1swXTtcclxuICAgIGlmICghdGhpcy5fY3ViZSkgdGhyb3cgJ05vIGN1YmUnO1xyXG4gICAgdGhpcy5fYXhlcyA9IHRoaXMuX2N1YmUuYXhlcy5maWx0ZXIoYSA9PiBhLmNvbWJpbmF0aW9uKTtcclxuICAgIGlmICghdGhpcy5fYXhlcy5sZW5ndGgpIHRocm93ICdObyBheGlzIHdpdGggY29tYmluYXRpb24nO1xyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2F4ZXMuZm9yRWFjaChhID0+IHtcclxuICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuX2ZiLmNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCk7XHJcbiAgICAgIHRoaXMuX2tleXNbYS5uYW1lXSA9IFtdO1xyXG4gICAgICB0aGlzLl9mb3JtLmFkZENvbnRyb2woYS5uYW1lLCBjb250cm9sKTtcclxuICAgICAgdGhpcy5fZHMubWFwKGEuZGF0YVR5cGUpLnN1YnNjcmliZShtID0+IHtcclxuICAgICAgICB0aGlzLl9kYXRhdHlwZXNbYS5kYXRhVHlwZV0gPSBtO1xyXG4gICAgICAgIGNvbnN0IGtleXMgPSB0aGlzLl9rZXlzW2EubmFtZV0gPSBPYmplY3Qua2V5cyhtKTtcclxuICAgICAgICBpZiAoa2V5cy5sZW5ndGggPCAyKSB7XHJcbiAgICAgICAgICBpZiAoa2V5cy5sZW5ndGggPT09IDEpIGNvbnRyb2wuc2V0VmFsdWUoa2V5c1swXSk7XHJcbiAgICAgICAgICBjb250cm9sLmRpc2FibGUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLl9mb3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIHRoaXMuX2RhdGEudmFsdWUgJiYgdGhpcy5fcGF0Y2hGb3JtKHRoaXMuX2RhdGEudmFsdWUpO1xyXG4gICAgdGhpcy5fc3dpdGNoTW9kZSgnZmlsdGVyJyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBjb2RlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfcGF0Y2hGb3JtKGNvZGU6IHN0cmluZykge1xyXG4gICAgY29uc3QgY29kZXMgPSBjb2RlLnNwbGl0KHRoaXMuX2RhdGEuZGl2aWRlciksXHJcbiAgICAgIHZhbHVlcyA9IHt9IGFzIHsgW2tleTogc3RyaW5nXTogYW55IH07XHJcbiAgICB0aGlzLl9heGVzLmZvckVhY2goKGEsIGkpID0+IGNvZGVzW2ldICYmICh2YWx1ZXNbYS5uYW1lXSA9IGNvZGVzW2ldKSk7XHJcbiAgICB0aGlzLl9mb3JtLnBhdGNoVmFsdWUodmFsdWVzKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHZhbFxyXG4gICAqL1xyXG4gIF9zd2l0Y2hNb2RlKHZhbDogTW9kZSkge1xyXG4gICAgdGhpcy5tb2RlID0gdmFsO1xyXG4gICAgdGhpcy5tb2RlQ2hhbmdlLmVtaXQodmFsKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAodmFsID09PSAnZmlsdGVyJykgdGhpcy5heGVzLmZpcnN0LmZvY3VzKCk7XHJcbiAgICAgIHRoaXMuX2NkLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0sIDApXHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIGZpbHRlciAqL1xyXG4gIF9maWx0ZXIoKSB7XHJcbiAgICB0aGlzLl93b3JraW5nID0gdHJ1ZTtcclxuICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuX2Zvcm0udmFsdWUgYXMgeyBba2V5OiBzdHJpbmddOiBhbnkgfSxcclxuICAgICAgYXJncyA9IHt9IGFzIHsgW2tleTogc3RyaW5nXTogYW55IH07XHJcbiAgICB0aGlzLl9heGVzLmZvckVhY2goYSA9PiB2YWx1ZXNbYS5uYW1lXSAmJiAoYXJnc1thLm5hbWVdID0gdmFsdWVzW2EubmFtZV0pKTtcclxuICAgIHRoaXMuX3NlcnZpY2UuY29tYmluYXRpb25zKHRoaXMuX2N1YmUubmFtZSwgYXJncywgeyB0YWtlOiB0aGlzLl9kYXRhLmxpbWl0LCBwcm9ncmVzczogZmFsc2UgfSkuXHJcbiAgICAgIHBpcGUoZmluYWxpemUoKCkgPT4gdGhpcy5fd29ya2luZyA9IGZhbHNlKSkuXHJcbiAgICAgIHN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogciA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9jb21iaW5hdGlvbnMgPSByO1xyXG4gICAgICAgICAgdGhpcy5fc3dpdGNoTW9kZSgncmVzdWx0cycpO1xyXG4gICAgICAgICAgci5sZW5ndGggPT09IHRoaXMuX2RhdGEubGltaXQgJiYgdGhpcy5fc25hY2tiYXIudG9hc3QoJ1Rha2VNb3JlJyk7XHJcbiAgICAgICAgfSwgZXJyb3I6ICgpID0+IHRoaXMuX3NuYWNrYmFyLmVycm9yKClcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIGl0ZW0gc2VsZWN0XHJcbiAgICogQHBhcmFtIGNvZGVcclxuICAgKi9cclxuICBfc2VsZWN0KGF4ZXM6IHN0cmluZ1tdKSB7XHJcbiAgICBjb25zdCBkZXNjcmlwdGlvbiA9IHRoaXMuX25hbWVPZihheGVzKSxcclxuICAgICAgdmFsdWUgPSB0aGlzLl9jb2RlT2YoYXhlcyk7XHJcbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHsgdmFsdWUsIGRlc2NyaXB0aW9uLCBheGVzIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gY29kZXNcclxuICAgKi9cclxuICBfY29kZU9mKGNvZGVzOiBzdHJpbmdbXSk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gY29kZXMuam9pbih0aGlzLl9kYXRhLmRpdmlkZXIpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiB0cmFuc2xhdGUgY29kZSBzZWdtZW50cyB0byBuYW1lc1xyXG4gICAqIEBwYXJhbSBjb2RlXHJcbiAgICovXHJcbiAgX25hbWVPZihjb2Rlczogc3RyaW5nW10pOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2F4ZXMubWFwKChhLCBpKSA9PiB0aGlzLl9kYXRhdHlwZXNbYS5kYXRhVHlwZV1bY29kZXNbaV1dIHx8IGNvZGVzW2ldKS5cclxuICAgICAgam9pbih0aGlzLl9kYXRhLmRpc3BsYXlEaXZpZGVyIHx8ICcgJyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIG9wZW4gaW5mb1xyXG4gICAqIEBwYXJhbSBjb2RlXHJcbiAgICogQHBhcmFtIGV2dFxyXG4gICAqL1xyXG4gIF9pbmZvKGNvZGVzOiBzdHJpbmdbXSwgZXZ0OiBFdmVudCkge1xyXG4gICAgY29uc3QgeyBkZWZhdWx0cyB9ID0gdGhpcy5fZGF0YS5leHBsb3JlU2V0dGluZ3MgfHwge307XHJcbiAgICBjb25zdCBheGVzID0ge1xyXG4gICAgICAuLi5kZWZhdWx0c1xyXG4gICAgfTtcclxuICAgIGNvZGVzLnNsaWNlKDAsIHRoaXMuX2F4ZXMubGVuZ3RoKS5mb3JFYWNoKChhLCBpKSA9PiBheGVzW3RoaXMuX2F4ZXNbaV0ubmFtZV0gPSBhKTtcclxuXHJcbiAgICB0aGlzLl9hY2NvdW50SW5mby5wb3B1cChheGVzLCBldnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50LCB7XHJcbiAgICAgIC4uLnRoaXMuX2RhdGEuZXhwbG9yZVNldHRpbmdzLFxyXG4gICAgICBjdWJlOiB0aGlzLl9jdWJlLm5hbWVcclxuICAgIH0pO1xyXG5cclxuICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmNvbXBsZXRlKCk7XHJcbiAgICB0aGlzLm1vZGVDaGFuZ2UuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29tYmluYXRpb25TZWxlY3RlZEV2ZW50IHtcclxuICByZWFkb25seSB2YWx1ZTogc3RyaW5nOyByZWFkb25seSBkZXNjcmlwdGlvbjogc3RyaW5nOyByZWFkb25seSBheGVzOiBzdHJpbmdbXTtcclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwicGlja2VyLXBvcHVwXCIgY2RrVHJhcEZvY3VzPlxyXG4gIEBzd2l0Y2ggKG1vZGUpIHtcclxuICAgIDwhLS1bQHRyYW5zZm9ybVBhbmVsXT1cImVudGVyXCItLT5cclxuICAgIEBjYXNlICgnZmlsdGVyJykge1xyXG4gICAgICA8bWF0LXByb2dyZXNzLWJhciBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiIFtzdHlsZS52aXNpYmlsaXR5XT1cIl93b3JraW5nID8gJ3Zpc2libGUnOidoaWRkZW4nXCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxyXG4gICAgICA8IS0tIGZpbHRlciAtLT5cclxuICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJfZm9ybVwiPlxyXG4gICAgICAgIEBmb3IgKGEgb2YgX2F4ZXM7IHRyYWNrIGE7IGxldCBpID0gJGluZGV4KSB7XHJcbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiPlxyXG4gICAgICAgICAgICA8bWF0LWxhYmVsPnt7YS50aXRsZX19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgIDxtYXQtc2VsZWN0IFtmb3JtQ29udHJvbE5hbWVdPVwiYS5uYW1lXCI+XHJcbiAgICAgICAgICAgICAgQGlmIChfa2V5c1thLm5hbWVdLmxlbmd0aD4xKSB7XHJcbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbj57eydBbGwnfHRyYW5zbGF0ZX19PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBAZm9yIChrZXkgb2YgX2tleXNbYS5uYW1lXTsgdHJhY2sga2V5KSB7XHJcbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwia2V5XCI+e3tfdmFsdWVzW2EuZGF0YVR5cGVdW2tleV19fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgICAgICAgPG1hdC1oaW50Pnt7X2Zvcm0uY29udHJvbHNbYS5uYW1lXS52YWx1ZX19PC9tYXQtaGludD5cclxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2Zvcm0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25zXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIl9maWx0ZXIoKVwiIFtkaXNhYmxlZF09XCJfd29ya2luZ1wiIFtiaXpkb2NUb29sdGlwXT1cIidTZWFyY2gnfHRyYW5zbGF0ZVwiIGNsYXNzPVwibWF0LWljb24tcnRsLW1pcnJvclwiIFt0YWJJbmRleF09XCJfYXhlcy5sZW5ndGhcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbj5zZWFyY2g8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIH1cclxuICAgIDwhLS0gcmVzdWx0cyAtLT5cclxuICAgIEBjYXNlICgncmVzdWx0cycpIHtcclxuICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiX3N3aXRjaE1vZGUoJ2ZpbHRlcicpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0ZpbHRlcid8dHJhbnNsYXRlXCI+PG1hdC1pY29uPmZpbHRlcl9saXN0PC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxtYXQtYWN0aW9uLWxpc3Q+XHJcbiAgICAgICAgQGZvciAoY29kZXMgb2YgX2NvbWJpbmF0aW9uczsgdHJhY2sgY29kZXMpIHtcclxuICAgICAgICAgIDxtYXQtbGlzdC1pdGVtIChjbGljayk9XCJfc2VsZWN0KGNvZGVzKVwiPlxyXG4gICAgICAgICAgICA8aDMgbWF0TGlzdEl0ZW1UaXRsZT57e19uYW1lT2YoY29kZXMpfX08L2gzPlxyXG4gICAgICAgICAgICBAaWYgKF9leHBsb3JhYmxlKSB7XHJcbiAgICAgICAgICAgICAgPHAgbWF0TGlzdEl0ZW1MaW5lPjxhIChjbGljayk9XCJfaW5mbyhjb2RlcywgJGV2ZW50KVwiPnt7X2NvZGVPZihjb2Rlcyl9fTwvYT48L3A+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvbWF0LWxpc3QtaXRlbT5cclxuICAgICAgICB9XHJcbiAgICAgIDwvbWF0LWFjdGlvbi1saXN0PlxyXG4gICAgfVxyXG4gIH1cclxuPC9kaXY+XHJcbiJdfQ==