@mediusinc/mng-commons 0.8.0-rc.1 → 0.8.0

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 (281) hide show
  1. package/assets/i18n/en.json +6 -1
  2. package/assets/i18n/sl.json +6 -1
  3. package/esm2020/lib/api/models/builders/query-param.builder.mjs +58 -58
  4. package/esm2020/lib/api/models/filter-match-type.model.mjs +24 -24
  5. package/esm2020/lib/api/models/filter-param.model.mjs +32 -32
  6. package/esm2020/lib/api/models/index.mjs +8 -8
  7. package/esm2020/lib/api/models/mappers.mjs +12 -12
  8. package/esm2020/lib/api/models/query-mode.model.mjs +17 -17
  9. package/esm2020/lib/api/models/query-param.model.mjs +67 -67
  10. package/esm2020/lib/api/models/query-result.model.mjs +17 -17
  11. package/esm2020/lib/api/models/serialization.model.mjs +1 -1
  12. package/esm2020/lib/api/services/api.abstract.service.mjs +55 -55
  13. package/esm2020/lib/api/services/crud-api.abstract.service.mjs +66 -66
  14. package/esm2020/lib/api/services/get-all-api.abstract.service.mjs +23 -23
  15. package/esm2020/lib/api/services/index.mjs +3 -3
  16. package/esm2020/lib/api/utils/index.mjs +2 -2
  17. package/esm2020/lib/api/utils/medius-rest.util.mjs +151 -151
  18. package/esm2020/lib/api/utils/object-serializer.util.mjs +243 -243
  19. package/esm2020/lib/components/action/action.component.mjs +177 -174
  20. package/esm2020/lib/components/action/editor/action-editor.component.mjs +247 -230
  21. package/esm2020/lib/components/action/index.mjs +3 -3
  22. package/esm2020/lib/components/action/models/action-confirmation-service.model.mjs +1 -1
  23. package/esm2020/lib/components/action/models/action-execution.model.mjs +235 -231
  24. package/esm2020/lib/components/action/models/index.mjs +2 -2
  25. package/esm2020/lib/components/action/route/action-route.component.mjs +124 -124
  26. package/esm2020/lib/components/form/autocomplete/autocomplete.component.mjs +268 -268
  27. package/esm2020/lib/components/form/dropdown/dropdown.component.mjs +160 -160
  28. package/esm2020/lib/components/form/editor/form-editor.component.mjs +189 -189
  29. package/esm2020/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +18 -18
  30. package/esm2020/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +42 -42
  31. package/esm2020/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +24 -24
  32. package/esm2020/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.mjs +96 -79
  33. package/esm2020/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.mjs +16 -16
  34. package/esm2020/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +178 -178
  35. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +155 -155
  36. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +126 -126
  37. package/esm2020/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +16 -16
  38. package/esm2020/lib/components/form/formly/fields/index.mjs +9 -9
  39. package/esm2020/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +14 -14
  40. package/esm2020/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.mjs +14 -14
  41. package/esm2020/lib/components/form/formly/wrappers/index.mjs +2 -2
  42. package/esm2020/lib/components/form/index.mjs +3 -3
  43. package/esm2020/lib/components/form/models/form-editor.event.mjs +33 -33
  44. package/esm2020/lib/components/form/models/index.mjs +1 -1
  45. package/esm2020/lib/components/layout/breadcrumb.component.mjs +16 -16
  46. package/esm2020/lib/components/layout/footer.component.mjs +16 -16
  47. package/esm2020/lib/components/layout/index.mjs +6 -6
  48. package/esm2020/lib/components/layout/main-layout.component.mjs +51 -51
  49. package/esm2020/lib/components/layout/menu-item.component.mjs +216 -216
  50. package/esm2020/lib/components/layout/menu.component.mjs +19 -19
  51. package/esm2020/lib/components/layout/services/index.mjs +1 -1
  52. package/esm2020/lib/components/layout/services/main-layout.component.service.mjs +192 -192
  53. package/esm2020/lib/components/layout/topbar.component.mjs +57 -57
  54. package/esm2020/lib/components/tableview/index.mjs +6 -6
  55. package/esm2020/lib/components/tableview/models/index.mjs +1 -1
  56. package/esm2020/lib/components/tableview/models/table.event.mjs +15 -15
  57. package/esm2020/lib/components/tableview/route/tableview-route.abstract.component.mjs +57 -36
  58. package/esm2020/lib/components/tableview/route/tableview-route.component.mjs +53 -53
  59. package/esm2020/lib/components/tableview/table/column-filter/column-filter.component.mjs +101 -101
  60. package/esm2020/lib/components/tableview/table/column-value/column-value.component.mjs +71 -42
  61. package/esm2020/lib/components/tableview/table/table.component.mjs +429 -429
  62. package/esm2020/lib/components/tableview/tableview.component.mjs +92 -89
  63. package/esm2020/lib/config/formly.config.mjs +181 -172
  64. package/esm2020/lib/config/index.mjs +1 -1
  65. package/esm2020/lib/config/models/index.mjs +1 -1
  66. package/esm2020/lib/config/models/mng-config.model.mjs +1 -1
  67. package/esm2020/lib/data-providers/base.data-provider.mjs +16 -16
  68. package/esm2020/lib/data-providers/editor.data-provider.mjs +36 -36
  69. package/esm2020/lib/data-providers/index.mjs +5 -5
  70. package/esm2020/lib/data-providers/lookup.data-provider.mjs +15 -15
  71. package/esm2020/lib/data-providers/table.data-provider.mjs +16 -16
  72. package/esm2020/lib/data-providers/tableview.data-provider.mjs +16 -16
  73. package/esm2020/lib/descriptors/action.descriptor.mjs +622 -622
  74. package/esm2020/lib/descriptors/column.descriptor.mjs +272 -228
  75. package/esm2020/lib/descriptors/editor.descriptor.mjs +154 -154
  76. package/esm2020/lib/descriptors/field-validation.descriptor.mjs +20 -20
  77. package/esm2020/lib/descriptors/field.descriptor.interface.mjs +1 -1
  78. package/esm2020/lib/descriptors/field.descriptor.mjs +864 -823
  79. package/esm2020/lib/descriptors/filter.descriptor.mjs +294 -294
  80. package/esm2020/lib/descriptors/index.mjs +11 -11
  81. package/esm2020/lib/descriptors/lookup.descriptor.mjs +1 -1
  82. package/esm2020/lib/descriptors/model.descriptor.mjs +33 -33
  83. package/esm2020/lib/descriptors/table.descriptor.mjs +213 -213
  84. package/esm2020/lib/descriptors/tableview.descriptor.mjs +134 -134
  85. package/esm2020/lib/directives/component.directive.mjs +43 -43
  86. package/esm2020/lib/directives/index.mjs +2 -2
  87. package/esm2020/lib/directives/template.directive.mjs +27 -27
  88. package/esm2020/lib/mng-commons.module.mjs +426 -426
  89. package/esm2020/lib/models/column-value.model.mjs +1 -1
  90. package/esm2020/lib/models/enum.model.mjs +1 -1
  91. package/esm2020/lib/models/error.model.mjs +1 -1
  92. package/esm2020/lib/models/index.mjs +6 -6
  93. package/esm2020/lib/models/menu.model.mjs +1 -1
  94. package/esm2020/lib/models/user.model.mjs +1 -1
  95. package/esm2020/lib/models/view-container.model.mjs +1 -1
  96. package/esm2020/lib/pipes/boolean.pipe.mjs +26 -26
  97. package/esm2020/lib/pipes/enum.pipe.mjs +24 -24
  98. package/esm2020/lib/pipes/i18n-property.pipe.mjs +17 -17
  99. package/esm2020/lib/pipes/index.mjs +5 -5
  100. package/esm2020/lib/pipes/json-path.pipe.mjs +79 -79
  101. package/esm2020/lib/pipes/link-formatter.pipe.mjs +38 -38
  102. package/esm2020/lib/router/index.mjs +1 -1
  103. package/esm2020/lib/router/models/index.mjs +1 -1
  104. package/esm2020/lib/router/models/router.model.mjs +1 -1
  105. package/esm2020/lib/router/route-builder.mjs +431 -431
  106. package/esm2020/lib/services/action-executor.service.mjs +535 -535
  107. package/esm2020/lib/services/commons.service.mjs +343 -343
  108. package/esm2020/lib/services/configuration.service.mjs +110 -110
  109. package/esm2020/lib/services/error-mapper.service.mjs +13 -13
  110. package/esm2020/lib/services/index.mjs +6 -6
  111. package/esm2020/lib/services/internal/commons-init.provider.mjs +3 -3
  112. package/esm2020/lib/services/internal/commons-init.service.mjs +43 -43
  113. package/esm2020/lib/services/internal/index.mjs +2 -2
  114. package/esm2020/lib/services/navigation.service.mjs +47 -47
  115. package/esm2020/lib/services/providers/config-service.provider.mjs +29 -29
  116. package/esm2020/lib/services/providers/formly-config.provider.mjs +30 -30
  117. package/esm2020/lib/services/providers/index.mjs +2 -2
  118. package/esm2020/lib/services/tokens/browser-storage.token.mjs +5 -5
  119. package/esm2020/lib/services/tokens/commons-init.token.mjs +2 -2
  120. package/esm2020/lib/services/tokens/default-setting.token.mjs +2 -2
  121. package/esm2020/lib/services/tokens/index.mjs +4 -4
  122. package/esm2020/lib/services/tokens/module-config.token.mjs +2 -2
  123. package/esm2020/lib/services/view-container.component.service.mjs +34 -34
  124. package/esm2020/lib/types/index.mjs +2 -2
  125. package/esm2020/lib/types/type.decorator.mjs +12 -12
  126. package/esm2020/lib/types/type.model.mjs +1 -1
  127. package/esm2020/lib/utils/action-data-provider.util.mjs +145 -116
  128. package/esm2020/lib/utils/editor-formly.util.mjs +210 -205
  129. package/esm2020/lib/utils/enum.util.mjs +81 -81
  130. package/esm2020/lib/utils/i18n.util.mjs +232 -232
  131. package/esm2020/lib/utils/index.mjs +7 -7
  132. package/esm2020/lib/utils/model.util.mjs +59 -59
  133. package/esm2020/lib/utils/notification.util.mjs +45 -45
  134. package/esm2020/lib/utils/route.util.mjs +23 -23
  135. package/esm2020/lib/utils/styles.util.mjs +40 -40
  136. package/esm2020/lib/utils/type.util.mjs +76 -76
  137. package/esm2020/mediusinc-mng-commons.mjs +4 -4
  138. package/esm2020/public-api.mjs +39 -39
  139. package/fesm2015/mediusinc-mng-commons.mjs +9920 -9700
  140. package/fesm2015/mediusinc-mng-commons.mjs.map +1 -1
  141. package/fesm2020/mediusinc-mng-commons.mjs +9786 -9572
  142. package/fesm2020/mediusinc-mng-commons.mjs.map +1 -1
  143. package/lib/api/models/builders/query-param.builder.d.ts +13 -13
  144. package/lib/api/models/filter-match-type.model.d.ts +23 -23
  145. package/lib/api/models/filter-param.model.d.ts +23 -23
  146. package/lib/api/models/index.d.ts +8 -8
  147. package/lib/api/models/mappers.d.ts +6 -6
  148. package/lib/api/models/query-mode.model.d.ts +16 -16
  149. package/lib/api/models/query-param.model.d.ts +31 -31
  150. package/lib/api/models/query-result.model.d.ts +23 -23
  151. package/lib/api/models/serialization.model.d.ts +8 -8
  152. package/lib/api/services/api.abstract.service.d.ts +24 -24
  153. package/lib/api/services/crud-api.abstract.service.d.ts +22 -22
  154. package/lib/api/services/get-all-api.abstract.service.d.ts +14 -11
  155. package/lib/api/services/index.d.ts +3 -3
  156. package/lib/api/utils/index.d.ts +2 -2
  157. package/lib/api/utils/medius-rest.util.d.ts +14 -14
  158. package/lib/api/utils/object-serializer.util.d.ts +33 -33
  159. package/lib/components/action/action.component.d.ts +68 -66
  160. package/lib/components/action/editor/action-editor.component.d.ts +64 -62
  161. package/lib/components/action/index.d.ts +3 -3
  162. package/lib/components/action/models/action-confirmation-service.model.d.ts +6 -6
  163. package/lib/components/action/models/action-execution.model.d.ts +129 -126
  164. package/lib/components/action/models/index.d.ts +2 -2
  165. package/lib/components/action/route/action-route.component.d.ts +31 -31
  166. package/lib/components/form/autocomplete/autocomplete.component.d.ts +53 -53
  167. package/lib/components/form/dropdown/dropdown.component.d.ts +44 -44
  168. package/lib/components/form/editor/form-editor.component.d.ts +45 -45
  169. package/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.d.ts +12 -12
  170. package/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.d.ts +14 -14
  171. package/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.d.ts +12 -12
  172. package/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.d.ts +21 -19
  173. package/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.d.ts +6 -6
  174. package/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.d.ts +44 -44
  175. package/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.d.ts +22 -22
  176. package/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.d.ts +37 -37
  177. package/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.d.ts +6 -6
  178. package/lib/components/form/formly/fields/index.d.ts +9 -9
  179. package/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.d.ts +6 -6
  180. package/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.d.ts +6 -6
  181. package/lib/components/form/formly/wrappers/index.d.ts +2 -2
  182. package/lib/components/form/index.d.ts +3 -3
  183. package/lib/components/form/models/form-editor.event.d.ts +37 -37
  184. package/lib/components/form/models/index.d.ts +1 -1
  185. package/lib/components/layout/breadcrumb.component.d.ts +8 -8
  186. package/lib/components/layout/footer.component.d.ts +9 -9
  187. package/lib/components/layout/index.d.ts +6 -6
  188. package/lib/components/layout/main-layout.component.d.ts +20 -20
  189. package/lib/components/layout/menu-item.component.d.ts +37 -37
  190. package/lib/components/layout/menu.component.d.ts +10 -10
  191. package/lib/components/layout/services/index.d.ts +1 -1
  192. package/lib/components/layout/services/main-layout.component.service.d.ts +65 -65
  193. package/lib/components/layout/topbar.component.d.ts +24 -24
  194. package/lib/components/tableview/index.d.ts +6 -6
  195. package/lib/components/tableview/models/index.d.ts +1 -1
  196. package/lib/components/tableview/models/table.event.d.ts +17 -17
  197. package/lib/components/tableview/route/tableview-route.abstract.component.d.ts +20 -19
  198. package/lib/components/tableview/route/tableview-route.component.d.ts +18 -18
  199. package/lib/components/tableview/table/column-filter/column-filter.component.d.ts +31 -31
  200. package/lib/components/tableview/table/column-value/column-value.component.d.ts +28 -17
  201. package/lib/components/tableview/table/table.component.d.ts +104 -104
  202. package/lib/components/tableview/tableview.component.d.ts +41 -37
  203. package/lib/config/formly.config.d.ts +15 -15
  204. package/lib/config/index.d.ts +1 -1
  205. package/lib/config/models/index.d.ts +1 -1
  206. package/lib/config/models/mng-config.model.d.ts +34 -34
  207. package/lib/data-providers/base.data-provider.d.ts +14 -14
  208. package/lib/data-providers/editor.data-provider.d.ts +25 -25
  209. package/lib/data-providers/index.d.ts +5 -5
  210. package/lib/data-providers/lookup.data-provider.d.ts +14 -14
  211. package/lib/data-providers/table.data-provider.d.ts +14 -14
  212. package/lib/data-providers/tableview.data-provider.d.ts +15 -15
  213. package/lib/descriptors/action.descriptor.d.ts +277 -277
  214. package/lib/descriptors/column.descriptor.d.ts +91 -76
  215. package/lib/descriptors/editor.descriptor.d.ts +44 -44
  216. package/lib/descriptors/field-validation.descriptor.d.ts +18 -18
  217. package/lib/descriptors/field.descriptor.d.ts +342 -326
  218. package/lib/descriptors/field.descriptor.interface.d.ts +9 -9
  219. package/lib/descriptors/filter.descriptor.d.ts +127 -127
  220. package/lib/descriptors/index.d.ts +11 -11
  221. package/lib/descriptors/lookup.descriptor.d.ts +17 -17
  222. package/lib/descriptors/model.descriptor.d.ts +15 -15
  223. package/lib/descriptors/table.descriptor.d.ts +80 -80
  224. package/lib/descriptors/tableview.descriptor.d.ts +42 -42
  225. package/lib/directives/component.directive.d.ts +16 -16
  226. package/lib/directives/index.d.ts +2 -2
  227. package/lib/directives/template.directive.d.ts +13 -13
  228. package/lib/mng-commons.module.d.ts +86 -86
  229. package/lib/models/column-value.model.d.ts +4 -4
  230. package/lib/models/enum.model.d.ts +6 -6
  231. package/lib/models/error.model.d.ts +14 -14
  232. package/lib/models/index.d.ts +6 -6
  233. package/lib/models/menu.model.d.ts +25 -25
  234. package/lib/models/user.model.d.ts +8 -8
  235. package/lib/models/view-container.model.d.ts +6 -6
  236. package/lib/pipes/boolean.pipe.d.ts +7 -7
  237. package/lib/pipes/enum.pipe.d.ts +8 -8
  238. package/lib/pipes/i18n-property.pipe.d.ts +8 -8
  239. package/lib/pipes/index.d.ts +5 -5
  240. package/lib/pipes/json-path.pipe.d.ts +13 -13
  241. package/lib/pipes/link-formatter.pipe.d.ts +11 -11
  242. package/lib/router/index.d.ts +1 -1
  243. package/lib/router/models/index.d.ts +1 -1
  244. package/lib/router/models/router.model.d.ts +22 -22
  245. package/lib/router/route-builder.d.ts +86 -86
  246. package/lib/services/action-executor.service.d.ts +149 -149
  247. package/lib/services/commons.service.d.ts +72 -72
  248. package/lib/services/configuration.service.d.ts +36 -36
  249. package/lib/services/error-mapper.service.d.ts +7 -7
  250. package/lib/services/index.d.ts +6 -6
  251. package/lib/services/internal/commons-init.provider.d.ts +3 -3
  252. package/lib/services/internal/commons-init.service.d.ts +16 -16
  253. package/lib/services/internal/index.d.ts +2 -2
  254. package/lib/services/navigation.service.d.ts +14 -14
  255. package/lib/services/providers/config-service.provider.d.ts +6 -6
  256. package/lib/services/providers/formly-config.provider.d.ts +4 -4
  257. package/lib/services/providers/index.d.ts +2 -2
  258. package/lib/services/tokens/browser-storage.token.d.ts +2 -2
  259. package/lib/services/tokens/commons-init.token.d.ts +3 -3
  260. package/lib/services/tokens/default-setting.token.d.ts +2 -2
  261. package/lib/services/tokens/index.d.ts +4 -4
  262. package/lib/services/tokens/module-config.token.d.ts +3 -3
  263. package/lib/services/view-container.component.service.d.ts +22 -22
  264. package/lib/types/index.d.ts +2 -2
  265. package/lib/types/type.decorator.d.ts +4 -4
  266. package/lib/types/type.model.d.ts +20 -20
  267. package/lib/utils/action-data-provider.util.d.ts +20 -16
  268. package/lib/utils/editor-formly.util.d.ts +10 -10
  269. package/lib/utils/enum.util.d.ts +50 -50
  270. package/lib/utils/i18n.util.d.ts +56 -56
  271. package/lib/utils/index.d.ts +7 -7
  272. package/lib/utils/model.util.d.ts +8 -8
  273. package/lib/utils/notification.util.d.ts +11 -11
  274. package/lib/utils/route.util.d.ts +4 -4
  275. package/lib/utils/styles.util.d.ts +14 -14
  276. package/lib/utils/type.util.d.ts +36 -36
  277. package/mediusinc-mng-commons.d.ts +5 -5
  278. package/package.json +2 -1
  279. package/public-api.d.ts +28 -28
  280. package/scss/mng-overrides/_theme_datatable.scss +2 -0
  281. package/mediusinc-mng-commons-0.8.0-rc.1.tgz +0 -0
