@mediusinc/mng-commons 1.4.0 → 2.0.0-rc.0-08f92864

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 (416) 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 +23 -23
  9. package/esm2020/lib/api/models/serialization.model.mjs +1 -1
  10. package/esm2020/lib/api/services/api.abstract.service.mjs +57 -57
  11. package/esm2020/lib/api/services/crud-api.abstract.service.mjs +74 -74
  12. package/esm2020/lib/api/services/get-all-api.abstract.service.mjs +29 -29
  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 +213 -213
  16. package/esm2020/lib/api/utils/object-serializer.util.mjs +247 -247
  17. package/esm2020/lib/components/action/action.component.mjs +281 -275
  18. package/esm2020/lib/components/action/editor/action-editor.component.mjs +303 -303
  19. package/esm2020/lib/components/action/index.mjs +4 -4
  20. package/esm2020/lib/components/action/localization/data-language-dropdown.component.mjs +45 -45
  21. package/esm2020/lib/components/action/models/action-component.model.mjs +2 -2
  22. package/esm2020/lib/components/action/models/action-confirmation-service.model.mjs +2 -2
  23. package/esm2020/lib/components/action/models/action-execution.model.mjs +249 -249
  24. package/esm2020/lib/components/action/models/index.mjs +4 -4
  25. package/esm2020/lib/components/action/models/tableview-action-default-categories.model.mjs +10 -10
  26. package/esm2020/lib/components/action/route/action-route.component.mjs +131 -130
  27. package/esm2020/lib/components/form/autocomplete/autocomplete.component.mjs +301 -300
  28. package/esm2020/lib/components/form/date-range/date-range.component.mjs +110 -109
  29. package/esm2020/lib/components/form/dropdown/dropdown.component.mjs +196 -194
  30. package/esm2020/lib/components/form/editor/form-editor.component.mjs +246 -243
  31. package/esm2020/lib/components/form/formly/fields/formly-field-action/formly-field-action.component.mjs +43 -39
  32. package/esm2020/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +51 -50
  33. package/esm2020/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +46 -45
  34. package/esm2020/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +28 -26
  35. package/esm2020/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.mjs +180 -150
  36. package/esm2020/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.mjs +24 -24
  37. package/esm2020/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +191 -186
  38. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +198 -197
  39. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +158 -154
  40. package/esm2020/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +19 -17
  41. package/esm2020/lib/components/form/formly/fields/index.mjs +10 -10
  42. package/esm2020/lib/components/form/formly/formly.config.mjs +211 -211
  43. package/esm2020/lib/components/form/formly/index.mjs +1 -1
  44. package/esm2020/lib/components/form/formly/models/formly-config.model.mjs +1 -1
  45. package/esm2020/lib/components/form/formly/models/formly-field.model.mjs +2 -2
  46. package/esm2020/lib/components/form/formly/models/index.mjs +2 -2
  47. package/esm2020/lib/components/form/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.mjs +16 -15
  48. package/esm2020/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +84 -83
  49. package/esm2020/lib/components/form/formly/wrappers/index.mjs +2 -2
  50. package/esm2020/lib/components/form/index.mjs +4 -4
  51. package/esm2020/lib/components/form/models/field-action-context.model.mjs +2 -2
  52. package/esm2020/lib/components/form/models/form-editor.event.mjs +33 -33
  53. package/esm2020/lib/components/form/models/form-editor.interface.mjs +1 -1
  54. package/esm2020/lib/components/form/models/index.mjs +2 -2
  55. package/esm2020/lib/components/layout/breadcrumb.component.mjs +18 -17
  56. package/esm2020/lib/components/layout/footer.component.mjs +18 -17
  57. package/esm2020/lib/components/layout/index.mjs +7 -7
  58. package/esm2020/lib/components/layout/main-layout.component.mjs +52 -52
  59. package/esm2020/lib/components/layout/menu-item.component.mjs +292 -272
  60. package/esm2020/lib/components/layout/menu.component.mjs +32 -21
  61. package/esm2020/lib/components/layout/services/index.mjs +1 -1
  62. package/esm2020/lib/components/layout/services/main-layout.component.service.mjs +194 -194
  63. package/esm2020/lib/components/layout/topbar.component.mjs +67 -65
  64. package/esm2020/lib/components/layout/version.component.mjs +58 -58
  65. package/esm2020/lib/components/tableview/index.mjs +6 -6
  66. package/esm2020/lib/components/tableview/models/index.mjs +1 -1
  67. package/esm2020/lib/components/tableview/models/table.event.mjs +16 -16
  68. package/esm2020/lib/components/tableview/route/tableview-route.abstract.component.mjs +150 -147
  69. package/esm2020/lib/components/tableview/route/tableview-route.component.mjs +52 -53
  70. package/esm2020/lib/components/tableview/table/column-filter/column-filter.component.mjs +121 -120
  71. package/esm2020/lib/components/tableview/table/column-value/column-value.component.mjs +101 -84
  72. package/esm2020/lib/components/tableview/table/table.component.mjs +611 -595
  73. package/esm2020/lib/components/tableview/tableview.component.mjs +115 -113
  74. package/esm2020/lib/data-providers/base.data-provider.mjs +16 -16
  75. package/esm2020/lib/data-providers/editor.data-provider.mjs +36 -36
  76. package/esm2020/lib/data-providers/index.mjs +6 -6
  77. package/esm2020/lib/data-providers/lookup.data-provider.mjs +15 -15
  78. package/esm2020/lib/data-providers/table.data-provider.mjs +37 -37
  79. package/esm2020/lib/data-providers/tableview-crud.data-provider.mjs +23 -23
  80. package/esm2020/lib/data-providers/tableview.data-provider.mjs +44 -44
  81. package/esm2020/lib/descriptors/action/action-button.descriptor.mjs +60 -0
  82. package/esm2020/lib/descriptors/action/action-confirmation.descriptor.mjs +77 -77
  83. package/esm2020/lib/descriptors/action/action.descriptor.mjs +579 -0
  84. package/esm2020/lib/descriptors/action/index.mjs +4 -0
  85. package/esm2020/lib/descriptors/editor/editor.descriptor.mjs +291 -0
  86. package/esm2020/lib/descriptors/editor/field-validation.descriptor.mjs +25 -0
  87. package/esm2020/lib/descriptors/editor/field.descriptor.mjs +990 -0
  88. package/esm2020/lib/descriptors/editor/index.mjs +4 -0
  89. package/esm2020/lib/descriptors/filter/filter.descriptor.mjs +370 -0
  90. package/esm2020/lib/descriptors/filter/index.mjs +2 -0
  91. package/esm2020/lib/descriptors/index.mjs +2 -12
  92. package/esm2020/lib/descriptors/interfaces/field-config.interface.mjs +1 -1
  93. package/esm2020/lib/descriptors/interfaces/index.mjs +2 -2
  94. package/esm2020/lib/descriptors/interfaces/lookup-descriptor.interface.mjs +1 -1
  95. package/esm2020/lib/descriptors/model.descriptor.mjs +44 -44
  96. package/esm2020/lib/descriptors/table/column.descriptor.mjs +406 -0
  97. package/esm2020/lib/descriptors/table/index.mjs +3 -0
  98. package/esm2020/lib/descriptors/table/table.descriptor.mjs +497 -0
  99. package/esm2020/lib/descriptors/tableview/index.mjs +2 -0
  100. package/esm2020/lib/descriptors/tableview/tableview.descriptor.mjs +346 -0
  101. package/esm2020/lib/descriptors/types/action.type.mjs +25 -25
  102. package/esm2020/lib/descriptors/types/column.type.mjs +20 -20
  103. package/esm2020/lib/descriptors/types/editor.type.mjs +7 -7
  104. package/esm2020/lib/descriptors/types/field.type.mjs +55 -55
  105. package/esm2020/lib/descriptors/types/filter.type.mjs +30 -30
  106. package/esm2020/lib/descriptors/types/index.mjs +6 -6
  107. package/esm2020/lib/descriptors/types/table.type.mjs +26 -26
  108. package/esm2020/lib/directives/component.directive.mjs +45 -44
  109. package/esm2020/lib/directives/index.mjs +2 -2
  110. package/esm2020/lib/directives/template.directive.mjs +29 -28
  111. package/esm2020/lib/mng-commons.module.mjs +445 -485
  112. package/esm2020/lib/models/column-value.model.mjs +2 -2
  113. package/esm2020/lib/models/config.model.mjs +2 -2
  114. package/esm2020/lib/models/enum.model.mjs +1 -1
  115. package/esm2020/lib/models/error.model.mjs +1 -1
  116. package/esm2020/lib/models/index.mjs +9 -9
  117. package/esm2020/lib/models/menu.model.mjs +2 -2
  118. package/esm2020/lib/models/tableview-attr.model.mjs +1 -1
  119. package/esm2020/lib/models/user.model.mjs +1 -1
  120. package/esm2020/lib/models/version.model.mjs +1 -1
  121. package/esm2020/lib/models/view-container.model.mjs +2 -2
  122. package/esm2020/lib/pipes/boolean.pipe.mjs +28 -27
  123. package/esm2020/lib/pipes/class-map.pipe.mjs +23 -22
  124. package/esm2020/lib/pipes/enum.pipe.mjs +26 -25
  125. package/esm2020/lib/pipes/enumerate-async.pipe.mjs +39 -38
  126. package/esm2020/lib/pipes/enumerate.pipe.mjs +56 -55
  127. package/esm2020/lib/pipes/getter.pipe.mjs +21 -20
  128. package/esm2020/lib/pipes/i18n-property.pipe.mjs +19 -18
  129. package/esm2020/lib/pipes/index.mjs +11 -11
  130. package/esm2020/lib/pipes/json-path.pipe.mjs +80 -79
  131. package/esm2020/lib/pipes/locale-default-row-class.pipe.mjs +27 -26
  132. package/esm2020/lib/pipes/models/internal/enumrate-pipe-i18n.model.mjs +1 -1
  133. package/esm2020/lib/pipes/models/internal/index.mjs +1 -1
  134. package/esm2020/lib/pipes/parametrize.pipe.mjs +86 -85
  135. package/esm2020/lib/pipes/template.pipe.mjs +25 -24
  136. package/esm2020/lib/provide-commons.mjs +73 -0
  137. package/esm2020/lib/router/index.mjs +4 -3
  138. package/esm2020/lib/router/models/index.mjs +1 -1
  139. package/esm2020/lib/router/models/router.model.mjs +2 -2
  140. package/esm2020/lib/router/route-builder.mjs +313 -426
  141. package/esm2020/lib/router/routes-builder.mjs +67 -0
  142. package/esm2020/lib/router/tableview-route-builder.mjs +187 -187
  143. package/esm2020/lib/security/authorization.guard.mjs +29 -26
  144. package/esm2020/lib/security/authorization.service.mjs +50 -47
  145. package/esm2020/lib/security/authorization.util.mjs +15 -15
  146. package/esm2020/lib/security/index.mjs +3 -3
  147. package/esm2020/lib/security/model/authorization.type.mjs +7 -7
  148. package/esm2020/lib/security/model/index.mjs +3 -3
  149. package/esm2020/lib/security/model/permission-service.interface.mjs +1 -1
  150. package/esm2020/lib/security/model/permissions.model.mjs +86 -86
  151. package/esm2020/lib/services/action-executor.service.mjs +558 -555
  152. package/esm2020/lib/services/commons.service.mjs +464 -461
  153. package/esm2020/lib/services/configuration.service.mjs +149 -142
  154. package/esm2020/lib/services/error-mapper.service.mjs +13 -13
  155. package/esm2020/lib/services/index.mjs +6 -6
  156. package/esm2020/lib/services/internal/commons-init.provider.mjs +3 -3
  157. package/esm2020/lib/services/internal/commons-init.service.mjs +50 -44
  158. package/esm2020/lib/services/internal/index.mjs +2 -2
  159. package/esm2020/lib/services/navigation.service.mjs +51 -48
  160. package/esm2020/lib/services/providers/config-service.provider.mjs +31 -30
  161. package/esm2020/lib/services/providers/formly-config.provider.mjs +30 -30
  162. package/esm2020/lib/services/providers/index.mjs +2 -2
  163. package/esm2020/lib/services/router.service.mjs +97 -0
  164. package/esm2020/lib/services/tokens/browser-storage.token.mjs +5 -5
  165. package/esm2020/lib/services/tokens/commons-init.token.mjs +2 -2
  166. package/esm2020/lib/services/tokens/default-setting.token.mjs +2 -2
  167. package/esm2020/lib/services/tokens/index.mjs +4 -4
  168. package/esm2020/lib/services/tokens/module-config.token.mjs +2 -2
  169. package/esm2020/lib/services/version.service.mjs +42 -39
  170. package/esm2020/lib/services/view-container.component.service.mjs +55 -55
  171. package/esm2020/lib/styles/button-style.builder.mjs +164 -164
  172. package/esm2020/lib/styles/index.mjs +2 -2
  173. package/esm2020/lib/styles/models/index.mjs +2 -2
  174. package/esm2020/lib/styles/models/style-level.enum.mjs +11 -11
  175. package/esm2020/lib/styles/models/style-size.enum.mjs +8 -8
  176. package/esm2020/lib/styles/styles.util.mjs +42 -42
  177. package/esm2020/lib/types/index.mjs +2 -2
  178. package/esm2020/lib/types/type.decorator.mjs +21 -21
  179. package/esm2020/lib/types/type.model.mjs +1 -1
  180. package/esm2020/lib/utils/action-data-provider.util.mjs +145 -145
  181. package/esm2020/lib/utils/date.util.mjs +117 -117
  182. package/esm2020/lib/utils/editor-formly.util.mjs +288 -288
  183. package/esm2020/lib/utils/enum.util.mjs +81 -81
  184. package/esm2020/lib/utils/export.util.mjs +20 -20
  185. package/esm2020/lib/utils/i18n.util.mjs +233 -233
  186. package/esm2020/lib/utils/index.mjs +10 -10
  187. package/esm2020/lib/utils/model.util.mjs +68 -68
  188. package/esm2020/lib/utils/notification.util.mjs +51 -51
  189. package/esm2020/lib/utils/route.util.mjs +36 -24
  190. package/esm2020/lib/utils/string.util.mjs +26 -26
  191. package/esm2020/lib/utils/tableview.util.mjs +160 -160
  192. package/esm2020/lib/utils/type.util.mjs +92 -92
  193. package/esm2020/mediusinc-mng-commons.mjs +4 -4
  194. package/esm2020/public-api.mjs +61 -55
  195. package/fesm2015/mediusinc-mng-commons.mjs +14147 -13931
  196. package/fesm2015/mediusinc-mng-commons.mjs.map +1 -1
  197. package/fesm2020/mediusinc-mng-commons.mjs +13980 -13768
  198. package/fesm2020/mediusinc-mng-commons.mjs.map +1 -1
  199. package/index.d.ts +5 -5
  200. package/lib/api/models/builders/query-param.builder.d.ts +13 -13
  201. package/lib/api/models/filter-match-type.model.d.ts +23 -23
  202. package/lib/api/models/filter-param.model.d.ts +23 -23
  203. package/lib/api/models/index.d.ts +8 -8
  204. package/lib/api/models/mappers.d.ts +6 -6
  205. package/lib/api/models/query-mode.model.d.ts +16 -16
  206. package/lib/api/models/query-param.model.d.ts +31 -31
  207. package/lib/api/models/query-result.model.d.ts +24 -24
  208. package/lib/api/models/serialization.model.d.ts +8 -8
  209. package/lib/api/services/api.abstract.service.d.ts +24 -24
  210. package/lib/api/services/crud-api.abstract.service.d.ts +22 -22
  211. package/lib/api/services/get-all-api.abstract.service.d.ts +14 -14
  212. package/lib/api/services/index.d.ts +3 -3
  213. package/lib/api/utils/index.d.ts +2 -2
  214. package/lib/api/utils/medius-rest.util.d.ts +16 -16
  215. package/lib/api/utils/object-serializer.util.d.ts +33 -33
  216. package/lib/components/action/action.component.d.ts +79 -79
  217. package/lib/components/action/editor/action-editor.component.d.ts +69 -69
  218. package/lib/components/action/index.d.ts +4 -4
  219. package/lib/components/action/localization/data-language-dropdown.component.d.ts +25 -25
  220. package/lib/components/action/models/action-component.model.d.ts +15 -15
  221. package/lib/components/action/models/action-confirmation-service.model.d.ts +6 -6
  222. package/lib/components/action/models/action-execution.model.d.ts +135 -135
  223. package/lib/components/action/models/index.d.ts +4 -4
  224. package/lib/components/action/models/tableview-action-default-categories.model.d.ts +10 -10
  225. package/lib/components/action/route/action-route.component.d.ts +31 -31
  226. package/lib/components/form/autocomplete/autocomplete.component.d.ts +61 -61
  227. package/lib/components/form/date-range/date-range.component.d.ts +28 -28
  228. package/lib/components/form/dropdown/dropdown.component.d.ts +52 -52
  229. package/lib/components/form/editor/form-editor.component.d.ts +52 -52
  230. package/lib/components/form/formly/fields/formly-field-action/formly-field-action.component.d.ts +13 -13
  231. package/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.d.ts +16 -16
  232. package/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.d.ts +15 -15
  233. package/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.d.ts +14 -14
  234. package/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.d.ts +29 -29
  235. package/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.d.ts +11 -11
  236. package/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.d.ts +46 -46
  237. package/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.d.ts +25 -24
  238. package/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.d.ts +37 -37
  239. package/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.d.ts +7 -7
  240. package/lib/components/form/formly/fields/index.d.ts +10 -10
  241. package/lib/components/form/formly/formly.config.d.ts +14 -14
  242. package/lib/components/form/formly/index.d.ts +1 -1
  243. package/lib/components/form/formly/models/formly-config.model.d.ts +11 -11
  244. package/lib/components/form/formly/models/formly-field.model.d.ts +16 -16
  245. package/lib/components/form/formly/models/index.d.ts +2 -2
  246. package/lib/components/form/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.d.ts +6 -6
  247. package/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.d.ts +11 -11
  248. package/lib/components/form/formly/wrappers/index.d.ts +2 -2
  249. package/lib/components/form/index.d.ts +4 -4
  250. package/lib/components/form/models/field-action-context.model.d.ts +17 -17
  251. package/lib/components/form/models/form-editor.event.d.ts +37 -37
  252. package/lib/components/form/models/form-editor.interface.d.ts +10 -10
  253. package/lib/components/form/models/index.d.ts +2 -2
  254. package/lib/components/layout/breadcrumb.component.d.ts +8 -8
  255. package/lib/components/layout/footer.component.d.ts +9 -9
  256. package/lib/components/layout/index.d.ts +7 -7
  257. package/lib/components/layout/main-layout.component.d.ts +20 -20
  258. package/lib/components/layout/menu-item.component.d.ts +56 -52
  259. package/lib/components/layout/menu.component.d.ts +16 -10
  260. package/lib/components/layout/services/index.d.ts +1 -1
  261. package/lib/components/layout/services/main-layout.component.service.d.ts +65 -65
  262. package/lib/components/layout/topbar.component.d.ts +28 -28
  263. package/lib/components/layout/version.component.d.ts +19 -19
  264. package/lib/components/tableview/index.d.ts +6 -6
  265. package/lib/components/tableview/models/index.d.ts +1 -1
  266. package/lib/components/tableview/models/table.event.d.ts +17 -17
  267. package/lib/components/tableview/route/tableview-route.abstract.component.d.ts +36 -33
  268. package/lib/components/tableview/route/tableview-route.component.d.ts +19 -18
  269. package/lib/components/tableview/table/column-filter/column-filter.component.d.ts +38 -38
  270. package/lib/components/tableview/table/column-value/column-value.component.d.ts +35 -35
  271. package/lib/components/tableview/table/table.component.d.ts +117 -115
  272. package/lib/components/tableview/tableview.component.d.ts +49 -48
  273. package/lib/data-providers/base.data-provider.d.ts +14 -14
  274. package/lib/data-providers/editor.data-provider.d.ts +25 -25
  275. package/lib/data-providers/index.d.ts +6 -6
  276. package/lib/data-providers/lookup.data-provider.d.ts +14 -14
  277. package/lib/data-providers/table.data-provider.d.ts +27 -27
  278. package/lib/data-providers/tableview-crud.data-provider.d.ts +8 -8
  279. package/lib/data-providers/tableview.data-provider.d.ts +33 -33
  280. package/lib/descriptors/{action-button.descriptor.d.ts → action/action-button.descriptor.d.ts} +22 -22
  281. package/lib/descriptors/action/action-confirmation.descriptor.d.ts +36 -36
  282. package/lib/descriptors/{action.descriptor.d.ts → action/action.descriptor.d.ts} +225 -223
  283. package/lib/descriptors/action/index.d.ts +3 -0
  284. package/lib/descriptors/{editor.descriptor.d.ts → editor/editor.descriptor.d.ts} +119 -116
  285. package/lib/descriptors/{field-validation.descriptor.d.ts → editor/field-validation.descriptor.d.ts} +19 -19
  286. package/lib/descriptors/{field.descriptor.d.ts → editor/field.descriptor.d.ts} +349 -345
  287. package/lib/descriptors/editor/index.d.ts +3 -0
  288. package/lib/descriptors/{filter.descriptor.d.ts → filter/filter.descriptor.d.ts} +120 -118
  289. package/lib/descriptors/filter/index.d.ts +1 -0
  290. package/lib/descriptors/index.d.ts +1 -11
  291. package/lib/descriptors/interfaces/field-config.interface.d.ts +9 -9
  292. package/lib/descriptors/interfaces/index.d.ts +2 -2
  293. package/lib/descriptors/interfaces/lookup-descriptor.interface.d.ts +17 -17
  294. package/lib/descriptors/model.descriptor.d.ts +18 -18
  295. package/lib/descriptors/{column.descriptor.d.ts → table/column.descriptor.d.ts} +130 -130
  296. package/lib/descriptors/table/index.d.ts +2 -0
  297. package/lib/descriptors/{table.descriptor.d.ts → table/table.descriptor.d.ts} +193 -193
  298. package/lib/descriptors/tableview/index.d.ts +1 -0
  299. package/lib/descriptors/{tableview.descriptor.d.ts → tableview/tableview.descriptor.d.ts} +131 -129
  300. package/lib/descriptors/types/action.type.d.ts +21 -21
  301. package/lib/descriptors/types/column.type.d.ts +18 -18
  302. package/lib/descriptors/types/editor.type.d.ts +6 -6
  303. package/lib/descriptors/types/field.type.d.ts +47 -47
  304. package/lib/descriptors/types/filter.type.d.ts +27 -27
  305. package/lib/descriptors/types/index.d.ts +6 -6
  306. package/lib/descriptors/types/table.type.d.ts +22 -22
  307. package/lib/directives/component.directive.d.ts +16 -16
  308. package/lib/directives/index.d.ts +2 -2
  309. package/lib/directives/template.directive.d.ts +13 -13
  310. package/lib/mng-commons.module.d.ts +99 -99
  311. package/lib/models/column-value.model.d.ts +4 -4
  312. package/lib/models/config.model.d.ts +41 -40
  313. package/lib/models/enum.model.d.ts +6 -6
  314. package/lib/models/error.model.d.ts +14 -14
  315. package/lib/models/index.d.ts +9 -9
  316. package/lib/models/menu.model.d.ts +30 -30
  317. package/lib/models/tableview-attr.model.d.ts +10 -10
  318. package/lib/models/user.model.d.ts +8 -8
  319. package/lib/models/version.model.d.ts +18 -18
  320. package/lib/models/view-container.model.d.ts +43 -43
  321. package/lib/pipes/boolean.pipe.d.ts +7 -7
  322. package/lib/pipes/class-map.pipe.d.ts +7 -7
  323. package/lib/pipes/enum.pipe.d.ts +8 -8
  324. package/lib/pipes/enumerate-async.pipe.d.ts +14 -14
  325. package/lib/pipes/enumerate.pipe.d.ts +21 -21
  326. package/lib/pipes/getter.pipe.d.ts +7 -7
  327. package/lib/pipes/i18n-property.pipe.d.ts +8 -8
  328. package/lib/pipes/index.d.ts +11 -11
  329. package/lib/pipes/json-path.pipe.d.ts +13 -13
  330. package/lib/pipes/locale-default-row-class.pipe.d.ts +10 -10
  331. package/lib/pipes/models/internal/enumrate-pipe-i18n.model.d.ts +5 -5
  332. package/lib/pipes/models/internal/index.d.ts +1 -1
  333. package/lib/pipes/parametrize.pipe.d.ts +13 -13
  334. package/lib/pipes/template.pipe.d.ts +10 -10
  335. package/lib/provide-commons.d.ts +3 -0
  336. package/lib/router/index.d.ts +3 -2
  337. package/lib/router/models/index.d.ts +1 -1
  338. package/lib/router/models/router.model.d.ts +36 -33
  339. package/lib/router/route-builder.d.ts +62 -98
  340. package/lib/router/routes-builder.d.ts +29 -0
  341. package/lib/router/tableview-route-builder.d.ts +38 -37
  342. package/lib/security/authorization.guard.d.ts +11 -11
  343. package/lib/security/authorization.service.d.ts +19 -19
  344. package/lib/security/authorization.util.d.ts +5 -5
  345. package/lib/security/index.d.ts +3 -3
  346. package/lib/security/model/authorization.type.d.ts +6 -6
  347. package/lib/security/model/index.d.ts +3 -3
  348. package/lib/security/model/permission-service.interface.d.ts +6 -6
  349. package/lib/security/model/permissions.model.d.ts +37 -37
  350. package/lib/services/action-executor.service.d.ts +150 -149
  351. package/lib/services/commons.service.d.ts +93 -93
  352. package/lib/services/configuration.service.d.ts +60 -57
  353. package/lib/services/error-mapper.service.d.ts +7 -7
  354. package/lib/services/index.d.ts +6 -6
  355. package/lib/services/internal/commons-init.provider.d.ts +3 -3
  356. package/lib/services/internal/commons-init.service.d.ts +18 -16
  357. package/lib/services/internal/index.d.ts +2 -2
  358. package/lib/services/navigation.service.d.ts +14 -14
  359. package/lib/services/providers/config-service.provider.d.ts +6 -6
  360. package/lib/services/providers/formly-config.provider.d.ts +4 -4
  361. package/lib/services/providers/index.d.ts +2 -2
  362. package/lib/services/router.service.d.ts +22 -0
  363. package/lib/services/tokens/browser-storage.token.d.ts +2 -2
  364. package/lib/services/tokens/commons-init.token.d.ts +3 -3
  365. package/lib/services/tokens/default-setting.token.d.ts +2 -2
  366. package/lib/services/tokens/index.d.ts +4 -4
  367. package/lib/services/tokens/module-config.token.d.ts +3 -3
  368. package/lib/services/version.service.d.ts +13 -13
  369. package/lib/services/view-container.component.service.d.ts +31 -31
  370. package/lib/styles/button-style.builder.d.ts +67 -67
  371. package/lib/styles/index.d.ts +2 -2
  372. package/lib/styles/models/index.d.ts +2 -2
  373. package/lib/styles/models/style-level.enum.d.ts +10 -10
  374. package/lib/styles/models/style-size.enum.d.ts +7 -7
  375. package/lib/styles/styles.util.d.ts +15 -14
  376. package/lib/types/index.d.ts +2 -2
  377. package/lib/types/type.decorator.d.ts +4 -4
  378. package/lib/types/type.model.d.ts +23 -23
  379. package/lib/utils/action-data-provider.util.d.ts +20 -20
  380. package/lib/utils/date.util.d.ts +7 -7
  381. package/lib/utils/editor-formly.util.d.ts +12 -12
  382. package/lib/utils/enum.util.d.ts +50 -50
  383. package/lib/utils/export.util.d.ts +5 -5
  384. package/lib/utils/i18n.util.d.ts +57 -56
  385. package/lib/utils/index.d.ts +10 -10
  386. package/lib/utils/model.util.d.ts +8 -8
  387. package/lib/utils/notification.util.d.ts +13 -12
  388. package/lib/utils/route.util.d.ts +59 -4
  389. package/lib/utils/string.util.d.ts +4 -4
  390. package/lib/utils/tableview.util.d.ts +40 -40
  391. package/lib/utils/type.util.d.ts +57 -57
  392. package/package.json +6 -6
  393. package/public-api.d.ts +40 -34
  394. package/scss/common/layout/_breadcrumb.scss +12 -2
  395. package/scss/common/layout/_exception.scss +1 -1
  396. package/scss/common/layout/_inlinemenu.scss +13 -0
  397. package/scss/common/layout/_login.scss +1 -0
  398. package/scss/common/layout/_rightmenu.scss +5 -0
  399. package/scss/common/layout/menu/_menu_common.scss +1 -1
  400. package/scss/common/theme/designer/_mixins.scss +29 -0
  401. package/scss/common/theme/extensions/_datatable.scss +2 -2
  402. package/scss/common/variables/layout/_layout_dark.scss +0 -1
  403. package/scss/common/variables/layout/_layout_light.scss +0 -1
  404. package/scss/common/variables/theme/_theme_dark.scss +72 -46
  405. package/scss/common/variables/theme/_theme_light.scss +70 -33
  406. package/version-info.json +7 -7
  407. package/esm2020/lib/descriptors/action-button.descriptor.mjs +0 -60
  408. package/esm2020/lib/descriptors/action.descriptor.mjs +0 -577
  409. package/esm2020/lib/descriptors/column.descriptor.mjs +0 -405
  410. package/esm2020/lib/descriptors/editor.descriptor.mjs +0 -290
  411. package/esm2020/lib/descriptors/field-validation.descriptor.mjs +0 -25
  412. package/esm2020/lib/descriptors/field.descriptor.mjs +0 -987
  413. package/esm2020/lib/descriptors/filter.descriptor.mjs +0 -368
  414. package/esm2020/lib/descriptors/table.descriptor.mjs +0 -497
  415. package/esm2020/lib/descriptors/tableview.descriptor.mjs +0 -344
  416. package/mediusinc-mng-commons-1.4.0.tgz +0 -0
