@mediusinc/mng-commons 0.0.1-rc.4 → 0.2.4

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 (453) hide show
  1. package/README.md +95 -0
  2. package/assets/i18n/en.json +54 -3
  3. package/assets/i18n/sl.json +54 -8
  4. package/assets/images/effect-ondark.png +0 -0
  5. package/assets/images/effect-ondark.svg +38 -0
  6. package/assets/images/effect-ondark@2x.png +0 -0
  7. package/assets/images/effect-onlight.png +0 -0
  8. package/assets/images/effect-onlight.svg +38 -0
  9. package/assets/images/effect-onlight@2x.png +0 -0
  10. package/assets/images/pages/exception-ondark.png +0 -0
  11. package/assets/images/pages/exception-onlight.png +0 -0
  12. package/assets/images/pages/login-ondark.png +0 -0
  13. package/assets/images/pages/login-onlight.png +0 -0
  14. package/esm2020/lib/api/models/builders/query-param.builder.mjs +48 -48
  15. package/esm2020/lib/api/models/filter-match-type.model.mjs +26 -24
  16. package/esm2020/lib/api/models/filter-param.model.mjs +46 -46
  17. package/esm2020/lib/api/models/index.mjs +9 -9
  18. package/esm2020/lib/api/models/mappers.mjs +17 -17
  19. package/esm2020/lib/api/models/query-mode.model.mjs +19 -19
  20. package/esm2020/lib/api/models/query-param.model.mjs +69 -69
  21. package/esm2020/lib/api/models/query-result.model.mjs +45 -45
  22. package/esm2020/lib/api/models/serialization.model.mjs +2 -2
  23. package/esm2020/lib/api/services/crud-api.abstract.service.mjs +72 -0
  24. package/esm2020/lib/api/services/index.mjs +2 -2
  25. package/esm2020/lib/api/utils/index.mjs +3 -3
  26. package/esm2020/lib/api/utils/medius-rest.util.mjs +122 -70
  27. package/esm2020/lib/api/utils/object-serializer.util.mjs +226 -226
  28. package/esm2020/lib/components/action/action.component.mjs +65 -63
  29. package/esm2020/lib/components/action/dialog/action-dialog.component.mjs +148 -157
  30. package/esm2020/lib/components/action/index.mjs +4 -4
  31. package/esm2020/lib/components/action/models/action-confirmation-service.model.mjs +2 -0
  32. package/esm2020/lib/components/action/models/action-execution.model.mjs +58 -0
  33. package/esm2020/lib/components/action/models/index.mjs +3 -0
  34. package/esm2020/lib/components/action/route/action-route.component.mjs +144 -144
  35. package/esm2020/lib/components/form/autocomplete/autocomplete.component.mjs +114 -0
  36. package/esm2020/lib/components/form/dropdown/dropdown.component.mjs +113 -0
  37. package/esm2020/lib/components/form/editor/form-editor.component.mjs +141 -142
  38. package/esm2020/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +19 -58
  39. package/esm2020/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +19 -51
  40. package/esm2020/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +16 -16
  41. package/esm2020/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.mjs +26 -26
  42. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +109 -109
  43. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +122 -122
  44. package/esm2020/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +17 -17
  45. package/esm2020/lib/components/form/formly/fields/index.mjs +8 -8
  46. package/esm2020/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +17 -17
  47. package/esm2020/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.mjs +16 -16
  48. package/esm2020/lib/components/form/formly/wrappers/index.mjs +3 -3
  49. package/esm2020/lib/components/form/index.mjs +4 -2
  50. package/esm2020/lib/components/form/models/form-editor.event.mjs +7 -0
  51. package/esm2020/lib/components/form/models/index.mjs +2 -0
  52. package/esm2020/lib/components/layout/breadcrumb.component.mjs +17 -0
  53. package/esm2020/lib/components/layout/footer.component.mjs +17 -0
  54. package/esm2020/lib/components/layout/index.mjs +7 -7
  55. package/esm2020/lib/components/layout/main-layout.component.mjs +54 -0
  56. package/esm2020/lib/components/layout/menu-item.component.mjs +173 -0
  57. package/esm2020/lib/components/layout/menu.component.mjs +20 -0
  58. package/esm2020/lib/components/layout/services/index.mjs +2 -0
  59. package/esm2020/lib/components/layout/services/main-layout.component.service.mjs +190 -0
  60. package/esm2020/lib/components/layout/topbar.component.mjs +59 -0
  61. package/esm2020/lib/components/tableview/index.mjs +6 -4
  62. package/esm2020/lib/components/tableview/models/index.mjs +2 -0
  63. package/esm2020/lib/components/tableview/models/table.event.mjs +16 -0
  64. package/esm2020/lib/components/tableview/route/tableview-route.abstract.component.mjs +24 -24
  65. package/esm2020/lib/components/tableview/services/index.mjs +2 -0
  66. package/esm2020/lib/components/tableview/services/tableview.component.service.mjs +17 -0
  67. package/esm2020/lib/components/tableview/table/column-filter/column-filter.component.mjs +74 -0
  68. package/esm2020/lib/components/tableview/table/column-value/column-value.component.mjs +25 -0
  69. package/esm2020/lib/components/tableview/table/table.component.mjs +307 -173
  70. package/esm2020/lib/components/tableview/tableview.component.mjs +82 -83
  71. package/esm2020/lib/config/formly.config.mjs +136 -136
  72. package/esm2020/lib/config/index.mjs +2 -2
  73. package/esm2020/lib/config/models/index.mjs +2 -0
  74. package/esm2020/lib/config/models/mng-config.model.mjs +2 -0
  75. package/esm2020/lib/data-providers/base.data-provider.mjs +24 -0
  76. package/esm2020/lib/data-providers/editor.data-provider.mjs +37 -0
  77. package/esm2020/lib/data-providers/index.mjs +6 -0
  78. package/esm2020/lib/data-providers/lookup.data-provider.mjs +16 -0
  79. package/esm2020/lib/data-providers/table.data-provider.mjs +2 -0
  80. package/esm2020/lib/data-providers/tableview.data-provider.mjs +17 -0
  81. package/esm2020/lib/descriptors/action.descriptor.mjs +332 -0
  82. package/esm2020/lib/descriptors/editor.descriptor.mjs +670 -0
  83. package/esm2020/lib/descriptors/field.validator.mjs +21 -0
  84. package/esm2020/lib/descriptors/index.mjs +8 -0
  85. package/esm2020/lib/descriptors/lookup.descriptor.mjs +2 -0
  86. package/esm2020/lib/descriptors/model.descriptor.mjs +34 -0
  87. package/esm2020/lib/descriptors/table.descriptor.mjs +401 -0
  88. package/esm2020/lib/descriptors/tableview.descriptor.mjs +131 -0
  89. package/esm2020/lib/directives/component.directive.mjs +23 -0
  90. package/esm2020/lib/directives/index.mjs +3 -2
  91. package/esm2020/lib/directives/template.directive.mjs +29 -25
  92. package/esm2020/lib/mng-commons.module.mjs +410 -313
  93. package/esm2020/lib/models/index.mjs +3 -0
  94. package/esm2020/lib/models/router.model.mjs +2 -0
  95. package/esm2020/lib/models/user.model.mjs +2 -0
  96. package/esm2020/lib/pipes/boolean.pipe.mjs +22 -0
  97. package/esm2020/lib/pipes/index.mjs +3 -2
  98. package/esm2020/lib/pipes/property-path.pipe.mjs +36 -36
  99. package/esm2020/lib/services/action.service.mjs +269 -269
  100. package/esm2020/lib/services/commons.service.mjs +354 -0
  101. package/esm2020/lib/services/configuration.service.mjs +78 -77
  102. package/esm2020/lib/services/index.mjs +5 -7
  103. package/esm2020/lib/services/navigation.service.mjs +48 -49
  104. package/esm2020/lib/services/providers/commons-init.provider.mjs +4 -0
  105. package/esm2020/lib/services/providers/config-service.provider.mjs +20 -12
  106. package/esm2020/lib/services/providers/formly-config.provider.mjs +31 -31
  107. package/esm2020/lib/services/providers/index.mjs +4 -3
  108. package/esm2020/lib/services/tokens/browser-storage.token.mjs +6 -0
  109. package/esm2020/lib/services/tokens/index.mjs +3 -0
  110. package/esm2020/lib/services/tokens/module-config.token.mjs +3 -0
  111. package/esm2020/lib/types/index.mjs +3 -0
  112. package/esm2020/lib/types/type.decorator.mjs +7 -0
  113. package/esm2020/lib/types/type.model.mjs +2 -0
  114. package/esm2020/lib/utils/editor-formly.util.mjs +176 -176
  115. package/esm2020/lib/utils/i18n.util.mjs +125 -91
  116. package/esm2020/lib/utils/index.mjs +6 -5
  117. package/esm2020/lib/utils/model.util.mjs +57 -38
  118. package/esm2020/lib/utils/toast.util.mjs +39 -26
  119. package/esm2020/lib/utils/type.util.mjs +39 -39
  120. package/esm2020/mediusinc-mng-commons.mjs +5 -5
  121. package/esm2020/public-api.mjs +36 -33
  122. package/fesm2015/mediusinc-mng-commons.mjs +6093 -5081
  123. package/fesm2015/mediusinc-mng-commons.mjs.map +1 -1
  124. package/fesm2020/mediusinc-mng-commons.mjs +6018 -5030
  125. package/fesm2020/mediusinc-mng-commons.mjs.map +1 -1
  126. package/lib/api/models/builders/query-param.builder.d.ts +11 -11
  127. package/lib/api/models/filter-match-type.model.d.ts +23 -21
  128. package/lib/api/models/filter-param.model.d.ts +23 -23
  129. package/lib/api/models/index.d.ts +8 -8
  130. package/lib/api/models/mappers.d.ts +6 -6
  131. package/lib/api/models/query-mode.model.d.ts +16 -16
  132. package/lib/api/models/query-param.model.d.ts +31 -31
  133. package/lib/api/models/query-result.model.d.ts +36 -36
  134. package/lib/api/models/serialization.model.d.ts +8 -8
  135. package/lib/api/services/{abstract-crud-api.service.d.ts → crud-api.abstract.service.d.ts} +23 -23
  136. package/lib/api/services/index.d.ts +1 -1
  137. package/lib/api/utils/index.d.ts +2 -2
  138. package/lib/api/utils/medius-rest.util.d.ts +12 -6
  139. package/lib/api/utils/object-serializer.util.d.ts +30 -30
  140. package/lib/components/action/action.component.d.ts +36 -36
  141. package/lib/components/action/dialog/action-dialog.component.d.ts +46 -48
  142. package/lib/components/action/index.d.ts +3 -3
  143. package/lib/{models/interfaces/confirmation-service.model.d.ts → components/action/models/action-confirmation-service.model.d.ts} +6 -6
  144. package/lib/{models/action/action.model.d.ts → components/action/models/action-execution.model.d.ts} +53 -53
  145. package/lib/components/action/models/index.d.ts +2 -0
  146. package/lib/components/action/route/action-route.component.d.ts +32 -32
  147. package/lib/components/form/autocomplete/autocomplete.component.d.ts +36 -0
  148. package/lib/components/form/dropdown/dropdown.component.d.ts +34 -0
  149. package/lib/components/form/editor/form-editor.component.d.ts +39 -39
  150. package/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.d.ts +11 -21
  151. package/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.d.ts +11 -19
  152. package/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.d.ts +6 -6
  153. package/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.d.ts +12 -12
  154. package/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.d.ts +17 -17
  155. package/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.d.ts +36 -36
  156. package/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.d.ts +6 -6
  157. package/lib/components/form/formly/fields/index.d.ts +7 -7
  158. package/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.d.ts +8 -8
  159. package/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.d.ts +8 -8
  160. package/lib/components/form/formly/wrappers/index.d.ts +2 -2
  161. package/lib/components/form/index.d.ts +3 -1
  162. package/lib/components/form/models/form-editor.event.d.ts +5 -0
  163. package/lib/components/form/models/index.d.ts +1 -0
  164. package/lib/components/layout/breadcrumb.component.d.ts +8 -0
  165. package/lib/components/layout/footer.component.d.ts +9 -0
  166. package/lib/components/layout/index.d.ts +6 -6
  167. package/lib/components/layout/main-layout.component.d.ts +21 -0
  168. package/lib/components/layout/menu-item.component.d.ts +29 -0
  169. package/lib/components/layout/menu.component.d.ts +10 -0
  170. package/lib/components/layout/services/index.d.ts +1 -0
  171. package/lib/components/layout/services/main-layout.component.service.d.ts +65 -0
  172. package/lib/components/layout/topbar.component.d.ts +25 -0
  173. package/lib/components/tableview/index.d.ts +5 -3
  174. package/lib/components/tableview/models/index.d.ts +1 -0
  175. package/lib/{models/events/table-event.model.d.ts → components/tableview/models/table.event.d.ts} +17 -17
  176. package/lib/components/tableview/route/tableview-route.abstract.component.d.ts +14 -14
  177. package/lib/components/tableview/services/index.d.ts +1 -0
  178. package/lib/components/tableview/{tableview.component.service.d.ts → services/tableview.component.service.d.ts} +13 -13
  179. package/lib/components/tableview/table/column-filter/column-filter.component.d.ts +22 -0
  180. package/lib/components/tableview/table/column-value/column-value.component.d.ts +12 -0
  181. package/lib/components/tableview/table/table.component.d.ts +79 -47
  182. package/lib/components/tableview/tableview.component.d.ts +35 -36
  183. package/lib/config/formly.config.d.ts +14 -14
  184. package/lib/config/index.d.ts +1 -1
  185. package/lib/{models/config → config/models}/index.d.ts +1 -1
  186. package/lib/config/models/mng-config.model.d.ts +34 -0
  187. package/lib/data-providers/base.data-provider.d.ts +17 -0
  188. package/lib/data-providers/editor.data-provider.d.ts +25 -0
  189. package/lib/data-providers/index.d.ts +5 -0
  190. package/lib/data-providers/lookup.data-provider.d.ts +14 -0
  191. package/lib/data-providers/table.data-provider.d.ts +6 -0
  192. package/lib/data-providers/tableview.data-provider.d.ts +15 -0
  193. package/lib/{models/descriptors/action-descriptor.model.d.ts → descriptors/action.descriptor.d.ts} +148 -145
  194. package/lib/{models/descriptors/editor-descriptor.model.d.ts → descriptors/editor.descriptor.d.ts} +255 -255
  195. package/lib/{models/validators → descriptors}/field.validator.d.ts +18 -18
  196. package/lib/descriptors/index.d.ts +7 -0
  197. package/lib/descriptors/lookup.descriptor.d.ts +17 -0
  198. package/lib/{models/descriptors/model-descriptor.model.d.ts → descriptors/model.descriptor.d.ts} +15 -15
  199. package/lib/descriptors/table.descriptor.d.ts +164 -0
  200. package/lib/{models/descriptors/tableview-descriptor.model.d.ts → descriptors/tableview.descriptor.d.ts} +39 -38
  201. package/lib/directives/component.directive.d.ts +11 -0
  202. package/lib/directives/index.d.ts +2 -1
  203. package/lib/directives/template.directive.d.ts +13 -11
  204. package/lib/mng-commons.module.d.ts +79 -71
  205. package/lib/models/index.d.ts +2 -0
  206. package/lib/models/router.model.d.ts +14 -0
  207. package/lib/models/user.model.d.ts +8 -0
  208. package/lib/pipes/boolean.pipe.d.ts +7 -0
  209. package/lib/pipes/index.d.ts +2 -1
  210. package/lib/pipes/property-path.pipe.d.ts +7 -7
  211. package/lib/services/action.service.d.ts +92 -92
  212. package/lib/services/commons.service.d.ts +72 -0
  213. package/lib/services/configuration.service.d.ts +35 -35
  214. package/lib/services/index.d.ts +4 -6
  215. package/lib/services/navigation.service.d.ts +14 -14
  216. package/lib/services/providers/commons-init.provider.d.ts +2 -0
  217. package/lib/services/providers/config-service.provider.d.ts +5 -5
  218. package/lib/services/providers/formly-config.provider.d.ts +4 -4
  219. package/lib/services/providers/index.d.ts +3 -2
  220. package/lib/services/tokens/browser-storage.token.d.ts +2 -0
  221. package/lib/services/tokens/index.d.ts +2 -0
  222. package/lib/services/tokens/module-config.token.d.ts +3 -0
  223. package/lib/{models/types → types}/index.d.ts +2 -2
  224. package/lib/{models/types → types}/type.decorator.d.ts +2 -2
  225. package/lib/{models/types → types}/type.model.d.ts +10 -10
  226. package/lib/utils/editor-formly.util.d.ts +9 -9
  227. package/lib/utils/i18n.util.d.ts +18 -15
  228. package/lib/utils/index.d.ts +5 -4
  229. package/lib/utils/model.util.d.ts +7 -5
  230. package/lib/utils/toast.util.d.ts +13 -12
  231. package/lib/utils/type.util.d.ts +15 -15
  232. package/mediusinc-mng-commons.d.ts +5 -5
  233. package/package.json +37 -36
  234. package/public-api.d.ts +25 -22
  235. package/scss/common/layout/_breadcrumb.scss +96 -0
  236. package/scss/common/layout/_config.scss +101 -0
  237. package/scss/common/layout/_dashboard.scss +16 -0
  238. package/scss/common/layout/_exception.scss +131 -0
  239. package/scss/common/layout/_footer.scss +29 -0
  240. package/scss/common/layout/_help.scss +157 -0
  241. package/scss/common/layout/_inlinemenu.scss +55 -0
  242. package/scss/common/layout/_invoice.scss +176 -0
  243. package/scss/common/layout/_landing.scss +639 -0
  244. package/scss/common/layout/_layout_dark.scss +23 -0
  245. package/scss/common/layout/_layout_light.scss +23 -0
  246. package/scss/common/layout/_loader.scss +18 -0
  247. package/scss/common/layout/_login.scss +106 -0
  248. package/scss/common/layout/_main.scss +45 -0
  249. package/scss/common/layout/_mixins.scss +214 -0
  250. package/scss/common/layout/_rightmenu.scss +125 -0
  251. package/scss/common/layout/_topbar.scss +189 -0
  252. package/scss/common/layout/_typography.scss +63 -0
  253. package/scss/common/layout/_utils.scss +96 -0
  254. package/scss/common/layout/_widgets.scss +391 -0
  255. package/scss/common/layout/menu/_menu.scss +7 -0
  256. package/scss/common/layout/menu/_menu_common.scss +183 -0
  257. package/scss/common/layout/menu/_menu_overlay.scss +52 -0
  258. package/scss/common/layout/menu/_menu_sidebar.scss +232 -0
  259. package/scss/common/layout/menu/_menu_slim.scss +138 -0
  260. package/scss/common/layout/menu/_menu_static.scss +70 -0
  261. package/scss/common/layout/menu/_menu_theme.scss +365 -0
  262. package/scss/common/theme/_theme_dark.scss +5 -0
  263. package/scss/common/theme/_theme_light.scss +5 -0
  264. package/scss/common/theme/designer/_colors.scss +18 -0
  265. package/scss/common/theme/designer/_common.scss +40 -0
  266. package/scss/common/theme/designer/_components.scss +101 -0
  267. package/scss/common/theme/designer/_mixins.scss +174 -0
  268. package/scss/common/theme/designer/components/button/_button.scss +560 -0
  269. package/scss/common/theme/designer/components/button/_speeddial.scss +79 -0
  270. package/scss/common/theme/designer/components/button/_splitbutton.scss +1 -0
  271. package/scss/common/theme/designer/components/data/_carousel.scss +37 -0
  272. package/scss/common/theme/designer/components/data/_datatable.scss +266 -0
  273. package/scss/common/theme/designer/components/data/_dataview.scss +55 -0
  274. package/scss/common/theme/designer/components/data/_filter.scss +138 -0
  275. package/scss/common/theme/designer/components/data/_fullcalendar.scss +324 -0
  276. package/scss/common/theme/designer/components/data/_orderlist.scss +91 -0
  277. package/scss/common/theme/designer/components/data/_organizationchart.scss +50 -0
  278. package/scss/common/theme/designer/components/data/_paginator.scss +83 -0
  279. package/scss/common/theme/designer/components/data/_picklist.scss +91 -0
  280. package/scss/common/theme/designer/components/data/_timeline.scss +38 -0
  281. package/scss/common/theme/designer/components/data/_tree.scss +144 -0
  282. package/scss/common/theme/designer/components/data/_treetable.scss +242 -0
  283. package/scss/common/theme/designer/components/data/_virtualscroller.scss +28 -0
  284. package/scss/common/theme/designer/components/file/_fileupload.scss +58 -0
  285. package/scss/common/theme/designer/components/input/_autocomplete.scss +103 -0
  286. package/scss/common/theme/designer/components/input/_calendar.scss +212 -0
  287. package/scss/common/theme/designer/components/input/_cascadeselect.scss +98 -0
  288. package/scss/common/theme/designer/components/input/_checkbox.scss +85 -0
  289. package/scss/common/theme/designer/components/input/_chips.scss +41 -0
  290. package/scss/common/theme/designer/components/input/_colorpicker.scss +19 -0
  291. package/scss/common/theme/designer/components/input/_dropdown.scss +136 -0
  292. package/scss/common/theme/designer/components/input/_editor.scss +122 -0
  293. package/scss/common/theme/designer/components/input/_inputgroup.scss +69 -0
  294. package/scss/common/theme/designer/components/input/_inputmask.scss +3 -0
  295. package/scss/common/theme/designer/components/input/_inputnumber.scss +3 -0
  296. package/scss/common/theme/designer/components/input/_inputswitch.scss +58 -0
  297. package/scss/common/theme/designer/components/input/_inputtext.scss +97 -0
  298. package/scss/common/theme/designer/components/input/_listbox.scss +82 -0
  299. package/scss/common/theme/designer/components/input/_multiselect.scss +164 -0
  300. package/scss/common/theme/designer/components/input/_password.scss +33 -0
  301. package/scss/common/theme/designer/components/input/_radiobutton.scss +78 -0
  302. package/scss/common/theme/designer/components/input/_rating.scss +48 -0
  303. package/scss/common/theme/designer/components/input/_selectbutton.scss +50 -0
  304. package/scss/common/theme/designer/components/input/_slider.scss +69 -0
  305. package/scss/common/theme/designer/components/input/_togglebutton.scss +48 -0
  306. package/scss/common/theme/designer/components/input/_treeselect.scss +89 -0
  307. package/scss/common/theme/designer/components/menu/_breadcrumb.scss +42 -0
  308. package/scss/common/theme/designer/components/menu/_contextmenu.scss +50 -0
  309. package/scss/common/theme/designer/components/menu/_dock.scss +51 -0
  310. package/scss/common/theme/designer/components/menu/_megamenu.scss +102 -0
  311. package/scss/common/theme/designer/components/menu/_menu.scss +41 -0
  312. package/scss/common/theme/designer/components/menu/_menubar.scss +179 -0
  313. package/scss/common/theme/designer/components/menu/_panelmenu.scss +137 -0
  314. package/scss/common/theme/designer/components/menu/_slidemenu.scss +55 -0
  315. package/scss/common/theme/designer/components/menu/_steps.scss +55 -0
  316. package/scss/common/theme/designer/components/menu/_tabmenu.scss +49 -0
  317. package/scss/common/theme/designer/components/menu/_tieredmenu.scss +56 -0
  318. package/scss/common/theme/designer/components/messages/_inlinemessage.scss +64 -0
  319. package/scss/common/theme/designer/components/messages/_message.scss +102 -0
  320. package/scss/common/theme/designer/components/messages/_toast.scss +95 -0
  321. package/scss/common/theme/designer/components/misc/_avatar.scss +30 -0
  322. package/scss/common/theme/designer/components/misc/_badge.scss +48 -0
  323. package/scss/common/theme/designer/components/misc/_blockui.scss +3 -0
  324. package/scss/common/theme/designer/components/misc/_chip.scss +36 -0
  325. package/scss/common/theme/designer/components/misc/_inplace.scss +17 -0
  326. package/scss/common/theme/designer/components/misc/_progressbar.scss +17 -0
  327. package/scss/common/theme/designer/components/misc/_scrolltop.scss +20 -0
  328. package/scss/common/theme/designer/components/misc/_skeleton.scss +8 -0
  329. package/scss/common/theme/designer/components/misc/_tag.scss +33 -0
  330. package/scss/common/theme/designer/components/misc/_terminal.scss +11 -0
  331. package/scss/common/theme/designer/components/multimedia/_galleria.scss +141 -0
  332. package/scss/common/theme/designer/components/overlay/_confirmpopup.scss +67 -0
  333. package/scss/common/theme/designer/components/overlay/_dialog.scss +63 -0
  334. package/scss/common/theme/designer/components/overlay/_overlaypanel.scss +62 -0
  335. package/scss/common/theme/designer/components/overlay/_sidebar.scss +27 -0
  336. package/scss/common/theme/designer/components/overlay/_tooltip.scss +33 -0
  337. package/scss/common/theme/designer/components/panel/_accordion.scss +119 -0
  338. package/scss/common/theme/designer/components/panel/_card.scss +30 -0
  339. package/scss/common/theme/designer/components/panel/_divider.scss +31 -0
  340. package/scss/common/theme/designer/components/panel/_fieldset.scss +47 -0
  341. package/scss/common/theme/designer/components/panel/_panel.scss +42 -0
  342. package/scss/common/theme/designer/components/panel/_scrollpanel.scss +6 -0
  343. package/scss/common/theme/designer/components/panel/_splitter.scss +19 -0
  344. package/scss/common/theme/designer/components/panel/_tabview.scss +66 -0
  345. package/scss/common/theme/designer/components/panel/_toolbar.scss +10 -0
  346. package/scss/common/theme/extensions/_button.scss +99 -0
  347. package/scss/common/theme/extensions/_calendar.scss +18 -0
  348. package/scss/common/theme/extensions/_card.scss +6 -0
  349. package/scss/common/theme/extensions/_carousel.scss +13 -0
  350. package/scss/common/theme/extensions/_checkbox.scss +10 -0
  351. package/scss/common/theme/extensions/_contextmenu.scss +16 -0
  352. package/scss/common/theme/extensions/_datatable.scss +83 -0
  353. package/scss/common/theme/extensions/_dialog.scss +14 -0
  354. package/scss/common/theme/extensions/_fieldset.scss +6 -0
  355. package/scss/common/theme/extensions/_galleria.scss +25 -0
  356. package/scss/common/theme/extensions/_megamenu.scss +18 -0
  357. package/scss/common/theme/extensions/_menu.scss +14 -0
  358. package/scss/common/theme/extensions/_menubar.scss +14 -0
  359. package/scss/common/theme/extensions/_orderlist.scss +38 -0
  360. package/scss/common/theme/extensions/_paginator.scss +19 -0
  361. package/scss/common/theme/extensions/_panelmenu.scss +20 -0
  362. package/scss/common/theme/extensions/_password.scss +5 -0
  363. package/scss/common/theme/extensions/_picklist.scss +38 -0
  364. package/scss/common/theme/extensions/_radiobutton.scss +8 -0
  365. package/scss/common/theme/extensions/_sidebar.scss +19 -0
  366. package/scss/common/theme/extensions/_slidemenu.scss +10 -0
  367. package/scss/common/theme/extensions/_slider.scss +6 -0
  368. package/scss/common/theme/extensions/_steps.scss +50 -0
  369. package/scss/common/theme/extensions/_tieredmenu.scss +14 -0
  370. package/scss/common/theme/extensions/_toast.scss +6 -0
  371. package/scss/common/theme/extensions/_tree.scss +36 -0
  372. package/scss/common/theme/extensions/_treetable.scss +35 -0
  373. package/scss/common/theme/extensions/_vendor_extensions.scss +27 -0
  374. package/scss/common/variables/layout/_common.scss +12 -0
  375. package/scss/common/variables/layout/_layout_dark.scss +71 -0
  376. package/scss/common/variables/layout/_layout_light.scss +71 -0
  377. package/scss/common/variables/theme/_theme_dark.scss +897 -0
  378. package/scss/common/variables/theme/_theme_light.scss +885 -0
  379. package/scss/layout/default/_mng-variables-layout-dark.scss +2 -0
  380. package/scss/layout/default/_mng-variables-layout-light.scss +2 -0
  381. package/scss/layout/default/layout-dark.scss +2 -0
  382. package/scss/layout/default/layout-light.scss +2 -0
  383. package/scss/mng-commons-dark.scss +5 -0
  384. package/scss/mng-commons-light.scss +5 -0
  385. package/scss/mng-overrides/_layout_action.scss +3 -0
  386. package/scss/mng-overrides/_layout_dialog.scss +34 -0
  387. package/scss/mng-overrides/_layout_forms.scss +31 -0
  388. package/scss/mng-overrides/_layout_radio.scss +3 -0
  389. package/scss/mng-overrides/_layout_styles.scss +4 -0
  390. package/scss/mng-overrides/_theme_datatable.scss +9 -0
  391. package/scss/mng-overrides/_theme_dialog.scss +9 -0
  392. package/scss/mng-overrides/_theme_dropdown.scss +6 -0
  393. package/scss/mng-overrides/_theme_styles.scss +9 -0
  394. package/scss/mng-overrides/_theme_tableview.scss +94 -0
  395. package/scss/theme/default/_mng-variables-theme-dark.scss +8 -0
  396. package/scss/theme/default/_mng-variables-theme-light.scss +8 -0
  397. package/scss/theme/default/theme-dark.scss +2 -0
  398. package/scss/theme/default/theme-light.scss +2 -0
  399. package/esm2020/lib/api/services/abstract-crud-api.service.mjs +0 -72
  400. package/esm2020/lib/components/layout/app.breadcrumb.component.mjs +0 -26
  401. package/esm2020/lib/components/layout/app.footer.component.mjs +0 -35
  402. package/esm2020/lib/components/layout/app.main.component.mjs +0 -25
  403. package/esm2020/lib/components/layout/app.main.component.service.mjs +0 -133
  404. package/esm2020/lib/components/layout/app.menu.component.mjs +0 -24
  405. package/esm2020/lib/components/layout/app.menuitem.component.mjs +0 -241
  406. package/esm2020/lib/components/layout/app.topbar.component.mjs +0 -135
  407. package/esm2020/lib/components/tableview/tableview.component.service.mjs +0 -18
  408. package/esm2020/lib/models/action/action.model.mjs +0 -58
  409. package/esm2020/lib/models/action/index.mjs +0 -2
  410. package/esm2020/lib/models/config/index.mjs +0 -2
  411. package/esm2020/lib/models/config/mng-config.model.mjs +0 -3
  412. package/esm2020/lib/models/descriptors/action-descriptor.model.mjs +0 -325
  413. package/esm2020/lib/models/descriptors/editor-descriptor.model.mjs +0 -666
  414. package/esm2020/lib/models/descriptors/index.mjs +0 -6
  415. package/esm2020/lib/models/descriptors/model-descriptor.model.mjs +0 -34
  416. package/esm2020/lib/models/descriptors/table-descriptor.model.mjs +0 -123
  417. package/esm2020/lib/models/descriptors/tableview-descriptor.model.mjs +0 -124
  418. package/esm2020/lib/models/events/editor-event.model.mjs +0 -14
  419. package/esm2020/lib/models/events/index.mjs +0 -3
  420. package/esm2020/lib/models/events/table-event.model.mjs +0 -16
  421. package/esm2020/lib/models/interfaces/confirmation-service.model.mjs +0 -2
  422. package/esm2020/lib/models/interfaces/index.mjs +0 -2
  423. package/esm2020/lib/models/providers/data-provider.model.mjs +0 -86
  424. package/esm2020/lib/models/providers/index.mjs +0 -2
  425. package/esm2020/lib/models/types/index.mjs +0 -3
  426. package/esm2020/lib/models/types/type.decorator.mjs +0 -7
  427. package/esm2020/lib/models/types/type.model.mjs +0 -2
  428. package/esm2020/lib/models/validators/field.validator.mjs +0 -21
  429. package/esm2020/lib/models/validators/index.mjs +0 -2
  430. package/esm2020/lib/services/breadcrumb.service.mjs +0 -74
  431. package/esm2020/lib/services/menu.service.mjs +0 -37
  432. package/esm2020/lib/services/settings.service.mjs +0 -81
  433. package/lib/components/layout/app.breadcrumb.component.d.ts +0 -14
  434. package/lib/components/layout/app.footer.component.d.ts +0 -8
  435. package/lib/components/layout/app.main.component.d.ts +0 -12
  436. package/lib/components/layout/app.main.component.service.d.ts +0 -40
  437. package/lib/components/layout/app.menu.component.d.ts +0 -15
  438. package/lib/components/layout/app.menuitem.component.d.ts +0 -31
  439. package/lib/components/layout/app.topbar.component.d.ts +0 -15
  440. package/lib/models/action/index.d.ts +0 -1
  441. package/lib/models/config/mng-config.model.d.ts +0 -20
  442. package/lib/models/descriptors/index.d.ts +0 -5
  443. package/lib/models/descriptors/table-descriptor.model.d.ts +0 -45
  444. package/lib/models/events/editor-event.model.d.ts +0 -11
  445. package/lib/models/events/index.d.ts +0 -2
  446. package/lib/models/interfaces/index.d.ts +0 -1
  447. package/lib/models/providers/data-provider.model.d.ts +0 -62
  448. package/lib/models/providers/index.d.ts +0 -1
  449. package/lib/models/validators/index.d.ts +0 -1
  450. package/lib/services/breadcrumb.service.d.ts +0 -15
  451. package/lib/services/menu.service.d.ts +0 -16
  452. package/lib/services/settings.service.d.ts +0 -30
  453. package/mediusinc-mng-commons-0.0.1-rc.4.tgz +0 -0