@@ -1,125 +1,125 @@
1
- import { ChangeDetectionStrategy, Component, Optional } from '@angular/core';
2
- import { ConfirmationService, MessageService } from 'primeng/api';
3
- import { ActionActivationTriggerEnum } from '../../../descriptors';
4
- import { ActionInstanceStateEnum, ActionParameters } from '../models';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/router";
7
- import * as i2 from "primeng/api";
8
- import * as i3 from "../../../services";
9
- import * as i4 from "primeng/confirmdialog";
10
- export class MngActionRouteComponent {
11
- constructor(router, route, confirmationService, navigationService, actionExecutor, viewContainerService) {
12
- this.router = router;
13
- this.route = route;
14
- this.confirmationService = confirmationService;
15
- this.navigationService = navigationService;
16
- this.actionExecutor = actionExecutor;
17
- this.viewContainerService = viewContainerService;
18
- this.cmpId = Math.random().toString(36).substring(2);
19
- this.actions = [];
20
- this.subscriptions = [];
21
- }
22
- ngOnInit() {
23
- this.actions = this.viewContainerService?.actions.filter(a => a.activationTrigger === ActionActivationTriggerEnum.OnRoute) ?? [];
24
- const subscription = this.route.params.subscribe(p => {
25
- const action = this.findActiveAction(p);
26
- if (action) {
27
- this.activateAction(action, p, this.route.snapshot.queryParams);
28
- }
29
- });
30
- this.subscriptions.push(subscription);
31
- }
32
- ngOnDestroy() {
33
- this.subscriptions.forEach(s => s.unsubscribe());
34
- if (this.dialogRef) {
35
- this.dialogRef.close();
36
- }
37
- }
38
- getConfirmationService() {
39
- return this.confirmationService;
40
- }
41
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
42
- getConfirmationServiceInstanceKey(action) {
43
- return `actionRoute_${this.cmpId}`;
44
- }
45
- activateAction(action, p, qp) {
46
- const itemId = p['itemId'];
47
- const actionData = {};
48
- for (const key in p) {
49
- if (key === 'itemId') {
50
- continue;
51
- }
52
- actionData[key] = p[key];
53
- }
54
- for (const key in qp) {
55
- actionData[key] = p[key];
56
- }
57
- const instance = this.actionExecutor.activateAction(action, new ActionParameters(itemId)
58
- .withActionData(actionData)
59
- .withViewContainer(this.viewContainerService ?? undefined)
60
- .withSourceComponent(this));
61
- this.activeActionInstance = instance;
62
- if (instance.activationDialogRef) {
63
- this.dialogCloseSubscription = instance.activationDialogRef.onClose.subscribe(e => {
64
- const actionEv = e;
65
- if (instance.state === ActionInstanceStateEnum.FinishSuccess) {
66
- if (!this.viewContainerService) {
67
- console.warn(`View container service could not be found, table reload will not be triggered.`);
68
- }
69
- this.viewContainerService?.triggerTableReload(actionEv); // reload only if no error in action and
70
- }
71
- this.untriggerAction();
72
- });
73
- }
74
- }
75
- untriggerAction() {
76
- if (this.dialogCloseSubscription) {
77
- this.dialogCloseSubscription.unsubscribe();
78
- this.dialogCloseSubscription = undefined;
79
- }
80
- this.actionExecutor.deactivateOnRouteTriggeredAction(this.activeActionInstance);
81
- this.activeActionInstance = undefined;
82
- this.dialogRef = undefined;
83
- }
84
- findActiveAction(params) {
85
- const urlSegments = this.route.snapshot.url;
86
- for (const action of this.actions) {
87
- let actionUrl = action.routeUrl ?? '';
88
- // TODO: dont strip '/', but use it accordingly with Angular's router patterns (/, ./, ../)
89
- if (actionUrl.startsWith('/')) {
90
- actionUrl = actionUrl.substring(1);
91
- }
92
- const actionUrlSegments = actionUrl.split('/');
93
- if (actionUrlSegments.length !== urlSegments.length) {
94
- continue;
95
- }
96
- let isMatch = true;
97
- for (let i = 0; i < actionUrlSegments.length; i++) {
98
- if (actionUrlSegments[i].startsWith(':')) {
99
- const paramName = actionUrlSegments[i].substring(1);
100
- if (!params[paramName]) {
101
- isMatch = false;
102
- break;
103
- }
104
- }
105
- else if (actionUrlSegments[i] !== urlSegments[i].path) {
106
- isMatch = false;
107
- break;
108
- }
109
- }
110
- if (isMatch) {
111
- return action;
112
- }
113
- }
114
- return null;
115
- }
116
- }
117
- MngActionRouteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngActionRouteComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.ConfirmationService }, { token: i3.MngNavigationService }, { token: i3.MngActionExecutorService }, { token: i3.MngViewContainerComponentService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
118
- MngActionRouteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: MngActionRouteComponent, selector: "mng-action-route", providers: [MessageService, ConfirmationService], ngImport: i0, template: "<p-confirmDialog [key]=\"'actionRoute_' + cmpId\" [baseZIndex]=\"50\" appendTo=\"body\"></p-confirmDialog>\n", components: [{ type: i4.ConfirmDialog, selector: "p-confirmDialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "visible", "position"], outputs: ["onHide"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
119
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngActionRouteComponent, decorators: [{
120
- type: Component,
121
- args: [{ selector: 'mng-action-route', changeDetection: ChangeDetectionStrategy.OnPush, providers: [MessageService, ConfirmationService], template: "<p-confirmDialog [key]=\"'actionRoute_' + cmpId\" [baseZIndex]=\"50\" appendTo=\"body\"></p-confirmDialog>\n" }]
122
- }], ctorParameters: function () { return [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.ConfirmationService }, { type: i3.MngNavigationService }, { type: i3.MngActionExecutorService }, { type: i3.MngViewContainerComponentService, decorators: [{
123
- type: Optional
124
- }] }]; } });
1
+ import { ChangeDetectionStrategy, Component, Optional } from '@angular/core';
2
+ import { ConfirmationService, MessageService } from 'primeng/api';
3
+ import { ActionActivationTriggerEnum } from '../../../descriptors';
4
+ import { ActionInstanceStateEnum, ActionParameters } from '../models';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/router";
7
+ import * as i2 from "primeng/api";
8
+ import * as i3 from "../../../services";
9
+ import * as i4 from "primeng/confirmdialog";
10
+ export class MngActionRouteComponent {
11
+ constructor(router, route, confirmationService, navigationService, actionExecutor, viewContainerService) {
12
+ this.router = router;
13
+ this.route = route;
14
+ this.confirmationService = confirmationService;
15
+ this.navigationService = navigationService;
16
+ this.actionExecutor = actionExecutor;
17
+ this.viewContainerService = viewContainerService;
18
+ this.cmpId = Math.random().toString(36).substring(2);
19
+ this.actions = [];
20
+ this.subscriptions = [];
21
+ }
22
+ ngOnInit() {
23
+ this.actions = this.viewContainerService?.actions.filter(a => a.activationTrigger === ActionActivationTriggerEnum.OnRoute) ?? [];
24
+ const subscription = this.route.params.subscribe(p => {
25
+ const action = this.findActiveAction(p);
26
+ if (action) {
27
+ this.activateAction(action, p, this.route.snapshot.queryParams);
28
+ }
29
+ });
30
+ this.subscriptions.push(subscription);
31
+ }
32
+ ngOnDestroy() {
33
+ this.subscriptions.forEach(s => s.unsubscribe());
34
+ if (this.dialogRef) {
35
+ this.dialogRef.close();
36
+ }
37
+ }
38
+ getConfirmationService() {
39
+ return this.confirmationService;
40
+ }
41
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
42
+ getConfirmationServiceInstanceKey(action) {
43
+ return `actionRoute_${this.cmpId}`;
44
+ }
45
+ activateAction(action, p, qp) {
46
+ const itemId = p['itemId'];
47
+ const actionData = {};
48
+ for (const key in p) {
49
+ if (key === 'itemId') {
50
+ continue;
51
+ }
52
+ actionData[key] = p[key];
53
+ }
54
+ for (const key in qp) {
55
+ actionData[key] = p[key];
56
+ }
57
+ const instance = this.actionExecutor.activateAction(action, new ActionParameters(itemId)
58
+ .withActionData(actionData)
59
+ .withViewContainer(this.viewContainerService ?? undefined)
60
+ .withSourceComponent(this));
61
+ this.activeActionInstance = instance;
62
+ if (instance.activationDialogRef) {
63
+ this.dialogCloseSubscription = instance.activationDialogRef.onClose.subscribe(e => {
64
+ const actionEv = e;
65
+ if (instance.state === ActionInstanceStateEnum.FinishSuccess) {
66
+ if (!this.viewContainerService) {
67
+ console.warn(`View container service could not be found, table reload will not be triggered.`);
68
+ }
69
+ this.viewContainerService?.triggerTableReload(actionEv); // reload only if no error in action and
70
+ }
71
+ this.untriggerAction();
72
+ });
73
+ }
74
+ }
75
+ untriggerAction() {
76
+ if (this.dialogCloseSubscription) {
77
+ this.dialogCloseSubscription.unsubscribe();
78
+ this.dialogCloseSubscription = undefined;
79
+ }
80
+ this.actionExecutor.deactivateOnRouteTriggeredAction(this.activeActionInstance);
81
+ this.activeActionInstance = undefined;
82
+ this.dialogRef = undefined;
83
+ }
84
+ findActiveAction(params) {
85
+ const urlSegments = this.route.snapshot.url;
86
+ for (const action of this.actions) {
87
+ let actionUrl = action.routeUrl ?? '';
88
+ // TODO: dont strip '/', but use it accordingly with Angular's router patterns (/, ./, ../)
89
+ if (actionUrl.startsWith('/')) {
90
+ actionUrl = actionUrl.substring(1);
91
+ }
92
+ const actionUrlSegments = actionUrl.split('/');
93
+ if (actionUrlSegments.length !== urlSegments.length) {
94
+ continue;
95
+ }
96
+ let isMatch = true;
97
+ for (let i = 0; i < actionUrlSegments.length; i++) {
98
+ if (actionUrlSegments[i].startsWith(':')) {
99
+ const paramName = actionUrlSegments[i].substring(1);
100
+ if (!params[paramName]) {
101
+ isMatch = false;
102
+ break;
103
+ }
104
+ }
105
+ else if (actionUrlSegments[i] !== urlSegments[i].path) {
106
+ isMatch = false;
107
+ break;
108
+ }
109
+ }
110
+ if (isMatch) {
111
+ return action;
112
+ }
113
+ }
114
+ return null;
115
+ }
116
+ }
117
+ MngActionRouteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngActionRouteComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.ConfirmationService }, { token: i3.MngNavigationService }, { token: i3.MngActionExecutorService }, { token: i3.MngViewContainerComponentService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
118
+ MngActionRouteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: MngActionRouteComponent, selector: "mng-action-route", providers: [MessageService, ConfirmationService], ngImport: i0, template: "<p-confirmDialog [key]=\"'actionRoute_' + cmpId\" [baseZIndex]=\"50\" appendTo=\"body\"></p-confirmDialog>\n", components: [{ type: i4.ConfirmDialog, selector: "p-confirmDialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "visible", "position"], outputs: ["onHide"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
119
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngActionRouteComponent, decorators: [{
120
+ type: Component,
121
+ args: [{ selector: 'mng-action-route', changeDetection: ChangeDetectionStrategy.OnPush, providers: [MessageService, ConfirmationService], template: "<p-confirmDialog [key]=\"'actionRoute_' + cmpId\" [baseZIndex]=\"50\" appendTo=\"body\"></p-confirmDialog>\n" }]
122
+ }], ctorParameters: function () { return [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.ConfirmationService }, { type: i3.MngNavigationService }, { type: i3.MngActionExecutorService }, { type: i3.MngViewContainerComponentService, decorators: [{
123
+ type: Optional
124
+ }] }]; } });
125
125
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLXJvdXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9hY3Rpb24vcm91dGUvYWN0aW9uLXJvdXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9hY3Rpb24vcm91dGUvYWN0aW9uLXJvdXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQXFCLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUc5RixPQUFPLEVBQUMsbUJBQW1CLEVBQUUsY0FBYyxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBSWhFLE9BQU8sRUFBQywyQkFBMkIsRUFBbUIsTUFBTSxzQkFBc0IsQ0FBQztBQUVuRixPQUFPLEVBQTZCLHVCQUF1QixFQUFFLGdCQUFnQixFQUE2QixNQUFNLFdBQVcsQ0FBQzs7Ozs7O0FBUTVILE1BQU0sT0FBTyx1QkFBdUI7SUFRaEMsWUFDWSxNQUFjLEVBQ2QsS0FBcUIsRUFDckIsbUJBQXdDLEVBQ3hDLGlCQUF1QyxFQUN2QyxjQUF3QyxFQUM1QixvQkFBbUU7UUFML0UsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFzQjtRQUN2QyxtQkFBYyxHQUFkLGNBQWMsQ0FBMEI7UUFDNUIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUErQztRQWJwRixVQUFLLEdBQVcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkQsWUFBTyxHQUErQixFQUFFLENBQUM7UUFJekMsa0JBQWEsR0FBd0IsRUFBRSxDQUFDO0lBUzdDLENBQUM7SUFFRyxRQUFRO1FBQ1gsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsS0FBSywyQkFBMkIsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDakksTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2pELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4QyxJQUFJLE1BQU0sRUFBRTtnQkFDUixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDbkU7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFTSxXQUFXO1FBQ2QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUNqRCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUMxQjtJQUNMLENBQUM7SUFFTSxzQkFBc0I7UUFDekIsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUM7SUFDcEMsQ0FBQztJQUVELDZEQUE2RDtJQUN0RCxpQ0FBaUMsQ0FBQyxNQUE2QjtRQUNsRSxPQUFPLGVBQWUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFTyxjQUFjLENBQUMsTUFBMkIsRUFBRSxDQUFTLEVBQUUsRUFBVTtRQUNyRSxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDM0IsTUFBTSxVQUFVLEdBQWUsRUFBRSxDQUFDO1FBQ2xDLEtBQUssTUFBTSxHQUFHLElBQUksQ0FBQyxFQUFFO1lBQ2pCLElBQUksR0FBRyxLQUFLLFFBQVEsRUFBRTtnQkFDbEIsU0FBUzthQUNaO1lBQ0QsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUM1QjtRQUNELEtBQUssTUFBTSxHQUFHLElBQUksRUFBRSxFQUFFO1lBQ2xCLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDNUI7UUFDRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FDL0MsTUFBTSxFQUNOLElBQUksZ0JBQWdCLENBQUksTUFBTSxDQUFDO2FBQzFCLGNBQWMsQ0FBQyxVQUFVLENBQUM7YUFDMUIsaUJBQWlCLENBQUMsSUFBSSxDQUFDLG9CQUFvQixJQUFJLFNBQVMsQ0FBQzthQUN6RCxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FDakMsQ0FBQztRQUNGLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxRQUFRLENBQUM7UUFFckMsSUFBSSxRQUFRLENBQUMsbUJBQW1CLEVBQUU7WUFDOUIsSUFBSSxDQUFDLHVCQUF1QixHQUFHLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUM5RSxNQUFNLFFBQVEsR0FBRyxDQUF5QixDQUFDO2dCQUMzQyxJQUFJLFFBQVEsQ0FBQyxLQUFLLEtBQUssdUJBQXVCLENBQUMsYUFBYSxFQUFFO29CQUMxRCxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFO3dCQUM1QixPQUFPLENBQUMsSUFBSSxDQUFDLGdGQUFnRixDQUFDLENBQUM7cUJBQ2xHO29CQUNELElBQUksQ0FBQyxvQkFBb0IsRUFBRSxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLHdDQUF3QztpQkFDcEc7Z0JBQ0QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQzNCLENBQUMsQ0FBQyxDQUFDO1NBQ047SUFDTCxDQUFDO0lBRU8sZUFBZTtRQUNuQixJQUFJLElBQUksQ0FBQyx1QkFBdUIsRUFBRTtZQUM5QixJQUFJLENBQUMsdUJBQXVCLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDM0MsSUFBSSxDQUFDLHVCQUF1QixHQUFHLFNBQVMsQ0FBQztTQUM1QztRQUNELElBQUksQ0FBQyxjQUFjLENBQUMsZ0NBQWdDLENBQUMsSUFBSSxDQUFDLG9CQUFxQixDQUFDLENBQUM7UUFDakYsSUFBSSxDQUFDLG9CQUFvQixHQUFHLFNBQVMsQ0FBQztRQUN0QyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUMvQixDQUFDO0lBRU8sZ0JBQWdCLENBQUMsTUFBYztRQUNuQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7UUFDNUMsS0FBSyxNQUFNLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQy9CLElBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDO1lBQ3RDLDJGQUEyRjtZQUMzRixJQUFJLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQzNCLFNBQVMsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3RDO1lBQ0QsTUFBTSxpQkFBaUIsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQy9DLElBQUksaUJBQWlCLENBQUMsTUFBTSxLQUFLLFdBQVcsQ0FBQyxNQUFNLEVBQUU7Z0JBQ2pELFNBQVM7YUFDWjtZQUNELElBQUksT0FBTyxHQUFHLElBQUksQ0FBQztZQUNuQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUMvQyxJQUFJLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDdEMsTUFBTSxTQUFTLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNwRCxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFO3dCQUNwQixPQUFPLEdBQUcsS0FBSyxDQUFDO3dCQUNoQixNQUFNO3FCQUNUO2lCQUNKO3FCQUFNLElBQUksaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRTtvQkFDckQsT0FBTyxHQUFHLEtBQUssQ0FBQztvQkFDaEIsTUFBTTtpQkFDVDthQUNKO1lBQ0QsSUFBSSxPQUFPLEVBQUU7Z0JBQ1QsT0FBTyxNQUFNLENBQUM7YUFDakI7U0FDSjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7O29IQXZIUSx1QkFBdUI7d0dBQXZCLHVCQUF1QiwyQ0FGckIsQ0FBQyxjQUFjLEVBQUUsbUJBQW1CLENBQUMsMEJDZnBELDhHQUNBOzJGRGdCYSx1QkFBdUI7a0JBTm5DLFNBQVM7K0JBQ0ksa0JBQWtCLG1CQUVYLHVCQUF1QixDQUFDLE1BQU0sYUFDcEMsQ0FBQyxjQUFjLEVBQUUsbUJBQW1CLENBQUM7OzBCQWdCM0MsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQsIE9wdGlvbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIFBhcmFtcywgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge0NvbmZpcm1hdGlvblNlcnZpY2UsIE1lc3NhZ2VTZXJ2aWNlfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQge0R5bmFtaWNEaWFsb2dSZWZ9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7QWN0aW9uQWN0aXZhdGlvblRyaWdnZXJFbnVtLCBBY3Rpb25EZXNjcmlwdG9yfSBmcm9tICcuLi8uLi8uLi9kZXNjcmlwdG9ycyc7XG5pbXBvcnQge01uZ0FjdGlvbkV4ZWN1dG9yU2VydmljZSwgTW5nTmF2aWdhdGlvblNlcnZpY2UsIE1uZ1ZpZXdDb250YWluZXJDb21wb25lbnRTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQge0FjdGlvbkRhdGEsIEFjdGlvbkluc3RhbmNlLCBBY3Rpb25JbnN0YW5jZVN0YXRlRW51bSwgQWN0aW9uUGFyYW1ldGVycywgSUFjdGlvbkNvbmZpcm1hdGlvblNlcnZpY2V9IGZyb20gJy4uL21vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbW5nLWFjdGlvbi1yb3V0ZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FjdGlvbi1yb3V0ZS5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbTWVzc2FnZVNlcnZpY2UsIENvbmZpcm1hdGlvblNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIE1uZ0FjdGlvblJvdXRlQ29tcG9uZW50PFQsIFM+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIElBY3Rpb25Db25maXJtYXRpb25TZXJ2aWNlIHtcbiAgICBwdWJsaWMgY21wSWQ6IHN0cmluZyA9IE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyKTtcbiAgICBwcml2YXRlIGFjdGlvbnM6IEFycmF5PEFjdGlvbkRlc2NyaXB0b3I8VD4+ID0gW107XG4gICAgcHJpdmF0ZSBhY3RpdmVBY3Rpb25JbnN0YW5jZT86IEFjdGlvbkluc3RhbmNlPFQsIFM+O1xuICAgIHByaXZhdGUgZGlhbG9nUmVmPzogRHluYW1pY0RpYWxvZ1JlZjtcbiAgICBwcml2YXRlIGRpYWxvZ0Nsb3NlU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgc3Vic2NyaXB0aW9uczogQXJyYXk8U3Vic2NyaXB0aW9uPiA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICBwcml2YXRlIGNvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbmF2aWdhdGlvblNlcnZpY2U6IE1uZ05hdmlnYXRpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGFjdGlvbkV4ZWN1dG9yOiBNbmdBY3Rpb25FeGVjdXRvclNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgdmlld0NvbnRhaW5lclNlcnZpY2U6IE1uZ1ZpZXdDb250YWluZXJDb21wb25lbnRTZXJ2aWNlPFQsIFM+IHwgbnVsbFxuICAgICkge31cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5hY3Rpb25zID0gdGhpcy52aWV3Q29udGFpbmVyU2VydmljZT8uYWN0aW9ucy5maWx0ZXIoYSA9PiBhLmFjdGl2YXRpb25UcmlnZ2VyID09PSBBY3Rpb25BY3RpdmF0aW9uVHJpZ2dlckVudW0uT25Sb3V0ZSkgPz8gW107XG4gICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IHRoaXMucm91dGUucGFyYW1zLnN1YnNjcmliZShwID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuZmluZEFjdGl2ZUFjdGlvbihwKTtcbiAgICAgICAgICAgIGlmIChhY3Rpb24pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2YXRlQWN0aW9uKGFjdGlvbiwgcCwgdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChzdWJzY3JpcHRpb24pO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICAgICAgICBpZiAodGhpcy5kaWFsb2dSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q29uZmlybWF0aW9uU2VydmljZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlybWF0aW9uU2VydmljZTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgcHVibGljIGdldENvbmZpcm1hdGlvblNlcnZpY2VJbnN0YW5jZUtleShhY3Rpb246IEFjdGlvbkRlc2NyaXB0b3I8YW55Pikge1xuICAgICAgICByZXR1cm4gYGFjdGlvblJvdXRlXyR7dGhpcy5jbXBJZH1gO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWN0aXZhdGVBY3Rpb24oYWN0aW9uOiBBY3Rpb25EZXNjcmlwdG9yPFQ+LCBwOiBQYXJhbXMsIHFwOiBQYXJhbXMpIHtcbiAgICAgICAgY29uc3QgaXRlbUlkID0gcFsnaXRlbUlkJ107XG4gICAgICAgIGNvbnN0IGFjdGlvbkRhdGE6IEFjdGlvbkRhdGEgPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gcCkge1xuICAgICAgICAgICAgaWYgKGtleSA9PT0gJ2l0ZW1JZCcpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFjdGlvbkRhdGFba2V5XSA9IHBba2V5XTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBxcCkge1xuICAgICAgICAgICAgYWN0aW9uRGF0YVtrZXldID0gcFtrZXldO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGluc3RhbmNlID0gdGhpcy5hY3Rpb25FeGVjdXRvci5hY3RpdmF0ZUFjdGlvbihcbiAgICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICAgIG5ldyBBY3Rpb25QYXJhbWV0ZXJzPFQ+KGl0ZW1JZClcbiAgICAgICAgICAgICAgICAud2l0aEFjdGlvbkRhdGEoYWN0aW9uRGF0YSlcbiAgICAgICAgICAgICAgICAud2l0aFZpZXdDb250YWluZXIodGhpcy52aWV3Q29udGFpbmVyU2VydmljZSA/PyB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgLndpdGhTb3VyY2VDb21wb25lbnQodGhpcylcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5hY3RpdmVBY3Rpb25JbnN0YW5jZSA9IGluc3RhbmNlO1xuXG4gICAgICAgIGlmIChpbnN0YW5jZS5hY3RpdmF0aW9uRGlhbG9nUmVmKSB7XG4gICAgICAgICAgICB0aGlzLmRpYWxvZ0Nsb3NlU3Vic2NyaXB0aW9uID0gaW5zdGFuY2UuYWN0aXZhdGlvbkRpYWxvZ1JlZi5vbkNsb3NlLnN1YnNjcmliZShlID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhY3Rpb25FdiA9IGUgYXMgVCB8IG51bGwgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgaWYgKGluc3RhbmNlLnN0YXRlID09PSBBY3Rpb25JbnN0YW5jZVN0YXRlRW51bS5GaW5pc2hTdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy52aWV3Q29udGFpbmVyU2VydmljZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBWaWV3IGNvbnRhaW5lciBzZXJ2aWNlIGNvdWxkIG5vdCBiZSBmb3VuZCwgdGFibGUgcmVsb2FkIHdpbGwgbm90IGJlIHRyaWdnZXJlZC5gKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdDb250YWluZXJTZXJ2aWNlPy50cmlnZ2VyVGFibGVSZWxvYWQoYWN0aW9uRXYpOyAvLyByZWxvYWQgb25seSBpZiBubyBlcnJvciBpbiBhY3Rpb24gYW5kXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMudW50cmlnZ2VyQWN0aW9uKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdW50cmlnZ2VyQWN0aW9uKCkge1xuICAgICAgICBpZiAodGhpcy5kaWFsb2dDbG9zZVN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dDbG9zZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dDbG9zZVN1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFjdGlvbkV4ZWN1dG9yLmRlYWN0aXZhdGVPblJvdXRlVHJpZ2dlcmVkQWN0aW9uKHRoaXMuYWN0aXZlQWN0aW9uSW5zdGFuY2UhKTtcbiAgICAgICAgdGhpcy5hY3RpdmVBY3Rpb25JbnN0YW5jZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaW5kQWN0aXZlQWN0aW9uKHBhcmFtczogUGFyYW1zKTogQWN0aW9uRGVzY3JpcHRvcjxUPiB8IG51bGwge1xuICAgICAgICBjb25zdCB1cmxTZWdtZW50cyA9IHRoaXMucm91dGUuc25hcHNob3QudXJsO1xuICAgICAgICBmb3IgKGNvbnN0IGFjdGlvbiBvZiB0aGlzLmFjdGlvbnMpIHtcbiAgICAgICAgICAgIGxldCBhY3Rpb25VcmwgPSBhY3Rpb24ucm91dGVVcmwgPz8gJyc7XG4gICAgICAgICAgICAvLyBUT0RPOiBkb250IHN0cmlwICcvJywgYnV0IHVzZSBpdCBhY2NvcmRpbmdseSB3aXRoIEFuZ3VsYXIncyByb3V0ZXIgcGF0dGVybnMgKC8sIC4vLCAuLi8pXG4gICAgICAgICAgICBpZiAoYWN0aW9uVXJsLnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgICAgICAgICAgIGFjdGlvblVybCA9IGFjdGlvblVybC5zdWJzdHJpbmcoMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBhY3Rpb25VcmxTZWdtZW50cyA9IGFjdGlvblVybC5zcGxpdCgnLycpO1xuICAgICAgICAgICAgaWYgKGFjdGlvblVybFNlZ21lbnRzLmxlbmd0aCAhPT0gdXJsU2VnbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgaXNNYXRjaCA9IHRydWU7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFjdGlvblVybFNlZ21lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGFjdGlvblVybFNlZ21lbnRzW2ldLnN0YXJ0c1dpdGgoJzonKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJhbU5hbWUgPSBhY3Rpb25VcmxTZWdtZW50c1tpXS5zdWJzdHJpbmcoMSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghcGFyYW1zW3BhcmFtTmFtZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzTWF0Y2ggPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhY3Rpb25VcmxTZWdtZW50c1tpXSAhPT0gdXJsU2VnbWVudHNbaV0ucGF0aCkge1xuICAgICAgICAgICAgICAgICAgICBpc01hdGNoID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc01hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjdGlvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG59XG4iLCI8cC1jb25maXJtRGlhbG9nIFtrZXldPVwiJ2FjdGlvblJvdXRlXycgKyBjbXBJZFwiIFtiYXNlWkluZGV4XT1cIjUwXCIgYXBwZW5kVG89XCJib2R5XCI+PC9wLWNvbmZpcm1EaWFsb2c+XG4iXX0=