@mediusinc/mng-commons 3.6.0 → 4.0.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (341) hide show
  1. package/README.md +6 -5
  2. package/esm2022/index.mjs +6 -3
  3. package/esm2022/lib/api/models/filter-param.model.mjs +1 -1
  4. package/esm2022/lib/api/models/index.mjs +1 -3
  5. package/esm2022/lib/api/models/query-param.model.mjs +1 -1
  6. package/esm2022/lib/api/models/query-result.model.mjs +12 -1
  7. package/esm2022/lib/api/services/api.abstract.service.mjs +2 -2
  8. package/esm2022/lib/api/services/get-all-api.abstract.service.mjs +1 -1
  9. package/esm2022/lib/api/utils/index.mjs +2 -2
  10. package/esm2022/lib/api/utils/object-serializer.util.mjs +53 -137
  11. package/esm2022/lib/components/action/action.component.mjs +17 -16
  12. package/esm2022/lib/components/action/editor/action-editor.component.mjs +12 -12
  13. package/esm2022/lib/components/action/localization/data-language-dropdown.component.mjs +7 -7
  14. package/esm2022/lib/components/action/models/action-component.model.mjs +1 -1
  15. package/esm2022/lib/components/action/models/action-confirmation-service.model.mjs +1 -1
  16. package/esm2022/lib/components/action/models/action-execution.model.mjs +5 -5
  17. package/esm2022/lib/components/action/route/action-route.component.mjs +6 -6
  18. package/esm2022/lib/components/form/autocomplete/autocomplete.component.mjs +74 -65
  19. package/esm2022/lib/components/form/date-range/date-range.component.mjs +6 -7
  20. package/esm2022/lib/components/form/dropdown/dropdown.component.mjs +39 -39
  21. package/esm2022/lib/components/form/editor/form-editor.component.mjs +14 -16
  22. package/esm2022/lib/components/form/formly/fields/formly-field-action/formly-field-action.component.mjs +6 -6
  23. package/esm2022/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +5 -5
  24. package/esm2022/lib/components/form/formly/fields/formly-field-custom/formly-custom-field-base.model.mjs +3 -3
  25. package/esm2022/lib/components/form/formly/fields/formly-field-custom/formly-field-custom.component.mjs +3 -3
  26. package/esm2022/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +5 -5
  27. package/esm2022/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +5 -6
  28. package/esm2022/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.mjs +10 -13
  29. package/esm2022/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.mjs +3 -3
  30. package/esm2022/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +13 -13
  31. package/esm2022/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +26 -15
  32. package/esm2022/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +14 -14
  33. package/esm2022/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +5 -6
  34. package/esm2022/lib/components/form/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.mjs +5 -6
  35. package/esm2022/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +39 -18
  36. package/esm2022/lib/components/layout/breadcrumb.component.mjs +4 -4
  37. package/esm2022/lib/components/layout/footer.component.mjs +4 -4
  38. package/esm2022/lib/components/layout/main-layout.component.mjs +8 -8
  39. package/esm2022/lib/components/layout/menu-item.component.mjs +8 -8
  40. package/esm2022/lib/components/layout/menu.component.mjs +7 -7
  41. package/esm2022/lib/components/layout/services/main-layout.component.service.mjs +4 -4
  42. package/esm2022/lib/components/layout/topbar-user.component.mjs +9 -9
  43. package/esm2022/lib/components/layout/topbar.component.mjs +8 -8
  44. package/esm2022/lib/components/layout/version.component.mjs +11 -11
  45. package/esm2022/lib/components/layoutV2/breadcrumb.component.mjs +6 -6
  46. package/esm2022/lib/components/layoutV2/footer.component.mjs +3 -3
  47. package/esm2022/lib/components/layoutV2/main-layout.component.mjs +14 -11
  48. package/esm2022/lib/components/layoutV2/menu-item.component.mjs +12 -9
  49. package/esm2022/lib/components/layoutV2/menu.component.mjs +5 -6
  50. package/esm2022/lib/components/layoutV2/model/layout-state.model.mjs +1 -1
  51. package/esm2022/lib/components/layoutV2/services/main-layout.component.service.mjs +30 -21
  52. package/esm2022/lib/components/layoutV2/services/menu.service.mjs +3 -3
  53. package/esm2022/lib/components/layoutV2/sidebar.component.mjs +18 -9
  54. package/esm2022/lib/components/layoutV2/topbar-user.component.mjs +6 -6
  55. package/esm2022/lib/components/layoutV2/topbar.component.mjs +6 -7
  56. package/esm2022/lib/components/layoutV2/version.component.mjs +11 -11
  57. package/esm2022/lib/components/pages/error/error.page.component.mjs +4 -4
  58. package/esm2022/lib/components/pages/not-found/not-found.page.component.mjs +4 -4
  59. package/esm2022/lib/components/tableview/index.mjs +1 -2
  60. package/esm2022/lib/components/tableview/models/table.event.mjs +1 -1
  61. package/esm2022/lib/components/tableview/route/tableview-route.abstract.component.mjs +18 -18
  62. package/esm2022/lib/components/tableview/route/tableview-route.component.mjs +5 -5
  63. package/esm2022/lib/components/tableview/table/column-filter-full/column-filter-full.component.mjs +8 -12
  64. package/esm2022/lib/components/tableview/table/column-value/column-value.component.mjs +9 -32
  65. package/esm2022/lib/components/tableview/table/table.component.mjs +20 -25
  66. package/esm2022/lib/components/tableview/tableview.component.mjs +8 -10
  67. package/esm2022/lib/data-providers/base.data-provider.mjs +43 -12
  68. package/esm2022/lib/data-providers/editor.data-provider.mjs +82 -14
  69. package/esm2022/lib/data-providers/lookup.data-provider.mjs +38 -9
  70. package/esm2022/lib/data-providers/table.data-provider.mjs +41 -14
  71. package/esm2022/lib/data-providers/tableview-crud.data-provider.mjs +14 -6
  72. package/esm2022/lib/data-providers/tableview.data-provider.mjs +89 -29
  73. package/esm2022/lib/descriptors/action/action-confirmation.descriptor.mjs +2 -2
  74. package/esm2022/lib/descriptors/action/action-editor.descriptor.mjs +262 -0
  75. package/esm2022/lib/descriptors/action/action-link.descriptor.mjs +90 -0
  76. package/esm2022/lib/descriptors/action/action.descriptor.mjs +91 -352
  77. package/esm2022/lib/descriptors/action/index.mjs +3 -1
  78. package/esm2022/lib/descriptors/editor/editor.descriptor.mjs +215 -102
  79. package/esm2022/lib/descriptors/editor/field-action.descriptor.mjs +50 -0
  80. package/esm2022/lib/descriptors/editor/field-base.descriptor.mjs +293 -0
  81. package/esm2022/lib/descriptors/editor/field-group.descriptor.mjs +97 -0
  82. package/esm2022/lib/descriptors/editor/field-lookup.descriptor.mjs +211 -0
  83. package/esm2022/lib/descriptors/editor/field-many.descriptor.mjs +153 -0
  84. package/esm2022/lib/descriptors/editor/field.descriptor.mjs +81 -852
  85. package/esm2022/lib/descriptors/editor/index.mjs +6 -1
  86. package/esm2022/lib/descriptors/editor/internal/editor-fields.model.mjs +2 -0
  87. package/esm2022/lib/descriptors/editor/internal/editor.model.mjs +2 -0
  88. package/esm2022/lib/descriptors/filter/filter-lookup.descriptor.mjs +210 -0
  89. package/esm2022/lib/descriptors/filter/filter.descriptor.mjs +2 -208
  90. package/esm2022/lib/descriptors/filter/index.mjs +2 -1
  91. package/esm2022/lib/descriptors/interfaces/lookup-descriptor.interface.mjs +1 -1
  92. package/esm2022/lib/descriptors/model/index.mjs +2 -0
  93. package/esm2022/lib/descriptors/model/model.descriptor.mjs +70 -0
  94. package/esm2022/lib/descriptors/table/column.descriptor.mjs +38 -49
  95. package/esm2022/lib/descriptors/table/internal/table-columns.model.mjs +2 -0
  96. package/esm2022/lib/descriptors/table/internal/table.model.mjs +2 -0
  97. package/esm2022/lib/descriptors/table/table.descriptor.mjs +143 -124
  98. package/esm2022/lib/descriptors/tableview/internal/tableview.model.mjs +2 -0
  99. package/esm2022/lib/descriptors/tableview/tableview.descriptor.mjs +240 -131
  100. package/esm2022/lib/directives/component.directive.mjs +11 -11
  101. package/esm2022/lib/directives/dialog-keydown-handler.directive.mjs +3 -3
  102. package/esm2022/lib/directives/template.directive.mjs +9 -9
  103. package/esm2022/lib/helpers/coercion.mjs +45 -0
  104. package/esm2022/lib/models/class.model.mjs +2 -0
  105. package/esm2022/lib/models/enum.model.mjs +1 -1
  106. package/esm2022/lib/models/index.mjs +4 -1
  107. package/esm2022/lib/models/radio.model.mjs +2 -0
  108. package/esm2022/lib/models/tableview-attr.model.mjs +1 -1
  109. package/esm2022/lib/models/type-registry.model.mjs +2 -0
  110. package/esm2022/lib/models/view-container.model.mjs +1 -1
  111. package/esm2022/lib/pipes/boolean.pipe.mjs +3 -3
  112. package/esm2022/lib/pipes/class-map.pipe.mjs +3 -3
  113. package/esm2022/lib/pipes/enum.pipe.mjs +6 -6
  114. package/esm2022/lib/pipes/enumerate-async.pipe.mjs +5 -5
  115. package/esm2022/lib/pipes/enumerate.pipe.mjs +5 -5
  116. package/esm2022/lib/pipes/getter.pipe.mjs +5 -5
  117. package/esm2022/lib/pipes/i18n-property.pipe.mjs +4 -4
  118. package/esm2022/lib/pipes/json-path.pipe.mjs +3 -3
  119. package/esm2022/lib/pipes/locale-default-row-class.pipe.mjs +5 -5
  120. package/esm2022/lib/pipes/parametrize.pipe.mjs +3 -3
  121. package/esm2022/lib/pipes/template.pipe.mjs +4 -4
  122. package/esm2022/lib/provide-commons.mjs +4 -4
  123. package/esm2022/lib/registry/type.registry.mjs +114 -0
  124. package/esm2022/lib/router/models/router.model.mjs +1 -1
  125. package/esm2022/lib/router/tableview-route-builder.mjs +5 -5
  126. package/esm2022/lib/security/authorization.service.mjs +9 -11
  127. package/esm2022/lib/services/action-executor.service.mjs +14 -12
  128. package/esm2022/lib/services/commons-init.service.mjs +3 -3
  129. package/esm2022/lib/services/commons.service.mjs +6 -5
  130. package/esm2022/lib/services/mng-localstorage-config.service.mjs +4 -4
  131. package/esm2022/lib/services/navigation.service.mjs +5 -5
  132. package/esm2022/lib/services/router.service.mjs +4 -4
  133. package/esm2022/lib/services/version.service.mjs +5 -5
  134. package/esm2022/lib/services/view-container.component.service.mjs +5 -5
  135. package/esm2022/lib/styles/styles.util.mjs +1 -1
  136. package/esm2022/lib/types/action-descriptor.types.mjs +2 -0
  137. package/esm2022/lib/types/data-provider.types.mjs +2 -0
  138. package/esm2022/lib/types/getter.type.mjs +2 -0
  139. package/esm2022/lib/types/index.mjs +5 -2
  140. package/esm2022/lib/types/localstorage-config-value.type.mjs +2 -0
  141. package/esm2022/lib/types/type.decorator.mjs +4 -14
  142. package/esm2022/lib/types/type.model.mjs +1 -1
  143. package/esm2022/lib/utils/action-data-provider.util.mjs +14 -8
  144. package/esm2022/lib/utils/decorator-metadata.util.mjs +61 -0
  145. package/esm2022/lib/utils/editor-formly.util.mjs +6 -5
  146. package/esm2022/lib/utils/enum.util.mjs +1 -1
  147. package/esm2022/lib/utils/export.util.mjs +5 -4
  148. package/esm2022/lib/utils/i18n.util.mjs +22 -22
  149. package/esm2022/lib/utils/index.mjs +2 -3
  150. package/esm2022/lib/utils/model.util.mjs +40 -36
  151. package/esm2022/lib/utils/notification.util.mjs +1 -1
  152. package/esm2022/lib/utils/tableview.util.mjs +17 -17
  153. package/fesm2022/mediusinc-mng-commons.mjs +11491 -11384
  154. package/fesm2022/mediusinc-mng-commons.mjs.map +1 -1
  155. package/index.d.ts +3 -2
  156. package/lib/api/models/filter-param.model.d.ts +3 -3
  157. package/lib/api/models/index.d.ts +0 -2
  158. package/lib/api/models/query-param.model.d.ts +3 -3
  159. package/lib/api/models/query-result.model.d.ts +3 -3
  160. package/lib/api/services/api.abstract.service.d.ts +1 -1
  161. package/lib/api/utils/index.d.ts +1 -1
  162. package/lib/api/utils/object-serializer.util.d.ts +3 -19
  163. package/lib/components/action/action.component.d.ts +5 -5
  164. package/lib/components/action/editor/action-editor.component.d.ts +7 -7
  165. package/lib/components/action/localization/data-language-dropdown.component.d.ts +6 -6
  166. package/lib/components/action/models/action-component.model.d.ts +4 -4
  167. package/lib/components/action/models/action-confirmation-service.model.d.ts +2 -2
  168. package/lib/components/action/models/action-execution.model.d.ts +14 -14
  169. package/lib/components/action/route/action-route.component.d.ts +2 -2
  170. package/lib/components/form/autocomplete/autocomplete.component.d.ts +15 -18
  171. package/lib/components/form/dropdown/dropdown.component.d.ts +9 -9
  172. package/lib/components/form/editor/form-editor.component.d.ts +8 -11
  173. package/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.d.ts +4 -0
  174. package/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.d.ts +4 -4
  175. package/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.d.ts +3 -2
  176. package/lib/components/layout/topbar-user.component.d.ts +2 -2
  177. package/lib/components/layout/version.component.d.ts +2 -2
  178. package/lib/components/layoutV2/model/layout-state.model.d.ts +8 -9
  179. package/lib/components/layoutV2/services/main-layout.component.service.d.ts +1 -1
  180. package/lib/components/layoutV2/version.component.d.ts +2 -2
  181. package/lib/components/tableview/index.d.ts +0 -1
  182. package/lib/components/tableview/route/tableview-route.abstract.component.d.ts +20 -20
  183. package/lib/components/tableview/route/tableview-route.component.d.ts +7 -7
  184. package/lib/components/tableview/table/table.component.d.ts +9 -9
  185. package/lib/components/tableview/tableview.component.d.ts +8 -8
  186. package/lib/data-providers/base.data-provider.d.ts +30 -12
  187. package/lib/data-providers/editor.data-provider.d.ts +86 -23
  188. package/lib/data-providers/lookup.data-provider.d.ts +24 -11
  189. package/lib/data-providers/table.data-provider.d.ts +30 -17
  190. package/lib/data-providers/tableview-crud.data-provider.d.ts +8 -4
  191. package/lib/data-providers/tableview.data-provider.d.ts +41 -29
  192. package/lib/descriptors/action/action-confirmation.descriptor.d.ts +3 -3
  193. package/lib/descriptors/action/action-editor.descriptor.d.ts +115 -0
  194. package/lib/descriptors/action/action-link.descriptor.d.ts +34 -0
  195. package/lib/descriptors/action/action.descriptor.d.ts +74 -160
  196. package/lib/descriptors/action/index.d.ts +2 -0
  197. package/lib/descriptors/editor/editor.descriptor.d.ts +131 -79
  198. package/lib/descriptors/editor/field-action.descriptor.d.ts +23 -0
  199. package/lib/descriptors/editor/field-base.descriptor.d.ts +126 -0
  200. package/lib/descriptors/editor/field-group.descriptor.d.ts +42 -0
  201. package/lib/descriptors/editor/field-lookup.descriptor.d.ts +80 -0
  202. package/lib/descriptors/editor/field-many.descriptor.d.ts +63 -0
  203. package/lib/descriptors/editor/field.descriptor.d.ts +100 -326
  204. package/lib/descriptors/editor/index.d.ts +5 -0
  205. package/lib/descriptors/editor/internal/editor-fields.model.d.ts +32 -0
  206. package/lib/descriptors/editor/internal/editor.model.d.ts +15 -0
  207. package/lib/descriptors/filter/filter-lookup.descriptor.d.ts +69 -0
  208. package/lib/descriptors/filter/filter.descriptor.d.ts +9 -67
  209. package/lib/descriptors/filter/index.d.ts +1 -0
  210. package/lib/descriptors/interfaces/lookup-descriptor.interface.d.ts +11 -16
  211. package/lib/descriptors/model/model.descriptor.d.ts +22 -0
  212. package/lib/descriptors/table/column.descriptor.d.ts +45 -33
  213. package/lib/descriptors/table/internal/table-columns.model.d.ts +11 -0
  214. package/lib/descriptors/table/internal/table.model.d.ts +9 -0
  215. package/lib/descriptors/table/table.descriptor.d.ts +82 -71
  216. package/lib/descriptors/tableview/internal/tableview.model.d.ts +11 -0
  217. package/lib/descriptors/tableview/tableview.descriptor.d.ts +106 -74
  218. package/lib/directives/component.directive.d.ts +5 -6
  219. package/lib/directives/template.directive.d.ts +2 -3
  220. package/lib/helpers/coercion.d.ts +9 -0
  221. package/lib/models/class.model.d.ts +6 -0
  222. package/lib/models/enum.model.d.ts +3 -2
  223. package/lib/models/index.d.ts +3 -0
  224. package/lib/models/radio.model.d.ts +6 -0
  225. package/lib/models/tableview-attr.model.d.ts +2 -2
  226. package/lib/models/type-registry.model.d.ts +7 -0
  227. package/lib/models/view-container.model.d.ts +6 -6
  228. package/lib/pipes/getter.pipe.d.ts +2 -1
  229. package/lib/pipes/i18n-property.pipe.d.ts +1 -1
  230. package/lib/pipes/locale-default-row-class.pipe.d.ts +2 -2
  231. package/lib/registry/type.registry.d.ts +25 -0
  232. package/lib/router/models/router.model.d.ts +5 -5
  233. package/lib/router/tableview-route-builder.d.ts +6 -6
  234. package/lib/security/authorization.service.d.ts +4 -7
  235. package/lib/services/action-executor.service.d.ts +7 -7
  236. package/lib/services/mng-localstorage-config.service.d.ts +3 -3
  237. package/lib/services/view-container.component.service.d.ts +3 -3
  238. package/lib/styles/styles.util.d.ts +5 -5
  239. package/lib/types/action-descriptor.types.d.ts +4 -0
  240. package/lib/types/data-provider.types.d.ts +3 -0
  241. package/lib/types/getter.type.d.ts +2 -0
  242. package/lib/types/index.d.ts +4 -1
  243. package/lib/types/localstorage-config-value.type.d.ts +1 -0
  244. package/lib/types/type.decorator.d.ts +0 -2
  245. package/lib/types/type.model.d.ts +12 -2
  246. package/lib/utils/action-data-provider.util.d.ts +6 -5
  247. package/lib/utils/{type.util.d.ts → decorator-metadata.util.d.ts} +2 -26
  248. package/lib/utils/editor-formly.util.d.ts +2 -2
  249. package/lib/utils/enum.util.d.ts +2 -2
  250. package/lib/utils/export.util.d.ts +2 -2
  251. package/lib/utils/i18n.util.d.ts +10 -11
  252. package/lib/utils/index.d.ts +1 -2
  253. package/lib/utils/model.util.d.ts +5 -3
  254. package/lib/utils/notification.util.d.ts +4 -4
  255. package/lib/utils/tableview.util.d.ts +6 -6
  256. package/openapi/templates/model.mustache +15 -2
  257. package/openapi/templates/models.mustache +0 -44
  258. package/package.json +10 -10
  259. package/scss/mng-commons-dark-v2.scss +2 -2
  260. package/scss/mng-commons-light-v2.scss +1 -1
  261. package/scss/v2/theme/{theme-base/components/data → extensions}/_fullcalendar.scss +14 -15
  262. package/scss/v2/theme/theme-base/_colors.scss +11 -12
  263. package/scss/v2/theme/theme-base/_common.scss +8 -5
  264. package/scss/v2/theme/theme-base/_components.scss +93 -89
  265. package/scss/v2/theme/theme-base/_mixins.scss +205 -71
  266. package/scss/v2/theme/theme-base/components/button/_button.scss +80 -68
  267. package/scss/v2/theme/theme-base/components/button/_speeddial.scss +11 -1
  268. package/scss/v2/theme/theme-base/components/button/_splitbutton.scss +128 -161
  269. package/scss/v2/theme/theme-base/components/data/_carousel.scss +1 -1
  270. package/scss/v2/theme/theme-base/components/data/_datatable.scss +3 -3
  271. package/scss/v2/theme/theme-base/components/data/_dataview.scss +0 -9
  272. package/scss/v2/theme/theme-base/components/data/_filter.scss +5 -6
  273. package/scss/v2/theme/theme-base/components/data/_orderlist.scss +15 -4
  274. package/scss/v2/theme/theme-base/components/data/_organizationchart.scss +1 -1
  275. package/scss/v2/theme/theme-base/components/data/_picklist.scss +14 -3
  276. package/scss/v2/theme/theme-base/components/data/_timeline.scss +3 -6
  277. package/scss/v2/theme/theme-base/components/data/_tree.scss +7 -6
  278. package/scss/v2/theme/theme-base/components/data/_treetable.scss +3 -4
  279. package/scss/v2/theme/theme-base/components/file/_fileupload.scss +6 -0
  280. package/scss/v2/theme/theme-base/components/input/_autocomplete.scss +43 -24
  281. package/scss/v2/theme/theme-base/components/input/_calendar.scss +9 -5
  282. package/scss/v2/theme/theme-base/components/input/_cascadeselect.scss +25 -20
  283. package/scss/v2/theme/theme-base/components/input/_checkbox.scss +9 -5
  284. package/scss/v2/theme/theme-base/components/input/_chips.scss +24 -13
  285. package/scss/v2/theme/theme-base/components/input/_dropdown.scss +29 -13
  286. package/scss/v2/theme/theme-base/components/input/_editor.scss +7 -7
  287. package/scss/v2/theme/theme-base/components/input/_inputgroup.scss +1 -2
  288. package/scss/v2/theme/theme-base/components/input/_inputmask.scss +2 -2
  289. package/scss/v2/theme/theme-base/components/input/_inputnumber.scss +7 -7
  290. package/scss/v2/theme/theme-base/components/input/_inputswitch.scss +3 -3
  291. package/scss/v2/theme/theme-base/components/input/_inputtext.scss +4 -3
  292. package/scss/v2/theme/theme-base/components/input/_listbox.scss +23 -8
  293. package/scss/v2/theme/theme-base/components/input/_multiselect.scss +31 -27
  294. package/scss/v2/theme/theme-base/components/input/_radiobutton.scss +2 -2
  295. package/scss/v2/theme/theme-base/components/input/_rating.scss +33 -28
  296. package/scss/v2/theme/theme-base/components/input/_treeselect.scss +6 -6
  297. package/scss/v2/theme/theme-base/components/menu/_breadcrumb.scss +3 -3
  298. package/scss/v2/theme/theme-base/components/menu/_contextmenu.scss +8 -30
  299. package/scss/v2/theme/theme-base/components/menu/_dock.scss +11 -2
  300. package/scss/v2/theme/theme-base/components/menu/_megamenu.scss +14 -65
  301. package/scss/v2/theme/theme-base/components/menu/_menu.scss +5 -13
  302. package/scss/v2/theme/theme-base/components/menu/_menubar.scss +32 -80
  303. package/scss/v2/theme/theme-base/components/menu/_panelmenu.scss +52 -39
  304. package/scss/v2/theme/theme-base/components/menu/_slidemenu.scss +15 -20
  305. package/scss/v2/theme/theme-base/components/menu/_steps.scss +2 -2
  306. package/scss/v2/theme/theme-base/components/menu/_tabmenu.scss +1 -2
  307. package/scss/v2/theme/theme-base/components/menu/_tieredmenu.scss +10 -32
  308. package/scss/v2/theme/theme-base/components/messages/_message.scss +2 -2
  309. package/scss/v2/theme/theme-base/components/messages/_toast.scss +2 -3
  310. package/scss/v2/theme/theme-base/components/misc/_chip.scss +7 -3
  311. package/scss/v2/theme/theme-base/components/misc/_inplace.scss +0 -1
  312. package/scss/v2/theme/theme-base/components/misc/_terminal.scss +9 -8
  313. package/scss/v2/theme/theme-base/components/multimedia/_galleria.scss +6 -0
  314. package/scss/v2/theme/theme-base/components/overlay/_confirmpopup.scss +3 -5
  315. package/scss/v2/theme/theme-base/components/panel/_accordion.scss +4 -4
  316. package/scss/v2/theme/theme-base/components/panel/_fieldset.scss +1 -1
  317. package/scss/v2/theme/theme-base/components/panel/_panel.scss +10 -5
  318. package/scss/v2/theme/theme-base/components/panel/_tabview.scss +6 -2
  319. package/scss/v2/theme/theme-dark/_variables.scss +756 -765
  320. package/scss/v2/theme/theme-dark/blue/theme.scss +1 -0
  321. package/scss/v2/theme/theme-light/_variables.scss +81 -94
  322. package/scss/v2/theme/theme-light/blue/theme.scss +1 -0
  323. package/esm2022/lib/api/models/mappers.mjs +0 -13
  324. package/esm2022/lib/api/models/serialization.model.mjs +0 -2
  325. package/esm2022/lib/components/tableview/table/column-filter/column-filter.component.mjs +0 -121
  326. package/esm2022/lib/descriptors/index.mjs +0 -2
  327. package/esm2022/lib/descriptors/model.descriptor.mjs +0 -45
  328. package/esm2022/lib/mng-commons.module.mjs +0 -472
  329. package/esm2022/lib/types/mng-localstorage-config-value.type.mjs +0 -2
  330. package/esm2022/lib/utils/coercion.util.mjs +0 -6
  331. package/esm2022/lib/utils/type.util.mjs +0 -94
  332. package/lib/api/models/mappers.d.ts +0 -6
  333. package/lib/api/models/serialization.model.d.ts +0 -9
  334. package/lib/components/tableview/table/column-filter/column-filter.component.d.ts +0 -37
  335. package/lib/descriptors/model.descriptor.d.ts +0 -18
  336. package/lib/mng-commons.module.d.ts +0 -105
  337. package/lib/types/mng-localstorage-config-value.type.d.ts +0 -1
  338. package/lib/utils/coercion.util.d.ts +0 -2
  339. package/openapi/templates/serializer-registration/model.mustache +0 -97
  340. package/openapi/templates/serializer-registration/models.mustache +0 -6
  341. /package/lib/descriptors/{index.d.ts → model/index.d.ts} +0 -0
