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

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 (285) hide show
  1. package/assets/i18n/en.json +3 -3
  2. package/assets/i18n/sl.json +3 -3
  3. package/esm2020/lib/api/models/builders/query-param.builder.mjs +59 -53
  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 +22 -22
  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 +152 -126
  18. package/esm2020/lib/api/utils/object-serializer.util.mjs +243 -243
  19. package/esm2020/lib/components/action/action.component.mjs +174 -161
  20. package/esm2020/lib/components/action/editor/action-editor.component.mjs +230 -236
  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 +231 -59
  24. package/esm2020/lib/components/action/models/index.mjs +2 -2
  25. package/esm2020/lib/components/action/route/action-route.component.mjs +125 -127
  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 +43 -43
  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 +79 -56
  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 +179 -179
  35. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +156 -165
  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 +34 -34
  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 +35 -35
  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 +102 -85
  60. package/esm2020/lib/components/tableview/table/column-value/column-value.component.mjs +41 -41
  61. package/esm2020/lib/components/tableview/table/table.component.mjs +430 -339
  62. package/esm2020/lib/components/tableview/tableview.component.mjs +89 -97
  63. package/esm2020/lib/config/formly.config.mjs +172 -163
  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 +623 -600
  74. package/esm2020/lib/descriptors/column.descriptor.mjs +228 -197
  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 +823 -793
  79. package/esm2020/lib/descriptors/filter.descriptor.mjs +295 -237
  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 +214 -171
  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 -361
  107. package/esm2020/lib/services/commons.service.mjs +344 -344
  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 +2 -2
  127. package/esm2020/lib/utils/action-data-provider.util.mjs +116 -116
  128. package/esm2020/lib/utils/editor-formly.util.mjs +205 -202
  129. package/esm2020/lib/utils/enum.util.mjs +82 -82
  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 +41 -0
  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 +9702 -8977
  140. package/fesm2015/mediusinc-mng-commons.mjs.map +1 -1
  141. package/fesm2020/mediusinc-mng-commons.mjs +9574 -8848
  142. package/fesm2020/mediusinc-mng-commons.mjs.map +1 -1
  143. package/lib/api/models/builders/query-param.builder.d.ts +13 -12
  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 +11 -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 -12
  158. package/lib/api/utils/object-serializer.util.d.ts +33 -33
  159. package/lib/components/action/action.component.d.ts +66 -65
  160. package/lib/components/action/editor/action-editor.component.d.ts +62 -59
  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 +126 -57
  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 +19 -14
  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 -25
  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 +19 -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 -29
  200. package/lib/components/tableview/table/column-value/column-value.component.d.ts +17 -17
  201. package/lib/components/tableview/table/table.component.d.ts +104 -93
  202. package/lib/components/tableview/tableview.component.d.ts +37 -39
  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 -270
  214. package/lib/descriptors/column.descriptor.d.ts +76 -66
  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 +326 -314
  218. package/lib/descriptors/field.descriptor.interface.d.ts +9 -9
  219. package/lib/descriptors/filter.descriptor.d.ts +127 -108
  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 -63
  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 -104
  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 -17
  267. package/lib/utils/action-data-provider.util.d.ts +16 -17
  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 -0
  276. package/lib/utils/type.util.d.ts +36 -36
  277. package/mediusinc-mng-commons-0.8.0-rc.1.tgz +0 -0
  278. package/mediusinc-mng-commons.d.ts +5 -5
  279. package/package.json +1 -1
  280. package/public-api.d.ts +28 -28
  281. package/scss/common/theme/designer/_components.scss +1 -1
  282. package/scss/mng-overrides/_theme_datatable.scss +57 -0
  283. package/scss/mng-overrides/_theme_forms.scss +16 -0
  284. package/scss/mng-overrides/_theme_styles.scss +1 -0
  285. package/scss/mng-overrides/_theme_tableview.scss +0 -43
