@igo2/common 1.14.2 → 1.14.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 (349) hide show
  1. package/esm2020/igo2-common.mjs +4 -4
  2. package/esm2020/lib/action/action.module.mjs +26 -26
  3. package/esm2020/lib/action/actionbar/actionbar-item.component.mjs +251 -251
  4. package/esm2020/lib/action/actionbar/actionbar.component.mjs +369 -369
  5. package/esm2020/lib/action/actionbar/actionbar.module.mjs +56 -56
  6. package/esm2020/lib/action/index.mjs +2 -2
  7. package/esm2020/lib/action/shared/action.enums.mjs +6 -6
  8. package/esm2020/lib/action/shared/action.interfaces.mjs +1 -1
  9. package/esm2020/lib/action/shared/index.mjs +3 -3
  10. package/esm2020/lib/action/shared/store.mjs +7 -7
  11. package/esm2020/lib/backdrop/backdrop.component.mjs +25 -25
  12. package/esm2020/lib/backdrop/backdrop.module.mjs +24 -24
  13. package/esm2020/lib/backdrop/index.mjs +1 -1
  14. package/esm2020/lib/badge-icon/badge-icon.directive.mjs +140 -140
  15. package/esm2020/lib/badge-icon/badge-icon.module.mjs +25 -25
  16. package/esm2020/lib/badge-icon/index.mjs +1 -1
  17. package/esm2020/lib/clickout/clickout.directive.mjs +31 -31
  18. package/esm2020/lib/clickout/clickout.module.mjs +23 -23
  19. package/esm2020/lib/clickout/index.mjs +1 -1
  20. package/esm2020/lib/clone/clone.module.mjs +23 -23
  21. package/esm2020/lib/clone/clone.pipe.mjs +23 -23
  22. package/esm2020/lib/clone/index.mjs +1 -1
  23. package/esm2020/lib/collapsible/collapse.directive.mjs +54 -54
  24. package/esm2020/lib/collapsible/collapsible.component.mjs +56 -56
  25. package/esm2020/lib/collapsible/collapsible.module.mjs +26 -26
  26. package/esm2020/lib/collapsible/index.mjs +2 -2
  27. package/esm2020/lib/confirm-dialog/confirm-dialog.component.mjs +43 -43
  28. package/esm2020/lib/confirm-dialog/confirm-dialog.module.mjs +28 -28
  29. package/esm2020/lib/confirm-dialog/confirm-dialog.service.mjs +21 -21
  30. package/esm2020/lib/confirm-dialog/index.mjs +2 -2
  31. package/esm2020/lib/context-menu/context-menu.directive.mjs +102 -102
  32. package/esm2020/lib/context-menu/context-menu.module.mjs +24 -24
  33. package/esm2020/lib/context-menu/index.mjs +2 -2
  34. package/esm2020/lib/context-menu/long-press.directive.mjs +62 -62
  35. package/esm2020/lib/custom-html/custom-html.component.mjs +27 -27
  36. package/esm2020/lib/custom-html/custom-html.module.mjs +46 -46
  37. package/esm2020/lib/custom-html/custom-html.pipe.mjs +17 -17
  38. package/esm2020/lib/custom-html/index.mjs +2 -2
  39. package/esm2020/lib/dom/dom.interfaces.mjs +1 -1
  40. package/esm2020/lib/dom/dom.module.mjs +22 -22
  41. package/esm2020/lib/dom/dom.service.mjs +29 -29
  42. package/esm2020/lib/dom/index.mjs +2 -2
  43. package/esm2020/lib/drag-drop/drag-drop.directive.mjs +87 -87
  44. package/esm2020/lib/drag-drop/drag-drop.module.mjs +23 -23
  45. package/esm2020/lib/drag-drop/index.mjs +1 -1
  46. package/esm2020/lib/dynamic-component/dynamic-component.module.mjs +30 -30
  47. package/esm2020/lib/dynamic-component/dynamic-outlet/dynamic-outlet.component.mjs +121 -121
  48. package/esm2020/lib/dynamic-component/dynamic-outlet/dynamic-outlet.module.mjs +27 -27
  49. package/esm2020/lib/dynamic-component/index.mjs +2 -2
  50. package/esm2020/lib/dynamic-component/shared/dynamic-component.interfaces.mjs +1 -1
  51. package/esm2020/lib/dynamic-component/shared/dynamic-component.mjs +173 -173
  52. package/esm2020/lib/dynamic-component/shared/dynamic-component.service.mjs +28 -28
  53. package/esm2020/lib/dynamic-component/shared/index.mjs +3 -3
  54. package/esm2020/lib/entity/entity-selector/entity-selector.component.mjs +193 -193
  55. package/esm2020/lib/entity/entity-selector/entity-selector.module.mjs +31 -31
  56. package/esm2020/lib/entity/entity-table/entity-table-row.directive.mjs +136 -136
  57. package/esm2020/lib/entity/entity-table/entity-table.component.mjs +1367 -1367
  58. package/esm2020/lib/entity/entity-table/entity-table.module.mjs +101 -101
  59. package/esm2020/lib/entity/entity-table-paginator/entity-table-paginator.component.mjs +131 -131
  60. package/esm2020/lib/entity/entity-table-paginator/entity-table-paginator.interface.mjs +1 -1
  61. package/esm2020/lib/entity/entity-table-paginator/entity-table-paginator.module.mjs +27 -27
  62. package/esm2020/lib/entity/entity.module.mjs +30 -30
  63. package/esm2020/lib/entity/index.mjs +5 -5
  64. package/esm2020/lib/entity/shared/entity.enums.mjs +27 -27
  65. package/esm2020/lib/entity/shared/entity.interfaces.mjs +1 -1
  66. package/esm2020/lib/entity/shared/entity.utils.mjs +66 -66
  67. package/esm2020/lib/entity/shared/index.mjs +9 -9
  68. package/esm2020/lib/entity/shared/state.mjs +190 -190
  69. package/esm2020/lib/entity/shared/store.mjs +287 -287
  70. package/esm2020/lib/entity/shared/strategies/filter-custom-function.mjs +78 -78
  71. package/esm2020/lib/entity/shared/strategies/filter-selection.mjs +83 -83
  72. package/esm2020/lib/entity/shared/strategies/index.mjs +3 -3
  73. package/esm2020/lib/entity/shared/strategies/strategy.mjs +74 -74
  74. package/esm2020/lib/entity/shared/transaction.mjs +315 -315
  75. package/esm2020/lib/entity/shared/view.mjs +314 -314
  76. package/esm2020/lib/entity/shared/watcher.mjs +119 -119
  77. package/esm2020/lib/flexible/flexible.component.mjs +147 -147
  78. package/esm2020/lib/flexible/flexible.module.mjs +23 -23
  79. package/esm2020/lib/flexible/flexible.type.mjs +1 -1
  80. package/esm2020/lib/flexible/index.mjs +2 -2
  81. package/esm2020/lib/form/form/form.component.mjs +116 -116
  82. package/esm2020/lib/form/form/form.module.mjs +39 -39
  83. package/esm2020/lib/form/form-field/form-field-select.component.mjs +126 -126
  84. package/esm2020/lib/form/form-field/form-field-text.component.mjs +103 -103
  85. package/esm2020/lib/form/form-field/form-field-textarea.component.mjs +104 -104
  86. package/esm2020/lib/form/form-field/form-field.component.mjs +71 -71
  87. package/esm2020/lib/form/form-field/form-field.module.mjs +73 -73
  88. package/esm2020/lib/form/form-field/index.mjs +4 -4
  89. package/esm2020/lib/form/form-group/form-group.component.mjs +104 -104
  90. package/esm2020/lib/form/form-group/form-group.module.mjs +39 -39
  91. package/esm2020/lib/form/form.module.mjs +48 -48
  92. package/esm2020/lib/form/index.mjs +4 -4
  93. package/esm2020/lib/form/shared/form-field-component.mjs +6 -6
  94. package/esm2020/lib/form/shared/form-field.service.mjs +28 -28
  95. package/esm2020/lib/form/shared/form.interfaces.mjs +1 -1
  96. package/esm2020/lib/form/shared/form.service.mjs +80 -80
  97. package/esm2020/lib/form/shared/form.utils.mjs +39 -39
  98. package/esm2020/lib/form/shared/index.mjs +5 -5
  99. package/esm2020/lib/home-button/home-button.component.mjs +30 -30
  100. package/esm2020/lib/home-button/home-button.module.mjs +40 -40
  101. package/esm2020/lib/home-button/index.mjs +1 -1
  102. package/esm2020/lib/image/image-error.directive.mjs +34 -34
  103. package/esm2020/lib/image/image.module.mjs +24 -24
  104. package/esm2020/lib/image/index.mjs +2 -2
  105. package/esm2020/lib/image/secure-image.pipe.mjs +58 -58
  106. package/esm2020/lib/interactive-tour/index.mjs +4 -4
  107. package/esm2020/lib/interactive-tour/interactive-tour.component.mjs +134 -134
  108. package/esm2020/lib/interactive-tour/interactive-tour.interface.mjs +1 -1
  109. package/esm2020/lib/interactive-tour/interactive-tour.loader.mjs +43 -43
  110. package/esm2020/lib/interactive-tour/interactive-tour.module.mjs +39 -39
  111. package/esm2020/lib/interactive-tour/interactive-tour.service.mjs +284 -284
  112. package/esm2020/lib/json-dialog/index.mjs +2 -2
  113. package/esm2020/lib/json-dialog/json-dialog.component.mjs +108 -108
  114. package/esm2020/lib/json-dialog/json-dialog.module.mjs +28 -28
  115. package/esm2020/lib/json-dialog/json-dialog.service.mjs +23 -23
  116. package/esm2020/lib/keyvalue/index.mjs +1 -1
  117. package/esm2020/lib/keyvalue/keyvalue.module.mjs +23 -23
  118. package/esm2020/lib/keyvalue/keyvalue.pipe.mjs +17 -17
  119. package/esm2020/lib/list/index.mjs +2 -2
  120. package/esm2020/lib/list/list-item.directive.mjs +164 -164
  121. package/esm2020/lib/list/list.component.mjs +261 -261
  122. package/esm2020/lib/list/list.module.mjs +28 -28
  123. package/esm2020/lib/panel/index.mjs +1 -1
  124. package/esm2020/lib/panel/panel.component.mjs +58 -58
  125. package/esm2020/lib/panel/panel.module.mjs +18 -18
  126. package/esm2020/lib/sidenav/index.mjs +1 -1
  127. package/esm2020/lib/sidenav/sidenav-shim.directive.mjs +54 -54
  128. package/esm2020/lib/sidenav/sidenav.module.mjs +23 -23
  129. package/esm2020/lib/spinner/index.mjs +2 -2
  130. package/esm2020/lib/spinner/spinner-activity.directive.mjs +46 -46
  131. package/esm2020/lib/spinner/spinner.component.mjs +34 -34
  132. package/esm2020/lib/spinner/spinner.module.mjs +20 -20
  133. package/esm2020/lib/stop-propagation/index.mjs +2 -2
  134. package/esm2020/lib/stop-propagation/stop-drop-propagation.directive.mjs +21 -21
  135. package/esm2020/lib/stop-propagation/stop-propagation.directive.mjs +20 -20
  136. package/esm2020/lib/stop-propagation/stop-propagation.module.mjs +24 -24
  137. package/esm2020/lib/table/index.mjs +5 -5
  138. package/esm2020/lib/table/table-action-color.enum.mjs +6 -6
  139. package/esm2020/lib/table/table-database.mjs +27 -27
  140. package/esm2020/lib/table/table-datasource.mjs +60 -60
  141. package/esm2020/lib/table/table-model.interface.mjs +1 -1
  142. package/esm2020/lib/table/table.component.mjs +296 -296
  143. package/esm2020/lib/table/table.module.mjs +66 -66
  144. package/esm2020/lib/tool/index.mjs +2 -2
  145. package/esm2020/lib/tool/shared/index.mjs +5 -5
  146. package/esm2020/lib/tool/shared/tool-component.mjs +8 -8
  147. package/esm2020/lib/tool/shared/tool.interface.mjs +1 -1
  148. package/esm2020/lib/tool/shared/tool.service.mjs +42 -42
  149. package/esm2020/lib/tool/shared/toolbox.enums.mjs +6 -6
  150. package/esm2020/lib/tool/shared/toolbox.mjs +178 -178
  151. package/esm2020/lib/tool/tool.module.mjs +31 -31
  152. package/esm2020/lib/tool/toolbox/toolbox.animation.mjs +9 -9
  153. package/esm2020/lib/tool/toolbox/toolbox.component.mjs +254 -254
  154. package/esm2020/lib/tool/toolbox/toolbox.module.mjs +35 -35
  155. package/esm2020/lib/widget/index.mjs +2 -2
  156. package/esm2020/lib/widget/shared/index.mjs +3 -3
  157. package/esm2020/lib/widget/shared/widget.interfaces.mjs +1 -1
  158. package/esm2020/lib/widget/shared/widget.mjs +3 -3
  159. package/esm2020/lib/widget/shared/widget.service.mjs +19 -19
  160. package/esm2020/lib/widget/widget-outlet/widget-outlet.component.mjs +115 -115
  161. package/esm2020/lib/widget/widget-outlet/widget-outlet.module.mjs +31 -31
  162. package/esm2020/lib/widget/widget.module.mjs +31 -31
  163. package/esm2020/lib/workspace/index.mjs +3 -3
  164. package/esm2020/lib/workspace/shared/index.mjs +3 -3
  165. package/esm2020/lib/workspace/shared/store.mjs +39 -39
  166. package/esm2020/lib/workspace/shared/workspace.interfaces.mjs +1 -1
  167. package/esm2020/lib/workspace/shared/workspace.mjs +116 -116
  168. package/esm2020/lib/workspace/workspace-selector/workspace-selector.component.mjs +50 -50
  169. package/esm2020/lib/workspace/workspace-selector/workspace-selector.module.mjs +31 -31
  170. package/esm2020/lib/workspace/workspace-widget-outlet/workspace-widget-outlet.component.mjs +87 -87
  171. package/esm2020/lib/workspace/workspace-widget-outlet/workspace-widget-outlet.module.mjs +31 -31
  172. package/esm2020/lib/workspace/workspace.module.mjs +26 -26
  173. package/esm2020/public_api.mjs +73 -73
  174. package/fesm2015/igo2-common.mjs +10003 -10003
  175. package/fesm2020/igo2-common.mjs +9306 -9306
  176. package/index.d.ts +5 -5
  177. package/lib/action/action.module.d.ts +8 -8
  178. package/lib/action/actionbar/actionbar-item.component.d.ts +78 -78
  179. package/lib/action/actionbar/actionbar.component.d.ts +146 -146
  180. package/lib/action/actionbar/actionbar.module.d.ts +20 -20
  181. package/lib/action/index.d.ts +2 -2
  182. package/lib/action/shared/action.enums.d.ts +5 -5
  183. package/lib/action/shared/action.interfaces.d.ts +17 -17
  184. package/lib/action/shared/index.d.ts +3 -3
  185. package/lib/action/shared/store.d.ts +8 -8
  186. package/lib/backdrop/backdrop.component.d.ts +9 -9
  187. package/lib/backdrop/backdrop.module.d.ts +10 -10
  188. package/lib/backdrop/index.d.ts +1 -1
  189. package/lib/badge-icon/badge-icon.directive.d.ts +36 -36
  190. package/lib/badge-icon/badge-icon.module.d.ts +11 -11
  191. package/lib/badge-icon/index.d.ts +1 -1
  192. package/lib/clickout/clickout.directive.d.ts +10 -10
  193. package/lib/clickout/clickout.module.d.ts +9 -9
  194. package/lib/clickout/index.d.ts +1 -1
  195. package/lib/clone/clone.module.d.ts +9 -9
  196. package/lib/clone/clone.pipe.d.ts +7 -7
  197. package/lib/clone/index.d.ts +1 -1
  198. package/lib/collapsible/collapse.directive.d.ts +19 -19
  199. package/lib/collapsible/collapsible.component.d.ts +13 -13
  200. package/lib/collapsible/collapsible.module.d.ts +12 -12
  201. package/lib/collapsible/index.d.ts +2 -2
  202. package/lib/confirm-dialog/confirm-dialog.component.d.ts +9 -9
  203. package/lib/confirm-dialog/confirm-dialog.module.d.ts +12 -12
  204. package/lib/confirm-dialog/confirm-dialog.service.d.ts +10 -10
  205. package/lib/confirm-dialog/index.d.ts +2 -2
  206. package/lib/context-menu/context-menu.directive.d.ts +21 -21
  207. package/lib/context-menu/context-menu.module.d.ts +10 -10
  208. package/lib/context-menu/index.d.ts +2 -2
  209. package/lib/context-menu/long-press.directive.d.ts +20 -20
  210. package/lib/custom-html/custom-html.component.d.ts +9 -9
  211. package/lib/custom-html/custom-html.module.d.ts +16 -16
  212. package/lib/custom-html/custom-html.pipe.d.ts +10 -10
  213. package/lib/custom-html/index.d.ts +2 -2
  214. package/lib/dom/dom.interfaces.d.ts +10 -10
  215. package/lib/dom/dom.module.d.ts +8 -8
  216. package/lib/dom/dom.service.d.ts +10 -10
  217. package/lib/dom/index.d.ts +2 -2
  218. package/lib/drag-drop/drag-drop.directive.d.ts +14 -14
  219. package/lib/drag-drop/drag-drop.module.d.ts +9 -9
  220. package/lib/drag-drop/index.d.ts +1 -1
  221. package/lib/dynamic-component/dynamic-component.module.d.ts +8 -8
  222. package/lib/dynamic-component/dynamic-outlet/dynamic-outlet.component.d.ts +70 -70
  223. package/lib/dynamic-component/dynamic-outlet/dynamic-outlet.module.d.ts +11 -11
  224. package/lib/dynamic-component/index.d.ts +2 -2
  225. package/lib/dynamic-component/shared/dynamic-component.d.ts +88 -88
  226. package/lib/dynamic-component/shared/dynamic-component.interfaces.d.ts +3 -3
  227. package/lib/dynamic-component/shared/dynamic-component.service.d.ts +18 -18
  228. package/lib/dynamic-component/shared/index.d.ts +3 -3
  229. package/lib/entity/entity-selector/entity-selector.component.d.ts +92 -92
  230. package/lib/entity/entity-selector/entity-selector.module.d.ts +13 -13
  231. package/lib/entity/entity-table/entity-table-row.directive.d.ts +69 -69
  232. package/lib/entity/entity-table/entity-table.component.d.ts +327 -327
  233. package/lib/entity/entity-table/entity-table.module.d.ts +29 -29
  234. package/lib/entity/entity-table-paginator/entity-table-paginator.component.d.ts +49 -49
  235. package/lib/entity/entity-table-paginator/entity-table-paginator.interface.d.ts +8 -8
  236. package/lib/entity/entity-table-paginator/entity-table-paginator.module.d.ts +11 -11
  237. package/lib/entity/entity.module.d.ts +10 -10
  238. package/lib/entity/index.d.ts +5 -5
  239. package/lib/entity/shared/entity.enums.d.ts +23 -23
  240. package/lib/entity/shared/entity.interfaces.d.ts +114 -114
  241. package/lib/entity/shared/entity.utils.d.ts +49 -49
  242. package/lib/entity/shared/index.d.ts +9 -9
  243. package/lib/entity/shared/state.d.ts +103 -103
  244. package/lib/entity/shared/store.d.ts +176 -176
  245. package/lib/entity/shared/strategies/filter-custom-function.d.ts +51 -51
  246. package/lib/entity/shared/strategies/filter-selection.d.ts +48 -48
  247. package/lib/entity/shared/strategies/index.d.ts +3 -3
  248. package/lib/entity/shared/strategies/strategy.d.ts +56 -56
  249. package/lib/entity/shared/transaction.d.ts +168 -168
  250. package/lib/entity/shared/view.d.ts +193 -193
  251. package/lib/entity/shared/watcher.d.ts +72 -72
  252. package/lib/flexible/flexible.component.d.ts +41 -41
  253. package/lib/flexible/flexible.module.d.ts +9 -9
  254. package/lib/flexible/flexible.type.d.ts +2 -2
  255. package/lib/flexible/index.d.ts +2 -2
  256. package/lib/form/form/form.component.d.ts +53 -53
  257. package/lib/form/form/form.module.d.ts +12 -12
  258. package/lib/form/form-field/form-field-select.component.d.ts +48 -48
  259. package/lib/form/form-field/form-field-text.component.d.ts +41 -41
  260. package/lib/form/form-field/form-field-textarea.component.d.ts +41 -41
  261. package/lib/form/form-field/form-field.component.d.ts +34 -34
  262. package/lib/form/form-field/form-field.module.d.ts +21 -21
  263. package/lib/form/form-field/index.d.ts +4 -4
  264. package/lib/form/form-group/form-group.component.d.ts +49 -49
  265. package/lib/form/form-group/form-group.module.d.ts +14 -14
  266. package/lib/form/form.module.d.ts +13 -13
  267. package/lib/form/index.d.ts +4 -4
  268. package/lib/form/shared/form-field-component.d.ts +1 -1
  269. package/lib/form/shared/form-field.service.d.ts +19 -19
  270. package/lib/form/shared/form.interfaces.d.ts +57 -57
  271. package/lib/form/shared/form.service.d.ts +15 -15
  272. package/lib/form/shared/form.utils.d.ts +11 -11
  273. package/lib/form/shared/index.d.ts +5 -5
  274. package/lib/home-button/home-button.component.d.ts +9 -9
  275. package/lib/home-button/home-button.module.d.ts +15 -15
  276. package/lib/home-button/index.d.ts +1 -1
  277. package/lib/image/image-error.directive.d.ts +11 -11
  278. package/lib/image/image.module.d.ts +10 -10
  279. package/lib/image/index.d.ts +2 -2
  280. package/lib/image/secure-image.pipe.d.ts +13 -13
  281. package/lib/interactive-tour/index.d.ts +4 -4
  282. package/lib/interactive-tour/interactive-tour.component.d.ts +30 -30
  283. package/lib/interactive-tour/interactive-tour.interface.d.ts +32 -32
  284. package/lib/interactive-tour/interactive-tour.loader.d.ts +18 -18
  285. package/lib/interactive-tour/interactive-tour.module.d.ts +12 -12
  286. package/lib/interactive-tour/interactive-tour.service.d.ts +29 -29
  287. package/lib/json-dialog/index.d.ts +2 -2
  288. package/lib/json-dialog/json-dialog.component.d.ts +13 -13
  289. package/lib/json-dialog/json-dialog.module.d.ts +13 -13
  290. package/lib/json-dialog/json-dialog.service.d.ts +10 -10
  291. package/lib/keyvalue/index.d.ts +1 -1
  292. package/lib/keyvalue/keyvalue.module.d.ts +9 -9
  293. package/lib/keyvalue/keyvalue.pipe.d.ts +7 -7
  294. package/lib/list/index.d.ts +2 -2
  295. package/lib/list/list-item.directive.d.ts +43 -43
  296. package/lib/list/list.component.d.ts +51 -51
  297. package/lib/list/list.module.d.ts +14 -14
  298. package/lib/panel/index.d.ts +1 -1
  299. package/lib/panel/panel.component.d.ts +10 -10
  300. package/lib/panel/panel.module.d.ts +8 -8
  301. package/lib/sidenav/index.d.ts +1 -1
  302. package/lib/sidenav/sidenav-shim.directive.d.ts +20 -20
  303. package/lib/sidenav/sidenav.module.d.ts +9 -9
  304. package/lib/spinner/index.d.ts +2 -2
  305. package/lib/spinner/spinner-activity.directive.d.ts +32 -32
  306. package/lib/spinner/spinner.component.d.ts +12 -12
  307. package/lib/spinner/spinner.module.d.ts +10 -10
  308. package/lib/stop-propagation/index.d.ts +2 -2
  309. package/lib/stop-propagation/stop-drop-propagation.directive.d.ts +6 -6
  310. package/lib/stop-propagation/stop-propagation.directive.d.ts +6 -6
  311. package/lib/stop-propagation/stop-propagation.module.d.ts +10 -10
  312. package/lib/table/index.d.ts +5 -5
  313. package/lib/table/table-action-color.enum.d.ts +5 -5
  314. package/lib/table/table-database.d.ts +10 -10
  315. package/lib/table/table-datasource.d.ts +17 -17
  316. package/lib/table/table-model.interface.d.ts +28 -28
  317. package/lib/table/table.component.d.ts +40 -40
  318. package/lib/table/table.module.d.ts +20 -20
  319. package/lib/tool/index.d.ts +2 -2
  320. package/lib/tool/shared/index.d.ts +5 -5
  321. package/lib/tool/shared/tool-component.d.ts +2 -2
  322. package/lib/tool/shared/tool.interface.d.ts +18 -18
  323. package/lib/tool/shared/tool.service.d.ts +30 -30
  324. package/lib/tool/shared/toolbox.d.ts +95 -95
  325. package/lib/tool/shared/toolbox.enums.d.ts +5 -5
  326. package/lib/tool/tool.module.d.ts +10 -10
  327. package/lib/tool/toolbox/toolbox.animation.d.ts +2 -2
  328. package/lib/tool/toolbox/toolbox.component.d.ts +127 -127
  329. package/lib/tool/toolbox/toolbox.module.d.ts +13 -13
  330. package/lib/widget/index.d.ts +2 -2
  331. package/lib/widget/shared/index.d.ts +3 -3
  332. package/lib/widget/shared/widget.d.ts +4 -4
  333. package/lib/widget/shared/widget.interfaces.d.ts +12 -12
  334. package/lib/widget/shared/widget.service.d.ts +10 -10
  335. package/lib/widget/widget-outlet/widget-outlet.component.d.ts +71 -71
  336. package/lib/widget/widget-outlet/widget-outlet.module.d.ts +12 -12
  337. package/lib/widget/widget.module.d.ts +8 -8
  338. package/lib/workspace/index.d.ts +3 -3
  339. package/lib/workspace/shared/index.d.ts +3 -3
  340. package/lib/workspace/shared/store.d.ts +20 -20
  341. package/lib/workspace/shared/workspace.d.ts +108 -108
  342. package/lib/workspace/shared/workspace.interfaces.d.ts +11 -11
  343. package/lib/workspace/workspace-selector/workspace-selector.component.d.ts +39 -39
  344. package/lib/workspace/workspace-selector/workspace-selector.module.d.ts +12 -12
  345. package/lib/workspace/workspace-widget-outlet/workspace-widget-outlet.component.d.ts +57 -57
  346. package/lib/workspace/workspace-widget-outlet/workspace-widget-outlet.module.d.ts +12 -12
  347. package/lib/workspace/workspace.module.d.ts +9 -9
  348. package/package.json +3 -3
  349. package/public_api.d.ts +70 -70
