@igo2/common 1.8.1 → 1.9.3

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 (344) hide show
  1. package/bundles/igo2-common.umd.js +10700 -10473
  2. package/bundles/igo2-common.umd.js.map +1 -1
  3. package/esm2015/igo2-common.js +5 -5
  4. package/esm2015/lib/action/action.module.js +29 -28
  5. package/esm2015/lib/action/actionbar/actionbar-item.component.js +257 -257
  6. package/esm2015/lib/action/actionbar/actionbar.component.js +385 -387
  7. package/esm2015/lib/action/actionbar/actionbar.module.js +59 -58
  8. package/esm2015/lib/action/index.js +3 -3
  9. package/esm2015/lib/action/shared/action.enums.js +7 -7
  10. package/esm2015/lib/action/shared/action.interfaces.js +2 -1
  11. package/esm2015/lib/action/shared/index.js +4 -4
  12. package/esm2015/lib/action/shared/store.js +8 -8
  13. package/esm2015/lib/backdrop/backdrop.component.js +30 -30
  14. package/esm2015/lib/backdrop/backdrop.module.js +25 -24
  15. package/esm2015/lib/backdrop/index.js +2 -2
  16. package/esm2015/lib/badge-icon/badge-icon.directive.js +125 -121
  17. package/esm2015/lib/badge-icon/badge-icon.module.js +26 -25
  18. package/esm2015/lib/badge-icon/index.js +2 -2
  19. package/esm2015/lib/clickout/clickout.directive.js +32 -32
  20. package/esm2015/lib/clickout/clickout.module.js +24 -23
  21. package/esm2015/lib/clickout/index.js +2 -2
  22. package/esm2015/lib/clone/clone.module.js +24 -23
  23. package/esm2015/lib/clone/clone.pipe.js +24 -24
  24. package/esm2015/lib/clone/index.js +2 -2
  25. package/esm2015/lib/collapsible/collapse.directive.js +55 -55
  26. package/esm2015/lib/collapsible/collapsible.component.js +63 -63
  27. package/esm2015/lib/collapsible/collapsible.module.js +27 -26
  28. package/esm2015/lib/collapsible/index.js +3 -3
  29. package/esm2015/lib/confirm-dialog/confirm-dialog.component.js +50 -51
  30. package/esm2015/lib/confirm-dialog/confirm-dialog.module.js +29 -28
  31. package/esm2015/lib/confirm-dialog/confirm-dialog.service.js +22 -23
  32. package/esm2015/lib/confirm-dialog/index.js +3 -3
  33. package/esm2015/lib/context-menu/context-menu.directive.js +135 -89
  34. package/esm2015/lib/context-menu/context-menu.module.js +24 -23
  35. package/esm2015/lib/context-menu/index.js +2 -2
  36. package/esm2015/lib/custom-html/custom-html.component.js +32 -32
  37. package/esm2015/lib/custom-html/custom-html.module.js +49 -48
  38. package/esm2015/lib/custom-html/custom-html.pipe.js +18 -19
  39. package/esm2015/lib/custom-html/index.js +3 -3
  40. package/esm2015/lib/drag-drop/drag-drop.directive.js +88 -88
  41. package/esm2015/lib/drag-drop/drag-drop.module.js +24 -23
  42. package/esm2015/lib/drag-drop/index.js +2 -2
  43. package/esm2015/lib/dynamic-component/dynamic-component.module.js +33 -32
  44. package/esm2015/lib/dynamic-component/dynamic-outlet/dynamic-outlet.component.js +124 -125
  45. package/esm2015/lib/dynamic-component/dynamic-outlet/dynamic-outlet.module.js +30 -29
  46. package/esm2015/lib/dynamic-component/index.js +3 -3
  47. package/esm2015/lib/dynamic-component/shared/dynamic-component.interfaces.js +2 -1
  48. package/esm2015/lib/dynamic-component/shared/dynamic-component.js +174 -174
  49. package/esm2015/lib/dynamic-component/shared/dynamic-component.service.js +29 -29
  50. package/esm2015/lib/dynamic-component/shared/index.js +4 -4
  51. package/esm2015/lib/entity/entity-selector/entity-selector.component.js +201 -202
  52. package/esm2015/lib/entity/entity-selector/entity-selector.module.js +34 -33
  53. package/esm2015/lib/entity/entity-table/entity-table-row.directive.js +137 -137
  54. package/esm2015/lib/entity/entity-table/entity-table.component.js +912 -916
  55. package/esm2015/lib/entity/entity-table/entity-table.module.js +77 -76
  56. package/esm2015/lib/entity/entity-table-paginator/entity-table-paginator.component.js +138 -140
  57. package/esm2015/lib/entity/entity-table-paginator/entity-table-paginator.interface.js +2 -1
  58. package/esm2015/lib/entity/entity-table-paginator/entity-table-paginator.module.js +30 -29
  59. package/esm2015/lib/entity/entity.module.js +33 -32
  60. package/esm2015/lib/entity/index.js +6 -6
  61. package/esm2015/lib/entity/shared/entity.enums.js +27 -27
  62. package/esm2015/lib/entity/shared/entity.interfaces.js +2 -1
  63. package/esm2015/lib/entity/shared/entity.utils.js +67 -67
  64. package/esm2015/lib/entity/shared/index.js +10 -10
  65. package/esm2015/lib/entity/shared/state.js +191 -191
  66. package/esm2015/lib/entity/shared/store.js +288 -288
  67. package/esm2015/lib/entity/shared/strategies/filter-custom-function.js +79 -79
  68. package/esm2015/lib/entity/shared/strategies/filter-selection.js +84 -84
  69. package/esm2015/lib/entity/shared/strategies/index.js +4 -4
  70. package/esm2015/lib/entity/shared/strategies/strategy.js +75 -75
  71. package/esm2015/lib/entity/shared/transaction.js +316 -316
  72. package/esm2015/lib/entity/shared/view.js +315 -315
  73. package/esm2015/lib/entity/shared/watcher.js +120 -120
  74. package/esm2015/lib/flexible/flexible.component.js +158 -159
  75. package/esm2015/lib/flexible/flexible.module.js +24 -23
  76. package/esm2015/lib/flexible/flexible.type.js +2 -1
  77. package/esm2015/lib/flexible/index.js +3 -3
  78. package/esm2015/lib/form/form/form.component.js +125 -125
  79. package/esm2015/lib/form/form/form.module.js +42 -41
  80. package/esm2015/lib/form/form-field/form-field-select.component.js +132 -132
  81. package/esm2015/lib/form/form-field/form-field-text.component.js +108 -108
  82. package/esm2015/lib/form/form-field/form-field-textarea.component.js +110 -110
  83. package/esm2015/lib/form/form-field/form-field.component.js +77 -78
  84. package/esm2015/lib/form/form-field/form-field.module.js +76 -75
  85. package/esm2015/lib/form/form-field/index.js +5 -5
  86. package/esm2015/lib/form/form-group/form-group.component.js +110 -110
  87. package/esm2015/lib/form/form-group/form-group.module.js +42 -41
  88. package/esm2015/lib/form/form.module.js +51 -50
  89. package/esm2015/lib/form/index.js +5 -5
  90. package/esm2015/lib/form/shared/form-field-component.js +7 -7
  91. package/esm2015/lib/form/shared/form-field.service.js +29 -29
  92. package/esm2015/lib/form/shared/form.interfaces.js +2 -1
  93. package/esm2015/lib/form/shared/form.service.js +77 -77
  94. package/esm2015/lib/form/shared/form.utils.js +40 -40
  95. package/esm2015/lib/form/shared/index.js +6 -6
  96. package/esm2015/lib/home-button/home-button.component.js +35 -0
  97. package/esm2015/lib/home-button/home-button.module.js +43 -0
  98. package/esm2015/lib/home-button/index.js +2 -0
  99. package/esm2015/lib/image/image.module.js +24 -23
  100. package/esm2015/lib/image/index.js +2 -2
  101. package/esm2015/lib/image/secure-image.pipe.js +48 -51
  102. package/esm2015/lib/interactive-tour/index.js +5 -5
  103. package/esm2015/lib/interactive-tour/interactive-tour.component.js +140 -142
  104. package/esm2015/lib/interactive-tour/interactive-tour.interface.js +2 -1
  105. package/esm2015/lib/interactive-tour/interactive-tour.loader.js +44 -46
  106. package/esm2015/lib/interactive-tour/interactive-tour.module.js +42 -41
  107. package/esm2015/lib/interactive-tour/interactive-tour.service.js +285 -288
  108. package/esm2015/lib/json-dialog/index.js +3 -3
  109. package/esm2015/lib/json-dialog/json-dialog.component.js +116 -117
  110. package/esm2015/lib/json-dialog/json-dialog.module.js +29 -28
  111. package/esm2015/lib/json-dialog/json-dialog.service.js +24 -25
  112. package/esm2015/lib/keyvalue/index.js +2 -2
  113. package/esm2015/lib/keyvalue/keyvalue.module.js +24 -23
  114. package/esm2015/lib/keyvalue/keyvalue.pipe.js +18 -18
  115. package/esm2015/lib/list/index.js +3 -3
  116. package/esm2015/lib/list/list-item.directive.js +165 -165
  117. package/esm2015/lib/list/list.component.js +266 -266
  118. package/esm2015/lib/list/list.module.js +29 -28
  119. package/esm2015/lib/panel/index.js +2 -2
  120. package/esm2015/lib/panel/panel.component.js +67 -67
  121. package/esm2015/lib/panel/panel.module.js +19 -18
  122. package/esm2015/lib/sidenav/index.js +2 -2
  123. package/esm2015/lib/sidenav/sidenav-shim.directive.js +55 -56
  124. package/esm2015/lib/sidenav/sidenav.module.js +24 -23
  125. package/esm2015/lib/spinner/index.js +3 -3
  126. package/esm2015/lib/spinner/spinner-activity.directive.js +47 -49
  127. package/esm2015/lib/spinner/spinner.component.js +40 -40
  128. package/esm2015/lib/spinner/spinner.module.js +21 -20
  129. package/esm2015/lib/stop-propagation/index.js +3 -3
  130. package/esm2015/lib/stop-propagation/stop-drop-propagation.directive.js +22 -22
  131. package/esm2015/lib/stop-propagation/stop-propagation.directive.js +21 -21
  132. package/esm2015/lib/stop-propagation/stop-propagation.module.js +25 -24
  133. package/esm2015/lib/table/index.js +6 -6
  134. package/esm2015/lib/table/table-action-color.enum.js +7 -7
  135. package/esm2015/lib/table/table-database.js +28 -28
  136. package/esm2015/lib/table/table-datasource.js +61 -61
  137. package/esm2015/lib/table/table-model.interface.js +2 -1
  138. package/esm2015/lib/table/table.component.js +310 -311
  139. package/esm2015/lib/table/table.module.js +69 -68
  140. package/esm2015/lib/tool/index.js +3 -3
  141. package/esm2015/lib/tool/shared/index.js +6 -6
  142. package/esm2015/lib/tool/shared/tool-component.js +9 -9
  143. package/esm2015/lib/tool/shared/tool.interface.js +2 -1
  144. package/esm2015/lib/tool/shared/tool.service.js +43 -43
  145. package/esm2015/lib/tool/shared/toolbox.enums.js +7 -7
  146. package/esm2015/lib/tool/shared/toolbox.js +179 -179
  147. package/esm2015/lib/tool/tool.module.js +34 -33
  148. package/esm2015/lib/tool/toolbox/toolbox.animation.js +10 -10
  149. package/esm2015/lib/tool/toolbox/toolbox.component.js +261 -262
  150. package/esm2015/lib/tool/toolbox/toolbox.module.js +38 -37
  151. package/esm2015/lib/widget/index.js +3 -3
  152. package/esm2015/lib/widget/shared/index.js +4 -4
  153. package/esm2015/lib/widget/shared/widget.interfaces.js +2 -1
  154. package/esm2015/lib/widget/shared/widget.js +4 -4
  155. package/esm2015/lib/widget/shared/widget.service.js +20 -21
  156. package/esm2015/lib/widget/widget-outlet/widget-outlet.component.js +121 -122
  157. package/esm2015/lib/widget/widget-outlet/widget-outlet.module.js +34 -33
  158. package/esm2015/lib/widget/widget.module.js +34 -33
  159. package/esm2015/lib/workspace/index.js +4 -4
  160. package/esm2015/lib/workspace/shared/index.js +4 -4
  161. package/esm2015/lib/workspace/shared/store.js +40 -40
  162. package/esm2015/lib/workspace/shared/workspace.interfaces.js +2 -1
  163. package/esm2015/lib/workspace/shared/workspace.js +117 -117
  164. package/esm2015/lib/workspace/workspace-selector/workspace-selector.component.js +54 -55
  165. package/esm2015/lib/workspace/workspace-selector/workspace-selector.module.js +34 -33
  166. package/esm2015/lib/workspace/workspace-widget-outlet/workspace-widget-outlet.component.js +93 -94
  167. package/esm2015/lib/workspace/workspace-widget-outlet/workspace-widget-outlet.module.js +34 -33
  168. package/esm2015/lib/workspace/workspace.module.js +29 -28
  169. package/esm2015/public_api.js +72 -70
  170. package/fesm2015/igo2-common.js +9015 -8846
  171. package/fesm2015/igo2-common.js.map +1 -1
  172. package/igo2-common.d.ts +5 -5
  173. package/lib/action/action.module.d.ts +8 -7
  174. package/lib/action/actionbar/actionbar-item.component.d.ts +78 -78
  175. package/lib/action/actionbar/actionbar.component.d.ts +146 -146
  176. package/lib/action/actionbar/actionbar.module.d.ts +20 -19
  177. package/lib/action/index.d.ts +2 -2
  178. package/lib/action/shared/action.enums.d.ts +5 -5
  179. package/lib/action/shared/action.interfaces.d.ts +17 -17
  180. package/lib/action/shared/index.d.ts +3 -3
  181. package/lib/action/shared/store.d.ts +8 -8
  182. package/lib/backdrop/backdrop.component.d.ts +9 -9
  183. package/lib/backdrop/backdrop.module.d.ts +10 -9
  184. package/lib/backdrop/index.d.ts +1 -1
  185. package/lib/badge-icon/badge-icon.directive.d.ts +32 -27
  186. package/lib/badge-icon/badge-icon.module.d.ts +11 -10
  187. package/lib/badge-icon/index.d.ts +1 -1
  188. package/lib/clickout/clickout.directive.d.ts +10 -10
  189. package/lib/clickout/clickout.module.d.ts +9 -8
  190. package/lib/clickout/index.d.ts +1 -1
  191. package/lib/clone/clone.module.d.ts +9 -8
  192. package/lib/clone/clone.pipe.d.ts +7 -7
  193. package/lib/clone/index.d.ts +1 -1
  194. package/lib/collapsible/collapse.directive.d.ts +19 -19
  195. package/lib/collapsible/collapsible.component.d.ts +13 -13
  196. package/lib/collapsible/collapsible.module.d.ts +12 -11
  197. package/lib/collapsible/index.d.ts +2 -2
  198. package/lib/confirm-dialog/confirm-dialog.component.d.ts +9 -9
  199. package/lib/confirm-dialog/confirm-dialog.module.d.ts +12 -11
  200. package/lib/confirm-dialog/confirm-dialog.service.d.ts +10 -10
  201. package/lib/confirm-dialog/index.d.ts +2 -2
  202. package/lib/context-menu/context-menu.directive.d.ts +27 -21
  203. package/lib/context-menu/context-menu.module.d.ts +9 -8
  204. package/lib/context-menu/index.d.ts +1 -1
  205. package/lib/custom-html/custom-html.component.d.ts +9 -9
  206. package/lib/custom-html/custom-html.module.d.ts +16 -15
  207. package/lib/custom-html/custom-html.pipe.d.ts +10 -10
  208. package/lib/custom-html/index.d.ts +2 -2
  209. package/lib/drag-drop/drag-drop.directive.d.ts +14 -14
  210. package/lib/drag-drop/drag-drop.module.d.ts +9 -8
  211. package/lib/drag-drop/index.d.ts +1 -1
  212. package/lib/dynamic-component/dynamic-component.module.d.ts +8 -7
  213. package/lib/dynamic-component/dynamic-outlet/dynamic-outlet.component.d.ts +70 -70
  214. package/lib/dynamic-component/dynamic-outlet/dynamic-outlet.module.d.ts +11 -10
  215. package/lib/dynamic-component/index.d.ts +2 -2
  216. package/lib/dynamic-component/shared/dynamic-component.d.ts +88 -88
  217. package/lib/dynamic-component/shared/dynamic-component.interfaces.d.ts +3 -3
  218. package/lib/dynamic-component/shared/dynamic-component.service.d.ts +18 -18
  219. package/lib/dynamic-component/shared/index.d.ts +3 -3
  220. package/lib/entity/entity-selector/entity-selector.component.d.ts +92 -92
  221. package/lib/entity/entity-selector/entity-selector.module.d.ts +13 -12
  222. package/lib/entity/entity-table/entity-table-row.directive.d.ts +69 -69
  223. package/lib/entity/entity-table/entity-table.component.d.ts +275 -275
  224. package/lib/entity/entity-table/entity-table.module.d.ts +23 -22
  225. package/lib/entity/entity-table-paginator/entity-table-paginator.component.d.ts +49 -49
  226. package/lib/entity/entity-table-paginator/entity-table-paginator.interface.d.ts +8 -8
  227. package/lib/entity/entity-table-paginator/entity-table-paginator.module.d.ts +11 -10
  228. package/lib/entity/entity.module.d.ts +10 -9
  229. package/lib/entity/index.d.ts +5 -5
  230. package/lib/entity/shared/entity.enums.d.ts +22 -22
  231. package/lib/entity/shared/entity.interfaces.d.ts +88 -88
  232. package/lib/entity/shared/entity.utils.d.ts +49 -49
  233. package/lib/entity/shared/index.d.ts +9 -9
  234. package/lib/entity/shared/state.d.ts +103 -103
  235. package/lib/entity/shared/store.d.ts +176 -176
  236. package/lib/entity/shared/strategies/filter-custom-function.d.ts +51 -51
  237. package/lib/entity/shared/strategies/filter-selection.d.ts +48 -48
  238. package/lib/entity/shared/strategies/index.d.ts +3 -3
  239. package/lib/entity/shared/strategies/strategy.d.ts +56 -56
  240. package/lib/entity/shared/transaction.d.ts +168 -168
  241. package/lib/entity/shared/view.d.ts +193 -193
  242. package/lib/entity/shared/watcher.d.ts +72 -72
  243. package/lib/flexible/flexible.component.d.ts +41 -41
  244. package/lib/flexible/flexible.module.d.ts +9 -8
  245. package/lib/flexible/flexible.type.d.ts +2 -2
  246. package/lib/flexible/index.d.ts +2 -2
  247. package/lib/form/form/form.component.d.ts +53 -53
  248. package/lib/form/form/form.module.d.ts +12 -11
  249. package/lib/form/form-field/form-field-select.component.d.ts +48 -48
  250. package/lib/form/form-field/form-field-text.component.d.ts +41 -41
  251. package/lib/form/form-field/form-field-textarea.component.d.ts +41 -41
  252. package/lib/form/form-field/form-field.component.d.ts +34 -34
  253. package/lib/form/form-field/form-field.module.d.ts +21 -20
  254. package/lib/form/form-field/index.d.ts +4 -4
  255. package/lib/form/form-group/form-group.component.d.ts +49 -49
  256. package/lib/form/form-group/form-group.module.d.ts +14 -13
  257. package/lib/form/form.module.d.ts +13 -12
  258. package/lib/form/index.d.ts +4 -4
  259. package/lib/form/shared/form-field-component.d.ts +1 -1
  260. package/lib/form/shared/form-field.service.d.ts +19 -19
  261. package/lib/form/shared/form.interfaces.d.ts +57 -57
  262. package/lib/form/shared/form.service.d.ts +15 -15
  263. package/lib/form/shared/form.utils.d.ts +11 -11
  264. package/lib/form/shared/index.d.ts +5 -5
  265. package/lib/home-button/home-button.component.d.ts +9 -0
  266. package/lib/home-button/home-button.module.d.ts +15 -0
  267. package/lib/home-button/index.d.ts +1 -0
  268. package/lib/image/image.module.d.ts +9 -8
  269. package/lib/image/index.d.ts +1 -1
  270. package/lib/image/secure-image.pipe.d.ts +11 -11
  271. package/lib/interactive-tour/index.d.ts +4 -4
  272. package/lib/interactive-tour/interactive-tour.component.d.ts +30 -30
  273. package/lib/interactive-tour/interactive-tour.interface.d.ts +32 -32
  274. package/lib/interactive-tour/interactive-tour.loader.d.ts +18 -18
  275. package/lib/interactive-tour/interactive-tour.module.d.ts +12 -11
  276. package/lib/interactive-tour/interactive-tour.service.d.ts +29 -29
  277. package/lib/json-dialog/index.d.ts +2 -2
  278. package/lib/json-dialog/json-dialog.component.d.ts +13 -13
  279. package/lib/json-dialog/json-dialog.module.d.ts +13 -12
  280. package/lib/json-dialog/json-dialog.service.d.ts +10 -10
  281. package/lib/keyvalue/index.d.ts +1 -1
  282. package/lib/keyvalue/keyvalue.module.d.ts +9 -8
  283. package/lib/keyvalue/keyvalue.pipe.d.ts +7 -7
  284. package/lib/list/index.d.ts +2 -2
  285. package/lib/list/list-item.directive.d.ts +43 -43
  286. package/lib/list/list.component.d.ts +51 -51
  287. package/lib/list/list.module.d.ts +14 -13
  288. package/lib/panel/index.d.ts +1 -1
  289. package/lib/panel/panel.component.d.ts +11 -11
  290. package/lib/panel/panel.module.d.ts +8 -7
  291. package/lib/sidenav/index.d.ts +1 -1
  292. package/lib/sidenav/sidenav-shim.directive.d.ts +20 -20
  293. package/lib/sidenav/sidenav.module.d.ts +9 -8
  294. package/lib/spinner/index.d.ts +2 -2
  295. package/lib/spinner/spinner-activity.directive.d.ts +32 -32
  296. package/lib/spinner/spinner.component.d.ts +12 -12
  297. package/lib/spinner/spinner.module.d.ts +10 -9
  298. package/lib/stop-propagation/index.d.ts +2 -2
  299. package/lib/stop-propagation/stop-drop-propagation.directive.d.ts +6 -6
  300. package/lib/stop-propagation/stop-propagation.directive.d.ts +6 -6
  301. package/lib/stop-propagation/stop-propagation.module.d.ts +10 -9
  302. package/lib/table/index.d.ts +5 -5
  303. package/lib/table/table-action-color.enum.d.ts +5 -5
  304. package/lib/table/table-database.d.ts +10 -10
  305. package/lib/table/table-datasource.d.ts +17 -17
  306. package/lib/table/table-model.interface.d.ts +28 -28
  307. package/lib/table/table.component.d.ts +40 -40
  308. package/lib/table/table.module.d.ts +20 -19
  309. package/lib/tool/index.d.ts +2 -2
  310. package/lib/tool/shared/index.d.ts +5 -5
  311. package/lib/tool/shared/tool-component.d.ts +2 -2
  312. package/lib/tool/shared/tool.interface.d.ts +18 -18
  313. package/lib/tool/shared/tool.service.d.ts +30 -30
  314. package/lib/tool/shared/toolbox.d.ts +95 -95
  315. package/lib/tool/shared/toolbox.enums.d.ts +5 -5
  316. package/lib/tool/tool.module.d.ts +10 -9
  317. package/lib/tool/toolbox/toolbox.animation.d.ts +2 -2
  318. package/lib/tool/toolbox/toolbox.component.d.ts +127 -127
  319. package/lib/tool/toolbox/toolbox.module.d.ts +13 -12
  320. package/lib/widget/index.d.ts +2 -2
  321. package/lib/widget/shared/index.d.ts +3 -3
  322. package/lib/widget/shared/widget.d.ts +4 -4
  323. package/lib/widget/shared/widget.interfaces.d.ts +12 -12
  324. package/lib/widget/shared/widget.service.d.ts +10 -10
  325. package/lib/widget/widget-outlet/widget-outlet.component.d.ts +71 -71
  326. package/lib/widget/widget-outlet/widget-outlet.module.d.ts +12 -11
  327. package/lib/widget/widget.module.d.ts +8 -7
  328. package/lib/workspace/index.d.ts +3 -3
  329. package/lib/workspace/shared/index.d.ts +3 -3
  330. package/lib/workspace/shared/store.d.ts +20 -20
  331. package/lib/workspace/shared/workspace.d.ts +108 -108
  332. package/lib/workspace/shared/workspace.interfaces.d.ts +11 -11
  333. package/lib/workspace/workspace-selector/workspace-selector.component.d.ts +35 -35
  334. package/lib/workspace/workspace-selector/workspace-selector.module.d.ts +12 -11
  335. package/lib/workspace/workspace-widget-outlet/workspace-widget-outlet.component.d.ts +57 -57
  336. package/lib/workspace/workspace-widget-outlet/workspace-widget-outlet.module.d.ts +12 -11
  337. package/lib/workspace/workspace.module.d.ts +9 -8
  338. package/package.json +8 -7
  339. package/public_api.d.ts +68 -66
  340. package/style/common.theming.scss +12 -236
  341. package/style/partial/action.scss +18 -18
  342. package/style/partial/common.variables.scss +8 -8
  343. package/bundles/igo2-common.umd.min.js +0 -17
  344. package/bundles/igo2-common.umd.min.js.map +0 -1
@@ -1,257 +1,257 @@
1
- import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';
2
- import { BehaviorSubject, isObservable } from 'rxjs';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
5
- import * as i2 from "@angular/material/list";
6
- import * as i3 from "@angular/material/tooltip";
7
- import * as i4 from "@angular/material/button";
8
- import * as i5 from "@angular/material/icon";
9
- import * as i6 from "@angular/material/core";
10
- import * as i7 from "@angular/material/checkbox";
11
- import * as i8 from "@ngx-translate/core";
12
- function ActionbarItemComponent_mat_list_item_0_button_4_mat_icon_2_Template(rf, ctx) { if (rf & 1) {
13
- i0.ɵɵelement(0, "mat-icon", 7);
14
- i0.ɵɵpipe(1, "async");
15
- } if (rf & 2) {
16
- const ctx_r4 = i0.ɵɵnextContext(3);
17
- i0.ɵɵpropertyInterpolate("svgIcon", i0.ɵɵpipeBind1(1, 1, ctx_r4.icon$));
18
- } }
19
- function ActionbarItemComponent_mat_list_item_0_button_4_Template(rf, ctx) { if (rf & 1) {
20
- i0.ɵɵelementStart(0, "button", 5);
21
- i0.ɵɵpipe(1, "async");
22
- i0.ɵɵtemplate(2, ActionbarItemComponent_mat_list_item_0_button_4_mat_icon_2_Template, 2, 3, "mat-icon", 6);
23
- i0.ɵɵelementEnd();
24
- } if (rf & 2) {
25
- const ctx_r2 = i0.ɵɵnextContext(2);
26
- i0.ɵɵproperty("color", ctx_r2.color)("disabled", i0.ɵɵpipeBind1(1, 3, ctx_r2.disabled$));
27
- i0.ɵɵadvance(2);
28
- i0.ɵɵproperty("ngIf", ctx_r2.withIcon);
29
- } }
30
- function ActionbarItemComponent_mat_list_item_0_h4_5_Template(rf, ctx) { if (rf & 1) {
31
- i0.ɵɵelementStart(0, "h4", 8);
32
- i0.ɵɵtext(1);
33
- i0.ɵɵpipe(2, "translate");
34
- i0.ɵɵelementEnd();
35
- } if (rf & 2) {
36
- const ctx_r3 = i0.ɵɵnextContext(2);
37
- i0.ɵɵadvance(1);
38
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, ctx_r3.title));
39
- } }
40
- function ActionbarItemComponent_mat_list_item_0_Template(rf, ctx) { if (rf & 1) {
41
- const _r6 = i0.ɵɵgetCurrentView();
42
- i0.ɵɵelementStart(0, "mat-list-item", 2);
43
- i0.ɵɵlistener("click", function ActionbarItemComponent_mat_list_item_0_Template_mat_list_item_click_0_listener() { i0.ɵɵrestoreView(_r6); const ctx_r5 = i0.ɵɵnextContext(); return ctx_r5.onClick(); });
44
- i0.ɵɵpipe(1, "translate");
45
- i0.ɵɵpipe(2, "async");
46
- i0.ɵɵpipe(3, "async");
47
- i0.ɵɵtemplate(4, ActionbarItemComponent_mat_list_item_0_button_4_Template, 3, 5, "button", 3);
48
- i0.ɵɵtemplate(5, ActionbarItemComponent_mat_list_item_0_h4_5_Template, 3, 3, "h4", 4);
49
- i0.ɵɵelementEnd();
50
- } if (rf & 2) {
51
- const ctx_r0 = i0.ɵɵnextContext();
52
- i0.ɵɵproperty("matTooltip", ctx_r0.withTooltip ? i0.ɵɵpipeBind1(1, 4, i0.ɵɵpipeBind1(2, 6, ctx_r0.tooltip$) || ctx_r0.title) : "")("ngClass", i0.ɵɵpipeBind1(3, 8, ctx_r0.ngClass$));
53
- i0.ɵɵadvance(4);
54
- i0.ɵɵproperty("ngIf", ctx_r0.withIcon);
55
- i0.ɵɵadvance(1);
56
- i0.ɵɵproperty("ngIf", ctx_r0.withTitle);
57
- } }
58
- function ActionbarItemComponent_mat_list_item_1_mat_checkbox_4_Template(rf, ctx) { if (rf & 1) {
59
- const _r9 = i0.ɵɵgetCurrentView();
60
- i0.ɵɵelementStart(0, "mat-checkbox", 11);
61
- i0.ɵɵlistener("change", function ActionbarItemComponent_mat_list_item_1_mat_checkbox_4_Template_mat_checkbox_change_0_listener() { i0.ɵɵrestoreView(_r9); const ctx_r8 = i0.ɵɵnextContext(2); return ctx_r8.action.handler(); });
62
- i0.ɵɵpipe(1, "async");
63
- i0.ɵɵtext(2);
64
- i0.ɵɵpipe(3, "translate");
65
- i0.ɵɵelementEnd();
66
- } if (rf & 2) {
67
- const ctx_r7 = i0.ɵɵnextContext(2);
68
- i0.ɵɵproperty("checked", i0.ɵɵpipeBind1(1, 2, ctx_r7.checkCondition$));
69
- i0.ɵɵadvance(2);
70
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 4, ctx_r7.title), " ");
71
- } }
72
- function ActionbarItemComponent_mat_list_item_1_Template(rf, ctx) { if (rf & 1) {
73
- i0.ɵɵelementStart(0, "mat-list-item", 9);
74
- i0.ɵɵpipe(1, "translate");
75
- i0.ɵɵpipe(2, "async");
76
- i0.ɵɵpipe(3, "async");
77
- i0.ɵɵtemplate(4, ActionbarItemComponent_mat_list_item_1_mat_checkbox_4_Template, 4, 6, "mat-checkbox", 10);
78
- i0.ɵɵelementEnd();
79
- } if (rf & 2) {
80
- const ctx_r1 = i0.ɵɵnextContext();
81
- i0.ɵɵproperty("matTooltip", ctx_r1.withTooltip ? i0.ɵɵpipeBind1(1, 3, i0.ɵɵpipeBind1(2, 5, ctx_r1.tooltip$) || ctx_r1.title) : "")("ngClass", i0.ɵɵpipeBind1(3, 7, ctx_r1.ngClass$));
82
- i0.ɵɵadvance(4);
83
- i0.ɵɵproperty("ngIf", ctx_r1.withTitle);
84
- } }
85
- /**
86
- * An action button
87
- */
88
- export class ActionbarItemComponent {
89
- constructor() {
90
- this.disabled$ = new BehaviorSubject(false);
91
- this.checkCondition$ = new BehaviorSubject(undefined);
92
- this.icon$ = new BehaviorSubject(undefined);
93
- this.tooltip$ = new BehaviorSubject(undefined);
94
- this.noDisplay$ = new BehaviorSubject(false);
95
- this.ngClass$ = new BehaviorSubject({});
96
- /**
97
- * Color
98
- */
99
- this.color = 'default';
100
- /**
101
- * Whether the action title is displayed
102
- */
103
- this.withTitle = true;
104
- /**
105
- * Whether the action icon is displayed
106
- */
107
- this.withIcon = true;
108
- /**
109
- * Whether a tooltip should be shown
110
- */
111
- this.withTooltip = true;
112
- /**
113
- * Event emitted when the action button is clicked
114
- */
115
- this.trigger = new EventEmitter();
116
- }
117
- /**
118
- * Whether the action is disabled
119
- */
120
- set disabled(value) { this.disabled$.next(value); }
121
- get disabled() { return this.disabled$.value; }
122
- /**
123
- * Whether the action is display or not
124
- */
125
- set noDisplay(value) { this.noDisplay$.next(value); }
126
- get noDisplay() { return this.noDisplay$.value; }
127
- /**
128
- * @internal
129
- */
130
- get title() { return this.action.title; }
131
- ngOnInit() {
132
- const args = this.action.args || [];
133
- if (this.action.ngClass !== undefined) {
134
- this.ngClass$$ = this.action.ngClass(...args)
135
- .subscribe((ngClass) => this.updateNgClass(ngClass));
136
- }
137
- if (isObservable(this.action.icon)) {
138
- this.icon$$ = this.action.icon
139
- .subscribe((icon) => this.updateIcon(icon));
140
- }
141
- else {
142
- this.updateIcon(this.action.icon);
143
- }
144
- if (isObservable(this.action.checkCondition)) {
145
- this.checkCondition$$ = this.action.checkCondition
146
- .subscribe((checkCondition) => this.updateCheckCondition(checkCondition));
147
- }
148
- else {
149
- this.updateCheckCondition(this.action.checkCondition);
150
- }
151
- if (isObservable(this.action.tooltip)) {
152
- this.tooltip$$ = this.action.tooltip
153
- .subscribe((tooltip) => this.updateTooltip(tooltip));
154
- }
155
- else {
156
- this.updateTooltip(this.action.tooltip);
157
- }
158
- if (this.action.availability !== undefined) {
159
- this.availability$$ = this.action.availability(...args)
160
- .subscribe((available) => this.disabled = !available);
161
- }
162
- this.disabled$$ = this.disabled$
163
- .subscribe((disabled) => this.updateNgClass({ 'igo-actionbar-item-disabled': disabled }));
164
- if (this.action.display !== undefined) {
165
- this.display$$ = this.action.display(...args)
166
- .subscribe((display) => this.noDisplay = !display);
167
- }
168
- this.noDisplay$$ = this.noDisplay$
169
- .subscribe((noDisplay) => this.updateNgClass({ 'igo-actionbar-item-no-display': noDisplay }));
170
- }
171
- ngOnDestroy() {
172
- if (this.ngClass$$ !== undefined) {
173
- this.ngClass$$.unsubscribe();
174
- this.ngClass$$ = undefined;
175
- }
176
- if (this.availability$$ !== undefined) {
177
- this.availability$$.unsubscribe();
178
- this.availability$$ = undefined;
179
- }
180
- if (this.display$$ !== undefined) {
181
- this.display$$.unsubscribe();
182
- this.display$$ = undefined;
183
- }
184
- if (this.checkCondition$$ !== undefined) {
185
- this.checkCondition$$.unsubscribe();
186
- this.checkCondition$$ = undefined;
187
- }
188
- if (this.icon$$ !== undefined) {
189
- this.icon$$.unsubscribe();
190
- this.icon$$ = undefined;
191
- }
192
- if (this.tooltip$$ !== undefined) {
193
- this.tooltip$$.unsubscribe();
194
- this.tooltip$$ = undefined;
195
- }
196
- this.disabled$$.unsubscribe();
197
- this.noDisplay$$.unsubscribe();
198
- }
199
- /**
200
- * When the action button is clicked, emit the 'trigger' event but don't
201
- * invoke the action handler. This is handled by the parent component.
202
- * @internal
203
- */
204
- onClick() {
205
- if (this.disabled === true) {
206
- return;
207
- }
208
- this.trigger.emit(this.action);
209
- }
210
- updateNgClass(ngClass) {
211
- this.ngClass$.next(Object.assign({}, this.ngClass$.value, ngClass));
212
- }
213
- updateTooltip(tooltip) {
214
- this.tooltip$.next(tooltip);
215
- }
216
- updateCheckCondition(checkCondition) {
217
- this.checkCondition$.next(checkCondition);
218
- }
219
- updateIcon(icon) {
220
- this.icon$.next(icon);
221
- }
222
- }
223
- ActionbarItemComponent.ɵfac = function ActionbarItemComponent_Factory(t) { return new (t || ActionbarItemComponent)(); };
224
- ActionbarItemComponent.ɵcmp = i0.ɵɵdefineComponent({ type: ActionbarItemComponent, selectors: [["igo-actionbar-item"]], inputs: { action: "action", color: "color", withTitle: "withTitle", withIcon: "withIcon", withTooltip: "withTooltip", disabled: "disabled", noDisplay: "noDisplay" }, outputs: { trigger: "trigger" }, decls: 2, vars: 2, consts: [["matTooltipClass", "actionbarItemTooltip", "matTooltipShowDelay", "500", 3, "matTooltip", "ngClass", "click", 4, "ngIf"], ["class", "item-checkbox", "matTooltipClass", "actionbarItemTooltip", "matTooltipShowDelay", "500", 3, "matTooltip", "ngClass", 4, "ngIf"], ["matTooltipClass", "actionbarItemTooltip", "matTooltipShowDelay", "500", 3, "matTooltip", "ngClass", "click"], ["mat-list-avatar", "", "mat-icon-button", "", 3, "color", "disabled", 4, "ngIf"], ["matLine", "", 4, "ngIf"], ["mat-list-avatar", "", "mat-icon-button", "", 3, "color", "disabled"], [3, "svgIcon", 4, "ngIf"], [3, "svgIcon"], ["matLine", ""], ["matTooltipClass", "actionbarItemTooltip", "matTooltipShowDelay", "500", 1, "item-checkbox", 3, "matTooltip", "ngClass"], [3, "checked", "change", 4, "ngIf"], [3, "checked", "change"]], template: function ActionbarItemComponent_Template(rf, ctx) { if (rf & 1) {
225
- i0.ɵɵtemplate(0, ActionbarItemComponent_mat_list_item_0_Template, 6, 10, "mat-list-item", 0);
226
- i0.ɵɵtemplate(1, ActionbarItemComponent_mat_list_item_1_Template, 5, 9, "mat-list-item", 1);
227
- } if (rf & 2) {
228
- i0.ɵɵproperty("ngIf", !ctx.action.checkbox);
229
- i0.ɵɵadvance(1);
230
- i0.ɵɵproperty("ngIf", ctx.action.checkbox);
231
- } }, directives: [i1.NgIf, i2.MatListItem, i3.MatTooltip, i1.NgClass, i4.MatButton, i2.MatListAvatarCssMatStyler, i5.MatIcon, i6.MatLine, i7.MatCheckbox], pipes: [i8.TranslatePipe, i1.AsyncPipe], styles: ["mat-list-item.igo-actionbar-item-disabled[_ngcontent-%COMP%]{color:rgba(0,0,0,.26);cursor:default!important}mat-list-item.igo-actionbar-item-no-display[_ngcontent-%COMP%]{display:none}mat-checkbox[_ngcontent-%COMP%]{padding:12px}.item-checkbox[_ngcontent-%COMP%]{height:56px}.item-checkbox[_ngcontent-%COMP%] .mat-checkbox-label{margin-left:20px}"], changeDetection: 0 });
232
- /*@__PURE__*/ (function () { i0.ɵsetClassMetadata(ActionbarItemComponent, [{
233
- type: Component,
234
- args: [{
235
- selector: 'igo-actionbar-item',
236
- templateUrl: './actionbar-item.component.html',
237
- styleUrls: ['./actionbar-item.component.scss'],
238
- changeDetection: ChangeDetectionStrategy.OnPush
239
- }]
240
- }], function () { return []; }, { action: [{
241
- type: Input
242
- }], color: [{
243
- type: Input
244
- }], withTitle: [{
245
- type: Input
246
- }], withIcon: [{
247
- type: Input
248
- }], withTooltip: [{
249
- type: Input
250
- }], disabled: [{
251
- type: Input
252
- }], noDisplay: [{
253
- type: Input
254
- }], trigger: [{
255
- type: Output
256
- }] }); })();
257
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uYmFyLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9zcnYvYXBwcy9pZ28yLWxpYi9wYWNrYWdlcy9jb21tb24vc3JjLyIsInNvdXJjZXMiOlsibGliL2FjdGlvbi9hY3Rpb25iYXIvYWN0aW9uYmFyLWl0ZW0uY29tcG9uZW50LnRzIiwibGliL2FjdGlvbi9hY3Rpb25iYXIvYWN0aW9uYmFyLWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWix1QkFBdUIsRUFHeEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGVBQWUsRUFBZ0IsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7OztJQ0MvRCw4QkFBa0U7Ozs7SUFBdkMsdUVBQTJCOzs7SUFMeEQsaUNBS0U7O0lBQUEsMEdBQXVEO0lBQ3pELGlCQUFTOzs7SUFIUCxvQ0FBZSxvREFBQTtJQUVMLGVBQWdCO0lBQWhCLHNDQUFnQjs7O0lBRTVCLDZCQUE4QjtJQUFBLFlBQXFCOztJQUFBLGlCQUFLOzs7SUFBMUIsZUFBcUI7SUFBckIsd0RBQXFCOzs7O0lBYnJELHdDQU1FO0lBREEsd01BQW1COzs7O0lBQ25CLDZGQUtFO0lBRUYscUZBQThCO0lBQ2hDLGlCQUFnQjs7O0lBWGQsa0lBQTJFLGtEQUFBO0lBR25FLGVBQWdCO0lBQWhCLHNDQUFnQjtJQU9wQixlQUFpQjtJQUFqQix1Q0FBaUI7Ozs7SUFRckIsd0NBR0k7SUFGQSxxTUFBVSx1QkFBZ0IsSUFBQzs7SUFFM0IsWUFDSjs7SUFBQSxpQkFBZTs7O0lBRlgsc0VBQW1DO0lBQ25DLGVBQ0o7SUFESSxtRUFDSjs7O0lBVEYsd0NBS0U7Ozs7SUFBQSwwR0FHSTtJQUVOLGlCQUFnQjs7O0lBUGQsa0lBQTJFLGtEQUFBO0lBRTdELGVBQWlCO0lBQWpCLHVDQUFpQjs7QURQaEM7O0dBRUc7QUFP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U0FBUztrQkFEWixLQUFLO1lBT0ksT0FBTztrQkFBaEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgT25Jbml0LFxuICBPbkRlc3Ryb3lcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBpc09ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQWN0aW9uIH0gZnJvbSAnLi4vc2hhcmVkL2FjdGlvbi5pbnRlcmZhY2VzJztcblxuIC8qKlxuICAqIEFuIGFjdGlvbiBidXR0b25cbiAgKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lnby1hY3Rpb25iYXItaXRlbScsXG4gIHRlbXBsYXRlVXJsOiAnLi9hY3Rpb25iYXItaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FjdGlvbmJhci1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEFjdGlvbmJhckl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgcmVhZG9ubHkgZGlzYWJsZWQkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICByZWFkb25seSBjaGVja0NvbmRpdGlvbiQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QodW5kZWZpbmVkKTtcblxuICByZWFkb25seSBpY29uJDogQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHVuZGVmaW5lZCk7XG5cbiAgcmVhZG9ubHkgdG9vbHRpcCQ6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh1bmRlZmluZWQpO1xuXG4gIHJlYWRvbmx5IG5vRGlzcGxheSQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIHJlYWRvbmx5IG5nQ2xhc3MkOiBCZWhhdmlvclN1YmplY3Q8e1trZXk6IHN0cmluZ106IGJvb2xlYW59PiA9IG5ldyBCZWhhdmlvclN1YmplY3Qoe30pO1xuXG4gIHByaXZhdGUgbmdDbGFzcyQkOiBTdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSBkaXNhYmxlZCQkOiBTdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSBhdmFpbGFiaWxpdHkkJDogU3Vic2NyaXB0aW9uO1xuXG4gIHByaXZhdGUgaWNvbiQkOiBTdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSBjaGVja0NvbmRpdGlvbiQkOiBTdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSB0b29sdGlwJCQ6IFN1YnNjcmlwdGlvbjtcblxuICBwcml2YXRlIG5vRGlzcGxheSQkOiBTdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSBkaXNwbGF5JCQ6IFN1YnNjcmlwdGlvbjtcblxuICAvKipcbiAgICogQWN0aW9uXG4gICAqL1xuICBASW5wdXQoKSBhY3Rpb246IEFjdGlvbjtcblxuICAvKipcbiAgICogQ29sb3JcbiAgICovXG4gIEBJbnB1dCgpIGNvbG9yID0gJ2RlZmF1bHQnO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBhY3Rpb24gdGl0bGUgaXMgZGlzcGxheWVkXG4gICAqL1xuICBASW5wdXQoKSB3aXRoVGl0bGUgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBhY3Rpb24gaWNvbiBpcyBkaXNwbGF5ZWRcbiAgICovXG4gIEBJbnB1dCgpIHdpdGhJY29uID0gdHJ1ZTtcblxuICAvKipcbiAgICogV2hldGhlciBhIHRvb2x0aXAgc2hvdWxkIGJlIHNob3duXG4gICAqL1xuICBASW5wdXQoKSB3aXRoVG9vbHRpcCA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGFjdGlvbiBpcyBkaXNhYmxlZFxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7IHRoaXMuZGlzYWJsZWQkLm5leHQodmFsdWUpOyB9XG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuZGlzYWJsZWQkLnZhbHVlOyB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGFjdGlvbiBpcyBkaXNwbGF5IG9yIG5vdFxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IG5vRGlzcGxheSh2YWx1ZTogYm9vbGVhbikgeyB0aGlzLm5vRGlzcGxheSQubmV4dCh2YWx1ZSk7IH1cbiAgZ2V0IG5vRGlzcGxheSgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMubm9EaXNwbGF5JC52YWx1ZTsgfVxuXG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGFjdGlvbiBidXR0b24gaXMgY2xpY2tlZFxuICAgKi9cbiAgQE91dHB1dCgpIHRyaWdnZXI6IEV2ZW50RW1pdHRlcjxBY3Rpb24+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGdldCB0aXRsZSgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5hY3Rpb24udGl0bGU7IH1cblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgY29uc3QgYXJncyA9IHRoaXMuYWN0aW9uLmFyZ3MgfHwgW107XG5cbiAgICBpZiAodGhpcy5hY3Rpb24ubmdDbGFzcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLm5nQ2xhc3MkJCA9IHRoaXMuYWN0aW9uLm5nQ2xhc3MoLi4uYXJncylcbiAgICAgICAgLnN1YnNjcmliZSgobmdDbGFzczoge1trZXk6IHN0cmluZ106IGJvb2xlYW59KSA9PiB0aGlzLnVwZGF0ZU5nQ2xhc3MobmdDbGFzcykpO1xuICAgIH1cblxuICAgIGlmIChpc09ic2VydmFibGUodGhpcy5hY3Rpb24uaWNvbikpIHtcbiAgICAgIHRoaXMuaWNvbiQkID0gdGhpcy5hY3Rpb24uaWNvblxuICAgICAgICAuc3Vic2NyaWJlKChpY29uOiBzdHJpbmcpID0+IHRoaXMudXBkYXRlSWNvbihpY29uKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXBkYXRlSWNvbih0aGlzLmFjdGlvbi5pY29uKTtcbiAgICB9XG5cbiAgICBpZiAoaXNPYnNlcnZhYmxlKHRoaXMuYWN0aW9uLmNoZWNrQ29uZGl0aW9uKSkge1xuICAgICAgdGhpcy5jaGVja0NvbmRpdGlvbiQkID0gdGhpcy5hY3Rpb24uY2hlY2tDb25kaXRpb25cbiAgICAgICAgLnN1YnNjcmliZSgoY2hlY2tDb25kaXRpb246IGJvb2xlYW4pID0+IHRoaXMudXBkYXRlQ2hlY2tDb25kaXRpb24oY2hlY2tDb25kaXRpb24pKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51cGRhdGVDaGVja0NvbmRpdGlvbih0aGlzLmFjdGlvbi5jaGVja0NvbmRpdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKGlzT2JzZXJ2YWJsZSh0aGlzLmFjdGlvbi50b29sdGlwKSkge1xuICAgICAgdGhpcy50b29sdGlwJCQgPSB0aGlzLmFjdGlvbi50b29sdGlwXG4gICAgICAgIC5zdWJzY3JpYmUoKHRvb2x0aXA6IHN0cmluZykgPT4gdGhpcy51cGRhdGVUb29sdGlwKHRvb2x0aXApKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51cGRhdGVUb29sdGlwKHRoaXMuYWN0aW9uLnRvb2x0aXApO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmFjdGlvbi5hdmFpbGFiaWxpdHkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5hdmFpbGFiaWxpdHkkJCA9IHRoaXMuYWN0aW9uLmF2YWlsYWJpbGl0eSguLi5hcmdzKVxuICAgICAgICAuc3Vic2NyaWJlKChhdmFpbGFibGU6IGJvb2xlYW4pID0+IHRoaXMuZGlzYWJsZWQgPSAhYXZhaWxhYmxlKTtcbiAgICB9XG5cbiAgICB0aGlzLmRpc2FibGVkJCQgPSB0aGlzLmRpc2FibGVkJFxuICAgICAgLnN1YnNjcmliZSgoZGlzYWJsZWQ6IGJvb2xlYW4pID0+IHRoaXMudXBkYXRlTmdDbGFzcyh7J2lnby1hY3Rpb25iYXItaXRlbS1kaXNhYmxlZCc6IGRpc2FibGVkfSkpO1xuXG4gICAgaWYgKHRoaXMuYWN0aW9uLmRpc3BsYXkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5kaXNwbGF5JCQgPSB0aGlzLmFjdGlvbi5kaXNwbGF5KC4uLmFyZ3MpXG4gICAgICAgIC5zdWJzY3JpYmUoKGRpc3BsYXk6IGJvb2xlYW4pID0+IHRoaXMubm9EaXNwbGF5ID0gIWRpc3BsYXkpO1xuICAgIH1cblxuICAgIHRoaXMubm9EaXNwbGF5JCQgPSB0aGlzLm5vRGlzcGxheSRcbiAgICAgIC5zdWJzY3JpYmUoKG5vRGlzcGxheTogYm9vbGVhbikgPT4gdGhpcy51cGRhdGVOZ0NsYXNzKHsnaWdvLWFjdGlvbmJhci1pdGVtLW5vLWRpc3BsYXknOiBub0Rpc3BsYXl9KSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5uZ0NsYXNzJCQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5uZ0NsYXNzJCQudW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMubmdDbGFzcyQkID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmF2YWlsYWJpbGl0eSQkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuYXZhaWxhYmlsaXR5JCQudW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMuYXZhaWxhYmlsaXR5JCQgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZGlzcGxheSQkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuZGlzcGxheSQkLnVuc3Vic2NyaWJlKCk7XG4gICAgICB0aGlzLmRpc3BsYXkkJCA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jaGVja0NvbmRpdGlvbiQkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuY2hlY2tDb25kaXRpb24kJC51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5jaGVja0NvbmRpdGlvbiQkID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmljb24kJCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmljb24kJC51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5pY29uJCQgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudG9vbHRpcCQkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMudG9vbHRpcCQkLnVuc3Vic2NyaWJlKCk7XG4gICAgICB0aGlzLnRvb2x0aXAkJCA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICB0aGlzLmRpc2FibGVkJCQudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLm5vRGlzcGxheSQkLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICAvKipcbiAgICogV2hlbiB0aGUgYWN0aW9uIGJ1dHRvbiBpcyBjbGlja2VkLCBlbWl0IHRoZSAndHJpZ2dlcicgZXZlbnQgYnV0IGRvbid0XG4gICAqIGludm9rZSB0aGUgYWN0aW9uIGhhbmRsZXIuIFRoaXMgaXMgaGFuZGxlZCBieSB0aGUgcGFyZW50IGNvbXBvbmVudC5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBvbkNsaWNrKCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkID09PSB0cnVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMudHJpZ2dlci5lbWl0KHRoaXMuYWN0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlTmdDbGFzcyhuZ0NsYXNzOiB7W2tleTogc3RyaW5nXTogYm9vbGVhbn0pIHtcbiAgICB0aGlzLm5nQ2xhc3MkLm5leHQoT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5uZ0NsYXNzJC52YWx1ZSwgbmdDbGFzcykpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVUb29sdGlwKHRvb2x0aXA6IHN0cmluZykge1xuICAgIHRoaXMudG9vbHRpcCQubmV4dCh0b29sdGlwKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ2hlY2tDb25kaXRpb24oY2hlY2tDb25kaXRpb246IGJvb2xlYW4pIHtcbiAgICB0aGlzLmNoZWNrQ29uZGl0aW9uJC5uZXh0KGNoZWNrQ29uZGl0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlSWNvbihpY29uOiBzdHJpbmcpIHtcbiAgICB0aGlzLmljb24kLm5leHQoaWNvbik7XG4gIH1cbn1cbiIsIjxtYXQtbGlzdC1pdGVtICpuZ0lmPVwiIWFjdGlvbi5jaGVja2JveFwiXG4gIG1hdFRvb2x0aXBDbGFzcz1cImFjdGlvbmJhckl0ZW1Ub29sdGlwXCJcbiAgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiXG4gIFttYXRUb29sdGlwXT1cIndpdGhUb29sdGlwID8gKCh0b29sdGlwJCB8IGFzeW5jKSB8fCB0aXRsZSB8IHRyYW5zbGF0ZSkgOiAnJ1wiXG4gIFtuZ0NsYXNzXT1cIm5nQ2xhc3MkIHwgYXN5bmNcIlxuICAoY2xpY2spPVwib25DbGljaygpXCI+XG4gIDxidXR0b24gKm5nSWY9XCJ3aXRoSWNvblwiXG4gICAgbWF0LWxpc3QtYXZhdGFyXG4gICAgbWF0LWljb24tYnV0dG9uXG4gICAgW2NvbG9yXT1cImNvbG9yXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQkIHwgYXN5bmNcIj5cbiAgICA8bWF0LWljb24gKm5nSWY9XCJ3aXRoSWNvblwiIHN2Z0ljb249XCJ7e2ljb24kIHwgYXN5bmN9fVwiPjwvbWF0LWljb24+XG4gIDwvYnV0dG9uPlxuICA8aDQgKm5nSWY9XCJ3aXRoVGl0bGVcIiBtYXRMaW5lPnt7dGl0bGUgfCB0cmFuc2xhdGV9fTwvaDQ+XG48L21hdC1saXN0LWl0ZW0+XG5cbjxtYXQtbGlzdC1pdGVtIGNsYXNzPVwiaXRlbS1jaGVja2JveFwiICpuZ0lmPVwiYWN0aW9uLmNoZWNrYm94XCJcbiAgbWF0VG9vbHRpcENsYXNzPVwiYWN0aW9uYmFySXRlbVRvb2x0aXBcIlxuICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcbiAgW21hdFRvb2x0aXBdPVwid2l0aFRvb2x0aXAgPyAoKHRvb2x0aXAkIHwgYXN5bmMpIHx8IHRpdGxlIHwgdHJhbnNsYXRlKSA6ICcnXCJcbiAgW25nQ2xhc3NdPVwibmdDbGFzcyQgfCBhc3luY1wiPlxuICA8bWF0LWNoZWNrYm94ICpuZ0lmPVwid2l0aFRpdGxlXCJcbiAgICAgIChjaGFuZ2UpPVwiYWN0aW9uLmhhbmRsZXIoKVwiXG4gICAgICBbY2hlY2tlZF09XCJjaGVja0NvbmRpdGlvbiQgfCBhc3luY1wiPlxuICAgICAge3t0aXRsZSB8IHRyYW5zbGF0ZX19XG4gIDwvbWF0LWNoZWNrYm94PlxuPC9tYXQtbGlzdC1pdGVtPlxuIl19
1
+ import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';
2
+ import { BehaviorSubject, isObservable } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "@angular/material/list";
6
+ import * as i3 from "@angular/material/tooltip";
7
+ import * as i4 from "@angular/material/button";
8
+ import * as i5 from "@angular/material/icon";
9
+ import * as i6 from "@angular/material/core";
10
+ import * as i7 from "@angular/material/checkbox";
11
+ import * as i8 from "@ngx-translate/core";
12
+ function ActionbarItemComponent_mat_list_item_0_button_4_mat_icon_2_Template(rf, ctx) { if (rf & 1) {
13
+ i0.ɵɵelement(0, "mat-icon", 7);
14
+ i0.ɵɵpipe(1, "async");
15
+ } if (rf & 2) {
16
+ const ctx_r4 = i0.ɵɵnextContext(3);
17
+ i0.ɵɵpropertyInterpolate("svgIcon", i0.ɵɵpipeBind1(1, 1, ctx_r4.icon$));
18
+ } }
19
+ function ActionbarItemComponent_mat_list_item_0_button_4_Template(rf, ctx) { if (rf & 1) {
20
+ i0.ɵɵelementStart(0, "button", 5);
21
+ i0.ɵɵpipe(1, "async");
22
+ i0.ɵɵtemplate(2, ActionbarItemComponent_mat_list_item_0_button_4_mat_icon_2_Template, 2, 3, "mat-icon", 6);
23
+ i0.ɵɵelementEnd();
24
+ } if (rf & 2) {
25
+ const ctx_r2 = i0.ɵɵnextContext(2);
26
+ i0.ɵɵproperty("color", ctx_r2.color)("disabled", i0.ɵɵpipeBind1(1, 3, ctx_r2.disabled$));
27
+ i0.ɵɵadvance(2);
28
+ i0.ɵɵproperty("ngIf", ctx_r2.withIcon);
29
+ } }
30
+ function ActionbarItemComponent_mat_list_item_0_h4_5_Template(rf, ctx) { if (rf & 1) {
31
+ i0.ɵɵelementStart(0, "h4", 8);
32
+ i0.ɵɵtext(1);
33
+ i0.ɵɵpipe(2, "translate");
34
+ i0.ɵɵelementEnd();
35
+ } if (rf & 2) {
36
+ const ctx_r3 = i0.ɵɵnextContext(2);
37
+ i0.ɵɵadvance(1);
38
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, ctx_r3.title));
39
+ } }
40
+ function ActionbarItemComponent_mat_list_item_0_Template(rf, ctx) { if (rf & 1) {
41
+ const _r6 = i0.ɵɵgetCurrentView();
42
+ i0.ɵɵelementStart(0, "mat-list-item", 2);
43
+ i0.ɵɵlistener("click", function ActionbarItemComponent_mat_list_item_0_Template_mat_list_item_click_0_listener() { i0.ɵɵrestoreView(_r6); const ctx_r5 = i0.ɵɵnextContext(); return ctx_r5.onClick(); });
44
+ i0.ɵɵpipe(1, "translate");
45
+ i0.ɵɵpipe(2, "async");
46
+ i0.ɵɵpipe(3, "async");
47
+ i0.ɵɵtemplate(4, ActionbarItemComponent_mat_list_item_0_button_4_Template, 3, 5, "button", 3);
48
+ i0.ɵɵtemplate(5, ActionbarItemComponent_mat_list_item_0_h4_5_Template, 3, 3, "h4", 4);
49
+ i0.ɵɵelementEnd();
50
+ } if (rf & 2) {
51
+ const ctx_r0 = i0.ɵɵnextContext();
52
+ i0.ɵɵproperty("matTooltip", ctx_r0.withTooltip ? i0.ɵɵpipeBind1(1, 4, i0.ɵɵpipeBind1(2, 6, ctx_r0.tooltip$) || ctx_r0.title) : "")("ngClass", i0.ɵɵpipeBind1(3, 8, ctx_r0.ngClass$));
53
+ i0.ɵɵadvance(4);
54
+ i0.ɵɵproperty("ngIf", ctx_r0.withIcon);
55
+ i0.ɵɵadvance(1);
56
+ i0.ɵɵproperty("ngIf", ctx_r0.withTitle);
57
+ } }
58
+ function ActionbarItemComponent_mat_list_item_1_mat_checkbox_4_Template(rf, ctx) { if (rf & 1) {
59
+ const _r9 = i0.ɵɵgetCurrentView();
60
+ i0.ɵɵelementStart(0, "mat-checkbox", 11);
61
+ i0.ɵɵlistener("change", function ActionbarItemComponent_mat_list_item_1_mat_checkbox_4_Template_mat_checkbox_change_0_listener() { i0.ɵɵrestoreView(_r9); const ctx_r8 = i0.ɵɵnextContext(2); return ctx_r8.action.handler(); });
62
+ i0.ɵɵpipe(1, "async");
63
+ i0.ɵɵtext(2);
64
+ i0.ɵɵpipe(3, "translate");
65
+ i0.ɵɵelementEnd();
66
+ } if (rf & 2) {
67
+ const ctx_r7 = i0.ɵɵnextContext(2);
68
+ i0.ɵɵproperty("checked", i0.ɵɵpipeBind1(1, 2, ctx_r7.checkCondition$));
69
+ i0.ɵɵadvance(2);
70
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 4, ctx_r7.title), " ");
71
+ } }
72
+ function ActionbarItemComponent_mat_list_item_1_Template(rf, ctx) { if (rf & 1) {
73
+ i0.ɵɵelementStart(0, "mat-list-item", 9);
74
+ i0.ɵɵpipe(1, "translate");
75
+ i0.ɵɵpipe(2, "async");
76
+ i0.ɵɵpipe(3, "async");
77
+ i0.ɵɵtemplate(4, ActionbarItemComponent_mat_list_item_1_mat_checkbox_4_Template, 4, 6, "mat-checkbox", 10);
78
+ i0.ɵɵelementEnd();
79
+ } if (rf & 2) {
80
+ const ctx_r1 = i0.ɵɵnextContext();
81
+ i0.ɵɵproperty("matTooltip", ctx_r1.withTooltip ? i0.ɵɵpipeBind1(1, 3, i0.ɵɵpipeBind1(2, 5, ctx_r1.tooltip$) || ctx_r1.title) : "")("ngClass", i0.ɵɵpipeBind1(3, 7, ctx_r1.ngClass$));
82
+ i0.ɵɵadvance(4);
83
+ i0.ɵɵproperty("ngIf", ctx_r1.withTitle);
84
+ } }
85
+ /**
86
+ * An action button
87
+ */
88
+ export class ActionbarItemComponent {
89
+ constructor() {
90
+ this.disabled$ = new BehaviorSubject(false);
91
+ this.checkCondition$ = new BehaviorSubject(undefined);
92
+ this.icon$ = new BehaviorSubject(undefined);
93
+ this.tooltip$ = new BehaviorSubject(undefined);
94
+ this.noDisplay$ = new BehaviorSubject(false);
95
+ this.ngClass$ = new BehaviorSubject({});
96
+ /**
97
+ * Color
98
+ */
99
+ this.color = 'default';
100
+ /**
101
+ * Whether the action title is displayed
102
+ */
103
+ this.withTitle = true;
104
+ /**
105
+ * Whether the action icon is displayed
106
+ */
107
+ this.withIcon = true;
108
+ /**
109
+ * Whether a tooltip should be shown
110
+ */
111
+ this.withTooltip = true;
112
+ /**
113
+ * Event emitted when the action button is clicked
114
+ */
115
+ this.trigger = new EventEmitter();
116
+ }
117
+ /**
118
+ * Whether the action is disabled
119
+ */
120
+ set disabled(value) { this.disabled$.next(value); }
121
+ get disabled() { return this.disabled$.value; }
122
+ /**
123
+ * Whether the action is display or not
124
+ */
125
+ set noDisplay(value) { this.noDisplay$.next(value); }
126
+ get noDisplay() { return this.noDisplay$.value; }
127
+ /**
128
+ * @internal
129
+ */
130
+ get title() { return this.action.title; }
131
+ ngOnInit() {
132
+ const args = this.action.args || [];
133
+ if (this.action.ngClass !== undefined) {
134
+ this.ngClass$$ = this.action.ngClass(...args)
135
+ .subscribe((ngClass) => this.updateNgClass(ngClass));
136
+ }
137
+ if (isObservable(this.action.icon)) {
138
+ this.icon$$ = this.action.icon
139
+ .subscribe((icon) => this.updateIcon(icon));
140
+ }
141
+ else {
142
+ this.updateIcon(this.action.icon);
143
+ }
144
+ if (isObservable(this.action.checkCondition)) {
145
+ this.checkCondition$$ = this.action.checkCondition
146
+ .subscribe((checkCondition) => this.updateCheckCondition(checkCondition));
147
+ }
148
+ else {
149
+ this.updateCheckCondition(this.action.checkCondition);
150
+ }
151
+ if (isObservable(this.action.tooltip)) {
152
+ this.tooltip$$ = this.action.tooltip
153
+ .subscribe((tooltip) => this.updateTooltip(tooltip));
154
+ }
155
+ else {
156
+ this.updateTooltip(this.action.tooltip);
157
+ }
158
+ if (this.action.availability !== undefined) {
159
+ this.availability$$ = this.action.availability(...args)
160
+ .subscribe((available) => this.disabled = !available);
161
+ }
162
+ this.disabled$$ = this.disabled$
163
+ .subscribe((disabled) => this.updateNgClass({ 'igo-actionbar-item-disabled': disabled }));
164
+ if (this.action.display !== undefined) {
165
+ this.display$$ = this.action.display(...args)
166
+ .subscribe((display) => this.noDisplay = !display);
167
+ }
168
+ this.noDisplay$$ = this.noDisplay$
169
+ .subscribe((noDisplay) => this.updateNgClass({ 'igo-actionbar-item-no-display': noDisplay }));
170
+ }
171
+ ngOnDestroy() {
172
+ if (this.ngClass$$ !== undefined) {
173
+ this.ngClass$$.unsubscribe();
174
+ this.ngClass$$ = undefined;
175
+ }
176
+ if (this.availability$$ !== undefined) {
177
+ this.availability$$.unsubscribe();
178
+ this.availability$$ = undefined;
179
+ }
180
+ if (this.display$$ !== undefined) {
181
+ this.display$$.unsubscribe();
182
+ this.display$$ = undefined;
183
+ }
184
+ if (this.checkCondition$$ !== undefined) {
185
+ this.checkCondition$$.unsubscribe();
186
+ this.checkCondition$$ = undefined;
187
+ }
188
+ if (this.icon$$ !== undefined) {
189
+ this.icon$$.unsubscribe();
190
+ this.icon$$ = undefined;
191
+ }
192
+ if (this.tooltip$$ !== undefined) {
193
+ this.tooltip$$.unsubscribe();
194
+ this.tooltip$$ = undefined;
195
+ }
196
+ this.disabled$$.unsubscribe();
197
+ this.noDisplay$$.unsubscribe();
198
+ }
199
+ /**
200
+ * When the action button is clicked, emit the 'trigger' event but don't
201
+ * invoke the action handler. This is handled by the parent component.
202
+ * @internal
203
+ */
204
+ onClick() {
205
+ if (this.disabled === true) {
206
+ return;
207
+ }
208
+ this.trigger.emit(this.action);
209
+ }
210
+ updateNgClass(ngClass) {
211
+ this.ngClass$.next(Object.assign({}, this.ngClass$.value, ngClass));
212
+ }
213
+ updateTooltip(tooltip) {
214
+ this.tooltip$.next(tooltip);
215
+ }
216
+ updateCheckCondition(checkCondition) {
217
+ this.checkCondition$.next(checkCondition);
218
+ }
219
+ updateIcon(icon) {
220
+ this.icon$.next(icon);
221
+ }
222
+ }
223
+ ActionbarItemComponent.ɵfac = function ActionbarItemComponent_Factory(t) { return new (t || ActionbarItemComponent)(); };
224
+ ActionbarItemComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ActionbarItemComponent, selectors: [["igo-actionbar-item"]], inputs: { action: "action", color: "color", withTitle: "withTitle", withIcon: "withIcon", withTooltip: "withTooltip", disabled: "disabled", noDisplay: "noDisplay" }, outputs: { trigger: "trigger" }, decls: 2, vars: 2, consts: [["matTooltipClass", "actionbarItemTooltip", "matTooltipShowDelay", "500", 3, "matTooltip", "ngClass", "click", 4, "ngIf"], ["class", "item-checkbox", "matTooltipClass", "actionbarItemTooltip", "matTooltipShowDelay", "500", 3, "matTooltip", "ngClass", 4, "ngIf"], ["matTooltipClass", "actionbarItemTooltip", "matTooltipShowDelay", "500", 3, "matTooltip", "ngClass", "click"], ["mat-list-avatar", "", "mat-icon-button", "", 3, "color", "disabled", 4, "ngIf"], ["matLine", "", 4, "ngIf"], ["mat-list-avatar", "", "mat-icon-button", "", 3, "color", "disabled"], [3, "svgIcon", 4, "ngIf"], [3, "svgIcon"], ["matLine", ""], ["matTooltipClass", "actionbarItemTooltip", "matTooltipShowDelay", "500", 1, "item-checkbox", 3, "matTooltip", "ngClass"], [3, "checked", "change", 4, "ngIf"], [3, "checked", "change"]], template: function ActionbarItemComponent_Template(rf, ctx) { if (rf & 1) {
225
+ i0.ɵɵtemplate(0, ActionbarItemComponent_mat_list_item_0_Template, 6, 10, "mat-list-item", 0);
226
+ i0.ɵɵtemplate(1, ActionbarItemComponent_mat_list_item_1_Template, 5, 9, "mat-list-item", 1);
227
+ } if (rf & 2) {
228
+ i0.ɵɵproperty("ngIf", !ctx.action.checkbox);
229
+ i0.ɵɵadvance(1);
230
+ i0.ɵɵproperty("ngIf", ctx.action.checkbox);
231
+ } }, directives: [i1.NgIf, i2.MatListItem, i3.MatTooltip, i1.NgClass, i4.MatButton, i2.MatListAvatarCssMatStyler, i5.MatIcon, i6.MatLine, i7.MatCheckbox], pipes: [i8.TranslatePipe, i1.AsyncPipe], styles: ["mat-list-item.igo-actionbar-item-disabled[_ngcontent-%COMP%]{color:#00000042;cursor:default!important}mat-list-item.igo-actionbar-item-no-display[_ngcontent-%COMP%]{display:none}mat-checkbox[_ngcontent-%COMP%]{padding:12px}.item-checkbox[_ngcontent-%COMP%]{height:56px}.item-checkbox[_ngcontent-%COMP%] .mat-checkbox-label{margin-left:20px}"], changeDetection: 0 });
232
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ActionbarItemComponent, [{
233
+ type: Component,
234
+ args: [{
235
+ selector: 'igo-actionbar-item',
236
+ templateUrl: './actionbar-item.component.html',
237
+ styleUrls: ['./actionbar-item.component.scss'],
238
+ changeDetection: ChangeDetectionStrategy.OnPush
239
+ }]
240
+ }], function () { return []; }, { action: [{
241
+ type: Input
242
+ }], color: [{
243
+ type: Input
244
+ }], withTitle: [{
245
+ type: Input
246
+ }], withIcon: [{
247
+ type: Input
248
+ }], withTooltip: [{
249
+ type: Input
250
+ }], disabled: [{
251
+ type: Input
252
+ }], noDisplay: [{
253
+ type: Input
254
+ }], trigger: [{
255
+ type: Output
256
+ }] }); })();
257
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uYmFyLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy9saWIvYWN0aW9uL2FjdGlvbmJhci9hY3Rpb25iYXItaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL2xpYi9hY3Rpb24vYWN0aW9uYmFyL2FjdGlvbmJhci1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osdUJBQXVCLEVBR3hCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxlQUFlLEVBQWdCLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7SUNDL0QsOEJBQWtFOzs7O0lBQXZDLHVFQUEyQjs7O0lBTHhELGlDQUlpQzs7SUFDL0IsMEdBQWtFO0lBQ3BFLGlCQUFTOzs7SUFIUCxvQ0FBZSxvREFBQTtJQUVKLGVBQWM7SUFBZCxzQ0FBYzs7O0lBRTNCLDZCQUE4QjtJQUFBLFlBQXFCOztJQUFBLGlCQUFLOzs7SUFBMUIsZUFBcUI7SUFBckIsd0RBQXFCOzs7O0lBYnJELHdDQUtzQjtJQUFwQix3TUFBbUI7Ozs7SUFDbkIsNkZBTVM7SUFDVCxxRkFBd0Q7SUFDMUQsaUJBQWdCOzs7SUFYZCxrSUFBMkUsa0RBQUE7SUFHbEUsZUFBYztJQUFkLHNDQUFjO0lBT2xCLGVBQWU7SUFBZix1Q0FBZTs7OztJQVFwQix3Q0FFd0M7SUFEcEMscU1BQVUsdUJBQWdCLElBQUM7O0lBRTNCLFlBQ0o7O0lBQUEsaUJBQWU7OztJQUZYLHNFQUFtQztJQUNuQyxlQUNKO0lBREksbUVBQ0o7OztJQVRGLHdDQUkrQjs7OztJQUM3QiwwR0FJZTtJQUNqQixpQkFBZ0I7OztJQVBkLGtJQUEyRSxrREFBQTtJQUU1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QkFBbkIsS0FBSztZQU1GLFFBQVE7a0JBRFgsS0FBSztZQVFGLFNBQVM7a0JBRFosS0FBSztZQU9JLE9BQU87a0JBQWhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIE9uSW5pdCxcclxuICBPbkRlc3Ryb3lcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBpc09ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IEFjdGlvbiB9IGZyb20gJy4uL3NoYXJlZC9hY3Rpb24uaW50ZXJmYWNlcyc7XHJcblxyXG4gLyoqXHJcbiAgKiBBbiBhY3Rpb24gYnV0dG9uXHJcbiAgKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpZ28tYWN0aW9uYmFyLWl0ZW0nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hY3Rpb25iYXItaXRlbS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYWN0aW9uYmFyLWl0ZW0uY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWN0aW9uYmFySXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgcmVhZG9ubHkgZGlzYWJsZWQkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcclxuXHJcbiAgcmVhZG9ubHkgY2hlY2tDb25kaXRpb24kOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHVuZGVmaW5lZCk7XHJcblxyXG4gIHJlYWRvbmx5IGljb24kOiBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPiA9IG5ldyBCZWhhdmlvclN1YmplY3QodW5kZWZpbmVkKTtcclxuXHJcbiAgcmVhZG9ubHkgdG9vbHRpcCQ6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh1bmRlZmluZWQpO1xyXG5cclxuICByZWFkb25seSBub0Rpc3BsYXkkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcclxuXHJcbiAgcmVhZG9ubHkgbmdDbGFzcyQ6IEJlaGF2aW9yU3ViamVjdDx7W2tleTogc3RyaW5nXTogYm9vbGVhbn0+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh7fSk7XHJcblxyXG4gIHByaXZhdGUgbmdDbGFzcyQkOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIHByaXZhdGUgZGlzYWJsZWQkJDogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBwcml2YXRlIGF2YWlsYWJpbGl0eSQkOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIHByaXZhdGUgaWNvbiQkOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIHByaXZhdGUgY2hlY2tDb25kaXRpb24kJDogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBwcml2YXRlIHRvb2x0aXAkJDogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBwcml2YXRlIG5vRGlzcGxheSQkOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIHByaXZhdGUgZGlzcGxheSQkOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIC8qKlxyXG4gICAqIEFjdGlvblxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGFjdGlvbjogQWN0aW9uO1xyXG5cclxuICAvKipcclxuICAgKiBDb2xvclxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGNvbG9yID0gJ2RlZmF1bHQnO1xyXG5cclxuICAvKipcclxuICAgKiBXaGV0aGVyIHRoZSBhY3Rpb24gdGl0bGUgaXMgZGlzcGxheWVkXHJcbiAgICovXHJcbiAgQElucHV0KCkgd2l0aFRpdGxlID0gdHJ1ZTtcclxuXHJcbiAgLyoqXHJcbiAgICogV2hldGhlciB0aGUgYWN0aW9uIGljb24gaXMgZGlzcGxheWVkXHJcbiAgICovXHJcbiAgQElucHV0KCkgd2l0aEljb24gPSB0cnVlO1xyXG5cclxuICAvKipcclxuICAgKiBXaGV0aGVyIGEgdG9vbHRpcCBzaG91bGQgYmUgc2hvd25cclxuICAgKi9cclxuICBASW5wdXQoKSB3aXRoVG9vbHRpcCA9IHRydWU7XHJcblxyXG4gIC8qKlxyXG4gICAqIFdoZXRoZXIgdGhlIGFjdGlvbiBpcyBkaXNhYmxlZFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7IHRoaXMuZGlzYWJsZWQkLm5leHQodmFsdWUpOyB9XHJcbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5kaXNhYmxlZCQudmFsdWU7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogV2hldGhlciB0aGUgYWN0aW9uIGlzIGRpc3BsYXkgb3Igbm90XHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgbm9EaXNwbGF5KHZhbHVlOiBib29sZWFuKSB7IHRoaXMubm9EaXNwbGF5JC5uZXh0KHZhbHVlKTsgfVxyXG4gIGdldCBub0Rpc3BsYXkoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLm5vRGlzcGxheSQudmFsdWU7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBhY3Rpb24gYnV0dG9uIGlzIGNsaWNrZWRcclxuICAgKi9cclxuICBAT3V0cHV0KCkgdHJpZ2dlcjogRXZlbnRFbWl0dGVyPEFjdGlvbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIGdldCB0aXRsZSgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5hY3Rpb24udGl0bGU7IH1cclxuXHJcbiAgY29uc3RydWN0b3IoKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGNvbnN0IGFyZ3MgPSB0aGlzLmFjdGlvbi5hcmdzIHx8IFtdO1xyXG5cclxuICAgIGlmICh0aGlzLmFjdGlvbi5uZ0NsYXNzICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5uZ0NsYXNzJCQgPSB0aGlzLmFjdGlvbi5uZ0NsYXNzKC4uLmFyZ3MpXHJcbiAgICAgICAgLnN1YnNjcmliZSgobmdDbGFzczoge1trZXk6IHN0cmluZ106IGJvb2xlYW59KSA9PiB0aGlzLnVwZGF0ZU5nQ2xhc3MobmdDbGFzcykpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChpc09ic2VydmFibGUodGhpcy5hY3Rpb24uaWNvbikpIHtcclxuICAgICAgdGhpcy5pY29uJCQgPSB0aGlzLmFjdGlvbi5pY29uXHJcbiAgICAgICAgLnN1YnNjcmliZSgoaWNvbjogc3RyaW5nKSA9PiB0aGlzLnVwZGF0ZUljb24oaWNvbikpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy51cGRhdGVJY29uKHRoaXMuYWN0aW9uLmljb24pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChpc09ic2VydmFibGUodGhpcy5hY3Rpb24uY2hlY2tDb25kaXRpb24pKSB7XHJcbiAgICAgIHRoaXMuY2hlY2tDb25kaXRpb24kJCA9IHRoaXMuYWN0aW9uLmNoZWNrQ29uZGl0aW9uXHJcbiAgICAgICAgLnN1YnNjcmliZSgoY2hlY2tDb25kaXRpb246IGJvb2xlYW4pID0+IHRoaXMudXBkYXRlQ2hlY2tDb25kaXRpb24oY2hlY2tDb25kaXRpb24pKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudXBkYXRlQ2hlY2tDb25kaXRpb24odGhpcy5hY3Rpb24uY2hlY2tDb25kaXRpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChpc09ic2VydmFibGUodGhpcy5hY3Rpb24udG9vbHRpcCkpIHtcclxuICAgICAgdGhpcy50b29sdGlwJCQgPSB0aGlzLmFjdGlvbi50b29sdGlwXHJcbiAgICAgICAgLnN1YnNjcmliZSgodG9vbHRpcDogc3RyaW5nKSA9PiB0aGlzLnVwZGF0ZVRvb2x0aXAodG9vbHRpcCkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy51cGRhdGVUb29sdGlwKHRoaXMuYWN0aW9uLnRvb2x0aXApO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmFjdGlvbi5hdmFpbGFiaWxpdHkgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLmF2YWlsYWJpbGl0eSQkID0gdGhpcy5hY3Rpb24uYXZhaWxhYmlsaXR5KC4uLmFyZ3MpXHJcbiAgICAgICAgLnN1YnNjcmliZSgoYXZhaWxhYmxlOiBib29sZWFuKSA9PiB0aGlzLmRpc2FibGVkID0gIWF2YWlsYWJsZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kaXNhYmxlZCQkID0gdGhpcy5kaXNhYmxlZCRcclxuICAgICAgLnN1YnNjcmliZSgoZGlzYWJsZWQ6IGJvb2xlYW4pID0+IHRoaXMudXBkYXRlTmdDbGFzcyh7J2lnby1hY3Rpb25iYXItaXRlbS1kaXNhYmxlZCc6IGRpc2FibGVkfSkpO1xyXG5cclxuICAgIGlmICh0aGlzLmFjdGlvbi5kaXNwbGF5ICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5kaXNwbGF5JCQgPSB0aGlzLmFjdGlvbi5kaXNwbGF5KC4uLmFyZ3MpXHJcbiAgICAgICAgLnN1YnNjcmliZSgoZGlzcGxheTogYm9vbGVhbikgPT4gdGhpcy5ub0Rpc3BsYXkgPSAhZGlzcGxheSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5ub0Rpc3BsYXkkJCA9IHRoaXMubm9EaXNwbGF5JFxyXG4gICAgICAuc3Vic2NyaWJlKChub0Rpc3BsYXk6IGJvb2xlYW4pID0+IHRoaXMudXBkYXRlTmdDbGFzcyh7J2lnby1hY3Rpb25iYXItaXRlbS1uby1kaXNwbGF5Jzogbm9EaXNwbGF5fSkpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICBpZiAodGhpcy5uZ0NsYXNzJCQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLm5nQ2xhc3MkJC51bnN1YnNjcmliZSgpO1xyXG4gICAgICB0aGlzLm5nQ2xhc3MkJCA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5hdmFpbGFiaWxpdHkkJCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuYXZhaWxhYmlsaXR5JCQudW5zdWJzY3JpYmUoKTtcclxuICAgICAgdGhpcy5hdmFpbGFiaWxpdHkkJCA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5kaXNwbGF5JCQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLmRpc3BsYXkkJC51bnN1YnNjcmliZSgpO1xyXG4gICAgICB0aGlzLmRpc3BsYXkkJCA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5jaGVja0NvbmRpdGlvbiQkICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5jaGVja0NvbmRpdGlvbiQkLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgIHRoaXMuY2hlY2tDb25kaXRpb24kJCA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5pY29uJCQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLmljb24kJC51bnN1YnNjcmliZSgpO1xyXG4gICAgICB0aGlzLmljb24kJCA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy50b29sdGlwJCQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLnRvb2x0aXAkJC51bnN1YnNjcmliZSgpO1xyXG4gICAgICB0aGlzLnRvb2x0aXAkJCA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRpc2FibGVkJCQudW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMubm9EaXNwbGF5JCQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFdoZW4gdGhlIGFjdGlvbiBidXR0b24gaXMgY2xpY2tlZCwgZW1pdCB0aGUgJ3RyaWdnZXInIGV2ZW50IGJ1dCBkb24ndFxyXG4gICAqIGludm9rZSB0aGUgYWN0aW9uIGhhbmRsZXIuIFRoaXMgaXMgaGFuZGxlZCBieSB0aGUgcGFyZW50IGNvbXBvbmVudC5cclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBvbkNsaWNrKCkge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQgPT09IHRydWUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy50cmlnZ2VyLmVtaXQodGhpcy5hY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVOZ0NsYXNzKG5nQ2xhc3M6IHtba2V5OiBzdHJpbmddOiBib29sZWFufSkge1xyXG4gICAgdGhpcy5uZ0NsYXNzJC5uZXh0KE9iamVjdC5hc3NpZ24oe30sIHRoaXMubmdDbGFzcyQudmFsdWUsIG5nQ2xhc3MpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlVG9vbHRpcCh0b29sdGlwOiBzdHJpbmcpIHtcclxuICAgIHRoaXMudG9vbHRpcCQubmV4dCh0b29sdGlwKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlQ2hlY2tDb25kaXRpb24oY2hlY2tDb25kaXRpb246IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuY2hlY2tDb25kaXRpb24kLm5leHQoY2hlY2tDb25kaXRpb24pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVJY29uKGljb246IHN0cmluZykge1xyXG4gICAgdGhpcy5pY29uJC5uZXh0KGljb24pO1xyXG4gIH1cclxufVxyXG4iLCI8bWF0LWxpc3QtaXRlbSAqbmdJZj1cIiFhY3Rpb24uY2hlY2tib3hcIlxyXG4gIG1hdFRvb2x0aXBDbGFzcz1cImFjdGlvbmJhckl0ZW1Ub29sdGlwXCJcclxuICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcclxuICBbbWF0VG9vbHRpcF09XCJ3aXRoVG9vbHRpcCA/ICgodG9vbHRpcCQgfCBhc3luYykgfHwgdGl0bGUgfCB0cmFuc2xhdGUpIDogJydcIlxyXG4gIFtuZ0NsYXNzXT1cIm5nQ2xhc3MkIHwgYXN5bmNcIlxyXG4gIChjbGljayk9XCJvbkNsaWNrKClcIj5cclxuICA8YnV0dG9uICpuZ0lmPVwid2l0aEljb25cIlxyXG4gICAgbWF0LWxpc3QtYXZhdGFyXHJcbiAgICBtYXQtaWNvbi1idXR0b25cclxuICAgIFtjb2xvcl09XCJjb2xvclwiXHJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQkIHwgYXN5bmNcIj5cclxuICAgIDxtYXQtaWNvbiAqbmdJZj1cIndpdGhJY29uXCIgc3ZnSWNvbj1cInt7aWNvbiQgfCBhc3luY319XCI+PC9tYXQtaWNvbj5cclxuICA8L2J1dHRvbj5cclxuICA8aDQgKm5nSWY9XCJ3aXRoVGl0bGVcIiBtYXRMaW5lPnt7dGl0bGUgfCB0cmFuc2xhdGV9fTwvaDQ+XHJcbjwvbWF0LWxpc3QtaXRlbT5cclxuXHJcbjxtYXQtbGlzdC1pdGVtIGNsYXNzPVwiaXRlbS1jaGVja2JveFwiICpuZ0lmPVwiYWN0aW9uLmNoZWNrYm94XCJcclxuICBtYXRUb29sdGlwQ2xhc3M9XCJhY3Rpb25iYXJJdGVtVG9vbHRpcFwiXHJcbiAgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiXHJcbiAgW21hdFRvb2x0aXBdPVwid2l0aFRvb2x0aXAgPyAoKHRvb2x0aXAkIHwgYXN5bmMpIHx8IHRpdGxlIHwgdHJhbnNsYXRlKSA6ICcnXCJcclxuICBbbmdDbGFzc109XCJuZ0NsYXNzJCB8IGFzeW5jXCI+XHJcbiAgPG1hdC1jaGVja2JveCAqbmdJZj1cIndpdGhUaXRsZVwiXHJcbiAgICAgIChjaGFuZ2UpPVwiYWN0aW9uLmhhbmRsZXIoKVwiXHJcbiAgICAgIFtjaGVja2VkXT1cImNoZWNrQ29uZGl0aW9uJCB8IGFzeW5jXCI+XHJcbiAgICAgIHt7dGl0bGUgfCB0cmFuc2xhdGV9fVxyXG4gIDwvbWF0LWNoZWNrYm94PlxyXG48L21hdC1saXN0LWl0ZW0+XHJcbiJdfQ==