@@ -1,127 +1,125 @@
1
- import { ChangeDetectionStrategy, Component, Optional } from '@angular/core';
2
- import { ConfirmationService, MessageService } from 'primeng/api';
3
- import { first } from 'rxjs/operators';
4
- import { ActionActivationTriggerEnum } from '../../../descriptors';
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
- this.activeAction = action;
47
- const itemId = p['itemId'];
48
- const actionData = {};
49
- for (const key in p) {
50
- if (key === 'itemId') {
51
- continue;
52
- }
53
- actionData[key] = p[key];
54
- }
55
- for (const key in qp) {
56
- actionData[key] = p[key];
57
- }
58
- this.actionExecutor
59
- .activateAction(action, itemId, undefined, actionData, this.viewContainerService ?? undefined, this)
60
- .pipe(first())
61
- .subscribe(res => {
62
- if (res.dialogRef) {
63
- this.dialogRef = res.dialogRef;
64
- this.dialogCloseSubscription = this.dialogRef?.onClose.subscribe(e => {
65
- const actionEv = e;
66
- if (!actionEv?.error || !actionEv?.error?.dismissed) {
67
- if (!this.viewContainerService) {
68
- console.warn(`View container service could not be found, table reload will not be triggered.`);
69
- }
70
- this.viewContainerService?.triggerTableReload(actionEv); // reload only if no error in action and
71
- }
72
- this.deactivateAction();
73
- });
74
- }
75
- });
76
- }
77
- deactivateAction() {
78
- if (this.dialogCloseSubscription) {
79
- this.dialogCloseSubscription.unsubscribe();
80
- this.dialogCloseSubscription = undefined;
81
- }
82
- this.actionExecutor.deactivateAction(this.activeAction);
83
- this.activeAction = undefined;
84
- this.dialogRef = undefined;
85
- }
86
- findActiveAction(params) {
87
- const urlSegments = this.route.snapshot.url;
88
- for (const action of this.actions) {
89
- let actionUrl = action.routeUrl ?? '';
90
- // TODO: dont strip '/', but use it accordingly with Angular's router patterns (/, ./, ../)
91
- if (actionUrl.startsWith('/')) {
92
- actionUrl = actionUrl.substring(1);
93
- }
94
- const actionUrlSegments = actionUrl.split('/');
95
- if (actionUrlSegments.length !== urlSegments.length) {
96
- continue;
97
- }
98
- let isMatch = true;
99
- for (let i = 0; i < actionUrlSegments.length; i++) {
100
- if (actionUrlSegments[i].startsWith(':')) {
101
- const paramName = actionUrlSegments[i].substring(1);
102
- if (!params[paramName]) {
103
- isMatch = false;
104
- break;
105
- }
106
- }
107
- else if (actionUrlSegments[i] !== urlSegments[i].path) {
108
- isMatch = false;
109
- break;
110
- }
111
- }
112
- if (isMatch) {
113
- return action;
114
- }
115
- }
116
- return null;
117
- }
118
- }
119
- 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 });
120
- 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 });
121
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngActionRouteComponent, decorators: [{
122
- type: Component,
123
- args: [{ selector: 'mng-action-route', changeDetection: ChangeDetectionStrategy.OnPush, providers: [MessageService, ConfirmationService], template: "<p-confirmDialog [key]=\"'actionRoute_' + cmpId\" [baseZIndex]=\"50\" appendTo=\"body\"></p-confirmDialog>\n" }]
124
- }], ctorParameters: function () { return [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.ConfirmationService }, { type: i3.MngNavigationService }, { type: i3.MngActionExecutorService }, { type: i3.MngViewContainerComponentService, decorators: [{
125
- type: Optional
126
- }] }]; } });
127
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLXJvdXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9hY3Rpb24vcm91dGUvYWN0aW9uLXJvdXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9hY3Rpb24vcm91dGUvYWN0aW9uLXJvdXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQXFCLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUc5RixPQUFPLEVBQUMsbUJBQW1CLEVBQUUsY0FBYyxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBR2hFLE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQUMsMkJBQTJCLEVBQW1CLE1BQU0sc0JBQXNCLENBQUM7Ozs7OztBQVVuRixNQUFNLE9BQU8sdUJBQXVCO0lBUWhDLFlBQ1ksTUFBYyxFQUNkLEtBQXFCLEVBQ3JCLG1CQUF3QyxFQUN4QyxpQkFBdUMsRUFDdkMsY0FBd0MsRUFDNUIsb0JBQW1FO1FBTC9FLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBc0I7UUFDdkMsbUJBQWMsR0FBZCxjQUFjLENBQTBCO1FBQzVCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBK0M7UUFicEYsVUFBSyxHQUFXLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELFlBQU8sR0FBK0IsRUFBRSxDQUFDO1FBSXpDLGtCQUFhLEdBQXdCLEVBQUUsQ0FBQztJQVM3QyxDQUFD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QUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQy9DLElBQUksaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUN0QyxNQUFNLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3BELElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUU7d0JBQ3BCLE9BQU8sR0FBRyxLQUFLLENBQUM7d0JBQ2hCLE1BQU07cUJBQ1Q7aUJBQ0o7cUJBQU0sSUFBSSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFO29CQUNyRCxPQUFPLEdBQUcsS0FBSyxDQUFDO29CQUNoQixNQUFNO2lCQUNUO2FBQ0o7WUFDRCxJQUFJLE9BQU8sRUFBRTtnQkFDVCxPQUFPLE1BQU0sQ0FBQzthQUNqQjtTQUNKO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQzs7b0hBckhRLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLDJDQUZyQixDQUFDLGNBQWMsRUFBRSxtQkFBbUIsQ0FBQywwQkNoQnBELDhHQUNBOzJGRGlCYSx1QkFBdUI7a0JBTm5DLFNBQVM7K0JBQ0ksa0JBQWtCLG1CQUVYLHVCQUF1QixDQUFDLE1BQU0sYUFDcEMsQ0FBQyxjQUFjLEVBQUUsbUJBQW1CLENBQUM7OzBCQWdCM0MsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQsIE9wdGlvbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIFBhcmFtcywgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge0NvbmZpcm1hdGlvblNlcnZpY2UsIE1lc3NhZ2VTZXJ2aWNlfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQge0R5bmFtaWNEaWFsb2dSZWZ9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2ZpcnN0fSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7QWN0aW9uQWN0aXZhdGlvblRyaWdnZXJFbnVtLCBBY3Rpb25EZXNjcmlwdG9yfSBmcm9tICcuLi8uLi8uLi9kZXNjcmlwdG9ycyc7XG5pbXBvcnQge01uZ0FjdGlvbkV4ZWN1dG9yU2VydmljZSwgTW5nTmF2aWdhdGlvblNlcnZpY2UsIE1uZ1ZpZXdDb250YWluZXJDb21wb25lbnRTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQge0FjdGlvbkRhdGEsIEFjdGlvblJ1blJlc3VsdCwgSUFjdGlvbkNvbmZpcm1hdGlvblNlcnZpY2V9IGZyb20gJy4uL21vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbW5nLWFjdGlvbi1yb3V0ZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FjdGlvbi1yb3V0ZS5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbTWVzc2FnZVNlcnZpY2UsIENvbmZpcm1hdGlvblNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIE1uZ0FjdGlvblJvdXRlQ29tcG9uZW50PFQsIFM+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIElBY3Rpb25Db25maXJtYXRpb25TZXJ2aWNlIHtcbiAgICBwdWJsaWMgY21wSWQ6IHN0cmluZyA9IE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyKTtcbiAgICBwcml2YXRlIGFjdGlvbnM6IEFycmF5PEFjdGlvbkRlc2NyaXB0b3I8VD4+ID0gW107XG4gICAgcHJpdmF0ZSBhY3RpdmVBY3Rpb24/OiBBY3Rpb25EZXNjcmlwdG9yPFQ+O1xuICAgIHByaXZhdGUgZGlhbG9nUmVmPzogRHluYW1pY0RpYWxvZ1JlZjtcbiAgICBwcml2YXRlIGRpYWxvZ0Nsb3NlU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgc3Vic2NyaXB0aW9uczogQXJyYXk8U3Vic2NyaXB0aW9uPiA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICBwcml2YXRlIGNvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbmF2aWdhdGlvblNlcnZpY2U6IE1uZ05hdmlnYXRpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGFjdGlvbkV4ZWN1dG9yOiBNbmdBY3Rpb25FeGVjdXRvclNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgdmlld0NvbnRhaW5lclNlcnZpY2U6IE1uZ1ZpZXdDb250YWluZXJDb21wb25lbnRTZXJ2aWNlPFQsIFM+IHwgbnVsbFxuICAgICkge31cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5hY3Rpb25zID0gdGhpcy52aWV3Q29udGFpbmVyU2VydmljZT8uYWN0aW9ucy5maWx0ZXIoYSA9PiBhLmFjdGl2YXRpb25UcmlnZ2VyID09PSBBY3Rpb25BY3RpdmF0aW9uVHJpZ2dlckVudW0uT25Sb3V0ZSkgPz8gW107XG4gICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IHRoaXMucm91dGUucGFyYW1zLnN1YnNjcmliZShwID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuZmluZEFjdGl2ZUFjdGlvbihwKTtcbiAgICAgICAgICAgIGlmIChhY3Rpb24pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2YXRlQWN0aW9uKGFjdGlvbiwgcCwgdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChzdWJzY3JpcHRpb24pO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICAgICAgICBpZiAodGhpcy5kaWFsb2dSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q29uZmlybWF0aW9uU2VydmljZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlybWF0aW9uU2VydmljZTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgcHVibGljIGdldENvbmZpcm1hdGlvblNlcnZpY2VJbnN0YW5jZUtleShhY3Rpb246IEFjdGlvbkRlc2NyaXB0b3I8YW55Pikge1xuICAgICAgICByZXR1cm4gYGFjdGlvblJvdXRlXyR7dGhpcy5jbXBJZH1gO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWN0aXZhdGVBY3Rpb24oYWN0aW9uOiBBY3Rpb25EZXNjcmlwdG9yPFQ+LCBwOiBQYXJhbXMsIHFwOiBQYXJhbXMpIHtcbiAgICAgICAgdGhpcy5hY3RpdmVBY3Rpb24gPSBhY3Rpb247XG4gICAgICAgIGNvbnN0IGl0ZW1JZCA9IHBbJ2l0ZW1JZCddO1xuICAgICAgICBjb25zdCBhY3Rpb25EYXRhOiBBY3Rpb25EYXRhID0ge307XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHApIHtcbiAgICAgICAgICAgIGlmIChrZXkgPT09ICdpdGVtSWQnKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhY3Rpb25EYXRhW2tleV0gPSBwW2tleV07XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gcXApIHtcbiAgICAgICAgICAgIGFjdGlvbkRhdGFba2V5XSA9IHBba2V5XTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFjdGlvbkV4ZWN1dG9yXG4gICAgICAgICAgICAuYWN0aXZhdGVBY3Rpb24oYWN0aW9uLCBpdGVtSWQsIHVuZGVmaW5lZCwgYWN0aW9uRGF0YSwgdGhpcy52aWV3Q29udGFpbmVyU2VydmljZSA/PyB1bmRlZmluZWQsIHRoaXMpXG4gICAgICAgICAgICAucGlwZShmaXJzdCgpKVxuICAgICAgICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXMuZGlhbG9nUmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nUmVmID0gcmVzLmRpYWxvZ1JlZjtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dDbG9zZVN1YnNjcmlwdGlvbiA9IHRoaXMuZGlhbG9nUmVmPy5vbkNsb3NlLnN1YnNjcmliZShlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFjdGlvbkV2ID0gZSBhcyBBY3Rpb25SdW5SZXN1bHQ8VCwgUywgYW55PjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYWN0aW9uRXY/LmVycm9yIHx8ICFhY3Rpb25Fdj8uZXJyb3I/LmRpc21pc3NlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy52aWV3Q29udGFpbmVyU2VydmljZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYFZpZXcgY29udGFpbmVyIHNlcnZpY2UgY291bGQgbm90IGJlIGZvdW5kLCB0YWJsZSByZWxvYWQgd2lsbCBub3QgYmUgdHJpZ2dlcmVkLmApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdDb250YWluZXJTZXJ2aWNlPy50cmlnZ2VyVGFibGVSZWxvYWQoYWN0aW9uRXYpOyAvLyByZWxvYWQgb25seSBpZiBubyBlcnJvciBpbiBhY3Rpb24gYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRlYWN0aXZhdGVBY3Rpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZWFjdGl2YXRlQWN0aW9uKCkge1xuICAgICAgICBpZiAodGhpcy5kaWFsb2dDbG9zZVN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dDbG9zZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dDbG9zZVN1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFjdGlvbkV4ZWN1dG9yLmRlYWN0aXZhdGVBY3Rpb24odGhpcy5hY3RpdmVBY3Rpb24hKTtcbiAgICAgICAgdGhpcy5hY3RpdmVBY3Rpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHByaXZhdGUgZmluZEFjdGl2ZUFjdGlvbihwYXJhbXM6IFBhcmFtcyk6IEFjdGlvbkRlc2NyaXB0b3I8VD4gfCBudWxsIHtcbiAgICAgICAgY29uc3QgdXJsU2VnbWVudHMgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnVybDtcbiAgICAgICAgZm9yIChjb25zdCBhY3Rpb24gb2YgdGhpcy5hY3Rpb25zKSB7XG4gICAgICAgICAgICBsZXQgYWN0aW9uVXJsID0gYWN0aW9uLnJvdXRlVXJsID8/ICcnO1xuICAgICAgICAgICAgLy8gVE9ETzogZG9udCBzdHJpcCAnLycsIGJ1dCB1c2UgaXQgYWNjb3JkaW5nbHkgd2l0aCBBbmd1bGFyJ3Mgcm91dGVyIHBhdHRlcm5zICgvLCAuLywgLi4vKVxuICAgICAgICAgICAgaWYgKGFjdGlvblVybC5zdGFydHNXaXRoKCcvJykpIHtcbiAgICAgICAgICAgICAgICBhY3Rpb25VcmwgPSBhY3Rpb25Vcmwuc3Vic3RyaW5nKDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgYWN0aW9uVXJsU2VnbWVudHMgPSBhY3Rpb25Vcmwuc3BsaXQoJy8nKTtcbiAgICAgICAgICAgIGlmIChhY3Rpb25VcmxTZWdtZW50cy5sZW5ndGggIT09IHVybFNlZ21lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IGlzTWF0Y2ggPSB0cnVlO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhY3Rpb25VcmxTZWdtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChhY3Rpb25VcmxTZWdtZW50c1tpXS5zdGFydHNXaXRoKCc6JykpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyYW1OYW1lID0gYWN0aW9uVXJsU2VnbWVudHNbaV0uc3Vic3RyaW5nKDEpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXBhcmFtc1twYXJhbU5hbWVdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpc01hdGNoID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYWN0aW9uVXJsU2VnbWVudHNbaV0gIT09IHVybFNlZ21lbnRzW2ldLnBhdGgpIHtcbiAgICAgICAgICAgICAgICAgICAgaXNNYXRjaCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNNYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBhY3Rpb247XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufVxuIiwiPHAtY29uZmlybURpYWxvZyBba2V5XT1cIidhY3Rpb25Sb3V0ZV8nICsgY21wSWRcIiBbYmFzZVpJbmRleF09XCI1MFwiIGFwcGVuZFRvPVwiYm9keVwiPjwvcC1jb25maXJtRGlhbG9nPlxuIl19
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
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLXJvdXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9hY3Rpb24vcm91dGUvYWN0aW9uLXJvdXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9hY3Rpb24vcm91dGUvYWN0aW9uLXJvdXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQXFCLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUc5RixPQUFPLEVBQUMsbUJBQW1CLEVBQUUsY0FBYyxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBSWhFLE9BQU8sRUFBQywyQkFBMkIsRUFBbUIsTUFBTSxzQkFBc0IsQ0FBQztBQUVuRixPQUFPLEVBQTZCLHVCQUF1QixFQUFFLGdCQUFnQixFQUE2QixNQUFNLFdBQVcsQ0FBQzs7Ozs7O0FBUTVILE1BQU0sT0FBTyx1QkFBdUI7SUFRaEMsWUFDWSxNQUFjLEVBQ2QsS0FBcUIsRUFDckIsbUJBQXdDLEVBQ3hDLGlCQUF1QyxFQUN2QyxjQUF3QyxFQUM1QixvQkFBbUU7UUFML0UsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFzQjtRQUN2QyxtQkFBYyxHQUFkLGNBQWMsQ0FBMEI7UUFDNUIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUErQztRQWJwRixVQUFLLEdBQVcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkQsWUFBTyxHQUErQixFQUFFLENBQUM7UUFJekMsa0JBQWEsR0FBd0IsRUFBRSxD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QixDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDdEMsTUFBTSxTQUFTLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNwRCxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFO3dCQUNwQixPQUFPLEdBQUcsS0FBSyxDQUFDO3dCQUNoQixNQUFNO3FCQUNUO2lCQUNKO3FCQUFNLElBQUksaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRTtvQkFDckQsT0FBTyxHQUFHLEtBQUssQ0FBQztvQkFDaEIsTUFBTTtpQkFDVDthQUNKO1lBQ0QsSUFBSSxPQUFPLEVBQUU7Z0JBQ1QsT0FBTyxNQUFNLENBQUM7YUFDakI7U0FDSjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7O29IQXZIUSx1QkFBdUI7d0dBQXZCLHVCQUF1QiwyQ0FGckIsQ0FBQyxjQUFjLEVBQUUsbUJBQW1CLENBQUMsMEJDZnBELDhHQUNBOzJGRGdCYSx1QkFBdUI7a0JBTm5DLFNBQVM7K0JBQ0ksa0JBQWtCLG1CQUVYLHVCQUF1QixDQUFDLE1BQU0sYUFDcEMsQ0FBQyxjQUFjLEVBQUUsbUJBQW1CLENBQUM7OzBCQWdCM0MsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQsIE9wdGlvbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIFBhcmFtcywgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge0NvbmZpcm1hdGlvblNlcnZpY2UsIE1lc3NhZ2VTZXJ2aWNlfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQge0R5bmFtaWNEaWFsb2dSZWZ9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7QWN0aW9uQWN0aXZhdGlvblRyaWdnZXJFbnVtLCBBY3Rpb25EZXNjcmlwdG9yfSBmcm9tICcuLi8uLi8uLi9kZXNjcmlwdG9ycyc7XG5pbXBvcnQge01uZ0FjdGlvbkV4ZWN1dG9yU2VydmljZSwgTW5nTmF2aWdhdGlvblNlcnZpY2UsIE1uZ1ZpZXdDb250YWluZXJDb21wb25lbnRTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQge0FjdGlvbkRhdGEsIEFjdGlvbkluc3RhbmNlLCBBY3Rpb25JbnN0YW5jZVN0YXRlRW51bSwgQWN0aW9uUGFyYW1ldGVycywgSUFjdGlvbkNvbmZpcm1hdGlvblNlcnZpY2V9IGZyb20gJy4uL21vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbW5nLWFjdGlvbi1yb3V0ZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FjdGlvbi1yb3V0ZS5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbTWVzc2FnZVNlcnZpY2UsIENvbmZpcm1hdGlvblNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIE1uZ0FjdGlvblJvdXRlQ29tcG9uZW50PFQsIFM+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIElBY3Rpb25Db25maXJtYXRpb25TZXJ2aWNlIHtcbiAgICBwdWJsaWMgY21wSWQ6IHN0cmluZyA9IE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyKTtcbiAgICBwcml2YXRlIGFjdGlvbnM6IEFycmF5PEFjdGlvbkRlc2NyaXB0b3I8VD4+ID0gW107XG4gICAgcHJpdmF0ZSBhY3RpdmVBY3Rpb25JbnN0YW5jZT86IEFjdGlvbkluc3RhbmNlPFQsIFM+O1xuICAgIHByaXZhdGUgZGlhbG9nUmVmPzogRHluYW1pY0RpYWxvZ1JlZjtcbiAgICBwcml2YXRlIGRpYWxvZ0Nsb3NlU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgc3Vic2NyaXB0aW9uczogQXJyYXk8U3Vic2NyaXB0aW9uPiA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICBwcml2YXRlIGNvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbmF2aWdhdGlvblNlcnZpY2U6IE1uZ05hdmlnYXRpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGFjdGlvbkV4ZWN1dG9yOiBNbmdBY3Rpb25FeGVjdXRvclNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgdmlld0NvbnRhaW5lclNlcnZpY2U6IE1uZ1ZpZXdDb250YWluZXJDb21wb25lbnRTZXJ2aWNlPFQsIFM+IHwgbnVsbFxuICAgICkge31cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5hY3Rpb25zID0gdGhpcy52aWV3Q29udGFpbmVyU2VydmljZT8uYWN0aW9ucy5maWx0ZXIoYSA9PiBhLmFjdGl2YXRpb25UcmlnZ2VyID09PSBBY3Rpb25BY3RpdmF0aW9uVHJpZ2dlckVudW0uT25Sb3V0ZSkgPz8gW107XG4gICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IHRoaXMucm91dGUucGFyYW1zLnN1YnNjcmliZShwID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuZmluZEFjdGl2ZUFjdGlvbihwKTtcbiAgICAgICAgICAgIGlmIChhY3Rpb24pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2YXRlQWN0aW9uKGFjdGlvbiwgcCwgdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChzdWJzY3JpcHRpb24pO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICAgICAgICBpZiAodGhpcy5kaWFsb2dSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q29uZmlybWF0aW9uU2VydmljZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlybWF0aW9uU2VydmljZTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgcHVibGljIGdldENvbmZpcm1hdGlvblNlcnZpY2VJbnN0YW5jZUtleShhY3Rpb246IEFjdGlvbkRlc2NyaXB0b3I8YW55Pikge1xuICAgICAgICByZXR1cm4gYGFjdGlvblJvdXRlXyR7dGhpcy5jbXBJZH1gO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWN0aXZhdGVBY3Rpb24oYWN0aW9uOiBBY3Rpb25EZXNjcmlwdG9yPFQ+LCBwOiBQYXJhbXMsIHFwOiBQYXJhbXMpIHtcbiAgICAgICAgY29uc3QgaXRlbUlkID0gcFsnaXRlbUlkJ107XG4gICAgICAgIGNvbnN0IGFjdGlvbkRhdGE6IEFjdGlvbkRhdGEgPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gcCkge1xuICAgICAgICAgICAgaWYgKGtleSA9PT0gJ2l0ZW1JZCcpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFjdGlvbkRhdGFba2V5XSA9IHBba2V5XTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBxcCkge1xuICAgICAgICAgICAgYWN0aW9uRGF0YVtrZXldID0gcFtrZXldO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGluc3RhbmNlID0gdGhpcy5hY3Rpb25FeGVjdXRvci5hY3RpdmF0ZUFjdGlvbihcbiAgICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICAgIG5ldyBBY3Rpb25QYXJhbWV0ZXJzPFQ+KGl0ZW1JZClcbiAgICAgICAgICAgICAgICAud2l0aEFjdGlvbkRhdGEoYWN0aW9uRGF0YSlcbiAgICAgICAgICAgICAgICAud2l0aFZpZXdDb250YWluZXIodGhpcy52aWV3Q29udGFpbmVyU2VydmljZSA/PyB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgLndpdGhTb3VyY2VDb21wb25lbnQodGhpcylcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5hY3RpdmVBY3Rpb25JbnN0YW5jZSA9IGluc3RhbmNlO1xuXG4gICAgICAgIGlmIChpbnN0YW5jZS5hY3RpdmF0aW9uRGlhbG9nUmVmKSB7XG4gICAgICAgICAgICB0aGlzLmRpYWxvZ0Nsb3NlU3Vic2NyaXB0aW9uID0gaW5zdGFuY2UuYWN0aXZhdGlvbkRpYWxvZ1JlZi5vbkNsb3NlLnN1YnNjcmliZShlID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhY3Rpb25FdiA9IGUgYXMgVCB8IG51bGwgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgaWYgKGluc3RhbmNlLnN0YXRlID09PSBBY3Rpb25JbnN0YW5jZVN0YXRlRW51bS5GaW5pc2hTdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy52aWV3Q29udGFpbmVyU2VydmljZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBWaWV3IGNvbnRhaW5lciBzZXJ2aWNlIGNvdWxkIG5vdCBiZSBmb3VuZCwgdGFibGUgcmVsb2FkIHdpbGwgbm90IGJlIHRyaWdnZXJlZC5gKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdDb250YWluZXJTZXJ2aWNlPy50cmlnZ2VyVGFibGVSZWxvYWQoYWN0aW9uRXYpOyAvLyByZWxvYWQgb25seSBpZiBubyBlcnJvciBpbiBhY3Rpb24gYW5kXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMudW50cmlnZ2VyQWN0aW9uKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdW50cmlnZ2VyQWN0aW9uKCkge1xuICAgICAgICBpZiAodGhpcy5kaWFsb2dDbG9zZVN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dDbG9zZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dDbG9zZVN1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFjdGlvbkV4ZWN1dG9yLmRlYWN0aXZhdGVPblJvdXRlVHJpZ2dlcmVkQWN0aW9uKHRoaXMuYWN0aXZlQWN0aW9uSW5zdGFuY2UhKTtcbiAgICAgICAgdGhpcy5hY3RpdmVBY3Rpb25JbnN0YW5jZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaW5kQWN0aXZlQWN0aW9uKHBhcmFtczogUGFyYW1zKTogQWN0aW9uRGVzY3JpcHRvcjxUPiB8IG51bGwge1xuICAgICAgICBjb25zdCB1cmxTZWdtZW50cyA9IHRoaXMucm91dGUuc25hcHNob3QudXJsO1xuICAgICAgICBmb3IgKGNvbnN0IGFjdGlvbiBvZiB0aGlzLmFjdGlvbnMpIHtcbiAgICAgICAgICAgIGxldCBhY3Rpb25VcmwgPSBhY3Rpb24ucm91dGVVcmwgPz8gJyc7XG4gICAgICAgICAgICAvLyBUT0RPOiBkb250IHN0cmlwICcvJywgYnV0IHVzZSBpdCBhY2NvcmRpbmdseSB3aXRoIEFuZ3VsYXIncyByb3V0ZXIgcGF0dGVybnMgKC8sIC4vLCAuLi8pXG4gICAgICAgICAgICBpZiAoYWN0aW9uVXJsLnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgICAgICAgICAgIGFjdGlvblVybCA9IGFjdGlvblVybC5zdWJzdHJpbmcoMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBhY3Rpb25VcmxTZWdtZW50cyA9IGFjdGlvblVybC5zcGxpdCgnLycpO1xuICAgICAgICAgICAgaWYgKGFjdGlvblVybFNlZ21lbnRzLmxlbmd0aCAhPT0gdXJsU2VnbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgaXNNYXRjaCA9IHRydWU7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFjdGlvblVybFNlZ21lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGFjdGlvblVybFNlZ21lbnRzW2ldLnN0YXJ0c1dpdGgoJzonKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJhbU5hbWUgPSBhY3Rpb25VcmxTZWdtZW50c1tpXS5zdWJzdHJpbmcoMSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghcGFyYW1zW3BhcmFtTmFtZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzTWF0Y2ggPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhY3Rpb25VcmxTZWdtZW50c1tpXSAhPT0gdXJsU2VnbWVudHNbaV0ucGF0aCkge1xuICAgICAgICAgICAgICAgICAgICBpc01hdGNoID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc01hdGNoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjdGlvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG59XG4iLCI8cC1jb25maXJtRGlhbG9nIFtrZXldPVwiJ2FjdGlvblJvdXRlXycgKyBjbXBJZFwiIFtiYXNlWkluZGV4XT1cIjUwXCIgYXBwZW5kVG89XCJib2R5XCI+PC9wLWNvbmZpcm1EaWFsb2c+XG4iXX0=