@mediusinc/mng-commons 0.12.2 → 0.12.3-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 (339) hide show
  1. package/esm2020/lib/api/models/builders/query-param.builder.mjs +58 -58
  2. package/esm2020/lib/api/models/filter-match-type.model.mjs +24 -24
  3. package/esm2020/lib/api/models/filter-param.model.mjs +32 -32
  4. package/esm2020/lib/api/models/index.mjs +8 -8
  5. package/esm2020/lib/api/models/mappers.mjs +12 -12
  6. package/esm2020/lib/api/models/query-mode.model.mjs +17 -17
  7. package/esm2020/lib/api/models/query-param.model.mjs +67 -67
  8. package/esm2020/lib/api/models/query-result.model.mjs +17 -17
  9. package/esm2020/lib/api/models/serialization.model.mjs +1 -1
  10. package/esm2020/lib/api/services/api.abstract.service.mjs +55 -55
  11. package/esm2020/lib/api/services/crud-api.abstract.service.mjs +67 -67
  12. package/esm2020/lib/api/services/get-all-api.abstract.service.mjs +22 -22
  13. package/esm2020/lib/api/services/index.mjs +3 -3
  14. package/esm2020/lib/api/utils/index.mjs +2 -2
  15. package/esm2020/lib/api/utils/medius-rest.util.mjs +151 -151
  16. package/esm2020/lib/api/utils/object-serializer.util.mjs +243 -243
  17. package/esm2020/lib/components/action/action.component.mjs +201 -201
  18. package/esm2020/lib/components/action/editor/action-editor.component.mjs +247 -247
  19. package/esm2020/lib/components/action/index.mjs +3 -3
  20. package/esm2020/lib/components/action/models/action-confirmation-service.model.mjs +1 -1
  21. package/esm2020/lib/components/action/models/action-execution.model.mjs +235 -235
  22. package/esm2020/lib/components/action/models/index.mjs +4 -3
  23. package/esm2020/lib/components/action/models/tableview-action-default-categories.model.mjs +11 -0
  24. package/esm2020/lib/components/action/route/action-route.component.mjs +124 -124
  25. package/esm2020/lib/components/form/autocomplete/autocomplete.component.mjs +281 -281
  26. package/esm2020/lib/components/form/dropdown/dropdown.component.mjs +194 -189
  27. package/esm2020/lib/components/form/editor/form-editor.component.mjs +211 -211
  28. package/esm2020/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +48 -48
  29. package/esm2020/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +43 -43
  30. package/esm2020/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +24 -24
  31. package/esm2020/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.mjs +101 -101
  32. package/esm2020/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.mjs +22 -22
  33. package/esm2020/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +179 -179
  34. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +173 -173
  35. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +149 -149
  36. package/esm2020/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +16 -16
  37. package/esm2020/lib/components/form/formly/fields/index.mjs +9 -9
  38. package/esm2020/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +14 -14
  39. package/esm2020/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.mjs +14 -14
  40. package/esm2020/lib/components/form/formly/wrappers/index.mjs +2 -2
  41. package/esm2020/lib/components/form/index.mjs +3 -3
  42. package/esm2020/lib/components/form/models/form-editor.event.mjs +33 -33
  43. package/esm2020/lib/components/form/models/index.mjs +1 -1
  44. package/esm2020/lib/components/layout/breadcrumb.component.mjs +16 -16
  45. package/esm2020/lib/components/layout/footer.component.mjs +16 -16
  46. package/esm2020/lib/components/layout/index.mjs +7 -7
  47. package/esm2020/lib/components/layout/main-layout.component.mjs +51 -51
  48. package/esm2020/lib/components/layout/menu-item.component.mjs +238 -238
  49. package/esm2020/lib/components/layout/menu.component.mjs +20 -20
  50. package/esm2020/lib/components/layout/services/index.mjs +1 -1
  51. package/esm2020/lib/components/layout/services/main-layout.component.service.mjs +192 -192
  52. package/esm2020/lib/components/layout/topbar.component.mjs +57 -57
  53. package/esm2020/lib/components/layout/version.component.mjs +57 -57
  54. package/esm2020/lib/components/tableview/index.mjs +6 -6
  55. package/esm2020/lib/components/tableview/models/index.mjs +1 -1
  56. package/esm2020/lib/components/tableview/models/table.event.mjs +15 -15
  57. package/esm2020/lib/components/tableview/route/tableview-route.abstract.component.mjs +80 -58
  58. package/esm2020/lib/components/tableview/route/tableview-route.component.mjs +53 -61
  59. package/esm2020/lib/components/tableview/table/column-filter/column-filter.component.mjs +104 -104
  60. package/esm2020/lib/components/tableview/table/column-value/column-value.component.mjs +70 -70
  61. package/esm2020/lib/components/tableview/table/table.component.mjs +531 -509
  62. package/esm2020/lib/components/tableview/tableview.component.mjs +92 -92
  63. package/esm2020/lib/config/formly.config.mjs +180 -180
  64. package/esm2020/lib/config/index.mjs +1 -1
  65. package/esm2020/lib/config/models/index.mjs +2 -2
  66. package/esm2020/lib/config/models/mng-config.model.mjs +1 -1
  67. package/esm2020/lib/config/models/mng-formly-config-model.mjs +1 -1
  68. package/esm2020/lib/data-providers/base.data-provider.mjs +16 -16
  69. package/esm2020/lib/data-providers/editor.data-provider.mjs +36 -36
  70. package/esm2020/lib/data-providers/index.mjs +5 -5
  71. package/esm2020/lib/data-providers/lookup.data-provider.mjs +15 -15
  72. package/esm2020/lib/data-providers/table.data-provider.mjs +24 -17
  73. package/esm2020/lib/data-providers/tableview.data-provider.mjs +46 -17
  74. package/esm2020/lib/descriptors/action.descriptor.mjs +620 -616
  75. package/esm2020/lib/descriptors/column.descriptor.mjs +342 -265
  76. package/esm2020/lib/descriptors/editor.descriptor.mjs +285 -147
  77. package/esm2020/lib/descriptors/field-validation.descriptor.mjs +20 -20
  78. package/esm2020/lib/descriptors/field.descriptor.mjs +854 -820
  79. package/esm2020/lib/descriptors/filter.descriptor.mjs +290 -290
  80. package/esm2020/lib/descriptors/index.mjs +9 -9
  81. package/esm2020/lib/descriptors/interfaces/field-config.interface.mjs +1 -1
  82. package/esm2020/lib/descriptors/interfaces/index.mjs +2 -2
  83. package/esm2020/lib/descriptors/interfaces/lookup-descriptor.interface.mjs +1 -1
  84. package/esm2020/lib/descriptors/model.descriptor.mjs +33 -33
  85. package/esm2020/lib/descriptors/table.descriptor.mjs +522 -198
  86. package/esm2020/lib/descriptors/tableview.descriptor.mjs +355 -135
  87. package/esm2020/lib/descriptors/types/action.type.mjs +52 -52
  88. package/esm2020/lib/descriptors/types/column.type.mjs +10 -10
  89. package/esm2020/lib/descriptors/types/editor.type.mjs +7 -7
  90. package/esm2020/lib/descriptors/types/field.type.mjs +52 -52
  91. package/esm2020/lib/descriptors/types/filter.type.mjs +30 -30
  92. package/esm2020/lib/descriptors/types/index.mjs +6 -6
  93. package/esm2020/lib/descriptors/types/table.type.mjs +16 -16
  94. package/esm2020/lib/descriptors/types/tableview-attr.model.mjs +2 -0
  95. package/esm2020/lib/directives/component.directive.mjs +43 -43
  96. package/esm2020/lib/directives/index.mjs +2 -2
  97. package/esm2020/lib/directives/template.directive.mjs +27 -27
  98. package/esm2020/lib/mng-commons.module.mjs +439 -439
  99. package/esm2020/lib/models/column-value.model.mjs +1 -1
  100. package/esm2020/lib/models/enum.model.mjs +1 -1
  101. package/esm2020/lib/models/error.model.mjs +1 -1
  102. package/esm2020/lib/models/formly-field.model.mjs +1 -1
  103. package/esm2020/lib/models/index.mjs +8 -8
  104. package/esm2020/lib/models/menu.model.mjs +1 -1
  105. package/esm2020/lib/models/user.model.mjs +1 -1
  106. package/esm2020/lib/models/version.model.mjs +1 -1
  107. package/esm2020/lib/models/view-container.model.mjs +1 -1
  108. package/esm2020/lib/pipes/boolean.pipe.mjs +26 -26
  109. package/esm2020/lib/pipes/enum.pipe.mjs +24 -24
  110. package/esm2020/lib/pipes/i18n-property.pipe.mjs +17 -17
  111. package/esm2020/lib/pipes/index.mjs +5 -5
  112. package/esm2020/lib/pipes/json-path.pipe.mjs +79 -79
  113. package/esm2020/lib/pipes/link-formatter.pipe.mjs +38 -38
  114. package/esm2020/lib/router/index.mjs +2 -2
  115. package/esm2020/lib/router/models/index.mjs +1 -1
  116. package/esm2020/lib/router/models/router.model.mjs +2 -2
  117. package/esm2020/lib/router/route-builder.mjs +425 -425
  118. package/esm2020/lib/router/tableview-route-builder.mjs +184 -160
  119. package/esm2020/lib/security/authorization.guard.mjs +25 -25
  120. package/esm2020/lib/security/authorization.service.mjs +46 -46
  121. package/esm2020/lib/security/authorization.util.mjs +15 -15
  122. package/esm2020/lib/security/index.mjs +3 -3
  123. package/esm2020/lib/security/model/authorization.type.mjs +7 -7
  124. package/esm2020/lib/security/model/index.mjs +3 -3
  125. package/esm2020/lib/security/model/permission-service.interface.mjs +1 -1
  126. package/esm2020/lib/security/model/permissions.model.mjs +87 -95
  127. package/esm2020/lib/services/action-executor.service.mjs +537 -537
  128. package/esm2020/lib/services/commons.service.mjs +342 -342
  129. package/esm2020/lib/services/configuration.service.mjs +119 -119
  130. package/esm2020/lib/services/error-mapper.service.mjs +13 -13
  131. package/esm2020/lib/services/index.mjs +6 -6
  132. package/esm2020/lib/services/internal/commons-init.provider.mjs +3 -3
  133. package/esm2020/lib/services/internal/commons-init.service.mjs +43 -43
  134. package/esm2020/lib/services/internal/index.mjs +2 -2
  135. package/esm2020/lib/services/navigation.service.mjs +47 -47
  136. package/esm2020/lib/services/providers/config-service.provider.mjs +29 -29
  137. package/esm2020/lib/services/providers/formly-config.provider.mjs +30 -30
  138. package/esm2020/lib/services/providers/index.mjs +2 -2
  139. package/esm2020/lib/services/tokens/browser-storage.token.mjs +5 -5
  140. package/esm2020/lib/services/tokens/commons-init.token.mjs +2 -2
  141. package/esm2020/lib/services/tokens/default-setting.token.mjs +2 -2
  142. package/esm2020/lib/services/tokens/index.mjs +4 -4
  143. package/esm2020/lib/services/tokens/module-config.token.mjs +2 -2
  144. package/esm2020/lib/services/version.service.mjs +38 -38
  145. package/esm2020/lib/services/view-container.component.service.mjs +34 -34
  146. package/esm2020/lib/styles/button-style.builder.mjs +111 -111
  147. package/esm2020/lib/styles/index.mjs +2 -2
  148. package/esm2020/lib/styles/styles.util.mjs +40 -40
  149. package/esm2020/lib/types/index.mjs +2 -2
  150. package/esm2020/lib/types/type.decorator.mjs +12 -12
  151. package/esm2020/lib/types/type.model.mjs +1 -1
  152. package/esm2020/lib/utils/action-data-provider.util.mjs +144 -144
  153. package/esm2020/lib/utils/column.util.mjs +37 -0
  154. package/esm2020/lib/utils/editor-formly.util.mjs +250 -250
  155. package/esm2020/lib/utils/enum.util.mjs +81 -81
  156. package/esm2020/lib/utils/field.util.mjs +60 -0
  157. package/esm2020/lib/utils/i18n.util.mjs +232 -232
  158. package/esm2020/lib/utils/index.mjs +11 -9
  159. package/esm2020/lib/utils/model.util.mjs +61 -60
  160. package/esm2020/lib/utils/notification.util.mjs +45 -45
  161. package/esm2020/lib/utils/route.util.mjs +23 -23
  162. package/esm2020/lib/utils/string.util.mjs +23 -23
  163. package/esm2020/lib/utils/tableview.util.mjs +58 -0
  164. package/esm2020/lib/utils/type.util.mjs +76 -76
  165. package/esm2020/mediusinc-mng-commons.mjs +4 -4
  166. package/esm2020/public-api.mjs +53 -53
  167. package/fesm2015/mediusinc-mng-commons.mjs +11898 -10853
  168. package/fesm2015/mediusinc-mng-commons.mjs.map +1 -1
  169. package/fesm2020/mediusinc-mng-commons.mjs +11746 -10706
  170. package/fesm2020/mediusinc-mng-commons.mjs.map +1 -1
  171. package/index.d.ts +5 -5
  172. package/lib/api/models/builders/query-param.builder.d.ts +13 -13
  173. package/lib/api/models/filter-match-type.model.d.ts +23 -23
  174. package/lib/api/models/filter-param.model.d.ts +23 -23
  175. package/lib/api/models/index.d.ts +8 -8
  176. package/lib/api/models/mappers.d.ts +6 -6
  177. package/lib/api/models/query-mode.model.d.ts +16 -16
  178. package/lib/api/models/query-param.model.d.ts +31 -31
  179. package/lib/api/models/query-result.model.d.ts +23 -23
  180. package/lib/api/models/serialization.model.d.ts +8 -8
  181. package/lib/api/services/api.abstract.service.d.ts +24 -24
  182. package/lib/api/services/crud-api.abstract.service.d.ts +22 -22
  183. package/lib/api/services/get-all-api.abstract.service.d.ts +14 -14
  184. package/lib/api/services/index.d.ts +3 -3
  185. package/lib/api/utils/index.d.ts +2 -2
  186. package/lib/api/utils/medius-rest.util.d.ts +15 -15
  187. package/lib/api/utils/object-serializer.util.d.ts +33 -33
  188. package/lib/components/action/action.component.d.ts +68 -68
  189. package/lib/components/action/editor/action-editor.component.d.ts +64 -64
  190. package/lib/components/action/index.d.ts +3 -3
  191. package/lib/components/action/models/action-confirmation-service.model.d.ts +6 -6
  192. package/lib/components/action/models/action-execution.model.d.ts +129 -129
  193. package/lib/components/action/models/index.d.ts +3 -2
  194. package/lib/components/action/models/tableview-action-default-categories.model.d.ts +10 -0
  195. package/lib/components/action/route/action-route.component.d.ts +31 -31
  196. package/lib/components/form/autocomplete/autocomplete.component.d.ts +56 -56
  197. package/lib/components/form/dropdown/dropdown.component.d.ts +52 -50
  198. package/lib/components/form/editor/form-editor.component.d.ts +45 -45
  199. package/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.d.ts +15 -15
  200. package/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.d.ts +14 -14
  201. package/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.d.ts +13 -13
  202. package/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.d.ts +23 -23
  203. package/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.d.ts +10 -10
  204. package/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.d.ts +45 -45
  205. package/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.d.ts +23 -23
  206. package/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.d.ts +38 -38
  207. package/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.d.ts +6 -6
  208. package/lib/components/form/formly/fields/index.d.ts +9 -9
  209. package/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.d.ts +6 -6
  210. package/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.d.ts +6 -6
  211. package/lib/components/form/formly/wrappers/index.d.ts +2 -2
  212. package/lib/components/form/index.d.ts +3 -3
  213. package/lib/components/form/models/form-editor.event.d.ts +37 -37
  214. package/lib/components/form/models/index.d.ts +1 -1
  215. package/lib/components/layout/breadcrumb.component.d.ts +8 -8
  216. package/lib/components/layout/footer.component.d.ts +9 -9
  217. package/lib/components/layout/index.d.ts +7 -7
  218. package/lib/components/layout/main-layout.component.d.ts +20 -20
  219. package/lib/components/layout/menu-item.component.d.ts +44 -44
  220. package/lib/components/layout/menu.component.d.ts +10 -10
  221. package/lib/components/layout/services/index.d.ts +1 -1
  222. package/lib/components/layout/services/main-layout.component.service.d.ts +65 -65
  223. package/lib/components/layout/topbar.component.d.ts +24 -24
  224. package/lib/components/layout/version.component.d.ts +19 -19
  225. package/lib/components/tableview/index.d.ts +6 -6
  226. package/lib/components/tableview/models/index.d.ts +1 -1
  227. package/lib/components/tableview/models/table.event.d.ts +17 -17
  228. package/lib/components/tableview/route/tableview-route.abstract.component.d.ts +25 -20
  229. package/lib/components/tableview/route/tableview-route.component.d.ts +18 -23
  230. package/lib/components/tableview/table/column-filter/column-filter.component.d.ts +32 -32
  231. package/lib/components/tableview/table/column-value/column-value.component.d.ts +29 -29
  232. package/lib/components/tableview/table/table.component.d.ts +110 -108
  233. package/lib/components/tableview/tableview.component.d.ts +41 -41
  234. package/lib/config/formly.config.d.ts +16 -16
  235. package/lib/config/index.d.ts +1 -1
  236. package/lib/config/models/index.d.ts +2 -2
  237. package/lib/config/models/mng-config.model.d.ts +36 -36
  238. package/lib/config/models/mng-formly-config-model.d.ts +17 -17
  239. package/lib/data-providers/base.data-provider.d.ts +14 -14
  240. package/lib/data-providers/editor.data-provider.d.ts +25 -25
  241. package/lib/data-providers/index.d.ts +5 -5
  242. package/lib/data-providers/lookup.data-provider.d.ts +14 -14
  243. package/lib/data-providers/table.data-provider.d.ts +19 -14
  244. package/lib/data-providers/tableview.data-provider.d.ts +29 -15
  245. package/lib/descriptors/action.descriptor.d.ts +263 -259
  246. package/lib/descriptors/column.descriptor.d.ts +116 -82
  247. package/lib/descriptors/editor.descriptor.d.ts +102 -37
  248. package/lib/descriptors/field-validation.descriptor.d.ts +18 -18
  249. package/lib/descriptors/field.descriptor.d.ts +305 -300
  250. package/lib/descriptors/filter.descriptor.d.ts +106 -106
  251. package/lib/descriptors/index.d.ts +9 -9
  252. package/lib/descriptors/interfaces/field-config.interface.d.ts +9 -9
  253. package/lib/descriptors/interfaces/index.d.ts +2 -2
  254. package/lib/descriptors/interfaces/lookup-descriptor.interface.d.ts +17 -17
  255. package/lib/descriptors/model.descriptor.d.ts +15 -15
  256. package/lib/descriptors/table.descriptor.d.ts +208 -66
  257. package/lib/descriptors/tableview.descriptor.d.ts +141 -42
  258. package/lib/descriptors/types/action.type.d.ts +45 -45
  259. package/lib/descriptors/types/column.type.d.ts +9 -9
  260. package/lib/descriptors/types/editor.type.d.ts +6 -6
  261. package/lib/descriptors/types/field.type.d.ts +44 -44
  262. package/lib/descriptors/types/filter.type.d.ts +27 -27
  263. package/lib/descriptors/types/index.d.ts +6 -6
  264. package/lib/descriptors/types/table.type.d.ts +13 -13
  265. package/lib/descriptors/types/tableview-attr.model.d.ts +9 -0
  266. package/lib/directives/component.directive.d.ts +16 -16
  267. package/lib/directives/index.d.ts +2 -2
  268. package/lib/directives/template.directive.d.ts +13 -13
  269. package/lib/mng-commons.module.d.ts +87 -87
  270. package/lib/models/column-value.model.d.ts +4 -4
  271. package/lib/models/enum.model.d.ts +6 -6
  272. package/lib/models/error.model.d.ts +14 -14
  273. package/lib/models/formly-field.model.d.ts +16 -16
  274. package/lib/models/index.d.ts +8 -8
  275. package/lib/models/menu.model.d.ts +27 -27
  276. package/lib/models/user.model.d.ts +8 -8
  277. package/lib/models/version.model.d.ts +18 -18
  278. package/lib/models/view-container.model.d.ts +6 -6
  279. package/lib/pipes/boolean.pipe.d.ts +7 -7
  280. package/lib/pipes/enum.pipe.d.ts +8 -8
  281. package/lib/pipes/i18n-property.pipe.d.ts +8 -8
  282. package/lib/pipes/index.d.ts +5 -5
  283. package/lib/pipes/json-path.pipe.d.ts +13 -13
  284. package/lib/pipes/link-formatter.pipe.d.ts +11 -11
  285. package/lib/router/index.d.ts +2 -2
  286. package/lib/router/models/index.d.ts +1 -1
  287. package/lib/router/models/router.model.d.ts +33 -27
  288. package/lib/router/route-builder.d.ts +98 -98
  289. package/lib/router/tableview-route-builder.d.ts +37 -34
  290. package/lib/security/authorization.guard.d.ts +11 -11
  291. package/lib/security/authorization.service.d.ts +19 -19
  292. package/lib/security/authorization.util.d.ts +5 -5
  293. package/lib/security/index.d.ts +3 -3
  294. package/lib/security/model/authorization.type.d.ts +6 -6
  295. package/lib/security/model/index.d.ts +3 -3
  296. package/lib/security/model/permission-service.interface.d.ts +6 -6
  297. package/lib/security/model/permissions.model.d.ts +37 -44
  298. package/lib/services/action-executor.service.d.ts +149 -149
  299. package/lib/services/commons.service.d.ts +78 -78
  300. package/lib/services/configuration.service.d.ts +45 -45
  301. package/lib/services/error-mapper.service.d.ts +7 -7
  302. package/lib/services/index.d.ts +6 -6
  303. package/lib/services/internal/commons-init.provider.d.ts +3 -3
  304. package/lib/services/internal/commons-init.service.d.ts +16 -16
  305. package/lib/services/internal/index.d.ts +2 -2
  306. package/lib/services/navigation.service.d.ts +14 -14
  307. package/lib/services/providers/config-service.provider.d.ts +6 -6
  308. package/lib/services/providers/formly-config.provider.d.ts +4 -4
  309. package/lib/services/providers/index.d.ts +2 -2
  310. package/lib/services/tokens/browser-storage.token.d.ts +2 -2
  311. package/lib/services/tokens/commons-init.token.d.ts +3 -3
  312. package/lib/services/tokens/default-setting.token.d.ts +2 -2
  313. package/lib/services/tokens/index.d.ts +4 -4
  314. package/lib/services/tokens/module-config.token.d.ts +3 -3
  315. package/lib/services/version.service.d.ts +13 -13
  316. package/lib/services/view-container.component.service.d.ts +22 -22
  317. package/lib/styles/button-style.builder.d.ts +26 -26
  318. package/lib/styles/index.d.ts +2 -2
  319. package/lib/styles/styles.util.d.ts +14 -14
  320. package/lib/types/index.d.ts +2 -2
  321. package/lib/types/type.decorator.d.ts +4 -4
  322. package/lib/types/type.model.d.ts +23 -23
  323. package/lib/utils/action-data-provider.util.d.ts +20 -20
  324. package/lib/utils/column.util.d.ts +8 -0
  325. package/lib/utils/editor-formly.util.d.ts +11 -11
  326. package/lib/utils/enum.util.d.ts +50 -50
  327. package/lib/utils/field.util.d.ts +13 -0
  328. package/lib/utils/i18n.util.d.ts +56 -56
  329. package/lib/utils/index.d.ts +10 -8
  330. package/lib/utils/model.util.d.ts +8 -8
  331. package/lib/utils/notification.util.d.ts +11 -11
  332. package/lib/utils/route.util.d.ts +4 -4
  333. package/lib/utils/string.util.d.ts +4 -4
  334. package/lib/utils/tableview.util.d.ts +23 -0
  335. package/lib/utils/type.util.d.ts +36 -36
  336. package/mediusinc-mng-commons-0.12.3-rc.1.tgz +0 -0
  337. package/package.json +1 -1
  338. package/public-api.d.ts +33 -33
  339. package/version-info.json +6 -6
