@mediusinc/mng-commons 6.0.0-rc.5 → 6.0.0-rc.7

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 (395) hide show
  1. package/README.md +6 -6
  2. package/core/components/notification/notification-wrapper.component.d.ts +4 -4
  3. package/core/data-list/data-list-params-helpers.d.ts +1 -0
  4. package/core/directives/component.directive.d.ts +11 -13
  5. package/core/directives/rerender.directive.d.ts +1 -1
  6. package/core/directives/template.directive.d.ts +3 -7
  7. package/core/error/error.model.d.ts +4 -4
  8. package/core/helpers/notification.d.ts +2 -2
  9. package/core/i18n/i18n-common.d.ts +2 -2
  10. package/core/provide.d.ts +3 -3
  11. package/core/styles/style-constants.d.ts +9 -8
  12. package/core/styles/style.model.d.ts +2 -1
  13. package/fesm2022/mediusinc-mng-commons-core.mjs +167 -201
  14. package/fesm2022/mediusinc-mng-commons-core.mjs.map +1 -1
  15. package/fesm2022/mediusinc-mng-commons-form-api.mjs +8 -9
  16. package/fesm2022/mediusinc-mng-commons-form-api.mjs.map +1 -1
  17. package/fesm2022/mediusinc-mng-commons-form.mjs +151 -52
  18. package/fesm2022/mediusinc-mng-commons-form.mjs.map +1 -1
  19. package/fesm2022/mediusinc-mng-commons-table-column-toggle.component-a8KG1NIX.mjs +30 -0
  20. package/fesm2022/mediusinc-mng-commons-table-column-toggle.component-a8KG1NIX.mjs.map +1 -0
  21. package/fesm2022/mediusinc-mng-commons-table-mediusinc-mng-commons-table-C2vrMoNL.mjs +2130 -0
  22. package/fesm2022/mediusinc-mng-commons-table-mediusinc-mng-commons-table-C2vrMoNL.mjs.map +1 -0
  23. package/fesm2022/mediusinc-mng-commons-table.mjs +1 -2154
  24. package/fesm2022/mediusinc-mng-commons-table.mjs.map +1 -1
  25. package/fesm2022/mediusinc-mng-commons-tableview-api.mjs +97 -49
  26. package/fesm2022/mediusinc-mng-commons-tableview-api.mjs.map +1 -1
  27. package/fesm2022/mediusinc-mng-commons-tableview.mjs +332 -293
  28. package/fesm2022/mediusinc-mng-commons-tableview.mjs.map +1 -1
  29. package/fesm2022/mediusinc-mng-commons.mjs.map +1 -1
  30. package/form/api/index.d.ts +1 -0
  31. package/form/api/models/empty-value.model.d.ts +7 -0
  32. package/form/components/autocomplete/autocomplete.component.d.ts +1 -2
  33. package/form/components/date-range/date-range.component.d.ts +4 -3
  34. package/form/components/dropdown/dropdown.component.d.ts +3 -2
  35. package/form/components/number-range/number-range.component.d.ts +3 -2
  36. package/form/directives/input-empty-value.directive.d.ts +40 -0
  37. package/form/directives/input-trim.directive.d.ts +3 -5
  38. package/form/index.d.ts +1 -0
  39. package/i18n/en.json +57 -8
  40. package/i18n/sl.json +1 -3
  41. package/package.json +10 -36
  42. package/provide.d.ts +2 -2
  43. package/table/components/column-toggle/column-toggle.component.d.ts +12 -0
  44. package/table/components/filter/filter-form/filter-form.component.d.ts +2 -2
  45. package/table/components/table/table.component.d.ts +0 -1
  46. package/table/helpers/filters.d.ts +3 -2
  47. package/table/helpers/notification.d.ts +2 -2
  48. package/table/provide.d.ts +7 -0
  49. package/table/services/table-metadata.service.d.ts +3 -3
  50. package/tableview/action/components/action/action.component.d.ts +1 -0
  51. package/tableview/action/components/editor/action-editor.component.d.ts +1 -1
  52. package/tableview/action/components/table/action-table.component.d.ts +2 -1
  53. package/tableview/action/helpers/notification.d.ts +3 -3
  54. package/tableview/action/models/execution/action-context.model.d.ts +2 -2
  55. package/tableview/action/services/action-executor.service.d.ts +1 -1
  56. package/tableview/api/action/descriptors/action.descriptor.d.ts +3 -3
  57. package/tableview/api/action/models/action-confirmation.model.d.ts +4 -2
  58. package/tableview/api/action/models/execution/action-context.model.d.ts +2 -2
  59. package/tableview/api/editor/descriptors/editor.descriptor.d.ts +5 -0
  60. package/tableview/api/editor/descriptors/field-base.descriptor.d.ts +14 -10
  61. package/tableview/api/editor/descriptors/field-group.descriptor.d.ts +10 -0
  62. package/tableview/api/editor/descriptors/field.descriptor.d.ts +36 -9
  63. package/tableview/api/editor/descriptors/wrappers/editor-descriptor-nested-object-wrapper.d.ts +1 -1
  64. package/tableview/api/editor/models/field-action-context.model.d.ts +1 -1
  65. package/tableview/api/editor/models/field.model.d.ts +1 -2
  66. package/tableview/api/editor/models/form-editor.interface.d.ts +2 -2
  67. package/tableview/api/editor/models/formly-custom-field.model.d.ts +1 -1
  68. package/tableview/api/editor/models/formly-field.model.d.ts +2 -2
  69. package/tableview/editor/components/editor/form-editor.component.d.ts +2 -2
  70. package/tableview/editor/components/formly/fields/formly-field-action/formly-field-action.component.d.ts +1 -1
  71. package/tableview/editor/components/formly/fields/formly-field-datepicker/formly-field-datepicker.component.d.ts +2 -1
  72. package/tableview/editor/components/formly/fields/formly-field-fieldset/formly-field-fieldset.component.d.ts +4 -6
  73. package/tableview/editor/components/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.d.ts +0 -2
  74. package/tableview/editor/components/formly/fields/formly-field-tabs/formly-field-tabs.component.d.ts +2 -2
  75. package/tableview/editor/components/formly/fields/formly-field-type.abstract.component.d.ts +8 -15
  76. package/tableview/editor/components/formly/fields/formly-group-type.abstract.component.d.ts +7 -0
  77. package/tableview/editor/components/formly/fields/formly-type.abstract.component.d.ts +20 -0
  78. package/tableview/editor/components/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.d.ts +11 -4
  79. package/tableview/editor/components/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.d.ts +2 -1
  80. package/tableview/editor/helpers/formly-config.d.ts +1 -1
  81. package/tableview/editor/helpers/notification.d.ts +3 -3
  82. package/tableview/editor/models/formly-config.model.d.ts +10 -1
  83. package/tableview/editor/models/formly.model.d.ts +23 -0
  84. package/tableview/editor/services/form-editor.service.d.ts +2 -2
  85. package/tableview/tableview/router/tableview-route-builder.d.ts +10 -3
  86. package/tableview/tableview/services/tableview-feature-config.token.d.ts +1 -1
  87. package/version-info.json +3 -3
  88. package/esm2022/core/action/action-data.model.mjs +0 -2
  89. package/esm2022/core/action/action-parameters.model.mjs +0 -2
  90. package/esm2022/core/components/notification/notification-wrapper.component.mjs +0 -50
  91. package/esm2022/core/data-list/data-list-params-helpers.mjs +0 -465
  92. package/esm2022/core/data-list/data-list.model.mjs +0 -2
  93. package/esm2022/core/data-list/filter-match.model.mjs +0 -105
  94. package/esm2022/core/data-list/filter-metadata.model.mjs +0 -2
  95. package/esm2022/core/data-providers/base.data-provider.mjs +0 -16
  96. package/esm2022/core/data-providers/lookup.data-provider.mjs +0 -2
  97. package/esm2022/core/descriptors/action.descriptor.mjs +0 -2
  98. package/esm2022/core/descriptors/column.descriptor.mjs +0 -2
  99. package/esm2022/core/descriptors/editor.descriptor.mjs +0 -2
  100. package/esm2022/core/descriptors/enum.descriptor.mjs +0 -2
  101. package/esm2022/core/descriptors/filter.descriptor.mjs +0 -2
  102. package/esm2022/core/descriptors/lookup.descriptor.mjs +0 -2
  103. package/esm2022/core/descriptors/model.descriptor.mjs +0 -2
  104. package/esm2022/core/descriptors/table.descriptor.mjs +0 -2
  105. package/esm2022/core/descriptors/tableview.descriptor.mjs +0 -2
  106. package/esm2022/core/directives/component.directive.mjs +0 -75
  107. package/esm2022/core/directives/rerender.directive.mjs +0 -25
  108. package/esm2022/core/directives/template.directive.mjs +0 -29
  109. package/esm2022/core/enum/enum-helpers.mjs +0 -90
  110. package/esm2022/core/enum/enum.model.mjs +0 -2
  111. package/esm2022/core/error/error-handler.mjs +0 -20
  112. package/esm2022/core/error/error-helpers.mjs +0 -273
  113. package/esm2022/core/error/error.model.mjs +0 -33
  114. package/esm2022/core/helpers/coercion.mjs +0 -55
  115. package/esm2022/core/helpers/date.mjs +0 -119
  116. package/esm2022/core/helpers/notification.mjs +0 -21
  117. package/esm2022/core/helpers/number.mjs +0 -19
  118. package/esm2022/core/helpers/object.mjs +0 -152
  119. package/esm2022/core/helpers/route.mjs +0 -58
  120. package/esm2022/core/helpers/string.mjs +0 -57
  121. package/esm2022/core/helpers/templates.mjs +0 -4
  122. package/esm2022/core/helpers/type-helpers.mjs +0 -2
  123. package/esm2022/core/i18n/i18n-common.mjs +0 -24
  124. package/esm2022/core/i18n/i18n-error.mjs +0 -29
  125. package/esm2022/core/i18n/i18n-type.mjs +0 -46
  126. package/esm2022/core/index.mjs +0 -107
  127. package/esm2022/core/log/log-publisher-console.service.mjs +0 -40
  128. package/esm2022/core/log/log.model.mjs +0 -10
  129. package/esm2022/core/log/logger.service.mjs +0 -131
  130. package/esm2022/core/mediusinc-mng-commons-core.mjs +0 -5
  131. package/esm2022/core/models/class-attribute.model.mjs +0 -2
  132. package/esm2022/core/models/class-service.model.mjs +0 -2
  133. package/esm2022/core/models/getter.model.mjs +0 -2
  134. package/esm2022/core/models/i18n.model.mjs +0 -2
  135. package/esm2022/core/models/menu.model.mjs +0 -2
  136. package/esm2022/core/models/user.model.mjs +0 -2
  137. package/esm2022/core/models/version.model.mjs +0 -2
  138. package/esm2022/core/pipes/boolean.pipe.mjs +0 -34
  139. package/esm2022/core/pipes/class-map.pipe.mjs +0 -23
  140. package/esm2022/core/pipes/enum.pipe.mjs +0 -38
  141. package/esm2022/core/pipes/enumerate-async.pipe.mjs +0 -36
  142. package/esm2022/core/pipes/enumerate.pipe.mjs +0 -49
  143. package/esm2022/core/pipes/getter.pipe.mjs +0 -21
  144. package/esm2022/core/pipes/i18n-property.pipe.mjs +0 -19
  145. package/esm2022/core/pipes/json-path.pipe.mjs +0 -25
  146. package/esm2022/core/pipes/parametrize.pipe.mjs +0 -86
  147. package/esm2022/core/pipes/template.pipe.mjs +0 -25
  148. package/esm2022/core/provide.mjs +0 -79
  149. package/esm2022/core/reactivity/effect.mjs +0 -22
  150. package/esm2022/core/reflect/type-enum-decorator.mjs +0 -12
  151. package/esm2022/core/reflect/type-enum-metadata.mjs +0 -62
  152. package/esm2022/core/registry/registry.model.mjs +0 -2
  153. package/esm2022/core/registry/type-registry.mjs +0 -106
  154. package/esm2022/core/router/route-builder.mjs +0 -431
  155. package/esm2022/core/router/router.model.mjs +0 -2
  156. package/esm2022/core/router/routes-builder.mjs +0 -52
  157. package/esm2022/core/rxjs/map-data-list-result-operator.mjs +0 -22
  158. package/esm2022/core/security/permission-helpers.mjs +0 -14
  159. package/esm2022/core/security/permission.guard.mjs +0 -15
  160. package/esm2022/core/security/permission.service.mjs +0 -101
  161. package/esm2022/core/security/permissions.model.mjs +0 -93
  162. package/esm2022/core/services/commons-configuration.service.mjs +0 -189
  163. package/esm2022/core/services/commons-init.service.mjs +0 -111
  164. package/esm2022/core/services/commons-router.service.mjs +0 -181
  165. package/esm2022/core/services/commons-storage.service.mjs +0 -31
  166. package/esm2022/core/services/commons.service.mjs +0 -324
  167. package/esm2022/core/services/providers/commons-init.provider.mjs +0 -4
  168. package/esm2022/core/services/tokens/browser-storage.token.mjs +0 -3
  169. package/esm2022/core/services/tokens/commons-init.token.mjs +0 -3
  170. package/esm2022/core/services/tokens/log-publisher.token.mjs +0 -3
  171. package/esm2022/core/services/tokens/module-config.token.mjs +0 -3
  172. package/esm2022/core/styles/style-constants.mjs +0 -11
  173. package/esm2022/core/styles/style.model.mjs +0 -20
  174. package/esm2022/filter/descriptors/filter-generic.descriptor.mjs +0 -31
  175. package/esm2022/filter/descriptors/filter-lookup.descriptor.mjs +0 -168
  176. package/esm2022/filter/descriptors/filter.descriptor.mjs +0 -421
  177. package/esm2022/filter/index.mjs +0 -8
  178. package/esm2022/filter/mediusinc-mng-commons-filter.mjs +0 -5
  179. package/esm2022/filter/models/filter-generic-property.model.mjs +0 -2
  180. package/esm2022/filter/models/filter.model.mjs +0 -20
  181. package/esm2022/form/api/data-providers/lookup-data-provider.factory.mjs +0 -15
  182. package/esm2022/form/api/data-providers/lookup.data-provider.mjs +0 -15
  183. package/esm2022/form/api/descriptors/action-button.descriptor.mjs +0 -56
  184. package/esm2022/form/api/descriptors/button-style.builder.mjs +0 -153
  185. package/esm2022/form/api/index.mjs +0 -10
  186. package/esm2022/form/api/mediusinc-mng-commons-form-api.mjs +0 -5
  187. package/esm2022/form/api/models/button.model.mjs +0 -2
  188. package/esm2022/form/api/models/trim.model.mjs +0 -2
  189. package/esm2022/form/components/autocomplete/autocomplete.component.mjs +0 -436
  190. package/esm2022/form/components/date-range/date-range.component.mjs +0 -147
  191. package/esm2022/form/components/dropdown/dropdown.component.mjs +0 -372
  192. package/esm2022/form/components/number-range/number-range.component.mjs +0 -123
  193. package/esm2022/form/directives/input-trim.directive.mjs +0 -50
  194. package/esm2022/form/index.mjs +0 -8
  195. package/esm2022/form/mediusinc-mng-commons-form.mjs +0 -5
  196. package/esm2022/index.mjs +0 -2
  197. package/esm2022/mediusinc-mng-commons.mjs +0 -5
  198. package/esm2022/model/class/data-providers/base-from-class-data-provider.factory.mjs +0 -5
  199. package/esm2022/model/class/descriptors/model-class.descriptor.mjs +0 -28
  200. package/esm2022/model/class/descriptors/type-class.descriptor.mjs +0 -6
  201. package/esm2022/model/class/helpers/model.mjs +0 -53
  202. package/esm2022/model/class/index.mjs +0 -8
  203. package/esm2022/model/class/mediusinc-mng-commons-model-class.mjs +0 -5
  204. package/esm2022/model/data-providers/base-from-type-data-provider.factory.mjs +0 -13
  205. package/esm2022/model/descriptors/enum.descriptor.mjs +0 -28
  206. package/esm2022/model/descriptors/model.descriptor.mjs +0 -53
  207. package/esm2022/model/descriptors/type.descriptor.mjs +0 -7
  208. package/esm2022/model/helpers/i18n.mjs +0 -47
  209. package/esm2022/model/index.mjs +0 -9
  210. package/esm2022/model/mediusinc-mng-commons-model.mjs +0 -5
  211. package/esm2022/provide.mjs +0 -6
  212. package/esm2022/table/api/class/class-table-attribute-converter.mjs +0 -80
  213. package/esm2022/table/api/class/class-table-attribute.model.mjs +0 -2
  214. package/esm2022/table/api/class/class-table-data-provider.factory.mjs +0 -5
  215. package/esm2022/table/api/class/class-table-descriptor-helpers.mjs +0 -99
  216. package/esm2022/table/api/class/class-table-descriptor.factory.mjs +0 -21
  217. package/esm2022/table/api/class/index.mjs +0 -6
  218. package/esm2022/table/api/class/mediusinc-mng-commons-table-api-class.mjs +0 -5
  219. package/esm2022/table/api/data-providers/table-data-provider.factory.mjs +0 -15
  220. package/esm2022/table/api/data-providers/table.data-provider.mjs +0 -33
  221. package/esm2022/table/api/descriptors/column.descriptor.mjs +0 -475
  222. package/esm2022/table/api/descriptors/sort.descriptor.mjs +0 -67
  223. package/esm2022/table/api/descriptors/table-descriptor.factory.mjs +0 -22
  224. package/esm2022/table/api/descriptors/table.descriptor.mjs +0 -1116
  225. package/esm2022/table/api/helpers/column-converter.mjs +0 -25
  226. package/esm2022/table/api/helpers/table-data-provider-descriptor-convert.mjs +0 -7
  227. package/esm2022/table/api/index.mjs +0 -19
  228. package/esm2022/table/api/mediusinc-mng-commons-table-api.mjs +0 -5
  229. package/esm2022/table/api/models/column-value.model.mjs +0 -2
  230. package/esm2022/table/api/models/column.model.mjs +0 -21
  231. package/esm2022/table/api/models/row-expandable-component.model.mjs +0 -2
  232. package/esm2022/table/api/models/table-columns.model.mjs +0 -2
  233. package/esm2022/table/api/models/table-event.model.mjs +0 -2
  234. package/esm2022/table/api/models/table.model.mjs +0 -21
  235. package/esm2022/table/components/column-filter/column-filter.component.mjs +0 -389
  236. package/esm2022/table/components/column-value/column-value.component.mjs +0 -78
  237. package/esm2022/table/components/filter/filter-active-tag/filter-active-tag.component.mjs +0 -55
  238. package/esm2022/table/components/filter/filter-form/filter-form.component.mjs +0 -226
  239. package/esm2022/table/components/filter/filter-overlay-with-tag/filter-overlay-with-tag.component.mjs +0 -219
  240. package/esm2022/table/components/table/table.component.mjs +0 -319
  241. package/esm2022/table/helpers/filters.mjs +0 -312
  242. package/esm2022/table/helpers/notification.mjs +0 -21
  243. package/esm2022/table/helpers/table-layout-prefs.mjs +0 -10
  244. package/esm2022/table/helpers/table.mjs +0 -24
  245. package/esm2022/table/index.mjs +0 -24
  246. package/esm2022/table/mediusinc-mng-commons-table.mjs +0 -5
  247. package/esm2022/table/models/column-preferences.model.mjs +0 -2
  248. package/esm2022/table/models/filter.model.mjs +0 -2
  249. package/esm2022/table/pipes/filter-value.pipe.mjs +0 -77
  250. package/esm2022/table/pipes/locale-default-row-class.pipe.mjs +0 -27
  251. package/esm2022/table/pipes/table-column-filter-class.pipe.mjs +0 -25
  252. package/esm2022/table/provide.mjs +0 -19
  253. package/esm2022/table/services/table-data.service.mjs +0 -194
  254. package/esm2022/table/services/table-feature-config.token.mjs +0 -3
  255. package/esm2022/table/services/table-metadata.service.mjs +0 -136
  256. package/esm2022/table/services/table-preferences.service.mjs +0 -142
  257. package/esm2022/tableview/action/components/action/action.component.mjs +0 -277
  258. package/esm2022/tableview/action/components/editor/action-editor.component.mjs +0 -86
  259. package/esm2022/tableview/action/components/editor/injector-context/action-editor-injector-context.component.mjs +0 -428
  260. package/esm2022/tableview/action/components/localization/data-language-dropdown.component.mjs +0 -35
  261. package/esm2022/tableview/action/components/route/action-route.component.mjs +0 -146
  262. package/esm2022/tableview/action/components/table/action-table.component.mjs +0 -102
  263. package/esm2022/tableview/action/guards/unsaved-changes.guard.mjs +0 -4
  264. package/esm2022/tableview/action/helpers/action-execution.mjs +0 -25
  265. package/esm2022/tableview/action/helpers/i18n.mjs +0 -102
  266. package/esm2022/tableview/action/helpers/notification.mjs +0 -78
  267. package/esm2022/tableview/action/helpers/styles.mjs +0 -32
  268. package/esm2022/tableview/action/models/action-editor-dialog-data.model.mjs +0 -2
  269. package/esm2022/tableview/action/models/can-component-deactivate.model.mjs +0 -2
  270. package/esm2022/tableview/action/models/execution/action-context.model.mjs +0 -64
  271. package/esm2022/tableview/action/models/execution/action-instance.model.mjs +0 -169
  272. package/esm2022/tableview/action/services/action-error-mapper.service.mjs +0 -20
  273. package/esm2022/tableview/action/services/action-executor.service.mjs +0 -772
  274. package/esm2022/tableview/action/services/component-action-executor.service.mjs +0 -19
  275. package/esm2022/tableview/action/services/data-provider-executor.service.mjs +0 -41
  276. package/esm2022/tableview/action/services/navigation.service.mjs +0 -53
  277. package/esm2022/tableview/action/services/providers/provide-action-executor.mjs +0 -9
  278. package/esm2022/tableview/action/services/providers/provide-view-container.mjs +0 -17
  279. package/esm2022/tableview/action/services/root-action-executor.service.mjs +0 -18
  280. package/esm2022/tableview/action/services/tokens/action-editor.token.mjs +0 -3
  281. package/esm2022/tableview/action/services/view-container.service.mjs +0 -40
  282. package/esm2022/tableview/api/action/descriptors/action-descriptor.factory.mjs +0 -28
  283. package/esm2022/tableview/api/action/descriptors/action-editor-descriptor.factory.mjs +0 -30
  284. package/esm2022/tableview/api/action/descriptors/action-editor.descriptor.mjs +0 -223
  285. package/esm2022/tableview/api/action/descriptors/action-link-descriptor.factory.mjs +0 -32
  286. package/esm2022/tableview/api/action/descriptors/action-link.descriptor.mjs +0 -74
  287. package/esm2022/tableview/api/action/descriptors/action.descriptor.mjs +0 -302
  288. package/esm2022/tableview/api/action/descriptors/editor-action-descriptor.factory.mjs +0 -21
  289. package/esm2022/tableview/api/action/descriptors/editor-action-editor-descriptor.factory.mjs +0 -21
  290. package/esm2022/tableview/api/action/descriptors/table-action-descriptor.factory.mjs +0 -37
  291. package/esm2022/tableview/api/action/descriptors/table-action-editor-descriptor.factory.mjs +0 -40
  292. package/esm2022/tableview/api/action/helpers/data-provider-executors.mjs +0 -100
  293. package/esm2022/tableview/api/action/models/action-component.model.mjs +0 -2
  294. package/esm2022/tableview/api/action/models/action-confirmation.model.mjs +0 -2
  295. package/esm2022/tableview/api/action/models/action-descriptor.types.mjs +0 -2
  296. package/esm2022/tableview/api/action/models/action-editor.model.mjs +0 -2
  297. package/esm2022/tableview/api/action/models/action-error.model.mjs +0 -14
  298. package/esm2022/tableview/api/action/models/action.type.mjs +0 -26
  299. package/esm2022/tableview/api/action/models/execution/action-context-validation.model.mjs +0 -2
  300. package/esm2022/tableview/api/action/models/execution/action-context.model.mjs +0 -2
  301. package/esm2022/tableview/api/action/models/execution/action-execution-error.model.mjs +0 -2
  302. package/esm2022/tableview/api/action/models/execution/action-instance-state.model.mjs +0 -32
  303. package/esm2022/tableview/api/action/models/execution/action-instance.model.mjs +0 -2
  304. package/esm2022/tableview/api/action/models/execution/view-container.model.mjs +0 -2
  305. package/esm2022/tableview/api/action/models/tableview-action-default-categories.model.mjs +0 -11
  306. package/esm2022/tableview/api/action/services/data-provider-executor.service.mjs +0 -28
  307. package/esm2022/tableview/api/action/services/tokens/data-language-dropdown.token.mjs +0 -3
  308. package/esm2022/tableview/api/class/editor/class-editor-attribute-converter.mjs +0 -85
  309. package/esm2022/tableview/api/class/editor/class-editor-attribute.model.mjs +0 -2
  310. package/esm2022/tableview/api/class/editor/class-editor-data-provider.factory.mjs +0 -5
  311. package/esm2022/tableview/api/class/editor/class-editor-descriptor-helpers.mjs +0 -95
  312. package/esm2022/tableview/api/class/editor/class-editor-descriptor.factory.mjs +0 -21
  313. package/esm2022/tableview/api/class/index.mjs +0 -13
  314. package/esm2022/tableview/api/class/mediusinc-mng-commons-tableview-api-class.mjs +0 -5
  315. package/esm2022/tableview/api/class/tableview/class-tableview-attribute-converter.mjs +0 -35
  316. package/esm2022/tableview/api/class/tableview/class-tableview-attribute.model.mjs +0 -2
  317. package/esm2022/tableview/api/class/tableview/class-tableview-data-provider.factory.mjs +0 -5
  318. package/esm2022/tableview/api/class/tableview/class-tableview-descriptor-helpers.mjs +0 -111
  319. package/esm2022/tableview/api/class/tableview/class-tableview-descriptor.factory.mjs +0 -26
  320. package/esm2022/tableview/api/editor/data-providers/editor-data-provider.factory.mjs +0 -15
  321. package/esm2022/tableview/api/editor/data-providers/editor.data-provider.mjs +0 -114
  322. package/esm2022/tableview/api/editor/descriptors/editor-descriptor.factory.mjs +0 -15
  323. package/esm2022/tableview/api/editor/descriptors/editor.descriptor.mjs +0 -437
  324. package/esm2022/tableview/api/editor/descriptors/field-action.descriptor.mjs +0 -51
  325. package/esm2022/tableview/api/editor/descriptors/field-base.descriptor.mjs +0 -314
  326. package/esm2022/tableview/api/editor/descriptors/field-group.descriptor.mjs +0 -103
  327. package/esm2022/tableview/api/editor/descriptors/field-lookup.descriptor.mjs +0 -211
  328. package/esm2022/tableview/api/editor/descriptors/field-many.descriptor.mjs +0 -142
  329. package/esm2022/tableview/api/editor/descriptors/field-validation.descriptor.mjs +0 -25
  330. package/esm2022/tableview/api/editor/descriptors/field.descriptor.mjs +0 -402
  331. package/esm2022/tableview/api/editor/descriptors/wrappers/editor-descriptor-nested-object-wrapper.mjs +0 -51
  332. package/esm2022/tableview/api/editor/models/editor-fields.model.mjs +0 -2
  333. package/esm2022/tableview/api/editor/models/editor.model.mjs +0 -9
  334. package/esm2022/tableview/api/editor/models/field-action-context.model.mjs +0 -2
  335. package/esm2022/tableview/api/editor/models/field-image-preview.model.mjs +0 -2
  336. package/esm2022/tableview/api/editor/models/field-validation.model.mjs +0 -2
  337. package/esm2022/tableview/api/editor/models/field.model.mjs +0 -57
  338. package/esm2022/tableview/api/editor/models/form-editor.event.mjs +0 -28
  339. package/esm2022/tableview/api/editor/models/form-editor.interface.mjs +0 -2
  340. package/esm2022/tableview/api/editor/models/formly-custom-field.model.mjs +0 -70
  341. package/esm2022/tableview/api/editor/models/formly-field.model.mjs +0 -2
  342. package/esm2022/tableview/api/editor/models/formly-options.model.mjs +0 -2
  343. package/esm2022/tableview/api/editor/models/radio.model.mjs +0 -2
  344. package/esm2022/tableview/api/index.mjs +0 -76
  345. package/esm2022/tableview/api/mediusinc-mng-commons-tableview-api.mjs +0 -5
  346. package/esm2022/tableview/api/tableview/data-providers/tableview-data-provider.factory.mjs +0 -18
  347. package/esm2022/tableview/api/tableview/data-providers/tableview.data-provider.mjs +0 -84
  348. package/esm2022/tableview/api/tableview/descriptors/tableview-descriptor.factory.mjs +0 -34
  349. package/esm2022/tableview/api/tableview/descriptors/tableview.descriptor.mjs +0 -377
  350. package/esm2022/tableview/api/tableview/helpers/files-export.mjs +0 -34
  351. package/esm2022/tableview/api/tableview/helpers/tableview-create.mjs +0 -26
  352. package/esm2022/tableview/api/tableview/helpers/tableview-data-provider-descriptor-convert.mjs +0 -7
  353. package/esm2022/tableview/api/tableview/helpers/tableview-default-actions.mjs +0 -324
  354. package/esm2022/tableview/api/tableview/helpers/tableview-input-builder.mjs +0 -319
  355. package/esm2022/tableview/api/tableview/models/tableview-descriptor-fields-manage-helper.type.mjs +0 -2
  356. package/esm2022/tableview/api/tableview/models/tableview-descriptor-helper.type.mjs +0 -2
  357. package/esm2022/tableview/api/tableview/models/tableview-input.model.mjs +0 -2
  358. package/esm2022/tableview/api/tableview/models/tableview-route.model.mjs +0 -2
  359. package/esm2022/tableview/editor/components/editor/auto-save-status/auto-save-status.component.mjs +0 -82
  360. package/esm2022/tableview/editor/components/editor/form-editor.component.mjs +0 -480
  361. package/esm2022/tableview/editor/components/formly/constants.mjs +0 -2
  362. package/esm2022/tableview/editor/components/formly/fields/formly-field-action/formly-field-action.component.mjs +0 -66
  363. package/esm2022/tableview/editor/components/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +0 -47
  364. package/esm2022/tableview/editor/components/formly/fields/formly-field-custom/formly-field-custom.component.mjs +0 -39
  365. package/esm2022/tableview/editor/components/formly/fields/formly-field-datepicker/formly-field-datepicker.component.mjs +0 -165
  366. package/esm2022/tableview/editor/components/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +0 -42
  367. package/esm2022/tableview/editor/components/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +0 -34
  368. package/esm2022/tableview/editor/components/formly/fields/formly-field-input/formly-field-input.component.mjs +0 -211
  369. package/esm2022/tableview/editor/components/formly/fields/formly-field-label/formly-field-label.component.mjs +0 -23
  370. package/esm2022/tableview/editor/components/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +0 -195
  371. package/esm2022/tableview/editor/components/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +0 -239
  372. package/esm2022/tableview/editor/components/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +0 -205
  373. package/esm2022/tableview/editor/components/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +0 -28
  374. package/esm2022/tableview/editor/components/formly/fields/formly-field-type.abstract.component.mjs +0 -46
  375. package/esm2022/tableview/editor/components/formly/pipes/formly-field-label.pipe.mjs +0 -19
  376. package/esm2022/tableview/editor/components/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.mjs +0 -33
  377. package/esm2022/tableview/editor/components/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +0 -59
  378. package/esm2022/tableview/editor/helpers/editor-autosave.mjs +0 -49
  379. package/esm2022/tableview/editor/helpers/editor-field.mjs +0 -39
  380. package/esm2022/tableview/editor/helpers/editor-formly.mjs +0 -388
  381. package/esm2022/tableview/editor/helpers/editor-validators.mjs +0 -25
  382. package/esm2022/tableview/editor/helpers/field-create.mjs +0 -21
  383. package/esm2022/tableview/editor/helpers/formly-config.mjs +0 -260
  384. package/esm2022/tableview/editor/helpers/notification.mjs +0 -11
  385. package/esm2022/tableview/editor/models/editor-auto-save-preview.model.mjs +0 -2
  386. package/esm2022/tableview/editor/models/formly-config.model.mjs +0 -2
  387. package/esm2022/tableview/editor/services/form-editor.service.mjs +0 -96
  388. package/esm2022/tableview/editor/services/formly-config.provider.mjs +0 -31
  389. package/esm2022/tableview/index.mjs +0 -67
  390. package/esm2022/tableview/mediusinc-mng-commons-tableview.mjs +0 -5
  391. package/esm2022/tableview/provide.mjs +0 -105
  392. package/esm2022/tableview/tableview/components/route/tableview-route.component.mjs +0 -15
  393. package/esm2022/tableview/tableview/components/tableview/tableview.component.mjs +0 -59
  394. package/esm2022/tableview/tableview/router/tableview-route-builder.mjs +0 -175
  395. package/esm2022/tableview/tableview/services/tableview-feature-config.token.mjs +0 -3
