@mediusinc/mng-commons 0.10.3-rc.2 → 0.11.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 (323) hide show
  1. package/esm2020/lib/api/models/builders/query-param.builder.mjs +58 -58
  2. package/esm2020/lib/api/models/filter-match-type.model.mjs +24 -24
  3. package/esm2020/lib/api/models/filter-param.model.mjs +32 -32
  4. package/esm2020/lib/api/models/index.mjs +8 -8
  5. package/esm2020/lib/api/models/mappers.mjs +12 -12
  6. package/esm2020/lib/api/models/query-mode.model.mjs +17 -17
  7. package/esm2020/lib/api/models/query-param.model.mjs +67 -67
  8. package/esm2020/lib/api/models/query-result.model.mjs +17 -17
  9. package/esm2020/lib/api/models/serialization.model.mjs +1 -1
  10. package/esm2020/lib/api/services/api.abstract.service.mjs +55 -55
  11. package/esm2020/lib/api/services/crud-api.abstract.service.mjs +67 -67
  12. package/esm2020/lib/api/services/get-all-api.abstract.service.mjs +22 -22
  13. package/esm2020/lib/api/services/index.mjs +3 -3
  14. package/esm2020/lib/api/utils/index.mjs +2 -2
  15. package/esm2020/lib/api/utils/medius-rest.util.mjs +151 -151
  16. package/esm2020/lib/api/utils/object-serializer.util.mjs +243 -243
  17. package/esm2020/lib/components/action/action.component.mjs +199 -199
  18. package/esm2020/lib/components/action/editor/action-editor.component.mjs +247 -247
  19. package/esm2020/lib/components/action/index.mjs +3 -3
  20. package/esm2020/lib/components/action/models/action-confirmation-service.model.mjs +1 -1
  21. package/esm2020/lib/components/action/models/action-execution.model.mjs +235 -235
  22. package/esm2020/lib/components/action/models/index.mjs +2 -2
  23. package/esm2020/lib/components/action/route/action-route.component.mjs +124 -124
  24. package/esm2020/lib/components/form/autocomplete/autocomplete.component.mjs +277 -277
  25. package/esm2020/lib/components/form/dropdown/dropdown.component.mjs +168 -168
  26. package/esm2020/lib/components/form/editor/form-editor.component.mjs +212 -212
  27. package/esm2020/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +48 -48
  28. package/esm2020/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +43 -43
  29. package/esm2020/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +25 -25
  30. package/esm2020/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.mjs +101 -101
  31. package/esm2020/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.mjs +22 -22
  32. package/esm2020/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +179 -179
  33. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +173 -173
  34. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +149 -149
  35. package/esm2020/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +17 -17
  36. package/esm2020/lib/components/form/formly/fields/index.mjs +9 -9
  37. package/esm2020/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +14 -14
  38. package/esm2020/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.mjs +14 -14
  39. package/esm2020/lib/components/form/formly/wrappers/index.mjs +2 -2
  40. package/esm2020/lib/components/form/index.mjs +3 -3
  41. package/esm2020/lib/components/form/models/form-editor.event.mjs +33 -33
  42. package/esm2020/lib/components/form/models/index.mjs +1 -1
  43. package/esm2020/lib/components/layout/breadcrumb.component.mjs +16 -16
  44. package/esm2020/lib/components/layout/footer.component.mjs +16 -16
  45. package/esm2020/lib/components/layout/index.mjs +7 -7
  46. package/esm2020/lib/components/layout/main-layout.component.mjs +51 -51
  47. package/esm2020/lib/components/layout/menu-item.component.mjs +238 -238
  48. package/esm2020/lib/components/layout/menu.component.mjs +20 -20
  49. package/esm2020/lib/components/layout/services/index.mjs +1 -1
  50. package/esm2020/lib/components/layout/services/main-layout.component.service.mjs +192 -192
  51. package/esm2020/lib/components/layout/topbar.component.mjs +57 -57
  52. package/esm2020/lib/components/layout/version.component.mjs +57 -57
  53. package/esm2020/lib/components/tableview/index.mjs +6 -6
  54. package/esm2020/lib/components/tableview/models/index.mjs +1 -1
  55. package/esm2020/lib/components/tableview/models/table.event.mjs +15 -15
  56. package/esm2020/lib/components/tableview/route/tableview-route.abstract.component.mjs +57 -57
  57. package/esm2020/lib/components/tableview/route/tableview-route.component.mjs +60 -60
  58. package/esm2020/lib/components/tableview/table/column-filter/column-filter.component.mjs +101 -101
  59. package/esm2020/lib/components/tableview/table/column-value/column-value.component.mjs +70 -70
  60. package/esm2020/lib/components/tableview/table/table.component.mjs +497 -497
  61. package/esm2020/lib/components/tableview/tableview.component.mjs +91 -91
  62. package/esm2020/lib/config/formly.config.mjs +181 -181
  63. package/esm2020/lib/config/index.mjs +1 -1
  64. package/esm2020/lib/config/models/index.mjs +3 -2
  65. package/esm2020/lib/config/models/mng-config.model.mjs +1 -1
  66. package/esm2020/lib/config/models/mng-formly-config-model.mjs +2 -0
  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 +587 -587
  74. package/esm2020/lib/descriptors/column.descriptor.mjs +264 -264
  75. package/esm2020/lib/descriptors/editor.descriptor.mjs +146 -146
  76. package/esm2020/lib/descriptors/field-validation.descriptor.mjs +20 -20
  77. package/esm2020/lib/descriptors/field.descriptor.mjs +819 -819
  78. package/esm2020/lib/descriptors/filter.descriptor.mjs +288 -288
  79. package/esm2020/lib/descriptors/index.mjs +9 -9
  80. package/esm2020/lib/descriptors/interfaces/field-config.interface.mjs +1 -1
  81. package/esm2020/lib/descriptors/interfaces/index.mjs +2 -2
  82. package/esm2020/lib/descriptors/interfaces/lookup-descriptor.interface.mjs +1 -1
  83. package/esm2020/lib/descriptors/model.descriptor.mjs +33 -33
  84. package/esm2020/lib/descriptors/table.descriptor.mjs +197 -197
  85. package/esm2020/lib/descriptors/tableview.descriptor.mjs +134 -134
  86. package/esm2020/lib/descriptors/types/action.type.mjs +52 -52
  87. package/esm2020/lib/descriptors/types/column.type.mjs +10 -10
  88. package/esm2020/lib/descriptors/types/editor.type.mjs +7 -7
  89. package/esm2020/lib/descriptors/types/field.type.mjs +52 -52
  90. package/esm2020/lib/descriptors/types/filter.type.mjs +30 -30
  91. package/esm2020/lib/descriptors/types/index.mjs +6 -6
  92. package/esm2020/lib/descriptors/types/table.type.mjs +16 -16
  93. package/esm2020/lib/directives/component.directive.mjs +43 -43
  94. package/esm2020/lib/directives/index.mjs +2 -2
  95. package/esm2020/lib/directives/template.directive.mjs +27 -27
  96. package/esm2020/lib/mng-commons.module.mjs +441 -441
  97. package/esm2020/lib/models/column-value.model.mjs +1 -1
  98. package/esm2020/lib/models/enum.model.mjs +1 -1
  99. package/esm2020/lib/models/error.model.mjs +1 -1
  100. package/esm2020/lib/models/formly-field.model.mjs +2 -0
  101. package/esm2020/lib/models/index.mjs +9 -8
  102. package/esm2020/lib/models/menu.model.mjs +1 -1
  103. package/esm2020/lib/models/user.model.mjs +1 -1
  104. package/esm2020/lib/models/version.model.mjs +1 -1
  105. package/esm2020/lib/models/view-container.model.mjs +1 -1
  106. package/esm2020/lib/pipes/boolean.pipe.mjs +26 -26
  107. package/esm2020/lib/pipes/enum.pipe.mjs +24 -24
  108. package/esm2020/lib/pipes/i18n-property.pipe.mjs +17 -17
  109. package/esm2020/lib/pipes/index.mjs +5 -5
  110. package/esm2020/lib/pipes/json-path.pipe.mjs +79 -79
  111. package/esm2020/lib/pipes/link-formatter.pipe.mjs +38 -38
  112. package/esm2020/lib/router/index.mjs +2 -2
  113. package/esm2020/lib/router/models/index.mjs +1 -1
  114. package/esm2020/lib/router/models/router.model.mjs +1 -1
  115. package/esm2020/lib/router/route-builder.mjs +425 -425
  116. package/esm2020/lib/router/tableview-route-builder.mjs +159 -159
  117. package/esm2020/lib/security/authorization.guard.mjs +25 -25
  118. package/esm2020/lib/security/authorization.service.mjs +46 -46
  119. package/esm2020/lib/security/authorization.util.mjs +15 -15
  120. package/esm2020/lib/security/index.mjs +3 -3
  121. package/esm2020/lib/security/model/authorization.type.mjs +7 -7
  122. package/esm2020/lib/security/model/index.mjs +3 -3
  123. package/esm2020/lib/security/model/permission-service.interface.mjs +1 -1
  124. package/esm2020/lib/security/model/permissions.model.mjs +94 -94
  125. package/esm2020/lib/services/action-executor.service.mjs +535 -535
  126. package/esm2020/lib/services/commons.service.mjs +342 -342
  127. package/esm2020/lib/services/configuration.service.mjs +110 -110
  128. package/esm2020/lib/services/error-mapper.service.mjs +13 -13
  129. package/esm2020/lib/services/index.mjs +6 -6
  130. package/esm2020/lib/services/internal/commons-init.provider.mjs +3 -3
  131. package/esm2020/lib/services/internal/commons-init.service.mjs +43 -43
  132. package/esm2020/lib/services/internal/index.mjs +2 -2
  133. package/esm2020/lib/services/navigation.service.mjs +47 -47
  134. package/esm2020/lib/services/providers/config-service.provider.mjs +29 -29
  135. package/esm2020/lib/services/providers/formly-config.provider.mjs +30 -30
  136. package/esm2020/lib/services/providers/index.mjs +2 -2
  137. package/esm2020/lib/services/tokens/browser-storage.token.mjs +5 -5
  138. package/esm2020/lib/services/tokens/commons-init.token.mjs +2 -2
  139. package/esm2020/lib/services/tokens/default-setting.token.mjs +2 -2
  140. package/esm2020/lib/services/tokens/index.mjs +4 -4
  141. package/esm2020/lib/services/tokens/module-config.token.mjs +2 -2
  142. package/esm2020/lib/services/version.service.mjs +38 -38
  143. package/esm2020/lib/services/view-container.component.service.mjs +34 -34
  144. package/esm2020/lib/types/index.mjs +2 -2
  145. package/esm2020/lib/types/type.decorator.mjs +12 -12
  146. package/esm2020/lib/types/type.model.mjs +1 -1
  147. package/esm2020/lib/utils/action-data-provider.util.mjs +144 -144
  148. package/esm2020/lib/utils/editor-formly.util.mjs +251 -243
  149. package/esm2020/lib/utils/enum.util.mjs +81 -81
  150. package/esm2020/lib/utils/i18n.util.mjs +232 -232
  151. package/esm2020/lib/utils/index.mjs +7 -7
  152. package/esm2020/lib/utils/model.util.mjs +59 -59
  153. package/esm2020/lib/utils/notification.util.mjs +45 -45
  154. package/esm2020/lib/utils/route.util.mjs +23 -23
  155. package/esm2020/lib/utils/styles.util.mjs +40 -40
  156. package/esm2020/lib/utils/type.util.mjs +76 -76
  157. package/esm2020/mediusinc-mng-commons.mjs +4 -4
  158. package/esm2020/public-api.mjs +51 -51
  159. package/fesm2015/mediusinc-mng-commons.mjs +10636 -10632
  160. package/fesm2015/mediusinc-mng-commons.mjs.map +1 -1
  161. package/fesm2020/mediusinc-mng-commons.mjs +10489 -10481
  162. package/fesm2020/mediusinc-mng-commons.mjs.map +1 -1
  163. package/lib/api/models/builders/query-param.builder.d.ts +13 -13
  164. package/lib/api/models/filter-match-type.model.d.ts +23 -23
  165. package/lib/api/models/filter-param.model.d.ts +23 -23
  166. package/lib/api/models/index.d.ts +8 -8
  167. package/lib/api/models/mappers.d.ts +6 -6
  168. package/lib/api/models/query-mode.model.d.ts +16 -16
  169. package/lib/api/models/query-param.model.d.ts +31 -31
  170. package/lib/api/models/query-result.model.d.ts +23 -23
  171. package/lib/api/models/serialization.model.d.ts +8 -8
  172. package/lib/api/services/api.abstract.service.d.ts +24 -24
  173. package/lib/api/services/crud-api.abstract.service.d.ts +22 -22
  174. package/lib/api/services/get-all-api.abstract.service.d.ts +14 -14
  175. package/lib/api/services/index.d.ts +3 -3
  176. package/lib/api/utils/index.d.ts +2 -2
  177. package/lib/api/utils/medius-rest.util.d.ts +15 -15
  178. package/lib/api/utils/object-serializer.util.d.ts +33 -33
  179. package/lib/components/action/action.component.d.ts +75 -75
  180. package/lib/components/action/editor/action-editor.component.d.ts +64 -64
  181. package/lib/components/action/index.d.ts +3 -3
  182. package/lib/components/action/models/action-confirmation-service.model.d.ts +6 -6
  183. package/lib/components/action/models/action-execution.model.d.ts +129 -129
  184. package/lib/components/action/models/index.d.ts +2 -2
  185. package/lib/components/action/route/action-route.component.d.ts +31 -31
  186. package/lib/components/form/autocomplete/autocomplete.component.d.ts +56 -56
  187. package/lib/components/form/dropdown/dropdown.component.d.ts +47 -47
  188. package/lib/components/form/editor/form-editor.component.d.ts +45 -45
  189. package/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.d.ts +15 -15
  190. package/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.d.ts +14 -14
  191. package/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.d.ts +13 -13
  192. package/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.d.ts +23 -23
  193. package/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.d.ts +10 -10
  194. package/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.d.ts +45 -45
  195. package/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.d.ts +23 -23
  196. package/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.d.ts +38 -38
  197. package/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.d.ts +6 -6
  198. package/lib/components/form/formly/fields/index.d.ts +9 -9
  199. package/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.d.ts +6 -6
  200. package/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.d.ts +6 -6
  201. package/lib/components/form/formly/wrappers/index.d.ts +2 -2
  202. package/lib/components/form/index.d.ts +3 -3
  203. package/lib/components/form/models/form-editor.event.d.ts +37 -37
  204. package/lib/components/form/models/index.d.ts +1 -1
  205. package/lib/components/layout/breadcrumb.component.d.ts +8 -8
  206. package/lib/components/layout/footer.component.d.ts +9 -9
  207. package/lib/components/layout/index.d.ts +7 -7
  208. package/lib/components/layout/main-layout.component.d.ts +20 -20
  209. package/lib/components/layout/menu-item.component.d.ts +44 -44
  210. package/lib/components/layout/menu.component.d.ts +10 -10
  211. package/lib/components/layout/services/index.d.ts +1 -1
  212. package/lib/components/layout/services/main-layout.component.service.d.ts +65 -65
  213. package/lib/components/layout/topbar.component.d.ts +24 -24
  214. package/lib/components/layout/version.component.d.ts +19 -19
  215. package/lib/components/tableview/index.d.ts +6 -6
  216. package/lib/components/tableview/models/index.d.ts +1 -1
  217. package/lib/components/tableview/models/table.event.d.ts +17 -17
  218. package/lib/components/tableview/route/tableview-route.abstract.component.d.ts +20 -20
  219. package/lib/components/tableview/route/tableview-route.component.d.ts +23 -23
  220. package/lib/components/tableview/table/column-filter/column-filter.component.d.ts +32 -32
  221. package/lib/components/tableview/table/column-value/column-value.component.d.ts +29 -29
  222. package/lib/components/tableview/table/table.component.d.ts +108 -108
  223. package/lib/components/tableview/tableview.component.d.ts +41 -41
  224. package/lib/config/formly.config.d.ts +16 -15
  225. package/lib/config/index.d.ts +1 -1
  226. package/lib/config/models/index.d.ts +2 -1
  227. package/lib/config/models/mng-config.model.d.ts +36 -36
  228. package/lib/config/models/mng-formly-config-model.d.ts +17 -0
  229. package/lib/data-providers/base.data-provider.d.ts +14 -14
  230. package/lib/data-providers/editor.data-provider.d.ts +25 -25
  231. package/lib/data-providers/index.d.ts +5 -5
  232. package/lib/data-providers/lookup.data-provider.d.ts +14 -14
  233. package/lib/data-providers/table.data-provider.d.ts +14 -14
  234. package/lib/data-providers/tableview.data-provider.d.ts +15 -15
  235. package/lib/descriptors/action.descriptor.d.ts +234 -234
  236. package/lib/descriptors/column.descriptor.d.ts +82 -82
  237. package/lib/descriptors/editor.descriptor.d.ts +37 -37
  238. package/lib/descriptors/field-validation.descriptor.d.ts +18 -18
  239. package/lib/descriptors/field.descriptor.d.ts +300 -294
  240. package/lib/descriptors/filter.descriptor.d.ts +106 -106
  241. package/lib/descriptors/index.d.ts +9 -9
  242. package/lib/descriptors/interfaces/field-config.interface.d.ts +9 -9
  243. package/lib/descriptors/interfaces/index.d.ts +2 -2
  244. package/lib/descriptors/interfaces/lookup-descriptor.interface.d.ts +17 -17
  245. package/lib/descriptors/model.descriptor.d.ts +15 -15
  246. package/lib/descriptors/table.descriptor.d.ts +66 -66
  247. package/lib/descriptors/tableview.descriptor.d.ts +42 -42
  248. package/lib/descriptors/types/action.type.d.ts +45 -45
  249. package/lib/descriptors/types/column.type.d.ts +9 -9
  250. package/lib/descriptors/types/editor.type.d.ts +6 -6
  251. package/lib/descriptors/types/field.type.d.ts +44 -44
  252. package/lib/descriptors/types/filter.type.d.ts +27 -27
  253. package/lib/descriptors/types/index.d.ts +6 -6
  254. package/lib/descriptors/types/table.type.d.ts +13 -13
  255. package/lib/directives/component.directive.d.ts +16 -16
  256. package/lib/directives/index.d.ts +2 -2
  257. package/lib/directives/template.directive.d.ts +13 -13
  258. package/lib/mng-commons.module.d.ts +87 -87
  259. package/lib/models/column-value.model.d.ts +4 -4
  260. package/lib/models/enum.model.d.ts +6 -6
  261. package/lib/models/error.model.d.ts +14 -14
  262. package/lib/models/formly-field.model.d.ts +16 -0
  263. package/lib/models/index.d.ts +8 -7
  264. package/lib/models/menu.model.d.ts +27 -27
  265. package/lib/models/user.model.d.ts +8 -8
  266. package/lib/models/version.model.d.ts +18 -18
  267. package/lib/models/view-container.model.d.ts +6 -6
  268. package/lib/pipes/boolean.pipe.d.ts +7 -7
  269. package/lib/pipes/enum.pipe.d.ts +8 -8
  270. package/lib/pipes/i18n-property.pipe.d.ts +8 -8
  271. package/lib/pipes/index.d.ts +5 -5
  272. package/lib/pipes/json-path.pipe.d.ts +13 -13
  273. package/lib/pipes/link-formatter.pipe.d.ts +11 -11
  274. package/lib/router/index.d.ts +2 -2
  275. package/lib/router/models/index.d.ts +1 -1
  276. package/lib/router/models/router.model.d.ts +27 -27
  277. package/lib/router/route-builder.d.ts +98 -98
  278. package/lib/router/tableview-route-builder.d.ts +34 -34
  279. package/lib/security/authorization.guard.d.ts +11 -11
  280. package/lib/security/authorization.service.d.ts +19 -19
  281. package/lib/security/authorization.util.d.ts +5 -5
  282. package/lib/security/index.d.ts +3 -3
  283. package/lib/security/model/authorization.type.d.ts +6 -6
  284. package/lib/security/model/index.d.ts +3 -3
  285. package/lib/security/model/permission-service.interface.d.ts +6 -6
  286. package/lib/security/model/permissions.model.d.ts +44 -44
  287. package/lib/services/action-executor.service.d.ts +149 -149
  288. package/lib/services/commons.service.d.ts +78 -78
  289. package/lib/services/configuration.service.d.ts +36 -36
  290. package/lib/services/error-mapper.service.d.ts +7 -7
  291. package/lib/services/index.d.ts +6 -6
  292. package/lib/services/internal/commons-init.provider.d.ts +3 -3
  293. package/lib/services/internal/commons-init.service.d.ts +16 -16
  294. package/lib/services/internal/index.d.ts +2 -2
  295. package/lib/services/navigation.service.d.ts +14 -14
  296. package/lib/services/providers/config-service.provider.d.ts +6 -6
  297. package/lib/services/providers/formly-config.provider.d.ts +4 -4
  298. package/lib/services/providers/index.d.ts +2 -2
  299. package/lib/services/tokens/browser-storage.token.d.ts +2 -2
  300. package/lib/services/tokens/commons-init.token.d.ts +3 -3
  301. package/lib/services/tokens/default-setting.token.d.ts +2 -2
  302. package/lib/services/tokens/index.d.ts +4 -4
  303. package/lib/services/tokens/module-config.token.d.ts +3 -3
  304. package/lib/services/version.service.d.ts +13 -13
  305. package/lib/services/view-container.component.service.d.ts +22 -22
  306. package/lib/types/index.d.ts +2 -2
  307. package/lib/types/type.decorator.d.ts +4 -4
  308. package/lib/types/type.model.d.ts +23 -23
  309. package/lib/utils/action-data-provider.util.d.ts +20 -20
  310. package/lib/utils/editor-formly.util.d.ts +11 -11
  311. package/lib/utils/enum.util.d.ts +50 -50
  312. package/lib/utils/i18n.util.d.ts +56 -56
  313. package/lib/utils/index.d.ts +7 -7
  314. package/lib/utils/model.util.d.ts +8 -8
  315. package/lib/utils/notification.util.d.ts +11 -11
  316. package/lib/utils/route.util.d.ts +4 -4
  317. package/lib/utils/styles.util.d.ts +14 -14
  318. package/lib/utils/type.util.d.ts +36 -36
  319. package/mediusinc-mng-commons.d.ts +5 -5
  320. package/package.json +2 -2
  321. package/public-api.d.ts +32 -32
  322. package/version-info.json +7 -7
  323. package/mediusinc-mng-commons-0.10.3-rc.2.tgz +0 -0
@@ -1,248 +1,248 @@
1
- import { ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, Input, Optional, Output, ViewChild } from '@angular/core';
2
- import { ReplaySubject, of, throwError } from 'rxjs';
3
- import { catchError, finalize, first } from 'rxjs/operators';
4
- import { ActionEditorSubmitDescriptor } from '../../../descriptors';
5
- import { ActionEditorSubmitTypeEnum, ActionPositionEnum } from '../../../descriptors/types';
6
- import { MngTemplateDirective } from '../../../directives';
7
- import { I18nUtils, NotificationUtil } from '../../../utils';
8
- import { MngFormEditorComponent } from '../../form';
9
- import { ActionParameters } from '../models';
10
- import * as i0 from "@angular/core";
11
- import * as i1 from "@ngx-translate/core";
12
- import * as i2 from "../../../services";
13
- import * as i3 from "primeng/dynamicdialog";
14
- import * as i4 from "primeng/toolbar";
15
- import * as i5 from "../action.component";
16
- import * as i6 from "primeng/progressspinner";
17
- import * as i7 from "../../form/editor/form-editor.component";
18
- import * as i8 from "@angular/common";
19
- import * as i9 from "primeng/api";
20
- export class MngActionEditorComponent {
21
- constructor(injector, translate, actionExecutor, mngCommonsService, navigationService, dialogRef, dialogConfig, viewContainerService) {
22
- this.injector = injector;
23
- this.translate = translate;
24
- this.actionExecutor = actionExecutor;
25
- this.mngCommonsService = mngCommonsService;
26
- this.navigationService = navigationService;
27
- this.dialogRef = dialogRef;
28
- this.dialogConfig = dialogConfig;
29
- this.viewContainerService = viewContainerService;
30
- this.actionRunEventEmitter = new EventEmitter();
31
- this.actionCancelEventEmitter = new EventEmitter();
32
- this.cmpId = Math.random().toString(36).substring(2);
33
- this.isDialog = true;
34
- this.isSaveButton = true;
35
- this.toolbarLeftActions = [];
36
- this.toolbarRightActions = [];
37
- this.footerLeftActions = [];
38
- this.footerRightActions = [];
39
- this.loadingSubject = new ReplaySubject(1);
40
- this.loading$ = this.loadingSubject.asObservable();
41
- this.submitLoadingSubject = new ReplaySubject(1);
42
- this.submitLoading$ = this.submitLoadingSubject.asObservable();
43
- this.isFinished = false;
44
- this.sourceComponent = this;
45
- this.subscriptions = [];
46
- }
47
- ngOnInit() {
48
- if (this.dialogConfig?.data) {
49
- if (this.dialogConfig.data.actionInstance) {
50
- this.instance = this.dialogConfig.data.actionInstance;
51
- }
52
- if (this.instance) {
53
- this.action = this.instance.action;
54
- }
55
- this.itemId = this.instance?.activationParameters?.itemId;
56
- this.item = this.instance?.activationParameters?.item;
57
- this.actionData = this.instance?.activationParameters?.actionData;
58
- this.viewContainer = this.instance?.activationParameters?.viewContainer;
59
- this.sourceComponent = this.instance?.activationParameters?.sourceComponent;
60
- if (!this.dataProvider && this.viewContainer) {
61
- const dataProvider = this.viewContainer.getDataProvider();
62
- if (dataProvider && typeof dataProvider['fetch'] === 'function') {
63
- this.dataProvider = dataProvider;
64
- }
65
- }
66
- if (this.dialogConfig.data.previousActionInstance) {
67
- this.previousActionInstance = this.dialogConfig.data.previousActionInstance;
68
- }
69
- }
70
- else {
71
- this.isDialog = false;
72
- this.viewContainer = this.viewContainerInit ?? this.viewContainerService ?? undefined;
73
- }
74
- this.isSaveButton = typeof this.action.submitFunction === 'function';
75
- this.setTitle();
76
- for (const action of this.action.editorActions) {
77
- if (action instanceof ActionEditorSubmitDescriptor) {
78
- if (typeof action.icon === 'undefined') {
79
- action.withIcon(action.submitType === ActionEditorSubmitTypeEnum.Submit ? 'pi pi-check' : 'pi pi-times');
80
- }
81
- if (typeof action.title === 'undefined') {
82
- action.withTitle(action.submitType === ActionEditorSubmitTypeEnum.Submit ? 'general.save' : this.isDialog ? 'general.close' : 'general.cancel');
83
- }
84
- // assign run operations
85
- action.withRunNotificationSuccess(undefined, undefined, false);
86
- if (action.submitType === ActionEditorSubmitTypeEnum.Submit) {
87
- action.withRunFunction(() => {
88
- this.triggerSubmit();
89
- return of(undefined);
90
- });
91
- }
92
- else {
93
- action.withRunFunction(() => {
94
- this.cancel();
95
- return of(undefined);
96
- });
97
- }
98
- }
99
- switch (action.position) {
100
- case ActionPositionEnum.ToolbarLeft:
101
- this.toolbarLeftActions.push(action);
102
- break;
103
- case ActionPositionEnum.ToolbarRight:
104
- this.toolbarRightActions.push(action);
105
- break;
106
- case ActionPositionEnum.FooterLeft:
107
- this.footerLeftActions.push(action);
108
- break;
109
- case ActionPositionEnum.FooterRight:
110
- this.footerRightActions.push(action);
111
- break;
112
- }
113
- }
114
- this.toolbarRightActions = this.toolbarRightActions.reverse();
115
- this.footerRightActions = this.footerRightActions.reverse();
116
- this.loadItemWithDataProvider();
117
- }
118
- ngOnDestroy() {
119
- this.subscriptions.forEach(s => s.unsubscribe());
120
- }
121
- onSubmit(event) {
122
- if (this.isFinished) {
123
- return;
124
- }
125
- if (event.success) {
126
- if (typeof this.action.submitFunction !== 'function') {
127
- return;
128
- }
129
- this.submitLoadingSubject.next(true);
130
- const context = this.actionExecutor.runEditorSave(this.action, new ActionParameters(this.itemId, event.formItem).withActionData(this.actionData).withViewContainer(this.viewContainer).withSourceComponent(this.sourceComponent), this.dataProvider, this.instance, this.previousActionInstance);
131
- this.instance = context.instance;
132
- context.execution$.subscribe({
133
- next: res => {
134
- this.isFinished = true;
135
- this.submitLoadingSubject.next(false);
136
- this.actionRunEventEmitter.next(res);
137
- this.deactivateAction(res);
138
- },
139
- error: () => {
140
- this.submitLoadingSubject.next(false);
141
- }
142
- });
143
- }
144
- }
145
- cancel() {
146
- this.actionCancelEventEmitter.next(undefined);
147
- this.deactivateAction(undefined, true);
148
- }
149
- triggerSubmit() {
150
- this.editorComponent.submit();
151
- }
152
- loadItemWithDataProvider() {
153
- if (typeof this.action.fetchFunction !== 'function') {
154
- return;
155
- }
156
- this.loadingSubject.next(true);
157
- const context = this.actionExecutor.runEditorFetch(this.action, new ActionParameters(this.itemId, this.item).withActionData(this.actionData).withViewContainer(this.viewContainer).withSourceComponent(this.sourceComponent), this.dataProvider, this.instance, this.previousActionInstance);
158
- this.instance = context.instance;
159
- context.execution$
160
- .pipe(first(), catchError(err => {
161
- const actionError = this.actionExecutor.toMngActionError(err);
162
- if (this.action.hasRunNotificationError) {
163
- NotificationUtil.actionNotificationError(this.translate, this.action, actionError, 'fetch', this.viewContainer, this.item);
164
- }
165
- return throwError(() => actionError);
166
- }), finalize(() => this.loadingSubject.next(false)))
167
- .subscribe(res => {
168
- this.item = res ?? undefined;
169
- if (this.action.hasFetchNotificationSuccess) {
170
- NotificationUtil.actionNotificationSuccess(this.translate, this.action, 'fetch', this.action.fetchNotificationSuccessTitle, this.action.fetchNotificationSuccessMessage, this.viewContainer, this.item);
171
- }
172
- this.setTitle();
173
- });
174
- }
175
- setTitle() {
176
- if (this.action.editorTitle === null) {
177
- this.title = undefined;
178
- if (this.dialogConfig) {
179
- requestAnimationFrame(() => {
180
- this.dialogConfig.header = undefined;
181
- });
182
- }
183
- return;
184
- }
185
- const subscription = I18nUtils.Action.getEditorTitleAsync(this.translate, this.action, this.item).subscribe(t => {
186
- this.title = t ?? undefined;
187
- if (this.dialogConfig) {
188
- requestAnimationFrame(() => {
189
- this.dialogConfig.header = t ?? undefined;
190
- this.mngCommonsService.setPageTitle(t ?? undefined);
191
- });
192
- }
193
- });
194
- this.subscriptions.push(subscription);
195
- }
196
- deactivateAction(item, cancel = false) {
197
- if (this.isDialog) {
198
- // if cancel, then force close the dialog
199
- if (cancel) {
200
- this.dialogRef?.close(item);
201
- }
202
- }
203
- else {
204
- this.actionExecutor.deactivateAction(this.instance);
205
- }
206
- }
207
- }
208
- MngActionEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngActionEditorComponent, deps: [{ token: i0.Injector }, { token: i1.TranslateService }, { token: i2.MngActionExecutorService }, { token: i2.MngCommonsService }, { token: i2.MngNavigationService }, { token: i3.DynamicDialogRef, optional: true }, { token: i3.DynamicDialogConfig, optional: true }, { token: i2.MngViewContainerComponentService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
209
- MngActionEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: MngActionEditorComponent, selector: "mng-action-editor", inputs: { action: "action", itemId: "itemId", item: "item", actionData: "actionData", dataProvider: "dataProvider", viewContainerInit: ["viewContainer", "viewContainerInit"] }, outputs: { actionRunEventEmitter: "actionSubmit", actionCancelEventEmitter: "actionCancel" }, queries: [{ propertyName: "templates", predicate: MngTemplateDirective }], viewQueries: [{ propertyName: "submitButtonElementRef", first: true, predicate: ["submitButton"], descendants: true }, { propertyName: "editorComponent", first: true, predicate: MngFormEditorComponent, descendants: true }], ngImport: i0, template: "<h5 *ngIf=\"!isDialog && title\">{{ title }}</h5>\n<div class=\"h-full flex flex-column\">\n <div class=\"flex-grow-1\" *ngIf=\"toolbarLeftActions.length > 0 || toolbarRightActions.length > 0\">\n <p-toolbar styleClass=\"mng-action-editor-toolbar\">\n <ng-template pTemplate=\"left\">\n <mng-action *ngFor=\"let action of toolbarLeftActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </ng-template>\n <ng-template pTemplate=\"right\">\n <mng-action *ngFor=\"let action of toolbarRightActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </ng-template>\n </p-toolbar>\n </div>\n\n <div class=\"flex-grow-1\">\n <div class=\"text-center\" *ngIf=\"loading$ | async\">\n <p-progressSpinner [style]=\"{width: '3rem', height: '3rem'}\" strokeWidth=\"3\"></p-progressSpinner>\n </div>\n <mng-form-editor *ngIf=\"action.editorDescriptor && (loading$ | async) === false\" [descriptor]=\"action.editorDescriptor\" [item]=\"item\" (formSubmit)=\"onSubmit($event)\">\n </mng-form-editor>\n </div>\n\n <div class=\"flex flex-row justify-content-between\">\n <div>\n <mng-action *ngFor=\"let action of footerLeftActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </div>\n <div>\n <mng-action *ngFor=\"let action of footerRightActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </div>\n </div>\n</div>\n", components: [{ type: i4.Toolbar, selector: "p-toolbar", inputs: ["style", "styleClass"] }, { type: i5.MngActionComponent, selector: "mng-action", inputs: ["action", "item", "itemId", "actionData", "queryParam", "dataProvider", "disabled", "loading", "viewContainer"], outputs: ["finish"] }, { type: i6.ProgressSpinner, selector: "p-progressSpinner", inputs: ["style", "styleClass", "strokeWidth", "fill", "animationDuration"] }, { type: i7.MngFormEditorComponent, selector: "mng-form-editor", inputs: ["descriptor", "submitLoading", "item", "isSubmitButtonVisible", "isFormDisabled"], outputs: ["formSubmit"] }], directives: [{ type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i8.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
210
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngActionEditorComponent, decorators: [{
211
- type: Component,
212
- args: [{ selector: 'mng-action-editor', changeDetection: ChangeDetectionStrategy.OnPush, template: "<h5 *ngIf=\"!isDialog && title\">{{ title }}</h5>\n<div class=\"h-full flex flex-column\">\n <div class=\"flex-grow-1\" *ngIf=\"toolbarLeftActions.length > 0 || toolbarRightActions.length > 0\">\n <p-toolbar styleClass=\"mng-action-editor-toolbar\">\n <ng-template pTemplate=\"left\">\n <mng-action *ngFor=\"let action of toolbarLeftActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </ng-template>\n <ng-template pTemplate=\"right\">\n <mng-action *ngFor=\"let action of toolbarRightActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </ng-template>\n </p-toolbar>\n </div>\n\n <div class=\"flex-grow-1\">\n <div class=\"text-center\" *ngIf=\"loading$ | async\">\n <p-progressSpinner [style]=\"{width: '3rem', height: '3rem'}\" strokeWidth=\"3\"></p-progressSpinner>\n </div>\n <mng-form-editor *ngIf=\"action.editorDescriptor && (loading$ | async) === false\" [descriptor]=\"action.editorDescriptor\" [item]=\"item\" (formSubmit)=\"onSubmit($event)\">\n </mng-form-editor>\n </div>\n\n <div class=\"flex flex-row justify-content-between\">\n <div>\n <mng-action *ngFor=\"let action of footerLeftActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </div>\n <div>\n <mng-action *ngFor=\"let action of footerRightActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </div>\n </div>\n</div>\n" }]
213
- }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.TranslateService }, { type: i2.MngActionExecutorService }, { type: i2.MngCommonsService }, { type: i2.MngNavigationService }, { type: i3.DynamicDialogRef, decorators: [{
214
- type: Optional
215
- }] }, { type: i3.DynamicDialogConfig, decorators: [{
216
- type: Optional
217
- }] }, { type: i2.MngViewContainerComponentService, decorators: [{
218
- type: Optional
219
- }] }]; }, propDecorators: { action: [{
220
- type: Input
221
- }], itemId: [{
222
- type: Input
223
- }], item: [{
224
- type: Input
225
- }], actionData: [{
226
- type: Input
227
- }], dataProvider: [{
228
- type: Input
229
- }], viewContainerInit: [{
230
- type: Input,
231
- args: ['viewContainer']
232
- }], actionRunEventEmitter: [{
233
- type: Output,
234
- args: ['actionSubmit']
235
- }], actionCancelEventEmitter: [{
236
- type: Output,
237
- args: ['actionCancel']
238
- }], templates: [{
239
- type: ContentChildren,
240
- args: [MngTemplateDirective]
241
- }], submitButtonElementRef: [{
242
- type: ViewChild,
243
- args: ['submitButton']
244
- }], editorComponent: [{
245
- type: ViewChild,
246
- args: [MngFormEditorComponent]
247
- }] } });
1
+ import { ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, Input, Optional, Output, ViewChild } from '@angular/core';
2
+ import { ReplaySubject, of, throwError } from 'rxjs';
3
+ import { catchError, finalize, first } from 'rxjs/operators';
4
+ import { ActionEditorSubmitDescriptor } from '../../../descriptors';
5
+ import { ActionEditorSubmitTypeEnum, ActionPositionEnum } from '../../../descriptors/types';
6
+ import { MngTemplateDirective } from '../../../directives';
7
+ import { I18nUtils, NotificationUtil } from '../../../utils';
8
+ import { MngFormEditorComponent } from '../../form';
9
+ import { ActionParameters } from '../models';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "@ngx-translate/core";
12
+ import * as i2 from "../../../services";
13
+ import * as i3 from "primeng/dynamicdialog";
14
+ import * as i4 from "primeng/toolbar";
15
+ import * as i5 from "../action.component";
16
+ import * as i6 from "primeng/progressspinner";
17
+ import * as i7 from "../../form/editor/form-editor.component";
18
+ import * as i8 from "@angular/common";
19
+ import * as i9 from "primeng/api";
20
+ export class MngActionEditorComponent {
21
+ constructor(injector, translate, actionExecutor, mngCommonsService, navigationService, dialogRef, dialogConfig, viewContainerService) {
22
+ this.injector = injector;
23
+ this.translate = translate;
24
+ this.actionExecutor = actionExecutor;
25
+ this.mngCommonsService = mngCommonsService;
26
+ this.navigationService = navigationService;
27
+ this.dialogRef = dialogRef;
28
+ this.dialogConfig = dialogConfig;
29
+ this.viewContainerService = viewContainerService;
30
+ this.actionRunEventEmitter = new EventEmitter();
31
+ this.actionCancelEventEmitter = new EventEmitter();
32
+ this.cmpId = Math.random().toString(36).substring(2);
33
+ this.isDialog = true;
34
+ this.isSaveButton = true;
35
+ this.toolbarLeftActions = [];
36
+ this.toolbarRightActions = [];
37
+ this.footerLeftActions = [];
38
+ this.footerRightActions = [];
39
+ this.loadingSubject = new ReplaySubject(1);
40
+ this.loading$ = this.loadingSubject.asObservable();
41
+ this.submitLoadingSubject = new ReplaySubject(1);
42
+ this.submitLoading$ = this.submitLoadingSubject.asObservable();
43
+ this.isFinished = false;
44
+ this.sourceComponent = this;
45
+ this.subscriptions = [];
46
+ }
47
+ ngOnInit() {
48
+ if (this.dialogConfig?.data) {
49
+ if (this.dialogConfig.data.actionInstance) {
50
+ this.instance = this.dialogConfig.data.actionInstance;
51
+ }
52
+ if (this.instance) {
53
+ this.action = this.instance.action;
54
+ }
55
+ this.itemId = this.instance?.activationParameters?.itemId;
56
+ this.item = this.instance?.activationParameters?.item;
57
+ this.actionData = this.instance?.activationParameters?.actionData;
58
+ this.viewContainer = this.instance?.activationParameters?.viewContainer;
59
+ this.sourceComponent = this.instance?.activationParameters?.sourceComponent;
60
+ if (!this.dataProvider && this.viewContainer) {
61
+ const dataProvider = this.viewContainer.getDataProvider();
62
+ if (dataProvider && typeof dataProvider['fetch'] === 'function') {
63
+ this.dataProvider = dataProvider;
64
+ }
65
+ }
66
+ if (this.dialogConfig.data.previousActionInstance) {
67
+ this.previousActionInstance = this.dialogConfig.data.previousActionInstance;
68
+ }
69
+ }
70
+ else {
71
+ this.isDialog = false;
72
+ this.viewContainer = this.viewContainerInit ?? this.viewContainerService ?? undefined;
73
+ }
74
+ this.isSaveButton = typeof this.action.submitFunction === 'function';
75
+ this.setTitle();
76
+ for (const action of this.action.editorActions) {
77
+ if (action instanceof ActionEditorSubmitDescriptor) {
78
+ if (typeof action.icon === 'undefined') {
79
+ action.withIcon(action.submitType === ActionEditorSubmitTypeEnum.Submit ? 'pi pi-check' : 'pi pi-times');
80
+ }
81
+ if (typeof action.title === 'undefined') {
82
+ action.withTitle(action.submitType === ActionEditorSubmitTypeEnum.Submit ? 'general.save' : this.isDialog ? 'general.close' : 'general.cancel');
83
+ }
84
+ // assign run operations
85
+ action.withRunNotificationSuccess(undefined, undefined, false);
86
+ if (action.submitType === ActionEditorSubmitTypeEnum.Submit) {
87
+ action.withRunFunction(() => {
88
+ this.triggerSubmit();
89
+ return of(undefined);
90
+ });
91
+ }
92
+ else {
93
+ action.withRunFunction(() => {
94
+ this.cancel();
95
+ return of(undefined);
96
+ });
97
+ }
98
+ }
99
+ switch (action.position) {
100
+ case ActionPositionEnum.ToolbarLeft:
101
+ this.toolbarLeftActions.push(action);
102
+ break;
103
+ case ActionPositionEnum.ToolbarRight:
104
+ this.toolbarRightActions.push(action);
105
+ break;
106
+ case ActionPositionEnum.FooterLeft:
107
+ this.footerLeftActions.push(action);
108
+ break;
109
+ case ActionPositionEnum.FooterRight:
110
+ this.footerRightActions.push(action);
111
+ break;
112
+ }
113
+ }
114
+ this.toolbarRightActions = this.toolbarRightActions.reverse();
115
+ this.footerRightActions = this.footerRightActions.reverse();
116
+ this.loadItemWithDataProvider();
117
+ }
118
+ ngOnDestroy() {
119
+ this.subscriptions.forEach(s => s.unsubscribe());
120
+ }
121
+ onSubmit(event) {
122
+ if (this.isFinished) {
123
+ return;
124
+ }
125
+ if (event.success) {
126
+ if (typeof this.action.submitFunction !== 'function') {
127
+ return;
128
+ }
129
+ this.submitLoadingSubject.next(true);
130
+ const context = this.actionExecutor.runEditorSave(this.action, new ActionParameters(this.itemId, event.formItem).withActionData(this.actionData).withViewContainer(this.viewContainer).withSourceComponent(this.sourceComponent), this.dataProvider, this.instance, this.previousActionInstance);
131
+ this.instance = context.instance;
132
+ context.execution$.subscribe({
133
+ next: res => {
134
+ this.isFinished = true;
135
+ this.submitLoadingSubject.next(false);
136
+ this.actionRunEventEmitter.next(res);
137
+ this.deactivateAction(res);
138
+ },
139
+ error: () => {
140
+ this.submitLoadingSubject.next(false);
141
+ }
142
+ });
143
+ }
144
+ }
145
+ cancel() {
146
+ this.actionCancelEventEmitter.next(undefined);
147
+ this.deactivateAction(undefined, true);
148
+ }
149
+ triggerSubmit() {
150
+ this.editorComponent.submit();
151
+ }
152
+ loadItemWithDataProvider() {
153
+ if (typeof this.action.fetchFunction !== 'function') {
154
+ return;
155
+ }
156
+ this.loadingSubject.next(true);
157
+ const context = this.actionExecutor.runEditorFetch(this.action, new ActionParameters(this.itemId, this.item).withActionData(this.actionData).withViewContainer(this.viewContainer).withSourceComponent(this.sourceComponent), this.dataProvider, this.instance, this.previousActionInstance);
158
+ this.instance = context.instance;
159
+ context.execution$
160
+ .pipe(first(), catchError(err => {
161
+ const actionError = this.actionExecutor.toMngActionError(err);
162
+ if (this.action.hasRunNotificationError) {
163
+ NotificationUtil.actionNotificationError(this.translate, this.action, actionError, 'fetch', this.viewContainer, this.item);
164
+ }
165
+ return throwError(() => actionError);
166
+ }), finalize(() => this.loadingSubject.next(false)))
167
+ .subscribe(res => {
168
+ this.item = res ?? undefined;
169
+ if (this.action.hasFetchNotificationSuccess) {
170
+ NotificationUtil.actionNotificationSuccess(this.translate, this.action, 'fetch', this.action.fetchNotificationSuccessTitle, this.action.fetchNotificationSuccessMessage, this.viewContainer, this.item);
171
+ }
172
+ this.setTitle();
173
+ });
174
+ }
175
+ setTitle() {
176
+ if (this.action.editorTitle === null) {
177
+ this.title = undefined;
178
+ if (this.dialogConfig) {
179
+ requestAnimationFrame(() => {
180
+ this.dialogConfig.header = undefined;
181
+ });
182
+ }
183
+ return;
184
+ }
185
+ const subscription = I18nUtils.Action.getEditorTitleAsync(this.translate, this.action, this.item).subscribe(t => {
186
+ this.title = t ?? undefined;
187
+ if (this.dialogConfig) {
188
+ requestAnimationFrame(() => {
189
+ this.dialogConfig.header = t ?? undefined;
190
+ this.mngCommonsService.setPageTitle(t ?? undefined);
191
+ });
192
+ }
193
+ });
194
+ this.subscriptions.push(subscription);
195
+ }
196
+ deactivateAction(item, cancel = false) {
197
+ if (this.isDialog) {
198
+ // if cancel, then force close the dialog
199
+ if (cancel) {
200
+ this.dialogRef?.close(item);
201
+ }
202
+ }
203
+ else {
204
+ this.actionExecutor.deactivateAction(this.instance);
205
+ }
206
+ }
207
+ }
208
+ MngActionEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngActionEditorComponent, deps: [{ token: i0.Injector }, { token: i1.TranslateService }, { token: i2.MngActionExecutorService }, { token: i2.MngCommonsService }, { token: i2.MngNavigationService }, { token: i3.DynamicDialogRef, optional: true }, { token: i3.DynamicDialogConfig, optional: true }, { token: i2.MngViewContainerComponentService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
209
+ MngActionEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: MngActionEditorComponent, selector: "mng-action-editor", inputs: { action: "action", itemId: "itemId", item: "item", actionData: "actionData", dataProvider: "dataProvider", viewContainerInit: ["viewContainer", "viewContainerInit"] }, outputs: { actionRunEventEmitter: "actionSubmit", actionCancelEventEmitter: "actionCancel" }, queries: [{ propertyName: "templates", predicate: MngTemplateDirective }], viewQueries: [{ propertyName: "submitButtonElementRef", first: true, predicate: ["submitButton"], descendants: true }, { propertyName: "editorComponent", first: true, predicate: MngFormEditorComponent, descendants: true }], ngImport: i0, template: "<h5 *ngIf=\"!isDialog && title\">{{ title }}</h5>\n<div class=\"h-full flex flex-column\">\n <div class=\"flex-grow-1\" *ngIf=\"toolbarLeftActions.length > 0 || toolbarRightActions.length > 0\">\n <p-toolbar styleClass=\"mng-action-editor-toolbar\">\n <ng-template pTemplate=\"left\">\n <mng-action *ngFor=\"let action of toolbarLeftActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </ng-template>\n <ng-template pTemplate=\"right\">\n <mng-action *ngFor=\"let action of toolbarRightActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </ng-template>\n </p-toolbar>\n </div>\n\n <div class=\"flex-grow-1\">\n <div class=\"text-center\" *ngIf=\"loading$ | async\">\n <p-progressSpinner [style]=\"{width: '3rem', height: '3rem'}\" strokeWidth=\"3\"></p-progressSpinner>\n </div>\n <mng-form-editor *ngIf=\"action.editorDescriptor && (loading$ | async) === false\" [descriptor]=\"action.editorDescriptor\" [item]=\"item\" (formSubmit)=\"onSubmit($event)\">\n </mng-form-editor>\n </div>\n\n <div class=\"flex flex-row justify-content-between\">\n <div>\n <mng-action *ngFor=\"let action of footerLeftActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </div>\n <div>\n <mng-action *ngFor=\"let action of footerRightActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </div>\n </div>\n</div>\n", components: [{ type: i4.Toolbar, selector: "p-toolbar", inputs: ["style", "styleClass"] }, { type: i5.MngActionComponent, selector: "mng-action", inputs: ["action", "item", "itemId", "actionData", "queryParam", "dataProvider", "disabled", "loading", "viewContainer"], outputs: ["finish"] }, { type: i6.ProgressSpinner, selector: "p-progressSpinner", inputs: ["style", "styleClass", "strokeWidth", "fill", "animationDuration"] }, { type: i7.MngFormEditorComponent, selector: "mng-form-editor", inputs: ["descriptor", "submitLoading", "item", "isSubmitButtonVisible", "isFormDisabled"], outputs: ["formSubmit"] }], directives: [{ type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i8.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
210
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngActionEditorComponent, decorators: [{
211
+ type: Component,
212
+ args: [{ selector: 'mng-action-editor', changeDetection: ChangeDetectionStrategy.OnPush, template: "<h5 *ngIf=\"!isDialog && title\">{{ title }}</h5>\n<div class=\"h-full flex flex-column\">\n <div class=\"flex-grow-1\" *ngIf=\"toolbarLeftActions.length > 0 || toolbarRightActions.length > 0\">\n <p-toolbar styleClass=\"mng-action-editor-toolbar\">\n <ng-template pTemplate=\"left\">\n <mng-action *ngFor=\"let action of toolbarLeftActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </ng-template>\n <ng-template pTemplate=\"right\">\n <mng-action *ngFor=\"let action of toolbarRightActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </ng-template>\n </p-toolbar>\n </div>\n\n <div class=\"flex-grow-1\">\n <div class=\"text-center\" *ngIf=\"loading$ | async\">\n <p-progressSpinner [style]=\"{width: '3rem', height: '3rem'}\" strokeWidth=\"3\"></p-progressSpinner>\n </div>\n <mng-form-editor *ngIf=\"action.editorDescriptor && (loading$ | async) === false\" [descriptor]=\"action.editorDescriptor\" [item]=\"item\" (formSubmit)=\"onSubmit($event)\">\n </mng-form-editor>\n </div>\n\n <div class=\"flex flex-row justify-content-between\">\n <div>\n <mng-action *ngFor=\"let action of footerLeftActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </div>\n <div>\n <mng-action *ngFor=\"let action of footerRightActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </div>\n </div>\n</div>\n" }]
213
+ }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.TranslateService }, { type: i2.MngActionExecutorService }, { type: i2.MngCommonsService }, { type: i2.MngNavigationService }, { type: i3.DynamicDialogRef, decorators: [{
214
+ type: Optional
215
+ }] }, { type: i3.DynamicDialogConfig, decorators: [{
216
+ type: Optional
217
+ }] }, { type: i2.MngViewContainerComponentService, decorators: [{
218
+ type: Optional
219
+ }] }]; }, propDecorators: { action: [{
220
+ type: Input
221
+ }], itemId: [{
222
+ type: Input
223
+ }], item: [{
224
+ type: Input
225
+ }], actionData: [{
226
+ type: Input
227
+ }], dataProvider: [{
228
+ type: Input
229
+ }], viewContainerInit: [{
230
+ type: Input,
231
+ args: ['viewContainer']
232
+ }], actionRunEventEmitter: [{
233
+ type: Output,
234
+ args: ['actionSubmit']
235
+ }], actionCancelEventEmitter: [{
236
+ type: Output,
237
+ args: ['actionCancel']
238
+ }], templates: [{
239
+ type: ContentChildren,
240
+ args: [MngTemplateDirective]
241
+ }], submitButtonElementRef: [{
242
+ type: ViewChild,
243
+ args: ['submitButton']
244
+ }], editorComponent: [{
245
+ type: ViewChild,
246
+ args: [MngFormEditorComponent]
247
+ }] } });
248
248
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvYWN0aW9uL2VkaXRvci9hY3Rpb24tZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9hY3Rpb24vZWRpdG9yL2FjdGlvbi1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsZUFBZSxFQUVmLFlBQVksRUFFWixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFFTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFJdkIsT0FBTyxFQUFhLGFBQWEsRUFBZ0IsRUFBRSxFQUFFLFVBQVUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUM3RSxPQUFPLEVBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUczRCxPQUFPLEVBQTJDLDRCQUE0QixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDNUcsT0FBTyxFQUFDLDBCQUEwQixFQUFFLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDMUYsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFJekQsT0FBTyxFQUFDLFNBQVMsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNELE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLFlBQVksQ0FBQztBQUVsRCxPQUFPLEVBQTZCLGdCQUFnQixFQUFDLE1BQU0sV0FBVyxDQUFDOzs7Ozs7Ozs7OztBQU92RSxNQUFNLE9BQU8sd0JBQXdCO0lBMkNqQyxZQUNZLFFBQWtCLEVBQ2xCLFNBQTJCLEVBQzNCLGNBQXdDLEVBQ3hDLGlCQUFvQyxFQUNwQyxpQkFBdUMsRUFDM0IsU0FB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REN2RHJDLHVyREE4QkE7MkZEUWEsd0JBQXdCO2tCQUxwQyxTQUFTOytCQUNJLG1CQUFtQixtQkFFWix1QkFBdUIsQ0FBQyxNQUFNOzswQkFtRDFDLFFBQVE7OzBCQUNSLFFBQVE7OzBCQUNSLFFBQVE7NENBakRHLE1BQU07c0JBQXJCLEtBQUs7Z0JBR1UsTUFBTTtzQkFBckIsS0FBSztnQkFDVSxJQUFJO3NCQUFuQixLQUFLO2dCQUNVLFVBQVU7c0JBQXpCLEtBQUs7Z0JBQ1UsWUFBWTtzQkFBM0IsS0FBSztnQkFDeUIsaUJBQWlCO3NCQUEvQyxLQUFLO3VCQUFDLGVBQWU7Z0JBRVMscUJBQXFCO3NCQUFuRCxNQUFNO3VCQUFDLGNBQWM7Z0JBQ1Msd0JBQXdCO3NCQUF0RCxNQUFNO3VCQUFDLGNBQWM7Z0JBR3dCLFNBQVM7c0JBQXRELGVBQWU7dUJBQUMsb0JBQW9CO2dCQUNILHNCQUFzQjtzQkFBdkQsU0FBUzt1QkFBQyxjQUFjO2dCQUNpQixlQUFlO3NCQUF4RCxTQUFTO3VCQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbmplY3RvcixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtEeW5hbWljRGlhbG9nQ29uZmlnLCBEeW5hbWljRGlhbG9nUmVmfSBmcm9tICdwcmltZW5nL2R5bmFtaWNkaWFsb2cnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCBTdWJzY3JpcHRpb24sIG9mLCB0aHJvd0Vycm9yfSBmcm9tICdyeGpzJztcbmltcG9ydCB7Y2F0Y2hFcnJvciwgZmluYWxpemUsIGZpcnN0fSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7SUVkaXRvckRhdGFQcm92aWRlcn0gZnJvbSAnLi4vLi4vLi4vZGF0YS1wcm92aWRlcnMnO1xuaW1wb3J0IHtBY3Rpb25EZXNjcmlwdG9yLCBBY3Rpb25FZGl0b3JEZXNjcmlwdG9yLCBBY3Rpb25FZGl0b3JTdWJtaXREZXNjcmlwdG9yfSBmcm9tICcuLi8uLi8uLi9kZXNjcmlwdG9ycyc7XG5pbXBvcnQge0FjdGlvbkVkaXRvclN1Ym1pdFR5cGVFbnVtLCBBY3Rpb25Qb3NpdGlvbkVudW19IGZyb20gJy4uLy4uLy4uL2Rlc2NyaXB0b3JzL3R5cGVzJztcbmltcG9ydCB7TW5nVGVtcGxhdGVEaXJlY3RpdmV9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHtJVmlld0NvbnRhaW5lcn0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7TW5nQWN0aW9uRXhlY3V0b3JTZXJ2aWNlLCBNbmdDb21tb25zU2VydmljZSwgTW5nTmF2aWdhdGlvblNlcnZpY2UsIE1uZ1ZpZXdDb250YWluZXJDb21wb25lbnRTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQge0lkVHlwZX0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHtJMThuVXRpbHMsIE5vdGlmaWNhdGlvblV0aWx9IGZyb20gJy4uLy4uLy4uL3V0aWxzJztcbmltcG9ydCB7TW5nRm9ybUVkaXRvckNvbXBvbmVudH0gZnJvbSAnLi4vLi4vZm9ybSc7XG5pbXBvcnQge01uZ0Zvcm1FZGl0b3JTdWJtaXRFdmVudH0gZnJvbSAnLi4vLi4vZm9ybS9tb2RlbHMnO1xuaW1wb3J0IHtBY3Rpb25EYXRhLCBBY3Rpb25JbnN0YW5jZSwgQWN0aW9uUGFyYW1ldGVyc30gZnJvbSAnLi4vbW9kZWxzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdtbmctYWN0aW9uLWVkaXRvcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FjdGlvbi1lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIE1uZ0FjdGlvbkVkaXRvckNvbXBvbmVudDxULCBTPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICAvLyBtZXRhZGF0YSBhbmQgZWRpdG9yIG1vZGUgaW5wdXRcbiAgICBASW5wdXQoKSBwdWJsaWMgYWN0aW9uITogQWN0aW9uRWRpdG9yRGVzY3JpcHRvcjxUPjtcblxuICAgIC8vIGRhdGEgc291cmNlIGlucHV0c1xuICAgIEBJbnB1dCgpIHB1YmxpYyBpdGVtSWQ/OiBJZFR5cGU7XG4gICAgQElucHV0KCkgcHVibGljIGl0ZW0/OiBUO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBhY3Rpb25EYXRhPzogQWN0aW9uRGF0YTtcbiAgICBASW5wdXQoKSBwdWJsaWMgZGF0YVByb3ZpZGVyPzogSUVkaXRvckRhdGFQcm92aWRlcjxULCBTPjtcbiAgICBASW5wdXQoJ3ZpZXdDb250YWluZXInKSBwdWJsaWMgdmlld0NvbnRhaW5lckluaXQ/OiBJVmlld0NvbnRhaW5lcjxULCBTPjtcblxuICAgIEBPdXRwdXQoJ2FjdGlvblN1Ym1pdCcpIHB1YmxpYyBhY3Rpb25SdW5FdmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPFQgfCBudWxsIHwgdW5kZWZpbmVkPigpO1xuICAgIEBPdXRwdXQoJ2FjdGlvbkNhbmNlbCcpIHB1YmxpYyBhY3Rpb25DYW5jZWxFdmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPFQgfCBudWxsIHwgdW5kZWZpbmVkPigpO1xuXG4gICAgLy8gY29udGVudCBhbmQgdmlldyBxdWVyaWVzXG4gICAgQENvbnRlbnRDaGlsZHJlbihNbmdUZW1wbGF0ZURpcmVjdGl2ZSkgcHVibGljIHRlbXBsYXRlcyE6IFF1ZXJ5TGlzdDxNbmdUZW1wbGF0ZURpcmVjdGl2ZT47XG4gICAgQFZpZXdDaGlsZCgnc3VibWl0QnV0dG9uJykgcHVibGljIHN1Ym1pdEJ1dHRvbkVsZW1lbnRSZWYhOiBFbGVtZW50UmVmO1xuICAgIEBWaWV3Q2hpbGQoTW5nRm9ybUVkaXRvckNvbXBvbmVudCkgcHVibGljIGVkaXRvckNvbXBvbmVudCE6IE1uZ0Zvcm1FZGl0b3JDb21wb25lbnQ8VD47XG5cbiAgICBwdWJsaWMgY21wSWQ6IHN0cmluZyA9IE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyKTtcbiAgICBwdWJsaWMgdGl0bGU/OiBzdHJpbmc7XG4gICAgcHVibGljIGlzRGlhbG9nID0gdHJ1ZTtcbiAgICBwdWJsaWMgaXNTYXZlQnV0dG9uID0gdHJ1ZTtcblxuICAgIC8vIGFjdGlvbnNcbiAgICBwcml2YXRlIGluc3RhbmNlPzogQWN0aW9uSW5zdGFuY2U8VCwgUz47XG4gICAgcHJpdmF0ZSBwcmV2aW91c0FjdGlvbkluc3RhbmNlPzogQWN0aW9uSW5zdGFuY2U8dW5rbm93biwgdW5rbm93bj47XG4gICAgcHVibGljIHRvb2xiYXJMZWZ0QWN0aW9uczogQWN0aW9uRGVzY3JpcHRvcjxUPltdID0gW107XG4gICAgcHVibGljIHRvb2xiYXJSaWdodEFjdGlvbnM6IEFjdGlvbkRlc2NyaXB0b3I8VD5bXSA9IFtdO1xuICAgIHB1YmxpYyBmb290ZXJMZWZ0QWN0aW9uczogQWN0aW9uRGVzY3JpcHRvcjxUPltdID0gW107XG4gICAgcHVibGljIGZvb3RlclJpZ2h0QWN0aW9uczogQWN0aW9uRGVzY3JpcHRvcjxUPltdID0gW107XG5cbiAgICBwcml2YXRlIGxvYWRpbmdTdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8Ym9vbGVhbj4oMSk7XG4gICAgcHVibGljIGxvYWRpbmckOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5sb2FkaW5nU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICBwcml2YXRlIHN1Ym1pdExvYWRpbmdTdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8Ym9vbGVhbj4oMSk7XG4gICAgcHVibGljIHN1Ym1pdExvYWRpbmckOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5zdWJtaXRMb2FkaW5nU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICBwcml2YXRlIGlzRmluaXNoZWQgPSBmYWxzZTtcblxuICAgIHB1YmxpYyB2aWV3Q29udGFpbmVyPzogSVZpZXdDb250YWluZXI8VCwgUz47XG4gICAgcHJpdmF0ZSBzb3VyY2VDb21wb25lbnQ6IGFueSA9IHRoaXM7XG5cbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IEFycmF5PFN1YnNjcmlwdGlvbj4gPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgYWN0aW9uRXhlY3V0b3I6IE1uZ0FjdGlvbkV4ZWN1dG9yU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBtbmdDb21tb25zU2VydmljZTogTW5nQ29tbW9uc1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbmF2aWdhdGlvblNlcnZpY2U6IE1uZ05hdmlnYXRpb25TZXJ2aWNlLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGRpYWxvZ1JlZjogRHluYW1pY0RpYWxvZ1JlZiB8IG51bGwsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgZGlhbG9nQ29uZmlnOiBEeW5hbWljRGlhbG9nQ29uZmlnIHwgbnVsbCxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSB2aWV3Q29udGFpbmVyU2VydmljZTogTW5nVmlld0NvbnRhaW5lckNvbXBvbmVudFNlcnZpY2U8VCwgUz4gfCBudWxsXG4gICAgKSB7fVxuXG4gICAgcHVibGljIG5nT25Jbml0KCkge1xuICAgICAgICBpZiAodGhpcy5kaWFsb2dDb25maWc/LmRhdGEpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRpYWxvZ0NvbmZpZy5kYXRhLmFjdGlvbkluc3RhbmNlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnN0YW5jZSA9IHRoaXMuZGlhbG9nQ29uZmlnLmRhdGEuYWN0aW9uSW5zdGFuY2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5pbnN0YW5jZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWN0aW9uID0gdGhpcy5pbnN0YW5jZS5hY3Rpb24gYXMgQWN0aW9uRWRpdG9yRGVzY3JpcHRvcjxUPjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuaXRlbUlkID0gdGhpcy5pbnN0YW5jZT8uYWN0aXZhdGlvblBhcmFtZXRlcnM/Lml0ZW1JZDtcbiAgICAgICAgICAgIHRoaXMuaXRlbSA9IHRoaXMuaW5zdGFuY2U/LmFjdGl2YXRpb25QYXJhbWV0ZXJzPy5pdGVtO1xuICAgICAgICAgICAgdGhpcy5hY3Rpb25EYXRhID0gdGhpcy5pbnN0YW5jZT8uYWN0aXZhdGlvblBhcmFtZXRlcnM/LmFjdGlvbkRhdGE7XG4gICAgICAgICAgICB0aGlzLnZpZXdDb250YWluZXIgPSB0aGlzLmluc3RhbmNlPy5hY3RpdmF0aW9uUGFyYW1ldGVycz8udmlld0NvbnRhaW5lciBhcyBJVmlld0NvbnRhaW5lcjxULCBTPjtcbiAgICAgICAgICAgIHRoaXMuc291cmNlQ29tcG9uZW50ID0gdGhpcy5pbnN0YW5jZT8uYWN0aXZhdGlvblBhcmFtZXRlcnM/LnNvdXJjZUNvbXBvbmVudDtcbiAgICAgICAgICAgIGlmICghdGhpcy5kYXRhUHJvdmlkZXIgJiYgdGhpcy52aWV3Q29udGFpbmVyKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGF0YVByb3ZpZGVyID0gdGhpcy52aWV3Q29udGFpbmVyLmdldERhdGFQcm92aWRlcigpO1xuICAgICAgICAgICAgICAgIGlmIChkYXRhUHJvdmlkZXIgJiYgdHlwZW9mIGRhdGFQcm92aWRlclsnZmV0Y2gnIGFzIGtleW9mIG9iamVjdF0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhUHJvdmlkZXIgPSBkYXRhUHJvdmlkZXIgYXMgSUVkaXRvckRhdGFQcm92aWRlcjxULCBTPjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5kaWFsb2dDb25maWcuZGF0YS5wcmV2aW91c0FjdGlvbkluc3RhbmNlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2aW91c0FjdGlvbkluc3RhbmNlID0gdGhpcy5kaWFsb2dDb25maWcuZGF0YS5wcmV2aW91c0FjdGlvbkluc3RhbmNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pc0RpYWxvZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyID0gdGhpcy52aWV3Q29udGFpbmVySW5pdCA/PyB0aGlzLnZpZXdDb250YWluZXJTZXJ2aWNlID8/IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaXNTYXZlQnV0dG9uID0gdHlwZW9mIHRoaXMuYWN0aW9uLnN1Ym1pdEZ1bmN0aW9uID09PSAnZnVuY3Rpb24nO1xuICAgICAgICB0aGlzLnNldFRpdGxlKCk7XG5cbiAgICAgICAgZm9yIChjb25zdCBhY3Rpb24gb2YgdGhpcy5hY3Rpb24uZWRpdG9yQWN0aW9ucykge1xuICAgICAgICAgICAgaWYgKGFjdGlvbiBpbnN0YW5jZW9mIEFjdGlvbkVkaXRvclN1Ym1pdERlc2NyaXB0b3IpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGFjdGlvbi5pY29uID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICBhY3Rpb24ud2l0aEljb24oYWN0aW9uLnN1Ym1pdFR5cGUgPT09IEFjdGlvbkVkaXRvclN1Ym1pdFR5cGVFbnVtLlN1Ym1pdCA/ICdwaSBwaS1jaGVjaycgOiAncGkgcGktdGltZXMnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBhY3Rpb24udGl0bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGFjdGlvbi53aXRoVGl0bGUoYWN0aW9uLnN1Ym1pdFR5cGUgPT09IEFjdGlvbkVkaXRvclN1Ym1pdFR5cGVFbnVtLlN1Ym1pdCA/ICdnZW5lcmFsLnNhdmUnIDogdGhpcy5pc0RpYWxvZyA/ICdnZW5lcmFsLmNsb3NlJyA6ICdnZW5lcmFsLmNhbmNlbCcpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIGFzc2lnbiBydW4gb3BlcmF0aW9uc1xuICAgICAgICAgICAgICAgIGFjdGlvbi53aXRoUnVuTm90aWZpY2F0aW9uU3VjY2Vzcyh1bmRlZmluZWQsIHVuZGVmaW5lZCwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIGlmIChhY3Rpb24uc3VibWl0VHlwZSA9PT0gQWN0aW9uRWRpdG9yU3VibWl0VHlwZUVudW0uU3VibWl0KSB7XG4gICAgICAgICAgICAgICAgICAgIGFjdGlvbi53aXRoUnVuRnVuY3Rpb24oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50cmlnZ2VyU3VibWl0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uLndpdGhSdW5GdW5jdGlvbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbmNlbCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN3aXRjaCAoYWN0aW9uLnBvc2l0aW9uKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhckxlZnQ6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9vbGJhckxlZnRBY3Rpb25zLnB1c2goYWN0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhclJpZ2h0OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvb2xiYXJSaWdodEFjdGlvbnMucHVzaChhY3Rpb24pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEFjdGlvblBvc2l0aW9uRW51bS5Gb290ZXJMZWZ0OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvb3RlckxlZnRBY3Rpb25zLnB1c2goYWN0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBBY3Rpb25Qb3NpdGlvbkVudW0uRm9vdGVyUmlnaHQ6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9vdGVyUmlnaHRBY3Rpb25zLnB1c2goYWN0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRvb2xiYXJSaWdodEFjdGlvbnMgPSB0aGlzLnRvb2xiYXJSaWdodEFjdGlvbnMucmV2ZXJzZSgpO1xuICAgICAgICB0aGlzLmZvb3RlclJpZ2h0QWN0aW9ucyA9IHRoaXMuZm9vdGVyUmlnaHRBY3Rpb25zLnJldmVyc2UoKTtcblxuICAgICAgICB0aGlzLmxvYWRJdGVtV2l0aERhdGFQcm92aWRlcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblN1Ym1pdChldmVudDogTW5nRm9ybUVkaXRvclN1Ym1pdEV2ZW50PFQ+KSB7XG4gICAgICAgIGlmICh0aGlzLmlzRmluaXNoZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQuc3VjY2Vzcykge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFjdGlvbi5zdWJtaXRGdW5jdGlvbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc3VibWl0TG9hZGluZ1N1YmplY3QubmV4dCh0cnVlKTtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmFjdGlvbkV4ZWN1dG9yLnJ1bkVkaXRvclNhdmUoXG4gICAgICAgICAgICAgICAgdGhpcy5hY3Rpb24sXG4gICAgICAgICAgICAgICAgbmV3IEFjdGlvblBhcmFtZXRlcnModGhpcy5pdGVtSWQsIGV2ZW50LmZvcm1JdGVtKS53aXRoQWN0aW9uRGF0YSh0aGlzLmFjdGlvbkRhdGEpLndpdGhWaWV3Q29udGFpbmVyKHRoaXMudmlld0NvbnRhaW5lcikud2l0aFNvdXJjZUNvbXBvbmVudCh0aGlzLnNvdXJjZUNvbXBvbmVudCksXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhUHJvdmlkZXIsXG4gICAgICAgICAgICAgICAgdGhpcy5pbnN0YW5jZSxcbiAgICAgICAgICAgICAgICB0aGlzLnByZXZpb3VzQWN0aW9uSW5zdGFuY2VcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmluc3RhbmNlID0gY29udGV4dC5pbnN0YW5jZTtcblxuICAgICAgICAgICAgY29udGV4dC5leGVjdXRpb24kLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgICAgbmV4dDogcmVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0ZpbmlzaGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWJtaXRMb2FkaW5nU3ViamVjdC5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3Rpb25SdW5FdmVudEVtaXR0ZXIubmV4dChyZXMpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlYWN0aXZhdGVBY3Rpb24ocmVzKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3VibWl0TG9hZGluZ1N1YmplY3QubmV4dChmYWxzZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgY2FuY2VsKCkge1xuICAgICAgICB0aGlzLmFjdGlvbkNhbmNlbEV2ZW50RW1pdHRlci5uZXh0KHVuZGVmaW5lZCk7XG4gICAgICAgIHRoaXMuZGVhY3RpdmF0ZUFjdGlvbih1bmRlZmluZWQsIHRydWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyB0cmlnZ2VyU3VibWl0KCkge1xuICAgICAgICB0aGlzLmVkaXRvckNvbXBvbmVudC5zdWJtaXQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGxvYWRJdGVtV2l0aERhdGFQcm92aWRlcigpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFjdGlvbi5mZXRjaEZ1bmN0aW9uICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sb2FkaW5nU3ViamVjdC5uZXh0KHRydWUpO1xuICAgICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5hY3Rpb25FeGVjdXRvci5ydW5FZGl0b3JGZXRjaChcbiAgICAgICAgICAgIHRoaXMuYWN0aW9uLFxuICAgICAgICAgICAgbmV3IEFjdGlvblBhcmFtZXRlcnModGhpcy5pdGVtSWQsIHRoaXMuaXRlbSkud2l0aEFjdGlvbkRhdGEodGhpcy5hY3Rpb25EYXRhKS53aXRoVmlld0NvbnRhaW5lcih0aGlzLnZpZXdDb250YWluZXIpLndpdGhTb3VyY2VDb21wb25lbnQodGhpcy5zb3VyY2VDb21wb25lbnQpLFxuICAgICAgICAgICAgdGhpcy5kYXRhUHJvdmlkZXIsXG4gICAgICAgICAgICB0aGlzLmluc3RhbmNlLFxuICAgICAgICAgICAgdGhpcy5wcmV2aW91c0FjdGlvbkluc3RhbmNlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuaW5zdGFuY2UgPSBjb250ZXh0Lmluc3RhbmNlO1xuXG4gICAgICAgIGNvbnRleHQuZXhlY3V0aW9uJFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKGVyciA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFjdGlvbkVycm9yID0gdGhpcy5hY3Rpb25FeGVjdXRvci50b01uZ0FjdGlvbkVycm9yKGVycik7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmFjdGlvbi5oYXNSdW5Ob3RpZmljYXRpb25FcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uVXRpbC5hY3Rpb25Ob3RpZmljYXRpb25FcnJvcih0aGlzLnRyYW5zbGF0ZSwgdGhpcy5hY3Rpb24sIGFjdGlvbkVycm9yLCAnZmV0Y2gnLCB0aGlzLnZpZXdDb250YWluZXIsIHRoaXMuaXRlbSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gYWN0aW9uRXJyb3IpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHRoaXMubG9hZGluZ1N1YmplY3QubmV4dChmYWxzZSkpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtID0gcmVzID8/IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hY3Rpb24uaGFzRmV0Y2hOb3RpZmljYXRpb25TdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvblV0aWwuYWN0aW9uTm90aWZpY2F0aW9uU3VjY2VzcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAnZmV0Y2gnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3Rpb24uZmV0Y2hOb3RpZmljYXRpb25TdWNjZXNzVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGlvbi5mZXRjaE5vdGlmaWNhdGlvblN1Y2Nlc3NNZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuc2V0VGl0bGUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0VGl0bGUoKSB7XG4gICAgICAgIGlmICh0aGlzLmFjdGlvbi5lZGl0b3JUaXRsZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy50aXRsZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGlmICh0aGlzLmRpYWxvZ0NvbmZpZykge1xuICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nQ29uZmlnIS5oZWFkZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gSTE4blV0aWxzLkFjdGlvbi5nZXRFZGl0b3JUaXRsZUFzeW5jKHRoaXMudHJhbnNsYXRlLCB0aGlzLmFjdGlvbiwgdGhpcy5pdGVtKS5zdWJzY3JpYmUodCA9PiB7XG4gICAgICAgICAgICB0aGlzLnRpdGxlID0gdCA/PyB1bmRlZmluZWQ7XG4gICAgICAgICAgICBpZiAodGhpcy5kaWFsb2dDb25maWcpIHtcbiAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ0NvbmZpZyEuaGVhZGVyID0gdCA/PyB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW5nQ29tbW9uc1NlcnZpY2Uuc2V0UGFnZVRpdGxlKHQgPz8gdW5kZWZpbmVkKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHN1YnNjcmlwdGlvbik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZWFjdGl2YXRlQWN0aW9uKGl0ZW0/OiBUIHwgbnVsbCwgY2FuY2VsID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNEaWFsb2cpIHtcbiAgICAgICAgICAgIC8vIGlmIGNhbmNlbCwgdGhlbiBmb3JjZSBjbG9zZSB0aGUgZGlhbG9nXG4gICAgICAgICAgICBpZiAoY2FuY2VsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dSZWY/LmNsb3NlKGl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hY3Rpb25FeGVjdXRvci5kZWFjdGl2YXRlQWN0aW9uKHRoaXMuaW5zdGFuY2UhKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxoNSAqbmdJZj1cIiFpc0RpYWxvZyAmJiB0aXRsZVwiPnt7IHRpdGxlIH19PC9oNT5cbjxkaXYgY2xhc3M9XCJoLWZ1bGwgZmxleCBmbGV4LWNvbHVtblwiPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3ctMVwiICpuZ0lmPVwidG9vbGJhckxlZnRBY3Rpb25zLmxlbmd0aCA+IDAgfHwgdG9vbGJhclJpZ2h0QWN0aW9ucy5sZW5ndGggPiAwXCI+XG4gICAgICAgIDxwLXRvb2xiYXIgc3R5bGVDbGFzcz1cIm1uZy1hY3Rpb24tZWRpdG9yLXRvb2xiYXJcIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJsZWZ0XCI+XG4gICAgICAgICAgICAgICAgPG1uZy1hY3Rpb24gKm5nRm9yPVwibGV0IGFjdGlvbiBvZiB0b29sYmFyTGVmdEFjdGlvbnNcIiBbYWN0aW9uXT1cImFjdGlvblwiIFtkaXNhYmxlZF09XCJzdWJtaXRMb2FkaW5nJFwiIFt2aWV3Q29udGFpbmVyXT1cInZpZXdDb250YWluZXJcIj48L21uZy1hY3Rpb24+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cInJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgPG1uZy1hY3Rpb24gKm5nRm9yPVwibGV0IGFjdGlvbiBvZiB0b29sYmFyUmlnaHRBY3Rpb25zXCIgW2FjdGlvbl09XCJhY3Rpb25cIiBbZGlzYWJsZWRdPVwic3VibWl0TG9hZGluZyRcIiBbdmlld0NvbnRhaW5lcl09XCJ2aWV3Q29udGFpbmVyXCI+PC9tbmctYWN0aW9uPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9wLXRvb2xiYXI+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93LTFcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyXCIgKm5nSWY9XCJsb2FkaW5nJCB8IGFzeW5jXCI+XG4gICAgICAgICAgICA8cC1wcm9ncmVzc1NwaW5uZXIgW3N0eWxlXT1cInt3aWR0aDogJzNyZW0nLCBoZWlnaHQ6ICczcmVtJ31cIiBzdHJva2VXaWR0aD1cIjNcIj48L3AtcHJvZ3Jlc3NTcGlubmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG1uZy1mb3JtLWVkaXRvciAqbmdJZj1cImFjdGlvbi5lZGl0b3JEZXNjcmlwdG9yICYmIChsb2FkaW5nJCB8IGFzeW5jKSA9PT0gZmFsc2VcIiBbZGVzY3JpcHRvcl09XCJhY3Rpb24uZWRpdG9yRGVzY3JpcHRvclwiIFtpdGVtXT1cIml0ZW1cIiAoZm9ybVN1Ym1pdCk9XCJvblN1Ym1pdCgkZXZlbnQpXCI+XG4gICAgICAgIDwvbW5nLWZvcm0tZWRpdG9yPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxtbmctYWN0aW9uICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgZm9vdGVyTGVmdEFjdGlvbnNcIiBbYWN0aW9uXT1cImFjdGlvblwiIFtkaXNhYmxlZF09XCJzdWJtaXRMb2FkaW5nJFwiIFt2aWV3Q29udGFpbmVyXT1cInZpZXdDb250YWluZXJcIj48L21uZy1hY3Rpb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPG1uZy1hY3Rpb24gKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBmb290ZXJSaWdodEFjdGlvbnNcIiBbYWN0aW9uXT1cImFjdGlvblwiIFtkaXNhYmxlZF09XCJzdWJtaXRMb2FkaW5nJFwiIFt2aWV3Q29udGFpbmVyXT1cInZpZXdDb250YWluZXJcIj48L21uZy1hY3Rpb24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -1,4 +1,4 @@
1
- export * from './action.component';
2
- export * from './route/action-route.component';
3
- export * from './editor/action-editor.component';
1
+ export * from './action.component';
2
+ export * from './route/action-route.component';
3
+ export * from './editor/action-editor.component';
4
4
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvYWN0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLGtDQUFrQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcm91dGUvYWN0aW9uLXJvdXRlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2VkaXRvci9hY3Rpb24tZWRpdG9yLmNvbXBvbmVudCc7XG4iXX0=
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWNvbmZpcm1hdGlvbi1zZXJ2aWNlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2FjdGlvbi9tb2RlbHMvYWN0aW9uLWNvbmZpcm1hdGlvbi1zZXJ2aWNlLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbmZpcm1hdGlvblNlcnZpY2V9IGZyb20gJ3ByaW1lbmcvYXBpJztcblxuaW1wb3J0IHtBY3Rpb25EZXNjcmlwdG9yfSBmcm9tICcuLi8uLi8uLi9kZXNjcmlwdG9ycyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUFjdGlvbkNvbmZpcm1hdGlvblNlcnZpY2Uge1xuICAgIGdldENvbmZpcm1hdGlvblNlcnZpY2UoKTogQ29uZmlybWF0aW9uU2VydmljZTtcbiAgICBnZXRDb25maXJtYXRpb25TZXJ2aWNlSW5zdGFuY2VLZXkoYWN0aW9uOiBBY3Rpb25EZXNjcmlwdG9yPGFueT4pOiBzdHJpbmc7XG59XG4iXX0=