@@ -1,147 +1,285 @@
1
- import { I18nUtils } from '../utils';
2
- import { AFieldDescriptor, FieldGroupDescriptor, FieldInputDescriptor, FieldLookupDescriptor, FieldLookupEnumDescriptor, FieldManyEditorDescriptor, FieldManyToManyEditorDescriptor, FieldTabGroupDescriptor, ModelDescriptor } from './';
3
- import { TableviewTypeEnum } from './types';
4
- export class EditorDescriptor {
5
- constructor(modelType, idProperty, titleProperty, tableviewEditorType = TableviewTypeEnum.None) {
6
- this._tabs = [];
7
- this._groups = [];
8
- this._fields = [];
9
- this._disabled = false;
10
- this._model = new ModelDescriptor(modelType, idProperty, titleProperty);
11
- this._tableviewEditorType = tableviewEditorType;
12
- }
13
- get model() {
14
- return this._model;
15
- }
16
- get tabs() {
17
- return this._tabs;
18
- }
19
- get fields() {
20
- return this._fields;
21
- }
22
- get tableviewEditorType() {
23
- return this._disabled;
24
- }
25
- get disabled() {
26
- return this._disabled;
27
- }
28
- createTabGroup(name, title) {
29
- const tabGroup = new FieldTabGroupDescriptor(this, name);
30
- if (!title) {
31
- title = I18nUtils.Type.getTabKey(this.model.typeName, name);
32
- }
33
- tabGroup.withTitle(title);
34
- this.createTabGroupDescriptor(tabGroup);
35
- return tabGroup;
36
- }
37
- createFieldGroup(name, title) {
38
- const fieldGroup = new FieldGroupDescriptor(this, name);
39
- if (title !== null) {
40
- if (!title) {
41
- title = I18nUtils.Type.getGroupKey(this.model.typeName, name);
42
- }
43
- fieldGroup.withTitle(title);
44
- }
45
- this.createFieldGroupDescriptor(fieldGroup);
46
- return fieldGroup;
47
- }
48
- addFieldDescriptor(field) {
49
- this.createDefaultGroup();
50
- this._fields.push(field);
51
- this._currentGroup?.addField(field);
52
- return this;
53
- }
54
- addField(property) {
55
- const field = new FieldInputDescriptor(this, property);
56
- this.addFieldDescriptor(field);
57
- return field;
58
- }
59
- removeField(property) {
60
- const fieldIdx = this._fields.findIndex(f => f.property === property);
61
- if (fieldIdx < 0) {
62
- throw new Error(`Field ${property} does not exist.`);
63
- }
64
- const field = this._fields[fieldIdx];
65
- if (field.group) {
66
- const groupFieldIdx = field.group.fields.findIndex(f => f instanceof AFieldDescriptor && f.property === property);
67
- if (groupFieldIdx >= 0) {
68
- field.group.fields.splice(groupFieldIdx, 1);
69
- }
70
- }
71
- this._fields.splice(fieldIdx, 1);
72
- return this;
73
- }
74
- getField(property) {
75
- return this._fields.find(f => f.property === property) ?? null;
76
- }
77
- addFieldLookup(property, modelType) {
78
- const field = new FieldLookupDescriptor(this, property, modelType);
79
- this.addFieldDescriptor(field);
80
- return field;
81
- }
82
- addFieldLookupEnum(property, enumType, options, nameAsValue = false, optionsTitlePath) {
83
- const field = new FieldLookupEnumDescriptor(this, property, enumType, options, nameAsValue, optionsTitlePath);
84
- this.addFieldDescriptor(field);
85
- return field;
86
- }
87
- addFieldManyEditor(property, tableviewDescriptor) {
88
- const field = new FieldManyEditorDescriptor(this, property, tableviewDescriptor);
89
- this.addFieldDescriptor(field);
90
- return field;
91
- }
92
- addFieldManyToManyEditor(property, mainTableDescriptor, lookupTableDescriptor) {
93
- const field = new FieldManyToManyEditorDescriptor(this, property, mainTableDescriptor, lookupTableDescriptor);
94
- this.addFieldDescriptor(field);
95
- return field;
96
- }
97
- withDisabled(disabled = true) {
98
- this._disabled = disabled;
99
- return this;
100
- }
101
- addValidation(name, validator, message) {
102
- if (this._currentGroup) {
103
- this._currentGroup.withValidation(name, validator, message);
104
- }
105
- }
106
- copy() {
107
- const editor = new EditorDescriptor(this.model.type, this.model.idPropertyName, this.model.titlePropertyName);
108
- for (const tabGroup of this._tabs) {
109
- editor.createTabGroupDescriptor(tabGroup.copy());
110
- }
111
- for (const tabGroup of editor._tabs) {
112
- for (const fieldGroup of tabGroup.fields) {
113
- editor._fields.push(...fieldGroup.fields);
114
- }
115
- editor._groups.push(...tabGroup.fields);
116
- }
117
- editor._currentTabGroup = editor._tabs[editor._tabs.length - 1];
118
- editor._currentGroup = editor._currentTabGroup.fields[editor._currentTabGroup.fields.length - 1];
119
- editor._disabled = this._disabled;
120
- return editor;
121
- }
122
- createFieldGroupDescriptor(fieldGroup) {
123
- this.createDefaultTabGroup();
124
- this._currentGroup = fieldGroup;
125
- this._groups.push(fieldGroup);
126
- this._currentTabGroup?.addField(fieldGroup);
127
- return this;
128
- }
129
- createTabGroupDescriptor(tabGroup) {
130
- this._currentTabGroup = tabGroup;
131
- this._tabs.push(tabGroup);
132
- return this;
133
- }
134
- createDefaultGroup() {
135
- this.createDefaultTabGroup();
136
- if (this._currentTabGroup?.fields.length === 0) {
137
- this.createFieldGroup(EditorDescriptor.defaultGroupName, null);
138
- }
139
- }
140
- createDefaultTabGroup() {
141
- if (this._tabs.length === 0) {
142
- this.createTabGroup(EditorDescriptor.defaultGroupName, 'general.general');
143
- }
144
- }
145
- }
146
- EditorDescriptor.defaultGroupName = '_default';
147
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmRlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2Rlc2NyaXB0b3JzL2VkaXRvci5kZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDbkMsT0FBTyxFQUNILGdCQUFnQixFQUNoQixvQkFBb0IsRUFDcEIsb0JBQW9CLEVBQ3BCLHFCQUFxQixFQUNyQix5QkFBeUIsRUFDekIseUJBQXlCLEVBQ3pCLCtCQUErQixFQUMvQix1QkFBdUIsRUFDdkIsZUFBZSxFQUdsQixNQUFNLElBQUksQ0FBQztBQUNaLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLFNBQVMsQ0FBQztBQUUxQyxNQUFNLE9BQU8sZ0JBQWdCO0lBYXpCLFlBQVksU0FBdUIsRUFBRSxVQUFtQixFQUFFLGFBQXNCLEVBQUUsbUJBQW1CLEdBQUcsaUJBQWlCLENBQUMsSUFBSTtRQVI3RyxVQUFLLEdBQXNDLEVBQUUsQ0FBQztRQUM5QyxZQUFPLEdBQW1DLEVBQUUsQ0FBQztRQUM3QyxZQUFPLEdBQW9DLEVBQUUsQ0FBQztRQUl2RCxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBR3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQUksU0FBUyxFQUFFLFVBQVUsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUMzRSxJQUFJLENBQUMsb0JBQW9CLEdBQUcsbUJBQW1CLENBQUM7SUFDcEQsQ0FBQztJQUVELElBQVcsS0FBSztRQUNaLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBVyxJQUFJO1FBQ1gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFXLE1BQU07UUFDYixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQVcsbUJBQW1CO1FBQzFCLE9B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Qzs7QUFuTHNCLGlDQUFnQixHQUFHLFVBQVUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2xhc3NUeXBlLCBFbnVtQ29uc3RhbnRUeXBlLCBFbnVtVHlwZSwgTW5nRmllbGRWYWxpZGF0aW9uTWVzc2FnZSwgTW5nRmllbGRWYWxpZGF0b3J9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7STE4blV0aWxzfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQge1xuICAgIEFGaWVsZERlc2NyaXB0b3IsXG4gICAgRmllbGRHcm91cERlc2NyaXB0b3IsXG4gICAgRmllbGRJbnB1dERlc2NyaXB0b3IsXG4gICAgRmllbGRMb29rdXBEZXNjcmlwdG9yLFxuICAgIEZpZWxkTG9va3VwRW51bURlc2NyaXB0b3IsXG4gICAgRmllbGRNYW55RWRpdG9yRGVzY3JpcHRvcixcbiAgICBGaWVsZE1hbnlUb01hbnlFZGl0b3JEZXNjcmlwdG9yLFxuICAgIEZpZWxkVGFiR3JvdXBEZXNjcmlwdG9yLFxuICAgIE1vZGVsRGVzY3JpcHRvcixcbiAgICBUYWJsZURlc2NyaXB0b3IsXG4gICAgVGFibGV2aWV3RGVzY3JpcHRvclxufSBmcm9tICcuLyc7XG5pbXBvcnQge1RhYmxldmlld1R5cGVFbnVtfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGNsYXNzIEVkaXRvckRlc2NyaXB0b3I8VD4ge1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgZGVmYXVsdEdyb3VwTmFtZSA9ICdfZGVmYXVsdCc7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9tb2RlbDogTW9kZWxEZXNjcmlwdG9yPFQ+O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3RhYmxldmlld0VkaXRvclR5cGU6IFRhYmxldmlld1R5cGVFbnVtO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3RhYnM6IEFycmF5PEZpZWxkVGFiR3JvdXBEZXNjcmlwdG9yPFQ+PiA9IFtdO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2dyb3VwczogQXJyYXk8RmllbGRHcm91cERlc2NyaXB0b3I8VD4+ID0gW107XG4gICAgcHJpdmF0ZSByZWFkb25seSBfZmllbGRzOiBBcnJheTxBRmllbGREZXNjcmlwdG9yPGFueSwgVD4+ID0gW107XG4gICAgcHJpdmF0ZSBfY3VycmVudFRhYkdyb3VwPzogRmllbGRUYWJHcm91cERlc2NyaXB0b3I8VD47XG4gICAgcHJpdmF0ZSBfY3VycmVudEdyb3VwPzogRmllbGRHcm91cERlc2NyaXB0b3I8VD47XG5cbiAgICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IobW9kZWxUeXBlOiBDbGFzc1R5cGU8VD4sIGlkUHJvcGVydHk/OiBzdHJpbmcsIHRpdGxlUHJvcGVydHk/OiBzdHJpbmcsIHRhYmxldmlld0VkaXRvclR5cGUgPSBUYWJsZXZpZXdUeXBlRW51bS5Ob25lKSB7XG4gICAgICAgIHRoaXMuX21vZGVsID0gbmV3IE1vZGVsRGVzY3JpcHRvcjxUPihtb2RlbFR5cGUsIGlkUHJvcGVydHksIHRpdGxlUHJvcGVydHkpO1xuICAgICAgICB0aGlzLl90YWJsZXZpZXdFZGl0b3JUeXBlID0gdGFibGV2aWV3RWRpdG9yVHlwZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG1vZGVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbW9kZWw7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0YWJzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFicztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGZpZWxkcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpZWxkcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHRhYmxldmlld0VkaXRvclR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRpc2FibGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZVRhYkdyb3VwKG5hbWU6IHN0cmluZywgdGl0bGU/OiBzdHJpbmcpOiBGaWVsZFRhYkdyb3VwRGVzY3JpcHRvcjxUPiB7XG4gICAgICAgIGNvbnN0IHRhYkdyb3VwID0gbmV3IEZpZWxkVGFiR3JvdXBEZXNjcmlwdG9yPFQ+KHRoaXMsIG5hbWUpO1xuICAgICAgICBpZiAoIXRpdGxlKSB7XG4gICAgICAgICAgICB0aXRsZSA9IEkxOG5VdGlscy5UeXBlLmdldFRhYktleSh0aGlzLm1vZGVsLnR5cGVOYW1lLCBuYW1lKTtcbiAgICAgICAgfVxuICAgICAgICB0YWJHcm91cC53aXRoVGl0bGUodGl0bGUpO1xuICAgICAgICB0aGlzLmNyZWF0ZVRhYkdyb3VwRGVzY3JpcHRvcih0YWJHcm91cCk7XG4gICAgICAgIHJldHVybiB0YWJHcm91cDtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlRmllbGRHcm91cChuYW1lOiBzdHJpbmcsIHRpdGxlPzogc3RyaW5nIHwgbnVsbCk6IEZpZWxkR3JvdXBEZXNjcmlwdG9yPFQ+IHtcbiAgICAgICAgY29uc3QgZmllbGRHcm91cCA9IG5ldyBGaWVsZEdyb3VwRGVzY3JpcHRvcjxUPih0aGlzLCBuYW1lKTtcbiAgICAgICAgaWYgKHRpdGxlICE9PSBudWxsKSB7XG4gICAgICAgICAgICBpZiAoIXRpdGxlKSB7XG4gICAgICAgICAgICAgICAgdGl0bGUgPSBJMThuVXRpbHMuVHlwZS5nZXRHcm91cEtleSh0aGlzLm1vZGVsLnR5cGVOYW1lLCBuYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpZWxkR3JvdXAud2l0aFRpdGxlKHRpdGxlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNyZWF0ZUZpZWxkR3JvdXBEZXNjcmlwdG9yKGZpZWxkR3JvdXApO1xuICAgICAgICByZXR1cm4gZmllbGRHcm91cDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmllbGREZXNjcmlwdG9yPEZUPihmaWVsZDogQUZpZWxkRGVzY3JpcHRvcjxGVCwgVD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5jcmVhdGVEZWZhdWx0R3JvdXAoKTtcbiAgICAgICAgdGhpcy5fZmllbGRzLnB1c2goZmllbGQpO1xuICAgICAgICB0aGlzLl9jdXJyZW50R3JvdXA/LmFkZEZpZWxkKGZpZWxkKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpZWxkKHByb3BlcnR5OiBzdHJpbmcpOiBGaWVsZElucHV0RGVzY3JpcHRvcjxUPiB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gbmV3IEZpZWxkSW5wdXREZXNjcmlwdG9yPFQ+KHRoaXMsIHByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5hZGRGaWVsZERlc2NyaXB0b3IoZmllbGQpO1xuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZUZpZWxkKHByb3BlcnR5OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgY29uc3QgZmllbGRJZHggPSB0aGlzLl9maWVsZHMuZmluZEluZGV4KGYgPT4gZi5wcm9wZXJ0eSA9PT0gcHJvcGVydHkpO1xuICAgICAgICBpZiAoZmllbGRJZHggPCAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZpZWxkICR7cHJvcGVydHl9IGRvZXMgbm90IGV4aXN0LmApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5fZmllbGRzW2ZpZWxkSWR4XTtcbiAgICAgICAgaWYgKGZpZWxkLmdyb3VwKSB7XG4gICAgICAgICAgICBjb25zdCBncm91cEZpZWxkSWR4ID0gZmllbGQuZ3JvdXAuZmllbGRzLmZpbmRJbmRleChmID0+IGYgaW5zdGFuY2VvZiBBRmllbGREZXNjcmlwdG9yICYmIGYucHJvcGVydHkgPT09IHByb3BlcnR5KTtcbiAgICAgICAgICAgIGlmIChncm91cEZpZWxkSWR4ID49IDApIHtcbiAgICAgICAgICAgICAgICBmaWVsZC5ncm91cC5maWVsZHMuc3BsaWNlKGdyb3VwRmllbGRJZHgsIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2ZpZWxkcy5zcGxpY2UoZmllbGRJZHgsIDEpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RmllbGQocHJvcGVydHk6IHN0cmluZyk6IEFGaWVsZERlc2NyaXB0b3I8YW55LCBUPiB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmllbGRzLmZpbmQoZiA9PiBmLnByb3BlcnR5ID09PSBwcm9wZXJ0eSkgPz8gbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmllbGRMb29rdXA8RlQ+KHByb3BlcnR5OiBzdHJpbmcsIG1vZGVsVHlwZTogQ2xhc3NUeXBlPEZUPik6IEZpZWxkTG9va3VwRGVzY3JpcHRvcjxGVCwgVD4ge1xuICAgICAgICBjb25zdCBmaWVsZCA9IG5ldyBGaWVsZExvb2t1cERlc2NyaXB0b3I8RlQsIFQ+KHRoaXMsIHByb3BlcnR5LCBtb2RlbFR5cGUpO1xuICAgICAgICB0aGlzLmFkZEZpZWxkRGVzY3JpcHRvcihmaWVsZCk7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmllbGRMb29rdXBFbnVtKFxuICAgICAgICBwcm9wZXJ0eTogc3RyaW5nLFxuICAgICAgICBlbnVtVHlwZTogRW51bVR5cGUsXG4gICAgICAgIG9wdGlvbnM/OiBBcnJheTxFbnVtQ29uc3RhbnRUeXBlPixcbiAgICAgICAgbmFtZUFzVmFsdWUgPSBmYWxzZSxcbiAgICAgICAgb3B0aW9uc1RpdGxlUGF0aD86IHN0cmluZyB8IG51bGxcbiAgICApOiBGaWVsZExvb2t1cEVudW1EZXNjcmlwdG9yPFQ+IHtcbiAgICAgICAgY29uc3QgZmllbGQgPSBuZXcgRmllbGRMb29rdXBFbnVtRGVzY3JpcHRvcih0aGlzLCBwcm9wZXJ0eSwgZW51bVR5cGUsIG9wdGlvbnMsIG5hbWVBc1ZhbHVlLCBvcHRpb25zVGl0bGVQYXRoKTtcbiAgICAgICAgdGhpcy5hZGRGaWVsZERlc2NyaXB0b3IoZmllbGQpO1xuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpZWxkTWFueUVkaXRvcjxGVD4ocHJvcGVydHk6IHN0cmluZywgdGFibGV2aWV3RGVzY3JpcHRvcjogVGFibGV2aWV3RGVzY3JpcHRvcjxGVD4pOiBGaWVsZE1hbnlFZGl0b3JEZXNjcmlwdG9yPEZULCBUPiB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gbmV3IEZpZWxkTWFueUVkaXRvckRlc2NyaXB0b3IodGhpcywgcHJvcGVydHksIHRhYmxldmlld0Rlc2NyaXB0b3IpO1xuICAgICAgICB0aGlzLmFkZEZpZWxkRGVzY3JpcHRvcihmaWVsZCk7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmllbGRNYW55VG9NYW55RWRpdG9yPEZUPihcbiAgICAgICAgcHJvcGVydHk6IHN0cmluZyxcbiAgICAgICAgbWFpblRhYmxlRGVzY3JpcHRvcjogVGFibGVEZXNjcmlwdG9yPEZUPixcbiAgICAgICAgbG9va3VwVGFibGVEZXNjcmlwdG9yOiBUYWJsZURlc2NyaXB0b3I8RlQ+XG4gICAgKTogRmllbGRNYW55VG9NYW55RWRpdG9yRGVzY3JpcHRvcjxGVCwgVD4ge1xuICAgICAgICBjb25zdCBmaWVsZCA9IG5ldyBGaWVsZE1hbnlUb01hbnlFZGl0b3JEZXNjcmlwdG9yKHRoaXMsIHByb3BlcnR5LCBtYWluVGFibGVEZXNjcmlwdG9yLCBsb29rdXBUYWJsZURlc2NyaXB0b3IpO1xuICAgICAgICB0aGlzLmFkZEZpZWxkRGVzY3JpcHRvcihmaWVsZCk7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aERpc2FibGVkKGRpc2FibGVkID0gdHJ1ZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGRpc2FibGVkO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkVmFsaWRhdGlvbihuYW1lOiBzdHJpbmcsIHZhbGlkYXRvcj86IE1uZ0ZpZWxkVmFsaWRhdG9yLCBtZXNzYWdlPzogTW5nRmllbGRWYWxpZGF0aW9uTWVzc2FnZSkge1xuICAgICAgICBpZiAodGhpcy5fY3VycmVudEdyb3VwKSB7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50R3JvdXAud2l0aFZhbGlkYXRpb24obmFtZSwgdmFsaWRhdG9yLCBtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBjb3B5KCk6IEVkaXRvckRlc2NyaXB0b3I8VD4ge1xuICAgICAgICBjb25zdCBlZGl0b3IgPSBuZXcgRWRpdG9yRGVzY3JpcHRvcjxUPih0aGlzLm1vZGVsLnR5cGUsIHRoaXMubW9kZWwuaWRQcm9wZXJ0eU5hbWUsIHRoaXMubW9kZWwudGl0bGVQcm9wZXJ0eU5hbWUpO1xuICAgICAgICBmb3IgKGNvbnN0IHRhYkdyb3VwIG9mIHRoaXMuX3RhYnMpIHtcbiAgICAgICAgICAgIGVkaXRvci5jcmVhdGVUYWJHcm91cERlc2NyaXB0b3IodGFiR3JvdXAuY29weSgpKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IHRhYkdyb3VwIG9mIGVkaXRvci5fdGFicykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBmaWVsZEdyb3VwIG9mIHRhYkdyb3VwLmZpZWxkcykge1xuICAgICAgICAgICAgICAgIGVkaXRvci5fZmllbGRzLnB1c2goLi4uZmllbGRHcm91cC5maWVsZHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWRpdG9yLl9ncm91cHMucHVzaCguLi50YWJHcm91cC5maWVsZHMpO1xuICAgICAgICB9XG4gICAgICAgIGVkaXRvci5fY3VycmVudFRhYkdyb3VwID0gZWRpdG9yLl90YWJzW2VkaXRvci5fdGFicy5sZW5ndGggLSAxXTtcbiAgICAgICAgZWRpdG9yLl9jdXJyZW50R3JvdXAgPSBlZGl0b3IuX2N1cnJlbnRUYWJHcm91cC5maWVsZHNbZWRpdG9yLl9jdXJyZW50VGFiR3JvdXAuZmllbGRzLmxlbmd0aCAtIDFdO1xuICAgICAgICBlZGl0b3IuX2Rpc2FibGVkID0gdGhpcy5fZGlzYWJsZWQ7XG4gICAgICAgIHJldHVybiBlZGl0b3I7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZUZpZWxkR3JvdXBEZXNjcmlwdG9yKGZpZWxkR3JvdXA6IEZpZWxkR3JvdXBEZXNjcmlwdG9yPFQ+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuY3JlYXRlRGVmYXVsdFRhYkdyb3VwKCk7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRHcm91cCA9IGZpZWxkR3JvdXA7XG4gICAgICAgIHRoaXMuX2dyb3Vwcy5wdXNoKGZpZWxkR3JvdXApO1xuICAgICAgICB0aGlzLl9jdXJyZW50VGFiR3JvdXA/LmFkZEZpZWxkKGZpZWxkR3JvdXApO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZVRhYkdyb3VwRGVzY3JpcHRvcih0YWJHcm91cDogRmllbGRUYWJHcm91cERlc2NyaXB0b3I8VD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fY3VycmVudFRhYkdyb3VwID0gdGFiR3JvdXA7XG4gICAgICAgIHRoaXMuX3RhYnMucHVzaCh0YWJHcm91cCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlRGVmYXVsdEdyb3VwKCkge1xuICAgICAgICB0aGlzLmNyZWF0ZURlZmF1bHRUYWJHcm91cCgpO1xuICAgICAgICBpZiAodGhpcy5fY3VycmVudFRhYkdyb3VwPy5maWVsZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUZpZWxkR3JvdXAoRWRpdG9yRGVzY3JpcHRvci5kZWZhdWx0R3JvdXBOYW1lLCBudWxsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlRGVmYXVsdFRhYkdyb3VwKCkge1xuICAgICAgICBpZiAodGhpcy5fdGFicy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlVGFiR3JvdXAoRWRpdG9yRGVzY3JpcHRvci5kZWZhdWx0R3JvdXBOYW1lLCAnZ2VuZXJhbC5nZW5lcmFsJyk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
1
+ import { ObjectSerializer } from '../api/utils';
2
+ import { FieldUtil, I18nUtils } from '../utils';
3
+ import { TableviewUtil } from '../utils/tableview.util';
4
+ import { AFieldDescriptor, FieldGroupDescriptor, FieldInputDescriptor, FieldLookupDescriptor, FieldLookupEnumDescriptor, FieldManyEditorDescriptor, FieldManyToManyEditorDescriptor, FieldTabGroupDescriptor, ModelDescriptor } from './';
5
+ import { FieldInputTypeEnum, TableviewTypeEnum } from './types';
6
+ export class EditorDescriptor {
7
+ constructor(modelType, idProperty, titleProperty, tableviewEditorType = TableviewTypeEnum.None) {
8
+ this._tabs = [];
9
+ this._groups = [];
10
+ this._fields = [];
11
+ this._disabled = false;
12
+ this._model = new ModelDescriptor(modelType, idProperty, titleProperty);
13
+ this._tableviewEditorType = tableviewEditorType;
14
+ }
15
+ get model() {
16
+ return this._model;
17
+ }
18
+ get tabs() {
19
+ return this._tabs;
20
+ }
21
+ get fields() {
22
+ return this._fields;
23
+ }
24
+ get tableviewEditorType() {
25
+ return this._disabled;
26
+ }
27
+ get disabled() {
28
+ return this._disabled;
29
+ }
30
+ createTabGroup(name, title) {
31
+ const tabGroup = new FieldTabGroupDescriptor(this, name);
32
+ if (!title) {
33
+ title = I18nUtils.Type.getTabKey(this.model.typeName, name);
34
+ }
35
+ tabGroup.withTitle(title);
36
+ this.createTabGroupDescriptor(tabGroup);
37
+ return tabGroup;
38
+ }
39
+ createFieldGroup(name, title) {
40
+ const fieldGroup = new FieldGroupDescriptor(this, name);
41
+ if (title !== null) {
42
+ if (!title) {
43
+ title = I18nUtils.Type.getGroupKey(this.model.typeName, name);
44
+ }
45
+ fieldGroup.withTitle(title);
46
+ }
47
+ this.createFieldGroupDescriptor(fieldGroup);
48
+ return fieldGroup;
49
+ }
50
+ addFieldDescriptor(field) {
51
+ this.createDefaultGroup();
52
+ this._fields.push(field);
53
+ this._currentGroup?.addField(field);
54
+ return this;
55
+ }
56
+ addField(property) {
57
+ const field = new FieldInputDescriptor(this, property);
58
+ this.addFieldDescriptor(field);
59
+ return field;
60
+ }
61
+ removeField(property) {
62
+ const fieldIdx = this._fields.findIndex(f => f.property === property);
63
+ if (fieldIdx < 0) {
64
+ throw new Error(`Field ${property} does not exist.`);
65
+ }
66
+ for (const group of this._groups) {
67
+ const groupFieldIdx = group.fields.findIndex(f => f instanceof AFieldDescriptor && f.property === property);
68
+ if (groupFieldIdx >= 0) {
69
+ group.fields.splice(groupFieldIdx, 1);
70
+ break;
71
+ }
72
+ }
73
+ this._fields.splice(fieldIdx, 1);
74
+ }
75
+ getField(property) {
76
+ return this._fields.find(f => f.property === property) ?? null;
77
+ }
78
+ addFieldLookup(property, modelType) {
79
+ const field = new FieldLookupDescriptor(this, property, modelType);
80
+ this.addFieldDescriptor(field);
81
+ return field;
82
+ }
83
+ addFieldLookupEnum(property, enumType, options, nameAsValue = false, optionsTitlePath) {
84
+ const field = new FieldLookupEnumDescriptor(this, property, enumType, options, nameAsValue, optionsTitlePath);
85
+ this.addFieldDescriptor(field);
86
+ return field;
87
+ }
88
+ addFieldManyEditor(property, tableviewDescriptor) {
89
+ const field = new FieldManyEditorDescriptor(this, property, tableviewDescriptor);
90
+ this.addFieldDescriptor(field);
91
+ return field;
92
+ }
93
+ addFieldManyToManyEditor(property, mainTableDescriptor, lookupTableDescriptor) {
94
+ const field = new FieldManyToManyEditorDescriptor(this, property, mainTableDescriptor, lookupTableDescriptor);
95
+ this.addFieldDescriptor(field);
96
+ return field;
97
+ }
98
+ withDisabled(disabled = true) {
99
+ this._disabled = disabled;
100
+ return this;
101
+ }
102
+ addValidation(name, validator, message) {
103
+ if (this._currentGroup) {
104
+ this._currentGroup.withValidation(name, validator, message);
105
+ }
106
+ }
107
+ copy() {
108
+ const editor = new EditorDescriptor(this.model.type, this.model.idPropertyName, this.model.titlePropertyName);
109
+ for (const tabGroup of this._tabs) {
110
+ editor.createTabGroupDescriptor(tabGroup.copy());
111
+ }
112
+ for (const tabGroup of editor._tabs) {
113
+ for (const fieldGroup of tabGroup.fields) {
114
+ editor._fields.push(...fieldGroup.fields);
115
+ }
116
+ editor._groups.push(...tabGroup.fields);
117
+ }
118
+ editor._currentTabGroup = editor._tabs[editor._tabs.length - 1];
119
+ editor._currentGroup = editor._currentTabGroup.fields[editor._currentTabGroup.fields.length - 1];
120
+ editor._disabled = this._disabled;
121
+ return editor;
122
+ }
123
+ createFieldGroupDescriptor(fieldGroup) {
124
+ this.createDefaultTabGroup();
125
+ this._currentGroup = fieldGroup;
126
+ this._groups.push(fieldGroup);
127
+ this._currentTabGroup?.addField(fieldGroup);
128
+ return this;
129
+ }
130
+ createTabGroupDescriptor(tabGroup) {
131
+ this._currentTabGroup = tabGroup;
132
+ this._tabs.push(tabGroup);
133
+ return this;
134
+ }
135
+ createDefaultGroup() {
136
+ this.createDefaultTabGroup();
137
+ if (this._currentTabGroup?.fields.length === 0) {
138
+ this.createFieldGroup(EditorDescriptor.defaultGroupName, null);
139
+ }
140
+ }
141
+ createDefaultTabGroup() {
142
+ if (this._tabs.length === 0) {
143
+ this.createTabGroup(EditorDescriptor.defaultGroupName, 'general.general');
144
+ }
145
+ }
146
+ }
147
+ EditorDescriptor.defaultGroupName = '_default';
148
+ export class EditorAutoDescriptor extends EditorDescriptor {
149
+ constructor(modelType, attributes, idProperty, titleProperty, tableviewEditorType = TableviewTypeEnum.None) {
150
+ super(modelType, idProperty, titleProperty, tableviewEditorType);
151
+ this._attributes = attributes;
152
+ if (tableviewEditorType === TableviewTypeEnum.View) {
153
+ super.withDisabled();
154
+ }
155
+ }
156
+ /**
157
+ * creates editor with all attributes defined in model type
158
+ * @param modelType
159
+ * @param idProperty
160
+ * @param titleProperty
161
+ * @param tableEditorType
162
+ */
163
+ static generateFullFrom(modelType, idProperty, titleProperty, tableEditorType = TableviewTypeEnum.None) {
164
+ const descriptor = new EditorAutoDescriptor(modelType, TableviewUtil.getAttributeDefMap(modelType), idProperty, titleProperty, tableEditorType);
165
+ descriptor._attributes
166
+ .filter(a => !a.type.includes('Set') && !a.type.includes('Array')) //excludes many to many and one to many fields
167
+ .forEach(a => descriptor.generateField(a));
168
+ return descriptor;
169
+ }
170
+ /**
171
+ * creates empty editor wrapper
172
+ * @param modelType
173
+ * @param tableviewEditorType
174
+ * @param idProperty
175
+ * @param titleProperty
176
+ */
177
+ static generateFrom(modelType, tableviewEditorType = TableviewTypeEnum.None, idProperty, titleProperty) {
178
+ return new EditorAutoDescriptor(modelType, TableviewUtil.getAttributeDefMap(modelType), idProperty, titleProperty, tableviewEditorType);
179
+ }
180
+ /**
181
+ * add field defined in attributes
182
+ * use with customBuild()
183
+ * @param attributes fields to be added
184
+ */
185
+ withFields(attributes) {
186
+ attributes.forEach(a => this.generateField(a, super.fields.find(col => col.property === a.name)));
187
+ return this;
188
+ }
189
+ /**
190
+ * modifies field properties
191
+ * @param property field name to be modified
192
+ * @param args additional parameters
193
+ */
194
+ withModifiedProperty(property, ...args) {
195
+ const attribute = this._attributes.find(a => a.name === property);
196
+ if (attribute) {
197
+ this.generateField(attribute, this.fields.find(f => f.property === property), ...args);
198
+ }
199
+ return this;
200
+ }
201
+ /**
202
+ * modifies field type
203
+ * @param property field name to be modified
204
+ * @param fieldType
205
+ */
206
+ withModifiedType(property, fieldType) {
207
+ const attribute = this._attributes.find(attribute => attribute.name === property);
208
+ if (attribute) {
209
+ attribute.fieldType = fieldType;
210
+ this.generateField(attribute, super.fields.find(fi => fi.property === property));
211
+ }
212
+ return this;
213
+ }
214
+ /**
215
+ * modifies field type to enum
216
+ * @param property field name to be modified
217
+ * @param enumType
218
+ */
219
+ withCustomEnumType(property, enumType) {
220
+ const attribute = this._attributes.find(a => a.name === property);
221
+ if (attribute) {
222
+ attribute.fieldType = FieldInputTypeEnum.Radio;
223
+ const field = super.fields.find(f => f.property === property);
224
+ if (field && field instanceof FieldInputDescriptor) {
225
+ field.asRadioFromEnum(enumType ?? ObjectSerializer.get().findEnum(attribute.type));
226
+ }
227
+ }
228
+ return this;
229
+ }
230
+ /**
231
+ * adds field with class lookup
232
+ * @param property field name to be modified
233
+ * @param modelType
234
+ * @param lookupProvider
235
+ * @param titleProperty
236
+ */
237
+ withClassLookupProvider(property, modelType, lookupProvider, titleProperty) {
238
+ super.removeField(property);
239
+ const field = super.addFieldLookup(property, modelType).asAutocomplete().withLookupDataProvider(lookupProvider);
240
+ if (titleProperty) {
241
+ field.withItemsLabelProperty(titleProperty);
242
+ }
243
+ return this;
244
+ }
245
+ /**
246
+ * creates deep copy
247
+ */
248
+ copy() {
249
+ const editor = new EditorAutoDescriptor(this.model.type, this._attributes, this.model.idPropertyName, this.model.titlePropertyName);
250
+ for (const tabGroup of this._tabs) {
251
+ editor.createTabGroupDescriptor(tabGroup.copy());
252
+ }
253
+ for (const tabGroup of editor._tabs) {
254
+ for (const fieldGroup of tabGroup.fields) {
255
+ editor._fields.push(...fieldGroup.fields);
256
+ }
257
+ editor._groups.push(...tabGroup.fields);
258
+ }
259
+ editor._currentTabGroup = editor._tabs[editor._tabs.length - 1];
260
+ editor._currentGroup = editor._currentTabGroup.fields[editor._currentTabGroup.fields.length - 1];
261
+ editor._disabled = this._disabled;
262
+ return editor;
263
+ }
264
+ /**
265
+ * generates field
266
+ * @param attribute
267
+ * @param field
268
+ * @param args
269
+ */
270
+ generateField(attribute, field, ...args) {
271
+ if (field == null) {
272
+ field = super.addField(attribute.name);
273
+ }
274
+ if (field instanceof FieldInputDescriptor) {
275
+ if (attribute.enumType) {
276
+ return field.asRadioFromEnum(attribute.enumType);
277
+ }
278
+ else {
279
+ return field.asType(attribute.fieldType ?? FieldUtil.columnTypeToFieldType(attribute.columnType), ...args);
280
+ }
281
+ }
282
+ return field;
283
+ }
284
+ }
285
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmRlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2Rlc2NyaXB0b3JzL2VkaXRvci5kZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUc5QyxPQUFPLEVBQUMsU0FBUyxFQUFFLFNBQVMsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUM5QyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDdEQsT0FBTyxFQUNILGdCQUFnQixFQUNoQixvQkFBb0IsRUFDcEIsb0JBQW9CLEVBQ3BCLHFCQUFxQixFQUNyQix5QkFBeUIsRUFDekIseUJBQXlCLEVBQ3pCLCtCQUErQixFQUMvQix1QkFBdUIsRUFDdkIsZUFBZSxFQUdsQixNQUFNLElBQUksQ0FBQztBQUNaLE9BQU8sRUFBQyxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLFNBQVMsQ0FBQztBQUc5RCxNQUFNLE9BQU8sZ0JBQWdCO0lBYXpCLFlBQVksU0FBdUIsRUFBRSxVQUFtQixFQUFFLGFBQXNCLEVBQUUsbUJBQW1CLEdBQUcsaUJBQWlCLENBQUMsSUFBSTtRQVIzRyxVQUFLLEdBQXNDLEVBQUUsQ0FBQztRQUM5QyxZQUFPLEdBQW1DLEVBQUUsQ0FBQztRQUN0RCxZQUFPLEdBQW9DLEVBQUUsQ0FBQztRQUk5QyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBR3hCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQUksU0FBUyxFQUFFLFVBQVUsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUMzRSxJQUFJLENBQUMsb0JBQW9CLEdBQUcsbUJBQW1CLENBQUM7SUFDcEQsQ0FBQztJQUVELElBQVcsS0FBSztRQUNaLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBVyxJQUFJO1FBQ1gsT0FBTyxJQUFJ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QkFBZ0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2pHLE1BQU0sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUNsQyxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxhQUFhLENBQUMsU0FBZ0MsRUFBRSxLQUFnQyxFQUFFLEdBQUcsSUFBVztRQUNwRyxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUU7WUFDZixLQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDMUM7UUFFRCxJQUFJLEtBQUssWUFBWSxvQkFBb0IsRUFBRTtZQUN2QyxJQUFJLFNBQVMsQ0FBQyxRQUFRLEVBQUU7Z0JBQ3BCLE9BQU8sS0FBSyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDcEQ7aUJBQU07Z0JBQ0gsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLElBQUksU0FBUyxDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO2FBQzlHO1NBQ0o7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge09iamVjdFNlcmlhbGl6ZXJ9IGZyb20gJy4uL2FwaS91dGlscyc7XG5pbXBvcnQge0lMb29rdXBEYXRhUHJvdmlkZXJ9IGZyb20gJy4uL2RhdGEtcHJvdmlkZXJzJztcbmltcG9ydCB7Q2xhc3NUeXBlLCBFbnVtQ29uc3RhbnRUeXBlLCBFbnVtVHlwZSwgTW5nRmllbGRWYWxpZGF0aW9uTWVzc2FnZSwgTW5nRmllbGRWYWxpZGF0b3J9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7RmllbGRVdGlsLCBJMThuVXRpbHN9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7VGFibGV2aWV3VXRpbH0gZnJvbSAnLi4vdXRpbHMvdGFibGV2aWV3LnV0aWwnO1xuaW1wb3J0IHtcbiAgICBBRmllbGREZXNjcmlwdG9yLFxuICAgIEZpZWxkR3JvdXBEZXNjcmlwdG9yLFxuICAgIEZpZWxkSW5wdXREZXNjcmlwdG9yLFxuICAgIEZpZWxkTG9va3VwRGVzY3JpcHRvcixcbiAgICBGaWVsZExvb2t1cEVudW1EZXNjcmlwdG9yLFxuICAgIEZpZWxkTWFueUVkaXRvckRlc2NyaXB0b3IsXG4gICAgRmllbGRNYW55VG9NYW55RWRpdG9yRGVzY3JpcHRvcixcbiAgICBGaWVsZFRhYkdyb3VwRGVzY3JpcHRvcixcbiAgICBNb2RlbERlc2NyaXB0b3IsXG4gICAgVGFibGVEZXNjcmlwdG9yLFxuICAgIFRhYmxldmlld0Rlc2NyaXB0b3Jcbn0gZnJvbSAnLi8nO1xuaW1wb3J0IHtGaWVsZElucHV0VHlwZUVudW0sIFRhYmxldmlld1R5cGVFbnVtfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7VGFibGV2aWV3QXR0cmlidXRlRGVmfSBmcm9tICcuL3R5cGVzL3RhYmxldmlldy1hdHRyLm1vZGVsJztcblxuZXhwb3J0IGNsYXNzIEVkaXRvckRlc2NyaXB0b3I8VD4ge1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgZGVmYXVsdEdyb3VwTmFtZSA9ICdfZGVmYXVsdCc7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX21vZGVsOiBNb2RlbERlc2NyaXB0b3I8VD47XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF90YWJsZXZpZXdFZGl0b3JUeXBlOiBUYWJsZXZpZXdUeXBlRW51bTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX3RhYnM6IEFycmF5PEZpZWxkVGFiR3JvdXBEZXNjcmlwdG9yPFQ+PiA9IFtdO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfZ3JvdXBzOiBBcnJheTxGaWVsZEdyb3VwRGVzY3JpcHRvcjxUPj4gPSBbXTtcbiAgICBwcm90ZWN0ZWQgX2ZpZWxkczogQXJyYXk8QUZpZWxkRGVzY3JpcHRvcjxhbnksIFQ+PiA9IFtdO1xuICAgIHByb3RlY3RlZCBfY3VycmVudFRhYkdyb3VwPzogRmllbGRUYWJHcm91cERlc2NyaXB0b3I8VD47XG4gICAgcHJvdGVjdGVkIF9jdXJyZW50R3JvdXA/OiBGaWVsZEdyb3VwRGVzY3JpcHRvcjxUPjtcblxuICAgIHByb3RlY3RlZCBfZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKG1vZGVsVHlwZTogQ2xhc3NUeXBlPFQ+LCBpZFByb3BlcnR5Pzogc3RyaW5nLCB0aXRsZVByb3BlcnR5Pzogc3RyaW5nLCB0YWJsZXZpZXdFZGl0b3JUeXBlID0gVGFibGV2aWV3VHlwZUVudW0uTm9uZSkge1xuICAgICAgICB0aGlzLl9tb2RlbCA9IG5ldyBNb2RlbERlc2NyaXB0b3I8VD4obW9kZWxUeXBlLCBpZFByb3BlcnR5LCB0aXRsZVByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5fdGFibGV2aWV3RWRpdG9yVHlwZSA9IHRhYmxldmlld0VkaXRvclR5cGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBtb2RlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21vZGVsO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdGFicygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYnM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmaWVsZHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWVsZHM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0YWJsZXZpZXdFZGl0b3JUeXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkaXNhYmxlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGVUYWJHcm91cChuYW1lOiBzdHJpbmcsIHRpdGxlPzogc3RyaW5nKTogRmllbGRUYWJHcm91cERlc2NyaXB0b3I8VD4ge1xuICAgICAgICBjb25zdCB0YWJHcm91cCA9IG5ldyBGaWVsZFRhYkdyb3VwRGVzY3JpcHRvcjxUPih0aGlzLCBuYW1lKTtcbiAgICAgICAgaWYgKCF0aXRsZSkge1xuICAgICAgICAgICAgdGl0bGUgPSBJMThuVXRpbHMuVHlwZS5nZXRUYWJLZXkodGhpcy5tb2RlbC50eXBlTmFtZSwgbmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGFiR3JvdXAud2l0aFRpdGxlKHRpdGxlKTtcbiAgICAgICAgdGhpcy5jcmVhdGVUYWJHcm91cERlc2NyaXB0b3IodGFiR3JvdXApO1xuICAgICAgICByZXR1cm4gdGFiR3JvdXA7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZUZpZWxkR3JvdXAobmFtZTogc3RyaW5nLCB0aXRsZT86IHN0cmluZyB8IG51bGwpOiBGaWVsZEdyb3VwRGVzY3JpcHRvcjxUPiB7XG4gICAgICAgIGNvbnN0IGZpZWxkR3JvdXAgPSBuZXcgRmllbGRHcm91cERlc2NyaXB0b3I8VD4odGhpcywgbmFtZSk7XG4gICAgICAgIGlmICh0aXRsZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKCF0aXRsZSkge1xuICAgICAgICAgICAgICAgIHRpdGxlID0gSTE4blV0aWxzLlR5cGUuZ2V0R3JvdXBLZXkodGhpcy5tb2RlbC50eXBlTmFtZSwgbmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaWVsZEdyb3VwLndpdGhUaXRsZSh0aXRsZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jcmVhdGVGaWVsZEdyb3VwRGVzY3JpcHRvcihmaWVsZEdyb3VwKTtcbiAgICAgICAgcmV0dXJuIGZpZWxkR3JvdXA7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpZWxkRGVzY3JpcHRvcjxGVD4oZmllbGQ6IEFGaWVsZERlc2NyaXB0b3I8RlQsIFQ+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuY3JlYXRlRGVmYXVsdEdyb3VwKCk7XG4gICAgICAgIHRoaXMuX2ZpZWxkcy5wdXNoKGZpZWxkKTtcbiAgICAgICAgdGhpcy5fY3VycmVudEdyb3VwPy5hZGRGaWVsZChmaWVsZCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRGaWVsZChwcm9wZXJ0eTogc3RyaW5nKTogRmllbGRJbnB1dERlc2NyaXB0b3I8VD4ge1xuICAgICAgICBjb25zdCBmaWVsZCA9IG5ldyBGaWVsZElucHV0RGVzY3JpcHRvcjxUPih0aGlzLCBwcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuYWRkRmllbGREZXNjcmlwdG9yKGZpZWxkKTtcbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVGaWVsZChwcm9wZXJ0eTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZpZWxkSWR4ID0gdGhpcy5fZmllbGRzLmZpbmRJbmRleChmID0+IGYucHJvcGVydHkgPT09IHByb3BlcnR5KTtcbiAgICAgICAgaWYgKGZpZWxkSWR4IDwgMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGaWVsZCAke3Byb3BlcnR5fSBkb2VzIG5vdCBleGlzdC5gKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIHRoaXMuX2dyb3Vwcykge1xuICAgICAgICAgICAgY29uc3QgZ3JvdXBGaWVsZElkeCA9IGdyb3VwLmZpZWxkcy5maW5kSW5kZXgoZiA9PiBmIGluc3RhbmNlb2YgQUZpZWxkRGVzY3JpcHRvciAmJiBmLnByb3BlcnR5ID09PSBwcm9wZXJ0eSk7XG4gICAgICAgICAgICBpZiAoZ3JvdXBGaWVsZElkeCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgZ3JvdXAuZmllbGRzLnNwbGljZShncm91cEZpZWxkSWR4LCAxKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9maWVsZHMuc3BsaWNlKGZpZWxkSWR4LCAxKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RmllbGQocHJvcGVydHk6IHN0cmluZyk6IEFGaWVsZERlc2NyaXB0b3I8YW55LCBUPiB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmllbGRzLmZpbmQoZiA9PiBmLnByb3BlcnR5ID09PSBwcm9wZXJ0eSkgPz8gbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmllbGRMb29rdXA8RlQ+KHByb3BlcnR5OiBzdHJpbmcsIG1vZGVsVHlwZTogQ2xhc3NUeXBlPEZUPik6IEZpZWxkTG9va3VwRGVzY3JpcHRvcjxGVCwgVD4ge1xuICAgICAgICBjb25zdCBmaWVsZCA9IG5ldyBGaWVsZExvb2t1cERlc2NyaXB0b3I8RlQsIFQ+KHRoaXMsIHByb3BlcnR5LCBtb2RlbFR5cGUpO1xuICAgICAgICB0aGlzLmFkZEZpZWxkRGVzY3JpcHRvcihmaWVsZCk7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmllbGRMb29rdXBFbnVtKFxuICAgICAgICBwcm9wZXJ0eTogc3RyaW5nLFxuICAgICAgICBlbnVtVHlwZTogRW51bVR5cGUsXG4gICAgICAgIG9wdGlvbnM/OiBBcnJheTxFbnVtQ29uc3RhbnRUeXBlPixcbiAgICAgICAgbmFtZUFzVmFsdWUgPSBmYWxzZSxcbiAgICAgICAgb3B0aW9uc1RpdGxlUGF0aD86IHN0cmluZyB8IG51bGxcbiAgICApOiBGaWVsZExvb2t1cEVudW1EZXNjcmlwdG9yPFQ+IHtcbiAgICAgICAgY29uc3QgZmllbGQgPSBuZXcgRmllbGRMb29rdXBFbnVtRGVzY3JpcHRvcih0aGlzLCBwcm9wZXJ0eSwgZW51bVR5cGUsIG9wdGlvbnMsIG5hbWVBc1ZhbHVlLCBvcHRpb25zVGl0bGVQYXRoKTtcbiAgICAgICAgdGhpcy5hZGRGaWVsZERlc2NyaXB0b3IoZmllbGQpO1xuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpZWxkTWFueUVkaXRvcjxGVD4ocHJvcGVydHk6IHN0cmluZywgdGFibGV2aWV3RGVzY3JpcHRvcjogVGFibGV2aWV3RGVzY3JpcHRvcjxGVD4pOiBGaWVsZE1hbnlFZGl0b3JEZXNjcmlwdG9yPEZULCBUPiB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gbmV3IEZpZWxkTWFueUVkaXRvckRlc2NyaXB0b3IodGhpcywgcHJvcGVydHksIHRhYmxldmlld0Rlc2NyaXB0b3IpO1xuICAgICAgICB0aGlzLmFkZEZpZWxkRGVzY3JpcHRvcihmaWVsZCk7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmllbGRNYW55VG9NYW55RWRpdG9yPEZUPihcbiAgICAgICAgcHJvcGVydHk6IHN0cmluZyxcbiAgICAgICAgbWFpblRhYmxlRGVzY3JpcHRvcjogVGFibGVEZXNjcmlwdG9yPEZUPixcbiAgICAgICAgbG9va3VwVGFibGVEZXNjcmlwdG9yOiBUYWJsZURlc2NyaXB0b3I8RlQ+XG4gICAgKTogRmllbGRNYW55VG9NYW55RWRpdG9yRGVzY3JpcHRvcjxGVCwgVD4ge1xuICAgICAgICBjb25zdCBmaWVsZCA9IG5ldyBGaWVsZE1hbnlUb01hbnlFZGl0b3JEZXNjcmlwdG9yKHRoaXMsIHByb3BlcnR5LCBtYWluVGFibGVEZXNjcmlwdG9yLCBsb29rdXBUYWJsZURlc2NyaXB0b3IpO1xuICAgICAgICB0aGlzLmFkZEZpZWxkRGVzY3JpcHRvcihmaWVsZCk7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aERpc2FibGVkKGRpc2FibGVkID0gdHJ1ZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGRpc2FibGVkO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkVmFsaWRhdGlvbihuYW1lOiBzdHJpbmcsIHZhbGlkYXRvcj86IE1uZ0ZpZWxkVmFsaWRhdG9yLCBtZXNzYWdlPzogTW5nRmllbGRWYWxpZGF0aW9uTWVzc2FnZSkge1xuICAgICAgICBpZiAodGhpcy5fY3VycmVudEdyb3VwKSB7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50R3JvdXAud2l0aFZhbGlkYXRpb24obmFtZSwgdmFsaWRhdG9yLCBtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBjb3B5KCk6IEVkaXRvckRlc2NyaXB0b3I8VD4ge1xuICAgICAgICBjb25zdCBlZGl0b3IgPSBuZXcgRWRpdG9yRGVzY3JpcHRvcjxUPih0aGlzLm1vZGVsLnR5cGUsIHRoaXMubW9kZWwuaWRQcm9wZXJ0eU5hbWUsIHRoaXMubW9kZWwudGl0bGVQcm9wZXJ0eU5hbWUpO1xuICAgICAgICBmb3IgKGNvbnN0IHRhYkdyb3VwIG9mIHRoaXMuX3RhYnMpIHtcbiAgICAgICAgICAgIGVkaXRvci5jcmVhdGVUYWJHcm91cERlc2NyaXB0b3IodGFiR3JvdXAuY29weSgpKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IHRhYkdyb3VwIG9mIGVkaXRvci5fdGFicykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBmaWVsZEdyb3VwIG9mIHRhYkdyb3VwLmZpZWxkcykge1xuICAgICAgICAgICAgICAgIGVkaXRvci5fZmllbGRzLnB1c2goLi4uZmllbGRHcm91cC5maWVsZHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWRpdG9yLl9ncm91cHMucHVzaCguLi50YWJHcm91cC5maWVsZHMpO1xuICAgICAgICB9XG4gICAgICAgIGVkaXRvci5fY3VycmVudFRhYkdyb3VwID0gZWRpdG9yLl90YWJzW2VkaXRvci5fdGFicy5sZW5ndGggLSAxXTtcbiAgICAgICAgZWRpdG9yLl9jdXJyZW50R3JvdXAgPSBlZGl0b3IuX2N1cnJlbnRUYWJHcm91cC5maWVsZHNbZWRpdG9yLl9jdXJyZW50VGFiR3JvdXAuZmllbGRzLmxlbmd0aCAtIDFdO1xuICAgICAgICBlZGl0b3IuX2Rpc2FibGVkID0gdGhpcy5fZGlzYWJsZWQ7XG4gICAgICAgIHJldHVybiBlZGl0b3I7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZUZpZWxkR3JvdXBEZXNjcmlwdG9yKGZpZWxkR3JvdXA6IEZpZWxkR3JvdXBEZXNjcmlwdG9yPFQ+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuY3JlYXRlRGVmYXVsdFRhYkdyb3VwKCk7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRHcm91cCA9IGZpZWxkR3JvdXA7XG4gICAgICAgIHRoaXMuX2dyb3Vwcy5wdXNoKGZpZWxkR3JvdXApO1xuICAgICAgICB0aGlzLl9jdXJyZW50VGFiR3JvdXA/LmFkZEZpZWxkKGZpZWxkR3JvdXApO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY3JlYXRlVGFiR3JvdXBEZXNjcmlwdG9yKHRhYkdyb3VwOiBGaWVsZFRhYkdyb3VwRGVzY3JpcHRvcjxUPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9jdXJyZW50VGFiR3JvdXAgPSB0YWJHcm91cDtcbiAgICAgICAgdGhpcy5fdGFicy5wdXNoKHRhYkdyb3VwKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVEZWZhdWx0R3JvdXAoKSB7XG4gICAgICAgIHRoaXMuY3JlYXRlRGVmYXVsdFRhYkdyb3VwKCk7XG4gICAgICAgIGlmICh0aGlzLl9jdXJyZW50VGFiR3JvdXA/LmZpZWxkcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlRmllbGRHcm91cChFZGl0b3JEZXNjcmlwdG9yLmRlZmF1bHRHcm91cE5hbWUsIG51bGwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVEZWZhdWx0VGFiR3JvdXAoKSB7XG4gICAgICAgIGlmICh0aGlzLl90YWJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5jcmVhdGVUYWJHcm91cChFZGl0b3JEZXNjcmlwdG9yLmRlZmF1bHRHcm91cE5hbWUsICdnZW5lcmFsLmdlbmVyYWwnKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEVkaXRvckF1dG9EZXNjcmlwdG9yPFQ+IGV4dGVuZHMgRWRpdG9yRGVzY3JpcHRvcjxUPiB7XG4gICAgcHJpdmF0ZSBfYXR0cmlidXRlczogVGFibGV2aWV3QXR0cmlidXRlRGVmW107XG5cbiAgICBwcml2YXRlIGNvbnN0cnVjdG9yKG1vZGVsVHlwZTogQ2xhc3NUeXBlPFQ+LCBhdHRyaWJ1dGVzOiBUYWJsZXZpZXdBdHRyaWJ1dGVEZWZbXSwgaWRQcm9wZXJ0eT86IHN0cmluZywgdGl0bGVQcm9wZXJ0eT86IHN0cmluZywgdGFibGV2aWV3RWRpdG9yVHlwZSA9IFRhYmxldmlld1R5cGVFbnVtLk5vbmUpIHtcbiAgICAgICAgc3VwZXIobW9kZWxUeXBlLCBpZFByb3BlcnR5LCB0aXRsZVByb3BlcnR5LCB0YWJsZXZpZXdFZGl0b3JUeXBlKTtcbiAgICAgICAgdGhpcy5fYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXM7XG4gICAgICAgIGlmICh0YWJsZXZpZXdFZGl0b3JUeXBlID09PSBUYWJsZXZpZXdUeXBlRW51bS5WaWV3KSB7XG4gICAgICAgICAgICBzdXBlci53aXRoRGlzYWJsZWQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNyZWF0ZXMgZWRpdG9yIHdpdGggYWxsIGF0dHJpYnV0ZXMgZGVmaW5lZCBpbiBtb2RlbCB0eXBlXG4gICAgICogQHBhcmFtIG1vZGVsVHlwZVxuICAgICAqIEBwYXJhbSBpZFByb3BlcnR5XG4gICAgICogQHBhcmFtIHRpdGxlUHJvcGVydHlcbiAgICAgKiBAcGFyYW0gdGFibGVFZGl0b3JUeXBlXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBnZW5lcmF0ZUZ1bGxGcm9tPFQ+KG1vZGVsVHlwZTogQ2xhc3NUeXBlPFQ+LCBpZFByb3BlcnR5Pzogc3RyaW5nLCB0aXRsZVByb3BlcnR5Pzogc3RyaW5nLCB0YWJsZUVkaXRvclR5cGUgPSBUYWJsZXZpZXdUeXBlRW51bS5Ob25lKTogRWRpdG9yQXV0b0Rlc2NyaXB0b3I8VD4ge1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gbmV3IEVkaXRvckF1dG9EZXNjcmlwdG9yKG1vZGVsVHlwZSwgVGFibGV2aWV3VXRpbC5nZXRBdHRyaWJ1dGVEZWZNYXAobW9kZWxUeXBlKSwgaWRQcm9wZXJ0eSwgdGl0bGVQcm9wZXJ0eSwgdGFibGVFZGl0b3JUeXBlKTtcbiAgICAgICAgZGVzY3JpcHRvci5fYXR0cmlidXRlc1xuICAgICAgICAgICAgLmZpbHRlcihhID0+ICFhLnR5cGUuaW5jbHVkZXMoJ1NldCcpICYmICFhLnR5cGUuaW5jbHVkZXMoJ0FycmF5JykpIC8vZXhjbHVkZXMgbWFueSB0byBtYW55IGFuZCBvbmUgdG8gbWFueSBmaWVsZHNcbiAgICAgICAgICAgIC5mb3JFYWNoKGEgPT4gZGVzY3JpcHRvci5nZW5lcmF0ZUZpZWxkKGEpKTtcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY3JlYXRlcyBlbXB0eSBlZGl0b3Igd3JhcHBlclxuICAgICAqIEBwYXJhbSBtb2RlbFR5cGVcbiAgICAgKiBAcGFyYW0gdGFibGV2aWV3RWRpdG9yVHlwZVxuICAgICAqIEBwYXJhbSBpZFByb3BlcnR5XG4gICAgICogQHBhcmFtIHRpdGxlUHJvcGVydHlcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGdlbmVyYXRlRnJvbTxUPihtb2RlbFR5cGU6IENsYXNzVHlwZTxUPiwgdGFibGV2aWV3RWRpdG9yVHlwZSA9IFRhYmxldmlld1R5cGVFbnVtLk5vbmUsIGlkUHJvcGVydHk/OiBzdHJpbmcsIHRpdGxlUHJvcGVydHk/OiBzdHJpbmcpOiBFZGl0b3JBdXRvRGVzY3JpcHRvcjxUPiB7XG4gICAgICAgIHJldHVybiBuZXcgRWRpdG9yQXV0b0Rlc2NyaXB0b3IobW9kZWxUeXBlLCBUYWJsZXZpZXdVdGlsLmdldEF0dHJpYnV0ZURlZk1hcChtb2RlbFR5cGUpLCBpZFByb3BlcnR5LCB0aXRsZVByb3BlcnR5LCB0YWJsZXZpZXdFZGl0b3JUeXBlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBhZGQgZmllbGQgZGVmaW5lZCBpbiBhdHRyaWJ1dGVzXG4gICAgICogdXNlIHdpdGggY3VzdG9tQnVpbGQoKVxuICAgICAqIEBwYXJhbSBhdHRyaWJ1dGVzIGZpZWxkcyB0byBiZSBhZGRlZFxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoRmllbGRzKGF0dHJpYnV0ZXM6IFRhYmxldmlld0F0dHJpYnV0ZURlZltdKTogdGhpcyB7XG4gICAgICAgIGF0dHJpYnV0ZXMuZm9yRWFjaChhID0+XG4gICAgICAgICAgICB0aGlzLmdlbmVyYXRlRmllbGQoXG4gICAgICAgICAgICAgICAgYSxcbiAgICAgICAgICAgICAgICBzdXBlci5maWVsZHMuZmluZChjb2wgPT4gY29sLnByb3BlcnR5ID09PSBhLm5hbWUpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIG1vZGlmaWVzIGZpZWxkIHByb3BlcnRpZXNcbiAgICAgKiBAcGFyYW0gcHJvcGVydHkgZmllbGQgbmFtZSB0byBiZSBtb2RpZmllZFxuICAgICAqIEBwYXJhbSBhcmdzIGFkZGl0aW9uYWwgcGFyYW1ldGVyc1xuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoTW9kaWZpZWRQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IHRoaXMge1xuICAgICAgICBjb25zdCBhdHRyaWJ1dGUgPSB0aGlzLl9hdHRyaWJ1dGVzLmZpbmQoYSA9PiBhLm5hbWUgPT09IHByb3BlcnR5KTtcbiAgICAgICAgaWYgKGF0dHJpYnV0ZSkge1xuICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUZpZWxkKFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSxcbiAgICAgICAgICAgICAgICB0aGlzLmZpZWxkcy5maW5kKGYgPT4gZi5wcm9wZXJ0eSA9PT0gcHJvcGVydHkpLFxuICAgICAgICAgICAgICAgIC4uLmFyZ3NcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogbW9kaWZpZXMgZmllbGQgdHlwZVxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eSBmaWVsZCBuYW1lIHRvIGJlIG1vZGlmaWVkXG4gICAgICogQHBhcmFtIGZpZWxkVHlwZVxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoTW9kaWZpZWRUeXBlKHByb3BlcnR5OiBzdHJpbmcsIGZpZWxkVHlwZTogRmllbGRJbnB1dFR5cGVFbnVtKTogdGhpcyB7XG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZSA9IHRoaXMuX2F0dHJpYnV0ZXMuZmluZChhdHRyaWJ1dGUgPT4gYXR0cmlidXRlLm5hbWUgPT09IHByb3BlcnR5KTtcbiAgICAgICAgaWYgKGF0dHJpYnV0ZSkge1xuICAgICAgICAgICAgYXR0cmlidXRlLmZpZWxkVHlwZSA9IGZpZWxkVHlwZTtcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVGaWVsZChcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGUsXG4gICAgICAgICAgICAgICAgc3VwZXIuZmllbGRzLmZpbmQoZmkgPT4gZmkucHJvcGVydHkgPT09IHByb3BlcnR5KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBtb2RpZmllcyBmaWVsZCB0eXBlIHRvIGVudW1cbiAgICAgKiBAcGFyYW0gcHJvcGVydHkgZmllbGQgbmFtZSB0byBiZSBtb2RpZmllZFxuICAgICAqIEBwYXJhbSBlbnVtVHlwZVxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoQ3VzdG9tRW51bVR5cGUocHJvcGVydHk6IHN0cmluZywgZW51bVR5cGU/OiBFbnVtVHlwZSk6IHRoaXMge1xuICAgICAgICBjb25zdCBhdHRyaWJ1dGUgPSB0aGlzLl9hdHRyaWJ1dGVzLmZpbmQoYSA9PiBhLm5hbWUgPT09IHByb3BlcnR5KTtcbiAgICAgICAgaWYgKGF0dHJpYnV0ZSkge1xuICAgICAgICAgICAgYXR0cmlidXRlLmZpZWxkVHlwZSA9IEZpZWxkSW5wdXRUeXBlRW51bS5SYWRpbztcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkID0gc3VwZXIuZmllbGRzLmZpbmQoZiA9PiBmLnByb3BlcnR5ID09PSBwcm9wZXJ0eSk7XG4gICAgICAgICAgICBpZiAoZmllbGQgJiYgZmllbGQgaW5zdGFuY2VvZiBGaWVsZElucHV0RGVzY3JpcHRvcikge1xuICAgICAgICAgICAgICAgIGZpZWxkLmFzUmFkaW9Gcm9tRW51bShlbnVtVHlwZSA/PyAoT2JqZWN0U2VyaWFsaXplci5nZXQoKS5maW5kRW51bShhdHRyaWJ1dGUudHlwZSkgYXMgRW51bVR5cGUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGFkZHMgZmllbGQgd2l0aCBjbGFzcyBsb29rdXBcbiAgICAgKiBAcGFyYW0gcHJvcGVydHkgZmllbGQgbmFtZSB0byBiZSBtb2RpZmllZFxuICAgICAqIEBwYXJhbSBtb2RlbFR5cGVcbiAgICAgKiBAcGFyYW0gbG9va3VwUHJvdmlkZXJcbiAgICAgKiBAcGFyYW0gdGl0bGVQcm9wZXJ0eVxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoQ2xhc3NMb29rdXBQcm92aWRlcjxNVD4ocHJvcGVydHk6IHN0cmluZywgbW9kZWxUeXBlOiBDbGFzc1R5cGU8TVQ+LCBsb29rdXBQcm92aWRlcjogSUxvb2t1cERhdGFQcm92aWRlcjxhbnksIGFueT4sIHRpdGxlUHJvcGVydHk/OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgc3VwZXIucmVtb3ZlRmllbGQocHJvcGVydHkpO1xuICAgICAgICBjb25zdCBmaWVsZCA9IHN1cGVyLmFkZEZpZWxkTG9va3VwKHByb3BlcnR5LCBtb2RlbFR5cGUpLmFzQXV0b2NvbXBsZXRlKCkud2l0aExvb2t1cERhdGFQcm92aWRlcihsb29rdXBQcm92aWRlcik7XG5cbiAgICAgICAgaWYgKHRpdGxlUHJvcGVydHkpIHtcbiAgICAgICAgICAgIChmaWVsZCBhcyBGaWVsZExvb2t1cERlc2NyaXB0b3I8YW55LCBhbnk+KS53aXRoSXRlbXNMYWJlbFByb3BlcnR5KHRpdGxlUHJvcGVydHkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY3JlYXRlcyBkZWVwIGNvcHlcbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgY29weSgpOiBFZGl0b3JBdXRvRGVzY3JpcHRvcjxUPiB7XG4gICAgICAgIGNvbnN0IGVkaXRvciA9IG5ldyBFZGl0b3JBdXRvRGVzY3JpcHRvcjxUPih0aGlzLm1vZGVsLnR5cGUsIHRoaXMuX2F0dHJpYnV0ZXMsIHRoaXMubW9kZWwuaWRQcm9wZXJ0eU5hbWUsIHRoaXMubW9kZWwudGl0bGVQcm9wZXJ0eU5hbWUpO1xuICAgICAgICBmb3IgKGNvbnN0IHRhYkdyb3VwIG9mIHRoaXMuX3RhYnMpIHtcbiAgICAgICAgICAgIGVkaXRvci5jcmVhdGVUYWJHcm91cERlc2NyaXB0b3IodGFiR3JvdXAuY29weSgpKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IHRhYkdyb3VwIG9mIGVkaXRvci5fdGFicykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBmaWVsZEdyb3VwIG9mIHRhYkdyb3VwLmZpZWxkcykge1xuICAgICAgICAgICAgICAgIGVkaXRvci5fZmllbGRzLnB1c2goLi4uZmllbGRHcm91cC5maWVsZHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWRpdG9yLl9ncm91cHMucHVzaCguLi50YWJHcm91cC5maWVsZHMpO1xuICAgICAgICB9XG4gICAgICAgIGVkaXRvci5fY3VycmVudFRhYkdyb3VwID0gZWRpdG9yLl90YWJzW2VkaXRvci5fdGFicy5sZW5ndGggLSAxXTtcbiAgICAgICAgZWRpdG9yLl9jdXJyZW50R3JvdXAgPSBlZGl0b3IuX2N1cnJlbnRUYWJHcm91cC5maWVsZHNbZWRpdG9yLl9jdXJyZW50VGFiR3JvdXAuZmllbGRzLmxlbmd0aCAtIDFdO1xuICAgICAgICBlZGl0b3IuX2Rpc2FibGVkID0gdGhpcy5fZGlzYWJsZWQ7XG4gICAgICAgIHJldHVybiBlZGl0b3I7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZ2VuZXJhdGVzIGZpZWxkXG4gICAgICogQHBhcmFtIGF0dHJpYnV0ZVxuICAgICAqIEBwYXJhbSBmaWVsZFxuICAgICAqIEBwYXJhbSBhcmdzXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUZpZWxkKGF0dHJpYnV0ZTogVGFibGV2aWV3QXR0cmlidXRlRGVmLCBmaWVsZD86IEFGaWVsZERlc2NyaXB0b3I8YW55LCBUPiwgLi4uYXJnczogYW55W10pOiBBRmllbGREZXNjcmlwdG9yPGFueSwgVD4ge1xuICAgICAgICBpZiAoZmllbGQgPT0gbnVsbCkge1xuICAgICAgICAgICAgZmllbGQgPSBzdXBlci5hZGRGaWVsZChhdHRyaWJ1dGUubmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmllbGQgaW5zdGFuY2VvZiBGaWVsZElucHV0RGVzY3JpcHRvcikge1xuICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZS5lbnVtVHlwZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmaWVsZC5hc1JhZGlvRnJvbUVudW0oYXR0cmlidXRlLmVudW1UeXBlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpZWxkLmFzVHlwZShhdHRyaWJ1dGUuZmllbGRUeXBlID8/IEZpZWxkVXRpbC5jb2x1bW5UeXBlVG9GaWVsZFR5cGUoYXR0cmlidXRlLmNvbHVtblR5cGUpLCAuLi5hcmdzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG59XG4iXX0=
@@ -1,21 +1,21 @@
1
- export class FieldValidationDescriptor {
2
- constructor(name, validator, message, options) {
3
- this._name = name;
4
- this._validator = validator;
5
- this._message = message;
6
- this._options = options;
7
- }
8
- get name() {
9
- return this._name;
10
- }
11
- get validator() {
12
- return this._validator;
13
- }
14
- get message() {
15
- return this._message;
16
- }
17
- get options() {
18
- return this._options;
19
- }
20
- }
1
+ export class FieldValidationDescriptor {
2
+ constructor(name, validator, message, options) {
3
+ this._name = name;
4
+ this._validator = validator;
5
+ this._message = message;
6
+ this._options = options;
7
+ }
8
+ get name() {
9
+ return this._name;
10
+ }
11
+ get validator() {
12
+ return this._validator;
13
+ }
14
+ get message() {
15
+ return this._message;
16
+ }
17
+ get options() {
18
+ return this._options;
19
+ }
20
+ }
21
21
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtdmFsaWRhdGlvbi5kZXNjcmlwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9kZXNjcmlwdG9ycy9maWVsZC12YWxpZGF0aW9uLmRlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsTUFBTSxPQUFPLHlCQUF5QjtJQU1sQyxZQUNJLElBQVksRUFDWixTQUFzRCxFQUN0RCxPQUEwRixFQUMxRixPQUE2QjtRQUU3QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztRQUM1QixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztRQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBVyxJQUFJO1FBQ1gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFXLFNBQVM7UUFDaEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFXLE9BQU87UUFDZCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUVELElBQVcsT0FBTztRQUNkLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Zvcm1seUZpZWxkQ29uZmlnfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7TW5nRmllbGRBc3luY1ZhbGlkYXRvciwgTW5nRmllbGRWYWxpZGF0aW9uTWVzc2FnZSwgTW5nRmllbGRWYWxpZGF0b3J9IGZyb20gJy4uL3R5cGVzJztcblxuZXhwb3J0IGNsYXNzIEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3Ige1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX25hbWU6IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IF92YWxpZGF0b3I/OiBNbmdGaWVsZFZhbGlkYXRvciB8IE1uZ0ZpZWxkQXN5bmNWYWxpZGF0b3I7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfbWVzc2FnZT86IE1uZ0ZpZWxkVmFsaWRhdGlvbk1lc3NhZ2U7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfb3B0aW9ucz86IHtlcnJvclBhdGg6IHN0cmluZ307XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgICB2YWxpZGF0b3I/OiBNbmdGaWVsZFZhbGlkYXRvciB8IE1uZ0ZpZWxkQXN5bmNWYWxpZGF0b3IsXG4gICAgICAgIG1lc3NhZ2U/OiBzdHJpbmcgfCAoKGVycm9yOiBhbnksIGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZykgPT4gc3RyaW5nIHwgT2JzZXJ2YWJsZTxzdHJpbmc+KSxcbiAgICAgICAgb3B0aW9ucz86IHtlcnJvclBhdGg6IHN0cmluZ31cbiAgICApIHtcbiAgICAgICAgdGhpcy5fbmFtZSA9IG5hbWU7XG4gICAgICAgIHRoaXMuX3ZhbGlkYXRvciA9IHZhbGlkYXRvcjtcbiAgICAgICAgdGhpcy5fbWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgICAgIHRoaXMuX29wdGlvbnMgPSBvcHRpb25zO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fbmFtZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHZhbGlkYXRvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbGlkYXRvcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG1lc3NhZ2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tZXNzYWdlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgb3B0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29wdGlvbnM7XG4gICAgfVxufVxuIl19