@@ -1,437 +0,0 @@
1
- import { Subject } from 'rxjs';
2
- import { CommonsInternalError } from '@mediusinc/mng-commons/core';
3
- import { EDITOR_DEFAULT_GROUP_NAME, TableviewEditorTypeEnum } from '../models/editor.model';
4
- import { FieldActionDescriptor } from './field-action.descriptor';
5
- import { AFieldDescriptor } from './field-base.descriptor';
6
- import { FieldGroupDescriptor, FieldTabGroupDescriptor } from './field-group.descriptor';
7
- import { FieldLookupDescriptor, FieldLookupEnumDescriptor, fieldLookupGetProviderCfgObj } from './field-lookup.descriptor';
8
- import { FieldManyEditorDescriptor, FieldManyToManyEditorDescriptor, fieldManyToManyGetProviderCfgObj } from './field-many.descriptor';
9
- import { FieldInputDescriptor } from './field.descriptor';
10
- import { EditorDescriptorNestedObjectWrapper } from './wrappers/editor-descriptor-nested-object-wrapper';
11
- export class EditorDescriptorInst {
12
- static { this.defaultGroupName = EDITOR_DEFAULT_GROUP_NAME; }
13
- /**
14
- * Creates new instance of editor descriptor.
15
- * @param model Model descriptor.
16
- * @param tableviewEditorType Type of editor in tableview (add, edit, view or none).
17
- */
18
- constructor(model, tableviewEditorType = TableviewEditorTypeEnum.None) {
19
- /** @ignore */ this._tabs = [];
20
- /** @ignore */ this._groups = [];
21
- /** @ignore */ this._fields = [];
22
- /** @ignore */ this._disabled = false;
23
- /** @ignore */ this._isLocalized = false;
24
- /** @ignore */ this._eventsSubject = new Subject();
25
- this._model = model;
26
- this._tableviewEditorType = tableviewEditorType;
27
- }
28
- /**
29
- * Model descriptor for editor.
30
- */
31
- get model() {
32
- return this._model;
33
- }
34
- /**
35
- * Editor's tabs.
36
- */
37
- get tabs() {
38
- return this._tabs;
39
- }
40
- /**
41
- * Editor's fields.
42
- */
43
- get fields() {
44
- return this._fields;
45
- }
46
- /**
47
- * Type of editor for tableview.
48
- */
49
- get tableviewEditorType() {
50
- return this._tableviewEditorType;
51
- }
52
- /**
53
- * If editor is disabled.
54
- */
55
- get disabled() {
56
- return this._disabled;
57
- }
58
- get isLocalized() {
59
- return this._isLocalized;
60
- }
61
- get localizationLocaleProperty() {
62
- return this._localizationLocaleProperty;
63
- }
64
- get localizationLocalizationProperty() {
65
- return this._localizationLocalizationProperty;
66
- }
67
- get localizationModel() {
68
- return this._localizationModel;
69
- }
70
- get autoSave() {
71
- return this._autoSave;
72
- }
73
- get autoSaveIdentifier() {
74
- return this._autoSaveIdentifier;
75
- }
76
- get autofocusOnField() {
77
- return this._autofocusOnField;
78
- }
79
- /**
80
- * Dives into nested object to add fields from the nested object on property.
81
- *
82
- * @experimental
83
- *
84
- * @param property Model property name.
85
- */
86
- nested(property) {
87
- return new EditorDescriptorNestedObjectWrapper(this, property);
88
- }
89
- /**
90
- * Creates new tab group. Next added fields are added to newly created tab group.
91
- * @param name Name of the group.
92
- * @param title Title key for the tab.7@return Newly created group descriptor.
93
- * @return Newly created group descriptor.
94
- */
95
- addTabGroup(name, title) {
96
- const tabGroup = new FieldTabGroupDescriptor(name);
97
- tabGroup.withTitle(title);
98
- this.createTabGroupDescriptor(tabGroup);
99
- return tabGroup;
100
- }
101
- /**
102
- * Creates new tab group. Next added fields are added to newly created tab group.
103
- * @param name Name of the group.
104
- * @param title Title key for the tab.7@return Newly created group descriptor.
105
- */
106
- withTabGroup(name, title) {
107
- this.addTabGroup(name, title);
108
- return this;
109
- }
110
- /**
111
- * Creates new field group. Next added fields are added to newly created field group.
112
- * @param name Name of the group.
113
- * @param title Title key for the group.
114
- * @return Newly created group descriptor.
115
- */
116
- addFieldGroup(name, title) {
117
- const fieldGroup = new FieldGroupDescriptor(name);
118
- fieldGroup.withTitle(title);
119
- this.createFieldGroupDescriptor(fieldGroup);
120
- return fieldGroup;
121
- }
122
- /**
123
- * Creates new field group. Next added fields are added to newly created field group.
124
- * @param name Name of the group.
125
- * @param title Title key for the group.
126
- */
127
- withFieldGroup(name, title) {
128
- this.addFieldGroup(name, title);
129
- return this;
130
- }
131
- /**
132
- * Gets field by the model property name.
133
- * @param property Model property name.
134
- */
135
- getField(property) {
136
- return this.getFieldUnsafe(property);
137
- }
138
- /**
139
- * Gets field by the model property name (UNSAFE).
140
- * @param property Model property name.
141
- */
142
- getFieldUnsafe(property) {
143
- return this._fields.find(f => f.property === property) ?? null;
144
- }
145
- /**
146
- * Removes field by the model property name.
147
- * @param property Model property name.
148
- */
149
- removeField(property) {
150
- return this.removeFieldUnsafe(property);
151
- }
152
- /**
153
- * Removes field by the model property name (UNSAFE).
154
- * @param property Model property name.
155
- */
156
- removeFieldUnsafe(property) {
157
- const fieldIdx = this._fields.findIndex(f => f.property === property);
158
- if (fieldIdx < 0) {
159
- throw new CommonsInternalError(`Field ${property} does not exist.`, { name: 'EditorDescriptorError' });
160
- }
161
- for (const group of this._groups) {
162
- const groupFieldIdx = group.fields.findIndex(f => f instanceof AFieldDescriptor && f.property === property);
163
- if (groupFieldIdx >= 0) {
164
- group.fields.splice(groupFieldIdx, 1);
165
- break;
166
- }
167
- }
168
- this._fields.splice(fieldIdx, 1);
169
- }
170
- /**
171
- * Adds field by the descriptor.
172
- * @param field Field descriptor.
173
- */
174
- addFieldDescriptor(field) {
175
- if (this._fields.some(f => f.property === field.property)) {
176
- throw new CommonsInternalError(`Field '${field.property}' already exists.`);
177
- }
178
- this.createDefaultGroup();
179
- this._fields.push(field);
180
- this._currentGroup?.addField(field);
181
- return this;
182
- }
183
- /**
184
- * Adds field by the model property name.
185
- * @param property Model property name.
186
- */
187
- addField(property) {
188
- return this.addFieldUnsafe(property);
189
- }
190
- /**
191
- * Adds field by the model property name (UNSAFE). Property is not checked on editor model.
192
- * Use {addField} for safe usage.
193
- * @param property Model property name.
194
- */
195
- addFieldUnsafe(property) {
196
- const field = new FieldInputDescriptor(property);
197
- this.addFieldDescriptor(field);
198
- return field;
199
- }
200
- withFields(...properties) {
201
- properties.forEach(p => this.addField(p));
202
- return this;
203
- }
204
- addFieldAction(actionName) {
205
- const field = new FieldActionDescriptor(actionName);
206
- this.addFieldDescriptor(field);
207
- return field;
208
- }
209
- /**
210
- * Adds lookup field.
211
- *
212
- * @param {Property} property - The property key of the editor.
213
- * @param {FieldsManageAddFieldLookupOpts<LookupModel, Service>} opts - Optional parameters configuring type and/or service provider.
214
- * @typeparam Property - The property key of the EditorModel.
215
- * @typeparam LookupModel - The field model type, defaults to the non-nullable type of the editor's property.
216
- * @typeparam Service - Service used for data provider.
217
- * @typeparam FieldValue - The value type of field on editor.
218
- *
219
- * @returns {FieldLookupDescriptor<LookupModel, EditorModel, Service, FieldValue>} - The field lookup descriptor.
220
- */
221
- addFieldLookup(property, opts) {
222
- return this.addFieldLookupUnsafe(property, opts);
223
- }
224
- /**
225
- * [UNSAFE] Adds lookup field.
226
- * This function is UNSAFE because property is not type-checked.
227
- *
228
- * @param {string} property Model property name.
229
- * @param {FieldsManageAddFieldLookupOpts<LookupModel, Service>} opts - Optional parameters configuring type and/or service provider.
230
- * @typeparam LookupModel - The field model type, defaults to the non-nullable type of the editor's property.
231
- * @typeparam Service - Service used for data provider.
232
- * @typeparam FieldValue - The value type of field on editor.
233
- *
234
- * @returns {FieldLookupDescriptor<LookupModel, EditorModel, Service, FieldValue>} - The field lookup descriptor.
235
- */
236
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
237
- addFieldLookupUnsafe(property, opts) {
238
- const field = new FieldLookupDescriptor(property, {
239
- ...(opts?.serviceProvider ? fieldLookupGetProviderCfgObj(opts.serviceProvider) : {})
240
- });
241
- this.addFieldDescriptor(field);
242
- return field;
243
- }
244
- addFieldLookupEnum(property, enumDesc, options) {
245
- return this.addFieldLookupEnumUnsafe(property, enumDesc, options);
246
- }
247
- /**
248
- * Adds enum lookup field.
249
- * @param property Model's property name.
250
- * @param enumDesc Type of enum or enum descriptor.
251
- * @param options Provides subset of enum's available constants.
252
- */
253
- addFieldLookupEnumUnsafe(property, enumDesc, options) {
254
- const field = new FieldLookupEnumDescriptor(property, enumDesc, options);
255
- this.addFieldDescriptor(field);
256
- return field;
257
- }
258
- /**
259
- * Adds table/details/add/edit field for one-to-many (1:n) relations.
260
- * @param property Model's property name.
261
- * @param tableviewDescriptor Tableview descriptor for related model.
262
- */
263
- addFieldManyEditor(property, tableviewDescriptor) {
264
- return this.addFieldManyEditorUnsafe(property, tableviewDescriptor);
265
- }
266
- /**
267
- * Adds table/details/add/edit field for one-to-many (1:n) relations (UNSAFE).
268
- * @param property Model's property name.
269
- * @param tableviewDescriptor Tableview descriptor for related model.
270
- */
271
- addFieldManyEditorUnsafe(property, tableviewDescriptor) {
272
- const field = new FieldManyEditorDescriptor(property, tableviewDescriptor);
273
- this.addFieldDescriptor(field);
274
- return field;
275
- }
276
- addFieldManyToManyEditor(property, mainTableDescriptor, lookupTableDescriptor, lookupDataProvider) {
277
- return this.addFieldManyToManyEditorUnsafe(property, mainTableDescriptor, lookupTableDescriptor, lookupDataProvider);
278
- }
279
- addFieldManyToManyEditorUnsafe(property, mainTableDescriptor, lookupTableDescriptor, lookupDataProvider) {
280
- const cfg = fieldManyToManyGetProviderCfgObj(lookupDataProvider);
281
- const field = new FieldManyToManyEditorDescriptor(property, mainTableDescriptor, lookupTableDescriptor, {
282
- ...cfg
283
- });
284
- this.addFieldDescriptor(field);
285
- return field;
286
- }
287
- /**
288
- * Disables field on editor.
289
- * @param disabled
290
- */
291
- withDisabled(disabled = true) {
292
- this._disabled = disabled;
293
- return this;
294
- }
295
- /**
296
- * Adds group validator to editor.
297
- * @param name Name of the validation.
298
- * @param validator Field validator function.
299
- * @param message Field validation message.
300
- * @param opts Additional configuration for validation.
301
- */
302
- withValidation(name, validator, message, opts) {
303
- return this.withValidationUnsafe(name, validator, message, opts);
304
- }
305
- /**
306
- * Adds group validator to editor.
307
- * @param name Name of the validation.
308
- * @param validator Field validator function.
309
- * @param message Field validation message.
310
- * @param opts Additional configuration for validation.
311
- */
312
- withValidationUnsafe(name, validator, message, opts) {
313
- if (this._currentGroup) {
314
- this._currentGroup.withValidation(name, validator, message, opts);
315
- }
316
- return this;
317
- }
318
- withAutoSave(enabled = true, autoSaveIdentifier) {
319
- this._autoSave = enabled;
320
- this._autoSaveIdentifier = autoSaveIdentifier;
321
- return this;
322
- }
323
- withAutofocusOnField(enabled = true) {
324
- this._autofocusOnField = enabled;
325
- return this;
326
- }
327
- /**
328
- * Creates a copy of editor descriptor object.
329
- */
330
- copy() {
331
- const editor = new EditorDescriptorInst(this.model.copy(), this.tableviewEditorType);
332
- editor._fields = this._fields.map(f => f.copy());
333
- const fieldsMap = editor.fields.reduce((map, field) => {
334
- map.set(field.property, field);
335
- return map;
336
- }, new Map());
337
- for (const tabGroup of this._tabs) {
338
- const tabGroupCopy = tabGroup.copy(true);
339
- // set fields
340
- for (let i = 0; i < tabGroup.fields.length; i++) {
341
- const group = tabGroup.fields[i];
342
- const groupCopy = tabGroupCopy.fields[i];
343
- for (let j = 0; j < group.fields.length; j++) {
344
- const fieldCopy = fieldsMap.get(group.fields[j].property);
345
- if (!fieldCopy) {
346
- throw new CommonsInternalError(`Could not copy editor descriptor: field '${group.fields[j].property}' (tab '${tabGroup.name}', group ${group.name}').`);
347
- }
348
- groupCopy.addField(fieldCopy);
349
- }
350
- editor._groups.push(groupCopy);
351
- }
352
- editor._tabs.push(tabGroupCopy);
353
- }
354
- editor._currentTabGroup = editor._tabs.length > 0 ? editor._tabs[editor._tabs.length - 1] : undefined;
355
- if (editor._currentTabGroup) {
356
- editor._currentGroup = editor._currentTabGroup.fields.length > 0 ? editor._currentTabGroup.fields[editor._currentTabGroup.fields.length - 1] : undefined;
357
- }
358
- editor._disabled = this._disabled;
359
- editor._autoSave = this._autoSave;
360
- editor._autoSaveIdentifier = this._autoSaveIdentifier;
361
- editor._autofocusOnField = this._autofocusOnField;
362
- editor._isLocalized = this._isLocalized;
363
- editor._localizationLocaleProperty = this._localizationLocaleProperty;
364
- editor._localizationModel = this._localizationModel;
365
- editor._localizationLocalizationProperty = this._localizationLocalizationProperty;
366
- return editor;
367
- }
368
- /**
369
- * Created group from field group descriptor.
370
- * @param fieldGroup Field group descriptor.
371
- * @internal
372
- */
373
- createFieldGroupDescriptor(fieldGroup) {
374
- this.createDefaultTabGroup();
375
- this._currentGroup = fieldGroup;
376
- this._groups.push(fieldGroup);
377
- this._currentTabGroup?.addField(fieldGroup);
378
- return this;
379
- }
380
- /**
381
- * Creates tab group from tab group descriptor.
382
- * @param tabGroup Tab group descriptor.
383
- * @internal
384
- */
385
- createTabGroupDescriptor(tabGroup) {
386
- this._currentTabGroup = tabGroup;
387
- this._tabs.push(tabGroup);
388
- return this;
389
- }
390
- /**
391
- * Creates default field group.
392
- * @internal
393
- */
394
- createDefaultGroup() {
395
- this.createDefaultTabGroup();
396
- if (this._currentTabGroup?.fields.length === 0) {
397
- this.addFieldGroup(EditorDescriptorInst.defaultGroupName, null);
398
- }
399
- }
400
- /**
401
- * Creates default tab group.
402
- * @internal
403
- */
404
- createDefaultTabGroup() {
405
- if (this._tabs.length === 0) {
406
- this.addTabGroup(EditorDescriptorInst.defaultGroupName, 'general.general');
407
- }
408
- }
409
- /**
410
- * This function takes care of displaying correct/localized data in the editor
411
- * @param property property that tells us where on the model are localizations accessible
412
- * @param model Model for localizations
413
- * @param localeProperty property by which we find the locale
414
- */
415
- localized(property, model, localeProperty) {
416
- return this.localizedUnsafe(property, model, localeProperty);
417
- }
418
- localizedUnsafe(property, model, localeProperty) {
419
- this._localizationLocalizationProperty = property;
420
- this._localizationModel = model;
421
- this._localizationLocaleProperty = localeProperty;
422
- this._isLocalized = true;
423
- return this;
424
- }
425
- nextEvent(type, component, data) {
426
- this._eventsSubject.next({
427
- type: type,
428
- formComponent: component,
429
- form: component.form,
430
- data: data
431
- });
432
- }
433
- get events$() {
434
- return this._eventsSubject.asObservable();
435
- }
436
- }
437
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmRlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9lZGl0b3IvZGVzY3JpcHRvcnMvZWRpdG9yLmRlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUU3QixPQUFPLEVBQWdCLG9CQUFvQixFQUFzQyxNQUFNLDZCQUE2QixDQUFDO0FBTXJILE9BQU8sRUFBQyx5QkFBeUIsRUFBRSx1QkFBdUIsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBSTFGLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBQyxvQkFBb0IsRUFBRSx1QkFBdUIsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZGLE9BQU8sRUFBQyxxQkFBcUIsRUFBRSx5QkFBeUIsRUFBRSw0QkFBNEIsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ3pILE9BQU8sRUFBQyx5QkFBeUIsRUFBRSwrQkFBK0IsRUFBRSxnQ0FBZ0MsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBRXJJLE9BQU8sRUFBQyxvQkFBb0IsRUFBMkIsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRixPQUFPLEVBQUMsbUNBQW1DLEVBQUMsTUFBTSxvREFBb0QsQ0FBQztBQUV2RyxNQUFNLE9BQU8sb0JBQW9CO2FBR04scUJBQWdCLEdBQUcseUJBQXlCLEFBQTVCLENBQTZCO0lBd0JwRTs7OztPQUlHO0lBQ0gsWUFBbUIsS0FBbUMsRUFBRSxtQkFBbUIsR0FBRyx1QkFBdUIsQ0FBQyxJQUFJO1FBekIxRyxjQUFjLENBQW9CLFVBQUssR0FBZ0QsRUFBRSxDQUFDO1FBQzFGLGNBQWMsQ0FBb0IsWUFBTyxHQUFnRSxFQUFFLENBQUM7UUFDNUcs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QUUsS0FBSyxFQUFFLGNBQXdCLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBRU0sZUFBZSxDQUFtQixRQUFnQixFQUFFLEtBQXdDLEVBQUUsY0FBc0I7UUFDdkgsSUFBSSxDQUFDLGlDQUFpQyxHQUFHLFFBQWtCLENBQUM7UUFDNUQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztRQUNoQyxJQUFJLENBQUMsMkJBQTJCLEdBQUcsY0FBd0IsQ0FBQztRQUM1RCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUV6QixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sU0FBUyxDQUFDLElBQXVCLEVBQUUsU0FBeUMsRUFBRSxJQUFpQztRQUNsSCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztZQUNyQixJQUFJLEVBQUUsSUFBSTtZQUNWLGFBQWEsRUFBRSxTQUFTO1lBQ3hCLElBQUksRUFBRSxTQUFTLENBQUMsSUFBaUI7WUFDakMsSUFBSSxFQUFFLElBQUk7U0FDYixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2QsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Zvcm1Hcm91cH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge1N1YmplY3R9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge0FycmF5SXRlbVR5cGUsIENvbW1vbnNJbnRlcm5hbEVycm9yLCBFbnVtQ29uc3RhbnRUeXBlLCBJRWRpdG9yRGVzY3JpcHRvcn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcbmltcG9ydCB7RW51bURlc2NyaXB0b3IsIE1vZGVsRGVzY3JpcHRvcn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9tb2RlbCc7XG5pbXBvcnQge0lUYWJsZURhdGFQcm92aWRlciwgVGFibGVEZXNjcmlwdG9ySW5zdH0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy90YWJsZS9hcGknO1xuXG5pbXBvcnQge1RhYmxldmlld0Rlc2NyaXB0b3JJbnN0fSBmcm9tICcuLi8uLi90YWJsZXZpZXcvZGVzY3JpcHRvcnMvdGFibGV2aWV3LmRlc2NyaXB0b3InO1xuaW1wb3J0IHtGaWVsZHNNYW5hZ2VBZGRGaWVsZExvb2t1cE9wdHMsIElGaWVsZHNNYW5hZ2VXaXRoR2V0RmllbGR9IGZyb20gJy4uL21vZGVscy9lZGl0b3ItZmllbGRzLm1vZGVsJztcbmltcG9ydCB7RURJVE9SX0RFRkFVTFRfR1JPVVBfTkFNRSwgVGFibGV2aWV3RWRpdG9yVHlwZUVudW19IGZyb20gJy4uL21vZGVscy9lZGl0b3IubW9kZWwnO1xuaW1wb3J0IHtGb3JtVmFsaWRhdGlvbk1lc3NhZ2UsIEZvcm1WYWxpZGF0b3J9IGZyb20gJy4uL21vZGVscy9maWVsZC12YWxpZGF0aW9uLm1vZGVsJztcbmltcG9ydCB7Rm9ybUV2ZW50LCBGb3JtRXZlbnREYXRhLCBGb3JtRXZlbnRUeXBlRW51bX0gZnJvbSAnLi4vbW9kZWxzL2Zvcm0tZWRpdG9yLmV2ZW50JztcbmltcG9ydCB7SUZvcm1FZGl0b3JDb21wb25lbnR9IGZyb20gJy4uL21vZGVscy9mb3JtLWVkaXRvci5pbnRlcmZhY2UnO1xuaW1wb3J0IHtGaWVsZEFjdGlvbkRlc2NyaXB0b3J9IGZyb20gJy4vZmllbGQtYWN0aW9uLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtBRmllbGREZXNjcmlwdG9yfSBmcm9tICcuL2ZpZWxkLWJhc2UuZGVzY3JpcHRvcic7XG5pbXBvcnQge0ZpZWxkR3JvdXBEZXNjcmlwdG9yLCBGaWVsZFRhYkdyb3VwRGVzY3JpcHRvcn0gZnJvbSAnLi9maWVsZC1ncm91cC5kZXNjcmlwdG9yJztcbmltcG9ydCB7RmllbGRMb29rdXBEZXNjcmlwdG9yLCBGaWVsZExvb2t1cEVudW1EZXNjcmlwdG9yLCBmaWVsZExvb2t1cEdldFByb3ZpZGVyQ2ZnT2JqfSBmcm9tICcuL2ZpZWxkLWxvb2t1cC5kZXNjcmlwdG9yJztcbmltcG9ydCB7RmllbGRNYW55RWRpdG9yRGVzY3JpcHRvciwgRmllbGRNYW55VG9NYW55RWRpdG9yRGVzY3JpcHRvciwgZmllbGRNYW55VG9NYW55R2V0UHJvdmlkZXJDZmdPYmp9IGZyb20gJy4vZmllbGQtbWFueS5kZXNjcmlwdG9yJztcbmltcG9ydCB7RmllbGRWYWxpZGF0aW9uRGVzY3JpcHRvck9wdHNUeXBlfSBmcm9tICcuL2ZpZWxkLXZhbGlkYXRpb24uZGVzY3JpcHRvcic7XG5pbXBvcnQge0ZpZWxkSW5wdXREZXNjcmlwdG9yLCBGaWVsZElucHV0RGVzY3JpcHRvclR5cGV9IGZyb20gJy4vZmllbGQuZGVzY3JpcHRvcic7XG5pbXBvcnQge0VkaXRvckRlc2NyaXB0b3JOZXN0ZWRPYmplY3RXcmFwcGVyfSBmcm9tICcuL3dyYXBwZXJzL2VkaXRvci1kZXNjcmlwdG9yLW5lc3RlZC1vYmplY3Qtd3JhcHBlcic7XG5cbmV4cG9ydCBjbGFzcyBFZGl0b3JEZXNjcmlwdG9ySW5zdDxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWwgPSB1bmRlZmluZWQ+XG4gICAgaW1wbGVtZW50cyBJRWRpdG9yRGVzY3JpcHRvcjxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+LCBJRmllbGRzTWFuYWdlV2l0aEdldEZpZWxkPEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD5cbntcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGRlZmF1bHRHcm91cE5hbWUgPSBFRElUT1JfREVGQVVMVF9HUk9VUF9OQU1FO1xuXG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIHJlYWRvbmx5IF9tb2RlbDogTW9kZWxEZXNjcmlwdG9yPEVkaXRvck1vZGVsPjtcbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgcmVhZG9ubHkgX3RhYmxldmlld0VkaXRvclR5cGU6IFRhYmxldmlld0VkaXRvclR5cGVFbnVtO1xuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCByZWFkb25seSBfdGFiczogQXJyYXk8RmllbGRUYWJHcm91cERlc2NyaXB0b3I8RWRpdG9yTW9kZWw+PiA9IFtdO1xuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCByZWFkb25seSBfZ3JvdXBzOiBBcnJheTxGaWVsZEdyb3VwRGVzY3JpcHRvcjxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+PiA9IFtdO1xuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfZmllbGRzOiBBcnJheTxBRmllbGREZXNjcmlwdG9yPGFueSwgRWRpdG9yTW9kZWw+PiA9IFtdO1xuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfY3VycmVudFRhYkdyb3VwPzogRmllbGRUYWJHcm91cERlc2NyaXB0b3I8RWRpdG9yTW9kZWw+O1xuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfY3VycmVudEdyb3VwPzogRmllbGRHcm91cERlc2NyaXB0b3I8RWRpdG9yTW9kZWw+O1xuXG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF9hdXRvU2F2ZT86IGJvb2xlYW47XG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF9hdXRvU2F2ZUlkZW50aWZpZXI/OiBzdHJpbmc7XG5cbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgX2F1dG9mb2N1c09uRmllbGQ/OiBib29sZWFuO1xuXG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF9pc0xvY2FsaXplZCA9IGZhbHNlO1xuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfbG9jYWxpemF0aW9uTG9jYWxlUHJvcGVydHk/OiBzdHJpbmc7XG4gICAgLyoqIEBpZ25vcmUgKi8gcHJvdGVjdGVkIF9sb2NhbGl6YXRpb25Nb2RlbD86IE1vZGVsRGVzY3JpcHRvcjxhbnk+O1xuICAgIC8qKiBAaWdub3JlICovIHByb3RlY3RlZCBfbG9jYWxpemF0aW9uTG9jYWxpemF0aW9uUHJvcGVydHk/OiBzdHJpbmc7XG5cbiAgICAvKiogQGlnbm9yZSAqLyBwcm90ZWN0ZWQgcmVhZG9ubHkgX2V2ZW50c1N1YmplY3QgPSBuZXcgU3ViamVjdDxGb3JtRXZlbnQ8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPj4oKTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgbmV3IGluc3RhbmNlIG9mIGVkaXRvciBkZXNjcmlwdG9yLlxuICAgICAqIEBwYXJhbSBtb2RlbCBNb2RlbCBkZXNjcmlwdG9yLlxuICAgICAqIEBwYXJhbSB0YWJsZXZpZXdFZGl0b3JUeXBlIFR5cGUgb2YgZWRpdG9yIGluIHRhYmxldmlldyAoYWRkLCBlZGl0LCB2aWV3IG9yIG5vbmUpLlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihtb2RlbDogTW9kZWxEZXNjcmlwdG9yPEVkaXRvck1vZGVsPiwgdGFibGV2aWV3RWRpdG9yVHlwZSA9IFRhYmxldmlld0VkaXRvclR5cGVFbnVtLk5vbmUpIHtcbiAgICAgICAgdGhpcy5fbW9kZWwgPSBtb2RlbDtcbiAgICAgICAgdGhpcy5fdGFibGV2aWV3RWRpdG9yVHlwZSA9IHRhYmxldmlld0VkaXRvclR5cGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTW9kZWwgZGVzY3JpcHRvciBmb3IgZWRpdG9yLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgbW9kZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tb2RlbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFZGl0b3IncyB0YWJzLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgdGFicygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYnM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRWRpdG9yJ3MgZmllbGRzLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgZmllbGRzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmllbGRzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFR5cGUgb2YgZWRpdG9yIGZvciB0YWJsZXZpZXcuXG4gICAgICovXG4gICAgcHVibGljIGdldCB0YWJsZXZpZXdFZGl0b3JUeXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGV2aWV3RWRpdG9yVHlwZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJZiBlZGl0b3IgaXMgZGlzYWJsZWQuXG4gICAgICovXG4gICAgcHVibGljIGdldCBkaXNhYmxlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXNMb2NhbGl6ZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0xvY2FsaXplZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGxvY2FsaXphdGlvbkxvY2FsZVByb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbG9jYWxpemF0aW9uTG9jYWxlUHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBsb2NhbGl6YXRpb25Mb2NhbGl6YXRpb25Qcm9wZXJ0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvY2FsaXphdGlvbkxvY2FsaXphdGlvblByb3BlcnR5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbG9jYWxpemF0aW9uTW9kZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sb2NhbGl6YXRpb25Nb2RlbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGF1dG9TYXZlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXV0b1NhdmU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhdXRvU2F2ZUlkZW50aWZpZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hdXRvU2F2ZUlkZW50aWZpZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhdXRvZm9jdXNPbkZpZWxkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXV0b2ZvY3VzT25GaWVsZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEaXZlcyBpbnRvIG5lc3RlZCBvYmplY3QgdG8gYWRkIGZpZWxkcyBmcm9tIHRoZSBuZXN0ZWQgb2JqZWN0IG9uIHByb3BlcnR5LlxuICAgICAqXG4gICAgICogQGV4cGVyaW1lbnRhbFxuICAgICAqXG4gICAgICogQHBhcmFtIHByb3BlcnR5IE1vZGVsIHByb3BlcnR5IG5hbWUuXG4gICAgICovXG4gICAgcHVibGljIG5lc3RlZDxQcm9wZXJ0eSBleHRlbmRzIGtleW9mIEVkaXRvck1vZGVsPihwcm9wZXJ0eTogUHJvcGVydHkpOiBFZGl0b3JEZXNjcmlwdG9yTmVzdGVkT2JqZWN0V3JhcHBlcjxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWwsIE5vbk51bGxhYmxlPEVkaXRvck1vZGVsW1Byb3BlcnR5XT4+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBFZGl0b3JEZXNjcmlwdG9yTmVzdGVkT2JqZWN0V3JhcHBlcih0aGlzLCBwcm9wZXJ0eSBhcyBzdHJpbmcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgbmV3IHRhYiBncm91cC4gTmV4dCBhZGRlZCBmaWVsZHMgYXJlIGFkZGVkIHRvIG5ld2x5IGNyZWF0ZWQgdGFiIGdyb3VwLlxuICAgICAqIEBwYXJhbSBuYW1lIE5hbWUgb2YgdGhlIGdyb3VwLlxuICAgICAqIEBwYXJhbSB0aXRsZSBUaXRsZSBrZXkgZm9yIHRoZSB0YWIuN0ByZXR1cm4gTmV3bHkgY3JlYXRlZCBncm91cCBkZXNjcmlwdG9yLlxuICAgICAqIEByZXR1cm4gTmV3bHkgY3JlYXRlZCBncm91cCBkZXNjcmlwdG9yLlxuICAgICAqL1xuICAgIHB1YmxpYyBhZGRUYWJHcm91cChuYW1lOiBzdHJpbmcsIHRpdGxlPzogc3RyaW5nKTogRmllbGRUYWJHcm91cERlc2NyaXB0b3I8RWRpdG9yTW9kZWw+IHtcbiAgICAgICAgY29uc3QgdGFiR3JvdXAgPSBuZXcgRmllbGRUYWJHcm91cERlc2NyaXB0b3I8RWRpdG9yTW9kZWw+KG5hbWUpO1xuICAgICAgICB0YWJHcm91cC53aXRoVGl0bGUodGl0bGUpO1xuICAgICAgICB0aGlzLmNyZWF0ZVRhYkdyb3VwRGVzY3JpcHRvcih0YWJHcm91cCk7XG4gICAgICAgIHJldHVybiB0YWJHcm91cDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIG5ldyB0YWIgZ3JvdXAuIE5leHQgYWRkZWQgZmllbGRzIGFyZSBhZGRlZCB0byBuZXdseSBjcmVhdGVkIHRhYiBncm91cC5cbiAgICAgKiBAcGFyYW0gbmFtZSBOYW1lIG9mIHRoZSBncm91cC5cbiAgICAgKiBAcGFyYW0gdGl0bGUgVGl0bGUga2V5IGZvciB0aGUgdGFiLjdAcmV0dXJuIE5ld2x5IGNyZWF0ZWQgZ3JvdXAgZGVzY3JpcHRvci5cbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aFRhYkdyb3VwKG5hbWU6IHN0cmluZywgdGl0bGU/OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5hZGRUYWJHcm91cChuYW1lLCB0aXRsZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgbmV3IGZpZWxkIGdyb3VwLiBOZXh0IGFkZGVkIGZpZWxkcyBhcmUgYWRkZWQgdG8gbmV3bHkgY3JlYXRlZCBmaWVsZCBncm91cC5cbiAgICAgKiBAcGFyYW0gbmFtZSBOYW1lIG9mIHRoZSBncm91cC5cbiAgICAgKiBAcGFyYW0gdGl0bGUgVGl0bGUga2V5IGZvciB0aGUgZ3JvdXAuXG4gICAgICogQHJldHVybiBOZXdseSBjcmVhdGVkIGdyb3VwIGRlc2NyaXB0b3IuXG4gICAgICovXG4gICAgcHVibGljIGFkZEZpZWxkR3JvdXAobmFtZTogc3RyaW5nLCB0aXRsZT86IHN0cmluZyB8IG51bGwpOiBGaWVsZEdyb3VwRGVzY3JpcHRvcjxFZGl0b3JNb2RlbD4ge1xuICAgICAgICBjb25zdCBmaWVsZEdyb3VwID0gbmV3IEZpZWxkR3JvdXBEZXNjcmlwdG9yPEVkaXRvck1vZGVsPihuYW1lKTtcbiAgICAgICAgZmllbGRHcm91cC53aXRoVGl0bGUodGl0bGUpO1xuICAgICAgICB0aGlzLmNyZWF0ZUZpZWxkR3JvdXBEZXNjcmlwdG9yKGZpZWxkR3JvdXApO1xuICAgICAgICByZXR1cm4gZmllbGRHcm91cDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIG5ldyBmaWVsZCBncm91cC4gTmV4dCBhZGRlZCBmaWVsZHMgYXJlIGFkZGVkIHRvIG5ld2x5IGNyZWF0ZWQgZmllbGQgZ3JvdXAuXG4gICAgICogQHBhcmFtIG5hbWUgTmFtZSBvZiB0aGUgZ3JvdXAuXG4gICAgICogQHBhcmFtIHRpdGxlIFRpdGxlIGtleSBmb3IgdGhlIGdyb3VwLlxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoRmllbGRHcm91cChuYW1lOiBzdHJpbmcsIHRpdGxlPzogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuYWRkRmllbGRHcm91cChuYW1lLCB0aXRsZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgZmllbGQgYnkgdGhlIG1vZGVsIHByb3BlcnR5IG5hbWUuXG4gICAgICogQHBhcmFtIHByb3BlcnR5IE1vZGVsIHByb3BlcnR5IG5hbWUuXG4gICAgICovXG4gICAgcHVibGljIGdldEZpZWxkPFByb3BlcnR5IGV4dGVuZHMga2V5b2YgRWRpdG9yTW9kZWwsIEZpZWxkTW9kZWwgPSBOb25OdWxsYWJsZTxFZGl0b3JNb2RlbFtQcm9wZXJ0eV0+LCBGaWVsZFZhbHVlID0gRWRpdG9yTW9kZWxbUHJvcGVydHldPihwcm9wZXJ0eTogUHJvcGVydHkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RmllbGRVbnNhZmU8RmllbGRNb2RlbCwgRmllbGRWYWx1ZT4ocHJvcGVydHkgYXMgc3RyaW5nKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGZpZWxkIGJ5IHRoZSBtb2RlbCBwcm9wZXJ0eSBuYW1lIChVTlNBRkUpLlxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eSBNb2RlbCBwcm9wZXJ0eSBuYW1lLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRGaWVsZFVuc2FmZTxGaWVsZE1vZGVsLCBGaWVsZFZhbHVlID0gRmllbGRNb2RlbD4ocHJvcGVydHk6IHN0cmluZyk6IEFGaWVsZERlc2NyaXB0b3I8RmllbGRNb2RlbCwgRWRpdG9yTW9kZWwsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPiB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmllbGRzLmZpbmQoZiA9PiBmLnByb3BlcnR5ID09PSBwcm9wZXJ0eSkgPz8gbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGZpZWxkIGJ5IHRoZSBtb2RlbCBwcm9wZXJ0eSBuYW1lLlxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eSBNb2RlbCBwcm9wZXJ0eSBuYW1lLlxuICAgICAqL1xuICAgIHB1YmxpYyByZW1vdmVGaWVsZChwcm9wZXJ0eToga2V5b2YgRWRpdG9yTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVtb3ZlRmllbGRVbnNhZmUocHJvcGVydHkgYXMgc3RyaW5nKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGZpZWxkIGJ5IHRoZSBtb2RlbCBwcm9wZXJ0eSBuYW1lIChVTlNBRkUpLlxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eSBNb2RlbCBwcm9wZXJ0eSBuYW1lLlxuICAgICAqL1xuICAgIHB1YmxpYyByZW1vdmVGaWVsZFVuc2FmZShwcm9wZXJ0eTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZpZWxkSWR4ID0gdGhpcy5fZmllbGRzLmZpbmRJbmRleChmID0+IGYucHJvcGVydHkgPT09IHByb3BlcnR5KTtcbiAgICAgICAgaWYgKGZpZWxkSWR4IDwgMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IENvbW1vbnNJbnRlcm5hbEVycm9yKGBGaWVsZCAke3Byb3BlcnR5fSBkb2VzIG5vdCBleGlzdC5gLCB7bmFtZTogJ0VkaXRvckRlc2NyaXB0b3JFcnJvcid9KTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIHRoaXMuX2dyb3Vwcykge1xuICAgICAgICAgICAgY29uc3QgZ3JvdXBGaWVsZElkeCA9IGdyb3VwLmZpZWxkcy5maW5kSW5kZXgoZiA9PiBmIGluc3RhbmNlb2YgQUZpZWxkRGVzY3JpcHRvciAmJiBmLnByb3BlcnR5ID09PSBwcm9wZXJ0eSk7XG4gICAgICAgICAgICBpZiAoZ3JvdXBGaWVsZElkeCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgZ3JvdXAuZmllbGRzLnNwbGljZShncm91cEZpZWxkSWR4LCAxKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9maWVsZHMuc3BsaWNlKGZpZWxkSWR4LCAxKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGZpZWxkIGJ5IHRoZSBkZXNjcmlwdG9yLlxuICAgICAqIEBwYXJhbSBmaWVsZCBGaWVsZCBkZXNjcmlwdG9yLlxuICAgICAqL1xuICAgIHB1YmxpYyBhZGRGaWVsZERlc2NyaXB0b3I8RmllbGRNb2RlbCwgRmllbGRWYWx1ZSA9IEZpZWxkTW9kZWw+KGZpZWxkOiBBRmllbGREZXNjcmlwdG9yPEZpZWxkTW9kZWwsIEVkaXRvck1vZGVsLCBGaWVsZFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD4pOiB0aGlzIHtcbiAgICAgICAgaWYgKHRoaXMuX2ZpZWxkcy5zb21lKGYgPT4gZi5wcm9wZXJ0eSA9PT0gZmllbGQucHJvcGVydHkpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoYEZpZWxkICcke2ZpZWxkLnByb3BlcnR5fScgYWxyZWFkeSBleGlzdHMuYCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jcmVhdGVEZWZhdWx0R3JvdXAoKTtcbiAgICAgICAgdGhpcy5fZmllbGRzLnB1c2goZmllbGQpO1xuICAgICAgICB0aGlzLl9jdXJyZW50R3JvdXA/LmFkZEZpZWxkKGZpZWxkKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBmaWVsZCBieSB0aGUgbW9kZWwgcHJvcGVydHkgbmFtZS5cbiAgICAgKiBAcGFyYW0gcHJvcGVydHkgTW9kZWwgcHJvcGVydHkgbmFtZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkRmllbGQ8UHJvcGVydHkgZXh0ZW5kcyBrZXlvZiBFZGl0b3JNb2RlbCwgRmllbGRNb2RlbCA9IE5vbk51bGxhYmxlPEVkaXRvck1vZGVsW1Byb3BlcnR5XT4sIEZpZWxkVmFsdWUgPSBFZGl0b3JNb2RlbFtQcm9wZXJ0eV0+KHByb3BlcnR5OiBQcm9wZXJ0eSkge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRGaWVsZFVuc2FmZTxGaWVsZE1vZGVsLCBGaWVsZFZhbHVlPihwcm9wZXJ0eSBhcyBzdHJpbmcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgZmllbGQgYnkgdGhlIG1vZGVsIHByb3BlcnR5IG5hbWUgKFVOU0FGRSkuIFByb3BlcnR5IGlzIG5vdCBjaGVja2VkIG9uIGVkaXRvciBtb2RlbC5cbiAgICAgKiBVc2Uge2FkZEZpZWxkfSBmb3Igc2FmZSB1c2FnZS5cbiAgICAgKiBAcGFyYW0gcHJvcGVydHkgTW9kZWwgcHJvcGVydHkgbmFtZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkRmllbGRVbnNhZmU8RmllbGRNb2RlbCA9IEZpZWxkSW5wdXREZXNjcmlwdG9yVHlwZSwgRmllbGRWYWx1ZSA9IEZpZWxkTW9kZWw+KHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgZmllbGQgPSBuZXcgRmllbGRJbnB1dERlc2NyaXB0b3I8RWRpdG9yTW9kZWwsIEZpZWxkTW9kZWwsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPihwcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuYWRkRmllbGREZXNjcmlwdG9yPEZpZWxkTW9kZWwsIEZpZWxkVmFsdWU+KGZpZWxkKTtcbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRmllbGRzKC4uLnByb3BlcnRpZXM6IChrZXlvZiBFZGl0b3JNb2RlbClbXSk6IHRoaXMge1xuICAgICAgICBwcm9wZXJ0aWVzLmZvckVhY2gocCA9PiB0aGlzLmFkZEZpZWxkKHApKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpZWxkQWN0aW9uKGFjdGlvbk5hbWU6IHN0cmluZyk6IEZpZWxkQWN0aW9uRGVzY3JpcHRvcjxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+IHtcbiAgICAgICAgY29uc3QgZmllbGQgPSBuZXcgRmllbGRBY3Rpb25EZXNjcmlwdG9yPEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4oYWN0aW9uTmFtZSk7XG4gICAgICAgIHRoaXMuYWRkRmllbGREZXNjcmlwdG9yKGZpZWxkKTtcbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgbG9va3VwIGZpZWxkLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtQcm9wZXJ0eX0gcHJvcGVydHkgLSBUaGUgcHJvcGVydHkga2V5IG9mIHRoZSBlZGl0b3IuXG4gICAgICogQHBhcmFtIHtGaWVsZHNNYW5hZ2VBZGRGaWVsZExvb2t1cE9wdHM8TG9va3VwTW9kZWwsIFNlcnZpY2U+fSBvcHRzIC0gT3B0aW9uYWwgcGFyYW1ldGVycyBjb25maWd1cmluZyB0eXBlIGFuZC9vciBzZXJ2aWNlIHByb3ZpZGVyLlxuICAgICAqIEB0eXBlcGFyYW0gUHJvcGVydHkgLSBUaGUgcHJvcGVydHkga2V5IG9mIHRoZSBFZGl0b3JNb2RlbC5cbiAgICAgKiBAdHlwZXBhcmFtIExvb2t1cE1vZGVsIC0gVGhlIGZpZWxkIG1vZGVsIHR5cGUsIGRlZmF1bHRzIHRvIHRoZSBub24tbnVsbGFibGUgdHlwZSBvZiB0aGUgZWRpdG9yJ3MgcHJvcGVydHkuXG4gICAgICogQHR5cGVwYXJhbSBTZXJ2aWNlIC0gU2VydmljZSB1c2VkIGZvciBkYXRhIHByb3ZpZGVyLlxuICAgICAqIEB0eXBlcGFyYW0gRmllbGRWYWx1ZSAtIFRoZSB2YWx1ZSB0eXBlIG9mIGZpZWxkIG9uIGVkaXRvci5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtGaWVsZExvb2t1cERlc2NyaXB0b3I8TG9va3VwTW9kZWwsIEVkaXRvck1vZGVsLCBTZXJ2aWNlLCBGaWVsZFZhbHVlPn0gLSBUaGUgZmllbGQgbG9va3VwIGRlc2NyaXB0b3IuXG4gICAgICovXG4gICAgcHVibGljIGFkZEZpZWxkTG9va3VwPFxuICAgICAgICBQcm9wZXJ0eSBleHRlbmRzIGtleW9mIEVkaXRvck1vZGVsLFxuICAgICAgICBTZXJ2aWNlID0gdW5kZWZpbmVkLFxuICAgICAgICBMb29rdXBNb2RlbCBleHRlbmRzIE5vbk51bGxhYmxlPEVkaXRvck1vZGVsW1Byb3BlcnR5XT4gPSBOb25OdWxsYWJsZTxFZGl0b3JNb2RlbFtQcm9wZXJ0eV0+LFxuICAgICAgICBGaWVsZFZhbHVlID0gRWRpdG9yTW9kZWxbUHJvcGVydHldXG4gICAgPihwcm9wZXJ0eTogUHJvcGVydHksIG9wdHM/OiBGaWVsZHNNYW5hZ2VBZGRGaWVsZExvb2t1cE9wdHM8TG9va3VwTW9kZWwsIFNlcnZpY2U+KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZEZpZWxkTG9va3VwVW5zYWZlPExvb2t1cE1vZGVsLCBTZXJ2aWNlLCBGaWVsZFZhbHVlPihwcm9wZXJ0eSBhcyBzdHJpbmcsIG9wdHMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFtVTlNBRkVdIEFkZHMgbG9va3VwIGZpZWxkLlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgVU5TQUZFIGJlY2F1c2UgcHJvcGVydHkgaXMgbm90IHR5cGUtY2hlY2tlZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wZXJ0eSBNb2RlbCBwcm9wZXJ0eSBuYW1lLlxuICAgICAqIEBwYXJhbSB7RmllbGRzTWFuYWdlQWRkRmllbGRMb29rdXBPcHRzPExvb2t1cE1vZGVsLCBTZXJ2aWNlPn0gb3B0cyAtIE9wdGlvbmFsIHBhcmFtZXRlcnMgY29uZmlndXJpbmcgdHlwZSBhbmQvb3Igc2VydmljZSBwcm92aWRlci5cbiAgICAgKiBAdHlwZXBhcmFtIExvb2t1cE1vZGVsIC0gVGhlIGZpZWxkIG1vZGVsIHR5cGUsIGRlZmF1bHRzIHRvIHRoZSBub24tbnVsbGFibGUgdHlwZSBvZiB0aGUgZWRpdG9yJ3MgcHJvcGVydHkuXG4gICAgICogQHR5cGVwYXJhbSBTZXJ2aWNlIC0gU2VydmljZSB1c2VkIGZvciBkYXRhIHByb3ZpZGVyLlxuICAgICAqIEB0eXBlcGFyYW0gRmllbGRWYWx1ZSAtIFRoZSB2YWx1ZSB0eXBlIG9mIGZpZWxkIG9uIGVkaXRvci5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtGaWVsZExvb2t1cERlc2NyaXB0b3I8TG9va3VwTW9kZWwsIEVkaXRvck1vZGVsLCBTZXJ2aWNlLCBGaWVsZFZhbHVlPn0gLSBUaGUgZmllbGQgbG9va3VwIGRlc2NyaXB0b3IuXG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIHB1YmxpYyBhZGRGaWVsZExvb2t1cFVuc2FmZTxMb29rdXBNb2RlbCwgU2VydmljZSA9IHVuZGVmaW5lZCwgRmllbGRWYWx1ZSA9IExvb2t1cE1vZGVsPihwcm9wZXJ0eTogc3RyaW5nLCBvcHRzPzogRmllbGRzTWFuYWdlQWRkRmllbGRMb29rdXBPcHRzPExvb2t1cE1vZGVsLCBTZXJ2aWNlPikge1xuICAgICAgICBjb25zdCBmaWVsZCA9IG5ldyBGaWVsZExvb2t1cERlc2NyaXB0b3I8TG9va3VwTW9kZWwsIEVkaXRvck1vZGVsLCBTZXJ2aWNlLCBGaWVsZFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD4ocHJvcGVydHksIHtcbiAgICAgICAgICAgIC4uLihvcHRzPy5zZXJ2aWNlUHJvdmlkZXIgPyBmaWVsZExvb2t1cEdldFByb3ZpZGVyQ2ZnT2JqKG9wdHMuc2VydmljZVByb3ZpZGVyKSA6IHt9KVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hZGRGaWVsZERlc2NyaXB0b3IoZmllbGQpO1xuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpZWxkTG9va3VwRW51bTxQcm9wZXJ0eSBleHRlbmRzIGtleW9mIEVkaXRvck1vZGVsLCBFbnVtIGV4dGVuZHMgTm9uTnVsbGFibGU8RWRpdG9yTW9kZWxbUHJvcGVydHldPj4oXG4gICAgICAgIHByb3BlcnR5OiBrZXlvZiBFZGl0b3JNb2RlbCxcbiAgICAgICAgZW51bURlc2M6IEVudW1EZXNjcmlwdG9yPEVudW0+LFxuICAgICAgICBvcHRpb25zPzogQXJyYXk8RW51bT5cbiAgICApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkRmllbGRMb29rdXBFbnVtVW5zYWZlPEVudW0+KHByb3BlcnR5IGFzIHN0cmluZywgZW51bURlc2MsIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgZW51bSBsb29rdXAgZmllbGQuXG4gICAgICogQHBhcmFtIHByb3BlcnR5IE1vZGVsJ3MgcHJvcGVydHkgbmFtZS5cbiAgICAgKiBAcGFyYW0gZW51bURlc2MgVHlwZSBvZiBlbnVtIG9yIGVudW0gZGVzY3JpcHRvci5cbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBQcm92aWRlcyBzdWJzZXQgb2YgZW51bSdzIGF2YWlsYWJsZSBjb25zdGFudHMuXG4gICAgICovXG4gICAgcHVibGljIGFkZEZpZWxkTG9va3VwRW51bVVuc2FmZTxFbnVtID0gRW51bUNvbnN0YW50VHlwZT4ocHJvcGVydHk6IHN0cmluZywgZW51bURlc2M6IEVudW1EZXNjcmlwdG9yPEVudW0+LCBvcHRpb25zPzogQXJyYXk8RW51bT4pIHtcbiAgICAgICAgY29uc3QgZmllbGQgPSBuZXcgRmllbGRMb29rdXBFbnVtRGVzY3JpcHRvcjxFbnVtLCBFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+KHByb3BlcnR5LCBlbnVtRGVzYywgb3B0aW9ucyk7XG4gICAgICAgIHRoaXMuYWRkRmllbGREZXNjcmlwdG9yKGZpZWxkKTtcbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgdGFibGUvZGV0YWlscy9hZGQvZWRpdCBmaWVsZCBmb3Igb25lLXRvLW1hbnkgKDE6bikgcmVsYXRpb25zLlxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eSBNb2RlbCdzIHByb3BlcnR5IG5hbWUuXG4gICAgICogQHBhcmFtIHRhYmxldmlld0Rlc2NyaXB0b3IgVGFibGV2aWV3IGRlc2NyaXB0b3IgZm9yIHJlbGF0ZWQgbW9kZWwuXG4gICAgICovXG4gICAgcHVibGljIGFkZEZpZWxkTWFueUVkaXRvcjxQcm9wZXJ0eSBleHRlbmRzIGtleW9mIEVkaXRvck1vZGVsLCBGaWVsZE1vZGVsID0gQXJyYXlJdGVtVHlwZTxFZGl0b3JNb2RlbFtQcm9wZXJ0eV0+LCBGaWVsZFZhbHVlID0gRWRpdG9yTW9kZWxbUHJvcGVydHldPihcbiAgICAgICAgcHJvcGVydHk6IFByb3BlcnR5LFxuICAgICAgICB0YWJsZXZpZXdEZXNjcmlwdG9yOiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxGaWVsZE1vZGVsLCBhbnksIGFueSwgRWRpdG9yTW9kZWwsIEZpZWxkTW9kZWwsIEZpZWxkTW9kZWwsIEZpZWxkTW9kZWwsIEZpZWxkTW9kZWw+XG4gICAgKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZEZpZWxkTWFueUVkaXRvclVuc2FmZTxGaWVsZE1vZGVsLCBGaWVsZFZhbHVlPihwcm9wZXJ0eSBhcyBzdHJpbmcsIHRhYmxldmlld0Rlc2NyaXB0b3IpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgdGFibGUvZGV0YWlscy9hZGQvZWRpdCBmaWVsZCBmb3Igb25lLXRvLW1hbnkgKDE6bikgcmVsYXRpb25zIChVTlNBRkUpLlxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eSBNb2RlbCdzIHByb3BlcnR5IG5hbWUuXG4gICAgICogQHBhcmFtIHRhYmxldmlld0Rlc2NyaXB0b3IgVGFibGV2aWV3IGRlc2NyaXB0b3IgZm9yIHJlbGF0ZWQgbW9kZWwuXG4gICAgICovXG4gICAgcHVibGljIGFkZEZpZWxkTWFueUVkaXRvclVuc2FmZTxGaWVsZE1vZGVsLCBGaWVsZFZhbHVlID0gRmllbGRNb2RlbFtdPihcbiAgICAgICAgcHJvcGVydHk6IHN0cmluZyxcbiAgICAgICAgdGFibGV2aWV3RGVzY3JpcHRvcjogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8RmllbGRNb2RlbCwgYW55LCBhbnksIEVkaXRvck1vZGVsLCBGaWVsZE1vZGVsLCBGaWVsZE1vZGVsLCBGaWVsZE1vZGVsLCBGaWVsZE1vZGVsPlxuICAgICk6IEZpZWxkTWFueUVkaXRvckRlc2NyaXB0b3I8RmllbGRNb2RlbCwgRWRpdG9yTW9kZWwsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPiB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gbmV3IEZpZWxkTWFueUVkaXRvckRlc2NyaXB0b3I8RmllbGRNb2RlbCwgRWRpdG9yTW9kZWwsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPihwcm9wZXJ0eSwgdGFibGV2aWV3RGVzY3JpcHRvcik7XG4gICAgICAgIHRoaXMuYWRkRmllbGREZXNjcmlwdG9yKGZpZWxkKTtcbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRGaWVsZE1hbnlUb01hbnlFZGl0b3I8UHJvcGVydHkgZXh0ZW5kcyBrZXlvZiBFZGl0b3JNb2RlbCwgU2VydmljZVR5cGUsIEZpZWxkTW9kZWwgPSBBcnJheUl0ZW1UeXBlPEVkaXRvck1vZGVsW1Byb3BlcnR5XT4sIEZpZWxkVmFsdWUgPSBFZGl0b3JNb2RlbFtQcm9wZXJ0eV0+KFxuICAgICAgICBwcm9wZXJ0eTogUHJvcGVydHksXG4gICAgICAgIG1haW5UYWJsZURlc2NyaXB0b3I6IFRhYmxlRGVzY3JpcHRvckluc3Q8RmllbGRNb2RlbCwgYW55LCBhbnk+LFxuICAgICAgICBsb29rdXBUYWJsZURlc2NyaXB0b3I6IFRhYmxlRGVzY3JpcHRvckluc3Q8RmllbGRNb2RlbCwgYW55LCBhbnk+LFxuICAgICAgICBsb29rdXBEYXRhUHJvdmlkZXI6IElUYWJsZURhdGFQcm92aWRlcjxGaWVsZE1vZGVsLCBTZXJ2aWNlVHlwZSwgYW55LCBhbnk+XG4gICAgKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZEZpZWxkTWFueVRvTWFueUVkaXRvclVuc2FmZTxGaWVsZE1vZGVsLCBTZXJ2aWNlVHlwZSwgRmllbGRWYWx1ZT4ocHJvcGVydHkgYXMgc3RyaW5nLCBtYWluVGFibGVEZXNjcmlwdG9yLCBsb29rdXBUYWJsZURlc2NyaXB0b3IsIGxvb2t1cERhdGFQcm92aWRlcik7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpZWxkTWFueVRvTWFueUVkaXRvclVuc2FmZTxGaWVsZE1vZGVsLCBTZXJ2aWNlVHlwZSwgRmllbGRWYWx1ZSA9IEZpZWxkTW9kZWxbXT4oXG4gICAgICAgIHByb3BlcnR5OiBzdHJpbmcsXG4gICAgICAgIG1haW5UYWJsZURlc2NyaXB0b3I6IFRhYmxlRGVzY3JpcHRvckluc3Q8RmllbGRNb2RlbCwgYW55LCBhbnk+LFxuICAgICAgICBsb29rdXBUYWJsZURlc2NyaXB0b3I6IFRhYmxlRGVzY3JpcHRvckluc3Q8RmllbGRNb2RlbCwgYW55LCBhbnk+LFxuICAgICAgICBsb29rdXBEYXRhUHJvdmlkZXI6IElUYWJsZURhdGFQcm92aWRlcjxGaWVsZE1vZGVsLCBTZXJ2aWNlVHlwZSwgYW55LCBhbnk+XG4gICAgKTogRmllbGRNYW55VG9NYW55RWRpdG9yRGVzY3JpcHRvcjxGaWVsZE1vZGVsLCBFZGl0b3JNb2RlbCwgU2VydmljZVR5cGUsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPiB7XG4gICAgICAgIGNvbnN0IGNmZyA9IGZpZWxkTWFueVRvTWFueUdldFByb3ZpZGVyQ2ZnT2JqKGxvb2t1cERhdGFQcm92aWRlcik7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gbmV3IEZpZWxkTWFueVRvTWFueUVkaXRvckRlc2NyaXB0b3I8RmllbGRNb2RlbCwgRWRpdG9yTW9kZWwsIFNlcnZpY2VUeXBlLCBGaWVsZFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD4oXG4gICAgICAgICAgICBwcm9wZXJ0eSxcbiAgICAgICAgICAgIG1haW5UYWJsZURlc2NyaXB0b3IsXG4gICAgICAgICAgICBsb29rdXBUYWJsZURlc2NyaXB0b3IsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLi4uY2ZnXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuYWRkRmllbGREZXNjcmlwdG9yKGZpZWxkKTtcbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERpc2FibGVzIGZpZWxkIG9uIGVkaXRvci5cbiAgICAgKiBAcGFyYW0gZGlzYWJsZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aERpc2FibGVkKGRpc2FibGVkID0gdHJ1ZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGRpc2FibGVkO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGdyb3VwIHZhbGlkYXRvciB0byBlZGl0b3IuXG4gICAgICogQHBhcmFtIG5hbWUgTmFtZSBvZiB0aGUgdmFsaWRhdGlvbi5cbiAgICAgKiBAcGFyYW0gdmFsaWRhdG9yIEZpZWxkIHZhbGlkYXRvciBmdW5jdGlvbi5cbiAgICAgKiBAcGFyYW0gbWVzc2FnZSBGaWVsZCB2YWxpZGF0aW9uIG1lc3NhZ2UuXG4gICAgICogQHBhcmFtIG9wdHMgQWRkaXRpb25hbCBjb25maWd1cmF0aW9uIGZvciB2YWxpZGF0aW9uLlxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoVmFsaWRhdGlvbjxWYWx1ZSA9IEVkaXRvck1vZGVsPihcbiAgICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgICB2YWxpZGF0b3I/OiBGb3JtVmFsaWRhdG9yPFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD4sXG4gICAgICAgIG1lc3NhZ2U/OiBGb3JtVmFsaWRhdGlvbk1lc3NhZ2U8VmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPixcbiAgICAgICAgb3B0cz86IEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3JPcHRzVHlwZTxrZXlvZiBFZGl0b3JNb2RlbD5cbiAgICApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2l0aFZhbGlkYXRpb25VbnNhZmUobmFtZSwgdmFsaWRhdG9yLCBtZXNzYWdlLCBvcHRzIGFzIEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3JPcHRzVHlwZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBncm91cCB2YWxpZGF0b3IgdG8gZWRpdG9yLlxuICAgICAqIEBwYXJhbSBuYW1lIE5hbWUgb2YgdGhlIHZhbGlkYXRpb24uXG4gICAgICogQHBhcmFtIHZhbGlkYXRvciBGaWVsZCB2YWxpZGF0b3IgZnVuY3Rpb24uXG4gICAgICogQHBhcmFtIG1lc3NhZ2UgRmllbGQgdmFsaWRhdGlvbiBtZXNzYWdlLlxuICAgICAqIEBwYXJhbSBvcHRzIEFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBmb3IgdmFsaWRhdGlvbi5cbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aFZhbGlkYXRpb25VbnNhZmU8VmFsdWUgPSBFZGl0b3JNb2RlbD4oXG4gICAgICAgIG5hbWU6IHN0cmluZyxcbiAgICAgICAgdmFsaWRhdG9yPzogRm9ybVZhbGlkYXRvcjxWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+LFxuICAgICAgICBtZXNzYWdlPzogRm9ybVZhbGlkYXRpb25NZXNzYWdlPFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD4sXG4gICAgICAgIG9wdHM/OiBGaWVsZFZhbGlkYXRpb25EZXNjcmlwdG9yT3B0c1R5cGVcbiAgICApIHtcbiAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRHcm91cCkge1xuICAgICAgICAgICAgdGhpcy5fY3VycmVudEdyb3VwLndpdGhWYWxpZGF0aW9uKG5hbWUsIHZhbGlkYXRvciwgbWVzc2FnZSwgb3B0cyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhBdXRvU2F2ZShlbmFibGVkID0gdHJ1ZSwgYXV0b1NhdmVJZGVudGlmaWVyPzogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2F1dG9TYXZlID0gZW5hYmxlZDtcbiAgICAgICAgdGhpcy5fYXV0b1NhdmVJZGVudGlmaWVyID0gYXV0b1NhdmVJZGVudGlmaWVyO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEF1dG9mb2N1c09uRmllbGQoZW5hYmxlZCA9IHRydWUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fYXV0b2ZvY3VzT25GaWVsZCA9IGVuYWJsZWQ7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjb3B5IG9mIGVkaXRvciBkZXNjcmlwdG9yIG9iamVjdC5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29weSgpOiBFZGl0b3JEZXNjcmlwdG9ySW5zdDxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+IHtcbiAgICAgICAgY29uc3QgZWRpdG9yID0gbmV3IEVkaXRvckRlc2NyaXB0b3JJbnN0PEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4odGhpcy5tb2RlbC5jb3B5KCksIHRoaXMudGFibGV2aWV3RWRpdG9yVHlwZSk7XG5cbiAgICAgICAgZWRpdG9yLl9maWVsZHMgPSB0aGlzLl9maWVsZHMubWFwKGYgPT4gZi5jb3B5KCkpO1xuICAgICAgICBjb25zdCBmaWVsZHNNYXAgPSBlZGl0b3IuZmllbGRzLnJlZHVjZSgobWFwLCBmaWVsZCkgPT4ge1xuICAgICAgICAgICAgbWFwLnNldChmaWVsZC5wcm9wZXJ0eSwgZmllbGQpO1xuICAgICAgICAgICAgcmV0dXJuIG1hcDtcbiAgICAgICAgfSwgbmV3IE1hcDxzdHJpbmcsIGFueT4oKSk7XG5cbiAgICAgICAgZm9yIChjb25zdCB0YWJHcm91cCBvZiB0aGlzLl90YWJzKSB7XG4gICAgICAgICAgICBjb25zdCB0YWJHcm91cENvcHkgPSB0YWJHcm91cC5jb3B5KHRydWUpO1xuICAgICAgICAgICAgLy8gc2V0IGZpZWxkc1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0YWJHcm91cC5maWVsZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBncm91cCA9IHRhYkdyb3VwLmZpZWxkc1tpXTtcbiAgICAgICAgICAgICAgICBjb25zdCBncm91cENvcHkgPSB0YWJHcm91cENvcHkuZmllbGRzW2ldO1xuXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBncm91cC5maWVsZHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmllbGRDb3B5ID0gZmllbGRzTWFwLmdldChncm91cC5maWVsZHNbal0ucHJvcGVydHkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWZpZWxkQ29weSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IENvbW1vbnNJbnRlcm5hbEVycm9yKGBDb3VsZCBub3QgY29weSBlZGl0b3IgZGVzY3JpcHRvcjogZmllbGQgJyR7Z3JvdXAuZmllbGRzW2pdLnByb3BlcnR5fScgKHRhYiAnJHt0YWJHcm91cC5uYW1lfScsIGdyb3VwICR7Z3JvdXAubmFtZX0nKS5gKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBncm91cENvcHkuYWRkRmllbGQoZmllbGRDb3B5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWRpdG9yLl9ncm91cHMucHVzaChncm91cENvcHkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWRpdG9yLl90YWJzLnB1c2godGFiR3JvdXBDb3B5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGVkaXRvci5fY3VycmVudFRhYkdyb3VwID0gZWRpdG9yLl90YWJzLmxlbmd0aCA+IDAgPyBlZGl0b3IuX3RhYnNbZWRpdG9yLl90YWJzLmxlbmd0aCAtIDFdIDogdW5kZWZpbmVkO1xuICAgICAgICBpZiAoZWRpdG9yLl9jdXJyZW50VGFiR3JvdXApIHtcbiAgICAgICAgICAgIGVkaXRvci5fY3VycmVudEdyb3VwID0gZWRpdG9yLl9jdXJyZW50VGFiR3JvdXAuZmllbGRzLmxlbmd0aCA+IDAgPyBlZGl0b3IuX2N1cnJlbnRUYWJHcm91cC5maWVsZHNbZWRpdG9yLl9jdXJyZW50VGFiR3JvdXAuZmllbGRzLmxlbmd0aCAtIDFdIDogdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgZWRpdG9yLl9kaXNhYmxlZCA9IHRoaXMuX2Rpc2FibGVkO1xuICAgICAgICBlZGl0b3IuX2F1dG9TYXZlID0gdGhpcy5fYXV0b1NhdmU7XG4gICAgICAgIGVkaXRvci5fYXV0b1NhdmVJZGVudGlmaWVyID0gdGhpcy5fYXV0b1NhdmVJZGVudGlmaWVyO1xuICAgICAgICBlZGl0b3IuX2F1dG9mb2N1c09uRmllbGQgPSB0aGlzLl9hdXRvZm9jdXNPbkZpZWxkO1xuICAgICAgICBlZGl0b3IuX2lzTG9jYWxpemVkID0gdGhpcy5faXNMb2NhbGl6ZWQ7XG4gICAgICAgIGVkaXRvci5fbG9jYWxpemF0aW9uTG9jYWxlUHJvcGVydHkgPSB0aGlzLl9sb2NhbGl6YXRpb25Mb2NhbGVQcm9wZXJ0eTtcbiAgICAgICAgZWRpdG9yLl9sb2NhbGl6YXRpb25Nb2RlbCA9IHRoaXMuX2xvY2FsaXphdGlvbk1vZGVsO1xuICAgICAgICBlZGl0b3IuX2xvY2FsaXphdGlvbkxvY2FsaXphdGlvblByb3BlcnR5ID0gdGhpcy5fbG9jYWxpemF0aW9uTG9jYWxpemF0aW9uUHJvcGVydHk7XG5cbiAgICAgICAgcmV0dXJuIGVkaXRvcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVkIGdyb3VwIGZyb20gZmllbGQgZ3JvdXAgZGVzY3JpcHRvci5cbiAgICAgKiBAcGFyYW0gZmllbGRHcm91cCBGaWVsZCBncm91cCBkZXNjcmlwdG9yLlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBjcmVhdGVGaWVsZEdyb3VwRGVzY3JpcHRvcihmaWVsZEdyb3VwOiBGaWVsZEdyb3VwRGVzY3JpcHRvcjxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWw+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuY3JlYXRlRGVmYXVsdFRhYkdyb3VwKCk7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRHcm91cCA9IGZpZWxkR3JvdXA7XG4gICAgICAgIHRoaXMuX2dyb3Vwcy5wdXNoKGZpZWxkR3JvdXApO1xuICAgICAgICB0aGlzLl9jdXJyZW50VGFiR3JvdXA/LmFkZEZpZWxkKGZpZWxkR3JvdXApO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIHRhYiBncm91cCBmcm9tIHRhYiBncm91cCBkZXNjcmlwdG9yLlxuICAgICAqIEBwYXJhbSB0YWJHcm91cCBUYWIgZ3JvdXAgZGVzY3JpcHRvci5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgY3JlYXRlVGFiR3JvdXBEZXNjcmlwdG9yKHRhYkdyb3VwOiBGaWVsZFRhYkdyb3VwRGVzY3JpcHRvcjxFZGl0b3JNb2RlbD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fY3VycmVudFRhYkdyb3VwID0gdGFiR3JvdXA7XG4gICAgICAgIHRoaXMuX3RhYnMucHVzaCh0YWJHcm91cCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgZGVmYXVsdCBmaWVsZCBncm91cC5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcml2YXRlIGNyZWF0ZURlZmF1bHRHcm91cCgpIHtcbiAgICAgICAgdGhpcy5jcmVhdGVEZWZhdWx0VGFiR3JvdXAoKTtcbiAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRUYWJHcm91cD8uZmllbGRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5hZGRGaWVsZEdyb3VwKEVkaXRvckRlc2NyaXB0b3JJbnN0LmRlZmF1bHRHcm91cE5hbWUsIG51bGwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBkZWZhdWx0IHRhYiBncm91cC5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcml2YXRlIGNyZWF0ZURlZmF1bHRUYWJHcm91cCgpIHtcbiAgICAgICAgaWYgKHRoaXMuX3RhYnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmFkZFRhYkdyb3VwKEVkaXRvckRlc2NyaXB0b3JJbnN0LmRlZmF1bHRHcm91cE5hbWUsICdnZW5lcmFsLmdlbmVyYWwnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gdGFrZXMgY2FyZSBvZiBkaXNwbGF5aW5nIGNvcnJlY3QvbG9jYWxpemVkIGRhdGEgaW4gdGhlIGVkaXRvclxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eSBwcm9wZXJ0eSB0aGF0IHRlbGxzIHVzIHdoZXJlIG9uIHRoZSBtb2RlbCBhcmUgbG9jYWxpemF0aW9ucyBhY2Nlc3NpYmxlXG4gICAgICogQHBhcmFtIG1vZGVsIE1vZGVsIGZvciBsb2NhbGl6YXRpb25zXG4gICAgICogQHBhcmFtIGxvY2FsZVByb3BlcnR5IHByb3BlcnR5IGJ5IHdoaWNoIHdlIGZpbmQgdGhlIGxvY2FsZVxuICAgICAqL1xuICAgIHB1YmxpYyBsb2NhbGl6ZWQ8UHJvcGVydHkgZXh0ZW5kcyBrZXlvZiBFZGl0b3JNb2RlbCwgTG9jYWxpemF0aW9uTW9kZWwgPSBBcnJheUl0ZW1UeXBlPEVkaXRvck1vZGVsW1Byb3BlcnR5XT4+KFxuICAgICAgICBwcm9wZXJ0eTogUHJvcGVydHksXG4gICAgICAgIG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8TG9jYWxpemF0aW9uTW9kZWw+LFxuICAgICAgICBsb2NhbGVQcm9wZXJ0eToga2V5b2YgTG9jYWxpemF0aW9uTW9kZWxcbiAgICApOiB0aGlzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxpemVkVW5zYWZlKHByb3BlcnR5IGFzIHN0cmluZywgbW9kZWwsIGxvY2FsZVByb3BlcnR5IGFzIHN0cmluZyk7XG4gICAgfVxuXG4gICAgcHVibGljIGxvY2FsaXplZFVuc2FmZTxMb2NhbGl6YXRpb25UeXBlPihwcm9wZXJ0eTogc3RyaW5nLCBtb2RlbDogTW9kZWxEZXNjcmlwdG9yPExvY2FsaXphdGlvblR5cGU+LCBsb2NhbGVQcm9wZXJ0eTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2xvY2FsaXphdGlvbkxvY2FsaXphdGlvblByb3BlcnR5ID0gcHJvcGVydHkgYXMgc3RyaW5nO1xuICAgICAgICB0aGlzLl9sb2NhbGl6YXRpb25Nb2RlbCA9IG1vZGVsO1xuICAgICAgICB0aGlzLl9sb2NhbGl6YXRpb25Mb2NhbGVQcm9wZXJ0eSA9IGxvY2FsZVByb3BlcnR5IGFzIHN0cmluZztcbiAgICAgICAgdGhpcy5faXNMb2NhbGl6ZWQgPSB0cnVlO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZXh0RXZlbnQodHlwZTogRm9ybUV2ZW50VHlwZUVudW0sIGNvbXBvbmVudDogSUZvcm1FZGl0b3JDb21wb25lbnQ8YW55LCBhbnk+LCBkYXRhPzogRm9ybUV2ZW50RGF0YTxFZGl0b3JNb2RlbD4pIHtcbiAgICAgICAgdGhpcy5fZXZlbnRzU3ViamVjdC5uZXh0KHtcbiAgICAgICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgICAgICBmb3JtQ29tcG9uZW50OiBjb21wb25lbnQsXG4gICAgICAgICAgICBmb3JtOiBjb21wb25lbnQuZm9ybSBhcyBGb3JtR3JvdXAsXG4gICAgICAgICAgICBkYXRhOiBkYXRhXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZXZlbnRzJCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2V2ZW50c1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxufVxuIl19
@@ -1,51 +0,0 @@
1
- import { StyleLevelEnum } from '@mediusinc/mng-commons/core';
2
- import { AFieldDescriptor } from './field-base.descriptor';
3
- export class FieldActionDescriptor extends AFieldDescriptor {
4
- constructor(property) {
5
- super(property);
6
- this._wrappers = ['field'];
7
- this._fieldActionName = property;
8
- }
9
- get button() {
10
- return this._button;
11
- }
12
- get runFunction() {
13
- return this._runFunction;
14
- }
15
- get wrappers() {
16
- return this._wrappers;
17
- }
18
- withButton(label, icon = null, level = StyleLevelEnum.Default) {
19
- this._button = {
20
- ...this._button,
21
- label,
22
- icon,
23
- style: {
24
- ...this._button?.style,
25
- level: level
26
- }
27
- };
28
- return this;
29
- }
30
- withButtonOpts(button) {
31
- this._button = button;
32
- return this;
33
- }
34
- withRunFunction(fn) {
35
- this._runFunction = fn;
36
- return this;
37
- }
38
- withWrappers(wrappers) {
39
- this._wrappers = wrappers;
40
- return this;
41
- }
42
- copy() {
43
- const field = new FieldActionDescriptor(this._property);
44
- this.copyFieldsTo(field);
45
- field._button = { ...this._button, style: { ...this._button?.style } };
46
- field._runFunction = this._runFunction?.bind(field);
47
- field._wrappers = [...this._wrappers];
48
- return field;
49
- }
50
- }
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtYWN0aW9uLmRlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9lZGl0b3IvZGVzY3JpcHRvcnMvZmllbGQtYWN0aW9uLmRlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBSTNELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBTXpELE1BQU0sT0FBTyxxQkFBa0UsU0FBUSxnQkFBNEQ7SUFTL0ksWUFBWSxRQUFnQjtRQUN4QixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFIWixjQUFTLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUkxQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFXLE1BQU07UUFDYixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQVcsV0FBVztRQUNsQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNmLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRU0sVUFBVSxDQUFDLEtBQXFCLEVBQUUsT0FBc0IsSUFBSSxFQUFFLEtBQUssR0FBRyxjQUFjLENBQUMsT0FBTztRQUMvRixJQUFJLENBQUMsT0FBTyxHQUFHO1lBQ1gsR0FBRyxJQUFJLENBQUMsT0FBTztZQUNmLEtBQUs7WUFDTCxJQUFJO1lBQ0osS0FBSyxFQUFFO2dCQUNILEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLO2dCQUN0QixLQUFLLEVBQUUsS0FBSzthQUNmO1NBQ0osQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxjQUFjLENBQUMsTUFBZ0M7UUFDbEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLGVBQWUsQ0FBQyxFQUFxQztRQUN4RCxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sWUFBWSxDQUFDLFFBQWtCO1FBQ2xDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzFCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxJQUFJO1FBQ1AsTUFBTSxLQUFLLEdBQUcsSUFBSSxxQkFBcUIsQ0FBaUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3hGLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekIsS0FBSyxDQUFDLE9BQU8sR0FBRyxFQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBQyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLEVBQUMsQ0FBQztRQUNuRSxLQUFLLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BELEtBQUssQ0FBQyxTQUFTLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN0QyxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1N0eWxlTGV2ZWxFbnVtfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtJQWN0aW9uQnV0dG9uRGVzY3JpcHRvcn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9mb3JtL2FwaSc7XG5cbmltcG9ydCB7RmllbGRBY3Rpb25Db250ZXh0LCBGaWVsZEFjdGlvblJlc3VsdH0gZnJvbSAnLi4vbW9kZWxzL2ZpZWxkLWFjdGlvbi1jb250ZXh0Lm1vZGVsJztcbmltcG9ydCB7QUZpZWxkRGVzY3JpcHRvcn0gZnJvbSAnLi9maWVsZC1iYXNlLmRlc2NyaXB0b3InO1xuXG5leHBvcnQgdHlwZSBGaWVsZEFjdGlvblJ1bkZuVHlwZTxFZGl0b3JNb2RlbCwgUGFyZW50RWRpdG9yTW9kZWwgPSB1bmRlZmluZWQ+ID0gKFxuICAgIGN0eDogRmllbGRBY3Rpb25Db250ZXh0PEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD5cbikgPT4gdm9pZCB8IEZpZWxkQWN0aW9uUmVzdWx0IHwgT2JzZXJ2YWJsZTxGaWVsZEFjdGlvblJlc3VsdD47XG5cbmV4cG9ydCBjbGFzcyBGaWVsZEFjdGlvbkRlc2NyaXB0b3I8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsID0gdW5kZWZpbmVkPiBleHRlbmRzIEFGaWVsZERlc2NyaXB0b3I8dm9pZCwgRWRpdG9yTW9kZWwsIHZvaWQsIFBhcmVudEVkaXRvck1vZGVsPiB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9maWVsZEFjdGlvbk5hbWU6IHN0cmluZztcblxuICAgIHByb3RlY3RlZCBfYnV0dG9uPzogSUFjdGlvbkJ1dHRvbkRlc2NyaXB0b3I7XG5cbiAgICBwcm90ZWN0ZWQgX3J1bkZ1bmN0aW9uPzogRmllbGRBY3Rpb25SdW5GblR5cGU8RWRpdG9yTW9kZWw+O1xuXG4gICAgcHJpdmF0ZSBfd3JhcHBlcnMgPSBbJ2ZpZWxkJ107XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKHByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5fZmllbGRBY3Rpb25OYW1lID0gcHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBidXR0b24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9idXR0b247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBydW5GdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3J1bkZ1bmN0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgd3JhcHBlcnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl93cmFwcGVycztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEJ1dHRvbihsYWJlbD86IHN0cmluZyB8IG51bGwsIGljb246IHN0cmluZyB8IG51bGwgPSBudWxsLCBsZXZlbCA9IFN0eWxlTGV2ZWxFbnVtLkRlZmF1bHQpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fYnV0dG9uID0ge1xuICAgICAgICAgICAgLi4udGhpcy5fYnV0dG9uLFxuICAgICAgICAgICAgbGFiZWwsXG4gICAgICAgICAgICBpY29uLFxuICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAuLi50aGlzLl9idXR0b24/LnN0eWxlLFxuICAgICAgICAgICAgICAgIGxldmVsOiBsZXZlbFxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEJ1dHRvbk9wdHMoYnV0dG9uPzogSUFjdGlvbkJ1dHRvbkRlc2NyaXB0b3IpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fYnV0dG9uID0gYnV0dG9uO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFJ1bkZ1bmN0aW9uKGZuOiBGaWVsZEFjdGlvblJ1bkZuVHlwZTxFZGl0b3JNb2RlbD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fcnVuRnVuY3Rpb24gPSBmbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhXcmFwcGVycyh3cmFwcGVyczogc3RyaW5nW10pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fd3JhcHBlcnMgPSB3cmFwcGVycztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGNvcHkoKTogRmllbGRBY3Rpb25EZXNjcmlwdG9yPEVkaXRvck1vZGVsLCBQYXJlbnRFZGl0b3JNb2RlbD4ge1xuICAgICAgICBjb25zdCBmaWVsZCA9IG5ldyBGaWVsZEFjdGlvbkRlc2NyaXB0b3I8RWRpdG9yTW9kZWwsIFBhcmVudEVkaXRvck1vZGVsPih0aGlzLl9wcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuY29weUZpZWxkc1RvKGZpZWxkKTtcbiAgICAgICAgZmllbGQuX2J1dHRvbiA9IHsuLi50aGlzLl9idXR0b24sIHN0eWxlOiB7Li4udGhpcy5fYnV0dG9uPy5zdHlsZX19O1xuICAgICAgICBmaWVsZC5fcnVuRnVuY3Rpb24gPSB0aGlzLl9ydW5GdW5jdGlvbj8uYmluZChmaWVsZCk7XG4gICAgICAgIGZpZWxkLl93cmFwcGVycyA9IFsuLi50aGlzLl93cmFwcGVyc107XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG59XG4iXX0=