@@ -1,70 +1,122 @@
1
- import { FilterMatchType, QueryParamBuilder } from '../models';
2
- export class MediusRestUtil {
3
- static fromLazyLoadEventToQueryParams(event) {
4
- const queryParamBuilder = QueryParamBuilder.create(event.rows, event.first);
5
- // apply sorting
6
- if (event.multiSortMeta) {
7
- event.multiSortMeta.forEach(msm => queryParamBuilder.withSort(msm.field, msm.order === 1));
8
- }
9
- // apply filtering
10
- if (event.filters) {
11
- for (const key of Object.keys(event.filters)) {
12
- const filterEvent = event.filters[key];
13
- if (Array.isArray(filterEvent)) {
14
- filterEvent.filter(e => e.value)
15
- .forEach(e => MediusRestUtil.addFilterFromFilterMetadata(queryParamBuilder, key, e));
16
- }
17
- else if (typeof filterEvent === 'object') {
18
- if (filterEvent.value) {
19
- MediusRestUtil.addFilterFromFilterMetadata(queryParamBuilder, key, filterEvent);
20
- }
21
- }
22
- }
23
- }
24
- return queryParamBuilder.build();
25
- }
26
- static addFilterFromFilterMetadata(queryParamBuilder, property, filterMetadata) {
27
- let matchType;
28
- switch (filterMetadata.matchMode) {
29
- case 'startsWith':
30
- matchType = FilterMatchType.StartsWith;
31
- break;
32
- case 'endsWith':
33
- matchType = FilterMatchType.EndsWith;
34
- break;
35
- case 'equals':
36
- matchType = FilterMatchType.Equals;
37
- break;
38
- case 'notEquals':
39
- matchType = FilterMatchType.NotEquals;
40
- break;
41
- case 'in':
42
- matchType = FilterMatchType.In;
43
- break;
44
- case 'notIn':
45
- matchType = FilterMatchType.NotIn;
46
- break;
47
- case 'notContains':
48
- case 'lt':
49
- case 'lte':
50
- case 'gt':
51
- case 'gte':
52
- case 'is':
53
- case 'isNot':
54
- case 'before':
55
- case 'after':
56
- case 'dateIs':
57
- case 'dateIsNot':
58
- case 'dateBefore':
59
- case 'dateAfter':
60
- case 'between':
61
- throw new Error(`Match mode ${filterMetadata.matchMode} not implemented.`);
62
- case 'contains':
63
- default:
64
- matchType = FilterMatchType.Contains;
65
- break;
66
- }
67
- queryParamBuilder.withFilter(property, filterMetadata.value, undefined, matchType);
68
- }
69
- }
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaXVzLXJlc3QudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21uZy1jb21tb25zL3NyYy9saWIvYXBpL3V0aWxzL21lZGl1cy1yZXN0LnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLGVBQWUsRUFBYyxpQkFBaUIsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUV6RSxNQUFNLE9BQU8sY0FBYztJQUVoQixNQUFNLENBQUMsOEJBQThCLENBQUMsS0FBb0I7UUFFN0QsTUFBTSxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFNUUsZ0JBQWdCO1FBQ2hCLElBQUksS0FBSyxDQUFDLGFBQWEsRUFBRTtZQUNyQixLQUFLLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUM5RjtRQUVELGtCQUFrQjtRQUNsQixJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUU7WUFDZixLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUMxQyxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN2QyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUU7b0JBQzNCLFdBQWdDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQzt5QkFDakQsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLDJCQUEyQixDQUFDLGlCQUFpQixFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUM1RjtxQkFBTSxJQUFJLE9BQU8sV0FBVyxLQUFLLFFBQVEsRUFBRTtvQkFDeEMsSUFBSSxXQUFXLENBQUMsS0FBSyxFQUFFO3dCQUNuQixjQUFjLENBQUMsMkJBQTJCLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDO3FCQUNuRjtpQkFDSjthQUNKO1NBQ0o7UUFFRCxPQUFPLGlCQUFpQixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFTSxNQUFNLENBQUMsMkJBQTJCLENBQUMsaUJBQW9DLEVBQUUsUUFBZ0IsRUFBRSxjQUE4QjtRQUU1SCxJQUFJLFNBQTBCLENBQUM7UUFFL0IsUUFBUSxjQUFjLENBQUMsU0FBUyxFQUFFO1lBQzlCLEtBQUssWUFBWTtnQkFDYixTQUFTLEdBQUcsZUFBZSxDQUFDLFVBQVUsQ0FBQztnQkFDdkMsTUFBTTtZQUNWLEtBQUssVUFBVTtnQkFDWCxTQUFTLEdBQUcsZUFBZSxDQUFDLFFBQVEsQ0FBQztnQkFDckMsTUFBTTtZQUNWLEtBQUssUUFBUTtnQkFDVCxTQUFTLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQztnQkFDbkMsTUFBTTtZQUNWLEtBQUssV0FBVztnQkFDWixTQUFTLEdBQUcsZUFBZSxDQUFDLFNBQVMsQ0FBQztnQkFDdEMsTUFBTTtZQUNWLEtBQUssSUFBSTtnQkFDTCxTQUFTLEdBQUcsZUFBZSxDQUFDLEVBQUUsQ0FBQztnQkFDL0IsTUFBTTtZQUNWLEtBQUssT0FBTztnQkFDUixTQUFTLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQztnQkFDbEMsTUFBTTtZQUNWLEtBQUssYUFBYSxDQUFDO1lBQ25CLEtBQUssSUFBSSxDQUFDO1lBQ1YsS0FBSyxLQUFLLENBQUM7WUFDWCxLQUFLLElBQUksQ0FBQztZQUNWLEtBQUssS0FBSyxDQUFDO1lBQ1gsS0FBSyxJQUFJLENBQUM7WUFDVixLQUFLLE9BQU8sQ0FBQztZQUNiLEtBQUssUUFBUSxDQUFDO1lBQ2QsS0FBSyxPQUFPLENBQUM7WUFDYixLQUFLLFFBQVEsQ0FBQztZQUNkLEtBQUssV0FBVyxDQUFDO1lBQ2pCLEtBQUssWUFBWSxDQUFDO1lBQ2xCLEtBQUssV0FBVyxDQUFDO1lBQ2pCLEtBQUssU0FBUztnQkFDVixNQUFNLElBQUksS0FBSyxDQUFDLGNBQWMsY0FBYyxDQUFDLFNBQVMsbUJBQW1CLENBQUMsQ0FBQztZQUMvRSxLQUFLLFVBQVUsQ0FBQztZQUNoQjtnQkFDSSxTQUFTLEdBQUcsZUFBZSxDQUFDLFFBQVEsQ0FBQztnQkFDckMsTUFBTTtTQUNiO1FBRUQsaUJBQWlCLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxjQUFjLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUN2RixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0ZpbHRlck1ldGFkYXRhLCBMYXp5TG9hZEV2ZW50fSBmcm9tICdwcmltZW5nL2FwaSc7XG5cbmltcG9ydCB7RmlsdGVyTWF0Y2hUeXBlLCBRdWVyeVBhcmFtLCBRdWVyeVBhcmFtQnVpbGRlcn0gZnJvbSAnLi4vbW9kZWxzJztcblxuZXhwb3J0IGNsYXNzIE1lZGl1c1Jlc3RVdGlsIHtcblxuICAgIHB1YmxpYyBzdGF0aWMgZnJvbUxhenlMb2FkRXZlbnRUb1F1ZXJ5UGFyYW1zKGV2ZW50OiBMYXp5TG9hZEV2ZW50KTogUXVlcnlQYXJhbSB7XG5cbiAgICAgICAgY29uc3QgcXVlcnlQYXJhbUJ1aWxkZXIgPSBRdWVyeVBhcmFtQnVpbGRlci5jcmVhdGUoZXZlbnQucm93cywgZXZlbnQuZmlyc3QpO1xuXG4gICAgICAgIC8vIGFwcGx5IHNvcnRpbmdcbiAgICAgICAgaWYgKGV2ZW50Lm11bHRpU29ydE1ldGEpIHtcbiAgICAgICAgICAgIGV2ZW50Lm11bHRpU29ydE1ldGEuZm9yRWFjaChtc20gPT4gcXVlcnlQYXJhbUJ1aWxkZXIud2l0aFNvcnQobXNtLmZpZWxkLCBtc20ub3JkZXIgPT09IDEpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGFwcGx5IGZpbHRlcmluZ1xuICAgICAgICBpZiAoZXZlbnQuZmlsdGVycykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoZXZlbnQuZmlsdGVycykpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJFdmVudCA9IGV2ZW50LmZpbHRlcnNba2V5XTtcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShmaWx0ZXJFdmVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgKGZpbHRlckV2ZW50IGFzIEZpbHRlck1ldGFkYXRhW10pLmZpbHRlcihlID0+IGUudmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAuZm9yRWFjaChlID0+IE1lZGl1c1Jlc3RVdGlsLmFkZEZpbHRlckZyb21GaWx0ZXJNZXRhZGF0YShxdWVyeVBhcmFtQnVpbGRlciwga2V5LCBlKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZmlsdGVyRXZlbnQgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJFdmVudC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgTWVkaXVzUmVzdFV0aWwuYWRkRmlsdGVyRnJvbUZpbHRlck1ldGFkYXRhKHF1ZXJ5UGFyYW1CdWlsZGVyLCBrZXksIGZpbHRlckV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBxdWVyeVBhcmFtQnVpbGRlci5idWlsZCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgYWRkRmlsdGVyRnJvbUZpbHRlck1ldGFkYXRhKHF1ZXJ5UGFyYW1CdWlsZGVyOiBRdWVyeVBhcmFtQnVpbGRlciwgcHJvcGVydHk6IHN0cmluZywgZmlsdGVyTWV0YWRhdGE6IEZpbHRlck1ldGFkYXRhKSB7XG5cbiAgICAgICAgbGV0IG1hdGNoVHlwZTogRmlsdGVyTWF0Y2hUeXBlO1xuXG4gICAgICAgIHN3aXRjaCAoZmlsdGVyTWV0YWRhdGEubWF0Y2hNb2RlKSB7XG4gICAgICAgICAgICBjYXNlICdzdGFydHNXaXRoJzpcbiAgICAgICAgICAgICAgICBtYXRjaFR5cGUgPSBGaWx0ZXJNYXRjaFR5cGUuU3RhcnRzV2l0aDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2VuZHNXaXRoJzpcbiAgICAgICAgICAgICAgICBtYXRjaFR5cGUgPSBGaWx0ZXJNYXRjaFR5cGUuRW5kc1dpdGg7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdlcXVhbHMnOlxuICAgICAgICAgICAgICAgIG1hdGNoVHlwZSA9IEZpbHRlck1hdGNoVHlwZS5FcXVhbHM7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdub3RFcXVhbHMnOlxuICAgICAgICAgICAgICAgIG1hdGNoVHlwZSA9IEZpbHRlck1hdGNoVHlwZS5Ob3RFcXVhbHM7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdpbic6XG4gICAgICAgICAgICAgICAgbWF0Y2hUeXBlID0gRmlsdGVyTWF0Y2hUeXBlLkluO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbm90SW4nOlxuICAgICAgICAgICAgICAgIG1hdGNoVHlwZSA9IEZpbHRlck1hdGNoVHlwZS5Ob3RJbjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ25vdENvbnRhaW5zJzpcbiAgICAgICAgICAgIGNhc2UgJ2x0JzpcbiAgICAgICAgICAgIGNhc2UgJ2x0ZSc6XG4gICAgICAgICAgICBjYXNlICdndCc6XG4gICAgICAgICAgICBjYXNlICdndGUnOlxuICAgICAgICAgICAgY2FzZSAnaXMnOlxuICAgICAgICAgICAgY2FzZSAnaXNOb3QnOlxuICAgICAgICAgICAgY2FzZSAnYmVmb3JlJzpcbiAgICAgICAgICAgIGNhc2UgJ2FmdGVyJzpcbiAgICAgICAgICAgIGNhc2UgJ2RhdGVJcyc6XG4gICAgICAgICAgICBjYXNlICdkYXRlSXNOb3QnOlxuICAgICAgICAgICAgY2FzZSAnZGF0ZUJlZm9yZSc6XG4gICAgICAgICAgICBjYXNlICdkYXRlQWZ0ZXInOlxuICAgICAgICAgICAgY2FzZSAnYmV0d2Vlbic6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBNYXRjaCBtb2RlICR7ZmlsdGVyTWV0YWRhdGEubWF0Y2hNb2RlfSBub3QgaW1wbGVtZW50ZWQuYCk7XG4gICAgICAgICAgICBjYXNlICdjb250YWlucyc6XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIG1hdGNoVHlwZSA9IEZpbHRlck1hdGNoVHlwZS5Db250YWlucztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHF1ZXJ5UGFyYW1CdWlsZGVyLndpdGhGaWx0ZXIocHJvcGVydHksIGZpbHRlck1ldGFkYXRhLnZhbHVlLCB1bmRlZmluZWQsIG1hdGNoVHlwZSk7XG4gICAgfVxufVxuIl19
1
+ import { MediusFilterMatchType, MediusQueryParamBuilder } from '../models';
2
+ export class MediusRestUtil {
3
+ static fromAngularQueryParamsToMediusQueryParams(params, filterDescriptors, defaultItemsPerPage = 10, defaultOffset = 0) {
4
+ const offset = params['first'] ? parseInt(params['first']) : defaultOffset;
5
+ const itemsPerPage = params['rows'] ? parseInt(params['rows']) : defaultItemsPerPage;
6
+ const mediusParamsBuilder = MediusQueryParamBuilder.create(itemsPerPage, offset);
7
+ if (params['sort']) {
8
+ for (const sort of params['sort'].split(',')) {
9
+ const qpSortSplit = sort.split(':');
10
+ const field = qpSortSplit[0];
11
+ const asc = qpSortSplit.length > 1 ? qpSortSplit[1] === 'asc' : true;
12
+ mediusParamsBuilder.withSort(field, asc);
13
+ }
14
+ }
15
+ if (params['filter']) {
16
+ const filterSplit = params['filter'].split(',');
17
+ for (const filterField of filterSplit) {
18
+ const filterFieldSplit = filterField.split(':');
19
+ const field = filterFieldSplit[0];
20
+ const operator = filterFieldSplit.length > 1 ? filterFieldSplit[1] : 'eq';
21
+ // prepare value
22
+ let value = filterFieldSplit.length > 2 ? filterFieldSplit[2] : '';
23
+ let valueTo = undefined;
24
+ if (value.startsWith('\'')) {
25
+ value = value.substring(1, value.length - 1);
26
+ }
27
+ if (value.startsWith('[') && value.endsWith(']')) {
28
+ value = value.substring(1, value.length - 1).split(',').map((v) => v.startsWith('\'') ? v.substring(1, v.length - 1) : v);
29
+ }
30
+ const operatorMapping = MediusRestUtil.matchModeMapping.find(mapping => mapping[1] === operator);
31
+ const filterDescriptor = filterDescriptors.find(f => f.property === field);
32
+ if (operatorMapping && filterDescriptor) {
33
+ const fieldFilterProperty = filterDescriptor.filterProperty ?? filterDescriptor.property;
34
+ mediusParamsBuilder.withFilter(fieldFilterProperty, value, valueTo, MediusRestUtil.getMediusFilterMatchTypeFromPrimeMatchMode(operatorMapping[0]));
35
+ }
36
+ }
37
+ }
38
+ return mediusParamsBuilder.build();
39
+ }
40
+ static fromPrimeLazyLoadEventToAngularQueryParams(event, defaultItemsPerPage = 10, defaultOffset = 0) {
41
+ const params = {
42
+ first: null,
43
+ rows: null,
44
+ sort: null,
45
+ filter: null
46
+ };
47
+ if (event.first && event.first !== defaultOffset && event.first > 0) {
48
+ params['first'] = event.first;
49
+ }
50
+ if (event.rows && event.rows !== defaultItemsPerPage && event.rows > 0) {
51
+ params['rows'] = event.rows;
52
+ }
53
+ if (event.multiSortMeta?.length ?? 0 > 0) {
54
+ params['sort'] = event.multiSortMeta?.map(s => `${s.field}${s.order === 1 ? '' : ':desc'}`).join(',');
55
+ }
56
+ if (event.filters) {
57
+ const filters = [];
58
+ for (const field in event.filters) {
59
+ const primeOperator = event.filters[field].matchMode;
60
+ let value = event.filters[field].value;
61
+ const operatorMapping = MediusRestUtil.matchModeMapping.find(mapping => mapping[0] === primeOperator);
62
+ if (operatorMapping && typeof value !== 'undefined' && value !== null &&
63
+ ((typeof value === 'string' && value.length > 0) || (Array.isArray(value) && value.length > 0))) {
64
+ if (Array.isArray(value)) {
65
+ value = `[${value.map(v => `'${v}'`).join(',')}]`;
66
+ }
67
+ else {
68
+ value = `'${value}'`;
69
+ }
70
+ filters.push(`${field}:${operatorMapping[1]}:${value}`);
71
+ }
72
+ }
73
+ if (filters.length > 0) {
74
+ params['filter'] = filters.join(',');
75
+ }
76
+ }
77
+ return params;
78
+ }
79
+ static fromPrimeLazyLoadEventToMediusQueryParams(event) {
80
+ const queryParamBuilder = MediusQueryParamBuilder.create(event.rows, event.first);
81
+ // apply sorting
82
+ if (event.multiSortMeta) {
83
+ event.multiSortMeta.forEach(msm => queryParamBuilder.withSort(msm.field, msm.order === 1));
84
+ }
85
+ // apply filtering
86
+ if (event.filters) {
87
+ for (const key of Object.keys(event.filters)) {
88
+ const filterEvent = event.filters[key];
89
+ if (Array.isArray(filterEvent)) {
90
+ filterEvent.filter(e => e.value)
91
+ .forEach(e => MediusRestUtil.addMediusFilterFromPrimeFilterMetadata(queryParamBuilder, key, e));
92
+ }
93
+ else if (typeof filterEvent === 'object') {
94
+ if (filterEvent.value) {
95
+ MediusRestUtil.addMediusFilterFromPrimeFilterMetadata(queryParamBuilder, key, filterEvent);
96
+ }
97
+ }
98
+ }
99
+ }
100
+ return queryParamBuilder.build();
101
+ }
102
+ static addMediusFilterFromPrimeFilterMetadata(queryParamBuilder, property, filterMetadata) {
103
+ const matchType = MediusRestUtil.getMediusFilterMatchTypeFromPrimeMatchMode(filterMetadata.matchMode ?? 'contains');
104
+ queryParamBuilder.withFilter(property, filterMetadata.value, undefined, matchType);
105
+ }
106
+ static getMediusFilterMatchTypeFromPrimeMatchMode(matchMode) {
107
+ const mapping = MediusRestUtil.matchModeMapping.find(m => m[0] === matchMode);
108
+ return mapping?.[2] ?? MediusFilterMatchType.Contains;
109
+ }
110
+ }
111
+ // first value is from primeNG, second is for use in query params
112
+ MediusRestUtil.matchModeMapping = [
113
+ ['contains', 'c', MediusFilterMatchType.Contains],
114
+ ['endsWith', 'ew', MediusFilterMatchType.EndsWith],
115
+ ['equals', 'eq', MediusFilterMatchType.Equals],
116
+ ['gte', 'gte', MediusFilterMatchType.GreaterThan],
117
+ ['leq', 'leq', MediusFilterMatchType.SmallerThan],
118
+ ['startsWith', 'sw', MediusFilterMatchType.StartsWith],
119
+ ['in', 'in', MediusFilterMatchType.In],
120
+ ['notEquals', 'neq', MediusFilterMatchType.NotEquals]
121
+ ];
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaXVzLXJlc3QudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvYXBpL3V0aWxzL21lZGl1cy1yZXN0LnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFDLHFCQUFxQixFQUFvQix1QkFBdUIsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUczRixNQUFNLE9BQU8sY0FBYztJQWNoQixNQUFNLENBQUMseUNBQXlDLENBQUMsTUFBYyxFQUFFLGlCQUErQyxFQUFFLG1CQUFtQixHQUFHLEVBQUUsRUFBRSxhQUFhLEdBQUUsQ0FBQztRQUMvSixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDO1FBQzNFLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQztRQUVyRixNQUFNLG1CQUFtQixHQUFHLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFakYsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDaEIsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUMxQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNwQyxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzdCLE1BQU0sR0FBRyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENB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QUMsUUFBUSxFQUFFLGNBQWMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFTSxNQUFNLENBQUMsMENBQTBDLENBQUMsU0FBaUI7UUFDdEUsTUFBTSxPQUFPLEdBQUcsY0FBYyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQztRQUM5RSxPQUFPLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLHFCQUFxQixDQUFDLFFBQVEsQ0FBQztJQUMxRCxDQUFDOztBQXZJRCxpRUFBaUU7QUFDMUMsK0JBQWdCLEdBQW1EO0lBQ3RGLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxxQkFBcUIsQ0FBQyxRQUFRLENBQUM7SUFDakQsQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixDQUFDLFFBQVEsQ0FBQztJQUNsRCxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUscUJBQXFCLENBQUMsTUFBTSxDQUFDO0lBQzlDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxxQkFBcUIsQ0FBQyxXQUFXLENBQUM7SUFDakQsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLHFCQUFxQixDQUFDLFdBQVcsQ0FBQztJQUNqRCxDQUFDLFlBQVksRUFBRSxJQUFJLEVBQUUscUJBQXFCLENBQUMsVUFBVSxDQUFDO0lBQ3RELENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxxQkFBcUIsQ0FBQyxFQUFFLENBQUM7SUFDdEMsQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLHFCQUFxQixDQUFDLFNBQVMsQ0FBQztDQUN4RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQYXJhbXN9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7RmlsdGVyTWV0YWRhdGEsIExhenlMb2FkRXZlbnR9IGZyb20gJ3ByaW1lbmcvYXBpJztcblxuaW1wb3J0IHtNZWRpdXNGaWx0ZXJNYXRjaFR5cGUsIE1lZGl1c1F1ZXJ5UGFyYW0sIE1lZGl1c1F1ZXJ5UGFyYW1CdWlsZGVyfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHtGaWx0ZXJEZXNjcmlwdG9yfSBmcm9tICcuLi8uLi9kZXNjcmlwdG9ycyc7XG5cbmV4cG9ydCBjbGFzcyBNZWRpdXNSZXN0VXRpbCB7XG5cbiAgICAvLyBmaXJzdCB2YWx1ZSBpcyBmcm9tIHByaW1lTkcsIHNlY29uZCBpcyBmb3IgdXNlIGluIHF1ZXJ5IHBhcmFtc1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgbWF0Y2hNb2RlTWFwcGluZzogQXJyYXk8W3N0cmluZywgc3RyaW5nLCBNZWRpdXNGaWx0ZXJNYXRjaFR5cGVdPiA9IFtcbiAgICAgICAgWydjb250YWlucycsICdjJywgTWVkaXVzRmlsdGVyTWF0Y2hUeXBlLkNvbnRhaW5zXSxcbiAgICAgICAgWydlbmRzV2l0aCcsICdldycsIE1lZGl1c0ZpbHRlck1hdGNoVHlwZS5FbmRzV2l0aF0sXG4gICAgICAgIFsnZXF1YWxzJywgJ2VxJywgTWVkaXVzRmlsdGVyTWF0Y2hUeXBlLkVxdWFsc10sXG4gICAgICAgIFsnZ3RlJywgJ2d0ZScsIE1lZGl1c0ZpbHRlck1hdGNoVHlwZS5HcmVhdGVyVGhhbl0sXG4gICAgICAgIFsnbGVxJywgJ2xlcScsIE1lZGl1c0ZpbHRlck1hdGNoVHlwZS5TbWFsbGVyVGhhbl0sXG4gICAgICAgIFsnc3RhcnRzV2l0aCcsICdzdycsIE1lZGl1c0ZpbHRlck1hdGNoVHlwZS5TdGFydHNXaXRoXSxcbiAgICAgICAgWydpbicsICdpbicsIE1lZGl1c0ZpbHRlck1hdGNoVHlwZS5Jbl0sXG4gICAgICAgIFsnbm90RXF1YWxzJywgJ25lcScsIE1lZGl1c0ZpbHRlck1hdGNoVHlwZS5Ob3RFcXVhbHNdXG4gICAgXTtcblxuICAgIHB1YmxpYyBzdGF0aWMgZnJvbUFuZ3VsYXJRdWVyeVBhcmFtc1RvTWVkaXVzUXVlcnlQYXJhbXMocGFyYW1zOiBQYXJhbXMsIGZpbHRlckRlc2NyaXB0b3JzOiBBcnJheTxGaWx0ZXJEZXNjcmlwdG9yPGFueT4+LCBkZWZhdWx0SXRlbXNQZXJQYWdlID0gMTAsIGRlZmF1bHRPZmZzZXQ9IDApOiBNZWRpdXNRdWVyeVBhcmFtIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gcGFyYW1zWydmaXJzdCddID8gcGFyc2VJbnQocGFyYW1zWydmaXJzdCddKSA6IGRlZmF1bHRPZmZzZXQ7XG4gICAgICAgIGNvbnN0IGl0ZW1zUGVyUGFnZSA9IHBhcmFtc1sncm93cyddID8gcGFyc2VJbnQocGFyYW1zWydyb3dzJ10pIDogZGVmYXVsdEl0ZW1zUGVyUGFnZTtcblxuICAgICAgICBjb25zdCBtZWRpdXNQYXJhbXNCdWlsZGVyID0gTWVkaXVzUXVlcnlQYXJhbUJ1aWxkZXIuY3JlYXRlKGl0ZW1zUGVyUGFnZSwgb2Zmc2V0KTtcblxuICAgICAgICBpZiAocGFyYW1zWydzb3J0J10pIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgc29ydCBvZiBwYXJhbXNbJ3NvcnQnXS5zcGxpdCgnLCcpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcXBTb3J0U3BsaXQgPSBzb3J0LnNwbGl0KCc6Jyk7XG4gICAgICAgICAgICAgICAgY29uc3QgZmllbGQgPSBxcFNvcnRTcGxpdFswXTtcbiAgICAgICAgICAgICAgICBjb25zdCBhc2MgPSBxcFNvcnRTcGxpdC5sZW5ndGggPiAxID8gcXBTb3J0U3BsaXRbMV0gPT09ICdhc2MnIDogdHJ1ZTtcbiAgICAgICAgICAgICAgICBtZWRpdXNQYXJhbXNCdWlsZGVyLndpdGhTb3J0KGZpZWxkLCBhc2MpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChwYXJhbXNbJ2ZpbHRlciddKSB7XG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJTcGxpdCA9IHBhcmFtc1snZmlsdGVyJ10uc3BsaXQoJywnKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZmlsdGVyRmllbGQgb2YgZmlsdGVyU3BsaXQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJGaWVsZFNwbGl0ID0gZmlsdGVyRmllbGQuc3BsaXQoJzonKTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWVsZCA9IGZpbHRlckZpZWxkU3BsaXRbMF07XG4gICAgICAgICAgICAgICAgY29uc3Qgb3BlcmF0b3IgPSBmaWx0ZXJGaWVsZFNwbGl0Lmxlbmd0aCA+IDEgPyBmaWx0ZXJGaWVsZFNwbGl0WzFdIDogJ2VxJztcblxuICAgICAgICAgICAgICAgIC8vIHByZXBhcmUgdmFsdWVcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWU6IGFueSA9IGZpbHRlckZpZWxkU3BsaXQubGVuZ3RoID4gMiA/IGZpbHRlckZpZWxkU3BsaXRbMl0gOiAnJztcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWVUbzogYW55ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5zdGFydHNXaXRoKCdcXCcnKSkge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnN1YnN0cmluZygxLCB2YWx1ZS5sZW5ndGggLSAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoJ1snKSAmJiB2YWx1ZS5lbmRzV2l0aCgnXScpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuc3Vic3RyaW5nKDEsIHZhbHVlLmxlbmd0aCAtIDEpLnNwbGl0KCcsJykubWFwKCh2OiBzdHJpbmcpICA9PiB2LnN0YXJ0c1dpdGgoJ1xcJycpID8gdi5zdWJzdHJpbmcoMSwgdi5sZW5ndGggLSAxKSA6IHYpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IG9wZXJhdG9yTWFwcGluZyA9IE1lZGl1c1Jlc3RVdGlsLm1hdGNoTW9kZU1hcHBpbmcuZmluZChtYXBwaW5nID0+IG1hcHBpbmdbMV0gPT09IG9wZXJhdG9yKTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJEZXNjcmlwdG9yID0gZmlsdGVyRGVzY3JpcHRvcnMuZmluZChmID0+IGYucHJvcGVydHkgPT09IGZpZWxkKTtcbiAgICAgICAgICAgICAgICBpZiAob3BlcmF0b3JNYXBwaW5nICYmIGZpbHRlckRlc2NyaXB0b3IpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmllbGRGaWx0ZXJQcm9wZXJ0eSA9IGZpbHRlckRlc2NyaXB0b3IuZmlsdGVyUHJvcGVydHkgPz8gZmlsdGVyRGVzY3JpcHRvci5wcm9wZXJ0eTtcbiAgICAgICAgICAgICAgICAgICAgbWVkaXVzUGFyYW1zQnVpbGRlci53aXRoRmlsdGVyKGZpZWxkRmlsdGVyUHJvcGVydHksIHZhbHVlLCB2YWx1ZVRvLCBNZWRpdXNSZXN0VXRpbC5nZXRNZWRpdXNGaWx0ZXJNYXRjaFR5cGVGcm9tUHJpbWVNYXRjaE1vZGUob3BlcmF0b3JNYXBwaW5nWzBdKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG1lZGl1c1BhcmFtc0J1aWxkZXIuYnVpbGQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGZyb21QcmltZUxhenlMb2FkRXZlbnRUb0FuZ3VsYXJRdWVyeVBhcmFtcyhldmVudDogTGF6eUxvYWRFdmVudCwgZGVmYXVsdEl0ZW1zUGVyUGFnZSA9IDEwLCBkZWZhdWx0T2Zmc2V0PSAwKTogUGFyYW1zIHtcbiAgICAgICAgY29uc3QgcGFyYW1zOiBQYXJhbXMgPSB7XG4gICAgICAgICAgICBmaXJzdDogbnVsbCxcbiAgICAgICAgICAgIHJvd3M6IG51bGwsXG4gICAgICAgICAgICBzb3J0OiBudWxsLFxuICAgICAgICAgICAgZmlsdGVyOiBudWxsXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKGV2ZW50LmZpcnN0ICYmIGV2ZW50LmZpcnN0ICE9PSBkZWZhdWx0T2Zmc2V0ICYmIGV2ZW50LmZpcnN0ID4gMCkge1xuICAgICAgICAgICAgcGFyYW1zWydmaXJzdCddID0gZXZlbnQuZmlyc3Q7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LnJvd3MgJiYgZXZlbnQucm93cyAhPT0gZGVmYXVsdEl0ZW1zUGVyUGFnZSAmJiBldmVudC5yb3dzID4gMCkge1xuICAgICAgICAgICAgcGFyYW1zWydyb3dzJ10gPSBldmVudC5yb3dzO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV2ZW50Lm11bHRpU29ydE1ldGE/Lmxlbmd0aCA/PyAwID4gMCkge1xuICAgICAgICAgICAgcGFyYW1zWydzb3J0J10gPSBldmVudC5tdWx0aVNvcnRNZXRhPy5tYXAocyA9PiBgJHtzLmZpZWxkfSR7cy5vcmRlciA9PT0gMSA/ICcnIDogJzpkZXNjJ31gKS5qb2luKCcsJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXZlbnQuZmlsdGVycykge1xuICAgICAgICAgICAgY29uc3QgZmlsdGVycyA9IFtdO1xuICAgICAgICAgICAgZm9yIChjb25zdCBmaWVsZCBpbiBldmVudC5maWx0ZXJzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJpbWVPcGVyYXRvciA9IGV2ZW50LmZpbHRlcnNbZmllbGRdLm1hdGNoTW9kZTtcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBldmVudC5maWx0ZXJzW2ZpZWxkXS52YWx1ZTtcbiAgICAgICAgICAgICAgICBjb25zdCBvcGVyYXRvck1hcHBpbmcgPSBNZWRpdXNSZXN0VXRpbC5tYXRjaE1vZGVNYXBwaW5nLmZpbmQobWFwcGluZyA9PiBtYXBwaW5nWzBdID09PSBwcmltZU9wZXJhdG9yKTtcbiAgICAgICAgICAgICAgICBpZiAob3BlcmF0b3JNYXBwaW5nICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdmFsdWUgIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICAgICAgKCh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLmxlbmd0aCA+IDApIHx8IChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPiAwKSkpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gYFske3ZhbHVlLm1hcCh2ID0+IGAnJHt2fSdgKS5qb2luKCcsJyl9XWA7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGAnJHt2YWx1ZX0nYDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcnMucHVzaChgJHtmaWVsZH06JHtvcGVyYXRvck1hcHBpbmdbMV19OiR7dmFsdWV9YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGZpbHRlcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHBhcmFtc1snZmlsdGVyJ10gPSBmaWx0ZXJzLmpvaW4oJywnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwYXJhbXM7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBmcm9tUHJpbWVMYXp5TG9hZEV2ZW50VG9NZWRpdXNRdWVyeVBhcmFtcyhldmVudDogTGF6eUxvYWRFdmVudCk6IE1lZGl1c1F1ZXJ5UGFyYW0ge1xuXG4gICAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1CdWlsZGVyID0gTWVkaXVzUXVlcnlQYXJhbUJ1aWxkZXIuY3JlYXRlKGV2ZW50LnJvd3MsIGV2ZW50LmZpcnN0KTtcblxuICAgICAgICAvLyBhcHBseSBzb3J0aW5nXG4gICAgICAgIGlmIChldmVudC5tdWx0aVNvcnRNZXRhKSB7XG4gICAgICAgICAgICBldmVudC5tdWx0aVNvcnRNZXRhLmZvckVhY2gobXNtID0+IHF1ZXJ5UGFyYW1CdWlsZGVyLndpdGhTb3J0KG1zbS5maWVsZCwgbXNtLm9yZGVyID09PSAxKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBhcHBseSBmaWx0ZXJpbmdcbiAgICAgICAgaWYgKGV2ZW50LmZpbHRlcnMpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGV2ZW50LmZpbHRlcnMpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyRXZlbnQgPSBldmVudC5maWx0ZXJzW2tleV07XG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZmlsdGVyRXZlbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIChmaWx0ZXJFdmVudCBhcyBGaWx0ZXJNZXRhZGF0YVtdKS5maWx0ZXIoZSA9PiBlLnZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmZvckVhY2goZSA9PiBNZWRpdXNSZXN0VXRpbC5hZGRNZWRpdXNGaWx0ZXJGcm9tUHJpbWVGaWx0ZXJNZXRhZGF0YShxdWVyeVBhcmFtQnVpbGRlciwga2V5LCBlKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZmlsdGVyRXZlbnQgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJFdmVudC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgTWVkaXVzUmVzdFV0aWwuYWRkTWVkaXVzRmlsdGVyRnJvbVByaW1lRmlsdGVyTWV0YWRhdGEocXVlcnlQYXJhbUJ1aWxkZXIsIGtleSwgZmlsdGVyRXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHF1ZXJ5UGFyYW1CdWlsZGVyLmJ1aWxkKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBhZGRNZWRpdXNGaWx0ZXJGcm9tUHJpbWVGaWx0ZXJNZXRhZGF0YShxdWVyeVBhcmFtQnVpbGRlcjogTWVkaXVzUXVlcnlQYXJhbUJ1aWxkZXIsIHByb3BlcnR5OiBzdHJpbmcsIGZpbHRlck1ldGFkYXRhOiBGaWx0ZXJNZXRhZGF0YSkge1xuICAgICAgICBjb25zdCBtYXRjaFR5cGU6IE1lZGl1c0ZpbHRlck1hdGNoVHlwZSA9IE1lZGl1c1Jlc3RVdGlsLmdldE1lZGl1c0ZpbHRlck1hdGNoVHlwZUZyb21QcmltZU1hdGNoTW9kZShmaWx0ZXJNZXRhZGF0YS5tYXRjaE1vZGUgPz8gJ2NvbnRhaW5zJyk7XG4gICAgICAgIHF1ZXJ5UGFyYW1CdWlsZGVyLndpdGhGaWx0ZXIocHJvcGVydHksIGZpbHRlck1ldGFkYXRhLnZhbHVlLCB1bmRlZmluZWQsIG1hdGNoVHlwZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRNZWRpdXNGaWx0ZXJNYXRjaFR5cGVGcm9tUHJpbWVNYXRjaE1vZGUobWF0Y2hNb2RlOiBzdHJpbmcpOiBNZWRpdXNGaWx0ZXJNYXRjaFR5cGUge1xuICAgICAgICBjb25zdCBtYXBwaW5nID0gTWVkaXVzUmVzdFV0aWwubWF0Y2hNb2RlTWFwcGluZy5maW5kKG0gPT4gbVswXSA9PT0gbWF0Y2hNb2RlKTtcbiAgICAgICAgcmV0dXJuIG1hcHBpbmc/LlsyXSA/PyBNZWRpdXNGaWx0ZXJNYXRjaFR5cGUuQ29udGFpbnM7XG4gICAgfVxufVxuIl19