@@ -0,0 +1,67 @@
1
+ import { MngMainLayoutComponent } from '../components/layout';
2
+ import { RouteBuilder } from './route-builder';
3
+ export class RoutesBuilder {
4
+ constructor(layoutRoute) {
5
+ this.routes = [];
6
+ this.layoutRoute = layoutRoute?.withRoot(this);
7
+ this.currentRoute = layoutRoute;
8
+ }
9
+ static create() {
10
+ return new RoutesBuilder();
11
+ }
12
+ static createWithLayout(layoutComponent = MngMainLayoutComponent, topbarComponent, breadcrumbComponent, menuComponent, footerComponent) {
13
+ const layoutRoute = RouteBuilder.createLayoutRoute('', layoutComponent, topbarComponent, breadcrumbComponent, menuComponent, footerComponent);
14
+ return new RoutesBuilder(layoutRoute);
15
+ }
16
+ addAngularRoute(route) {
17
+ return this.addRouteBuilder(RouteBuilder.createFromRoute(route));
18
+ }
19
+ addRouteRedirect(path, redirectTo, pathMatch = 'prefix') {
20
+ return this.addRouteBuilder(RouteBuilder.createRedirect(path, redirectTo, pathMatch));
21
+ }
22
+ /**
23
+ * @deprecated This method is deprecated and should not be used.
24
+ * Use method {@link addLazyRouteComponent} or {@link addLazyRouteModule} instead.
25
+ */
26
+ addLazyRoute(path, loadChildren, canLoad) {
27
+ return this.addRouteBuilder(RouteBuilder.createLazyRoute(path, loadChildren, canLoad));
28
+ }
29
+ addLazyRouteComponent(path, loadComponent, canMatch) {
30
+ return this.addRouteBuilder(RouteBuilder.createLazyRouteComponent(path, loadComponent, canMatch));
31
+ }
32
+ addLazyRouteModule(path, loadChildren, canMatch) {
33
+ return this.addRouteBuilder(RouteBuilder.createLazyRouteModule(path, loadChildren, canMatch));
34
+ }
35
+ addRoute(path, component) {
36
+ return this.addRouteBuilder(RouteBuilder.create(path, component));
37
+ }
38
+ addTableview(builder) {
39
+ return this.addTableview(builder);
40
+ }
41
+ addRouteBuilder(routeBuilder) {
42
+ this.currentRoute = routeBuilder.withRoot(this);
43
+ this.routes.push(routeBuilder);
44
+ return this;
45
+ }
46
+ toRoute() {
47
+ if (!this.currentRoute) {
48
+ throw new Error('No routes were added!');
49
+ }
50
+ return this.currentRoute;
51
+ }
52
+ buildRoutes() {
53
+ let angularRoutes = [];
54
+ for (const route of this.routes) {
55
+ angularRoutes.push(route.buildRoute());
56
+ }
57
+ if (this.layoutRoute) {
58
+ const layoutAngularRoute = this.layoutRoute.buildRoute();
59
+ if (angularRoutes.length > 0) {
60
+ layoutAngularRoute.children = angularRoutes;
61
+ }
62
+ angularRoutes = [layoutAngularRoute];
63
+ }
64
+ return angularRoutes;
65
+ }
66
+ }
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVzLWJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3JvdXRlci9yb3V0ZXMtYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUU1RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFHN0MsTUFBTSxPQUFPLGFBQWE7SUFLdEIsWUFBb0IsV0FBMEI7UUFIdEMsV0FBTSxHQUF3QixFQUFFLENBQUM7UUFJckMsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO0lBQ3BDLENBQUM7SUFFTSxNQUFNLENBQUMsTUFBTTtRQUNoQixPQUFPLElBQUksYUFBYSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVNLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FDMUIsZUFBZSxHQUFHLHNCQUFzQixFQUN4QyxlQUEyQixFQUMzQixtQkFBK0IsRUFDL0IsYUFBeUIsRUFDekIsZUFBMkI7UUFFM0IsTUFBTSxXQUFXLEdBQUcsWUFBWSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUFFLGFBQWEsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUM5SSxPQUFPLElBQUksYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFTSxlQUFlLENBQUMsS0FBWTtRQUMvQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxJQUFZLEVBQUUsVUFBa0IsRUFBRSxZQUErQixRQUFRO1FBQzdGLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUMxRixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksWUFBWSxDQUFDLElBQVksRUFBRSxZQUEwQixFQUFFLE9BQW9CO1FBQzlFLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBRU0scUJBQXFCLENBQ3hCLElBQVksRUFDWixhQUFxSixFQUNySixRQUFxQjtRQUVyQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLHdCQUF3QixDQUFDLElBQUksRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUN0RyxDQUFDO0lBRU0sa0JBQWtCLENBQUMsSUFBWSxFQUFFLFlBQTBCLEVBQUUsUUFBcUI7UUFDckYsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDbEcsQ0FBQztJQUVNLFFBQVEsQ0FBQyxJQUFZLEVBQUUsU0FBb0I7UUFDOUMsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVNLFlBQVksQ0FBa0QsT0FBaUM7UUFDbEcsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFTSxlQUFlLENBQUMsWUFBMEI7UUFDN0MsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQy9CLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxPQUFPO1FBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1NBQzVDO1FBQ0QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzdCLENBQUM7SUFFTSxXQUFXO1FBQ2QsSUFBSSxhQUFhLEdBQVcsRUFBRSxDQUFDO1FBQy9CLEtBQUssTUFBTSxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUM3QixhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1NBQzFDO1FBRUQsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2xCLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN6RCxJQUFJLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUMxQixrQkFBa0IsQ0FBQyxRQUFRLEdBQUcsYUFBYSxDQUFDO2FBQy9DO1lBQ0QsYUFBYSxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQztTQUN4QztRQUVELE9BQU8sYUFBYSxDQUFDO0lBQ3pCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VHlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0RlZmF1bHRFeHBvcnQsIExvYWRDaGlsZHJlbiwgUm91dGUsIFJvdXRlc30gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtNbmdNYWluTGF5b3V0Q29tcG9uZW50fSBmcm9tICcuLi9jb21wb25lbnRzL2xheW91dCc7XG5pbXBvcnQge0FNbmdUYWJsZXZpZXdSb3V0ZUNvbXBvbmVudH0gZnJvbSAnLi4vY29tcG9uZW50cy90YWJsZXZpZXcnO1xuaW1wb3J0IHtSb3V0ZUJ1aWxkZXJ9IGZyb20gJy4vcm91dGUtYnVpbGRlcic7XG5pbXBvcnQge1RhYmxldmlld1JvdXRlQnVpbGRlcn0gZnJvbSAnLi90YWJsZXZpZXctcm91dGUtYnVpbGRlcic7XG5cbmV4cG9ydCBjbGFzcyBSb3V0ZXNCdWlsZGVyIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxheW91dFJvdXRlPzogUm91dGVCdWlsZGVyO1xuICAgIHByaXZhdGUgcm91dGVzOiBBcnJheTxSb3V0ZUJ1aWxkZXI+ID0gW107XG4gICAgcHJpdmF0ZSBjdXJyZW50Um91dGU/OiBSb3V0ZUJ1aWxkZXI7XG5cbiAgICBwcml2YXRlIGNvbnN0cnVjdG9yKGxheW91dFJvdXRlPzogUm91dGVCdWlsZGVyKSB7XG4gICAgICAgIHRoaXMubGF5b3V0Um91dGUgPSBsYXlvdXRSb3V0ZT8ud2l0aFJvb3QodGhpcyk7XG4gICAgICAgIHRoaXMuY3VycmVudFJvdXRlID0gbGF5b3V0Um91dGU7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUoKTogUm91dGVzQnVpbGRlciB7XG4gICAgICAgIHJldHVybiBuZXcgUm91dGVzQnVpbGRlcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlV2l0aExheW91dChcbiAgICAgICAgbGF5b3V0Q29tcG9uZW50ID0gTW5nTWFpbkxheW91dENvbXBvbmVudCxcbiAgICAgICAgdG9wYmFyQ29tcG9uZW50PzogVHlwZTxhbnk+LFxuICAgICAgICBicmVhZGNydW1iQ29tcG9uZW50PzogVHlwZTxhbnk+LFxuICAgICAgICBtZW51Q29tcG9uZW50PzogVHlwZTxhbnk+LFxuICAgICAgICBmb290ZXJDb21wb25lbnQ/OiBUeXBlPGFueT5cbiAgICApOiBSb3V0ZXNCdWlsZGVyIHtcbiAgICAgICAgY29uc3QgbGF5b3V0Um91dGUgPSBSb3V0ZUJ1aWxkZXIuY3JlYXRlTGF5b3V0Um91dGUoJycsIGxheW91dENvbXBvbmVudCwgdG9wYmFyQ29tcG9uZW50LCBicmVhZGNydW1iQ29tcG9uZW50LCBtZW51Q29tcG9uZW50LCBmb290ZXJDb21wb25lbnQpO1xuICAgICAgICByZXR1cm4gbmV3IFJvdXRlc0J1aWxkZXIobGF5b3V0Um91dGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRBbmd1bGFyUm91dGUocm91dGU6IFJvdXRlKTogdGhpcyB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZFJvdXRlQnVpbGRlcihSb3V0ZUJ1aWxkZXIuY3JlYXRlRnJvbVJvdXRlKHJvdXRlKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZFJvdXRlUmVkaXJlY3QocGF0aDogc3RyaW5nLCByZWRpcmVjdFRvOiBzdHJpbmcsIHBhdGhNYXRjaDogJ2Z1bGwnIHwgJ3ByZWZpeCcgPSAncHJlZml4Jyk6IHRoaXMge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRSb3V0ZUJ1aWxkZXIoUm91dGVCdWlsZGVyLmNyZWF0ZVJlZGlyZWN0KHBhdGgsIHJlZGlyZWN0VG8sIHBhdGhNYXRjaCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIFRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQgYW5kIHNob3VsZCBub3QgYmUgdXNlZC5cbiAgICAgKiBVc2UgbWV0aG9kIHtAbGluayBhZGRMYXp5Um91dGVDb21wb25lbnR9IG9yIHtAbGluayBhZGRMYXp5Um91dGVNb2R1bGV9IGluc3RlYWQuXG4gICAgICovXG4gICAgcHVibGljIGFkZExhenlSb3V0ZShwYXRoOiBzdHJpbmcsIGxvYWRDaGlsZHJlbjogTG9hZENoaWxkcmVuLCBjYW5Mb2FkPzogQXJyYXk8YW55Pik6IHRoaXMge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRSb3V0ZUJ1aWxkZXIoUm91dGVCdWlsZGVyLmNyZWF0ZUxhenlSb3V0ZShwYXRoLCBsb2FkQ2hpbGRyZW4sIGNhbkxvYWQpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkTGF6eVJvdXRlQ29tcG9uZW50KFxuICAgICAgICBwYXRoOiBzdHJpbmcsXG4gICAgICAgIGxvYWRDb21wb25lbnQ6ICgpID0+IFR5cGU8dW5rbm93bj4gfCBPYnNlcnZhYmxlPFR5cGU8dW5rbm93bj4gfCBEZWZhdWx0RXhwb3J0PFR5cGU8dW5rbm93bj4+PiB8IFByb21pc2U8VHlwZTx1bmtub3duPiB8IERlZmF1bHRFeHBvcnQ8VHlwZTx1bmtub3duPj4+LFxuICAgICAgICBjYW5NYXRjaD86IEFycmF5PGFueT5cbiAgICApOiB0aGlzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkUm91dGVCdWlsZGVyKFJvdXRlQnVpbGRlci5jcmVhdGVMYXp5Um91dGVDb21wb25lbnQocGF0aCwgbG9hZENvbXBvbmVudCwgY2FuTWF0Y2gpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkTGF6eVJvdXRlTW9kdWxlKHBhdGg6IHN0cmluZywgbG9hZENoaWxkcmVuOiBMb2FkQ2hpbGRyZW4sIGNhbk1hdGNoPzogQXJyYXk8YW55Pik6IHRoaXMge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRSb3V0ZUJ1aWxkZXIoUm91dGVCdWlsZGVyLmNyZWF0ZUxhenlSb3V0ZU1vZHVsZShwYXRoLCBsb2FkQ2hpbGRyZW4sIGNhbk1hdGNoKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZFJvdXRlKHBhdGg6IHN0cmluZywgY29tcG9uZW50OiBUeXBlPGFueT4pOiB0aGlzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkUm91dGVCdWlsZGVyKFJvdXRlQnVpbGRlci5jcmVhdGUocGF0aCwgY29tcG9uZW50KSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZFRhYmxldmlldzxDIGV4dGVuZHMgQU1uZ1RhYmxldmlld1JvdXRlQ29tcG9uZW50PGFueSwgYW55Pj4oYnVpbGRlcjogVGFibGV2aWV3Um91dGVCdWlsZGVyPEM+KTogdGhpcyB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZFRhYmxldmlldyhidWlsZGVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkUm91dGVCdWlsZGVyKHJvdXRlQnVpbGRlcjogUm91dGVCdWlsZGVyKTogdGhpcyB7XG4gICAgICAgIHRoaXMuY3VycmVudFJvdXRlID0gcm91dGVCdWlsZGVyLndpdGhSb290KHRoaXMpO1xuICAgICAgICB0aGlzLnJvdXRlcy5wdXNoKHJvdXRlQnVpbGRlcik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b1JvdXRlKCk6IFJvdXRlQnVpbGRlciB7XG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50Um91dGUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gcm91dGVzIHdlcmUgYWRkZWQhJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFJvdXRlO1xuICAgIH1cblxuICAgIHB1YmxpYyBidWlsZFJvdXRlcygpOiBSb3V0ZXMge1xuICAgICAgICBsZXQgYW5ndWxhclJvdXRlczogUm91dGVzID0gW107XG4gICAgICAgIGZvciAoY29uc3Qgcm91dGUgb2YgdGhpcy5yb3V0ZXMpIHtcbiAgICAgICAgICAgIGFuZ3VsYXJSb3V0ZXMucHVzaChyb3V0ZS5idWlsZFJvdXRlKCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubGF5b3V0Um91dGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGxheW91dEFuZ3VsYXJSb3V0ZSA9IHRoaXMubGF5b3V0Um91dGUuYnVpbGRSb3V0ZSgpO1xuICAgICAgICAgICAgaWYgKGFuZ3VsYXJSb3V0ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGxheW91dEFuZ3VsYXJSb3V0ZS5jaGlsZHJlbiA9IGFuZ3VsYXJSb3V0ZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhbmd1bGFyUm91dGVzID0gW2xheW91dEFuZ3VsYXJSb3V0ZV07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYW5ndWxhclJvdXRlcztcbiAgICB9XG59XG4iXX0=
@@ -1,187 +1,187 @@
1
- import { MngActionRouteComponent } from '../components/action';
2
- import { TableviewActionDefaultCategories } from '../components/action/models';
3
- import { MngTableviewRouteComponent } from '../components/tableview';
4
- import { ActionEditorAddDescriptor, ActionEditorDetailsDescriptor, ActionEditorEditDescriptor } from '../descriptors';
5
- import { RouteBuilder } from './route-builder';
6
- export class TableviewRouteBuilder {
7
- constructor(path) {
8
- this.path = path;
9
- this.hasDetails = true;
10
- this.detailsPath = ':itemId';
11
- this.hasEdit = true;
12
- this.editPath = ':itemId/edit';
13
- this.hasAdd = true;
14
- this.addPath = 'add';
15
- this.hasDelete = true;
16
- }
17
- static fromComponent(path, component) {
18
- const inst = new TableviewRouteBuilder(path);
19
- inst.component = component;
20
- return inst;
21
- }
22
- static from(path, descriptor, dataProvider, actions) {
23
- const inst = new TableviewRouteBuilder(path);
24
- inst.descriptor = descriptor;
25
- inst.dataProvider = dataProvider;
26
- inst.actions = actions;
27
- inst.hasDetails = false;
28
- inst.hasAdd = false;
29
- inst.hasEdit = false;
30
- for (const action of inst.actions) {
31
- if (action instanceof ActionEditorDetailsDescriptor) {
32
- inst.hasDetails = true;
33
- }
34
- else if (action instanceof ActionEditorAddDescriptor) {
35
- inst.hasAdd = true;
36
- }
37
- else if (action instanceof ActionEditorEditDescriptor) {
38
- inst.hasEdit = true;
39
- }
40
- }
41
- return inst;
42
- }
43
- withReadOnly(permissions) {
44
- if (permissions) {
45
- this.withPermissions(permissions);
46
- }
47
- this.withAdd(false);
48
- this.withEdit(false);
49
- this.withDelete(false);
50
- return this;
51
- }
52
- withDetails(hasDetails = true, permissions, path) {
53
- this.hasDetails = hasDetails;
54
- if (permissions) {
55
- this.withPermissions(undefined, undefined, undefined, undefined, permissions);
56
- }
57
- if (path) {
58
- this.detailsPath = path;
59
- }
60
- return this;
61
- }
62
- withAdd(hasAdd = true, permissions, path) {
63
- this.hasAdd = hasAdd;
64
- if (permissions) {
65
- this.withPermissions(undefined, permissions);
66
- }
67
- if (path) {
68
- this.addPath = path;
69
- }
70
- return this;
71
- }
72
- withEdit(hasEdit = true, permissions, path) {
73
- this.hasEdit = hasEdit;
74
- if (permissions) {
75
- this.withPermissions(undefined, undefined, permissions);
76
- }
77
- if (path) {
78
- this.editPath = path;
79
- }
80
- return this;
81
- }
82
- withDelete(hasDelete = true, permissions) {
83
- this.hasDelete = hasDelete;
84
- if (permissions) {
85
- this.withPermissions(undefined, undefined, undefined, permissions);
86
- }
87
- return this;
88
- }
89
- withPermissions(read, add, edit, delet, details) {
90
- if (!this.permissions) {
91
- this.permissions = {};
92
- }
93
- if (read) {
94
- this.permissions[TableviewActionDefaultCategories.READ] = read;
95
- }
96
- if (add) {
97
- this.permissions[TableviewActionDefaultCategories.ADD] = add;
98
- }
99
- if (edit) {
100
- this.permissions[TableviewActionDefaultCategories.EDIT] = edit;
101
- }
102
- if (delet) {
103
- this.permissions[TableviewActionDefaultCategories.DELETE] = delet;
104
- }
105
- if (details) {
106
- this.permissions[TableviewActionDefaultCategories.DETAILS] = details;
107
- }
108
- return this;
109
- }
110
- withPermissionByCategory(key, permissions) {
111
- if (!this.permissions) {
112
- this.permissions = {};
113
- }
114
- this.permissions[key] = permissions;
115
- return this;
116
- }
117
- withPermissionsObject(permissions) {
118
- this.permissions = permissions;
119
- return this;
120
- }
121
- build() {
122
- return this.toRouteBuilder().buildRoute();
123
- }
124
- toRouteBuilder() {
125
- const tableviewRouteBuilder = RouteBuilder.createFromRoute({
126
- path: this.path,
127
- component: this.component ? this.component : MngTableviewRouteComponent
128
- });
129
- const routeData = {};
130
- if (!this.component) {
131
- routeData.tableview = {
132
- descriptor: this.descriptor,
133
- dataProvider: this.dataProvider
134
- };
135
- if (this.actions) {
136
- routeData.tableview.actions = this.actions;
137
- }
138
- }
139
- if (this.permissions) {
140
- routeData.tableviewPermissions = { ...this.permissions };
141
- }
142
- routeData.tableviewActions = {
143
- hasAdd: this.hasAdd,
144
- hasEdit: this.hasEdit,
145
- hasDetails: this.hasDetails,
146
- hasDelete: this.hasDelete
147
- };
148
- tableviewRouteBuilder.withData(routeData);
149
- if (this.permissions?.[TableviewActionDefaultCategories.READ]) {
150
- tableviewRouteBuilder.withPermissions(this.permissions[TableviewActionDefaultCategories.READ]);
151
- }
152
- // list route
153
- const rootChildRouteBuilder = RouteBuilder.create('', MngActionRouteComponent);
154
- rootChildRouteBuilder.withData({ ...routeData });
155
- if (this.permissions?.[TableviewActionDefaultCategories.READ]) {
156
- rootChildRouteBuilder.withPermissions(this.permissions[TableviewActionDefaultCategories.READ]);
157
- }
158
- tableviewRouteBuilder.addChildBuilder(rootChildRouteBuilder);
159
- // add route
160
- if (this.hasAdd) {
161
- const routeBuilder = RouteBuilder.create(this.addPath, MngActionRouteComponent);
162
- routeBuilder.withData({ ...routeData });
163
- if (this.permissions?.[TableviewActionDefaultCategories.ADD]) {
164
- routeBuilder.withPermissions(this.permissions[TableviewActionDefaultCategories.ADD]);
165
- }
166
- tableviewRouteBuilder.addChildBuilder(routeBuilder);
167
- }
168
- if (this.hasDetails) {
169
- const routeBuilder = RouteBuilder.create(this.detailsPath, MngActionRouteComponent);
170
- routeBuilder.withData({ ...routeData });
171
- if (this.permissions?.[TableviewActionDefaultCategories.DETAILS]) {
172
- routeBuilder.withPermissions(this.permissions[TableviewActionDefaultCategories.DETAILS]);
173
- }
174
- tableviewRouteBuilder.addChildBuilder(routeBuilder);
175
- }
176
- if (this.hasEdit) {
177
- const routeBuilder = RouteBuilder.create(this.editPath, MngActionRouteComponent);
178
- routeBuilder.withData({ ...routeData });
179
- if (this.permissions?.[TableviewActionDefaultCategories.EDIT]) {
180
- routeBuilder.withPermissions(this.permissions[TableviewActionDefaultCategories.EDIT]);
181
- }
182
- tableviewRouteBuilder.addChildBuilder(routeBuilder);
183
- }
184
- return tableviewRouteBuilder;
185
- }
186
- }
187
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LXJvdXRlLWJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3JvdXRlci90YWJsZXZpZXctcm91dGUtYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RCxPQUFPLEVBQUMsZ0NBQWdDLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RSxPQUFPLEVBQThCLDBCQUEwQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFFaEcsT0FBTyxFQUFtQix5QkFBeUIsRUFBRSw2QkFBNkIsRUFBRSwwQkFBMEIsRUFBc0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUczSixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFN0MsTUFBTSxPQUFPLHFCQUFxQjtJQW1COUIsWUFBNEIsSUFBWTtRQUFaLFNBQUksR0FBSixJQUFJLENBQVE7UUFaaEMsZUFBVSxHQUFHLElBQUksQ0FBQztRQUNsQixnQkFBVyxHQUFHLFNBQVMsQ0FBQztRQUN4QixZQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ2YsYUFBUSxHQUFHLGNBQWMsQ0FBQztRQUMxQixXQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ2QsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixjQUFTLEdBQUcsSUFBSSxDQUFDO0lBTWtCLENBQUM7SUFFckMsTUFBTSxDQUFDLGFBQWEsQ0FBa0QsSUFBWSxFQUFFLFNBQWtCO1FBQ3pHLE1BQU0sSUFBSSxHQUFHLElBQUkscUJBQXFCLENBQUksSUFBSSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxJQUFJLENBQ2QsSUFBWSxFQUNaLFVBQW9DLEVBQ3BDLFlBQThDLEVBQzlDLE9BQXFDO1FBRXJDLE1BQU0sSUFBSSxHQUFHLElBQUkscUJBQXFCLENBQVEsSUFBSSxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFFdkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsS0FBSyxNQUFNLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQy9CLElBQUksTUFBTSxZQUFZLDZCQUE2QixFQUFFO2dCQUNqRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQzthQUMxQjtpQkFBTSxJQUFJLE1BQU0sWUFBWSx5QkFBeUIsRUFBRTtnQkFDcEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7YUFDdEI7aUJBQU0sSUFBSSxNQUFNLFlBQVksMEJBQTBCLEVBQUU7Z0JBQ3JELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO2FBQ3ZCO1NBQ0o7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sWUFBWSxDQUFDLFdBQTBCO1FBQzFDLElBQUksV0FBVyxFQUFFO1lBQ2IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUNyQztRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxXQUFXLENBQUMsVUFBVSxHQUFHLElBQUksRUFBRSxXQUEwQixFQUFFLElBQWE7UUFDM0UsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxXQUFXLEVBQUU7WUFDYixJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQztTQUNqRjtRQUNELElBQUksSUFBSSxFQUFFO1lBQ04sSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7U0FDM0I7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sT0FBTyxDQUFDLE1BQU0sR0FBRyxJQUFJLEVBQUUsV0FBMEIsRUFBRSxJQUFhO1FBQ25FLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksV0FBVyxFQUFFO1lBQ2IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7U0FDaEQ7UUFDRCxJQUFJLElBQUksRUFBRTtZQUNOLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1NBQ3ZCO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLFFBQVEsQ0FBQyxPQUFPLEdBQUcsSUFBSSxFQUFFLFdBQTBCLEVBQUUsSUFBYTtRQUNyRSxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLFdBQVcsRUFBRTtZQUNiLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQztTQUMzRDtRQUNELElBQUksSUFBSSxFQUFFO1lBQ04sSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7U0FDeEI7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sVUFBVSxDQUFDLFNBQVMsR0FBRyxJQUFJLEVBQUUsV0FBMEI7UUFDMUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxXQUFXLEVBQUU7WUFDYixJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1NBQ3RFO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLGVBQWUsQ0FBQyxJQUFtQixFQUFFLEdBQWtCLEVBQUUsSUFBbUIsRUFBRSxLQUFvQixFQUFFLE9BQXNCO1FBQzdILElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ25CLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1NBQ3pCO1FBQ0QsSUFBSSxJQUFJLEVBQUU7WUFDTixJQUFJLENBQUMsV0FBVyxDQUFDLGdDQUFnQyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztTQUNsRTtRQUNELElBQUksR0FBRyxFQUFFO1lBQ0wsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQ0FBZ0MsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7U0FDaEU7UUFDRCxJQUFJLElBQUksRUFBRTtZQUNOLElBQUksQ0FBQyxXQUFXLENBQUMsZ0NBQWdDLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO1NBQ2xFO1FBQ0QsSUFBSSxLQUFLLEVBQUU7WUFDUCxJQUFJLENBQUMsV0FBVyxDQUFDLGdDQUFnQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQztTQUNyRTtRQUNELElBQUksT0FBTyxFQUFFO1lBQ1QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQ0FBZ0MsQ0FBQyxPQUFPLENBQUMsR0FBRyxPQUFPLENBQUM7U0FDeEU7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sd0JBQXdCLENBQUMsR0FBVyxFQUFFLFdBQXlCO1FBQ2xFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ25CLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1NBQ3pCO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxXQUFXLENBQUM7UUFDcEMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLHFCQUFxQixDQUFDLFdBQTBDO1FBQ25FLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxLQUFLO1FBQ1IsT0FBTyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDOUMsQ0FBQztJQUVNLGNBQWM7UUFDakIsTUFBTSxxQkFBcUIsR0FBRyxZQUFZLENBQUMsZUFBZSxDQUFDO1lBQ3ZELElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQywwQkFBMEI7U0FDMUUsQ0FBQyxDQUFDO1FBRUgsTUFBTSxTQUFTLEdBQWtCLEVBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNqQixTQUFTLENBQUMsU0FBUyxHQUFHO2dCQUNsQixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVc7Z0JBQzVCLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBYTthQUNuQyxDQUFDO1lBQ0YsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNkLFNBQVMsQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7YUFDOUM7U0FDSjtRQUNELElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNsQixTQUFTLENBQUMsb0JBQW9CLEdBQUcsRUFBQyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUMsQ0FBQztTQUMxRDtRQUNELFNBQVMsQ0FBQyxnQkFBZ0IsR0FBRztZQUN6QixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3JCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7U0FDNUIsQ0FBQztRQUNGLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxQyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxnQ0FBZ0MsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUMzRCxxQkFBcUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQ0FBZ0MsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQ2xHO1FBRUQsYUFBYTtRQUNiLE1BQU0scUJBQXFCLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztRQUMvRSxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsRUFBQyxHQUFHLFNBQVMsRUFBQyxDQUFDLENBQUM7UUFDL0MsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsZ0NBQWdDLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDM0QscUJBQXFCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsZ0NBQWdDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUNsRztRQUNELHFCQUFxQixDQUFDLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBRTdELFlBQVk7UUFDWixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDYixNQUFNLFlBQVksR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztZQUNoRixZQUFZLENBQUMsUUFBUSxDQUFDLEVBQUMsR0FBRyxTQUFTLEVBQUMsQ0FBQyxDQUFDO1lBQ3RDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLGdDQUFnQyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUMxRCxZQUFZLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsZ0NBQWdDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUN4RjtZQUNELHFCQUFxQixDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUN2RDtRQUNELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNqQixNQUFNLFlBQVksR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztZQUNwRixZQUFZLENBQUMsUUFBUSxDQUFDLEVBQUMsR0FBRyxTQUFTLEVBQUMsQ0FBQyxDQUFDO1lBQ3RDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLGdDQUFnQyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUM5RCxZQUFZLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsZ0NBQWdDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQzthQUM1RjtZQUNELHFCQUFxQixDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUN2RDtRQUNELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNkLE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO1lBQ2pGLFlBQVksQ0FBQyxRQUFRLENBQUMsRUFBQyxHQUFHLFNBQVMsRUFBQyxDQUFDLENBQUM7WUFDdEMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsZ0NBQWdDLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQzNELFlBQVksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQ0FBZ0MsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2FBQ3pGO1lBQ0QscUJBQXFCLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ3ZEO1FBRUQsT0FBTyxxQkFBcUIsQ0FBQztJQUNqQyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1R5cGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtSb3V0ZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHtNbmdBY3Rpb25Sb3V0ZUNvbXBvbmVudH0gZnJvbSAnLi4vY29tcG9uZW50cy9hY3Rpb24nO1xuaW1wb3J0IHtUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllc30gZnJvbSAnLi4vY29tcG9uZW50cy9hY3Rpb24vbW9kZWxzJztcbmltcG9ydCB7QU1uZ1RhYmxldmlld1JvdXRlQ29tcG9uZW50LCBNbmdUYWJsZXZpZXdSb3V0ZUNvbXBvbmVudH0gZnJvbSAnLi4vY29tcG9uZW50cy90YWJsZXZpZXcnO1xuaW1wb3J0IHtJVGFibGV2aWV3RGF0YVByb3ZpZGVyfSBmcm9tICcuLi9kYXRhLXByb3ZpZGVycyc7XG5pbXBvcnQge0FjdGlvbkRlc2NyaXB0b3IsIEFjdGlvbkVkaXRvckFkZERlc2NyaXB0b3IsIEFjdGlvbkVkaXRvckRldGFpbHNEZXNjcmlwdG9yLCBBY3Rpb25FZGl0b3JFZGl0RGVzY3JpcHRvciwgVGFibGV2aWV3RGVzY3JpcHRvcn0gZnJvbSAnLi4vZGVzY3JpcHRvcnMnO1xuaW1wb3J0IHtBUGVybWlzc2lvbnN9IGZyb20gJy4uL3NlY3VyaXR5L21vZGVsJztcbmltcG9ydCB7TW5nUm91dGVyRGF0YX0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHtSb3V0ZUJ1aWxkZXJ9IGZyb20gJy4vcm91dGUtYnVpbGRlcic7XG5cbmV4cG9ydCBjbGFzcyBUYWJsZXZpZXdSb3V0ZUJ1aWxkZXI8QyBleHRlbmRzIEFNbmdUYWJsZXZpZXdSb3V0ZUNvbXBvbmVudDxhbnksIGFueT4+IHtcbiAgICBwcml2YXRlIGRlc2NyaXB0b3I/OiBUYWJsZXZpZXdEZXNjcmlwdG9yPGFueT47XG4gICAgcHJpdmF0ZSBkYXRhUHJvdmlkZXI/OiBJVGFibGV2aWV3RGF0YVByb3ZpZGVyPGFueSwgYW55PjtcbiAgICBwcml2YXRlIGFjdGlvbnM/OiBBcnJheTxBY3Rpb25EZXNjcmlwdG9yPGFueT4+O1xuXG4gICAgcHJpdmF0ZSBjb21wb25lbnQ/OiBUeXBlPEM+O1xuXG4gICAgcHJpdmF0ZSBoYXNEZXRhaWxzID0gdHJ1ZTtcbiAgICBwcml2YXRlIGRldGFpbHNQYXRoID0gJzppdGVtSWQnO1xuICAgIHByaXZhdGUgaGFzRWRpdCA9IHRydWU7XG4gICAgcHJpdmF0ZSBlZGl0UGF0aCA9ICc6aXRlbUlkL2VkaXQnO1xuICAgIHByaXZhdGUgaGFzQWRkID0gdHJ1ZTtcbiAgICBwcml2YXRlIGFkZFBhdGggPSAnYWRkJztcbiAgICBwcml2YXRlIGhhc0RlbGV0ZSA9IHRydWU7XG5cbiAgICBwcml2YXRlIHBlcm1pc3Npb25zPzoge1xuICAgICAgICBba2V5OiBzdHJpbmddOiBBUGVybWlzc2lvbnM7XG4gICAgfTtcblxuICAgIHByaXZhdGUgY29uc3RydWN0b3IocHJpdmF0ZSBwYXRoOiBzdHJpbmcpIHt9XG5cbiAgICBwdWJsaWMgc3RhdGljIGZyb21Db21wb25lbnQ8QyBleHRlbmRzIEFNbmdUYWJsZXZpZXdSb3V0ZUNvbXBvbmVudDxhbnksIGFueT4+KHBhdGg6IHN0cmluZywgY29tcG9uZW50OiBUeXBlPEM+KTogVGFibGV2aWV3Um91dGVCdWlsZGVyPEM+IHtcbiAgICAgICAgY29uc3QgaW5zdCA9IG5ldyBUYWJsZXZpZXdSb3V0ZUJ1aWxkZXI8Qz4ocGF0aCk7XG4gICAgICAgIGluc3QuY29tcG9uZW50ID0gY29tcG9uZW50O1xuICAgICAgICByZXR1cm4gaW5zdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGZyb20oXG4gICAgICAgIHBhdGg6IHN0cmluZyxcbiAgICAgICAgZGVzY3JpcHRvcjogVGFibGV2aWV3RGVzY3JpcHRvcjxhbnk+LFxuICAgICAgICBkYXRhUHJvdmlkZXI6IElUYWJsZXZpZXdEYXRhUHJvdmlkZXI8YW55LCBhbnk+LFxuICAgICAgICBhY3Rpb25zOiBBcnJheTxBY3Rpb25EZXNjcmlwdG9yPGFueT4+XG4gICAgKTogVGFibGV2aWV3Um91dGVCdWlsZGVyPG5ldmVyPiB7XG4gICAgICAgIGNvbnN0IGluc3QgPSBuZXcgVGFibGV2aWV3Um91dGVCdWlsZGVyPG5ldmVyPihwYXRoKTtcbiAgICAgICAgaW5zdC5kZXNjcmlwdG9yID0gZGVzY3JpcHRvcjtcbiAgICAgICAgaW5zdC5kYXRhUHJvdmlkZXIgPSBkYXRhUHJvdmlkZXI7XG4gICAgICAgIGluc3QuYWN0aW9ucyA9IGFjdGlvbnM7XG5cbiAgICAgICAgaW5zdC5oYXNEZXRhaWxzID0gZmFsc2U7XG4gICAgICAgIGluc3QuaGFzQWRkID0gZmFsc2U7XG4gICAgICAgIGluc3QuaGFzRWRpdCA9IGZhbHNlO1xuICAgICAgICBmb3IgKGNvbnN0IGFjdGlvbiBvZiBpbnN0LmFjdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChhY3Rpb24gaW5zdGFuY2VvZiBBY3Rpb25FZGl0b3JEZXRhaWxzRGVzY3JpcHRvcikge1xuICAgICAgICAgICAgICAgIGluc3QuaGFzRGV0YWlscyA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbiBpbnN0YW5jZW9mIEFjdGlvbkVkaXRvckFkZERlc2NyaXB0b3IpIHtcbiAgICAgICAgICAgICAgICBpbnN0Lmhhc0FkZCA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbiBpbnN0YW5jZW9mIEFjdGlvbkVkaXRvckVkaXREZXNjcmlwdG9yKSB7XG4gICAgICAgICAgICAgICAgaW5zdC5oYXNFZGl0ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpbnN0O1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUmVhZE9ubHkocGVybWlzc2lvbnM/OiBBUGVybWlzc2lvbnMpOiB0aGlzIHtcbiAgICAgICAgaWYgKHBlcm1pc3Npb25zKSB7XG4gICAgICAgICAgICB0aGlzLndpdGhQZXJtaXNzaW9ucyhwZXJtaXNzaW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy53aXRoQWRkKGZhbHNlKTtcbiAgICAgICAgdGhpcy53aXRoRWRpdChmYWxzZSk7XG4gICAgICAgIHRoaXMud2l0aERlbGV0ZShmYWxzZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRGV0YWlscyhoYXNEZXRhaWxzID0gdHJ1ZSwgcGVybWlzc2lvbnM/OiBBUGVybWlzc2lvbnMsIHBhdGg/OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5oYXNEZXRhaWxzID0gaGFzRGV0YWlscztcbiAgICAgICAgaWYgKHBlcm1pc3Npb25zKSB7XG4gICAgICAgICAgICB0aGlzLndpdGhQZXJtaXNzaW9ucyh1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHBlcm1pc3Npb25zKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGF0aCkge1xuICAgICAgICAgICAgdGhpcy5kZXRhaWxzUGF0aCA9IHBhdGg7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhBZGQoaGFzQWRkID0gdHJ1ZSwgcGVybWlzc2lvbnM/OiBBUGVybWlzc2lvbnMsIHBhdGg/OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5oYXNBZGQgPSBoYXNBZGQ7XG4gICAgICAgIGlmIChwZXJtaXNzaW9ucykge1xuICAgICAgICAgICAgdGhpcy53aXRoUGVybWlzc2lvbnModW5kZWZpbmVkLCBwZXJtaXNzaW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhdGgpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkUGF0aCA9IHBhdGg7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhFZGl0KGhhc0VkaXQgPSB0cnVlLCBwZXJtaXNzaW9ucz86IEFQZXJtaXNzaW9ucywgcGF0aD86IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLmhhc0VkaXQgPSBoYXNFZGl0O1xuICAgICAgICBpZiAocGVybWlzc2lvbnMpIHtcbiAgICAgICAgICAgIHRoaXMud2l0aFBlcm1pc3Npb25zKHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBwZXJtaXNzaW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhdGgpIHtcbiAgICAgICAgICAgIHRoaXMuZWRpdFBhdGggPSBwYXRoO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRGVsZXRlKGhhc0RlbGV0ZSA9IHRydWUsIHBlcm1pc3Npb25zPzogQVBlcm1pc3Npb25zKTogdGhpcyB7XG4gICAgICAgIHRoaXMuaGFzRGVsZXRlID0gaGFzRGVsZXRlO1xuICAgICAgICBpZiAocGVybWlzc2lvbnMpIHtcbiAgICAgICAgICAgIHRoaXMud2l0aFBlcm1pc3Npb25zKHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHBlcm1pc3Npb25zKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFBlcm1pc3Npb25zKHJlYWQ/OiBBUGVybWlzc2lvbnMsIGFkZD86IEFQZXJtaXNzaW9ucywgZWRpdD86IEFQZXJtaXNzaW9ucywgZGVsZXQ/OiBBUGVybWlzc2lvbnMsIGRldGFpbHM/OiBBUGVybWlzc2lvbnMpOiB0aGlzIHtcbiAgICAgICAgaWYgKCF0aGlzLnBlcm1pc3Npb25zKSB7XG4gICAgICAgICAgICB0aGlzLnBlcm1pc3Npb25zID0ge307XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlYWQpIHtcbiAgICAgICAgICAgIHRoaXMucGVybWlzc2lvbnNbVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuUkVBRF0gPSByZWFkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhZGQpIHtcbiAgICAgICAgICAgIHRoaXMucGVybWlzc2lvbnNbVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuQUREXSA9IGFkZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZWRpdCkge1xuICAgICAgICAgICAgdGhpcy5wZXJtaXNzaW9uc1tUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5FRElUXSA9IGVkaXQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRlbGV0KSB7XG4gICAgICAgICAgICB0aGlzLnBlcm1pc3Npb25zW1RhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLkRFTEVURV0gPSBkZWxldDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGV0YWlscykge1xuICAgICAgICAgICAgdGhpcy5wZXJtaXNzaW9uc1tUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5ERVRBSUxTXSA9IGRldGFpbHM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhQZXJtaXNzaW9uQnlDYXRlZ29yeShrZXk6IHN0cmluZywgcGVybWlzc2lvbnM6IEFQZXJtaXNzaW9ucyk6IHRoaXMge1xuICAgICAgICBpZiAoIXRoaXMucGVybWlzc2lvbnMpIHtcbiAgICAgICAgICAgIHRoaXMucGVybWlzc2lvbnMgPSB7fTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBlcm1pc3Npb25zW2tleV0gPSBwZXJtaXNzaW9ucztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhQZXJtaXNzaW9uc09iamVjdChwZXJtaXNzaW9uczoge1trZXk6IHN0cmluZ106IEFQZXJtaXNzaW9uc30pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5wZXJtaXNzaW9ucyA9IHBlcm1pc3Npb25zO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYnVpbGQoKTogUm91dGUge1xuICAgICAgICByZXR1cm4gdGhpcy50b1JvdXRlQnVpbGRlcigpLmJ1aWxkUm91dGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9Sb3V0ZUJ1aWxkZXIoKTogUm91dGVCdWlsZGVyIHtcbiAgICAgICAgY29uc3QgdGFibGV2aWV3Um91dGVCdWlsZGVyID0gUm91dGVCdWlsZGVyLmNyZWF0ZUZyb21Sb3V0ZSh7XG4gICAgICAgICAgICBwYXRoOiB0aGlzLnBhdGgsXG4gICAgICAgICAgICBjb21wb25lbnQ6IHRoaXMuY29tcG9uZW50ID8gdGhpcy5jb21wb25lbnQgOiBNbmdUYWJsZXZpZXdSb3V0ZUNvbXBvbmVudFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCByb3V0ZURhdGE6IE1uZ1JvdXRlckRhdGEgPSB7fTtcbiAgICAgICAgaWYgKCF0aGlzLmNvbXBvbmVudCkge1xuICAgICAgICAgICAgcm91dGVEYXRhLnRhYmxldmlldyA9IHtcbiAgICAgICAgICAgICAgICBkZXNjcmlwdG9yOiB0aGlzLmRlc2NyaXB0b3IhLFxuICAgICAgICAgICAgICAgIGRhdGFQcm92aWRlcjogdGhpcy5kYXRhUHJvdmlkZXIhXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKHRoaXMuYWN0aW9ucykge1xuICAgICAgICAgICAgICAgIHJvdXRlRGF0YS50YWJsZXZpZXcuYWN0aW9ucyA9IHRoaXMuYWN0aW9ucztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wZXJtaXNzaW9ucykge1xuICAgICAgICAgICAgcm91dGVEYXRhLnRhYmxldmlld1Blcm1pc3Npb25zID0gey4uLnRoaXMucGVybWlzc2lvbnN9O1xuICAgICAgICB9XG4gICAgICAgIHJvdXRlRGF0YS50YWJsZXZpZXdBY3Rpb25zID0ge1xuICAgICAgICAgICAgaGFzQWRkOiB0aGlzLmhhc0FkZCxcbiAgICAgICAgICAgIGhhc0VkaXQ6IHRoaXMuaGFzRWRpdCxcbiAgICAgICAgICAgIGhhc0RldGFpbHM6IHRoaXMuaGFzRGV0YWlscyxcbiAgICAgICAgICAgIGhhc0RlbGV0ZTogdGhpcy5oYXNEZWxldGVcbiAgICAgICAgfTtcbiAgICAgICAgdGFibGV2aWV3Um91dGVCdWlsZGVyLndpdGhEYXRhKHJvdXRlRGF0YSk7XG4gICAgICAgIGlmICh0aGlzLnBlcm1pc3Npb25zPy5bVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuUkVBRF0pIHtcbiAgICAgICAgICAgIHRhYmxldmlld1JvdXRlQnVpbGRlci53aXRoUGVybWlzc2lvbnModGhpcy5wZXJtaXNzaW9uc1tUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5SRUFEXSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBsaXN0IHJvdXRlXG4gICAgICAgIGNvbnN0IHJvb3RDaGlsZFJvdXRlQnVpbGRlciA9IFJvdXRlQnVpbGRlci5jcmVhdGUoJycsIE1uZ0FjdGlvblJvdXRlQ29tcG9uZW50KTtcbiAgICAgICAgcm9vdENoaWxkUm91dGVCdWlsZGVyLndpdGhEYXRhKHsuLi5yb3V0ZURhdGF9KTtcbiAgICAgICAgaWYgKHRoaXMucGVybWlzc2lvbnM/LltUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5SRUFEXSkge1xuICAgICAgICAgICAgcm9vdENoaWxkUm91dGVCdWlsZGVyLndpdGhQZXJtaXNzaW9ucyh0aGlzLnBlcm1pc3Npb25zW1RhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLlJFQURdKTtcbiAgICAgICAgfVxuICAgICAgICB0YWJsZXZpZXdSb3V0ZUJ1aWxkZXIuYWRkQ2hpbGRCdWlsZGVyKHJvb3RDaGlsZFJvdXRlQnVpbGRlcik7XG5cbiAgICAgICAgLy8gYWRkIHJvdXRlXG4gICAgICAgIGlmICh0aGlzLmhhc0FkZCkge1xuICAgICAgICAgICAgY29uc3Qgcm91dGVCdWlsZGVyID0gUm91dGVCdWlsZGVyLmNyZWF0ZSh0aGlzLmFkZFBhdGgsIE1uZ0FjdGlvblJvdXRlQ29tcG9uZW50KTtcbiAgICAgICAgICAgIHJvdXRlQnVpbGRlci53aXRoRGF0YSh7Li4ucm91dGVEYXRhfSk7XG4gICAgICAgICAgICBpZiAodGhpcy5wZXJtaXNzaW9ucz8uW1RhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLkFERF0pIHtcbiAgICAgICAgICAgICAgICByb3V0ZUJ1aWxkZXIud2l0aFBlcm1pc3Npb25zKHRoaXMucGVybWlzc2lvbnNbVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuQUREXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0YWJsZXZpZXdSb3V0ZUJ1aWxkZXIuYWRkQ2hpbGRCdWlsZGVyKHJvdXRlQnVpbGRlcik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaGFzRGV0YWlscykge1xuICAgICAgICAgICAgY29uc3Qgcm91dGVCdWlsZGVyID0gUm91dGVCdWlsZGVyLmNyZWF0ZSh0aGlzLmRldGFpbHNQYXRoLCBNbmdBY3Rpb25Sb3V0ZUNvbXBvbmVudCk7XG4gICAgICAgICAgICByb3V0ZUJ1aWxkZXIud2l0aERhdGEoey4uLnJvdXRlRGF0YX0pO1xuICAgICAgICAgICAgaWYgKHRoaXMucGVybWlzc2lvbnM/LltUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5ERVRBSUxTXSkge1xuICAgICAgICAgICAgICAgIHJvdXRlQnVpbGRlci53aXRoUGVybWlzc2lvbnModGhpcy5wZXJtaXNzaW9uc1tUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5ERVRBSUxTXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0YWJsZXZpZXdSb3V0ZUJ1aWxkZXIuYWRkQ2hpbGRCdWlsZGVyKHJvdXRlQnVpbGRlcik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaGFzRWRpdCkge1xuICAgICAgICAgICAgY29uc3Qgcm91dGVCdWlsZGVyID0gUm91dGVCdWlsZGVyLmNyZWF0ZSh0aGlzLmVkaXRQYXRoLCBNbmdBY3Rpb25Sb3V0ZUNvbXBvbmVudCk7XG4gICAgICAgICAgICByb3V0ZUJ1aWxkZXIud2l0aERhdGEoey4uLnJvdXRlRGF0YX0pO1xuICAgICAgICAgICAgaWYgKHRoaXMucGVybWlzc2lvbnM/LltUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5FRElUXSkge1xuICAgICAgICAgICAgICAgIHJvdXRlQnVpbGRlci53aXRoUGVybWlzc2lvbnModGhpcy5wZXJtaXNzaW9uc1tUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5FRElUXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0YWJsZXZpZXdSb3V0ZUJ1aWxkZXIuYWRkQ2hpbGRCdWlsZGVyKHJvdXRlQnVpbGRlcik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGFibGV2aWV3Um91dGVCdWlsZGVyO1xuICAgIH1cbn1cbiJdfQ==
1
+ import { MngActionRouteComponent } from '../components/action';
2
+ import { TableviewActionDefaultCategories } from '../components/action/models';
3
+ import { MngTableviewRouteComponent } from '../components/tableview';
4
+ import { ActionEditorAddDescriptor, ActionEditorDetailsDescriptor, ActionEditorEditDescriptor } from '../descriptors/action';
5
+ import { RouteBuilder } from './route-builder';
6
+ export class TableviewRouteBuilder {
7
+ constructor(path) {
8
+ this.path = path;
9
+ this.hasDetails = true;
10
+ this.detailsPath = ':itemId';
11
+ this.hasEdit = true;
12
+ this.editPath = ':itemId/edit';
13
+ this.hasAdd = true;
14
+ this.addPath = 'add';
15
+ this.hasDelete = true;
16
+ }
17
+ static fromComponent(path, component) {
18
+ const inst = new TableviewRouteBuilder(path);
19
+ inst.component = component;
20
+ return inst;
21
+ }
22
+ static from(path, descriptor, dataProvider, actions) {
23
+ const inst = new TableviewRouteBuilder(path);
24
+ inst.descriptor = descriptor;
25
+ inst.dataProvider = dataProvider;
26
+ inst.actions = actions;
27
+ inst.hasDetails = false;
28
+ inst.hasAdd = false;
29
+ inst.hasEdit = false;
30
+ for (const action of inst.actions) {
31
+ if (action instanceof ActionEditorDetailsDescriptor) {
32
+ inst.hasDetails = true;
33
+ }
34
+ else if (action instanceof ActionEditorAddDescriptor) {
35
+ inst.hasAdd = true;
36
+ }
37
+ else if (action instanceof ActionEditorEditDescriptor) {
38
+ inst.hasEdit = true;
39
+ }
40
+ }
41
+ return inst;
42
+ }
43
+ withReadOnly(permissions) {
44
+ if (permissions) {
45
+ this.withPermissions(permissions);
46
+ }
47
+ this.withAdd(false);
48
+ this.withEdit(false);
49
+ this.withDelete(false);
50
+ return this;
51
+ }
52
+ withDetails(hasDetails = true, permissions, path) {
53
+ this.hasDetails = hasDetails;
54
+ if (permissions) {
55
+ this.withPermissions(undefined, undefined, undefined, undefined, permissions);
56
+ }
57
+ if (path) {
58
+ this.detailsPath = path;
59
+ }
60
+ return this;
61
+ }
62
+ withAdd(hasAdd = true, permissions, path) {
63
+ this.hasAdd = hasAdd;
64
+ if (permissions) {
65
+ this.withPermissions(undefined, permissions);
66
+ }
67
+ if (path) {
68
+ this.addPath = path;
69
+ }
70
+ return this;
71
+ }
72
+ withEdit(hasEdit = true, permissions, path) {
73
+ this.hasEdit = hasEdit;
74
+ if (permissions) {
75
+ this.withPermissions(undefined, undefined, permissions);
76
+ }
77
+ if (path) {
78
+ this.editPath = path;
79
+ }
80
+ return this;
81
+ }
82
+ withDelete(hasDelete = true, permissions) {
83
+ this.hasDelete = hasDelete;
84
+ if (permissions) {
85
+ this.withPermissions(undefined, undefined, undefined, permissions);
86
+ }
87
+ return this;
88
+ }
89
+ withPermissions(read, add, edit, delet, details) {
90
+ if (!this.permissions) {
91
+ this.permissions = {};
92
+ }
93
+ if (read) {
94
+ this.permissions[TableviewActionDefaultCategories.READ] = read;
95
+ }
96
+ if (add) {
97
+ this.permissions[TableviewActionDefaultCategories.ADD] = add;
98
+ }
99
+ if (edit) {
100
+ this.permissions[TableviewActionDefaultCategories.EDIT] = edit;
101
+ }
102
+ if (delet) {
103
+ this.permissions[TableviewActionDefaultCategories.DELETE] = delet;
104
+ }
105
+ if (details) {
106
+ this.permissions[TableviewActionDefaultCategories.DETAILS] = details;
107
+ }
108
+ return this;
109
+ }
110
+ withPermissionByCategory(key, permissions) {
111
+ if (!this.permissions) {
112
+ this.permissions = {};
113
+ }
114
+ this.permissions[key] = permissions;
115
+ return this;
116
+ }
117
+ withPermissionsObject(permissions) {
118
+ this.permissions = permissions;
119
+ return this;
120
+ }
121
+ build() {
122
+ return this.toRouteBuilder().buildRoute();
123
+ }
124
+ toRouteBuilder() {
125
+ const tableviewRouteBuilder = RouteBuilder.createFromRoute({
126
+ path: this.path,
127
+ component: this.component ? this.component : MngTableviewRouteComponent
128
+ });
129
+ const routeData = {};
130
+ if (!this.component) {
131
+ routeData.tableview = {
132
+ descriptor: this.descriptor,
133
+ dataProvider: this.dataProvider
134
+ };
135
+ if (this.actions) {
136
+ routeData.tableview.actions = this.actions;
137
+ }
138
+ }
139
+ if (this.permissions) {
140
+ routeData.tableviewPermissions = { ...this.permissions };
141
+ }
142
+ routeData.tableviewActions = {
143
+ hasAdd: this.hasAdd,
144
+ hasEdit: this.hasEdit,
145
+ hasDetails: this.hasDetails,
146
+ hasDelete: this.hasDelete
147
+ };
148
+ tableviewRouteBuilder.withData(routeData);
149
+ if (this.permissions?.[TableviewActionDefaultCategories.READ]) {
150
+ tableviewRouteBuilder.withPermissions(this.permissions[TableviewActionDefaultCategories.READ]);
151
+ }
152
+ // list route
153
+ const rootChildRouteBuilder = RouteBuilder.create('', MngActionRouteComponent);
154
+ rootChildRouteBuilder.withData({ ...routeData });
155
+ if (this.permissions?.[TableviewActionDefaultCategories.READ]) {
156
+ rootChildRouteBuilder.withPermissions(this.permissions[TableviewActionDefaultCategories.READ]);
157
+ }
158
+ tableviewRouteBuilder.addChildBuilder(rootChildRouteBuilder);
159
+ // add route
160
+ if (this.hasAdd) {
161
+ const routeBuilder = RouteBuilder.create(this.addPath, MngActionRouteComponent);
162
+ routeBuilder.withData({ ...routeData });
163
+ if (this.permissions?.[TableviewActionDefaultCategories.ADD]) {
164
+ routeBuilder.withPermissions(this.permissions[TableviewActionDefaultCategories.ADD]);
165
+ }
166
+ tableviewRouteBuilder.addChildBuilder(routeBuilder);
167
+ }
168
+ if (this.hasDetails) {
169
+ const routeBuilder = RouteBuilder.create(this.detailsPath, MngActionRouteComponent);
170
+ routeBuilder.withData({ ...routeData });
171
+ if (this.permissions?.[TableviewActionDefaultCategories.DETAILS]) {
172
+ routeBuilder.withPermissions(this.permissions[TableviewActionDefaultCategories.DETAILS]);
173
+ }
174
+ tableviewRouteBuilder.addChildBuilder(routeBuilder);
175
+ }
176
+ if (this.hasEdit) {
177
+ const routeBuilder = RouteBuilder.create(this.editPath, MngActionRouteComponent);
178
+ routeBuilder.withData({ ...routeData });
179
+ if (this.permissions?.[TableviewActionDefaultCategories.EDIT]) {
180
+ routeBuilder.withPermissions(this.permissions[TableviewActionDefaultCategories.EDIT]);
181
+ }
182
+ tableviewRouteBuilder.addChildBuilder(routeBuilder);
183
+ }
184
+ return tableviewRouteBuilder;
185
+ }
186
+ }
187
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LXJvdXRlLWJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3JvdXRlci90YWJsZXZpZXctcm91dGUtYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RCxPQUFPLEVBQUMsZ0NBQWdDLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RSxPQUFPLEVBQThCLDBCQUEwQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFFaEcsT0FBTyxFQUFtQix5QkFBeUIsRUFBRSw2QkFBNkIsRUFBRSwwQkFBMEIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBSTdJLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUU3QyxNQUFNLE9BQU8scUJBQXFCO0lBbUI5QixZQUE0QixJQUFZO1FBQVosU0FBSSxHQUFKLElBQUksQ0FBUTtRQVpoQyxlQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLGdCQUFXLEdBQUcsU0FBUyxDQUFDO1FBQ3hCLFlBQU8sR0FBRyxJQUFJLENBQUM7UUFDZixhQUFRLEdBQUcsY0FBYyxDQUFDO1FBQzFCLFdBQU0sR0FBRyxJQUFJLENBQUM7UUFDZCxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLGNBQVMsR0FBRyxJQUFJLENBQUM7SUFNa0IsQ0FBQztJQUVyQyxNQUFNLENBQUMsYUFBYSxDQUFrRCxJQUFZLEVBQUUsU0FBa0I7UUFDekcsTUFBTSxJQUFJLEdBQUcsSUFBSSxxQkFBcUIsQ0FBSSxJQUFJLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sTUFBTSxDQUFDLElBQUksQ0FDZCxJQUFZLEVBQ1osVUFBb0MsRUFDcEMsWUFBOEMsRUFDOUMsT0FBcUM7UUFFckMsTUFB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O1lBQ3BGLFlBQVksQ0FBQyxRQUFRLENBQUMsRUFBQyxHQUFHLFNBQVMsRUFBQyxDQUFDLENBQUM7WUFDdEMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsZ0NBQWdDLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQzlELFlBQVksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQ0FBZ0MsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2FBQzVGO1lBQ0QscUJBQXFCLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ3ZEO1FBQ0QsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2QsTUFBTSxZQUFZLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLHVCQUF1QixDQUFDLENBQUM7WUFDakYsWUFBWSxDQUFDLFFBQVEsQ0FBQyxFQUFDLEdBQUcsU0FBUyxFQUFDLENBQUMsQ0FBQztZQUN0QyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxnQ0FBZ0MsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDM0QsWUFBWSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGdDQUFnQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDekY7WUFDRCxxQkFBcUIsQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDdkQ7UUFFRCxPQUFPLHFCQUFxQixDQUFDO0lBQ2pDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VHlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1JvdXRlfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge01uZ0FjdGlvblJvdXRlQ29tcG9uZW50fSBmcm9tICcuLi9jb21wb25lbnRzL2FjdGlvbic7XG5pbXBvcnQge1RhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzfSBmcm9tICcuLi9jb21wb25lbnRzL2FjdGlvbi9tb2RlbHMnO1xuaW1wb3J0IHtBTW5nVGFibGV2aWV3Um91dGVDb21wb25lbnQsIE1uZ1RhYmxldmlld1JvdXRlQ29tcG9uZW50fSBmcm9tICcuLi9jb21wb25lbnRzL3RhYmxldmlldyc7XG5pbXBvcnQge0lUYWJsZXZpZXdEYXRhUHJvdmlkZXJ9IGZyb20gJy4uL2RhdGEtcHJvdmlkZXJzJztcbmltcG9ydCB7QWN0aW9uRGVzY3JpcHRvciwgQWN0aW9uRWRpdG9yQWRkRGVzY3JpcHRvciwgQWN0aW9uRWRpdG9yRGV0YWlsc0Rlc2NyaXB0b3IsIEFjdGlvbkVkaXRvckVkaXREZXNjcmlwdG9yfSBmcm9tICcuLi9kZXNjcmlwdG9ycy9hY3Rpb24nO1xuaW1wb3J0IHtUYWJsZXZpZXdEZXNjcmlwdG9yfSBmcm9tICcuLi9kZXNjcmlwdG9ycy90YWJsZXZpZXcnO1xuaW1wb3J0IHtBUGVybWlzc2lvbnN9IGZyb20gJy4uL3NlY3VyaXR5L21vZGVsJztcbmltcG9ydCB7TW5nUm91dGVyRGF0YX0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHtSb3V0ZUJ1aWxkZXJ9IGZyb20gJy4vcm91dGUtYnVpbGRlcic7XG5cbmV4cG9ydCBjbGFzcyBUYWJsZXZpZXdSb3V0ZUJ1aWxkZXI8QyBleHRlbmRzIEFNbmdUYWJsZXZpZXdSb3V0ZUNvbXBvbmVudDxhbnksIGFueT4+IHtcbiAgICBwcml2YXRlIGRlc2NyaXB0b3I/OiBUYWJsZXZpZXdEZXNjcmlwdG9yPGFueT47XG4gICAgcHJpdmF0ZSBkYXRhUHJvdmlkZXI/OiBJVGFibGV2aWV3RGF0YVByb3ZpZGVyPGFueSwgYW55PjtcbiAgICBwcml2YXRlIGFjdGlvbnM/OiBBcnJheTxBY3Rpb25EZXNjcmlwdG9yPGFueT4+O1xuXG4gICAgcHJpdmF0ZSBjb21wb25lbnQ/OiBUeXBlPEM+O1xuXG4gICAgcHJpdmF0ZSBoYXNEZXRhaWxzID0gdHJ1ZTtcbiAgICBwcml2YXRlIGRldGFpbHNQYXRoID0gJzppdGVtSWQnO1xuICAgIHByaXZhdGUgaGFzRWRpdCA9IHRydWU7XG4gICAgcHJpdmF0ZSBlZGl0UGF0aCA9ICc6aXRlbUlkL2VkaXQnO1xuICAgIHByaXZhdGUgaGFzQWRkID0gdHJ1ZTtcbiAgICBwcml2YXRlIGFkZFBhdGggPSAnYWRkJztcbiAgICBwcml2YXRlIGhhc0RlbGV0ZSA9IHRydWU7XG5cbiAgICBwcml2YXRlIHBlcm1pc3Npb25zPzoge1xuICAgICAgICBba2V5OiBzdHJpbmddOiBBUGVybWlzc2lvbnM7XG4gICAgfTtcblxuICAgIHByaXZhdGUgY29uc3RydWN0b3IocHJpdmF0ZSBwYXRoOiBzdHJpbmcpIHt9XG5cbiAgICBwdWJsaWMgc3RhdGljIGZyb21Db21wb25lbnQ8QyBleHRlbmRzIEFNbmdUYWJsZXZpZXdSb3V0ZUNvbXBvbmVudDxhbnksIGFueT4+KHBhdGg6IHN0cmluZywgY29tcG9uZW50OiBUeXBlPEM+KTogVGFibGV2aWV3Um91dGVCdWlsZGVyPEM+IHtcbiAgICAgICAgY29uc3QgaW5zdCA9IG5ldyBUYWJsZXZpZXdSb3V0ZUJ1aWxkZXI8Qz4ocGF0aCk7XG4gICAgICAgIGluc3QuY29tcG9uZW50ID0gY29tcG9uZW50O1xuICAgICAgICByZXR1cm4gaW5zdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGZyb20oXG4gICAgICAgIHBhdGg6IHN0cmluZyxcbiAgICAgICAgZGVzY3JpcHRvcjogVGFibGV2aWV3RGVzY3JpcHRvcjxhbnk+LFxuICAgICAgICBkYXRhUHJvdmlkZXI6IElUYWJsZXZpZXdEYXRhUHJvdmlkZXI8YW55LCBhbnk+LFxuICAgICAgICBhY3Rpb25zOiBBcnJheTxBY3Rpb25EZXNjcmlwdG9yPGFueT4+XG4gICAgKTogVGFibGV2aWV3Um91dGVCdWlsZGVyPG5ldmVyPiB7XG4gICAgICAgIGNvbnN0IGluc3QgPSBuZXcgVGFibGV2aWV3Um91dGVCdWlsZGVyPG5ldmVyPihwYXRoKTtcbiAgICAgICAgaW5zdC5kZXNjcmlwdG9yID0gZGVzY3JpcHRvcjtcbiAgICAgICAgaW5zdC5kYXRhUHJvdmlkZXIgPSBkYXRhUHJvdmlkZXI7XG4gICAgICAgIGluc3QuYWN0aW9ucyA9IGFjdGlvbnM7XG5cbiAgICAgICAgaW5zdC5oYXNEZXRhaWxzID0gZmFsc2U7XG4gICAgICAgIGluc3QuaGFzQWRkID0gZmFsc2U7XG4gICAgICAgIGluc3QuaGFzRWRpdCA9IGZhbHNlO1xuICAgICAgICBmb3IgKGNvbnN0IGFjdGlvbiBvZiBpbnN0LmFjdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChhY3Rpb24gaW5zdGFuY2VvZiBBY3Rpb25FZGl0b3JEZXRhaWxzRGVzY3JpcHRvcikge1xuICAgICAgICAgICAgICAgIGluc3QuaGFzRGV0YWlscyA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbiBpbnN0YW5jZW9mIEFjdGlvbkVkaXRvckFkZERlc2NyaXB0b3IpIHtcbiAgICAgICAgICAgICAgICBpbnN0Lmhhc0FkZCA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbiBpbnN0YW5jZW9mIEFjdGlvbkVkaXRvckVkaXREZXNjcmlwdG9yKSB7XG4gICAgICAgICAgICAgICAgaW5zdC5oYXNFZGl0ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpbnN0O1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUmVhZE9ubHkocGVybWlzc2lvbnM/OiBBUGVybWlzc2lvbnMpOiB0aGlzIHtcbiAgICAgICAgaWYgKHBlcm1pc3Npb25zKSB7XG4gICAgICAgICAgICB0aGlzLndpdGhQZXJtaXNzaW9ucyhwZXJtaXNzaW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy53aXRoQWRkKGZhbHNlKTtcbiAgICAgICAgdGhpcy53aXRoRWRpdChmYWxzZSk7XG4gICAgICAgIHRoaXMud2l0aERlbGV0ZShmYWxzZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRGV0YWlscyhoYXNEZXRhaWxzID0gdHJ1ZSwgcGVybWlzc2lvbnM/OiBBUGVybWlzc2lvbnMsIHBhdGg/OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5oYXNEZXRhaWxzID0gaGFzRGV0YWlscztcbiAgICAgICAgaWYgKHBlcm1pc3Npb25zKSB7XG4gICAgICAgICAgICB0aGlzLndpdGhQZXJtaXNzaW9ucyh1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHBlcm1pc3Npb25zKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGF0aCkge1xuICAgICAgICAgICAgdGhpcy5kZXRhaWxzUGF0aCA9IHBhdGg7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhBZGQoaGFzQWRkID0gdHJ1ZSwgcGVybWlzc2lvbnM/OiBBUGVybWlzc2lvbnMsIHBhdGg/OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5oYXNBZGQgPSBoYXNBZGQ7XG4gICAgICAgIGlmIChwZXJtaXNzaW9ucykge1xuICAgICAgICAgICAgdGhpcy53aXRoUGVybWlzc2lvbnModW5kZWZpbmVkLCBwZXJtaXNzaW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhdGgpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkUGF0aCA9IHBhdGg7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhFZGl0KGhhc0VkaXQgPSB0cnVlLCBwZXJtaXNzaW9ucz86IEFQZXJtaXNzaW9ucywgcGF0aD86IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLmhhc0VkaXQgPSBoYXNFZGl0O1xuICAgICAgICBpZiAocGVybWlzc2lvbnMpIHtcbiAgICAgICAgICAgIHRoaXMud2l0aFBlcm1pc3Npb25zKHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBwZXJtaXNzaW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhdGgpIHtcbiAgICAgICAgICAgIHRoaXMuZWRpdFBhdGggPSBwYXRoO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRGVsZXRlKGhhc0RlbGV0ZSA9IHRydWUsIHBlcm1pc3Npb25zPzogQVBlcm1pc3Npb25zKTogdGhpcyB7XG4gICAgICAgIHRoaXMuaGFzRGVsZXRlID0gaGFzRGVsZXRlO1xuICAgICAgICBpZiAocGVybWlzc2lvbnMpIHtcbiAgICAgICAgICAgIHRoaXMud2l0aFBlcm1pc3Npb25zKHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHBlcm1pc3Npb25zKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFBlcm1pc3Npb25zKHJlYWQ/OiBBUGVybWlzc2lvbnMsIGFkZD86IEFQZXJtaXNzaW9ucywgZWRpdD86IEFQZXJtaXNzaW9ucywgZGVsZXQ/OiBBUGVybWlzc2lvbnMsIGRldGFpbHM/OiBBUGVybWlzc2lvbnMpOiB0aGlzIHtcbiAgICAgICAgaWYgKCF0aGlzLnBlcm1pc3Npb25zKSB7XG4gICAgICAgICAgICB0aGlzLnBlcm1pc3Npb25zID0ge307XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlYWQpIHtcbiAgICAgICAgICAgIHRoaXMucGVybWlzc2lvbnNbVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuUkVBRF0gPSByZWFkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhZGQpIHtcbiAgICAgICAgICAgIHRoaXMucGVybWlzc2lvbnNbVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuQUREXSA9IGFkZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZWRpdCkge1xuICAgICAgICAgICAgdGhpcy5wZXJtaXNzaW9uc1tUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5FRElUXSA9IGVkaXQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRlbGV0KSB7XG4gICAgICAgICAgICB0aGlzLnBlcm1pc3Npb25zW1RhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLkRFTEVURV0gPSBkZWxldDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGV0YWlscykge1xuICAgICAgICAgICAgdGhpcy5wZXJtaXNzaW9uc1tUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5ERVRBSUxTXSA9IGRldGFpbHM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhQZXJtaXNzaW9uQnlDYXRlZ29yeShrZXk6IHN0cmluZywgcGVybWlzc2lvbnM6IEFQZXJtaXNzaW9ucyk6IHRoaXMge1xuICAgICAgICBpZiAoIXRoaXMucGVybWlzc2lvbnMpIHtcbiAgICAgICAgICAgIHRoaXMucGVybWlzc2lvbnMgPSB7fTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBlcm1pc3Npb25zW2tleV0gPSBwZXJtaXNzaW9ucztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhQZXJtaXNzaW9uc09iamVjdChwZXJtaXNzaW9uczoge1trZXk6IHN0cmluZ106IEFQZXJtaXNzaW9uc30pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5wZXJtaXNzaW9ucyA9IHBlcm1pc3Npb25zO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYnVpbGQoKTogUm91dGUge1xuICAgICAgICByZXR1cm4gdGhpcy50b1JvdXRlQnVpbGRlcigpLmJ1aWxkUm91dGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9Sb3V0ZUJ1aWxkZXIoKTogUm91dGVCdWlsZGVyIHtcbiAgICAgICAgY29uc3QgdGFibGV2aWV3Um91dGVCdWlsZGVyID0gUm91dGVCdWlsZGVyLmNyZWF0ZUZyb21Sb3V0ZSh7XG4gICAgICAgICAgICBwYXRoOiB0aGlzLnBhdGgsXG4gICAgICAgICAgICBjb21wb25lbnQ6IHRoaXMuY29tcG9uZW50ID8gdGhpcy5jb21wb25lbnQgOiBNbmdUYWJsZXZpZXdSb3V0ZUNvbXBvbmVudFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCByb3V0ZURhdGE6IE1uZ1JvdXRlckRhdGEgPSB7fTtcbiAgICAgICAgaWYgKCF0aGlzLmNvbXBvbmVudCkge1xuICAgICAgICAgICAgcm91dGVEYXRhLnRhYmxldmlldyA9IHtcbiAgICAgICAgICAgICAgICBkZXNjcmlwdG9yOiB0aGlzLmRlc2NyaXB0b3IhLFxuICAgICAgICAgICAgICAgIGRhdGFQcm92aWRlcjogdGhpcy5kYXRhUHJvdmlkZXIhXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKHRoaXMuYWN0aW9ucykge1xuICAgICAgICAgICAgICAgIHJvdXRlRGF0YS50YWJsZXZpZXcuYWN0aW9ucyA9IHRoaXMuYWN0aW9ucztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wZXJtaXNzaW9ucykge1xuICAgICAgICAgICAgcm91dGVEYXRhLnRhYmxldmlld1Blcm1pc3Npb25zID0gey4uLnRoaXMucGVybWlzc2lvbnN9O1xuICAgICAgICB9XG4gICAgICAgIHJvdXRlRGF0YS50YWJsZXZpZXdBY3Rpb25zID0ge1xuICAgICAgICAgICAgaGFzQWRkOiB0aGlzLmhhc0FkZCxcbiAgICAgICAgICAgIGhhc0VkaXQ6IHRoaXMuaGFzRWRpdCxcbiAgICAgICAgICAgIGhhc0RldGFpbHM6IHRoaXMuaGFzRGV0YWlscyxcbiAgICAgICAgICAgIGhhc0RlbGV0ZTogdGhpcy5oYXNEZWxldGVcbiAgICAgICAgfTtcbiAgICAgICAgdGFibGV2aWV3Um91dGVCdWlsZGVyLndpdGhEYXRhKHJvdXRlRGF0YSk7XG4gICAgICAgIGlmICh0aGlzLnBlcm1pc3Npb25zPy5bVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuUkVBRF0pIHtcbiAgICAgICAgICAgIHRhYmxldmlld1JvdXRlQnVpbGRlci53aXRoUGVybWlzc2lvbnModGhpcy5wZXJtaXNzaW9uc1tUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5SRUFEXSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBsaXN0IHJvdXRlXG4gICAgICAgIGNvbnN0IHJvb3RDaGlsZFJvdXRlQnVpbGRlciA9IFJvdXRlQnVpbGRlci5jcmVhdGUoJycsIE1uZ0FjdGlvblJvdXRlQ29tcG9uZW50KTtcbiAgICAgICAgcm9vdENoaWxkUm91dGVCdWlsZGVyLndpdGhEYXRhKHsuLi5yb3V0ZURhdGF9KTtcbiAgICAgICAgaWYgKHRoaXMucGVybWlzc2lvbnM/LltUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5SRUFEXSkge1xuICAgICAgICAgICAgcm9vdENoaWxkUm91dGVCdWlsZGVyLndpdGhQZXJtaXNzaW9ucyh0aGlzLnBlcm1pc3Npb25zW1RhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLlJFQURdKTtcbiAgICAgICAgfVxuICAgICAgICB0YWJsZXZpZXdSb3V0ZUJ1aWxkZXIuYWRkQ2hpbGRCdWlsZGVyKHJvb3RDaGlsZFJvdXRlQnVpbGRlcik7XG5cbiAgICAgICAgLy8gYWRkIHJvdXRlXG4gICAgICAgIGlmICh0aGlzLmhhc0FkZCkge1xuICAgICAgICAgICAgY29uc3Qgcm91dGVCdWlsZGVyID0gUm91dGVCdWlsZGVyLmNyZWF0ZSh0aGlzLmFkZFBhdGgsIE1uZ0FjdGlvblJvdXRlQ29tcG9uZW50KTtcbiAgICAgICAgICAgIHJvdXRlQnVpbGRlci53aXRoRGF0YSh7Li4ucm91dGVEYXRhfSk7XG4gICAgICAgICAgICBpZiAodGhpcy5wZXJtaXNzaW9ucz8uW1RhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLkFERF0pIHtcbiAgICAgICAgICAgICAgICByb3V0ZUJ1aWxkZXIud2l0aFBlcm1pc3Npb25zKHRoaXMucGVybWlzc2lvbnNbVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuQUREXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0YWJsZXZpZXdSb3V0ZUJ1aWxkZXIuYWRkQ2hpbGRCdWlsZGVyKHJvdXRlQnVpbGRlcik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaGFzRGV0YWlscykge1xuICAgICAgICAgICAgY29uc3Qgcm91dGVCdWlsZGVyID0gUm91dGVCdWlsZGVyLmNyZWF0ZSh0aGlzLmRldGFpbHNQYXRoLCBNbmdBY3Rpb25Sb3V0ZUNvbXBvbmVudCk7XG4gICAgICAgICAgICByb3V0ZUJ1aWxkZXIud2l0aERhdGEoey4uLnJvdXRlRGF0YX0pO1xuICAgICAgICAgICAgaWYgKHRoaXMucGVybWlzc2lvbnM/LltUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5ERVRBSUxTXSkge1xuICAgICAgICAgICAgICAgIHJvdXRlQnVpbGRlci53aXRoUGVybWlzc2lvbnModGhpcy5wZXJtaXNzaW9uc1tUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5ERVRBSUxTXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0YWJsZXZpZXdSb3V0ZUJ1aWxkZXIuYWRkQ2hpbGRCdWlsZGVyKHJvdXRlQnVpbGRlcik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaGFzRWRpdCkge1xuICAgICAgICAgICAgY29uc3Qgcm91dGVCdWlsZGVyID0gUm91dGVCdWlsZGVyLmNyZWF0ZSh0aGlzLmVkaXRQYXRoLCBNbmdBY3Rpb25Sb3V0ZUNvbXBvbmVudCk7XG4gICAgICAgICAgICByb3V0ZUJ1aWxkZXIud2l0aERhdGEoey4uLnJvdXRlRGF0YX0pO1xuICAgICAgICAgICAgaWYgKHRoaXMucGVybWlzc2lvbnM/LltUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5FRElUXSkge1xuICAgICAgICAgICAgICAgIHJvdXRlQnVpbGRlci53aXRoUGVybWlzc2lvbnModGhpcy5wZXJtaXNzaW9uc1tUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5FRElUXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0YWJsZXZpZXdSb3V0ZUJ1aWxkZXIuYWRkQ2hpbGRCdWlsZGVyKHJvdXRlQnVpbGRlcik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGFibGV2aWV3Um91dGVCdWlsZGVyO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,26 +1,29 @@
1
- import { Injectable } from '@angular/core';
2
- import { of } from 'rxjs';
3
- import { first } from 'rxjs/operators';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "./authorization.service";
6
- export class MngAuthorizationGuard {
7
- constructor(authorization) {
8
- this.authorization = authorization;
9
- }
10
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
11
- canActivate(route, state) {
12
- const data = route.data;
13
- if (data.permissions) {
14
- return this.authorization.isPermitted(data.permissions).pipe(first());
15
- }
16
- else {
17
- return of(true);
18
- }
19
- }
20
- }
21
- MngAuthorizationGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngAuthorizationGuard, deps: [{ token: i1.MngAuthorizationService }], target: i0.ɵɵFactoryTarget.Injectable });
22
- MngAuthorizationGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngAuthorizationGuard });
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngAuthorizationGuard, decorators: [{
24
- type: Injectable
25
- }], ctorParameters: function () { return [{ type: i1.MngAuthorizationService }]; } });
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aG9yaXphdGlvbi5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvc2VjdXJpdHkvYXV0aG9yaXphdGlvbi5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBR3pDLE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7QUFNckMsTUFBTSxPQUFPLHFCQUFxQjtJQUM5QixZQUFvQixhQUFzQztRQUF0QyxrQkFBYSxHQUFiLGFBQWEsQ0FBeUI7SUFBRyxDQUFDO0lBRTlELDZEQUE2RDtJQUM3RCxXQUFXLENBQUMsS0FBNkIsRUFBRSxLQUEwQjtRQUNqRSxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBcUIsQ0FBQztRQUV6QyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDbEIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7U0FDekU7YUFBTTtZQUNILE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ25CO0lBQ0wsQ0FBQzs7a0hBWlEscUJBQXFCO3NIQUFyQixxQkFBcUI7MkZBQXJCLHFCQUFxQjtrQkFEakMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlU25hcHNob3QsIENhbkFjdGl2YXRlLCBSb3V0ZXJTdGF0ZVNuYXBzaG90LCBVcmxUcmVlfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge09ic2VydmFibGUsIG9mfSBmcm9tICdyeGpzJztcbmltcG9ydCB7Zmlyc3R9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtNbmdSb3V0ZXJEYXRhfSBmcm9tICcuLi9yb3V0ZXIvbW9kZWxzJztcbmltcG9ydCB7TW5nQXV0aG9yaXphdGlvblNlcnZpY2V9IGZyb20gJy4vYXV0aG9yaXphdGlvbi5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1uZ0F1dGhvcml6YXRpb25HdWFyZCBpbXBsZW1lbnRzIENhbkFjdGl2YXRlIHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGF1dGhvcml6YXRpb246IE1uZ0F1dGhvcml6YXRpb25TZXJ2aWNlKSB7fVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIGNhbkFjdGl2YXRlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCk6IE9ic2VydmFibGU8Ym9vbGVhbiB8IFVybFRyZWU+IHwgUHJvbWlzZTxib29sZWFuIHwgVXJsVHJlZT4gfCBib29sZWFuIHwgVXJsVHJlZSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSByb3V0ZS5kYXRhIGFzIE1uZ1JvdXRlckRhdGE7XG5cbiAgICAgICAgaWYgKGRhdGEucGVybWlzc2lvbnMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmF1dGhvcml6YXRpb24uaXNQZXJtaXR0ZWQoZGF0YS5wZXJtaXNzaW9ucykucGlwZShmaXJzdCgpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBvZih0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
1
+ import { Injectable } from '@angular/core';
2
+ import { of } from 'rxjs';
3
+ import { first } from 'rxjs/operators';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "./authorization.service";
6
+ export class MngAuthorizationGuard {
7
+ constructor(authorization) {
8
+ this.authorization = authorization;
9
+ }
10
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
11
+ canActivate(route, state) {
12
+ const data = route.data;
13
+ if (data.permissions) {
14
+ return this.authorization.isPermitted(data.permissions).pipe(first());
15
+ }
16
+ else {
17
+ return of(true);
18
+ }
19
+ }
20
+ }
21
+ MngAuthorizationGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: MngAuthorizationGuard, deps: [{ token: i1.MngAuthorizationService }], target: i0.ɵɵFactoryTarget.Injectable });
22
+ MngAuthorizationGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: MngAuthorizationGuard, providedIn: 'root' });
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: MngAuthorizationGuard, decorators: [{
24
+ type: Injectable,
25
+ args: [{
26
+ providedIn: 'root'
27
+ }]
28
+ }], ctorParameters: function () { return [{ type: i1.MngAuthorizationService }]; } });
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aG9yaXphdGlvbi5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvc2VjdXJpdHkvYXV0aG9yaXphdGlvbi5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBR3pDLE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7QUFRckMsTUFBTSxPQUFPLHFCQUFxQjtJQUM5QixZQUFvQixhQUFzQztRQUF0QyxrQkFBYSxHQUFiLGFBQWEsQ0FBeUI7SUFBRyxDQUFDO0lBRTlELDZEQUE2RDtJQUM3RCxXQUFXLENBQUMsS0FBNkIsRUFBRSxLQUEwQjtRQUNqRSxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBcUIsQ0FBQztRQUV6QyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDbEIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7U0FDekU7YUFBTTtZQUNILE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ25CO0lBQ0wsQ0FBQzs7a0hBWlEscUJBQXFCO3NIQUFyQixxQkFBcUIsY0FGbEIsTUFBTTsyRkFFVCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgQ2FuQWN0aXZhdGUsIFJvdXRlclN0YXRlU25hcHNob3QsIFVybFRyZWV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2Z9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtmaXJzdH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge01uZ1JvdXRlckRhdGF9IGZyb20gJy4uL3JvdXRlci9tb2RlbHMnO1xuaW1wb3J0IHtNbmdBdXRob3JpemF0aW9uU2VydmljZX0gZnJvbSAnLi9hdXRob3JpemF0aW9uLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE1uZ0F1dGhvcml6YXRpb25HdWFyZCBpbXBsZW1lbnRzIENhbkFjdGl2YXRlIHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGF1dGhvcml6YXRpb246IE1uZ0F1dGhvcml6YXRpb25TZXJ2aWNlKSB7fVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIGNhbkFjdGl2YXRlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCk6IE9ic2VydmFibGU8Ym9vbGVhbiB8IFVybFRyZWU+IHwgUHJvbWlzZTxib29sZWFuIHwgVXJsVHJlZT4gfCBib29sZWFuIHwgVXJsVHJlZSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSByb3V0ZS5kYXRhIGFzIE1uZ1JvdXRlckRhdGE7XG5cbiAgICAgICAgaWYgKGRhdGEucGVybWlzc2lvbnMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmF1dGhvcml6YXRpb24uaXNQZXJtaXR0ZWQoZGF0YS5wZXJtaXNzaW9ucykucGlwZShmaXJzdCgpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBvZih0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==