@@ -1,4 +1,9 @@
1
1
  export * from './editor.descriptor';
2
2
  export * from './field.descriptor';
3
+ export * from './field-action.descriptor';
4
+ export * from './field-base.descriptor';
5
+ export * from './field-group.descriptor';
6
+ export * from './field-lookup.descriptor';
7
+ export * from './field-many.descriptor';
3
8
  export * from './field-validation.descriptor';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2Rlc2NyaXB0b3JzL2VkaXRvci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYywrQkFBK0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZWRpdG9yLmRlc2NyaXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9maWVsZC5kZXNjcmlwdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vZmllbGQtdmFsaWRhdGlvbi5kZXNjcmlwdG9yJztcbiJdfQ==
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2Rlc2NyaXB0b3JzL2VkaXRvci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsK0JBQStCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2VkaXRvci5kZXNjcmlwdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vZmllbGQuZGVzY3JpcHRvcic7XG5leHBvcnQgKiBmcm9tICcuL2ZpZWxkLWFjdGlvbi5kZXNjcmlwdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vZmllbGQtYmFzZS5kZXNjcmlwdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vZmllbGQtZ3JvdXAuZGVzY3JpcHRvcic7XG5leHBvcnQgKiBmcm9tICcuL2ZpZWxkLWxvb2t1cC5kZXNjcmlwdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vZmllbGQtbWFueS5kZXNjcmlwdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vZmllbGQtdmFsaWRhdGlvbi5kZXNjcmlwdG9yJztcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLWZpZWxkcy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGVzY3JpcHRvcnMvZWRpdG9yL2ludGVybmFsL2VkaXRvci1maWVsZHMubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SVRhYmxlRGF0YVByb3ZpZGVyfSBmcm9tICcuLi8uLi8uLi9kYXRhLXByb3ZpZGVycyc7XG5pbXBvcnQge0FycmF5SXRlbVR5cGUsIENsYXNzVHlwZSwgRW51bUNvbnN0YW50VHlwZSwgRW51bVR5cGUsIElkVHlwZSwgTnVsbGFibGV9IGZyb20gJy4uLy4uLy4uL3R5cGVzJztcbmltcG9ydCB7SVRhYmxlRGVzY3JpcHRvckludGVybmFsfSBmcm9tICcuLi8uLi90YWJsZS9pbnRlcm5hbC90YWJsZS5tb2RlbCc7XG5pbXBvcnQge0lUYWJsZXZpZXdEZXNjcmlwdG9ySW50ZXJuYWx9IGZyb20gJy4uLy4uL3RhYmxldmlldy9pbnRlcm5hbC90YWJsZXZpZXcubW9kZWwnO1xuaW1wb3J0IHtUYWJsZXZpZXdFZGl0b3JUeXBlRW51bX0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHtBRmllbGREZXNjcmlwdG9yfSBmcm9tICcuLi9maWVsZC1iYXNlLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtGaWVsZExvb2t1cERlc2NyaXB0b3IsIEZpZWxkTG9va3VwRW51bURlc2NyaXB0b3IsIEZpZWxkTG9va3VwUHJvdmlkZXJUeXBlfSBmcm9tICcuLi9maWVsZC1sb29rdXAuZGVzY3JpcHRvcic7XG5pbXBvcnQge0ZpZWxkTWFueUVkaXRvckRlc2NyaXB0b3IsIEZpZWxkTWFueVRvTWFueUVkaXRvckRlc2NyaXB0b3J9IGZyb20gJy4uL2ZpZWxkLW1hbnkuZGVzY3JpcHRvcic7XG5pbXBvcnQge0ZpZWxkSW5wdXREZXNjcmlwdG9yLCBGaWVsZElucHV0RGVzY3JpcHRvclR5cGV9IGZyb20gJy4uL2ZpZWxkLmRlc2NyaXB0b3InO1xuXG5leHBvcnQgaW50ZXJmYWNlIElGaWVsZHNNYW5hZ2VJbnRlcmZhY2U8RWRpdG9yTW9kZWw+IHtcbiAgICBnZXRGaWVsZChwcm9wZXJ0eToga2V5b2YgRWRpdG9yTW9kZWwsIGVkaXRvclR5cGU6IFRhYmxldmlld0VkaXRvclR5cGVFbnVtKTogQUZpZWxkRGVzY3JpcHRvcjxhbnksIEVkaXRvck1vZGVsPiB8IG51bGw7XG5cbiAgICBnZXRGaWVsZFVuc2FmZShwcm9wZXJ0eTogc3RyaW5nLCBlZGl0b3JUeXBlOiBUYWJsZXZpZXdFZGl0b3JUeXBlRW51bSk6IEFGaWVsZERlc2NyaXB0b3I8YW55LCBFZGl0b3JNb2RlbD4gfCBudWxsO1xuXG4gICAgcmVtb3ZlRmllbGQocHJvcGVydHk6IGtleW9mIEVkaXRvck1vZGVsKTogdm9pZDtcblxuICAgIHJlbW92ZUZpZWxkVW5zYWZlKHByb3BlcnR5OiBzdHJpbmcpOiB2b2lkO1xuXG4gICAgYWRkRmllbGREZXNjcmlwdG9yPEZpZWxkTW9kZWw+KGZpZWxkOiBBRmllbGREZXNjcmlwdG9yPEZpZWxkTW9kZWwsIEVkaXRvck1vZGVsPik6IHRoaXM7XG5cbiAgICBhZGRGaWVsZDxQcm9wZXJ0eSBleHRlbmRzIGtleW9mIEVkaXRvck1vZGVsLCBGaWVsZE1vZGVsID0gTm9uTnVsbGFibGU8RWRpdG9yTW9kZWxbUHJvcGVydHldPiwgRmllbGRWYWx1ZSA9IEVkaXRvck1vZGVsW1Byb3BlcnR5XT4oXG4gICAgICAgIHByb3BlcnR5OiBQcm9wZXJ0eVxuICAgICk6IEZpZWxkSW5wdXREZXNjcmlwdG9yPEVkaXRvck1vZGVsLCBGaWVsZE1vZGVsLCBGaWVsZFZhbHVlPjtcblxuICAgIGFkZEZpZWxkVW5zYWZlPEZpZWxkTW9kZWwgPSBGaWVsZElucHV0RGVzY3JpcHRvclR5cGUsIEZpZWxkVmFsdWUgPSBGaWVsZE1vZGVsPihwcm9wZXJ0eTogc3RyaW5nKTogRmllbGRJbnB1dERlc2NyaXB0b3I8RWRpdG9yTW9kZWwsIEZpZWxkTW9kZWwsIEZpZWxkVmFsdWU+O1xuXG4gICAgYWRkRmllbGRzKC4uLnByb3BlcnRpZXM6IChrZXlvZiBFZGl0b3JNb2RlbClbXSk6IHRoaXM7XG5cbiAgICBhZGRGaWVsZExvb2t1cDxQcm9wZXJ0eSBleHRlbmRzIGtleW9mIEVkaXRvck1vZGVsLCBGaWVsZE1vZGVsID0gTm9uTnVsbGFibGU8RWRpdG9yTW9kZWxbUHJvcGVydHldPiwgRmllbGRWYWx1ZSA9IEVkaXRvck1vZGVsW1Byb3BlcnR5XT4oXG4gICAgICAgIHByb3BlcnR5OiBQcm9wZXJ0eSxcbiAgICAgICAgdHlwZT86IENsYXNzVHlwZTxGaWVsZE1vZGVsPlxuICAgICk6IEZpZWxkTG9va3VwRGVzY3JpcHRvcjxGaWVsZE1vZGVsLCBFZGl0b3JNb2RlbCwgdW5kZWZpbmVkLCBGaWVsZFZhbHVlPjtcblxuICAgIGFkZEZpZWxkTG9va3VwVW5zYWZlPEZpZWxkTW9kZWwsIEZpZWxkVmFsdWUgPSBGaWVsZE1vZGVsPihcbiAgICAgICAgcHJvcGVydHk6IHN0cmluZyxcbiAgICAgICAgdHlwZT86IENsYXNzVHlwZTxGaWVsZE1vZGVsPlxuICAgICk6IEZpZWxkTG9va3VwRGVzY3JpcHRvcjxGaWVsZE1vZGVsLCBFZGl0b3JNb2RlbCwgdW5kZWZpbmVkLCBGaWVsZFZhbHVlPjtcblxuICAgIGFkZEZpZWxkTG9va3VwV2l0aFByb3BlcnR5QXNWYWx1ZVVuc2FmZTxGaWVsZE1vZGVsLCBGaWVsZFZhbHVlID0gTnVsbGFibGU8SWRUeXBlPj4oXG4gICAgICAgIHByb3BlcnR5OiBzdHJpbmcsXG4gICAgICAgIG9wdGlvbnNWYWx1ZVByb3BlcnR5OiBzdHJpbmdcbiAgICApOiBGaWVsZExvb2t1cERlc2NyaXB0b3I8RmllbGRNb2RlbCwgRWRpdG9yTW9kZWwsIHVuZGVmaW5lZCwgRmllbGRWYWx1ZT47XG5cbiAgICBhZGRGaWVsZExvb2t1cFdpdGhQcm92aWRlcjxTZXJ2aWNlLCBQcm9wZXJ0eSBleHRlbmRzIGtleW9mIEVkaXRvck1vZGVsLCBGaWVsZE1vZGVsID0gTm9uTnVsbGFibGU8RWRpdG9yTW9kZWxbUHJvcGVydHldPiwgRmllbGRWYWx1ZSA9IEVkaXRvck1vZGVsW1Byb3BlcnR5XT4oXG4gICAgICAgIHByb3BlcnR5OiBQcm9wZXJ0eSxcbiAgICAgICAgcHJvdmlkZXI6IEZpZWxkTG9va3VwUHJvdmlkZXJUeXBlPEZpZWxkTW9kZWwsIFNlcnZpY2U+LFxuICAgICAgICB0eXBlPzogQ2xhc3NUeXBlPEZpZWxkTW9kZWw+XG4gICAgKTogRmllbGRMb29rdXBEZXNjcmlwdG9yPEZpZWxkTW9kZWwsIEVkaXRvck1vZGVsLCBTZXJ2aWNlLCBGaWVsZFZhbHVlPjtcblxuICAgIGFkZEZpZWxkTG9va3VwV2l0aFByb3ZpZGVyVW5zYWZlPFNlcnZpY2UsIEZpZWxkTW9kZWwsIEZpZWxkVmFsdWUgPSBGaWVsZE1vZGVsPihcbiAgICAgICAgcHJvcGVydHk6IHN0cmluZyxcbiAgICAgICAgcHJvdmlkZXI6IEZpZWxkTG9va3VwUHJvdmlkZXJUeXBlPEZpZWxkTW9kZWwsIFNlcnZpY2U+LFxuICAgICAgICB0eXBlPzogQ2xhc3NUeXBlPEZpZWxkTW9kZWw+XG4gICAgKTogRmllbGRMb29rdXBEZXNjcmlwdG9yPEZpZWxkTW9kZWwsIEVkaXRvck1vZGVsLCBTZXJ2aWNlLCBGaWVsZFZhbHVlPjtcblxuICAgIGFkZEZpZWxkTG9va3VwRW51bShcbiAgICAgICAgcHJvcGVydHk6IGtleW9mIEVkaXRvck1vZGVsLFxuICAgICAgICBlbnVtVHlwZTogRW51bVR5cGUsXG4gICAgICAgIG9wdGlvbnM/OiBBcnJheTxFbnVtQ29uc3RhbnRUeXBlPixcbiAgICAgICAgbmFtZUFzVmFsdWU/OiBib29sZWFuLFxuICAgICAgICBvcHRpb25zVGl0bGVQYXRoPzogc3RyaW5nIHwgbnVsbFxuICAgICk6IEZpZWxkTG9va3VwRW51bURlc2NyaXB0b3I8RWRpdG9yTW9kZWw+O1xuXG4gICAgYWRkRmllbGRMb29rdXBFbnVtVW5zYWZlKFxuICAgICAgICBwcm9wZXJ0eTogc3RyaW5nLFxuICAgICAgICBlbnVtVHlwZTogRW51bVR5cGUsXG4gICAgICAgIG9wdGlvbnM/OiBBcnJheTxFbnVtQ29uc3RhbnRUeXBlPixcbiAgICAgICAgbmFtZUFzVmFsdWU/OiBib29sZWFuLFxuICAgICAgICBvcHRpb25zVGl0bGVQYXRoPzogc3RyaW5nIHwgbnVsbFxuICAgICk6IEZpZWxkTG9va3VwRW51bURlc2NyaXB0b3I8RWRpdG9yTW9kZWw+O1xuXG4gICAgYWRkRmllbGRNYW55RWRpdG9yPFByb3BlcnR5IGV4dGVuZHMga2V5b2YgRWRpdG9yTW9kZWwsIEZpZWxkTW9kZWwgPSBBcnJheUl0ZW1UeXBlPEVkaXRvck1vZGVsW1Byb3BlcnR5XT4sIEZpZWxkVmFsdWUgPSBFZGl0b3JNb2RlbFtQcm9wZXJ0eV0+KFxuICAgICAgICBwcm9wZXJ0eTogUHJvcGVydHksXG4gICAgICAgIHRhYmxldmlld0Rlc2NyaXB0b3I6IElUYWJsZXZpZXdEZXNjcmlwdG9ySW50ZXJuYWw8RmllbGRNb2RlbD5cbiAgICApOiBGaWVsZE1hbnlFZGl0b3JEZXNjcmlwdG9yPEZpZWxkTW9kZWwsIEVkaXRvck1vZGVsLCBGaWVsZFZhbHVlPjtcblxuICAgIGFkZEZpZWxkTWFueUVkaXRvclVuc2FmZTxGaWVsZE1vZGVsLCBGaWVsZFZhbHVlID0gRmllbGRNb2RlbFtdPihcbiAgICAgICAgcHJvcGVydHk6IHN0cmluZyxcbiAgICAgICAgdGFibGV2aWV3RGVzY3JpcHRvcjogSVRhYmxldmlld0Rlc2NyaXB0b3JJbnRlcm5hbDxGaWVsZE1vZGVsPlxuICAgICk6IEZpZWxkTWFueUVkaXRvckRlc2NyaXB0b3I8RmllbGRNb2RlbCwgRWRpdG9yTW9kZWwsIEZpZWxkVmFsdWU+O1xuXG4gICAgYWRkRmllbGRNYW55VG9NYW55RWRpdG9yPFByb3BlcnR5IGV4dGVuZHMga2V5b2YgRWRpdG9yTW9kZWwsIEZpZWxkTW9kZWwgPSBBcnJheUl0ZW1UeXBlPEVkaXRvck1vZGVsW1Byb3BlcnR5XT4sIEZpZWxkVmFsdWUgPSBFZGl0b3JNb2RlbFtQcm9wZXJ0eV0+KFxuICAgICAgICBwcm9wZXJ0eTogUHJvcGVydHksXG4gICAgICAgIG1haW5UYWJsZURlc2NyaXB0b3I6IElUYWJsZURlc2NyaXB0b3JJbnRlcm5hbDxGaWVsZE1vZGVsPixcbiAgICAgICAgbG9va3VwVGFibGVEZXNjcmlwdG9yOiBJVGFibGVEZXNjcmlwdG9ySW50ZXJuYWw8RmllbGRNb2RlbD5cbiAgICApOiBGaWVsZE1hbnlUb01hbnlFZGl0b3JEZXNjcmlwdG9yPEZpZWxkTW9kZWwsIEVkaXRvck1vZGVsLCB1bmRlZmluZWQsIEZpZWxkVmFsdWU+O1xuXG4gICAgYWRkRmllbGRNYW55VG9NYW55RWRpdG9yVW5zYWZlPEZpZWxkTW9kZWwsIEZpZWxkVmFsdWUgPSBGaWVsZE1vZGVsW10+KFxuICAgICAgICBwcm9wZXJ0eTogc3RyaW5nLFxuICAgICAgICBtYWluVGFibGVEZXNjcmlwdG9yOiBJVGFibGVEZXNjcmlwdG9ySW50ZXJuYWw8RmllbGRNb2RlbD4sXG4gICAgICAgIGxvb2t1cFRhYmxlRGVzY3JpcHRvcjogSVRhYmxlRGVzY3JpcHRvckludGVybmFsPEZpZWxkTW9kZWw+XG4gICAgKTogRmllbGRNYW55VG9NYW55RWRpdG9yRGVzY3JpcHRvcjxGaWVsZE1vZGVsLCBFZGl0b3JNb2RlbCwgdW5kZWZpbmVkLCBGaWVsZFZhbHVlPjtcblxuICAgIGFkZEZpZWxkTWFueVRvTWFueUVkaXRvcldpdGhQcm92aWRlcjxQcm9wZXJ0eSBleHRlbmRzIGtleW9mIEVkaXRvck1vZGVsLCBTZXJ2aWNlLCBGaWVsZE1vZGVsID0gQXJyYXlJdGVtVHlwZTxFZGl0b3JNb2RlbFtQcm9wZXJ0eV0+LCBGaWVsZFZhbHVlID0gRWRpdG9yTW9kZWxbUHJvcGVydHldPihcbiAgICAgICAgcHJvcGVydHk6IFByb3BlcnR5LFxuICAgICAgICBtYWluVGFibGVEZXNjcmlwdG9yOiBJVGFibGVEZXNjcmlwdG9ySW50ZXJuYWw8RmllbGRNb2RlbD4sXG4gICAgICAgIGxvb2t1cFRhYmxlRGVzY3JpcHRvcjogSVRhYmxlRGVzY3JpcHRvckludGVybmFsPEZpZWxkTW9kZWw+LFxuICAgICAgICBsb29rdXBEYXRhUHJvdmlkZXI6IElUYWJsZURhdGFQcm92aWRlcjxGaWVsZE1vZGVsLCBTZXJ2aWNlPlxuICAgICk6IEZpZWxkTWFueVRvTWFueUVkaXRvckRlc2NyaXB0b3I8RmllbGRNb2RlbCwgRWRpdG9yTW9kZWwsIFNlcnZpY2UsIEZpZWxkVmFsdWU+O1xuXG4gICAgYWRkRmllbGRNYW55VG9NYW55RWRpdG9yV2l0aFByb3ZpZGVyVW5zYWZlPEZpZWxkTW9kZWwsIFNlcnZpY2UsIEZpZWxkVmFsdWUgPSBGaWVsZE1vZGVsW10+KFxuICAgICAgICBwcm9wZXJ0eTogc3RyaW5nLFxuICAgICAgICBtYWluVGFibGVEZXNjcmlwdG9yOiBJVGFibGVEZXNjcmlwdG9ySW50ZXJuYWw8RmllbGRNb2RlbD4sXG4gICAgICAgIGxvb2t1cFRhYmxlRGVzY3JpcHRvcjogSVRhYmxlRGVzY3JpcHRvckludGVybmFsPEZpZWxkTW9kZWw+LFxuICAgICAgICBsb29rdXBEYXRhUHJvdmlkZXI6IElUYWJsZURhdGFQcm92aWRlcjxGaWVsZE1vZGVsLCBTZXJ2aWNlPlxuICAgICk6IEZpZWxkTWFueVRvTWFueUVkaXRvckRlc2NyaXB0b3I8RmllbGRNb2RlbCwgRWRpdG9yTW9kZWwsIFNlcnZpY2UsIEZpZWxkVmFsdWU+O1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export const EDITOR_DEFAULT_GROUP_NAME = '_default';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9kZXNjcmlwdG9ycy9lZGl0b3IvaW50ZXJuYWwvZWRpdG9yLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXVCQSxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxVQUFVLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FycmF5SXRlbVR5cGV9IGZyb20gJy4uLy4uLy4uL3R5cGVzJztcbmltcG9ydCB7TW9kZWxEZXNjcmlwdG9yfSBmcm9tICcuLi8uLi9tb2RlbCc7XG5cbi8qKlxuICogVGhpcyBvbmUgaXMgaW50ZXJuYWwgb25seSB0byBwcmV2ZW50IGNpcmN1bGFyIGRlcGVuZGVuY2llcyBiZXR3ZWVuIGVkaXRvciBhbmQgZmllbGRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElFZGl0b3JEZXNjcmlwdG9ySW50ZXJuYWw8RWRpdG9yTW9kZWw+IHtcbiAgICBtb2RlbDogTW9kZWxEZXNjcmlwdG9yPEVkaXRvck1vZGVsPjtcblxuICAgIGlzTG9jYWxpemVkOiBib29sZWFuO1xuICAgIGxvY2FsaXphdGlvbkxvY2FsZVByb3BlcnR5Pzogc3RyaW5nO1xuICAgIGxvY2FsaXphdGlvbk1vZGVsPzogTW9kZWxEZXNjcmlwdG9yPGFueT47XG4gICAgbG9jYWxpemF0aW9uTG9jYWxpemF0aW9uUHJvcGVydHk/OiBzdHJpbmc7XG5cbiAgICBsb2NhbGl6ZWQ8SyBleHRlbmRzIGtleW9mIEVkaXRvck1vZGVsLCBMb2NhbGl6YXRpb25Nb2RlbCA9IEFycmF5SXRlbVR5cGU8RWRpdG9yTW9kZWxbS10+PihcbiAgICAgICAgcHJvcGVydHk6IEssXG4gICAgICAgIG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8TG9jYWxpemF0aW9uTW9kZWw+LFxuICAgICAgICBsb2NhbGVQcm9wZXJ0eToga2V5b2YgTG9jYWxpemF0aW9uTW9kZWxcbiAgICApOiB0aGlzO1xuXG4gICAgbG9jYWxpemVkVW5zYWZlPExvY2FsaXphdGlvbk1vZGVsPihwcm9wZXJ0eTogc3RyaW5nLCBtb2RlbDogTW9kZWxEZXNjcmlwdG9yPExvY2FsaXphdGlvbk1vZGVsPiwgbG9jYWxlUHJvcGVydHk6IHN0cmluZyk6IHRoaXM7XG59XG5cbmV4cG9ydCBjb25zdCBFRElUT1JfREVGQVVMVF9HUk9VUF9OQU1FID0gJ19kZWZhdWx0JztcbiJdfQ==
@@ -0,0 +1,210 @@
1
+ import { of } from 'rxjs';
2
+ import { LookupDataProvider } from '../../data-providers';
3
+ import { MngInternalError } from '../../models';
4
+ import { MngLoggerService } from '../../services';
5
+ import { DecoratorMetadataUtil, EnumUtil, ModelUtil } from '../../utils';
6
+ import { FilterLookupTypeEnum, FilterMatchModeEnum, FilterTypeEnum } from '../types';
7
+ import { FilterDescriptor } from './filter.descriptor';
8
+ export class FilterLookupDescriptor extends FilterDescriptor {
9
+ constructor(property, cfg) {
10
+ super(property);
11
+ this._lookupType = FilterLookupTypeEnum.Dropdown;
12
+ this._optionsLabelTranslate = false;
13
+ this._multiselect = false;
14
+ this._dropdownClassName = 'mng-filter-lookup-dropdown';
15
+ this._filterType = FilterTypeEnum.Lookup;
16
+ if (cfg?.dataProvider) {
17
+ this._dataProvider = cfg.dataProvider;
18
+ }
19
+ else {
20
+ this._dataProvider = LookupDataProvider.fromAnyParam(cfg?.type, cfg?.serviceType);
21
+ }
22
+ this._optionsValueProperty =
23
+ typeof cfg?.optionsValueProperty === 'undefined' ? ModelUtil.findIdAttribute(this._dataProvider.classType) ?? undefined : cfg?.optionsValueProperty;
24
+ this._filterProperty = this._optionsValueProperty ? `${property}.${this._optionsValueProperty}` : undefined;
25
+ ModelUtil.trySetLookupItemsProperties(this, false);
26
+ }
27
+ get lookupType() {
28
+ return this._lookupType;
29
+ }
30
+ get dataProvider() {
31
+ return this._dataProvider;
32
+ }
33
+ get optionsLabelProperty() {
34
+ return this._optionsLabelProperty;
35
+ }
36
+ get optionsLabelTranslate() {
37
+ return this._optionsLabelTranslate;
38
+ }
39
+ get optionsValueProperty() {
40
+ return this._optionsValueProperty ?? undefined;
41
+ }
42
+ get multiselect() {
43
+ return this._multiselect;
44
+ }
45
+ get autocompleteOpenOnFocus() {
46
+ return this._autocompleteOpenOnFocus;
47
+ }
48
+ get autocompleteAutoClear() {
49
+ return this._autocompleteAutoClear;
50
+ }
51
+ get autocompleteInlineSearch() {
52
+ return this._autocompleteInlineSearch;
53
+ }
54
+ get dropdownClassName() {
55
+ return this._dropdownClassName;
56
+ }
57
+ withOptionsLabelProperty(property, translate = false) {
58
+ return this.withOptionsLabelPropertyUnsafe(property, translate);
59
+ }
60
+ withOptionsLabelPropertyUnsafe(property, translate = false) {
61
+ this._optionsLabelProperty = property;
62
+ this._optionsLabelTranslate = translate;
63
+ return this;
64
+ }
65
+ /**
66
+ * Method will set `optionsValueProperty`, because track properties are not supported here as filters need final value to work correctly.
67
+ * Use `optionsValueProperty` instead.
68
+ */
69
+ withOptionsTrackProperty() {
70
+ return this;
71
+ }
72
+ withOptionsTrackPropertyUnsafe() {
73
+ return this;
74
+ }
75
+ withLookup(lookup) {
76
+ this._dataProvider.withLookup(lookup);
77
+ return this;
78
+ }
79
+ withMultiselect(multiselect = true) {
80
+ this._multiselect = multiselect;
81
+ this._defaultFilterMatchMode = FilterMatchModeEnum.In;
82
+ this.withMatchModes([FilterMatchModeEnum.In]);
83
+ return this;
84
+ }
85
+ withDropdownClassName(dropdownClassName) {
86
+ this._dropdownClassName = dropdownClassName;
87
+ return this;
88
+ }
89
+ withDefaultFilter(filterValue, filterValueTo, filterMatchMode) {
90
+ this._hasDefaultValue = true;
91
+ this._defaultValue = filterValue;
92
+ this._defaultValueTo = filterValueTo;
93
+ this._defaultFilterMatchMode = filterMatchMode;
94
+ if (Array.isArray(filterValue) && !this.multiselect) {
95
+ throw new MngInternalError('Array default filter can only be used with a multiselect filter.', { name: 'FilterDescriptorError' });
96
+ }
97
+ if (filterMatchMode && this._matchModes && this._matchModes.indexOf(filterMatchMode) < 0) {
98
+ this._defaultFilterMatchMode = undefined;
99
+ MngLoggerService.get().debug(`WARNING: Default filter match mode '${filterMatchMode}' could not be assigned for property ${this._property}.`);
100
+ }
101
+ if ((Array.isArray(filterValue) && !this.multiselect) || (this.multiselect && !Array.isArray(filterValue))) {
102
+ throw new MngInternalError(`Default value not in correct format for property ${this._property}.`, { name: 'FilterDescriptorError' });
103
+ }
104
+ return this;
105
+ }
106
+ asAutocomplete(opts) {
107
+ this._lookupType = FilterLookupTypeEnum.Autocomplete;
108
+ this._autocompleteAutoClear = opts?.autoClear;
109
+ this._autocompleteOpenOnFocus = opts?.openOnFocus;
110
+ this._autocompleteInlineSearch = opts?.inlineSearch;
111
+ return this;
112
+ }
113
+ copy() {
114
+ const descriptor = new FilterLookupDescriptor(this._property, {
115
+ dataProvider: this.dataProvider
116
+ });
117
+ this.copyFieldsTo(descriptor);
118
+ return descriptor;
119
+ }
120
+ copyFieldsTo(filter) {
121
+ super.copyFieldsTo(filter);
122
+ filter._lookupType = this._lookupType;
123
+ filter._optionsLabelProperty = this._optionsLabelProperty;
124
+ filter._optionsLabelTranslate = this._optionsLabelTranslate;
125
+ filter._multiselect = this._multiselect;
126
+ filter._dropdownClassName = this._dropdownClassName;
127
+ filter._autocompleteOpenOnFocus = this._autocompleteOpenOnFocus;
128
+ filter._autocompleteInlineSearch = this._autocompleteInlineSearch;
129
+ }
130
+ }
131
+ export class FilterLookupEnumDescriptor extends FilterLookupDescriptor {
132
+ constructor(property, enumType, options, nameAsValue = false, optionsTitlePath) {
133
+ super(property, {
134
+ dataProvider: LookupDataProvider.create(),
135
+ optionsValueProperty: 'value'
136
+ });
137
+ this._nameAsValue = false;
138
+ // reset this property as it is not as important as for normal lookup
139
+ this._filterProperty = undefined;
140
+ this._enumType = enumType;
141
+ this._nameAsValue = nameAsValue;
142
+ if (typeof optionsTitlePath === 'undefined') {
143
+ optionsTitlePath = DecoratorMetadataUtil.findEnumName(enumType);
144
+ }
145
+ this._optionEnumValues = Array.isArray(options)
146
+ ? EnumUtil.fromValuesAsEnumValueArray(enumType, options, nameAsValue, optionsTitlePath ?? undefined)
147
+ : EnumUtil.fromConstantsAsEnumValueArray(enumType, nameAsValue, optionsTitlePath ?? undefined);
148
+ this.withLookup(() => of(this._optionEnumValues));
149
+ this.withOptionsLabelProperty('title', optionsTitlePath !== null);
150
+ }
151
+ get enumType() {
152
+ return this._enumType;
153
+ }
154
+ asAutocomplete(opts) {
155
+ super.asAutocomplete({
156
+ ...opts,
157
+ openOnFocus: opts?.openOnFocus ?? true,
158
+ inlineSearch: opts?.inlineSearch ?? true
159
+ });
160
+ return this;
161
+ }
162
+ withMultiselectEnum(multiselect = true) {
163
+ return super.withMultiselect(multiselect);
164
+ }
165
+ withDefaultFilter() {
166
+ throw new MngInternalError(`withDefaultFilter on FilterLookupEnumDescriptor should not be used. Use withDefaultFilterEnum instead.`, { name: 'FilterDescriptorError' });
167
+ }
168
+ withDefaultFilterEnum(filterValue, filterValueTo, filterMatchMode) {
169
+ let defaultOptionValue;
170
+ if (Array.isArray(filterValue)) {
171
+ defaultOptionValue = this._nameAsValue ? filterValue.map(value => EnumUtil.getConstantName(this._enumType, value)) : filterValue;
172
+ }
173
+ else {
174
+ defaultOptionValue = this._nameAsValue ? EnumUtil.getConstantName(this._enumType, filterValue) : filterValue;
175
+ }
176
+ let defaultOptionValueTo;
177
+ if (filterValueTo) {
178
+ defaultOptionValueTo = this._nameAsValue ? EnumUtil.getConstantName(this._enumType, filterValueTo) : filterValueTo;
179
+ }
180
+ if (defaultOptionValue) {
181
+ let option;
182
+ if (Array.isArray(defaultOptionValue)) {
183
+ option = defaultOptionValue.map(value => this._optionEnumValues.find(o => o.value === value));
184
+ }
185
+ else {
186
+ option = this._optionEnumValues.find(o => o.value === defaultOptionValue);
187
+ }
188
+ const optionTo = defaultOptionValueTo ? this._optionEnumValues.find(o => o.value === defaultOptionValueTo) : undefined;
189
+ let filterValueFromArrayTo = undefined;
190
+ if (optionTo) {
191
+ filterValueFromArrayTo = this._optionsValueProperty ? optionTo[this._optionsValueProperty] : optionTo;
192
+ }
193
+ let filterValueFromArray;
194
+ if (Array.isArray(option)) {
195
+ filterValueFromArray = this._optionsValueProperty ? option.map(value => value[this._optionsValueProperty]) : option;
196
+ }
197
+ else {
198
+ filterValueFromArray = this._optionsValueProperty ? option[this._optionsValueProperty] : option;
199
+ }
200
+ super.withDefaultFilter(filterValueFromArray, filterValueFromArrayTo, filterMatchMode);
201
+ }
202
+ return this;
203
+ }
204
+ copy() {
205
+ const field = new FilterLookupEnumDescriptor(this._property, this._enumType, []);
206
+ this.copyFieldsTo(field);
207
+ return field;
208
+ }
209
+ }
210
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWxvb2t1cC5kZXNjcmlwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9kZXNjcmlwdG9ycy9maWx0ZXIvZmlsdGVyLWxvb2t1cC5kZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFeEIsT0FBTyxFQUFzQixrQkFBa0IsRUFBaUMsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RyxPQUFPLEVBQVksZ0JBQWdCLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDekQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEQsT0FBTyxFQUFDLHFCQUFxQixFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFFdkUsT0FBTyxFQUFDLG9CQUFvQixFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUNuRixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQWtCckQsTUFBTSxPQUFPLHNCQUFtRCxTQUFRLGdCQUE2QjtJQWNqRyxZQUFZLFFBQWdCLEVBQUUsR0FBcUU7UUFDL0YsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBWlYsZ0JBQVcsR0FBMEIsb0JBQW9CLENBQUMsUUFBUSxDQUFDO1FBRW5FLDJCQUFzQixHQUFHLEtBQUssQ0FBQztRQUMvQixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUVyQix1QkFBa0IsR0FBRyw0QkFBNEIsQ0FBQztRQVF4RCxJQUFJLENBQUMsV0FBVyxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUM7UUFFekMsSUFBSSxHQUFHLEVBQUUsWUFBWSxFQUFFO1lBQ25CLElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQztTQUN6QzthQUFNO1lBQ0gsSUFBSSxDQUFDLGFBQWEsR0FBRyxr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QUFDO2FBQ3ZJO2lCQUFNO2dCQUNILG9CQUFvQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxxQkFBcUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7YUFDbkg7WUFFRCxLQUFLLENBQUMsaUJBQWlCLENBQUMsb0JBQW9CLEVBQUUsc0JBQXNCLEVBQUUsZUFBZSxDQUFDLENBQUM7U0FDMUY7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRWUsSUFBSTtRQUNoQixNQUFNLEtBQUssR0FBRyxJQUFJLDBCQUEwQixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqRixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pCLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7b2Z9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge0lMb29rdXBEYXRhUHJvdmlkZXIsIExvb2t1cERhdGFQcm92aWRlciwgTG9va3VwRGF0YVByb3ZpZGVyTG9va3VwRm5UeXBlfSBmcm9tICcuLi8uLi9kYXRhLXByb3ZpZGVycyc7XG5pbXBvcnQge0VudW1WYWx1ZSwgTW5nSW50ZXJuYWxFcnJvcn0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7TW5nTG9nZ2VyU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtDbGFzc1R5cGUsIEVudW1Db25zdGFudFR5cGUsIEVudW1UeXBlLCBTZXJ2aWNlQ2xhc3NUeXBlfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQge0RlY29yYXRvck1ldGFkYXRhVXRpbCwgRW51bVV0aWwsIE1vZGVsVXRpbH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHtJTG9va3VwRGVzY3JpcHRvcn0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQge0ZpbHRlckxvb2t1cFR5cGVFbnVtLCBGaWx0ZXJNYXRjaE1vZGVFbnVtLCBGaWx0ZXJUeXBlRW51bX0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtGaWx0ZXJEZXNjcmlwdG9yfSBmcm9tICcuL2ZpbHRlci5kZXNjcmlwdG9yJztcblxuZXhwb3J0IHR5cGUgRmlsdGVyTG9va3VwRGVzY3JpcHRvckNvbnN0cnVjdG9yT3B0c1R5cGU8RmlsdGVyTW9kZWwsIFNlcnZpY2U+ID0gRmlsdGVyTG9va3VwRGVzY3JpcHRvckNyZWF0ZU9wdHNQcm92aWRlclR5cGU8RmlsdGVyTW9kZWwsIFNlcnZpY2U+ICYge1xuICAgIHR5cGU/OiBDbGFzc1R5cGU8RmlsdGVyTW9kZWw+O1xuICAgIG9wdGlvbnNWYWx1ZVByb3BlcnR5Pzogc3RyaW5nIHwgbnVsbDtcbn07XG5cbmV4cG9ydCB0eXBlIEZpbHRlckxvb2t1cERlc2NyaXB0b3JDcmVhdGVPcHRzUHJvdmlkZXJUeXBlPEZpbHRlck1vZGVsLCBTZXJ2aWNlPiA9IHtcbiAgICBzZXJ2aWNlVHlwZT86IFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT47XG4gICAgZGF0YVByb3ZpZGVyPzogSUxvb2t1cERhdGFQcm92aWRlcjxGaWx0ZXJNb2RlbCwgU2VydmljZT47XG59O1xuXG5leHBvcnQgdHlwZSBGaWx0ZXJMb29rdXBBdXRvY29tcGxldGVPcHRzVHlwZSA9IHtcbiAgICBvcGVuT25Gb2N1cz86IGJvb2xlYW47XG4gICAgaW5saW5lU2VhcmNoPzogYm9vbGVhbjtcbiAgICBhdXRvQ2xlYXI/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IGNsYXNzIEZpbHRlckxvb2t1cERlc2NyaXB0b3I8RmlsdGVyTW9kZWwsIFNlcnZpY2UgPSBhbnk+IGV4dGVuZHMgRmlsdGVyRGVzY3JpcHRvcjxGaWx0ZXJNb2RlbD4gaW1wbGVtZW50cyBJTG9va3VwRGVzY3JpcHRvcjxGaWx0ZXJNb2RlbD4ge1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfZGF0YVByb3ZpZGVyOiBJTG9va3VwRGF0YVByb3ZpZGVyPEZpbHRlck1vZGVsLCBTZXJ2aWNlPjtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX29wdGlvbnNWYWx1ZVByb3BlcnR5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICBwcm90ZWN0ZWQgX2xvb2t1cFR5cGU/OiBGaWx0ZXJMb29rdXBUeXBlRW51bSA9IEZpbHRlckxvb2t1cFR5cGVFbnVtLkRyb3Bkb3duO1xuICAgIHByb3RlY3RlZCBfb3B0aW9uc0xhYmVsUHJvcGVydHk/OiBzdHJpbmc7XG4gICAgcHJvdGVjdGVkIF9vcHRpb25zTGFiZWxUcmFuc2xhdGUgPSBmYWxzZTtcbiAgICBwcm90ZWN0ZWQgX211bHRpc2VsZWN0ID0gZmFsc2U7XG5cbiAgICBwcm90ZWN0ZWQgX2Ryb3Bkb3duQ2xhc3NOYW1lID0gJ21uZy1maWx0ZXItbG9va3VwLWRyb3Bkb3duJztcblxuICAgIHByb3RlY3RlZCBfYXV0b2NvbXBsZXRlT3Blbk9uRm9jdXM/OiBib29sZWFuO1xuICAgIHByb3RlY3RlZCBfYXV0b2NvbXBsZXRlSW5saW5lU2VhcmNoPzogYm9vbGVhbjtcbiAgICBwcm90ZWN0ZWQgX2F1dG9jb21wbGV0ZUF1dG9DbGVhcj86IGJvb2xlYW47XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm9wZXJ0eTogc3RyaW5nLCBjZmc/OiBGaWx0ZXJMb29rdXBEZXNjcmlwdG9yQ29uc3RydWN0b3JPcHRzVHlwZTxGaWx0ZXJNb2RlbCwgU2VydmljZT4pIHtcbiAgICAgICAgc3VwZXIocHJvcGVydHkpO1xuICAgICAgICB0aGlzLl9maWx0ZXJUeXBlID0gRmlsdGVyVHlwZUVudW0uTG9va3VwO1xuXG4gICAgICAgIGlmIChjZmc/LmRhdGFQcm92aWRlcikge1xuICAgICAgICAgICAgdGhpcy5fZGF0YVByb3ZpZGVyID0gY2ZnLmRhdGFQcm92aWRlcjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGFQcm92aWRlciA9IExvb2t1cERhdGFQcm92aWRlci5mcm9tQW55UGFyYW0oY2ZnPy50eXBlLCBjZmc/LnNlcnZpY2VUeXBlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX29wdGlvbnNWYWx1ZVByb3BlcnR5ID1cbiAgICAgICAgICAgIHR5cGVvZiBjZmc/Lm9wdGlvbnNWYWx1ZVByb3BlcnR5ID09PSAndW5kZWZpbmVkJyA/IE1vZGVsVXRpbC5maW5kSWRBdHRyaWJ1dGUodGhpcy5fZGF0YVByb3ZpZGVyLmNsYXNzVHlwZSkgPz8gdW5kZWZpbmVkIDogY2ZnPy5vcHRpb25zVmFsdWVQcm9wZXJ0eTtcbiAgICAgICAgdGhpcy5fZmlsdGVyUHJvcGVydHkgPSB0aGlzLl9vcHRpb25zVmFsdWVQcm9wZXJ0eSA/IGAke3Byb3BlcnR5fS4ke3RoaXMuX29wdGlvbnNWYWx1ZVByb3BlcnR5fWAgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgTW9kZWxVdGlsLnRyeVNldExvb2t1cEl0ZW1zUHJvcGVydGllcyh0aGlzLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBsb29rdXBUeXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbG9va3VwVHlwZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRhdGFQcm92aWRlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFQcm92aWRlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG9wdGlvbnNMYWJlbFByb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fb3B0aW9uc0xhYmVsUHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBvcHRpb25zTGFiZWxUcmFuc2xhdGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vcHRpb25zTGFiZWxUcmFuc2xhdGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBvcHRpb25zVmFsdWVQcm9wZXJ0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29wdGlvbnNWYWx1ZVByb3BlcnR5ID8/IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG11bHRpc2VsZWN0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbXVsdGlzZWxlY3Q7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhdXRvY29tcGxldGVPcGVuT25Gb2N1cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F1dG9jb21wbGV0ZU9wZW5PbkZvY3VzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYXV0b2NvbXBsZXRlQXV0b0NsZWFyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXV0b2NvbXBsZXRlQXV0b0NsZWFyO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYXV0b2NvbXBsZXRlSW5saW5lU2VhcmNoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXV0b2NvbXBsZXRlSW5saW5lU2VhcmNoO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZHJvcGRvd25DbGFzc05hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kcm9wZG93bkNsYXNzTmFtZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aE9wdGlvbnNMYWJlbFByb3BlcnR5KHByb3BlcnR5OiBrZXlvZiBGaWx0ZXJNb2RlbCwgdHJhbnNsYXRlID0gZmFsc2UpOiB0aGlzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2l0aE9wdGlvbnNMYWJlbFByb3BlcnR5VW5zYWZlKHByb3BlcnR5IGFzIHN0cmluZywgdHJhbnNsYXRlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aE9wdGlvbnNMYWJlbFByb3BlcnR5VW5zYWZlKHByb3BlcnR5OiBzdHJpbmcsIHRyYW5zbGF0ZSA9IGZhbHNlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX29wdGlvbnNMYWJlbFByb3BlcnR5ID0gcHJvcGVydHk7XG4gICAgICAgIHRoaXMuX29wdGlvbnNMYWJlbFRyYW5zbGF0ZSA9IHRyYW5zbGF0ZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIHdpbGwgc2V0IGBvcHRpb25zVmFsdWVQcm9wZXJ0eWAsIGJlY2F1c2UgdHJhY2sgcHJvcGVydGllcyBhcmUgbm90IHN1cHBvcnRlZCBoZXJlIGFzIGZpbHRlcnMgbmVlZCBmaW5hbCB2YWx1ZSB0byB3b3JrIGNvcnJlY3RseS5cbiAgICAgKiBVc2UgYG9wdGlvbnNWYWx1ZVByb3BlcnR5YCBpbnN0ZWFkLlxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoT3B0aW9uc1RyYWNrUHJvcGVydHkoKTogdGhpcyB7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoT3B0aW9uc1RyYWNrUHJvcGVydHlVbnNhZmUoKTogdGhpcyB7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoTG9va3VwKGxvb2t1cD86IExvb2t1cERhdGFQcm92aWRlckxvb2t1cEZuVHlwZTxGaWx0ZXJNb2RlbCwgU2VydmljZT4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZGF0YVByb3ZpZGVyLndpdGhMb29rdXAobG9va3VwKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhNdWx0aXNlbGVjdChtdWx0aXNlbGVjdCA9IHRydWUpIHtcbiAgICAgICAgdGhpcy5fbXVsdGlzZWxlY3QgPSBtdWx0aXNlbGVjdDtcbiAgICAgICAgdGhpcy5fZGVmYXVsdEZpbHRlck1hdGNoTW9kZSA9IEZpbHRlck1hdGNoTW9kZUVudW0uSW47XG4gICAgICAgIHRoaXMud2l0aE1hdGNoTW9kZXMoW0ZpbHRlck1hdGNoTW9kZUVudW0uSW5dKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhEcm9wZG93bkNsYXNzTmFtZShkcm9wZG93bkNsYXNzTmFtZTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2Ryb3Bkb3duQ2xhc3NOYW1lID0gZHJvcGRvd25DbGFzc05hbWU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSB3aXRoRGVmYXVsdEZpbHRlcihmaWx0ZXJWYWx1ZTogRmlsdGVyTW9kZWwgfCBGaWx0ZXJNb2RlbFtdLCBmaWx0ZXJWYWx1ZVRvPzogRmlsdGVyTW9kZWwsIGZpbHRlck1hdGNoTW9kZT86IEZpbHRlck1hdGNoTW9kZUVudW0pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faGFzRGVmYXVsdFZhbHVlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fZGVmYXVsdFZhbHVlID0gZmlsdGVyVmFsdWU7XG4gICAgICAgIHRoaXMuX2RlZmF1bHRWYWx1ZVRvID0gZmlsdGVyVmFsdWVUbztcbiAgICAgICAgdGhpcy5fZGVmYXVsdEZpbHRlck1hdGNoTW9kZSA9IGZpbHRlck1hdGNoTW9kZTtcblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShmaWx0ZXJWYWx1ZSkgJiYgIXRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBNbmdJbnRlcm5hbEVycm9yKCdBcnJheSBkZWZhdWx0IGZpbHRlciBjYW4gb25seSBiZSB1c2VkIHdpdGggYSBtdWx0aXNlbGVjdCBmaWx0ZXIuJywge25hbWU6ICdGaWx0ZXJEZXNjcmlwdG9yRXJyb3InfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmlsdGVyTWF0Y2hNb2RlICYmIHRoaXMuX21hdGNoTW9kZXMgJiYgdGhpcy5fbWF0Y2hNb2Rlcy5pbmRleE9mKGZpbHRlck1hdGNoTW9kZSkgPCAwKSB7XG4gICAgICAgICAgICB0aGlzLl9kZWZhdWx0RmlsdGVyTWF0Y2hNb2RlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgTW5nTG9nZ2VyU2VydmljZS5nZXQoKS5kZWJ1ZyhgV0FSTklORzogRGVmYXVsdCBmaWx0ZXIgbWF0Y2ggbW9kZSAnJHtmaWx0ZXJNYXRjaE1vZGV9JyBjb3VsZCBub3QgYmUgYXNzaWduZWQgZm9yIHByb3BlcnR5ICR7dGhpcy5fcHJvcGVydHl9LmApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKChBcnJheS5pc0FycmF5KGZpbHRlclZhbHVlKSAmJiAhdGhpcy5tdWx0aXNlbGVjdCkgfHwgKHRoaXMubXVsdGlzZWxlY3QgJiYgIUFycmF5LmlzQXJyYXkoZmlsdGVyVmFsdWUpKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IE1uZ0ludGVybmFsRXJyb3IoYERlZmF1bHQgdmFsdWUgbm90IGluIGNvcnJlY3QgZm9ybWF0IGZvciBwcm9wZXJ0eSAke3RoaXMuX3Byb3BlcnR5fS5gLCB7bmFtZTogJ0ZpbHRlckRlc2NyaXB0b3JFcnJvcid9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc0F1dG9jb21wbGV0ZShvcHRzPzogRmlsdGVyTG9va3VwQXV0b2NvbXBsZXRlT3B0c1R5cGUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fbG9va3VwVHlwZSA9IEZpbHRlckxvb2t1cFR5cGVFbnVtLkF1dG9jb21wbGV0ZTtcbiAgICAgICAgdGhpcy5fYXV0b2NvbXBsZXRlQXV0b0NsZWFyID0gb3B0cz8uYXV0b0NsZWFyO1xuICAgICAgICB0aGlzLl9hdXRvY29tcGxldGVPcGVuT25Gb2N1cyA9IG9wdHM/Lm9wZW5PbkZvY3VzO1xuICAgICAgICB0aGlzLl9hdXRvY29tcGxldGVJbmxpbmVTZWFyY2ggPSBvcHRzPy5pbmxpbmVTZWFyY2g7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBjb3B5KCk6IEZpbHRlckxvb2t1cERlc2NyaXB0b3I8RmlsdGVyTW9kZWw+IHtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRvciA9IG5ldyBGaWx0ZXJMb29rdXBEZXNjcmlwdG9yPEZpbHRlck1vZGVsPih0aGlzLl9wcm9wZXJ0eSwge1xuICAgICAgICAgICAgZGF0YVByb3ZpZGVyOiB0aGlzLmRhdGFQcm92aWRlclxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jb3B5RmllbGRzVG8oZGVzY3JpcHRvcik7XG4gICAgICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBjb3B5RmllbGRzVG8oZmlsdGVyOiBGaWx0ZXJMb29rdXBEZXNjcmlwdG9yPEZpbHRlck1vZGVsPikge1xuICAgICAgICBzdXBlci5jb3B5RmllbGRzVG8oZmlsdGVyKTtcbiAgICAgICAgZmlsdGVyLl9sb29rdXBUeXBlID0gdGhpcy5fbG9va3VwVHlwZTtcbiAgICAgICAgZmlsdGVyLl9vcHRpb25zTGFiZWxQcm9wZXJ0eSA9IHRoaXMuX29wdGlvbnNMYWJlbFByb3BlcnR5O1xuICAgICAgICBmaWx0ZXIuX29wdGlvbnNMYWJlbFRyYW5zbGF0ZSA9IHRoaXMuX29wdGlvbnNMYWJlbFRyYW5zbGF0ZTtcbiAgICAgICAgZmlsdGVyLl9tdWx0aXNlbGVjdCA9IHRoaXMuX211bHRpc2VsZWN0O1xuICAgICAgICBmaWx0ZXIuX2Ryb3Bkb3duQ2xhc3NOYW1lID0gdGhpcy5fZHJvcGRvd25DbGFzc05hbWU7XG4gICAgICAgIGZpbHRlci5fYXV0b2NvbXBsZXRlT3Blbk9uRm9jdXMgPSB0aGlzLl9hdXRvY29tcGxldGVPcGVuT25Gb2N1cztcbiAgICAgICAgZmlsdGVyLl9hdXRvY29tcGxldGVJbmxpbmVTZWFyY2ggPSB0aGlzLl9hdXRvY29tcGxldGVJbmxpbmVTZWFyY2g7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRmlsdGVyTG9va3VwRW51bURlc2NyaXB0b3IgZXh0ZW5kcyBGaWx0ZXJMb29rdXBEZXNjcmlwdG9yPEVudW1WYWx1ZT4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2VudW1UeXBlOiBFbnVtVHlwZTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9vcHRpb25FbnVtVmFsdWVzOiBFbnVtVmFsdWVbXTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9uYW1lQXNWYWx1ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IocHJvcGVydHk6IHN0cmluZywgZW51bVR5cGU6IEVudW1UeXBlLCBvcHRpb25zPzogQXJyYXk8RW51bUNvbnN0YW50VHlwZT4sIG5hbWVBc1ZhbHVlID0gZmFsc2UsIG9wdGlvbnNUaXRsZVBhdGg/OiBzdHJpbmcgfCBudWxsKSB7XG4gICAgICAgIHN1cGVyKHByb3BlcnR5LCB7XG4gICAgICAgICAgICBkYXRhUHJvdmlkZXI6IExvb2t1cERhdGFQcm92aWRlci5jcmVhdGU8RW51bVZhbHVlPigpLFxuICAgICAgICAgICAgb3B0aW9uc1ZhbHVlUHJvcGVydHk6ICd2YWx1ZSdcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gcmVzZXQgdGhpcyBwcm9wZXJ0eSBhcyBpdCBpcyBub3QgYXMgaW1wb3J0YW50IGFzIGZvciBub3JtYWwgbG9va3VwXG4gICAgICAgIHRoaXMuX2ZpbHRlclByb3BlcnR5ID0gdW5kZWZpbmVkO1xuXG4gICAgICAgIHRoaXMuX2VudW1UeXBlID0gZW51bVR5cGU7XG4gICAgICAgIHRoaXMuX25hbWVBc1ZhbHVlID0gbmFtZUFzVmFsdWU7XG4gICAgICAgIGlmICh0eXBlb2Ygb3B0aW9uc1RpdGxlUGF0aCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIG9wdGlvbnNUaXRsZVBhdGggPSBEZWNvcmF0b3JNZXRhZGF0YVV0aWwuZmluZEVudW1OYW1lKGVudW1UeXBlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX29wdGlvbkVudW1WYWx1ZXMgPSBBcnJheS5pc0FycmF5KG9wdGlvbnMpXG4gICAgICAgICAgICA/IEVudW1VdGlsLmZyb21WYWx1ZXNBc0VudW1WYWx1ZUFycmF5KGVudW1UeXBlLCBvcHRpb25zLCBuYW1lQXNWYWx1ZSwgb3B0aW9uc1RpdGxlUGF0aCA/PyB1bmRlZmluZWQpXG4gICAgICAgICAgICA6IEVudW1VdGlsLmZyb21Db25zdGFudHNBc0VudW1WYWx1ZUFycmF5KGVudW1UeXBlLCBuYW1lQXNWYWx1ZSwgb3B0aW9uc1RpdGxlUGF0aCA/PyB1bmRlZmluZWQpO1xuXG4gICAgICAgIHRoaXMud2l0aExvb2t1cCgoKSA9PiBvZih0aGlzLl9vcHRpb25FbnVtVmFsdWVzKSk7XG4gICAgICAgIHRoaXMud2l0aE9wdGlvbnNMYWJlbFByb3BlcnR5KCd0aXRsZScsIG9wdGlvbnNUaXRsZVBhdGggIT09IG51bGwpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZW51bVR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbnVtVHlwZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgYXNBdXRvY29tcGxldGUob3B0cz86IEZpbHRlckxvb2t1cEF1dG9jb21wbGV0ZU9wdHNUeXBlKTogdGhpcyB7XG4gICAgICAgIHN1cGVyLmFzQXV0b2NvbXBsZXRlKHtcbiAgICAgICAgICAgIC4uLm9wdHMsXG4gICAgICAgICAgICBvcGVuT25Gb2N1czogb3B0cz8ub3Blbk9uRm9jdXMgPz8gdHJ1ZSxcbiAgICAgICAgICAgIGlubGluZVNlYXJjaDogb3B0cz8uaW5saW5lU2VhcmNoID8/IHRydWVcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoTXVsdGlzZWxlY3RFbnVtKG11bHRpc2VsZWN0ID0gdHJ1ZSk6IEZpbHRlckxvb2t1cEVudW1EZXNjcmlwdG9yIHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLndpdGhNdWx0aXNlbGVjdChtdWx0aXNlbGVjdCkgYXMgRmlsdGVyTG9va3VwRW51bURlc2NyaXB0b3I7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIHdpdGhEZWZhdWx0RmlsdGVyKCk6IHRoaXMge1xuICAgICAgICB0aHJvdyBuZXcgTW5nSW50ZXJuYWxFcnJvcihgd2l0aERlZmF1bHRGaWx0ZXIgb24gRmlsdGVyTG9va3VwRW51bURlc2NyaXB0b3Igc2hvdWxkIG5vdCBiZSB1c2VkLiBVc2Ugd2l0aERlZmF1bHRGaWx0ZXJFbnVtIGluc3RlYWQuYCwge25hbWU6ICdGaWx0ZXJEZXNjcmlwdG9yRXJyb3InfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhEZWZhdWx0RmlsdGVyRW51bShmaWx0ZXJWYWx1ZTogRW51bUNvbnN0YW50VHlwZSB8IEVudW1Db25zdGFudFR5cGVbXSwgZmlsdGVyVmFsdWVUbz86IEVudW1Db25zdGFudFR5cGUsIGZpbHRlck1hdGNoTW9kZT86IEZpbHRlck1hdGNoTW9kZUVudW0pOiB0aGlzIHtcbiAgICAgICAgbGV0IGRlZmF1bHRPcHRpb25WYWx1ZTogYW55IHwgYW55W107XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGZpbHRlclZhbHVlKSkge1xuICAgICAgICAgICAgZGVmYXVsdE9wdGlvblZhbHVlID0gdGhpcy5fbmFtZUFzVmFsdWUgPyBmaWx0ZXJWYWx1ZS5tYXAodmFsdWUgPT4gRW51bVV0aWwuZ2V0Q29uc3RhbnROYW1lKHRoaXMuX2VudW1UeXBlLCB2YWx1ZSkpIDogZmlsdGVyVmFsdWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkZWZhdWx0T3B0aW9uVmFsdWUgPSB0aGlzLl9uYW1lQXNWYWx1ZSA/IEVudW1VdGlsLmdldENvbnN0YW50TmFtZSh0aGlzLl9lbnVtVHlwZSwgZmlsdGVyVmFsdWUpIDogZmlsdGVyVmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZGVmYXVsdE9wdGlvblZhbHVlVG86IGFueTtcbiAgICAgICAgaWYgKGZpbHRlclZhbHVlVG8pIHtcbiAgICAgICAgICAgIGRlZmF1bHRPcHRpb25WYWx1ZVRvID0gdGhpcy5fbmFtZUFzVmFsdWUgPyBFbnVtVXRpbC5nZXRDb25zdGFudE5hbWUodGhpcy5fZW51bVR5cGUsIGZpbHRlclZhbHVlVG8pIDogZmlsdGVyVmFsdWVUbztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkZWZhdWx0T3B0aW9uVmFsdWUpIHtcbiAgICAgICAgICAgIGxldCBvcHRpb246IGFueSB8IGFueVtdO1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGVmYXVsdE9wdGlvblZhbHVlKSkge1xuICAgICAgICAgICAgICAgIG9wdGlvbiA9IGRlZmF1bHRPcHRpb25WYWx1ZS5tYXAodmFsdWUgPT4gdGhpcy5fb3B0aW9uRW51bVZhbHVlcy5maW5kKG8gPT4gby52YWx1ZSA9PT0gdmFsdWUpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgb3B0aW9uID0gdGhpcy5fb3B0aW9uRW51bVZhbHVlcy5maW5kKG8gPT4gby52YWx1ZSA9PT0gZGVmYXVsdE9wdGlvblZhbHVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgb3B0aW9uVG8gPSBkZWZhdWx0T3B0aW9uVmFsdWVUbyA/IHRoaXMuX29wdGlvbkVudW1WYWx1ZXMuZmluZChvID0+IG8udmFsdWUgPT09IGRlZmF1bHRPcHRpb25WYWx1ZVRvKSA6IHVuZGVmaW5lZDtcblxuICAgICAgICAgICAgbGV0IGZpbHRlclZhbHVlRnJvbUFycmF5VG8gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBpZiAob3B0aW9uVG8pIHtcbiAgICAgICAgICAgICAgICBmaWx0ZXJWYWx1ZUZyb21BcnJheVRvID0gdGhpcy5fb3B0aW9uc1ZhbHVlUHJvcGVydHkgPyBvcHRpb25Ub1t0aGlzLl9vcHRpb25zVmFsdWVQcm9wZXJ0eSBhcyBrZXlvZiBvYmplY3RdIDogb3B0aW9uVG87XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBmaWx0ZXJWYWx1ZUZyb21BcnJheTogYW55IHwgYW55W107XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvcHRpb24pKSB7XG4gICAgICAgICAgICAgICAgZmlsdGVyVmFsdWVGcm9tQXJyYXkgPSB0aGlzLl9vcHRpb25zVmFsdWVQcm9wZXJ0eSA/IG9wdGlvbi5tYXAodmFsdWUgPT4gdmFsdWVbdGhpcy5fb3B0aW9uc1ZhbHVlUHJvcGVydHkgYXMga2V5b2Ygb2JqZWN0XSkgOiBvcHRpb247XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGZpbHRlclZhbHVlRnJvbUFycmF5ID0gdGhpcy5fb3B0aW9uc1ZhbHVlUHJvcGVydHkgPyBvcHRpb25bdGhpcy5fb3B0aW9uc1ZhbHVlUHJvcGVydHkgYXMga2V5b2Ygb2JqZWN0XSA6IG9wdGlvbjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc3VwZXIud2l0aERlZmF1bHRGaWx0ZXIoZmlsdGVyVmFsdWVGcm9tQXJyYXksIGZpbHRlclZhbHVlRnJvbUFycmF5VG8sIGZpbHRlck1hdGNoTW9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIGNvcHkoKTogRmlsdGVyTG9va3VwRW51bURlc2NyaXB0b3Ige1xuICAgICAgICBjb25zdCBmaWVsZCA9IG5ldyBGaWx0ZXJMb29rdXBFbnVtRGVzY3JpcHRvcih0aGlzLl9wcm9wZXJ0eSwgdGhpcy5fZW51bVR5cGUsIFtdKTtcbiAgICAgICAgdGhpcy5jb3B5RmllbGRzVG8oZmllbGQpO1xuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgfVxufVxuIl19