@mediusinc/mng-commons 0.12.0 → 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 (351) 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 -200
  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 +282 -278
  26. package/esm2020/lib/components/form/dropdown/dropdown.component.mjs +194 -186
  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 -588
  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 +538 -536
  128. package/esm2020/lib/services/commons.service.mjs +342 -342
  129. package/esm2020/lib/services/configuration.service.mjs +120 -111
  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 +44 -44
  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 +112 -0
  147. package/esm2020/lib/styles/index.mjs +3 -0
  148. package/esm2020/lib/styles/styles.util.mjs +41 -0
  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 -8
  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 +24 -0
  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 +54 -52
  167. package/fesm2015/mediusinc-mng-commons.mjs +11902 -10676
  168. package/fesm2015/mediusinc-mng-commons.mjs.map +1 -1
  169. package/fesm2020/mediusinc-mng-commons.mjs +11750 -10528
  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 -75
  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 -234
  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 -36
  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 -0
  318. package/lib/styles/index.d.ts +2 -0
  319. package/lib/{utils → 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 -7
  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 -0
  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 -32
  339. package/scss/common/theme/designer/components/button/_speeddial.scss +6 -4
  340. package/scss/common/theme/designer/components/input/_autocomplete.scss +5 -3
  341. package/scss/common/theme/designer/components/input/_chips.scss +5 -3
  342. package/scss/common/theme/designer/components/input/_inputswitch.scss +3 -1
  343. package/scss/common/theme/designer/components/input/_multiselect.scss +4 -2
  344. package/scss/common/theme/designer/components/input/_slider.scss +6 -4
  345. package/scss/common/theme/designer/components/input/_treeselect.scss +4 -2
  346. package/scss/common/theme/designer/components/menu/_steps.scss +3 -1
  347. package/scss/common/theme/designer/components/misc/_chip.scss +4 -2
  348. package/scss/common/theme/designer/components/misc/_tag.scss +3 -1
  349. package/scss/common/theme/designer/components/overlay/_overlaypanel.scss +4 -2
  350. package/version-info.json +6 -6
  351. package/esm2020/lib/utils/styles.util.mjs +0 -41
@@ -1,135 +1,355 @@
1
- import { EditorDescriptor, ModelDescriptor, TableDescriptor } from './';
2
- import { TableviewTypeEnum } from './types';
3
- export class TableviewDescriptor {
4
- constructor(modelType, idProperty, titleProperty) {
5
- this._model = new ModelDescriptor(modelType, idProperty, titleProperty);
6
- this._table = new TableDescriptor(modelType, idProperty, titleProperty);
7
- this._viewEditor = new EditorDescriptor(modelType, idProperty, titleProperty, TableviewTypeEnum.View);
8
- this._viewEditor.withDisabled();
9
- this._addEditor = new EditorDescriptor(modelType, idProperty, titleProperty, TableviewTypeEnum.Add);
10
- this._editEditor = new EditorDescriptor(modelType, idProperty, titleProperty, TableviewTypeEnum.Edit);
11
- this._tableTitle = `${this._model.typeName}.name`;
12
- }
13
- get table() {
14
- return this._table;
15
- }
16
- get viewEditor() {
17
- return this._viewEditor;
18
- }
19
- get addEditor() {
20
- return this._addEditor;
21
- }
22
- get editEditor() {
23
- return this._editEditor;
24
- }
25
- get tableTitle() {
26
- return this._tableTitle;
27
- }
28
- get model() {
29
- return this._model;
30
- }
31
- withTableDescriptor(descriptor) {
32
- this._table = descriptor;
33
- return this;
34
- }
35
- withViewDescriptor(descriptor) {
36
- this._viewEditor = descriptor;
37
- return this;
38
- }
39
- withAddDescriptor(descriptor) {
40
- this._addEditor = descriptor;
41
- return this;
42
- }
43
- withEditDescriptor(descriptor) {
44
- this._editEditor = descriptor;
45
- return this;
46
- }
47
- withTableTitle(title) {
48
- this._tableTitle = title;
49
- return this;
50
- }
51
- withValidator(name, expression) {
52
- this._viewEditor.addValidation(name, expression);
53
- this._addEditor.addValidation(name, expression);
54
- this._editEditor.addValidation(name, expression);
55
- return this;
56
- }
57
- addColumnDescriptor(column) {
58
- return this._table.addColumnDescriptor(column);
59
- }
60
- addColumn(property) {
61
- return this._table.addColumn(property);
62
- }
63
- addColumnNumber(property, displayFormat) {
64
- return this._table.addColumnNumber(property, displayFormat);
65
- }
66
- addColumnDate(property, displayFormat) {
67
- return this._table.addColumnDate(property, displayFormat);
68
- }
69
- addColumnBoolean(property, yes, no, asIcon = false) {
70
- return this._table.addColumnBoolean(property, yes, no, asIcon);
71
- }
72
- addColumnEnum(property, enumType, nameAsValue = false, titlePath) {
73
- return this._table.addColumnEnum(property, enumType, nameAsValue, titlePath);
74
- }
75
- addColumnCustomComponent(property, customComponentType) {
76
- return this._table.addColumnCustomComponent(property, customComponentType);
77
- }
78
- createTabGroup(name, title) {
79
- this._viewEditor.createTabGroup(name, title);
80
- this._addEditor.createTabGroup(name, title);
81
- this._editEditor.createTabGroup(name, title);
82
- return this;
83
- }
84
- createFieldGroup(name, title) {
85
- this._viewEditor.createFieldGroup(name, title);
86
- this._addEditor.createFieldGroup(name, title);
87
- this._editEditor.createFieldGroup(name, title);
88
- return this;
89
- }
90
- addFieldDescriptor(field) {
91
- this._viewEditor.addFieldDescriptor(field);
92
- this._addEditor.addFieldDescriptor(field);
93
- this._editEditor.addFieldDescriptor(field);
94
- return this;
95
- }
96
- addField(property) {
97
- const field = this._viewEditor.addField(property);
98
- this._addEditor.addFieldDescriptor(field);
99
- this._editEditor.addFieldDescriptor(field);
100
- return field;
101
- }
102
- addFieldLookup(property, modelType) {
103
- const field = this._viewEditor.addFieldLookup(property, modelType);
104
- this._addEditor.addFieldDescriptor(field);
105
- this._editEditor.addFieldDescriptor(field);
106
- return field;
107
- }
108
- addFieldLookupEnum(property, enumType, options, nameAsValue = false, optionsTitlePath) {
109
- const field = this._viewEditor.addFieldLookupEnum(property, enumType, options, nameAsValue, optionsTitlePath);
110
- this._addEditor.addFieldDescriptor(field);
111
- this._editEditor.addFieldDescriptor(field);
112
- return field;
113
- }
114
- addFieldManyEditor(property, tableviewDescriptor) {
115
- const field = this._viewEditor.addFieldManyEditor(property, tableviewDescriptor);
116
- this._addEditor.addFieldDescriptor(field);
117
- this._editEditor.addFieldDescriptor(field);
118
- return field;
119
- }
120
- addFieldManyToManyEditor(property, mainTableDescriptor, lookupTableDescriptor) {
121
- const field = this._viewEditor.addFieldManyToManyEditor(property, mainTableDescriptor, lookupTableDescriptor);
122
- this._addEditor.addFieldDescriptor(field);
123
- this._editEditor.addFieldDescriptor(field);
124
- return field;
125
- }
126
- copy() {
127
- const tableview = new TableviewDescriptor(this._model.type, this._model.idPropertyName, this._model.titlePropertyName);
128
- tableview._table = this._table.copy();
129
- tableview._viewEditor = this._viewEditor.copy();
130
- tableview._addEditor = this._addEditor.copy();
131
- tableview._editEditor = this._editEditor.copy();
132
- return tableview;
133
- }
134
- }
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LmRlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2Rlc2NyaXB0b3JzL3RhYmxldmlldy5kZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE9BQU8sRUFHSCxnQkFBZ0IsRUFNaEIsZUFBZSxFQUNmLGVBQWUsRUFDbEIsTUFBTSxJQUFJLENBQUM7QUFDWixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxTQUFTLENBQUM7QUFFMUMsTUFBTSxPQUFPLG1CQUFtQjtJQUc1QixZQUFZLFNBQXVCLEVBQUUsVUFBbUIsRUFBRSxhQUFzQjtRQUM1RSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksZUFBZSxDQUFJLFNBQVMsRUFBRSxVQUFVLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDM0UsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLGVBQWUsQ0FBSSxTQUFTLEVBQUUsVUFBVSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQzNFLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBSSxTQUFTLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6RyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBSSxTQUFTLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2RyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksZ0JBQWdCLENBQUksU0FBUyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekcsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxPQUFPLENBQUM7SUFDdEQsQ0FBQztJQUlELElBQVcsS0FBSztRQUNaLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBSUQsSUFBVyxVQUFVO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUM1QixDQUFDO0lBSUQsSUFBVyxTQUFTO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMzQixDQUFDO0lBSUQsSUFBVyxVQUFVO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUM1QixDQUFDO0lBSUQsSUFBVyxVQUFVO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBVyxLQUFLO1FBQ1osT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFTSxtQkFBbUIsQ0FBQyxVQUE4QjtRQUNyRCxJQUFJLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQztRQUN6QixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sa0JBQWtCLENBQUMsVUFBK0I7UUFDckQsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7UUFDOUIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLGlCQUFpQixDQUFDLFVBQStCO1FBQ3BELElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxVQUErQjtRQUNyRCxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sY0FBYyxDQUFDLEtBQWE7UUFDL0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDekIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLGFBQWEsQ0FBQyxJQUFZLEVBQUUsVUFBNEI7UUFDM0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDakQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLG1CQUFtQixDQUFLLE1BQStCO1FBQzFELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBSyxNQUFNLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRU0sU0FBUyxDQUFDLFFBQWdCO1FBQzdCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVNLGVBQWUsQ0FBQyxRQUFnQixFQUFFLGFBQXNCO1FBQzNELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFTSxhQUFhLENBQUMsUUFBZ0IsRUFBRSxhQUFzQjtRQUN6RCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsUUFBZ0IsRUFBRSxHQUFZLEVBQUUsRUFBVyxFQUFFLE1BQU0sR0FBRyxLQUFLO1FBQy9FLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRU0sYUFBYSxDQUFDLFFBQWdCLEVBQUUsUUFBa0IsRUFBRSxXQUFXLEdBQUcsS0FBSyxFQUFFLFNBQXlCO1FBQ3JHLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVNLHdCQUF3QixDQUFDLFFBQWdCLEVBQUUsbUJBQW1EO1FBQ2pHLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRU0sY0FBYyxDQUFDLElBQVksRUFBRSxLQUFjO1FBQzlDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzdDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxJQUFZLEVBQUUsS0FBYztRQUNoRCxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMvQyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sa0JBQWtCLENBQUssS0FBOEI7UUFDeEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLFFBQVEsQ0FBQyxRQUFnQjtRQUM1QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVNLGNBQWMsQ0FBSyxRQUFnQixFQUFFLFNBQXdCO1FBQ2hFLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNuRSxJQUFJLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVNLGtCQUFrQixDQUNyQixRQUFnQixFQUNoQixRQUFrQixFQUNsQixPQUFpQyxFQUNqQyxXQUFXLEdBQUcsS0FBSyxFQUNuQixnQkFBZ0M7UUFFaEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUM5RyxJQUFJLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVNLGtCQUFrQixDQUFLLFFBQWdCLEVBQUUsbUJBQTRDO1FBQ3hGLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFLG1CQUFtQixDQUFDLENBQUM7UUFDakYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNDLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFTSx3QkFBd0IsQ0FDM0IsUUFBZ0IsRUFDaEIsbUJBQXdDLEVBQ3hDLHFCQUEwQztRQUUxQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLHdCQUF3QixDQUFDLFFBQVEsRUFBRSxtQkFBbUIsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO1FBQzlHLElBQUksQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQyxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRU0sSUFBSTtRQUNQLE1BQU0sU0FBUyxHQUFHLElBQUksbUJBQW1CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3ZILFNBQVMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QyxTQUFTLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDaEQsU0FBUyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzlDLFNBQVMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNoRCxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1R5cGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge0ZpZWxkVmFsaWRhdG9yRm59IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUvbGliL21vZGVscy9jb25maWcnO1xuXG5pbXBvcnQge0lDb2x1bW5WYWx1ZUNvbXBvbmVudH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7Q2xhc3NUeXBlLCBFbnVtQ29uc3RhbnRUeXBlLCBFbnVtVHlwZX0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtcbiAgICBBRmllbGREZXNjcmlwdG9yLFxuICAgIENvbHVtbkRlc2NyaXB0b3IsXG4gICAgRWRpdG9yRGVzY3JpcHRvcixcbiAgICBGaWVsZElucHV0RGVzY3JpcHRvcixcbiAgICBGaWVsZExvb2t1cERlc2NyaXB0b3IsXG4gICAgRmllbGRMb29rdXBFbnVtRGVzY3JpcHRvcixcbiAgICBGaWVsZE1hbnlFZGl0b3JEZXNjcmlwdG9yLFxuICAgIEZpZWxkTWFueVRvTWFueUVkaXRvckRlc2NyaXB0b3IsXG4gICAgTW9kZWxEZXNjcmlwdG9yLFxuICAgIFRhYmxlRGVzY3JpcHRvclxufSBmcm9tICcuLyc7XG5pbXBvcnQge1RhYmxldmlld1R5cGVFbnVtfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGNsYXNzIFRhYmxldmlld0Rlc2NyaXB0b3I8VD4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX21vZGVsOiBNb2RlbERlc2NyaXB0b3I8VD47XG5cbiAgICBjb25zdHJ1Y3Rvcihtb2RlbFR5cGU6IENsYXNzVHlwZTxUPiwgaWRQcm9wZXJ0eT86IHN0cmluZywgdGl0bGVQcm9wZXJ0eT86IHN0cmluZykge1xuICAgICAgICB0aGlzLl9tb2RlbCA9IG5ldyBNb2RlbERlc2NyaXB0b3I8VD4obW9kZWxUeXBlLCBpZFByb3BlcnR5LCB0aXRsZVByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5fdGFibGUgPSBuZXcgVGFibGVEZXNjcmlwdG9yPFQ+KG1vZGVsVHlwZSwgaWRQcm9wZXJ0eSwgdGl0bGVQcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuX3ZpZXdFZGl0b3IgPSBuZXcgRWRpdG9yRGVzY3JpcHRvcjxUPihtb2RlbFR5cGUsIGlkUHJvcGVydHksIHRpdGxlUHJvcGVydHksIFRhYmxldmlld1R5cGVFbnVtLlZpZXcpO1xuICAgICAgICB0aGlzLl92aWV3RWRpdG9yLndpdGhEaXNhYmxlZCgpO1xuICAgICAgICB0aGlzLl9hZGRFZGl0b3IgPSBuZXcgRWRpdG9yRGVzY3JpcHRvcjxUPihtb2RlbFR5cGUsIGlkUHJvcGVydHksIHRpdGxlUHJvcGVydHksIFRhYmxldmlld1R5cGVFbnVtLkFkZCk7XG4gICAgICAgIHRoaXMuX2VkaXRFZGl0b3IgPSBuZXcgRWRpdG9yRGVzY3JpcHRvcjxUPihtb2RlbFR5cGUsIGlkUHJvcGVydHksIHRpdGxlUHJvcGVydHksIFRhYmxldmlld1R5cGVFbnVtLkVkaXQpO1xuICAgICAgICB0aGlzLl90YWJsZVRpdGxlID0gYCR7dGhpcy5fbW9kZWwudHlwZU5hbWV9Lm5hbWVgO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3RhYmxlOiBUYWJsZURlc2NyaXB0b3I8VD47XG5cbiAgICBwdWJsaWMgZ2V0IHRhYmxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfdmlld0VkaXRvcjogRWRpdG9yRGVzY3JpcHRvcjxUPjtcblxuICAgIHB1YmxpYyBnZXQgdmlld0VkaXRvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZpZXdFZGl0b3I7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfYWRkRWRpdG9yOiBFZGl0b3JEZXNjcmlwdG9yPFQ+O1xuXG4gICAgcHVibGljIGdldCBhZGRFZGl0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRFZGl0b3I7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZWRpdEVkaXRvcjogRWRpdG9yRGVzY3JpcHRvcjxUPjtcblxuICAgIHB1YmxpYyBnZXQgZWRpdEVkaXRvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VkaXRFZGl0b3I7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfdGFibGVUaXRsZTogc3RyaW5nO1xuXG4gICAgcHVibGljIGdldCB0YWJsZVRpdGxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGVUaXRsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG1vZGVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbW9kZWw7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhUYWJsZURlc2NyaXB0b3IoZGVzY3JpcHRvcjogVGFibGVEZXNjcmlwdG9yPFQ+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3RhYmxlID0gZGVzY3JpcHRvcjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhWaWV3RGVzY3JpcHRvcihkZXNjcmlwdG9yOiBFZGl0b3JEZXNjcmlwdG9yPFQ+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3ZpZXdFZGl0b3IgPSBkZXNjcmlwdG9yO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEFkZERlc2NyaXB0b3IoZGVzY3JpcHRvcjogRWRpdG9yRGVzY3JpcHRvcjxUPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9hZGRFZGl0b3IgPSBkZXNjcmlwdG9yO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEVkaXREZXNjcmlwdG9yKGRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3I8VD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZWRpdEVkaXRvciA9IGRlc2NyaXB0b3I7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoVGFibGVUaXRsZSh0aXRsZTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3RhYmxlVGl0bGUgPSB0aXRsZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhWYWxpZGF0b3IobmFtZTogc3RyaW5nLCBleHByZXNzaW9uOiBGaWVsZFZhbGlkYXRvckZuKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3ZpZXdFZGl0b3IuYWRkVmFsaWRhdGlvbihuYW1lLCBleHByZXNzaW9uKTtcbiAgICAgICAgdGhpcy5fYWRkRWRpdG9yLmFkZFZhbGlkYXRpb24obmFtZSwgZXhwcmVzc2lvbik7XG4gICAgICAgIHRoaXMuX2VkaXRFZGl0b3IuYWRkVmFsaWRhdGlvbihuYW1lLCBleHByZXNzaW9uKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZENvbHVtbkRlc2NyaXB0b3I8Q1Q+KGNvbHVtbjogQ29sdW1uRGVzY3JpcHRvcjxDVCwgVD4pOiBUYWJsZURlc2NyaXB0b3I8VD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGUuYWRkQ29sdW1uRGVzY3JpcHRvcjxDVD4oY29sdW1uKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkQ29sdW1uKHByb3BlcnR5OiBzdHJpbmcpOiBDb2x1bW5EZXNjcmlwdG9yPHN0cmluZywgVD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGUuYWRkQ29sdW1uKHByb3BlcnR5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkQ29sdW1uTnVtYmVyKHByb3BlcnR5OiBzdHJpbmcsIGRpc3BsYXlGb3JtYXQ/OiBzdHJpbmcpOiBDb2x1bW5EZXNjcmlwdG9yPG51bWJlciwgVD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGUuYWRkQ29sdW1uTnVtYmVyKHByb3BlcnR5LCBkaXNwbGF5Rm9ybWF0KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkQ29sdW1uRGF0ZShwcm9wZXJ0eTogc3RyaW5nLCBkaXNwbGF5Rm9ybWF0Pzogc3RyaW5nKTogQ29sdW1uRGVzY3JpcHRvcjxEYXRlLCBUPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZS5hZGRDb2x1bW5EYXRlKHByb3BlcnR5LCBkaXNwbGF5Rm9ybWF0KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkQ29sdW1uQm9vbGVhbihwcm9wZXJ0eTogc3RyaW5nLCB5ZXM/OiBzdHJpbmcsIG5vPzogc3RyaW5nLCBhc0ljb24gPSBmYWxzZSk6IENvbHVtbkRlc2NyaXB0b3I8Ym9vbGVhbiwgVD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGUuYWRkQ29sdW1uQm9vbGVhbihwcm9wZXJ0eSwgeWVzLCBubywgYXNJY29uKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkQ29sdW1uRW51bShwcm9wZXJ0eTogc3RyaW5nLCBlbnVtVHlwZTogRW51bVR5cGUsIG5hbWVBc1ZhbHVlID0gZmFsc2UsIHRpdGxlUGF0aD86IHN0cmluZyB8IG51bGwpOiBDb2x1bW5EZXNjcmlwdG9yPEVudW1UeXBlLCBUPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZS5hZGRDb2x1bW5FbnVtKHByb3BlcnR5LCBlbnVtVHlwZSwgbmFtZUFzVmFsdWUsIHRpdGxlUGF0aCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZENvbHVtbkN1c3RvbUNvbXBvbmVudChwcm9wZXJ0eTogc3RyaW5nLCBjdXN0b21Db21wb25lbnRUeXBlOiBUeXBlPElDb2x1bW5WYWx1ZUNvbXBvbmVudDxUPj4pOiBDb2x1bW5EZXNjcmlwdG9yPGFueSwgVD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGUuYWRkQ29sdW1uQ3VzdG9tQ29tcG9uZW50KHByb3BlcnR5LCBjdXN0b21Db21wb25lbnRUeXBlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlVGFiR3JvdXAobmFtZTogc3RyaW5nLCB0aXRsZT86IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl92aWV3RWRpdG9yLmNyZWF0ZVRhYkdyb3VwKG5hbWUsIHRpdGxlKTtcbiAgICAgICAgdGhpcy5fYWRkRWRpdG9yLmNyZWF0ZVRhYkdyb3VwKG5hbWUsIHRpdGxlKTtcbiAgICAgICAgdGhpcy5fZWRpdEVkaXRvci5jcmVhdGVUYWJHcm91cChuYW1lLCB0aXRsZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGVGaWVsZEdyb3VwKG5hbWU6IHN0cmluZywgdGl0bGU/OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdmlld0VkaXRvci5jcmVhdGVGaWVsZEdyb3VwKG5hbWUsIHRpdGxlKTtcbiAgICAgICAgdGhpcy5fYWRkRWRpdG9yLmNyZWF0ZUZpZWxkR3JvdXAobmFtZSwgdGl0bGUpO1xuICAgICAgICB0aGlzLl9lZGl0RWRpdG9yLmNyZWF0ZUZpZWxkR3JvdXAobmFtZSwgdGl0bGUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmllbGREZXNjcmlwdG9yPEZUPihmaWVsZDogQUZpZWxkRGVzY3JpcHRvcjxGVCwgVD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdmlld0VkaXRvci5hZGRGaWVsZERlc2NyaXB0b3IoZmllbGQpO1xuICAgICAgICB0aGlzLl9hZGRFZGl0b3IuYWRkRmllbGREZXNjcmlwdG9yKGZpZWxkKTtcbiAgICAgICAgdGhpcy5fZWRpdEVkaXRvci5hZGRGaWVsZERlc2NyaXB0b3IoZmllbGQpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmllbGQocHJvcGVydHk6IHN0cmluZyk6IEZpZWxkSW5wdXREZXNjcmlwdG9yPFQ+IHtcbiAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLl92aWV3RWRpdG9yLmFkZEZpZWxkKHByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5fYWRkRWRpdG9yLmFkZEZpZWxkRGVzY3JpcHRvcihmaWVsZCk7XG4gICAgICAgIHRoaXMuX2VkaXRFZGl0b3IuYWRkRmllbGREZXNjcmlwdG9yKGZpZWxkKTtcbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRGaWVsZExvb2t1cDxGVD4ocHJvcGVydHk6IHN0cmluZywgbW9kZWxUeXBlOiBDbGFzc1R5cGU8RlQ+KTogRmllbGRMb29rdXBEZXNjcmlwdG9yPEZULCBUPiB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5fdmlld0VkaXRvci5hZGRGaWVsZExvb2t1cChwcm9wZXJ0eSwgbW9kZWxUeXBlKTtcbiAgICAgICAgdGhpcy5fYWRkRWRpdG9yLmFkZEZpZWxkRGVzY3JpcHRvcihmaWVsZCk7XG4gICAgICAgIHRoaXMuX2VkaXRFZGl0b3IuYWRkRmllbGREZXNjcmlwdG9yKGZpZWxkKTtcbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRGaWVsZExvb2t1cEVudW0oXG4gICAgICAgIHByb3BlcnR5OiBzdHJpbmcsXG4gICAgICAgIGVudW1UeXBlOiBFbnVtVHlwZSxcbiAgICAgICAgb3B0aW9ucz86IEFycmF5PEVudW1Db25zdGFudFR5cGU+LFxuICAgICAgICBuYW1lQXNWYWx1ZSA9IGZhbHNlLFxuICAgICAgICBvcHRpb25zVGl0bGVQYXRoPzogc3RyaW5nIHwgbnVsbFxuICAgICk6IEZpZWxkTG9va3VwRW51bURlc2NyaXB0b3I8VD4ge1xuICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuX3ZpZXdFZGl0b3IuYWRkRmllbGRMb29rdXBFbnVtKHByb3BlcnR5LCBlbnVtVHlwZSwgb3B0aW9ucywgbmFtZUFzVmFsdWUsIG9wdGlvbnNUaXRsZVBhdGgpO1xuICAgICAgICB0aGlzLl9hZGRFZGl0b3IuYWRkRmllbGREZXNjcmlwdG9yKGZpZWxkKTtcbiAgICAgICAgdGhpcy5fZWRpdEVkaXRvci5hZGRGaWVsZERlc2NyaXB0b3IoZmllbGQpO1xuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpZWxkTWFueUVkaXRvcjxGVD4ocHJvcGVydHk6IHN0cmluZywgdGFibGV2aWV3RGVzY3JpcHRvcjogVGFibGV2aWV3RGVzY3JpcHRvcjxGVD4pOiBGaWVsZE1hbnlFZGl0b3JEZXNjcmlwdG9yPEZULCBUPiB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5fdmlld0VkaXRvci5hZGRGaWVsZE1hbnlFZGl0b3IocHJvcGVydHksIHRhYmxldmlld0Rlc2NyaXB0b3IpO1xuICAgICAgICB0aGlzLl9hZGRFZGl0b3IuYWRkRmllbGREZXNjcmlwdG9yKGZpZWxkKTtcbiAgICAgICAgdGhpcy5fZWRpdEVkaXRvci5hZGRGaWVsZERlc2NyaXB0b3IoZmllbGQpO1xuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpZWxkTWFueVRvTWFueUVkaXRvcjxGVD4oXG4gICAgICAgIHByb3BlcnR5OiBzdHJpbmcsXG4gICAgICAgIG1haW5UYWJsZURlc2NyaXB0b3I6IFRhYmxlRGVzY3JpcHRvcjxGVD4sXG4gICAgICAgIGxvb2t1cFRhYmxlRGVzY3JpcHRvcjogVGFibGVEZXNjcmlwdG9yPEZUPlxuICAgICk6IEZpZWxkTWFueVRvTWFueUVkaXRvckRlc2NyaXB0b3I8RlQsIFQ+IHtcbiAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLl92aWV3RWRpdG9yLmFkZEZpZWxkTWFueVRvTWFueUVkaXRvcihwcm9wZXJ0eSwgbWFpblRhYmxlRGVzY3JpcHRvciwgbG9va3VwVGFibGVEZXNjcmlwdG9yKTtcbiAgICAgICAgdGhpcy5fYWRkRWRpdG9yLmFkZEZpZWxkRGVzY3JpcHRvcihmaWVsZCk7XG4gICAgICAgIHRoaXMuX2VkaXRFZGl0b3IuYWRkRmllbGREZXNjcmlwdG9yKGZpZWxkKTtcbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb3B5KCk6IFRhYmxldmlld0Rlc2NyaXB0b3I8VD4ge1xuICAgICAgICBjb25zdCB0YWJsZXZpZXcgPSBuZXcgVGFibGV2aWV3RGVzY3JpcHRvcih0aGlzLl9tb2RlbC50eXBlLCB0aGlzLl9tb2RlbC5pZFByb3BlcnR5TmFtZSwgdGhpcy5fbW9kZWwudGl0bGVQcm9wZXJ0eU5hbWUpO1xuICAgICAgICB0YWJsZXZpZXcuX3RhYmxlID0gdGhpcy5fdGFibGUuY29weSgpO1xuICAgICAgICB0YWJsZXZpZXcuX3ZpZXdFZGl0b3IgPSB0aGlzLl92aWV3RWRpdG9yLmNvcHkoKTtcbiAgICAgICAgdGFibGV2aWV3Ll9hZGRFZGl0b3IgPSB0aGlzLl9hZGRFZGl0b3IuY29weSgpO1xuICAgICAgICB0YWJsZXZpZXcuX2VkaXRFZGl0b3IgPSB0aGlzLl9lZGl0RWRpdG9yLmNvcHkoKTtcbiAgICAgICAgcmV0dXJuIHRhYmxldmlldztcbiAgICB9XG59XG4iXX0=
1
+ import { ObjectSerializer } from '../api/utils';
2
+ import { FieldUtil, ModelUtil } from '../utils';
3
+ import { TableviewUtil } from '../utils/tableview.util';
4
+ import { EditorAutoDescriptor, EditorDescriptor, ModelDescriptor, TableAutoDescriptor, TableDescriptor, TableDynamicDescriptor } from './index';
5
+ import { ColumnTypeEnum, FieldInputTypeEnum, TableviewTypeEnum } from './types';
6
+ export class TableviewDescriptor {
7
+ constructor(modelType, idProperty, titleProperty) {
8
+ this._model = new ModelDescriptor(modelType, idProperty, titleProperty);
9
+ this._table = new TableDescriptor(modelType, idProperty, titleProperty);
10
+ this._viewEditor = new EditorDescriptor(modelType, idProperty, titleProperty, TableviewTypeEnum.View);
11
+ this._viewEditor.withDisabled();
12
+ this._addEditor = new EditorDescriptor(modelType, idProperty, titleProperty, TableviewTypeEnum.Add);
13
+ this._editEditor = new EditorDescriptor(modelType, idProperty, titleProperty, TableviewTypeEnum.Edit);
14
+ this._tableTitle = `${this._model.typeName}.name`;
15
+ }
16
+ /**
17
+ * creates descriptor from modelType
18
+ * @param modelType
19
+ * @param attributes
20
+ * @param idProperty
21
+ * @param titleProperty
22
+ */
23
+ static autoTableview(modelType, idProperty, titleProperty) {
24
+ return TableviewAutoDescriptor.generateFrom(modelType, idProperty, titleProperty);
25
+ }
26
+ /**
27
+ * creates dynamic descriptor
28
+ * @param table
29
+ * @param idProperty
30
+ * @param titleProperty
31
+ */
32
+ static dynamicTableview(table, idProperty, titleProperty) {
33
+ return new TableviewDynamicDescriptor(table, idProperty, titleProperty);
34
+ }
35
+ get table() {
36
+ return this._table;
37
+ }
38
+ get viewEditor() {
39
+ return this._viewEditor;
40
+ }
41
+ get addEditor() {
42
+ return this._addEditor;
43
+ }
44
+ get editEditor() {
45
+ return this._editEditor;
46
+ }
47
+ get tableTitle() {
48
+ return this._tableTitle;
49
+ }
50
+ get model() {
51
+ return this._model;
52
+ }
53
+ withTableDescriptor(descriptor) {
54
+ this._table = descriptor;
55
+ return this;
56
+ }
57
+ withViewDescriptor(descriptor) {
58
+ this._viewEditor = descriptor;
59
+ return this;
60
+ }
61
+ withAddDescriptor(descriptor) {
62
+ this._addEditor = descriptor;
63
+ return this;
64
+ }
65
+ withEditDescriptor(descriptor) {
66
+ this._editEditor = descriptor;
67
+ return this;
68
+ }
69
+ withTableTitle(title) {
70
+ this._tableTitle = title;
71
+ return this;
72
+ }
73
+ withValidator(name, expression) {
74
+ this._viewEditor.addValidation(name, expression);
75
+ this._addEditor.addValidation(name, expression);
76
+ this._editEditor.addValidation(name, expression);
77
+ return this;
78
+ }
79
+ addColumnDescriptor(column) {
80
+ return this._table.addColumnDescriptor(column);
81
+ }
82
+ addColumn(property) {
83
+ return this._table.addColumn(property);
84
+ }
85
+ getColumn(property) {
86
+ return this._table.columns.find(col => col.property === property);
87
+ }
88
+ removeColumn(property) {
89
+ this._table.removeColumn(property);
90
+ }
91
+ replaceColumn(property) {
92
+ return this._table.replaceColumn(property);
93
+ }
94
+ getField(property, editorType) {
95
+ switch (editorType) {
96
+ case TableviewTypeEnum.Edit:
97
+ return this._editEditor.getField(property);
98
+ case TableviewTypeEnum.Add:
99
+ return this._addEditor.getField(property);
100
+ case TableviewTypeEnum.View:
101
+ return this._viewEditor.getField(property);
102
+ case TableviewTypeEnum.None:
103
+ return null;
104
+ }
105
+ }
106
+ removeField(property) {
107
+ this._editEditor.removeField(property);
108
+ this._addEditor.removeField(property);
109
+ this._viewEditor.removeField(property);
110
+ }
111
+ addColumnNumber(property, displayFormat) {
112
+ return this._table.addColumnNumber(property, displayFormat);
113
+ }
114
+ addColumnDate(property, displayFormat) {
115
+ return this._table.addColumnDate(property, displayFormat);
116
+ }
117
+ addColumnBoolean(property, yes, no, asIcon = false) {
118
+ return this._table.addColumnBoolean(property, yes, no, asIcon);
119
+ }
120
+ addColumnEnum(property, enumType, nameAsValue = false, titlePath) {
121
+ return this._table.addColumnEnum(property, enumType, nameAsValue, titlePath);
122
+ }
123
+ addColumnCustomComponent(property, customComponentType) {
124
+ return this._table.addColumnCustomComponent(property, customComponentType);
125
+ }
126
+ createTabGroup(name, title) {
127
+ this._viewEditor.createTabGroup(name, title);
128
+ this._addEditor.createTabGroup(name, title);
129
+ this._editEditor.createTabGroup(name, title);
130
+ return this;
131
+ }
132
+ createFieldGroup(name, title) {
133
+ this._viewEditor.createFieldGroup(name, title);
134
+ this._addEditor.createFieldGroup(name, title);
135
+ this._editEditor.createFieldGroup(name, title);
136
+ return this;
137
+ }
138
+ addFieldDescriptor(field) {
139
+ this._viewEditor.addFieldDescriptor(field);
140
+ this._addEditor.addFieldDescriptor(field);
141
+ this._editEditor.addFieldDescriptor(field);
142
+ return this;
143
+ }
144
+ addField(property) {
145
+ const field = this._viewEditor.addField(property);
146
+ this._addEditor.addFieldDescriptor(field);
147
+ this._editEditor.addFieldDescriptor(field);
148
+ return field;
149
+ }
150
+ addFieldLookup(property, modelType) {
151
+ const field = this._viewEditor.addFieldLookup(property, modelType);
152
+ this._addEditor.addFieldDescriptor(field);
153
+ this._editEditor.addFieldDescriptor(field);
154
+ return field;
155
+ }
156
+ addFieldLookupEnum(property, enumType, options, nameAsValue = false, optionsTitlePath) {
157
+ const field = this._viewEditor.addFieldLookupEnum(property, enumType, options, nameAsValue, optionsTitlePath);
158
+ this._addEditor.addFieldDescriptor(field);
159
+ this._editEditor.addFieldDescriptor(field);
160
+ return field;
161
+ }
162
+ addFieldManyEditor(property, tableviewDescriptor) {
163
+ const field = this._viewEditor.addFieldManyEditor(property, tableviewDescriptor);
164
+ this._addEditor.addFieldDescriptor(field);
165
+ this._editEditor.addFieldDescriptor(field);
166
+ return field;
167
+ }
168
+ addFieldManyToManyEditor(property, mainTableDescriptor, lookupTableDescriptor) {
169
+ const field = this._viewEditor.addFieldManyToManyEditor(property, mainTableDescriptor, lookupTableDescriptor);
170
+ this._addEditor.addFieldDescriptor(field);
171
+ this._editEditor.addFieldDescriptor(field);
172
+ return field;
173
+ }
174
+ copy() {
175
+ const tableview = new TableviewDescriptor(this._model.type, this._model.idPropertyName, this._model.titlePropertyName);
176
+ tableview._table = this._table.copy();
177
+ tableview._viewEditor = this._viewEditor.copy();
178
+ tableview._addEditor = this._addEditor.copy();
179
+ tableview._editEditor = this._editEditor.copy();
180
+ return tableview;
181
+ }
182
+ }
183
+ export class TableviewAutoDescriptor extends TableviewDescriptor {
184
+ constructor(modelType, attributes, idProperty, titleProperty) {
185
+ super(modelType, idProperty, titleProperty);
186
+ this._attributes = attributes;
187
+ this._table = TableAutoDescriptor.generateFullFrom(modelType, idProperty, titleProperty);
188
+ this._editEditor = EditorAutoDescriptor.generateFullFrom(modelType, idProperty, titleProperty, TableviewTypeEnum.Edit);
189
+ this._viewEditor = EditorAutoDescriptor.generateFullFrom(modelType, idProperty, titleProperty, TableviewTypeEnum.View);
190
+ this._addEditor = EditorAutoDescriptor.generateFullFrom(modelType, idProperty, titleProperty, TableviewTypeEnum.Add);
191
+ }
192
+ get table() {
193
+ return this._table;
194
+ }
195
+ /*******
196
+ * Static builders
197
+ *******/
198
+ /**
199
+ * generates full descriptor with all fields defined in attributes field (OpenApi specification) EXCEPT class type field
200
+ */
201
+ static generateFrom(modelType, idProperty, titleProperty) {
202
+ const descriptor = new TableviewAutoDescriptor(modelType, TableviewUtil.getAttributeDefMap(modelType), idProperty, titleProperty);
203
+ descriptor._table = TableAutoDescriptor.generateFullFrom(modelType, idProperty, titleProperty);
204
+ descriptor._editEditor = EditorAutoDescriptor.generateFullFrom(modelType, idProperty, titleProperty, TableviewTypeEnum.Edit);
205
+ descriptor._viewEditor = EditorAutoDescriptor.generateFullFrom(modelType, idProperty, titleProperty, TableviewTypeEnum.View);
206
+ descriptor._addEditor = EditorAutoDescriptor.generateFullFrom(modelType, idProperty, titleProperty, TableviewTypeEnum.Add);
207
+ return descriptor;
208
+ }
209
+ /**
210
+ * defines and overrides table descriptor
211
+ * @param tableDescriptor
212
+ */
213
+ withCustomTableDescriptor(tableDescriptor) {
214
+ this._table = tableDescriptor;
215
+ return this;
216
+ }
217
+ /**
218
+ * defines and overrides one or all editor descriptor
219
+ * @param editorDescriptor
220
+ * @param tableviewType if not provided all editor descriptors will be updated (add, edit, view)
221
+ */
222
+ withCustomEditorDescriptor(editorDescriptor, tableviewType = 'all') {
223
+ if (tableviewType === 'all') {
224
+ this._addEditor = editorDescriptor.copy();
225
+ this._viewEditor = editorDescriptor.copy();
226
+ this._viewEditor.withDisabled();
227
+ this._editEditor = editorDescriptor.copy();
228
+ }
229
+ else {
230
+ switch (tableviewType) {
231
+ case TableviewTypeEnum.Add:
232
+ this._addEditor = editorDescriptor;
233
+ break;
234
+ case TableviewTypeEnum.View:
235
+ this._viewEditor = editorDescriptor;
236
+ break;
237
+ case TableviewTypeEnum.Edit:
238
+ this._editEditor = editorDescriptor;
239
+ }
240
+ }
241
+ return this;
242
+ }
243
+ /**
244
+ * creates column and field with custom type, for example currency
245
+ * if field exists, it is replaced
246
+ * DO NOT USE WITH TYPES WHERE ARGS ARE REQUIRED - ERROR WILL BE THROWN
247
+ * for enum use withEnumType
248
+ * for custom class use withClassType
249
+ * @param property name of field
250
+ * @param columnType required column type
251
+ * @param fieldType optional, if not provided it is converted from column type
252
+ */
253
+ withModifiedType(property, columnType, fieldType) {
254
+ if (columnType === ColumnTypeEnum.Enum) {
255
+ throw new Error('Do not use with types where args are required');
256
+ }
257
+ const attributeDef = this._attributes.find(atribute => atribute.name === property);
258
+ if (attributeDef != null) {
259
+ fieldType ?? (fieldType = FieldUtil.columnTypeToFieldType(columnType));
260
+ attributeDef.fieldType = fieldType;
261
+ this._table.withModifiedType(property, columnType);
262
+ this._editEditor.withModifiedType(property, fieldType);
263
+ this._addEditor.withModifiedType(property, fieldType);
264
+ this._viewEditor.withModifiedType(property, fieldType);
265
+ }
266
+ return this;
267
+ }
268
+ /**
269
+ * creates column with enum type
270
+ * if fields exists, it is replaced
271
+ * @param property property name
272
+ * @param enumType type of enum
273
+ * @param fieldType type of field, optional, default is Text
274
+ */
275
+ withCustomEnumType(property, enumType, fieldType) {
276
+ const attributeDef = this._attributes.find(atribute => atribute.name === property);
277
+ if (attributeDef != null) {
278
+ attributeDef.fieldType = fieldType ?? FieldInputTypeEnum.Text;
279
+ this._table.withCustomEnumType(property, enumType);
280
+ this._editEditor.withCustomEnumType(property, enumType);
281
+ this._viewEditor.withCustomEnumType(property, enumType);
282
+ this._addEditor.withCustomEnumType(property, enumType);
283
+ }
284
+ return this;
285
+ }
286
+ /**
287
+ * generates column with custom class type
288
+ * field is generated only if lookupProvider is provided
289
+ * @param property property name
290
+ * @param modelType class type of object
291
+ * @param titleProperty
292
+ * @param lookupProvider
293
+ * @param itemsLabelProperty
294
+ * @param filterProperty
295
+ */
296
+ withCustomClassType(property, modelType, lookupProvider, titleProperty, itemsLabelProperty, filterProperty) {
297
+ const attributeDef = this._attributes.find(atribute => atribute.name === property);
298
+ if (attributeDef != null) {
299
+ modelType ?? (modelType = attributeDef.classType ?? ObjectSerializer.get().findType(attributeDef.type));
300
+ titleProperty ?? (titleProperty = ModelUtil.findTitleAttribute(modelType) ?? undefined);
301
+ itemsLabelProperty ?? (itemsLabelProperty = titleProperty);
302
+ attributeDef.columnType = ColumnTypeEnum.String;
303
+ attributeDef.fieldType = FieldInputTypeEnum.Text;
304
+ if (lookupProvider != null) {
305
+ this._table.withClassLookupProvider(property, lookupProvider, itemsLabelProperty, filterProperty);
306
+ this._addEditor.withClassLookupProvider(property, modelType, lookupProvider, itemsLabelProperty);
307
+ this._viewEditor.withClassLookupProvider(property, modelType, lookupProvider, itemsLabelProperty);
308
+ this._editEditor.withClassLookupProvider(property, modelType, lookupProvider, itemsLabelProperty);
309
+ }
310
+ else {
311
+ const column = this.getColumn(property) ?? this.addColumn(property);
312
+ column.withObjectProperty(modelType, titleProperty);
313
+ }
314
+ }
315
+ return this;
316
+ }
317
+ }
318
+ export class TableviewDynamicDescriptor extends TableviewDescriptor {
319
+ constructor(table, idProperty, titleProperty) {
320
+ super({}, idProperty, titleProperty);
321
+ this._table = table ?? new TableDynamicDescriptor(idProperty, titleProperty);
322
+ super._tableTitle = undefined;
323
+ }
324
+ get table() {
325
+ return this._table;
326
+ }
327
+ /**
328
+ * sets custom table descriptor
329
+ * @param descriptor
330
+ */
331
+ withTableDescriptor(descriptor) {
332
+ this._table = descriptor;
333
+ return this;
334
+ }
335
+ /**
336
+ * sets visibility hidden state to column with given property
337
+ * equals to be removing in auto and base tableview descriptor
338
+ * * @param property column's property
339
+ */
340
+ removeColumn(property) {
341
+ const column = this._table.columns.find(col => col.property === property) ?? this._table.addColumn(property);
342
+ column.withVisibility(false);
343
+ return this;
344
+ }
345
+ /**
346
+ * creates depp copy of tableview object and its children
347
+ */
348
+ copy() {
349
+ const descriptor = new TableviewDynamicDescriptor(this._table, this.model.idPropertyName, this.model.titlePropertyName);
350
+ descriptor._table = this._table.copy();
351
+ descriptor._tableTitle = this._tableTitle;
352
+ return descriptor;
353
+ }
354
+ }
355
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LmRlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2Rlc2NyaXB0b3JzL3RhYmxldmlldy5kZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUk5QyxPQUFPLEVBQUMsU0FBUyxFQUFFLFNBQVMsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUM5QyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDdEQsT0FBTyxFQUdILG9CQUFvQixFQUNwQixnQkFBZ0IsRUFNaEIsZUFBZSxFQUNmLG1CQUFtQixFQUNuQixlQUFlLEVBQ2Ysc0JBQXNCLEVBQ3pCLE1BQU0sU0FBUyxDQUFDO0FBQ2pCLE9BQU8sRUFBQyxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxTQUFTLENBQUM7QUFHOUUsTUFBTSxPQUFPLG1CQUFtQjtJQVU1QixZQUFZLFNBQXVCLEVBQUUsVUFBbUIsRUFBRSxhQUFzQjtRQUM1RSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksZUFBZSxDQUFJLFNBQVMsRUFBRSxVQUFVLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDM0UsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLGVBQWUsQ0FBSSxTQUFTLEVBQUUsVUFBVSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQzNFLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBSSxTQUFTLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6RyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBSSxTQUFTLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxH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Q0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUN4SCxVQUFVLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkMsVUFBVSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQzFDLE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VHlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7RmllbGRWYWxpZGF0b3JGbn0gZnJvbSAnQG5neC1mb3JtbHkvY29yZS9saWIvbW9kZWxzL2NvbmZpZyc7XG5cbmltcG9ydCB7T2JqZWN0U2VyaWFsaXplcn0gZnJvbSAnLi4vYXBpL3V0aWxzJztcbmltcG9ydCB7SUxvb2t1cERhdGFQcm92aWRlcn0gZnJvbSAnLi4vZGF0YS1wcm92aWRlcnMnO1xuaW1wb3J0IHtJQ29sdW1uVmFsdWVDb21wb25lbnR9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQge0NsYXNzVHlwZSwgRW51bUNvbnN0YW50VHlwZSwgRW51bVR5cGV9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7RmllbGRVdGlsLCBNb2RlbFV0aWx9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7VGFibGV2aWV3VXRpbH0gZnJvbSAnLi4vdXRpbHMvdGFibGV2aWV3LnV0aWwnO1xuaW1wb3J0IHtcbiAgICBBRmllbGREZXNjcmlwdG9yLFxuICAgIENvbHVtbkRlc2NyaXB0b3IsXG4gICAgRWRpdG9yQXV0b0Rlc2NyaXB0b3IsXG4gICAgRWRpdG9yRGVzY3JpcHRvcixcbiAgICBGaWVsZElucHV0RGVzY3JpcHRvcixcbiAgICBGaWVsZExvb2t1cERlc2NyaXB0b3IsXG4gICAgRmllbGRMb29rdXBFbnVtRGVzY3JpcHRvcixcbiAgICBGaWVsZE1hbnlFZGl0b3JEZXNjcmlwdG9yLFxuICAgIEZpZWxkTWFueVRvTWFueUVkaXRvckRlc2NyaXB0b3IsXG4gICAgTW9kZWxEZXNjcmlwdG9yLFxuICAgIFRhYmxlQXV0b0Rlc2NyaXB0b3IsXG4gICAgVGFibGVEZXNjcmlwdG9yLFxuICAgIFRhYmxlRHluYW1pY0Rlc2NyaXB0b3Jcbn0gZnJvbSAnLi9pbmRleCc7XG5pbXBvcnQge0NvbHVtblR5cGVFbnVtLCBGaWVsZElucHV0VHlwZUVudW0sIFRhYmxldmlld1R5cGVFbnVtfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7VGFibGV2aWV3QXR0cmlidXRlRGVmfSBmcm9tICcuL3R5cGVzL3RhYmxldmlldy1hdHRyLm1vZGVsJztcblxuZXhwb3J0IGNsYXNzIFRhYmxldmlld0Rlc2NyaXB0b3I8VD4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX21vZGVsOiBNb2RlbERlc2NyaXB0b3I8VD47XG5cbiAgICBwcm90ZWN0ZWQgX3RhYmxlOiBUYWJsZURlc2NyaXB0b3I8VD47XG4gICAgcHJvdGVjdGVkIF92aWV3RWRpdG9yOiBFZGl0b3JEZXNjcmlwdG9yPFQ+O1xuICAgIHByb3RlY3RlZCBfYWRkRWRpdG9yOiBFZGl0b3JEZXNjcmlwdG9yPFQ+O1xuICAgIHByb3RlY3RlZCBfZWRpdEVkaXRvcjogRWRpdG9yRGVzY3JpcHRvcjxUPjtcblxuICAgIHByb3RlY3RlZCBfdGFibGVUaXRsZT86IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKG1vZGVsVHlwZTogQ2xhc3NUeXBlPFQ+LCBpZFByb3BlcnR5Pzogc3RyaW5nLCB0aXRsZVByb3BlcnR5Pzogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX21vZGVsID0gbmV3IE1vZGVsRGVzY3JpcHRvcjxUPihtb2RlbFR5cGUsIGlkUHJvcGVydHksIHRpdGxlUHJvcGVydHkpO1xuICAgICAgICB0aGlzLl90YWJsZSA9IG5ldyBUYWJsZURlc2NyaXB0b3I8VD4obW9kZWxUeXBlLCBpZFByb3BlcnR5LCB0aXRsZVByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5fdmlld0VkaXRvciA9IG5ldyBFZGl0b3JEZXNjcmlwdG9yPFQ+KG1vZGVsVHlwZSwgaWRQcm9wZXJ0eSwgdGl0bGVQcm9wZXJ0eSwgVGFibGV2aWV3VHlwZUVudW0uVmlldyk7XG4gICAgICAgIHRoaXMuX3ZpZXdFZGl0b3Iud2l0aERpc2FibGVkKCk7XG4gICAgICAgIHRoaXMuX2FkZEVkaXRvciA9IG5ldyBFZGl0b3JEZXNjcmlwdG9yPFQ+KG1vZGVsVHlwZSwgaWRQcm9wZXJ0eSwgdGl0bGVQcm9wZXJ0eSwgVGFibGV2aWV3VHlwZUVudW0uQWRkKTtcbiAgICAgICAgdGhpcy5fZWRpdEVkaXRvciA9IG5ldyBFZGl0b3JEZXNjcmlwdG9yPFQ+KG1vZGVsVHlwZSwgaWRQcm9wZXJ0eSwgdGl0bGVQcm9wZXJ0eSwgVGFibGV2aWV3VHlwZUVudW0uRWRpdCk7XG4gICAgICAgIHRoaXMuX3RhYmxlVGl0bGUgPSBgJHt0aGlzLl9tb2RlbC50eXBlTmFtZX0ubmFtZWA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY3JlYXRlcyBkZXNjcmlwdG9yIGZyb20gbW9kZWxUeXBlXG4gICAgICogQHBhcmFtIG1vZGVsVHlwZVxuICAgICAqIEBwYXJhbSBhdHRyaWJ1dGVzXG4gICAgICogQHBhcmFtIGlkUHJvcGVydHlcbiAgICAgKiBAcGFyYW0gdGl0bGVQcm9wZXJ0eVxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgYXV0b1RhYmxldmlldzxUPihtb2RlbFR5cGU6IENsYXNzVHlwZTxUPiwgaWRQcm9wZXJ0eT86IHN0cmluZywgdGl0bGVQcm9wZXJ0eT86IHN0cmluZyk6IFRhYmxldmlld0F1dG9EZXNjcmlwdG9yPFQ+IHtcbiAgICAgICAgcmV0dXJuIFRhYmxldmlld0F1dG9EZXNjcmlwdG9yLmdlbmVyYXRlRnJvbShtb2RlbFR5cGUsIGlkUHJvcGVydHksIHRpdGxlUHJvcGVydHkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNyZWF0ZXMgZHluYW1pYyBkZXNjcmlwdG9yXG4gICAgICogQHBhcmFtIHRhYmxlXG4gICAgICogQHBhcmFtIGlkUHJvcGVydHlcbiAgICAgKiBAcGFyYW0gdGl0bGVQcm9wZXJ0eVxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZHluYW1pY1RhYmxldmlldyh0YWJsZT86IFRhYmxlRHluYW1pY0Rlc2NyaXB0b3IsIGlkUHJvcGVydHk/OiBzdHJpbmcsIHRpdGxlUHJvcGVydHk/OiBzdHJpbmcpOiBUYWJsZXZpZXdEeW5hbWljRGVzY3JpcHRvciB7XG4gICAgICAgIHJldHVybiBuZXcgVGFibGV2aWV3RHluYW1pY0Rlc2NyaXB0b3IodGFibGUsIGlkUHJvcGVydHksIHRpdGxlUHJvcGVydHkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdGFibGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHZpZXdFZGl0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl92aWV3RWRpdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYWRkRWRpdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkRWRpdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZWRpdEVkaXRvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VkaXRFZGl0b3I7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0YWJsZVRpdGxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGVUaXRsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG1vZGVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbW9kZWw7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhUYWJsZURlc2NyaXB0b3IoZGVzY3JpcHRvcjogVGFibGVEZXNjcmlwdG9yPFQ+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3RhYmxlID0gZGVzY3JpcHRvcjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhWaWV3RGVzY3JpcHRvcihkZXNjcmlwdG9yOiBFZGl0b3JEZXNjcmlwdG9yPFQ+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3ZpZXdFZGl0b3IgPSBkZXNjcmlwdG9yO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEFkZERlc2NyaXB0b3IoZGVzY3JpcHRvcjogRWRpdG9yRGVzY3JpcHRvcjxUPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9hZGRFZGl0b3IgPSBkZXNjcmlwdG9yO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEVkaXREZXNjcmlwdG9yKGRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3I8VD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZWRpdEVkaXRvciA9IGRlc2NyaXB0b3I7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoVGFibGVUaXRsZSh0aXRsZTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3RhYmxlVGl0bGUgPSB0aXRsZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhWYWxpZGF0b3IobmFtZTogc3RyaW5nLCBleHByZXNzaW9uOiBGaWVsZFZhbGlkYXRvckZuKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3ZpZXdFZGl0b3IuYWRkVmFsaWRhdGlvbihuYW1lLCBleHByZXNzaW9uKTtcbiAgICAgICAgdGhpcy5fYWRkRWRpdG9yLmFkZFZhbGlkYXRpb24obmFtZSwgZXhwcmVzc2lvbik7XG4gICAgICAgIHRoaXMuX2VkaXRFZGl0b3IuYWRkVmFsaWRhdGlvbihuYW1lLCBleHByZXNzaW9uKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZENvbHVtbkRlc2NyaXB0b3I8Q1Q+KGNvbHVtbjogQ29sdW1uRGVzY3JpcHRvcjxDVCwgVD4pOiBUYWJsZURlc2NyaXB0b3I8VD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGUuYWRkQ29sdW1uRGVzY3JpcHRvcjxDVD4oY29sdW1uKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkQ29sdW1uKHByb3BlcnR5OiBzdHJpbmcpOiBDb2x1bW5EZXNjcmlwdG9yPHN0cmluZywgVD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGUuYWRkQ29sdW1uKHByb3BlcnR5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q29sdW1uKHByb3BlcnR5OiBzdHJpbmcpOiBDb2x1bW5EZXNjcmlwdG9yPHN0cmluZywgVD4gfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGUuY29sdW1ucy5maW5kKGNvbCA9PiBjb2wucHJvcGVydHkgPT09IHByb3BlcnR5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlQ29sdW1uKHByb3BlcnR5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGFibGUucmVtb3ZlQ29sdW1uKHByb3BlcnR5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVwbGFjZUNvbHVtbihwcm9wZXJ0eTogc3RyaW5nKTogQ29sdW1uRGVzY3JpcHRvcjxzdHJpbmcsIFQ+IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlLnJlcGxhY2VDb2x1bW4ocHJvcGVydHkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRGaWVsZChwcm9wZXJ0eTogc3RyaW5nLCBlZGl0b3JUeXBlOiBUYWJsZXZpZXdUeXBlRW51bSk6IEFGaWVsZERlc2NyaXB0b3I8YW55LCBUPiB8IG51bGwge1xuICAgICAgICBzd2l0Y2ggKGVkaXRvclR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgVGFibGV2aWV3VHlwZUVudW0uRWRpdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZWRpdEVkaXRvci5nZXRGaWVsZChwcm9wZXJ0eSk7XG4gICAgICAgICAgICBjYXNlIFRhYmxldmlld1R5cGVFbnVtLkFkZDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fYWRkRWRpdG9yLmdldEZpZWxkKHByb3BlcnR5KTtcbiAgICAgICAgICAgIGNhc2UgVGFibGV2aWV3VHlwZUVudW0uVmlldzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fdmlld0VkaXRvci5nZXRGaWVsZChwcm9wZXJ0eSk7XG4gICAgICAgICAgICBjYXNlIFRhYmxldmlld1R5cGVFbnVtLk5vbmU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlRmllbGQocHJvcGVydHk6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLl9lZGl0RWRpdG9yLnJlbW92ZUZpZWxkKHByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5fYWRkRWRpdG9yLnJlbW92ZUZpZWxkKHByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5fdmlld0VkaXRvci5yZW1vdmVGaWVsZChwcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZENvbHVtbk51bWJlcihwcm9wZXJ0eTogc3RyaW5nLCBkaXNwbGF5Rm9ybWF0Pzogc3RyaW5nKTogQ29sdW1uRGVzY3JpcHRvcjxudW1iZXIsIFQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlLmFkZENvbHVtbk51bWJlcihwcm9wZXJ0eSwgZGlzcGxheUZvcm1hdCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZENvbHVtbkRhdGUocHJvcGVydHk6IHN0cmluZywgZGlzcGxheUZvcm1hdD86IHN0cmluZyk6IENvbHVtbkRlc2NyaXB0b3I8RGF0ZSwgVD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGUuYWRkQ29sdW1uRGF0ZShwcm9wZXJ0eSwgZGlzcGxheUZvcm1hdCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZENvbHVtbkJvb2xlYW4ocHJvcGVydHk6IHN0cmluZywgeWVzPzogc3RyaW5nLCBubz86IHN0cmluZywgYXNJY29uID0gZmFsc2UpOiBDb2x1bW5EZXNjcmlwdG9yPGJvb2xlYW4sIFQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlLmFkZENvbHVtbkJvb2xlYW4ocHJvcGVydHksIHllcywgbm8sIGFzSWNvbik7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZENvbHVtbkVudW0ocHJvcGVydHk6IHN0cmluZywgZW51bVR5cGU6IEVudW1UeXBlLCBuYW1lQXNWYWx1ZSA9IGZhbHNlLCB0aXRsZVBhdGg/OiBzdHJpbmcgfCBudWxsKTogQ29sdW1uRGVzY3JpcHRvcjxFbnVtVHlwZSwgVD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGUuYWRkQ29sdW1uRW51bShwcm9wZXJ0eSwgZW51bVR5cGUsIG5hbWVBc1ZhbHVlLCB0aXRsZVBhdGgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRDb2x1bW5DdXN0b21Db21wb25lbnQocHJvcGVydHk6IHN0cmluZywgY3VzdG9tQ29tcG9uZW50VHlwZTogVHlwZTxJQ29sdW1uVmFsdWVDb21wb25lbnQ8VD4+KTogQ29sdW1uRGVzY3JpcHRvcjxhbnksIFQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlLmFkZENvbHVtbkN1c3RvbUNvbXBvbmVudChwcm9wZXJ0eSwgY3VzdG9tQ29tcG9uZW50VHlwZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZVRhYkdyb3VwKG5hbWU6IHN0cmluZywgdGl0bGU/OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdmlld0VkaXRvci5jcmVhdGVUYWJHcm91cChuYW1lLCB0aXRsZSk7XG4gICAgICAgIHRoaXMuX2FkZEVkaXRvci5jcmVhdGVUYWJHcm91cChuYW1lLCB0aXRsZSk7XG4gICAgICAgIHRoaXMuX2VkaXRFZGl0b3IuY3JlYXRlVGFiR3JvdXAobmFtZSwgdGl0bGUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlRmllbGRHcm91cChuYW1lOiBzdHJpbmcsIHRpdGxlPzogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3ZpZXdFZGl0b3IuY3JlYXRlRmllbGRHcm91cChuYW1lLCB0aXRsZSk7XG4gICAgICAgIHRoaXMuX2FkZEVkaXRvci5jcmVhdGVGaWVsZEdyb3VwKG5hbWUsIHRpdGxlKTtcbiAgICAgICAgdGhpcy5fZWRpdEVkaXRvci5jcmVhdGVGaWVsZEdyb3VwKG5hbWUsIHRpdGxlKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpZWxkRGVzY3JpcHRvcjxGVD4oZmllbGQ6IEFGaWVsZERlc2NyaXB0b3I8RlQsIFQ+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3ZpZXdFZGl0b3IuYWRkRmllbGREZXNjcmlwdG9yKGZpZWxkKTtcbiAgICAgICAgdGhpcy5fYWRkRWRpdG9yLmFkZEZpZWxkRGVzY3JpcHRvcihmaWVsZCk7XG4gICAgICAgIHRoaXMuX2VkaXRFZGl0b3IuYWRkRmllbGREZXNjcmlwdG9yKGZpZWxkKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpZWxkKHByb3BlcnR5OiBzdHJpbmcpOiBGaWVsZElucHV0RGVzY3JpcHRvcjxUPiB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5fdmlld0VkaXRvci5hZGRGaWVsZChwcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuX2FkZEVkaXRvci5hZGRGaWVsZERlc2NyaXB0b3IoZmllbGQpO1xuICAgICAgICB0aGlzLl9lZGl0RWRpdG9yLmFkZEZpZWxkRGVzY3JpcHRvcihmaWVsZCk7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmllbGRMb29rdXA8RlQ+KHByb3BlcnR5OiBzdHJpbmcsIG1vZGVsVHlwZTogQ2xhc3NUeXBlPEZUPik6IEZpZWxkTG9va3VwRGVzY3JpcHRvcjxGVCwgVD4ge1xuICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuX3ZpZXdFZGl0b3IuYWRkRmllbGRMb29rdXAocHJvcGVydHksIG1vZGVsVHlwZSk7XG4gICAgICAgIHRoaXMuX2FkZEVkaXRvci5hZGRGaWVsZERlc2NyaXB0b3IoZmllbGQpO1xuICAgICAgICB0aGlzLl9lZGl0RWRpdG9yLmFkZEZpZWxkRGVzY3JpcHRvcihmaWVsZCk7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmllbGRMb29rdXBFbnVtKFxuICAgICAgICBwcm9wZXJ0eTogc3RyaW5nLFxuICAgICAgICBlbnVtVHlwZTogRW51bVR5cGUsXG4gICAgICAgIG9wdGlvbnM/OiBBcnJheTxFbnVtQ29uc3RhbnRUeXBlPixcbiAgICAgICAgbmFtZUFzVmFsdWUgPSBmYWxzZSxcbiAgICAgICAgb3B0aW9uc1RpdGxlUGF0aD86IHN0cmluZyB8IG51bGxcbiAgICApOiBGaWVsZExvb2t1cEVudW1EZXNjcmlwdG9yPFQ+IHtcbiAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLl92aWV3RWRpdG9yLmFkZEZpZWxkTG9va3VwRW51bShwcm9wZXJ0eSwgZW51bVR5cGUsIG9wdGlvbnMsIG5hbWVBc1ZhbHVlLCBvcHRpb25zVGl0bGVQYXRoKTtcbiAgICAgICAgdGhpcy5fYWRkRWRpdG9yLmFkZEZpZWxkRGVzY3JpcHRvcihmaWVsZCk7XG4gICAgICAgIHRoaXMuX2VkaXRFZGl0b3IuYWRkRmllbGREZXNjcmlwdG9yKGZpZWxkKTtcbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRGaWVsZE1hbnlFZGl0b3I8RlQ+KHByb3BlcnR5OiBzdHJpbmcsIHRhYmxldmlld0Rlc2NyaXB0b3I6IFRhYmxldmlld0Rlc2NyaXB0b3I8RlQ+KTogRmllbGRNYW55RWRpdG9yRGVzY3JpcHRvcjxGVCwgVD4ge1xuICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuX3ZpZXdFZGl0b3IuYWRkRmllbGRNYW55RWRpdG9yKHByb3BlcnR5LCB0YWJsZXZpZXdEZXNjcmlwdG9yKTtcbiAgICAgICAgdGhpcy5fYWRkRWRpdG9yLmFkZEZpZWxkRGVzY3JpcHRvcihmaWVsZCk7XG4gICAgICAgIHRoaXMuX2VkaXRFZGl0b3IuYWRkRmllbGREZXNjcmlwdG9yKGZpZWxkKTtcbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRGaWVsZE1hbnlUb01hbnlFZGl0b3I8RlQ+KFxuICAgICAgICBwcm9wZXJ0eTogc3RyaW5nLFxuICAgICAgICBtYWluVGFibGVEZXNjcmlwdG9yOiBUYWJsZURlc2NyaXB0b3I8RlQ+LFxuICAgICAgICBsb29rdXBUYWJsZURlc2NyaXB0b3I6IFRhYmxlRGVzY3JpcHRvcjxGVD5cbiAgICApOiBGaWVsZE1hbnlUb01hbnlFZGl0b3JEZXNjcmlwdG9yPEZULCBUPiB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5fdmlld0VkaXRvci5hZGRGaWVsZE1hbnlUb01hbnlFZGl0b3IocHJvcGVydHksIG1haW5UYWJsZURlc2NyaXB0b3IsIGxvb2t1cFRhYmxlRGVzY3JpcHRvcik7XG4gICAgICAgIHRoaXMuX2FkZEVkaXRvci5hZGRGaWVsZERlc2NyaXB0b3IoZmllbGQpO1xuICAgICAgICB0aGlzLl9lZGl0RWRpdG9yLmFkZEZpZWxkRGVzY3JpcHRvcihmaWVsZCk7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29weSgpOiBUYWJsZXZpZXdEZXNjcmlwdG9yPFQ+IHtcbiAgICAgICAgY29uc3QgdGFibGV2aWV3ID0gbmV3IFRhYmxldmlld0Rlc2NyaXB0b3IodGhpcy5fbW9kZWwudHlwZSwgdGhpcy5fbW9kZWwuaWRQcm9wZXJ0eU5hbWUsIHRoaXMuX21vZGVsLnRpdGxlUHJvcGVydHlOYW1lKTtcbiAgICAgICAgdGFibGV2aWV3Ll90YWJsZSA9IHRoaXMuX3RhYmxlLmNvcHkoKTtcbiAgICAgICAgdGFibGV2aWV3Ll92aWV3RWRpdG9yID0gdGhpcy5fdmlld0VkaXRvci5jb3B5KCk7XG4gICAgICAgIHRhYmxldmlldy5fYWRkRWRpdG9yID0gdGhpcy5fYWRkRWRpdG9yLmNvcHkoKTtcbiAgICAgICAgdGFibGV2aWV3Ll9lZGl0RWRpdG9yID0gdGhpcy5fZWRpdEVkaXRvci5jb3B5KCk7XG4gICAgICAgIHJldHVybiB0YWJsZXZpZXc7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGFibGV2aWV3QXV0b0Rlc2NyaXB0b3I8VD4gZXh0ZW5kcyBUYWJsZXZpZXdEZXNjcmlwdG9yPFQ+IHtcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgX3RhYmxlOiBUYWJsZUF1dG9EZXNjcmlwdG9yPFQ+O1xuICAgIHByb3RlY3RlZCBvdmVycmlkZSBfZWRpdEVkaXRvcjogRWRpdG9yQXV0b0Rlc2NyaXB0b3I8VD47XG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIF92aWV3RWRpdG9yOiBFZGl0b3JBdXRvRGVzY3JpcHRvcjxUPjtcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgX2FkZEVkaXRvcjogRWRpdG9yQXV0b0Rlc2NyaXB0b3I8VD47XG5cbiAgICBwcml2YXRlIF9hdHRyaWJ1dGVzOiBBcnJheTxUYWJsZXZpZXdBdHRyaWJ1dGVEZWY+O1xuXG4gICAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcihtb2RlbFR5cGU6IENsYXNzVHlwZTxUPiwgYXR0cmlidXRlczogQXJyYXk8VGFibGV2aWV3QXR0cmlidXRlRGVmPiwgaWRQcm9wZXJ0eT86IHN0cmluZywgdGl0bGVQcm9wZXJ0eT86IHN0cmluZykge1xuICAgICAgICBzdXBlcihtb2RlbFR5cGUsIGlkUHJvcGVydHksIHRpdGxlUHJvcGVydHkpO1xuICAgICAgICB0aGlzLl9hdHRyaWJ1dGVzID0gYXR0cmlidXRlcztcbiAgICAgICAgdGhpcy5fdGFibGUgPSBUYWJsZUF1dG9EZXNjcmlwdG9yLmdlbmVyYXRlRnVsbEZyb20obW9kZWxUeXBlLCBpZFByb3BlcnR5LCB0aXRsZVByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5fZWRpdEVkaXRvciA9IEVkaXRvckF1dG9EZXNjcmlwdG9yLmdlbmVyYXRlRnVsbEZyb20obW9kZWxUeXBlLCBpZFByb3BlcnR5LCB0aXRsZVByb3BlcnR5LCBUYWJsZXZpZXdUeXBlRW51bS5FZGl0KTtcbiAgICAgICAgdGhpcy5fdmlld0VkaXRvciA9IEVkaXRvckF1dG9EZXNjcmlwdG9yLmdlbmVyYXRlRnVsbEZyb20obW9kZWxUeXBlLCBpZFByb3BlcnR5LCB0aXRsZVByb3BlcnR5LCBUYWJsZXZpZXdUeXBlRW51bS5WaWV3KTtcbiAgICAgICAgdGhpcy5fYWRkRWRpdG9yID0gRWRpdG9yQXV0b0Rlc2NyaXB0b3IuZ2VuZXJhdGVGdWxsRnJvbShtb2RlbFR5cGUsIGlkUHJvcGVydHksIHRpdGxlUHJvcGVydHksIFRhYmxldmlld1R5cGVFbnVtLkFkZCk7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIGdldCB0YWJsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlO1xuICAgIH1cblxuICAgIC8qKioqKioqXG4gICAgICogU3RhdGljIGJ1aWxkZXJzXG4gICAgICoqKioqKiovXG5cbiAgICAvKipcbiAgICAgKiBnZW5lcmF0ZXMgZnVsbCBkZXNjcmlwdG9yIHdpdGggYWxsIGZpZWxkcyBkZWZpbmVkIGluIGF0dHJpYnV0ZXMgZmllbGQgKE9wZW5BcGkgc3BlY2lmaWNhdGlvbikgRVhDRVBUIGNsYXNzIHR5cGUgZmllbGRcbiAgICAgKi9cbiAgICBzdGF0aWMgZ2VuZXJhdGVGcm9tPFQ+KG1vZGVsVHlwZTogQ2xhc3NUeXBlPFQ+LCBpZFByb3BlcnR5Pzogc3RyaW5nLCB0aXRsZVByb3BlcnR5Pzogc3RyaW5nKTogVGFibGV2aWV3QXV0b0Rlc2NyaXB0b3I8VD4ge1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gbmV3IFRhYmxldmlld0F1dG9EZXNjcmlwdG9yKG1vZGVsVHlwZSwgVGFibGV2aWV3VXRpbC5nZXRBdHRyaWJ1dGVEZWZNYXAobW9kZWxUeXBlKSwgaWRQcm9wZXJ0eSwgdGl0bGVQcm9wZXJ0eSk7XG4gICAgICAgIGRlc2NyaXB0b3IuX3RhYmxlID0gVGFibGVBdXRvRGVzY3JpcHRvci5nZW5lcmF0ZUZ1bGxGcm9tKG1vZGVsVHlwZSwgaWRQcm9wZXJ0eSwgdGl0bGVQcm9wZXJ0eSk7XG4gICAgICAgIGRlc2NyaXB0b3IuX2VkaXRFZGl0b3IgPSBFZGl0b3JBdXRvRGVzY3JpcHRvci5nZW5lcmF0ZUZ1bGxGcm9tKG1vZGVsVHlwZSwgaWRQcm9wZXJ0eSwgdGl0bGVQcm9wZXJ0eSwgVGFibGV2aWV3VHlwZUVudW0uRWRpdCk7XG4gICAgICAgIGRlc2NyaXB0b3IuX3ZpZXdFZGl0b3IgPSBFZGl0b3JBdXRvRGVzY3JpcHRvci5nZW5lcmF0ZUZ1bGxGcm9tKG1vZGVsVHlwZSwgaWRQcm9wZXJ0eSwgdGl0bGVQcm9wZXJ0eSwgVGFibGV2aWV3VHlwZUVudW0uVmlldyk7XG4gICAgICAgIGRlc2NyaXB0b3IuX2FkZEVkaXRvciA9IEVkaXRvckF1dG9EZXNjcmlwdG9yLmdlbmVyYXRlRnVsbEZyb20obW9kZWxUeXBlLCBpZFByb3BlcnR5LCB0aXRsZVByb3BlcnR5LCBUYWJsZXZpZXdUeXBlRW51bS5BZGQpO1xuXG4gICAgICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGRlZmluZXMgYW5kIG92ZXJyaWRlcyB0YWJsZSBkZXNjcmlwdG9yXG4gICAgICogQHBhcmFtIHRhYmxlRGVzY3JpcHRvclxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoQ3VzdG9tVGFibGVEZXNjcmlwdG9yKHRhYmxlRGVzY3JpcHRvcjogVGFibGVBdXRvRGVzY3JpcHRvcjxUPik6IHRoaXMge1xuICAgICAgICB0aGlzLl90YWJsZSA9IHRhYmxlRGVzY3JpcHRvcjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZGVmaW5lcyBhbmQgb3ZlcnJpZGVzIG9uZSBvciBhbGwgZWRpdG9yIGRlc2NyaXB0b3JcbiAgICAgKiBAcGFyYW0gZWRpdG9yRGVzY3JpcHRvclxuICAgICAqIEBwYXJhbSB0YWJsZXZpZXdUeXBlIGlmIG5vdCBwcm92aWRlZCBhbGwgZWRpdG9yIGRlc2NyaXB0b3JzIHdpbGwgYmUgdXBkYXRlZCAoYWRkLCBlZGl0LCB2aWV3KVxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoQ3VzdG9tRWRpdG9yRGVzY3JpcHRvcihlZGl0b3JEZXNjcmlwdG9yOiBFZGl0b3JBdXRvRGVzY3JpcHRvcjxUPiwgdGFibGV2aWV3VHlwZTogVGFibGV2aWV3VHlwZUVudW0gfCAnYWxsJyA9ICdhbGwnKTogdGhpcyB7XG4gICAgICAgIGlmICh0YWJsZXZpZXdUeXBlID09PSAnYWxsJykge1xuICAgICAgICAgICAgdGhpcy5fYWRkRWRpdG9yID0gZWRpdG9yRGVzY3JpcHRvci5jb3B5KCk7XG4gICAgICAgICAgICB0aGlzLl92aWV3RWRpdG9yID0gZWRpdG9yRGVzY3JpcHRvci5jb3B5KCk7XG4gICAgICAgICAgICB0aGlzLl92aWV3RWRpdG9yLndpdGhEaXNhYmxlZCgpO1xuICAgICAgICAgICAgdGhpcy5fZWRpdEVkaXRvciA9IGVkaXRvckRlc2NyaXB0b3IuY29weSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3dpdGNoICh0YWJsZXZpZXdUeXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBUYWJsZXZpZXdUeXBlRW51bS5BZGQ6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2FkZEVkaXRvciA9IGVkaXRvckRlc2NyaXB0b3I7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgVGFibGV2aWV3VHlwZUVudW0uVmlldzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdmlld0VkaXRvciA9IGVkaXRvckRlc2NyaXB0b3I7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgVGFibGV2aWV3VHlwZUVudW0uRWRpdDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWRpdEVkaXRvciA9IGVkaXRvckRlc2NyaXB0b3I7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjcmVhdGVzIGNvbHVtbiBhbmQgZmllbGQgd2l0aCBjdXN0b20gdHlwZSwgZm9yIGV4YW1wbGUgY3VycmVuY3lcbiAgICAgKiBpZiBmaWVsZCBleGlzdHMsIGl0IGlzIHJlcGxhY2VkXG4gICAgICogRE8gTk9UIFVTRSBXSVRIIFRZUEVTIFdIRVJFIEFSR1MgQVJFIFJFUVVJUkVEIC0gRVJST1IgV0lMTCBCRSBUSFJPV05cbiAgICAgKiBmb3IgZW51bSB1c2Ugd2l0aEVudW1UeXBlXG4gICAgICogZm9yIGN1c3RvbSBjbGFzcyB1c2Ugd2l0aENsYXNzVHlwZVxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eSBuYW1lIG9mIGZpZWxkXG4gICAgICogQHBhcmFtIGNvbHVtblR5cGUgcmVxdWlyZWQgY29sdW1uIHR5cGVcbiAgICAgKiBAcGFyYW0gZmllbGRUeXBlIG9wdGlvbmFsLCBpZiBub3QgcHJvdmlkZWQgaXQgaXMgY29udmVydGVkIGZyb20gY29sdW1uIHR5cGVcbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aE1vZGlmaWVkVHlwZShwcm9wZXJ0eTogc3RyaW5nLCBjb2x1bW5UeXBlOiBDb2x1bW5UeXBlRW51bSwgZmllbGRUeXBlPzogRmllbGRJbnB1dFR5cGVFbnVtKTogdGhpcyB7XG4gICAgICAgIGlmIChjb2x1bW5UeXBlID09PSBDb2x1bW5UeXBlRW51bS5FbnVtKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RvIG5vdCB1c2Ugd2l0aCB0eXBlcyB3aGVyZSBhcmdzIGFyZSByZXF1aXJlZCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYXR0cmlidXRlRGVmID0gdGhpcy5fYXR0cmlidXRlcy5maW5kKGF0cmlidXRlID0+IGF0cmlidXRlLm5hbWUgPT09IHByb3BlcnR5KTtcblxuICAgICAgICBpZiAoYXR0cmlidXRlRGVmICE9IG51bGwpIHtcbiAgICAgICAgICAgIGZpZWxkVHlwZSA/Pz0gRmllbGRVdGlsLmNvbHVtblR5cGVUb0ZpZWxkVHlwZShjb2x1bW5UeXBlKTtcbiAgICAgICAgICAgIGF0dHJpYnV0ZURlZi5maWVsZFR5cGUgPSBmaWVsZFR5cGU7XG5cbiAgICAgICAgICAgIHRoaXMuX3RhYmxlLndpdGhNb2RpZmllZFR5cGUocHJvcGVydHksIGNvbHVtblR5cGUpO1xuICAgICAgICAgICAgdGhpcy5fZWRpdEVkaXRvci53aXRoTW9kaWZpZWRUeXBlKHByb3BlcnR5LCBmaWVsZFR5cGUpO1xuICAgICAgICAgICAgdGhpcy5fYWRkRWRpdG9yLndpdGhNb2RpZmllZFR5cGUocHJvcGVydHksIGZpZWxkVHlwZSk7XG4gICAgICAgICAgICB0aGlzLl92aWV3RWRpdG9yLndpdGhNb2RpZmllZFR5cGUocHJvcGVydHksIGZpZWxkVHlwZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjcmVhdGVzIGNvbHVtbiB3aXRoIGVudW0gdHlwZVxuICAgICAqIGlmIGZpZWxkcyBleGlzdHMsIGl0IGlzIHJlcGxhY2VkXG4gICAgICogQHBhcmFtIHByb3BlcnR5IHByb3BlcnR5IG5hbWVcbiAgICAgKiBAcGFyYW0gZW51bVR5cGUgdHlwZSBvZiBlbnVtXG4gICAgICogQHBhcmFtIGZpZWxkVHlwZSB0eXBlIG9mIGZpZWxkLCBvcHRpb25hbCwgZGVmYXVsdCBpcyBUZXh0XG4gICAgICovXG4gICAgcHVibGljIHdpdGhDdXN0b21FbnVtVHlwZShwcm9wZXJ0eTogc3RyaW5nLCBlbnVtVHlwZT86IEVudW1UeXBlLCBmaWVsZFR5cGU/OiBGaWVsZElucHV0VHlwZUVudW0pOiB0aGlzIHtcbiAgICAgICAgY29uc3QgYXR0cmlidXRlRGVmID0gdGhpcy5fYXR0cmlidXRlcy5maW5kKGF0cmlidXRlID0+IGF0cmlidXRlLm5hbWUgPT09IHByb3BlcnR5KTtcblxuICAgICAgICBpZiAoYXR0cmlidXRlRGVmICE9IG51bGwpIHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZURlZi5maWVsZFR5cGUgPSBmaWVsZFR5cGUgPz8gRmllbGRJbnB1dFR5cGVFbnVtLlRleHQ7XG5cbiAgICAgICAgICAgIHRoaXMuX3RhYmxlLndpdGhDdXN0b21FbnVtVHlwZShwcm9wZXJ0eSwgZW51bVR5cGUpO1xuICAgICAgICAgICAgdGhpcy5fZWRpdEVkaXRvci53aXRoQ3VzdG9tRW51bVR5cGUocHJvcGVydHksIGVudW1UeXBlKTtcbiAgICAgICAgICAgIHRoaXMuX3ZpZXdFZGl0b3Iud2l0aEN1c3RvbUVudW1UeXBlKHByb3BlcnR5LCBlbnVtVHlwZSk7XG4gICAgICAgICAgICB0aGlzLl9hZGRFZGl0b3Iud2l0aEN1c3RvbUVudW1UeXBlKHByb3BlcnR5LCBlbnVtVHlwZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBnZW5lcmF0ZXMgY29sdW1uIHdpdGggY3VzdG9tIGNsYXNzIHR5cGVcbiAgICAgKiBmaWVsZCBpcyBnZW5lcmF0ZWQgb25seSBpZiBsb29rdXBQcm92aWRlciBpcyBwcm92aWRlZFxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eSBwcm9wZXJ0eSBuYW1lXG4gICAgICogQHBhcmFtIG1vZGVsVHlwZSBjbGFzcyB0eXBlIG9mIG9iamVjdFxuICAgICAqIEBwYXJhbSB0aXRsZVByb3BlcnR5XG4gICAgICogQHBhcmFtIGxvb2t1cFByb3ZpZGVyXG4gICAgICogQHBhcmFtIGl0ZW1zTGFiZWxQcm9wZXJ0eVxuICAgICAqIEBwYXJhbSBmaWx0ZXJQcm9wZXJ0eVxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoQ3VzdG9tQ2xhc3NUeXBlPE1UPihcbiAgICAgICAgcHJvcGVydHk6IHN0cmluZyxcbiAgICAgICAgbW9kZWxUeXBlPzogQ2xhc3NUeXBlPE1UPixcbiAgICAgICAgbG9va3VwUHJvdmlkZXI/OiBJTG9va3VwRGF0YVByb3ZpZGVyPE1ULCBhbnk+LFxuICAgICAgICB0aXRsZVByb3BlcnR5Pzogc3RyaW5nLFxuICAgICAgICBpdGVtc0xhYmVsUHJvcGVydHk/OiBzdHJpbmcsXG4gICAgICAgIGZpbHRlclByb3BlcnR5Pzogc3RyaW5nXG4gICAgKTogdGhpcyB7XG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZURlZiA9IHRoaXMuX2F0dHJpYnV0ZXMuZmluZChhdHJpYnV0ZSA9PiBhdHJpYnV0ZS5uYW1lID09PSBwcm9wZXJ0eSk7XG5cbiAgICAgICAgaWYgKGF0dHJpYnV0ZURlZiAhPSBudWxsKSB7XG4gICAgICAgICAgICBtb2RlbFR5cGUgPz89IGF0dHJpYnV0ZURlZi5jbGFzc1R5cGUgPz8gT2JqZWN0U2VyaWFsaXplci5nZXQoKS5maW5kVHlwZShhdHRyaWJ1dGVEZWYudHlwZSk7XG4gICAgICAgICAgICB0aXRsZVByb3BlcnR5ID8/PSBNb2RlbFV0aWwuZmluZFRpdGxlQXR0cmlidXRlKG1vZGVsVHlwZSEpID8/IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGl0ZW1zTGFiZWxQcm9wZXJ0eSA/Pz0gdGl0bGVQcm9wZXJ0eTtcblxuICAgICAgICAgICAgYXR0cmlidXRlRGVmLmNvbHVtblR5cGUgPSBDb2x1bW5UeXBlRW51bS5TdHJpbmc7XG4gICAgICAgICAgICBhdHRyaWJ1dGVEZWYuZmllbGRUeXBlID0gRmllbGRJbnB1dFR5cGVFbnVtLlRleHQ7XG5cbiAgICAgICAgICAgIGlmIChsb29rdXBQcm92aWRlciAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGFibGUud2l0aENsYXNzTG9va3VwUHJvdmlkZXIocHJvcGVydHksIGxvb2t1cFByb3ZpZGVyLCBpdGVtc0xhYmVsUHJvcGVydHksIGZpbHRlclByb3BlcnR5KTtcbiAgICAgICAgICAgICAgICB0aGlzLl9hZGRFZGl0b3Iud2l0aENsYXNzTG9va3VwUHJvdmlkZXIocHJvcGVydHksIG1vZGVsVHlwZSEsIGxvb2t1cFByb3ZpZGVyLCBpdGVtc0xhYmVsUHJvcGVydHkpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3ZpZXdFZGl0b3Iud2l0aENsYXNzTG9va3VwUHJvdmlkZXIocHJvcGVydHksIG1vZGVsVHlwZSEsIGxvb2t1cFByb3ZpZGVyLCBpdGVtc0xhYmVsUHJvcGVydHkpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VkaXRFZGl0b3Iud2l0aENsYXNzTG9va3VwUHJvdmlkZXIocHJvcGVydHksIG1vZGVsVHlwZSEsIGxvb2t1cFByb3ZpZGVyLCBpdGVtc0xhYmVsUHJvcGVydHkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmdldENvbHVtbihwcm9wZXJ0eSkgPz8gdGhpcy5hZGRDb2x1bW4ocHJvcGVydHkpO1xuICAgICAgICAgICAgICAgIGNvbHVtbi53aXRoT2JqZWN0UHJvcGVydHkobW9kZWxUeXBlISwgdGl0bGVQcm9wZXJ0eSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUYWJsZXZpZXdEeW5hbWljRGVzY3JpcHRvciBleHRlbmRzIFRhYmxldmlld0Rlc2NyaXB0b3I8YW55PiB7XG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIF90YWJsZTogVGFibGVEeW5hbWljRGVzY3JpcHRvcjtcblxuICAgIGNvbnN0cnVjdG9yKHRhYmxlPzogVGFibGVEeW5hbWljRGVzY3JpcHRvciwgaWRQcm9wZXJ0eT86IHN0cmluZywgdGl0bGVQcm9wZXJ0eT86IHN0cmluZykge1xuICAgICAgICBzdXBlcih7fSBhcyBDbGFzc1R5cGU8YW55PiwgaWRQcm9wZXJ0eSwgdGl0bGVQcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuX3RhYmxlID0gdGFibGUgPz8gbmV3IFRhYmxlRHluYW1pY0Rlc2NyaXB0b3IoaWRQcm9wZXJ0eSwgdGl0bGVQcm9wZXJ0eSk7XG4gICAgICAgIHN1cGVyLl90YWJsZVRpdGxlID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgdGFibGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBzZXRzIGN1c3RvbSB0YWJsZSBkZXNjcmlwdG9yXG4gICAgICogQHBhcmFtIGRlc2NyaXB0b3JcbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgd2l0aFRhYmxlRGVzY3JpcHRvcihkZXNjcmlwdG9yOiBUYWJsZUR5bmFtaWNEZXNjcmlwdG9yKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3RhYmxlID0gZGVzY3JpcHRvcjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogc2V0cyB2aXNpYmlsaXR5IGhpZGRlbiBzdGF0ZSB0byBjb2x1bW4gd2l0aCBnaXZlbiBwcm9wZXJ0eVxuICAgICAqIGVxdWFscyB0byBiZSByZW1vdmluZyBpbiBhdXRvIGFuZCBiYXNlIHRhYmxldmlldyBkZXNjcmlwdG9yXG4gICAgICogKiBAcGFyYW0gcHJvcGVydHkgY29sdW1uJ3MgcHJvcGVydHlcbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgcmVtb3ZlQ29sdW1uKHByb3BlcnR5OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgY29uc3QgY29sdW1uID0gdGhpcy5fdGFibGUuY29sdW1ucy5maW5kKGNvbCA9PiBjb2wucHJvcGVydHkgPT09IHByb3BlcnR5KSA/PyB0aGlzLl90YWJsZS5hZGRDb2x1bW4ocHJvcGVydHkpO1xuICAgICAgICBjb2x1bW4ud2l0aFZpc2liaWxpdHkoZmFsc2UpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjcmVhdGVzIGRlcHAgY29weSBvZiB0YWJsZXZpZXcgb2JqZWN0IGFuZCBpdHMgY2hpbGRyZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgY29weSgpOiBUYWJsZXZpZXdEeW5hbWljRGVzY3JpcHRvciB7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBuZXcgVGFibGV2aWV3RHluYW1pY0Rlc2NyaXB0b3IodGhpcy5fdGFibGUsIHRoaXMubW9kZWwuaWRQcm9wZXJ0eU5hbWUsIHRoaXMubW9kZWwudGl0bGVQcm9wZXJ0eU5hbWUpO1xuICAgICAgICBkZXNjcmlwdG9yLl90YWJsZSA9IHRoaXMuX3RhYmxlLmNvcHkoKTtcbiAgICAgICAgZGVzY3JpcHRvci5fdGFibGVUaXRsZSA9IHRoaXMuX3RhYmxlVGl0bGU7XG4gICAgICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICAgIH1cbn1cbiJdfQ==