@@ -1,191 +1,191 @@
1
- import { ReplaySubject } from 'rxjs';
2
- import { getEntityId } from './entity.utils';
3
- /**
4
- * This class is used to track a store's entities state
5
- */
6
- export class EntityStateManager {
7
- constructor(options = {}) {
8
- /**
9
- * State index
10
- */
11
- this.index = new Map();
12
- /**
13
- * Change emitter
14
- */
15
- this.change$ = new ReplaySubject(1);
16
- this.store = options.store ? options.store : undefined;
17
- this.getKey = options.getKey
18
- ? options.getKey
19
- : (this.store ? this.store.getKey : getEntityId);
20
- this.next();
21
- }
22
- /**
23
- * Clear state
24
- */
25
- clear() {
26
- if (this.index.size > 0) {
27
- this.index.clear();
28
- this.next();
29
- }
30
- }
31
- /**
32
- * Get an entity's state
33
- * @param entity Entity
34
- * @returns State
35
- */
36
- get(entity) {
37
- return (this.index.get(this.getKey(entity)) || {});
38
- }
39
- /**
40
- * Set an entity's state
41
- * @param entity Entity
42
- * @param state State
43
- */
44
- set(entity, state) {
45
- this.setMany([entity], state);
46
- }
47
- /**
48
- * Set many entitie's state
49
- * @param entitie Entities
50
- * @param state State
51
- */
52
- setMany(entities, state) {
53
- entities.forEach((entity) => {
54
- this.index.set(this.getKey(entity), Object.assign({}, state));
55
- });
56
- this.next();
57
- }
58
- /**
59
- * Set state of all entities that already have a state. This is not
60
- * the same as setting the state of all the store's entities.
61
- * @param state State
62
- */
63
- setAll(state) {
64
- Array.from(this.index.keys()).forEach((key) => {
65
- this.index.set(key, Object.assign({}, state));
66
- });
67
- this.next();
68
- }
69
- /**
70
- * Update an entity's state
71
- * @param entity Entity
72
- * @param changes State changes
73
- */
74
- update(entity, changes, exclusive = false) {
75
- this.updateMany([entity], changes, exclusive);
76
- }
77
- /**
78
- * Update many entitie's state
79
- * @param entitie Entities
80
- * @param changes State changes
81
- */
82
- updateMany(entities, changes, exclusive = false) {
83
- if (exclusive === true) {
84
- return this.updateManyExclusive(entities, changes);
85
- }
86
- entities.forEach((entity) => {
87
- const state = Object.assign({}, this.get(entity), changes);
88
- this.index.set(this.getKey(entity), state);
89
- });
90
- this.next();
91
- }
92
- /**
93
- * Reversee an entity's state
94
- * @param entity Entity
95
- * @param keys State keys to reverse
96
- */
97
- reverse(entity, keys) {
98
- this.reverseMany([entity], keys);
99
- }
100
- /**
101
- * Reverse many entitie's state
102
- * @param entitie Entities
103
- * @param keys State keys to reverse
104
- */
105
- reverseMany(entities, keys) {
106
- entities.forEach((entity) => {
107
- const currentState = this.get(entity);
108
- const changes = keys.reduce((acc, key) => {
109
- acc[key] = currentState[key] || false;
110
- return acc;
111
- }, {});
112
- const reversedChanges = this.reverseChanges(changes);
113
- const state = Object.assign({}, currentState, reversedChanges);
114
- this.index.set(this.getKey(entity), state);
115
- });
116
- this.next();
117
- }
118
- /**
119
- * Update state of all entities that already have a state. This is not
120
- * the same as updating the state of all the store's entities.
121
- * @param changes State
122
- */
123
- updateAll(changes) {
124
- const allKeys = this.getAllKeys();
125
- Array.from(allKeys).forEach((key) => {
126
- const state = Object.assign({}, this.index.get(key), changes);
127
- this.index.set(key, state);
128
- });
129
- this.next();
130
- }
131
- /**
132
- * When some state changes are flagged as 'exclusive', reverse
133
- * the state of all other entities. Changes are reversable when
134
- * they are boolean.
135
- * @param entitie Entities
136
- * @param changes State changes
137
- */
138
- updateManyExclusive(entities, changes) {
139
- const reverseChanges = this.reverseChanges(changes);
140
- const keys = entities.map((entity) => this.getKey(entity));
141
- const allKeys = new Set(keys.concat(Array.from(this.getAllKeys())));
142
- allKeys.forEach((key) => {
143
- const state = this.index.get(key) || {};
144
- if (keys.indexOf(key) >= 0) {
145
- this.index.set(key, Object.assign({}, state, changes));
146
- }
147
- else {
148
- // Update only if the reverse changes would modify
149
- // a key already present in the current state
150
- const shouldUpdate = Object.keys(reverseChanges).some((changeKey) => {
151
- return state[changeKey] !== undefined &&
152
- state[changeKey] !== reverseChanges[changeKey];
153
- });
154
- if (shouldUpdate === true) {
155
- this.index.set(key, Object.assign({}, state, reverseChanges));
156
- }
157
- }
158
- });
159
- this.next();
160
- }
161
- /**
162
- * Compute a 'reversed' version of some state changes.
163
- * Changes are reversable when they are boolean.
164
- * @param changes State changes
165
- * @returns Reversed state changes
166
- */
167
- reverseChanges(changes) {
168
- return Object.entries(changes).reduce((reverseChanges, bunch) => {
169
- const [changeKey, value] = bunch;
170
- if (typeof value === typeof true) {
171
- reverseChanges[changeKey] = !value;
172
- }
173
- return reverseChanges;
174
- }, {});
175
- }
176
- /**
177
- * Return all the keys in that state and in the store it's bound to, if any.
178
- * @returns Set of keys
179
- */
180
- getAllKeys() {
181
- const storeKeys = this.store ? Array.from(this.store.index.keys()) : [];
182
- return new Set(Array.from(this.index.keys()).concat(storeKeys));
183
- }
184
- /**
185
- * Emit 'change' event
186
- */
187
- next() {
188
- this.change$.next();
189
- }
190
- }
1
+ import { ReplaySubject } from 'rxjs';
2
+ import { getEntityId } from './entity.utils';
3
+ /**
4
+ * This class is used to track a store's entities state
5
+ */
6
+ export class EntityStateManager {
7
+ constructor(options = {}) {
8
+ /**
9
+ * State index
10
+ */
11
+ this.index = new Map();
12
+ /**
13
+ * Change emitter
14
+ */
15
+ this.change$ = new ReplaySubject(1);
16
+ this.store = options.store ? options.store : undefined;
17
+ this.getKey = options.getKey
18
+ ? options.getKey
19
+ : (this.store ? this.store.getKey : getEntityId);
20
+ this.next();
21
+ }
22
+ /**
23
+ * Clear state
24
+ */
25
+ clear() {
26
+ if (this.index.size > 0) {
27
+ this.index.clear();
28
+ this.next();
29
+ }
30
+ }
31
+ /**
32
+ * Get an entity's state
33
+ * @param entity Entity
34
+ * @returns State
35
+ */
36
+ get(entity) {
37
+ return (this.index.get(this.getKey(entity)) || {});
38
+ }
39
+ /**
40
+ * Set an entity's state
41
+ * @param entity Entity
42
+ * @param state State
43
+ */
44
+ set(entity, state) {
45
+ this.setMany([entity], state);
46
+ }
47
+ /**
48
+ * Set many entitie's state
49
+ * @param entitie Entities
50
+ * @param state State
51
+ */
52
+ setMany(entities, state) {
53
+ entities.forEach((entity) => {
54
+ this.index.set(this.getKey(entity), Object.assign({}, state));
55
+ });
56
+ this.next();
57
+ }
58
+ /**
59
+ * Set state of all entities that already have a state. This is not
60
+ * the same as setting the state of all the store's entities.
61
+ * @param state State
62
+ */
63
+ setAll(state) {
64
+ Array.from(this.index.keys()).forEach((key) => {
65
+ this.index.set(key, Object.assign({}, state));
66
+ });
67
+ this.next();
68
+ }
69
+ /**
70
+ * Update an entity's state
71
+ * @param entity Entity
72
+ * @param changes State changes
73
+ */
74
+ update(entity, changes, exclusive = false) {
75
+ this.updateMany([entity], changes, exclusive);
76
+ }
77
+ /**
78
+ * Update many entitie's state
79
+ * @param entitie Entities
80
+ * @param changes State changes
81
+ */
82
+ updateMany(entities, changes, exclusive = false) {
83
+ if (exclusive === true) {
84
+ return this.updateManyExclusive(entities, changes);
85
+ }
86
+ entities.forEach((entity) => {
87
+ const state = Object.assign({}, this.get(entity), changes);
88
+ this.index.set(this.getKey(entity), state);
89
+ });
90
+ this.next();
91
+ }
92
+ /**
93
+ * Reversee an entity's state
94
+ * @param entity Entity
95
+ * @param keys State keys to reverse
96
+ */
97
+ reverse(entity, keys) {
98
+ this.reverseMany([entity], keys);
99
+ }
100
+ /**
101
+ * Reverse many entitie's state
102
+ * @param entitie Entities
103
+ * @param keys State keys to reverse
104
+ */
105
+ reverseMany(entities, keys) {
106
+ entities.forEach((entity) => {
107
+ const currentState = this.get(entity);
108
+ const changes = keys.reduce((acc, key) => {
109
+ acc[key] = currentState[key] || false;
110
+ return acc;
111
+ }, {});
112
+ const reversedChanges = this.reverseChanges(changes);
113
+ const state = Object.assign({}, currentState, reversedChanges);
114
+ this.index.set(this.getKey(entity), state);
115
+ });
116
+ this.next();
117
+ }
118
+ /**
119
+ * Update state of all entities that already have a state. This is not
120
+ * the same as updating the state of all the store's entities.
121
+ * @param changes State
122
+ */
123
+ updateAll(changes) {
124
+ const allKeys = this.getAllKeys();
125
+ Array.from(allKeys).forEach((key) => {
126
+ const state = Object.assign({}, this.index.get(key), changes);
127
+ this.index.set(key, state);
128
+ });
129
+ this.next();
130
+ }
131
+ /**
132
+ * When some state changes are flagged as 'exclusive', reverse
133
+ * the state of all other entities. Changes are reversable when
134
+ * they are boolean.
135
+ * @param entitie Entities
136
+ * @param changes State changes
137
+ */
138
+ updateManyExclusive(entities, changes) {
139
+ const reverseChanges = this.reverseChanges(changes);
140
+ const keys = entities.map((entity) => this.getKey(entity));
141
+ const allKeys = new Set(keys.concat(Array.from(this.getAllKeys())));
142
+ allKeys.forEach((key) => {
143
+ const state = this.index.get(key) || {};
144
+ if (keys.indexOf(key) >= 0) {
145
+ this.index.set(key, Object.assign({}, state, changes));
146
+ }
147
+ else {
148
+ // Update only if the reverse changes would modify
149
+ // a key already present in the current state
150
+ const shouldUpdate = Object.keys(reverseChanges).some((changeKey) => {
151
+ return state[changeKey] !== undefined &&
152
+ state[changeKey] !== reverseChanges[changeKey];
153
+ });
154
+ if (shouldUpdate === true) {
155
+ this.index.set(key, Object.assign({}, state, reverseChanges));
156
+ }
157
+ }
158
+ });
159
+ this.next();
160
+ }
161
+ /**
162
+ * Compute a 'reversed' version of some state changes.
163
+ * Changes are reversable when they are boolean.
164
+ * @param changes State changes
165
+ * @returns Reversed state changes
166
+ */
167
+ reverseChanges(changes) {
168
+ return Object.entries(changes).reduce((reverseChanges, bunch) => {
169
+ const [changeKey, value] = bunch;
170
+ if (typeof value === typeof true) {
171
+ reverseChanges[changeKey] = !value;
172
+ }
173
+ return reverseChanges;
174
+ }, {});
175
+ }
176
+ /**
177
+ * Return all the keys in that state and in the store it's bound to, if any.
178
+ * @returns Set of keys
179
+ */
180
+ getAllKeys() {
181
+ const storeKeys = this.store ? Array.from(this.store.index.keys()) : [];
182
+ return new Set(Array.from(this.index.keys()).concat(storeKeys));
183
+ }
184
+ /**
185
+ * Emit 'change' event
186
+ */
187
+ next() {
188
+ this.change$.next();
189
+ }
190
+ }
191
191
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL2xpYi9lbnRpdHkvc2hhcmVkL3N0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHckMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzdDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGtCQUFrQjtJQW1CN0IsWUFBWSxVQUFxQyxFQUFFO1FBakJuRDs7V0FFRztRQUNNLFVBQUssR0FBRyxJQUFJLEdBQUcsRUFBZ0IsQ0FBQztRQUV6Qzs7V0FFRztRQUNNLFlBQU8sR0FBRyxJQUFJLGFBQWEsQ0FBTyxDQUFDLENBQUMsQ0FBQztRQVU1QyxJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUN2RCxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNO1lBQzFCLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTTtZQUNoQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSztRQUNILElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ2I7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEdBQUcsQ0FBQyxNQUFT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QUN4QyxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsY0FBMEIsRUFBRSxLQUFvQixFQUFFLEVBQUU7WUFDekYsTUFBTSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDakMsSUFBSSxPQUFPLEtBQUssS0FBSyxPQUFPLElBQUksRUFBRTtnQkFDL0IsY0FBeUIsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQzthQUNoRDtZQUNELE9BQU8sY0FBYyxDQUFDO1FBQ3hCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNULENBQUM7SUFFRDs7O09BR0c7SUFDSyxVQUFVO1FBQ2hCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3hFLE9BQU8sSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVEOztPQUVHO0lBQ0ssSUFBSTtRQUNWLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdEIsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBFbnRpdHlLZXksIEVudGl0eVN0YXRlLCBFbnRpdHlTdGF0ZU1hbmFnZXJPcHRpb25zIH0gZnJvbSAnLi9lbnRpdHkuaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBnZXRFbnRpdHlJZCB9IGZyb20gJy4vZW50aXR5LnV0aWxzJztcbmltcG9ydCB7IEVudGl0eVN0b3JlIH0gZnJvbSAnLi9zdG9yZSc7XG5cbi8qKlxuICogVGhpcyBjbGFzcyBpcyB1c2VkIHRvIHRyYWNrIGEgc3RvcmUncyBlbnRpdGllcyBzdGF0ZVxuICovXG5leHBvcnQgY2xhc3MgRW50aXR5U3RhdGVNYW5hZ2VyPEUgZXh0ZW5kcyBvYmplY3QsIFMgZXh0ZW5kcyBFbnRpdHlTdGF0ZSA9IEVudGl0eVN0YXRlPiB7XG5cbiAgLyoqXG4gICAqIFN0YXRlIGluZGV4XG4gICAqL1xuICByZWFkb25seSBpbmRleCA9IG5ldyBNYXA8RW50aXR5S2V5LCBTPigpO1xuXG4gIC8qKlxuICAgKiBDaGFuZ2UgZW1pdHRlclxuICAgKi9cbiAgcmVhZG9ubHkgY2hhbmdlJCA9IG5ldyBSZXBsYXlTdWJqZWN0PHZvaWQ+KDEpO1xuXG4gIC8qKlxuICAgKiBNZXRob2QgdG8gZ2V0IGFuIGVudGl0eSdzIGlkXG4gICAqL1xuICByZWFkb25seSBnZXRLZXk6IChFKSA9PiBFbnRpdHlLZXk7XG5cbiAgcHJpdmF0ZSBzdG9yZTogRW50aXR5U3RvcmU8b2JqZWN0PiB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBFbnRpdHlTdGF0ZU1hbmFnZXJPcHRpb25zID0ge30pIHtcbiAgICB0aGlzLnN0b3JlID0gb3B0aW9ucy5zdG9yZSA/IG9wdGlvbnMuc3RvcmUgOiB1bmRlZmluZWQ7XG4gICAgdGhpcy5nZXRLZXkgPSBvcHRpb25zLmdldEtleVxuICAgICAgPyBvcHRpb25zLmdldEtleVxuICAgICAgOiAodGhpcy5zdG9yZSA/IHRoaXMuc3RvcmUuZ2V0S2V5IDogZ2V0RW50aXR5SWQpO1xuICAgIHRoaXMubmV4dCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIHN0YXRlXG4gICAqL1xuICBjbGVhcigpIHtcbiAgICBpZiAodGhpcy5pbmRleC5zaXplID4gMCkge1xuICAgICAgdGhpcy5pbmRleC5jbGVhcigpO1xuICAgICAgdGhpcy5uZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbiBlbnRpdHkncyBzdGF0ZVxuICAgKiBAcGFyYW0gZW50aXR5IEVudGl0eVxuICAgKiBAcmV0dXJucyBTdGF0ZVxuICAgKi9cbiAgZ2V0KGVudGl0eTogRSk6IFMge1xuICAgIHJldHVybiAodGhpcy5pbmRleC5nZXQodGhpcy5nZXRLZXkoZW50aXR5KSkgfHwge30pIGFzIFM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGFuIGVudGl0eSdzIHN0YXRlXG4gICAqIEBwYXJhbSBlbnRpdHkgRW50aXR5XG4gICAqIEBwYXJhbSBzdGF0ZSBTdGF0ZVxuICAgKi9cbiAgc2V0KGVudGl0eTogRSwgc3RhdGU6IFMpIHtcbiAgICB0aGlzLnNldE1hbnkoW2VudGl0eV0sIHN0YXRlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgbWFueSBlbnRpdGllJ3Mgc3RhdGVcbiAgICogQHBhcmFtIGVudGl0aWUgRW50aXRpZXNcbiAgICogQHBhcmFtIHN0YXRlIFN0YXRlXG4gICAqL1xuICBzZXRNYW55KGVudGl0aWVzOiBFW10sIHN0YXRlOiBTKSB7XG4gICAgZW50aXRpZXMuZm9yRWFjaCgoZW50aXR5OiBFKSA9PiB7XG4gICAgICB0aGlzLmluZGV4LnNldCh0aGlzLmdldEtleShlbnRpdHkpLCBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZSkpO1xuICAgIH0pO1xuICAgIHRoaXMubmV4dCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBzdGF0ZSBvZiBhbGwgZW50aXRpZXMgdGhhdCBhbHJlYWR5IGhhdmUgYSBzdGF0ZS4gVGhpcyBpcyBub3RcbiAgICogdGhlIHNhbWUgYXMgc2V0dGluZyB0aGUgc3RhdGUgb2YgYWxsIHRoZSBzdG9yZSdzIGVudGl0aWVzLlxuICAgKiBAcGFyYW0gc3RhdGUgU3RhdGVcbiAgICovXG4gIHNldEFsbChzdGF0ZTogUykge1xuICAgIEFycmF5LmZyb20odGhpcy5pbmRleC5rZXlzKCkpLmZvckVhY2goKGtleTogRW50aXR5S2V5KSA9PiB7XG4gICAgICB0aGlzLmluZGV4LnNldChrZXksIE9iamVjdC5hc3NpZ24oe30sIHN0YXRlKSk7XG4gICAgfSk7XG4gICAgdGhpcy5uZXh0KCk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGFuIGVudGl0eSdzIHN0YXRlXG4gICAqIEBwYXJhbSBlbnRpdHkgRW50aXR5XG4gICAqIEBwYXJhbSBjaGFuZ2VzIFN0YXRlIGNoYW5nZXNcbiAgICovXG4gIHVwZGF0ZShlbnRpdHk6IEUsIGNoYW5nZXM6IFBhcnRpYWw8Uz4sIGV4Y2x1c2l2ZSA9IGZhbHNlKSB7XG4gICAgdGhpcy51cGRhdGVNYW55KFtlbnRpdHldLCBjaGFuZ2VzLCBleGNsdXNpdmUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBtYW55IGVudGl0aWUncyBzdGF0ZVxuICAgKiBAcGFyYW0gZW50aXRpZSBFbnRpdGllc1xuICAgKiBAcGFyYW0gY2hhbmdlcyBTdGF0ZSBjaGFuZ2VzXG4gICAqL1xuICB1cGRhdGVNYW55KGVudGl0aWVzOiBFW10sIGNoYW5nZXM6IFBhcnRpYWw8Uz4sIGV4Y2x1c2l2ZSA9IGZhbHNlKSB7XG4gICAgaWYgKGV4Y2x1c2l2ZSA9PT0gdHJ1ZSkge1xuICAgICAgcmV0dXJuIHRoaXMudXBkYXRlTWFueUV4Y2x1c2l2ZShlbnRpdGllcywgY2hhbmdlcyk7XG4gICAgfVxuXG4gICAgZW50aXRpZXMuZm9yRWFjaCgoZW50aXR5OiBFKSA9PiB7XG4gICAgICBjb25zdCBzdGF0ZSA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuZ2V0KGVudGl0eSksIGNoYW5nZXMpO1xuICAgICAgdGhpcy5pbmRleC5zZXQodGhpcy5nZXRLZXkoZW50aXR5KSwgc3RhdGUpO1xuICAgIH0pO1xuICAgIHRoaXMubmV4dCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldmVyc2VlIGFuIGVudGl0eSdzIHN0YXRlXG4gICAqIEBwYXJhbSBlbnRpdHkgRW50aXR5XG4gICAqIEBwYXJhbSBrZXlzIFN0YXRlIGtleXMgdG8gcmV2ZXJzZVxuICAgKi9cbiAgcmV2ZXJzZShlbnRpdHk6IEUsIGtleXM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5yZXZlcnNlTWFueShbZW50aXR5XSwga2V5cyk7XG4gIH1cblxuICAvKipcbiAgICogUmV2ZXJzZSBtYW55IGVudGl0aWUncyBzdGF0ZVxuICAgKiBAcGFyYW0gZW50aXRpZSBFbnRpdGllc1xuICAgKiBAcGFyYW0ga2V5cyBTdGF0ZSBrZXlzIHRvIHJldmVyc2VcbiAgICovXG4gIHJldmVyc2VNYW55KGVudGl0aWVzOiBFW10sIGtleXM6IHN0cmluZ1tdKSB7XG4gICAgZW50aXRpZXMuZm9yRWFjaCgoZW50aXR5OiBFKSA9PiB7XG4gICAgICBjb25zdCBjdXJyZW50U3RhdGUgPSB0aGlzLmdldChlbnRpdHkpO1xuICAgICAgY29uc3QgY2hhbmdlcyA9IGtleXMucmVkdWNlKChhY2M6IHtba2V5OiBzdHJpbmddOiBib29sZWFufSwga2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgYWNjW2tleV0gPSBjdXJyZW50U3RhdGVba2V5XSB8fCBmYWxzZTtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sIHt9KSBhcyBQYXJ0aWFsPFM+O1xuICAgICAgY29uc3QgcmV2ZXJzZWRDaGFuZ2VzID0gdGhpcy5yZXZlcnNlQ2hhbmdlcyhjaGFuZ2VzKTtcbiAgICAgIGNvbnN0IHN0YXRlID0gT2JqZWN0LmFzc2lnbih7fSwgY3VycmVudFN0YXRlLCByZXZlcnNlZENoYW5nZXMpO1xuICAgICAgdGhpcy5pbmRleC5zZXQodGhpcy5nZXRLZXkoZW50aXR5KSwgc3RhdGUpO1xuICAgIH0pO1xuICAgIHRoaXMubmV4dCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBzdGF0ZSBvZiBhbGwgZW50aXRpZXMgdGhhdCBhbHJlYWR5IGhhdmUgYSBzdGF0ZS4gVGhpcyBpcyBub3RcbiAgICogdGhlIHNhbWUgYXMgdXBkYXRpbmcgdGhlIHN0YXRlIG9mIGFsbCB0aGUgc3RvcmUncyBlbnRpdGllcy5cbiAgICogQHBhcmFtIGNoYW5nZXMgU3RhdGVcbiAgICovXG4gIHVwZGF0ZUFsbChjaGFuZ2VzOiBQYXJ0aWFsPFM+KSB7XG4gICAgY29uc3QgYWxsS2V5cyA9IHRoaXMuZ2V0QWxsS2V5cygpO1xuICAgIEFycmF5LmZyb20oYWxsS2V5cykuZm9yRWFjaCgoa2V5OiBFbnRpdHlLZXkpID0+IHtcbiAgICAgIGNvbnN0IHN0YXRlID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5pbmRleC5nZXQoa2V5KSwgY2hhbmdlcyk7XG4gICAgICB0aGlzLmluZGV4LnNldChrZXksIHN0YXRlKTtcbiAgICB9KTtcbiAgICB0aGlzLm5leHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGVuIHNvbWUgc3RhdGUgY2hhbmdlcyBhcmUgZmxhZ2dlZCBhcyAnZXhjbHVzaXZlJywgcmV2ZXJzZVxuICAgKiB0aGUgc3RhdGUgb2YgYWxsIG90aGVyIGVudGl0aWVzLiBDaGFuZ2VzIGFyZSByZXZlcnNhYmxlIHdoZW5cbiAgICogdGhleSBhcmUgYm9vbGVhbi5cbiAgICogQHBhcmFtIGVudGl0aWUgRW50aXRpZXNcbiAgICogQHBhcmFtIGNoYW5nZXMgU3RhdGUgY2hhbmdlc1xuICAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVNYW55RXhjbHVzaXZlKGVudGl0aWVzOiBFW10sIGNoYW5nZXM6IFBhcnRpYWw8Uz4pIHtcbiAgICBjb25zdCByZXZlcnNlQ2hhbmdlcyA9IHRoaXMucmV2ZXJzZUNoYW5nZXMoY2hhbmdlcyk7XG5cbiAgICBjb25zdCBrZXlzID0gZW50aXRpZXMubWFwKChlbnRpdHk6IEUpID0+IHRoaXMuZ2V0S2V5KGVudGl0eSkpO1xuICAgIGNvbnN0IGFsbEtleXMgPSBuZXcgU2V0KGtleXMuY29uY2F0KEFycmF5LmZyb20odGhpcy5nZXRBbGxLZXlzKCkpKSk7XG4gICAgYWxsS2V5cy5mb3JFYWNoKChrZXk6IEVudGl0eUtleSkgPT4ge1xuICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLmluZGV4LmdldChrZXkpIHx8IHt9IGFzIFM7XG5cbiAgICAgIGlmIChrZXlzLmluZGV4T2Yoa2V5KSA+PSAwKSB7XG4gICAgICAgIHRoaXMuaW5kZXguc2V0KGtleSwgT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUsIGNoYW5nZXMpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFVwZGF0ZSBvbmx5IGlmIHRoZSByZXZlcnNlIGNoYW5nZXMgd291bGQgbW9kaWZ5XG4gICAgICAgIC8vIGEga2V5IGFscmVhZHkgcHJlc2VudCBpbiB0aGUgY3VycmVudCBzdGF0ZVxuICAgICAgICBjb25zdCBzaG91bGRVcGRhdGUgPSBPYmplY3Qua2V5cyhyZXZlcnNlQ2hhbmdlcykuc29tZSgoY2hhbmdlS2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICByZXR1cm4gc3RhdGVbY2hhbmdlS2V5XSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICBzdGF0ZVtjaGFuZ2VLZXldICE9PSByZXZlcnNlQ2hhbmdlc1tjaGFuZ2VLZXldO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHNob3VsZFVwZGF0ZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgIHRoaXMuaW5kZXguc2V0KGtleSwgT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUsIHJldmVyc2VDaGFuZ2VzKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMubmV4dCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXB1dGUgYSAncmV2ZXJzZWQnIHZlcnNpb24gb2Ygc29tZSBzdGF0ZSBjaGFuZ2VzLlxuICAgKiBDaGFuZ2VzIGFyZSByZXZlcnNhYmxlIHdoZW4gdGhleSBhcmUgYm9vbGVhbi5cbiAgICogQHBhcmFtIGNoYW5nZXMgU3RhdGUgY2hhbmdlc1xuICAgKiBAcmV0dXJucyBSZXZlcnNlZCBzdGF0ZSBjaGFuZ2VzXG4gICAqL1xuICBwcml2YXRlIHJldmVyc2VDaGFuZ2VzKGNoYW5nZXM6IFBhcnRpYWw8Uz4pOiBQYXJ0aWFsPFM+IHtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoY2hhbmdlcykucmVkdWNlKChyZXZlcnNlQ2hhbmdlczogUGFydGlhbDxTPiwgYnVuY2g6IFtzdHJpbmcsIGFueV0pID0+IHtcbiAgICAgIGNvbnN0IFtjaGFuZ2VLZXksIHZhbHVlXSA9IGJ1bmNoO1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gdHlwZW9mIHRydWUpIHtcbiAgICAgICAgKHJldmVyc2VDaGFuZ2VzIGFzIG9iamVjdClbY2hhbmdlS2V5XSA9ICF2YWx1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXZlcnNlQ2hhbmdlcztcbiAgICB9LCB7fSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGFsbCB0aGUga2V5cyBpbiB0aGF0IHN0YXRlIGFuZCBpbiB0aGUgc3RvcmUgaXQncyBib3VuZCB0bywgaWYgYW55LlxuICAgKiBAcmV0dXJucyBTZXQgb2Yga2V5c1xuICAgKi9cbiAgcHJpdmF0ZSBnZXRBbGxLZXlzKCk6IFNldDxFbnRpdHlLZXk+IHtcbiAgICBjb25zdCBzdG9yZUtleXMgPSB0aGlzLnN0b3JlID8gQXJyYXkuZnJvbSh0aGlzLnN0b3JlLmluZGV4LmtleXMoKSkgOiBbXTtcbiAgICByZXR1cm4gbmV3IFNldChBcnJheS5mcm9tKHRoaXMuaW5kZXgua2V5cygpKS5jb25jYXQoc3RvcmVLZXlzKSk7XG4gIH1cblxuICAvKipcbiAgICogRW1pdCAnY2hhbmdlJyBldmVudFxuICAgKi9cbiAgcHJpdmF0ZSBuZXh0KCkge1xuICAgIHRoaXMuY2hhbmdlJC5uZXh0KCk7XG4gIH1cblxufVxuIl19