@mediusinc/mng-commons 4.1.0 → 5.0.0-rc.0-c31d5206

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 (251) hide show
  1. package/assets/i18n/en.json +13 -66
  2. package/assets/i18n/sl.json +12 -67
  3. package/data-api/README.md +3 -0
  4. package/data-api/class-dto/README.md +3 -0
  5. package/data-api/class-dto/helpers/tableview-crud-create.d.ts +40 -0
  6. package/data-api/class-dto/index.d.ts +7 -0
  7. package/data-api/class-dto/models/query-result.model.d.ts +13 -0
  8. package/data-api/class-dto/obsolete/README.md +3 -0
  9. package/data-api/class-dto/obsolete/helpers/query-param-convert.d.ts +23 -0
  10. package/data-api/class-dto/obsolete/helpers/tableview-crud-create.d.ts +22 -0
  11. package/data-api/class-dto/obsolete/index.d.ts +14 -0
  12. package/data-api/class-dto/obsolete/models/builders/query-param.builder.d.ts +36 -0
  13. package/{lib/api → data-api/class-dto/obsolete}/models/filter-param.model.d.ts +1 -1
  14. package/{lib/api → data-api/class-dto/obsolete}/models/query-param.model.d.ts +1 -1
  15. package/{lib/api → data-api/class-dto/obsolete}/models/query-result.model.d.ts +1 -1
  16. package/data-api/class-dto/obsolete/provide.d.ts +9 -0
  17. package/data-api/class-dto/obsolete/services/api.abstract.service.d.ts +36 -0
  18. package/{lib/api → data-api/class-dto/obsolete}/services/crud-api.abstract.service.d.ts +20 -5
  19. package/data-api/class-dto/obsolete/services/get-all-api.abstract.service.d.ts +30 -0
  20. package/data-api/class-dto/obsolete/tableview/tableview-crud.data-provider.d.ts +28 -0
  21. package/data-api/class-dto/obsolete/utils/query-param-map.util.d.ts +22 -0
  22. package/{lib/api/utils/object-serializer.util.d.ts → data-api/class-dto/serder/object-serializer.d.ts} +1 -1
  23. package/{lib/api → data-api/class-dto}/services/api.abstract.service.d.ts +2 -4
  24. package/data-api/class-dto/services/crud-api.abstract.service.d.ts +25 -0
  25. package/data-api/class-dto/services/get-all-api.abstract.service.d.ts +14 -0
  26. package/data-api/class-dto/tableview/tableview-crud.data-provider.d.ts +17 -0
  27. package/data-api/helpers/get-all-params.d.ts +69 -0
  28. package/data-api/helpers/tableview-get-all-params-create.d.ts +14 -0
  29. package/data-api/index.d.ts +5 -0
  30. package/data-api/models/request-params.model.d.ts +61 -0
  31. package/data-api/rxjs/map-to-data-list.operator.d.ts +9 -0
  32. package/data-api/types/extract-get-all-params.type.d.ts +14 -0
  33. package/esm2022/data-api/class-dto/helpers/tableview-crud-create.mjs +40 -0
  34. package/esm2022/data-api/class-dto/index.mjs +13 -0
  35. package/esm2022/data-api/class-dto/mediusinc-mng-commons-data-api-class-dto.mjs +5 -0
  36. package/esm2022/data-api/class-dto/models/query-result.model.mjs +24 -0
  37. package/esm2022/data-api/class-dto/obsolete/helpers/query-param-convert.mjs +103 -0
  38. package/esm2022/data-api/class-dto/obsolete/helpers/tableview-crud-create.mjs +21 -0
  39. package/esm2022/data-api/class-dto/obsolete/index.mjs +21 -0
  40. package/esm2022/data-api/class-dto/obsolete/mediusinc-mng-commons-data-api-class-dto-obsolete.mjs +5 -0
  41. package/esm2022/data-api/class-dto/obsolete/models/builders/query-param.builder.mjs +83 -0
  42. package/esm2022/data-api/class-dto/obsolete/models/filter-match-type.model.mjs +27 -0
  43. package/esm2022/data-api/class-dto/obsolete/models/filter-param.model.mjs +33 -0
  44. package/esm2022/data-api/class-dto/obsolete/models/query-mode.model.mjs +18 -0
  45. package/esm2022/data-api/class-dto/obsolete/models/query-param.model.mjs +68 -0
  46. package/esm2022/data-api/class-dto/obsolete/models/query-result.model.mjs +24 -0
  47. package/esm2022/data-api/class-dto/obsolete/provide.mjs +40 -0
  48. package/esm2022/data-api/class-dto/obsolete/services/api.abstract.service.mjs +70 -0
  49. package/esm2022/data-api/class-dto/obsolete/services/crud-api.abstract.service.mjs +83 -0
  50. package/esm2022/data-api/class-dto/obsolete/services/get-all-api.abstract.service.mjs +38 -0
  51. package/esm2022/data-api/class-dto/obsolete/tableview/tableview-crud.data-provider.mjs +51 -0
  52. package/esm2022/data-api/class-dto/obsolete/utils/query-param-map.util.mjs +57 -0
  53. package/esm2022/data-api/class-dto/serder/object-serializer.mjs +184 -0
  54. package/esm2022/data-api/class-dto/services/api.abstract.service.mjs +55 -0
  55. package/esm2022/data-api/class-dto/services/crud-api.abstract.service.mjs +82 -0
  56. package/esm2022/data-api/class-dto/services/get-all-api.abstract.service.mjs +49 -0
  57. package/esm2022/data-api/class-dto/tableview/tableview-crud.data-provider.mjs +49 -0
  58. package/esm2022/data-api/helpers/get-all-params.mjs +180 -0
  59. package/esm2022/data-api/helpers/tableview-get-all-params-create.mjs +18 -0
  60. package/esm2022/data-api/index.mjs +10 -0
  61. package/esm2022/data-api/mediusinc-mng-commons-data-api.mjs +5 -0
  62. package/esm2022/data-api/models/request-params.model.mjs +2 -0
  63. package/esm2022/data-api/rxjs/map-to-data-list.operator.mjs +19 -0
  64. package/esm2022/data-api/types/extract-get-all-params.type.mjs +2 -0
  65. package/esm2022/index.mjs +3 -6
  66. package/esm2022/lib/components/action/action.component.mjs +4 -5
  67. package/esm2022/lib/components/action/editor/injector-context/action-editor-injector-context.component.mjs +2 -2
  68. package/esm2022/lib/components/action/models/action-execution.model.mjs +5 -4
  69. package/esm2022/lib/components/action/route/action-route.component.mjs +1 -2
  70. package/esm2022/lib/components/action/table/action-table.component.mjs +4 -6
  71. package/esm2022/lib/components/form/autocomplete/autocomplete.component.mjs +29 -17
  72. package/esm2022/lib/components/form/dropdown/dropdown.component.mjs +3 -7
  73. package/esm2022/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +20 -18
  74. package/esm2022/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +2 -2
  75. package/esm2022/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +23 -12
  76. package/esm2022/lib/components/table/column-filter-full/column-filter-full.component.mjs +162 -33
  77. package/esm2022/lib/components/table/column-value/column-value.component.mjs +3 -3
  78. package/esm2022/lib/components/table/models/table.event.mjs +1 -1
  79. package/esm2022/lib/components/table/models/table.interface.mjs +1 -1
  80. package/esm2022/lib/components/table/table-column-filter-class/table-column-filter-class.pipe.mjs +4 -4
  81. package/esm2022/lib/components/table/table.component.mjs +117 -191
  82. package/esm2022/lib/components/tableview/actions/tableview-default-actions.mjs +215 -0
  83. package/esm2022/lib/components/tableview/builders/tableview-builder.mjs +162 -0
  84. package/esm2022/lib/components/tableview/helpers/tableview-create.mjs +24 -0
  85. package/esm2022/lib/components/tableview/index.mjs +5 -2
  86. package/esm2022/lib/components/tableview/models/tableview.model.mjs +2 -0
  87. package/esm2022/lib/components/tableview/route/tableview-route.component.mjs +7 -39
  88. package/esm2022/lib/components/tableview/tableview.component.mjs +4 -4
  89. package/esm2022/lib/data-providers/editor.data-provider.mjs +13 -13
  90. package/esm2022/lib/data-providers/index.mjs +1 -2
  91. package/esm2022/lib/data-providers/lookup.data-provider.mjs +1 -1
  92. package/esm2022/lib/data-providers/table.data-provider.mjs +4 -5
  93. package/esm2022/lib/data-providers/tableview.data-provider.mjs +1 -1
  94. package/esm2022/lib/descriptors/action/action-confirmation.descriptor.mjs +1 -1
  95. package/esm2022/lib/descriptors/action/action-editor.descriptor.mjs +10 -6
  96. package/esm2022/lib/descriptors/action/action.descriptor.mjs +2 -3
  97. package/esm2022/lib/descriptors/editor/editor.descriptor.mjs +13 -17
  98. package/esm2022/lib/descriptors/editor/field-lookup.descriptor.mjs +12 -17
  99. package/esm2022/lib/descriptors/editor/field.descriptor.mjs +5 -8
  100. package/esm2022/lib/descriptors/editor/internal/editor-fields.model.mjs +1 -1
  101. package/esm2022/lib/descriptors/filter/filter-lookup.descriptor.mjs +28 -52
  102. package/esm2022/lib/descriptors/filter/filter.descriptor.mjs +40 -23
  103. package/esm2022/lib/descriptors/model/enum.descriptor.mjs +31 -0
  104. package/esm2022/lib/descriptors/model/index.mjs +3 -1
  105. package/esm2022/lib/descriptors/model/model.descriptor.mjs +10 -1
  106. package/esm2022/lib/descriptors/model/type.descriptor.mjs +11 -0
  107. package/esm2022/lib/descriptors/table/column.descriptor.mjs +12 -107
  108. package/esm2022/lib/descriptors/table/index.mjs +2 -1
  109. package/esm2022/lib/descriptors/table/internal/table-columns.model.mjs +1 -1
  110. package/esm2022/lib/descriptors/table/internal/table.model.mjs +1 -1
  111. package/esm2022/lib/descriptors/table/sort.descriptor.mjs +45 -0
  112. package/esm2022/lib/descriptors/table/table.descriptor.mjs +208 -57
  113. package/esm2022/lib/descriptors/tableview/internal/tableview.model.mjs +1 -1
  114. package/esm2022/lib/descriptors/tableview/tableview.descriptor.mjs +114 -17
  115. package/esm2022/lib/descriptors/types/filter.type.mjs +1 -19
  116. package/esm2022/lib/descriptors/types/table.type.mjs +1 -5
  117. package/esm2022/lib/error/error.handler.mjs +1 -1
  118. package/esm2022/lib/helpers/data-provider-executors.mjs +80 -0
  119. package/esm2022/lib/models/data-list.model.mjs +2 -0
  120. package/esm2022/lib/models/filter-match.model.mjs +105 -0
  121. package/esm2022/lib/models/index.mjs +3 -1
  122. package/esm2022/lib/models/view-container.model.mjs +1 -1
  123. package/esm2022/lib/pipes/enum.pipe.mjs +6 -6
  124. package/esm2022/lib/provide.mjs +101 -0
  125. package/esm2022/lib/registry/type.registry.mjs +3 -10
  126. package/esm2022/lib/router/models/router.model.mjs +1 -1
  127. package/esm2022/lib/router/tableview-route-builder.mjs +1 -1
  128. package/esm2022/lib/services/action/action-executor.service.mjs +54 -32
  129. package/esm2022/lib/services/commons.service.mjs +1 -37
  130. package/esm2022/lib/services/data-provider-executor.service.mjs +52 -0
  131. package/esm2022/lib/services/index.mjs +2 -1
  132. package/esm2022/lib/services/view/view-container.service.mjs +1 -1
  133. package/esm2022/lib/types/action-descriptor.types.mjs +1 -1
  134. package/esm2022/lib/types/type.model.mjs +1 -1
  135. package/esm2022/lib/utils/data-list-params.util.mjs +416 -0
  136. package/esm2022/lib/utils/date.util.mjs +8 -2
  137. package/esm2022/lib/utils/enum.util.mjs +2 -1
  138. package/esm2022/lib/utils/error.util.mjs +3 -3
  139. package/esm2022/lib/utils/export.util.mjs +1 -1
  140. package/esm2022/lib/utils/index.mjs +2 -2
  141. package/esm2022/lib/utils/route.util.mjs +1 -2
  142. package/fesm2022/mediusinc-mng-commons-data-api-class-dto-obsolete.mjs +698 -0
  143. package/fesm2022/mediusinc-mng-commons-data-api-class-dto-obsolete.mjs.map +1 -0
  144. package/fesm2022/mediusinc-mng-commons-data-api-class-dto.mjs +480 -0
  145. package/fesm2022/mediusinc-mng-commons-data-api-class-dto.mjs.map +1 -0
  146. package/fesm2022/mediusinc-mng-commons-data-api.mjs +224 -0
  147. package/fesm2022/mediusinc-mng-commons-data-api.mjs.map +1 -0
  148. package/fesm2022/mediusinc-mng-commons.mjs +2634 -2549
  149. package/fesm2022/mediusinc-mng-commons.mjs.map +1 -1
  150. package/index.d.ts +2 -4
  151. package/lib/components/action/action.component.d.ts +13 -13
  152. package/lib/components/action/models/action-execution.model.d.ts +47 -46
  153. package/lib/components/action/table/action-table.component.d.ts +15 -16
  154. package/lib/components/form/autocomplete/autocomplete.component.d.ts +1 -1
  155. package/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.d.ts +3 -5
  156. package/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.d.ts +10 -10
  157. package/lib/components/table/column-filter-full/column-filter-full.component.d.ts +25 -9
  158. package/lib/components/table/models/table.event.d.ts +2 -2
  159. package/lib/components/table/models/table.interface.d.ts +4 -1
  160. package/lib/components/table/table-column-filter-class/table-column-filter-class.pipe.d.ts +2 -2
  161. package/lib/components/table/table.component.d.ts +19 -18
  162. package/lib/components/tableview/actions/tableview-default-actions.d.ts +36 -0
  163. package/lib/components/tableview/builders/tableview-builder.d.ts +115 -0
  164. package/lib/components/tableview/helpers/tableview-create.d.ts +16 -0
  165. package/lib/components/tableview/index.d.ts +4 -1
  166. package/lib/components/tableview/models/tableview.model.d.ts +8 -0
  167. package/lib/components/tableview/route/tableview-route.component.d.ts +5 -14
  168. package/lib/components/tableview/tableview.component.d.ts +12 -12
  169. package/lib/data-providers/editor.data-provider.d.ts +12 -12
  170. package/lib/data-providers/index.d.ts +0 -1
  171. package/lib/data-providers/lookup.data-provider.d.ts +2 -2
  172. package/lib/data-providers/table.data-provider.d.ts +25 -25
  173. package/lib/data-providers/tableview.data-provider.d.ts +18 -18
  174. package/lib/descriptors/action/action-confirmation.descriptor.d.ts +1 -1
  175. package/lib/descriptors/action/action-editor.descriptor.d.ts +20 -17
  176. package/lib/descriptors/editor/editor.descriptor.d.ts +8 -12
  177. package/lib/descriptors/editor/field-base.descriptor.d.ts +3 -3
  178. package/lib/descriptors/editor/field-lookup.descriptor.d.ts +11 -11
  179. package/lib/descriptors/editor/field-many.descriptor.d.ts +4 -4
  180. package/lib/descriptors/editor/field.descriptor.d.ts +2 -2
  181. package/lib/descriptors/editor/internal/editor-fields.model.d.ts +6 -5
  182. package/lib/descriptors/filter/filter-lookup.descriptor.d.ts +15 -14
  183. package/lib/descriptors/filter/filter.descriptor.d.ts +17 -18
  184. package/lib/descriptors/model/enum.descriptor.d.ts +14 -0
  185. package/lib/descriptors/model/index.d.ts +2 -0
  186. package/lib/descriptors/model/model.descriptor.d.ts +9 -0
  187. package/lib/descriptors/model/type.descriptor.d.ts +5 -0
  188. package/lib/descriptors/table/column.descriptor.d.ts +10 -24
  189. package/lib/descriptors/table/index.d.ts +1 -0
  190. package/lib/descriptors/table/internal/table-columns.model.d.ts +36 -5
  191. package/lib/descriptors/table/internal/table.model.d.ts +5 -2
  192. package/lib/descriptors/table/sort.descriptor.d.ts +17 -0
  193. package/lib/descriptors/table/table.descriptor.d.ts +57 -33
  194. package/lib/descriptors/tableview/internal/tableview.model.d.ts +3 -3
  195. package/lib/descriptors/tableview/tableview.descriptor.d.ts +49 -19
  196. package/lib/descriptors/types/filter.type.d.ts +0 -17
  197. package/lib/descriptors/types/table.type.d.ts +0 -3
  198. package/lib/error/error.handler.d.ts +1 -1
  199. package/lib/helpers/data-provider-executors.d.ts +19 -0
  200. package/lib/models/data-list.model.d.ts +27 -0
  201. package/lib/models/filter-match.model.d.ts +36 -0
  202. package/lib/models/index.d.ts +2 -0
  203. package/lib/models/view-container.model.d.ts +2 -2
  204. package/lib/pipes/enum.pipe.d.ts +2 -2
  205. package/lib/provide.d.ts +10 -0
  206. package/lib/router/models/router.model.d.ts +1 -1
  207. package/lib/router/tableview-route-builder.d.ts +1 -2
  208. package/lib/services/action/action-executor.service.d.ts +18 -16
  209. package/lib/services/data-provider-executor.service.d.ts +60 -0
  210. package/lib/services/index.d.ts +1 -0
  211. package/lib/services/view/view-container.service.d.ts +11 -11
  212. package/lib/types/action-descriptor.types.d.ts +2 -2
  213. package/lib/types/type.model.d.ts +1 -3
  214. package/lib/utils/data-list-params.util.d.ts +84 -0
  215. package/lib/utils/date.util.d.ts +3 -1
  216. package/lib/utils/enum.util.d.ts +4 -3
  217. package/lib/utils/export.util.d.ts +1 -1
  218. package/lib/utils/index.d.ts +1 -1
  219. package/openapi/angular/modelEnum.mustache +0 -3
  220. package/package.json +20 -2
  221. package/esm2022/lib/api/models/builders/query-param.builder.mjs +0 -59
  222. package/esm2022/lib/api/models/filter-match-type.model.mjs +0 -27
  223. package/esm2022/lib/api/models/filter-param.model.mjs +0 -33
  224. package/esm2022/lib/api/models/index.mjs +0 -7
  225. package/esm2022/lib/api/models/query-mode.model.mjs +0 -18
  226. package/esm2022/lib/api/models/query-param.model.mjs +0 -68
  227. package/esm2022/lib/api/models/query-result.model.mjs +0 -35
  228. package/esm2022/lib/api/services/api.abstract.service.mjs +0 -58
  229. package/esm2022/lib/api/services/crud-api.abstract.service.mjs +0 -75
  230. package/esm2022/lib/api/services/get-all-api.abstract.service.mjs +0 -30
  231. package/esm2022/lib/api/services/index.mjs +0 -4
  232. package/esm2022/lib/api/utils/index.mjs +0 -3
  233. package/esm2022/lib/api/utils/medius-rest.util.mjs +0 -293
  234. package/esm2022/lib/api/utils/object-serializer.util.mjs +0 -185
  235. package/esm2022/lib/components/tableview/route/tableview-route.abstract.component.mjs +0 -158
  236. package/esm2022/lib/data-providers/tableview-crud.data-provider.mjs +0 -32
  237. package/esm2022/lib/provide-commons.mjs +0 -88
  238. package/esm2022/lib/utils/action-data-provider.util.mjs +0 -171
  239. package/lib/api/models/builders/query-param.builder.d.ts +0 -13
  240. package/lib/api/models/index.d.ts +0 -6
  241. package/lib/api/services/get-all-api.abstract.service.d.ts +0 -14
  242. package/lib/api/services/index.d.ts +0 -3
  243. package/lib/api/utils/index.d.ts +0 -2
  244. package/lib/api/utils/medius-rest.util.d.ts +0 -32
  245. package/lib/components/tableview/route/tableview-route.abstract.component.d.ts +0 -35
  246. package/lib/data-providers/tableview-crud.data-provider.d.ts +0 -12
  247. package/lib/provide-commons.d.ts +0 -3
  248. package/lib/utils/action-data-provider.util.d.ts +0 -35
  249. package/templates/tableview-route.component.html +0 -5
  250. /package/{lib/api → data-api/class-dto/obsolete}/models/filter-match-type.model.d.ts +0 -0
  251. /package/{lib/api → data-api/class-dto/obsolete}/models/query-mode.model.d.ts +0 -0
@@ -0,0 +1,215 @@
1
+ import { ActivatedRoute } from '@angular/router';
2
+ import { TranslateService } from '@ngx-translate/core';
3
+ import { of, tap } from 'rxjs';
4
+ import { map } from 'rxjs/operators';
5
+ import { ActionButtonDescriptor, ActionDeleteDescriptorInst, ActionDescriptor, ActionEditorAddDescriptor, ActionEditorDetailsDescriptor, ActionEditorEditDescriptor, ActionEditorEditDescriptorInst, ActionLinkDescriptor } from '../../../descriptors/action';
6
+ import { ActionPositionEnum } from '../../../descriptors/types';
7
+ import { MngInternalError } from '../../../models';
8
+ import { DataProviderExecutor } from '../../../services';
9
+ import { ButtonStyleRoundedEnum } from '../../../styles';
10
+ import { StyleLevelEnum, StyleSizeEnum } from '../../../styles/models';
11
+ import { DataListParamsUtil, ExportUtils, FileUtil } from '../../../utils';
12
+ import { MngDataLanguageDropdownComponent } from '../../action';
13
+ import { TableviewActionDefaultCategories } from '../../action/models';
14
+ export var TableviewDefaultActionsEnum;
15
+ (function (TableviewDefaultActionsEnum) {
16
+ TableviewDefaultActionsEnum[TableviewDefaultActionsEnum["Details"] = 0] = "Details";
17
+ TableviewDefaultActionsEnum[TableviewDefaultActionsEnum["Add"] = 1] = "Add";
18
+ TableviewDefaultActionsEnum[TableviewDefaultActionsEnum["Edit"] = 2] = "Edit";
19
+ TableviewDefaultActionsEnum[TableviewDefaultActionsEnum["EditOnDetails"] = 3] = "EditOnDetails";
20
+ TableviewDefaultActionsEnum[TableviewDefaultActionsEnum["Delete"] = 4] = "Delete";
21
+ TableviewDefaultActionsEnum[TableviewDefaultActionsEnum["DeleteOnDetails"] = 5] = "DeleteOnDetails";
22
+ TableviewDefaultActionsEnum[TableviewDefaultActionsEnum["Refresh"] = 6] = "Refresh";
23
+ TableviewDefaultActionsEnum[TableviewDefaultActionsEnum["Export"] = 7] = "Export";
24
+ TableviewDefaultActionsEnum[TableviewDefaultActionsEnum["ExportJson"] = 8] = "ExportJson";
25
+ TableviewDefaultActionsEnum[TableviewDefaultActionsEnum["ExportCsv"] = 9] = "ExportCsv";
26
+ TableviewDefaultActionsEnum[TableviewDefaultActionsEnum["LocalizationLanguageSelect"] = 10] = "LocalizationLanguageSelect";
27
+ })(TableviewDefaultActionsEnum || (TableviewDefaultActionsEnum = {}));
28
+ export class TableviewDefaultActions {
29
+ static { this.DEFAULT_ACTIONS = [
30
+ TableviewDefaultActionsEnum.Details,
31
+ TableviewDefaultActionsEnum.Add,
32
+ TableviewDefaultActionsEnum.Edit,
33
+ TableviewDefaultActionsEnum.EditOnDetails,
34
+ TableviewDefaultActionsEnum.Delete,
35
+ TableviewDefaultActionsEnum.DeleteOnDetails,
36
+ TableviewDefaultActionsEnum.Refresh,
37
+ TableviewDefaultActionsEnum.Export,
38
+ TableviewDefaultActionsEnum.ExportJson,
39
+ TableviewDefaultActionsEnum.ExportCsv,
40
+ TableviewDefaultActionsEnum.LocalizationLanguageSelect
41
+ ]; }
42
+ static getDefaultActions() {
43
+ return [...TableviewDefaultActions.DEFAULT_ACTIONS];
44
+ }
45
+ static createActions(tableview, injector, defaultActions, defaultActionsOverrides) {
46
+ return (defaultActions ?? TableviewDefaultActions.getDefaultActions())
47
+ .map(t => TableviewDefaultActions.createAction(t, tableview, injector, defaultActions, defaultActionsOverrides))
48
+ .filter(e => e != null);
49
+ }
50
+ static createAction(type, tableview, injector, defaultActions, defaultActionsOverrides) {
51
+ if (defaultActionsOverrides != null && defaultActionsOverrides[type] !== undefined) {
52
+ return defaultActionsOverrides[type];
53
+ }
54
+ switch (type) {
55
+ // table row actions
56
+ case TableviewDefaultActionsEnum.Details:
57
+ return TableviewDefaultActions.details(tableview.detailsEditor, injector);
58
+ case TableviewDefaultActionsEnum.Edit:
59
+ return TableviewDefaultActions.edit(tableview.editEditor, injector);
60
+ case TableviewDefaultActionsEnum.Delete:
61
+ return TableviewDefaultActions.delete(tableview.model, injector);
62
+ // table toolbar actions
63
+ case TableviewDefaultActionsEnum.Add:
64
+ return TableviewDefaultActions.add(tableview.addEditor, injector);
65
+ case TableviewDefaultActionsEnum.LocalizationLanguageSelect:
66
+ return TableviewDefaultActions.LocalizationLanguageSelect(tableview);
67
+ case TableviewDefaultActionsEnum.Refresh:
68
+ return TableviewDefaultActions.refresh(tableview.model);
69
+ case TableviewDefaultActionsEnum.Export:
70
+ return defaultActions == null || defaultActions.includes(TableviewDefaultActionsEnum.ExportJson) || defaultActions.includes(TableviewDefaultActionsEnum.ExportCsv)
71
+ ? TableviewDefaultActions.export(tableview, injector, defaultActions)
72
+ : null;
73
+ //details actions
74
+ case TableviewDefaultActionsEnum.EditOnDetails:
75
+ return defaultActions == null || defaultActions.includes(TableviewDefaultActionsEnum.Edit)
76
+ ? TableviewDefaultActions.editOnDetails(tableview.model, TableviewDefaultActions.edit(tableview.editEditor, injector), injector)
77
+ : null;
78
+ case TableviewDefaultActionsEnum.DeleteOnDetails:
79
+ return defaultActions == null || defaultActions.includes(TableviewDefaultActionsEnum.Delete)
80
+ ? TableviewDefaultActions.deleteOnDetails(tableview.model, injector)
81
+ : null;
82
+ // subactions
83
+ case TableviewDefaultActionsEnum.ExportJson:
84
+ case TableviewDefaultActionsEnum.ExportCsv:
85
+ return null;
86
+ default:
87
+ throw new MngInternalError(`Tableview default action of type ${type} not supported`);
88
+ }
89
+ }
90
+ static getRouteData(injector) {
91
+ return injector.get(ActivatedRoute).snapshot.data;
92
+ }
93
+ static details(descriptor, injector) {
94
+ const routeData = TableviewDefaultActions.getRouteData(injector);
95
+ return !routeData.tableviewActions || routeData.tableviewActions.hasDetails ? ActionEditorDetailsDescriptor.create(descriptor) : null;
96
+ }
97
+ static add(descriptor, injector) {
98
+ const routeData = TableviewDefaultActions.getRouteData(injector);
99
+ return !routeData.tableviewActions || routeData.tableviewActions.hasAdd ? ActionEditorAddDescriptor.create(descriptor) : null;
100
+ }
101
+ static edit(descriptor, injector) {
102
+ const routeData = TableviewDefaultActions.getRouteData(injector);
103
+ return !routeData.tableviewActions || routeData.tableviewActions.hasEdit ? ActionEditorEditDescriptor.create(descriptor) : null;
104
+ }
105
+ static editOnDetails(descriptor, editDescriptor, injector) {
106
+ const routeData = TableviewDefaultActions.getRouteData(injector);
107
+ if (routeData.tableviewActions && !routeData.tableviewActions.hasEdit) {
108
+ return null;
109
+ }
110
+ const action = editDescriptor ? ActionLinkDescriptor.fromAction(editDescriptor) : ActionLinkDescriptor.fromModel(descriptor, ActionEditorEditDescriptorInst.ACTION_NAME);
111
+ action
112
+ .withTableviewCategory(TableviewActionDefaultCategories.EDIT)
113
+ .withPositionTableviewCategories([TableviewActionDefaultCategories.DETAILS])
114
+ .withPosition(ActionPositionEnum.FooterLeft)
115
+ .withRouterLink('./edit');
116
+ action.button.styleClass.withActionLevel(StyleLevelEnum.Secondary);
117
+ action.button.styleClass.withSize(StyleSizeEnum.Normal);
118
+ action.button.styleClass.withRoundedButton(ButtonStyleRoundedEnum.DEFAULT);
119
+ action.button.withLabel();
120
+ if (!editDescriptor)
121
+ action.button.withIcon('pi pi-pencil');
122
+ return action;
123
+ }
124
+ static deleteOnDetails(model, injector) {
125
+ const action = this.delete(model, injector);
126
+ const dataProviderExecutor = injector.get(DataProviderExecutor);
127
+ if (action) {
128
+ action
129
+ .withTableviewCategory(TableviewActionDefaultCategories.DELETE)
130
+ .withPositionTableviewCategories([TableviewActionDefaultCategories.DETAILS])
131
+ .withPosition(ActionPositionEnum.FooterLeft)
132
+ .withRunFunction(ctx => dataProviderExecutor.runDeleteOrFail(ctx).pipe(tap(() => {
133
+ ctx.viewContainer?.reloadTable({});
134
+ ctx.viewContainer?.closeEditor();
135
+ })));
136
+ action.button.withLabel(undefined);
137
+ action.button.styleClass.withSize(StyleSizeEnum.Normal);
138
+ return action;
139
+ }
140
+ return null;
141
+ }
142
+ static delete(descriptor, injector) {
143
+ const routeData = TableviewDefaultActions.getRouteData(injector);
144
+ return !routeData.tableviewActions || routeData.tableviewActions.hasDelete ? new ActionDeleteDescriptorInst(descriptor) : null;
145
+ }
146
+ static export(descriptor, injector, defaultActions) {
147
+ const exportAction = ActionDescriptor.fromModel(descriptor.model, 'export')
148
+ .withButtonDescriptor(new ActionButtonDescriptor().withIcon('pi pi-download'))
149
+ .withSubactionsAsMenu();
150
+ const subactions = [];
151
+ if (defaultActions == null || defaultActions.includes(TableviewDefaultActionsEnum.ExportJson))
152
+ subactions.push(this.exportJson(descriptor, injector));
153
+ if (defaultActions == null || defaultActions.includes(TableviewDefaultActionsEnum.ExportCsv))
154
+ subactions.push(this.exportCsv(descriptor, injector));
155
+ exportAction.withSubactions(...subactions);
156
+ return exportAction;
157
+ }
158
+ static exportJson(descriptor, injector) {
159
+ const dataProviderExecutor = injector.get(DataProviderExecutor);
160
+ return ActionDescriptor.fromModel(descriptor.model, 'exportJson')
161
+ .withRunFunction(ctx => {
162
+ const params = ctx.parameters.dataListParams ? DataListParamsUtil.copy(ctx.parameters.dataListParams) : {};
163
+ params.offset = 0;
164
+ params.limit = 500;
165
+ ctx.parameters.withDataListParams(params);
166
+ return dataProviderExecutor.runGetAllOrFail(ctx).pipe(map(res => {
167
+ const blob = new Blob([JSON.stringify(res.data, undefined, 4)], { type: 'application/json;charset=utf-8' });
168
+ const typeName = ctx.instance.action.model?.typeName ?? '';
169
+ FileUtil.saveAs(blob, `${typeName ? typeName + '_' : ''}${ctx.instance.action.actionName}.json`);
170
+ return undefined;
171
+ }));
172
+ })
173
+ .withButtonDescriptor(new ActionButtonDescriptor().withIcon('pi pi-code'))
174
+ .withPosition(ActionPositionEnum.ToolbarRight);
175
+ }
176
+ static exportCsv(descriptor, injector) {
177
+ const dataProviderExecutor = injector.get(DataProviderExecutor);
178
+ return ActionDescriptor.fromModel(descriptor.model, 'exportCsv')
179
+ .withRunFunction(ctx => {
180
+ const params = ctx.parameters.dataListParams ? DataListParamsUtil.copy(ctx.parameters.dataListParams) : {};
181
+ params.offset = 0;
182
+ params.limit = 500;
183
+ ctx.parameters.withDataListParams(params);
184
+ return dataProviderExecutor.runGetAllOrFail(ctx).pipe(map(res => {
185
+ if (!res.data) {
186
+ return undefined;
187
+ }
188
+ const blob = new Blob([ExportUtils.prepareDataForExport(res.data, ',', descriptor, ctx.injector.get(TranslateService))], { type: 'text/csv;charset=utf-8' });
189
+ const typeName = ctx.instance.action.model?.typeName ?? '';
190
+ FileUtil.saveAs(blob, `${typeName ? typeName + '_' : ''}${ctx.instance.action.actionName}.csv`);
191
+ return undefined;
192
+ }));
193
+ })
194
+ .withButtonDescriptor(new ActionButtonDescriptor().withIcon('pi pi-file'))
195
+ .withPosition(ActionPositionEnum.ToolbarRight);
196
+ }
197
+ static refresh(descriptor) {
198
+ const action = ActionDescriptor.fromModel(descriptor, 'refresh')
199
+ .withPosition(ActionPositionEnum.ToolbarRight)
200
+ .withTableviewCategory(TableviewActionDefaultCategories.READ)
201
+ .withRunNotificationSuccess(undefined, undefined, false)
202
+ .withRunFunction(ctx => {
203
+ ctx.viewContainer?.reloadTable({});
204
+ return of(null);
205
+ });
206
+ action.button.withIcon('pi pi-refresh').styleClass.withActionLevel(StyleLevelEnum.Secondary);
207
+ return action;
208
+ }
209
+ static LocalizationLanguageSelect(descriptor) {
210
+ return descriptor.isLocalized()
211
+ ? ActionDescriptor.fromModel(descriptor.model, 'translator').withPosition(ActionPositionEnum.ToolbarLeft).withComponent(MngDataLanguageDropdownComponent)
212
+ : null;
213
+ }
214
+ }
215
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LWRlZmF1bHQtYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXZpZXcvYWN0aW9ucy90YWJsZXZpZXctZGVmYXVsdC1hY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsRUFBRSxFQUFFLEdBQUcsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkMsT0FBTyxFQUNILHNCQUFzQixFQUN0QiwwQkFBMEIsRUFDMUIsZ0JBQWdCLEVBRWhCLHlCQUF5QixFQUV6Qiw2QkFBNkIsRUFFN0IsMEJBQTBCLEVBQzFCLDhCQUE4QixFQUM5QixvQkFBb0IsRUFFdkIsTUFBTSw2QkFBNkIsQ0FBQztBQUlyQyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsY0FBYyxFQUFFLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JFLE9BQU8sRUFBQyxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFDLGdDQUFnQyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQzlELE9BQU8sRUFBQyxnQ0FBZ0MsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRXJFLE1B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SSxDQUFDO0lBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0b3J9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7b2YsIHRhcH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICAgIEFjdGlvbkJ1dHRvbkRlc2NyaXB0b3IsXG4gICAgQWN0aW9uRGVsZXRlRGVzY3JpcHRvckluc3QsXG4gICAgQWN0aW9uRGVzY3JpcHRvcixcbiAgICBBY3Rpb25EZXNjcmlwdG9ySW5zdCxcbiAgICBBY3Rpb25FZGl0b3JBZGREZXNjcmlwdG9yLFxuICAgIEFjdGlvbkVkaXRvckFkZERlc2NyaXB0b3JJbnN0LFxuICAgIEFjdGlvbkVkaXRvckRldGFpbHNEZXNjcmlwdG9yLFxuICAgIEFjdGlvbkVkaXRvckRldGFpbHNEZXNjcmlwdG9ySW5zdCxcbiAgICBBY3Rpb25FZGl0b3JFZGl0RGVzY3JpcHRvcixcbiAgICBBY3Rpb25FZGl0b3JFZGl0RGVzY3JpcHRvckluc3QsXG4gICAgQWN0aW9uTGlua0Rlc2NyaXB0b3IsXG4gICAgQWN0aW9uTGlua0Rlc2NyaXB0b3JJbnN0XG59IGZyb20gJy4uLy4uLy4uL2Rlc2NyaXB0b3JzL2FjdGlvbic7XG5pbXBvcnQge0VkaXRvckRlc2NyaXB0b3JJbnN0fSBmcm9tICcuLi8uLi8uLi9kZXNjcmlwdG9ycy9lZGl0b3InO1xuaW1wb3J0IHtNb2RlbERlc2NyaXB0b3J9IGZyb20gJy4uLy4uLy4uL2Rlc2NyaXB0b3JzL21vZGVsJztcbmltcG9ydCB7VGFibGV2aWV3RGVzY3JpcHRvckluc3R9IGZyb20gJy4uLy4uLy4uL2Rlc2NyaXB0b3JzL3RhYmxldmlldyc7XG5pbXBvcnQge0FjdGlvblBvc2l0aW9uRW51bX0gZnJvbSAnLi4vLi4vLi4vZGVzY3JpcHRvcnMvdHlwZXMnO1xuaW1wb3J0IHtNbmdJbnRlcm5hbEVycm9yfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtNbmdSb3V0ZXJEYXRhfSBmcm9tICcuLi8uLi8uLi9yb3V0ZXIvbW9kZWxzJztcbmltcG9ydCB7RGF0YVByb3ZpZGVyRXhlY3V0b3J9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7QnV0dG9uU3R5bGVSb3VuZGVkRW51bX0gZnJvbSAnLi4vLi4vLi4vc3R5bGVzJztcbmltcG9ydCB7U3R5bGVMZXZlbEVudW0sIFN0eWxlU2l6ZUVudW19IGZyb20gJy4uLy4uLy4uL3N0eWxlcy9tb2RlbHMnO1xuaW1wb3J0IHtEYXRhTGlzdFBhcmFtc1V0aWwsIEV4cG9ydFV0aWxzLCBGaWxlVXRpbH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHtNbmdEYXRhTGFuZ3VhZ2VEcm9wZG93bkNvbXBvbmVudH0gZnJvbSAnLi4vLi4vYWN0aW9uJztcbmltcG9ydCB7VGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXN9IGZyb20gJy4uLy4uL2FjdGlvbi9tb2RlbHMnO1xuXG5leHBvcnQgZW51bSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0ge1xuICAgIERldGFpbHMsXG4gICAgQWRkLFxuICAgIEVkaXQsXG4gICAgRWRpdE9uRGV0YWlscyxcbiAgICBEZWxldGUsXG4gICAgRGVsZXRlT25EZXRhaWxzLFxuICAgIFJlZnJlc2gsXG4gICAgRXhwb3J0LFxuICAgIEV4cG9ydEpzb24sXG4gICAgRXhwb3J0Q3N2LFxuICAgIExvY2FsaXphdGlvbkxhbmd1YWdlU2VsZWN0XG59XG5cbmV4cG9ydCBjbGFzcyBUYWJsZXZpZXdEZWZhdWx0QWN0aW9ucyB7XG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9BQ1RJT05TID0gW1xuICAgICAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRGV0YWlscyxcbiAgICAgICAgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkFkZCxcbiAgICAgICAgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkVkaXQsXG4gICAgICAgIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5FZGl0T25EZXRhaWxzLFxuICAgICAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRGVsZXRlLFxuICAgICAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRGVsZXRlT25EZXRhaWxzLFxuICAgICAgICBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uUmVmcmVzaCxcbiAgICAgICAgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkV4cG9ydCxcbiAgICAgICAgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkV4cG9ydEpzb24sXG4gICAgICAgIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5FeHBvcnRDc3YsXG4gICAgICAgIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5Mb2NhbGl6YXRpb25MYW5ndWFnZVNlbGVjdFxuICAgIF07XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldERlZmF1bHRBY3Rpb25zKCkge1xuICAgICAgICByZXR1cm4gWy4uLlRhYmxldmlld0RlZmF1bHRBY3Rpb25zLkRFRkFVTFRfQUNUSU9OU107XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVBY3Rpb25zKFxuICAgICAgICB0YWJsZXZpZXc6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PGFueSwgYW55LCBhbnk+LFxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIGRlZmF1bHRBY3Rpb25zPzogVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtW10sXG4gICAgICAgIGRlZmF1bHRBY3Rpb25zT3ZlcnJpZGVzPzogUmVjb3JkPG51bWJlciwgQWN0aW9uRGVzY3JpcHRvckluc3Q8YW55Pj5cbiAgICApOiBBcnJheTxBY3Rpb25EZXNjcmlwdG9ySW5zdDxhbnk+PiB7XG4gICAgICAgIHJldHVybiAoZGVmYXVsdEFjdGlvbnMgPz8gVGFibGV2aWV3RGVmYXVsdEFjdGlvbnMuZ2V0RGVmYXVsdEFjdGlvbnMoKSlcbiAgICAgICAgICAgIC5tYXAodCA9PiBUYWJsZXZpZXdEZWZhdWx0QWN0aW9ucy5jcmVhdGVBY3Rpb24odCwgdGFibGV2aWV3LCBpbmplY3RvciwgZGVmYXVsdEFjdGlvbnMsIGRlZmF1bHRBY3Rpb25zT3ZlcnJpZGVzKSlcbiAgICAgICAgICAgIC5maWx0ZXIoZSA9PiBlICE9IG51bGwpIGFzIEFycmF5PEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueT4+O1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlQWN0aW9uKFxuICAgICAgICB0eXBlOiBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0sXG4gICAgICAgIHRhYmxldmlldzogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8YW55LCBhbnksIGFueT4sXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgZGVmYXVsdEFjdGlvbnM/OiBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW1bXSxcbiAgICAgICAgZGVmYXVsdEFjdGlvbnNPdmVycmlkZXM/OiBSZWNvcmQ8bnVtYmVyLCBBY3Rpb25EZXNjcmlwdG9ySW5zdDxhbnk+PlxuICAgICk6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueT4gfCBudWxsIHtcbiAgICAgICAgaWYgKGRlZmF1bHRBY3Rpb25zT3ZlcnJpZGVzICE9IG51bGwgJiYgZGVmYXVsdEFjdGlvbnNPdmVycmlkZXNbdHlwZV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRBY3Rpb25zT3ZlcnJpZGVzW3R5cGVdO1xuICAgICAgICB9XG5cbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgICAvLyB0YWJsZSByb3cgYWN0aW9uc1xuICAgICAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRGV0YWlsczpcbiAgICAgICAgICAgICAgICByZXR1cm4gVGFibGV2aWV3RGVmYXVsdEFjdGlvbnMuZGV0YWlscyh0YWJsZXZpZXcuZGV0YWlsc0VkaXRvciwgaW5qZWN0b3IpO1xuICAgICAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRWRpdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gVGFibGV2aWV3RGVmYXVsdEFjdGlvbnMuZWRpdCh0YWJsZXZpZXcuZWRpdEVkaXRvciwgaW5qZWN0b3IpO1xuICAgICAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRGVsZXRlOlxuICAgICAgICAgICAgICAgIHJldHVybiBUYWJsZXZpZXdEZWZhdWx0QWN0aW9ucy5kZWxldGUodGFibGV2aWV3Lm1vZGVsLCBpbmplY3Rvcik7XG4gICAgICAgICAgICAvLyB0YWJsZSB0b29sYmFyIGFjdGlvbnNcbiAgICAgICAgICAgIGNhc2UgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkFkZDpcbiAgICAgICAgICAgICAgICByZXR1cm4gVGFibGV2aWV3RGVmYXVsdEFjdGlvbnMuYWRkKHRhYmxldmlldy5hZGRFZGl0b3IsIGluamVjdG9yKTtcbiAgICAgICAgICAgIGNhc2UgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkxvY2FsaXphdGlvbkxhbmd1YWdlU2VsZWN0OlxuICAgICAgICAgICAgICAgIHJldHVybiBUYWJsZXZpZXdEZWZhdWx0QWN0aW9ucy5Mb2NhbGl6YXRpb25MYW5ndWFnZVNlbGVjdCh0YWJsZXZpZXcpO1xuICAgICAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uUmVmcmVzaDpcbiAgICAgICAgICAgICAgICByZXR1cm4gVGFibGV2aWV3RGVmYXVsdEFjdGlvbnMucmVmcmVzaCh0YWJsZXZpZXcubW9kZWwpO1xuICAgICAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRXhwb3J0OlxuICAgICAgICAgICAgICAgIHJldHVybiBkZWZhdWx0QWN0aW9ucyA9PSBudWxsIHx8IGRlZmF1bHRBY3Rpb25zLmluY2x1ZGVzKFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5FeHBvcnRKc29uKSB8fCBkZWZhdWx0QWN0aW9ucy5pbmNsdWRlcyhUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRXhwb3J0Q3N2KVxuICAgICAgICAgICAgICAgICAgICA/IFRhYmxldmlld0RlZmF1bHRBY3Rpb25zLmV4cG9ydCh0YWJsZXZpZXcsIGluamVjdG9yLCBkZWZhdWx0QWN0aW9ucylcbiAgICAgICAgICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICAgICAgLy9kZXRhaWxzIGFjdGlvbnNcbiAgICAgICAgICAgIGNhc2UgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkVkaXRPbkRldGFpbHM6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRBY3Rpb25zID09IG51bGwgfHwgZGVmYXVsdEFjdGlvbnMuaW5jbHVkZXMoVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkVkaXQpXG4gICAgICAgICAgICAgICAgICAgID8gVGFibGV2aWV3RGVmYXVsdEFjdGlvbnMuZWRpdE9uRGV0YWlscyh0YWJsZXZpZXcubW9kZWwsIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zLmVkaXQodGFibGV2aWV3LmVkaXRFZGl0b3IsIGluamVjdG9yKSwgaW5qZWN0b3IpXG4gICAgICAgICAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgICAgIGNhc2UgVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkRlbGV0ZU9uRGV0YWlsczpcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVmYXVsdEFjdGlvbnMgPT0gbnVsbCB8fCBkZWZhdWx0QWN0aW9ucy5pbmNsdWRlcyhUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRGVsZXRlKVxuICAgICAgICAgICAgICAgICAgICA/IFRhYmxldmlld0RlZmF1bHRBY3Rpb25zLmRlbGV0ZU9uRGV0YWlscyh0YWJsZXZpZXcubW9kZWwsIGluamVjdG9yKVxuICAgICAgICAgICAgICAgICAgICA6IG51bGw7XG4gICAgICAgICAgICAvLyBzdWJhY3Rpb25zXG4gICAgICAgICAgICBjYXNlIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5FeHBvcnRKc29uOlxuICAgICAgICAgICAgY2FzZSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW0uRXhwb3J0Q3N2OlxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTW5nSW50ZXJuYWxFcnJvcihgVGFibGV2aWV3IGRlZmF1bHQgYWN0aW9uIG9mIHR5cGUgJHt0eXBlfSBub3Qgc3VwcG9ydGVkYCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBnZXRSb3V0ZURhdGEoaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgICAgIHJldHVybiBpbmplY3Rvci5nZXQoQWN0aXZhdGVkUm91dGUpLnNuYXBzaG90LmRhdGEgYXMgTW5nUm91dGVyRGF0YTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGRldGFpbHM8TW9kZWw+KGRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PE1vZGVsPiwgaW5qZWN0b3I6IEluamVjdG9yKTogQWN0aW9uRWRpdG9yRGV0YWlsc0Rlc2NyaXB0b3JJbnN0PE1vZGVsPiB8IG51bGwge1xuICAgICAgICBjb25zdCByb3V0ZURhdGEgPSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9ucy5nZXRSb3V0ZURhdGEoaW5qZWN0b3IpO1xuICAgICAgICByZXR1cm4gIXJvdXRlRGF0YS50YWJsZXZpZXdBY3Rpb25zIHx8IHJvdXRlRGF0YS50YWJsZXZpZXdBY3Rpb25zLmhhc0RldGFpbHMgPyBBY3Rpb25FZGl0b3JEZXRhaWxzRGVzY3JpcHRvci5jcmVhdGUoZGVzY3JpcHRvcikgOiBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgYWRkPE1vZGVsPihkZXNjcmlwdG9yOiBFZGl0b3JEZXNjcmlwdG9ySW5zdDxNb2RlbD4sIGluamVjdG9yOiBJbmplY3Rvcik6IEFjdGlvbkVkaXRvckFkZERlc2NyaXB0b3JJbnN0PE1vZGVsPiB8IG51bGwge1xuICAgICAgICBjb25zdCByb3V0ZURhdGEgPSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9ucy5nZXRSb3V0ZURhdGEoaW5qZWN0b3IpO1xuICAgICAgICByZXR1cm4gIXJvdXRlRGF0YS50YWJsZXZpZXdBY3Rpb25zIHx8IHJvdXRlRGF0YS50YWJsZXZpZXdBY3Rpb25zLmhhc0FkZCA/IEFjdGlvbkVkaXRvckFkZERlc2NyaXB0b3IuY3JlYXRlKGRlc2NyaXB0b3IpIDogbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGVkaXQ8TW9kZWw+KGRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PE1vZGVsPiwgaW5qZWN0b3I6IEluamVjdG9yKTogQWN0aW9uRWRpdG9yRWRpdERlc2NyaXB0b3JJbnN0PE1vZGVsPiB8IG51bGwge1xuICAgICAgICBjb25zdCByb3V0ZURhdGEgPSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9ucy5nZXRSb3V0ZURhdGEoaW5qZWN0b3IpO1xuICAgICAgICByZXR1cm4gIXJvdXRlRGF0YS50YWJsZXZpZXdBY3Rpb25zIHx8IHJvdXRlRGF0YS50YWJsZXZpZXdBY3Rpb25zLmhhc0VkaXQgPyBBY3Rpb25FZGl0b3JFZGl0RGVzY3JpcHRvci5jcmVhdGUoZGVzY3JpcHRvcikgOiBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZWRpdE9uRGV0YWlsczxNb2RlbD4oXG4gICAgICAgIGRlc2NyaXB0b3I6IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD4sXG4gICAgICAgIGVkaXREZXNjcmlwdG9yOiBBY3Rpb25FZGl0b3JFZGl0RGVzY3JpcHRvckluc3Q8TW9kZWw+IHwgbnVsbCxcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yXG4gICAgKTogQWN0aW9uTGlua0Rlc2NyaXB0b3JJbnN0PE1vZGVsPiB8IG51bGwge1xuICAgICAgICBjb25zdCByb3V0ZURhdGEgPSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9ucy5nZXRSb3V0ZURhdGEoaW5qZWN0b3IpO1xuICAgICAgICBpZiAocm91dGVEYXRhLnRhYmxldmlld0FjdGlvbnMgJiYgIXJvdXRlRGF0YS50YWJsZXZpZXdBY3Rpb25zLmhhc0VkaXQpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYWN0aW9uID0gZWRpdERlc2NyaXB0b3IgPyBBY3Rpb25MaW5rRGVzY3JpcHRvci5mcm9tQWN0aW9uKGVkaXREZXNjcmlwdG9yKSA6IEFjdGlvbkxpbmtEZXNjcmlwdG9yLmZyb21Nb2RlbChkZXNjcmlwdG9yLCBBY3Rpb25FZGl0b3JFZGl0RGVzY3JpcHRvckluc3QuQUNUSU9OX05BTUUpO1xuXG4gICAgICAgIGFjdGlvblxuICAgICAgICAgICAgLndpdGhUYWJsZXZpZXdDYXRlZ29yeShUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5FRElUKVxuICAgICAgICAgICAgLndpdGhQb3NpdGlvblRhYmxldmlld0NhdGVnb3JpZXMoW1RhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLkRFVEFJTFNdKVxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbihBY3Rpb25Qb3NpdGlvbkVudW0uRm9vdGVyTGVmdClcbiAgICAgICAgICAgIC53aXRoUm91dGVyTGluaygnLi9lZGl0Jyk7XG4gICAgICAgIGFjdGlvbi5idXR0b24uc3R5bGVDbGFzcy53aXRoQWN0aW9uTGV2ZWwoU3R5bGVMZXZlbEVudW0uU2Vjb25kYXJ5KTtcbiAgICAgICAgYWN0aW9uLmJ1dHRvbi5zdHlsZUNsYXNzLndpdGhTaXplKFN0eWxlU2l6ZUVudW0uTm9ybWFsKTtcbiAgICAgICAgYWN0aW9uLmJ1dHRvbi5zdHlsZUNsYXNzLndpdGhSb3VuZGVkQnV0dG9uKEJ1dHRvblN0eWxlUm91bmRlZEVudW0uREVGQVVMVCk7XG4gICAgICAgIGFjdGlvbi5idXR0b24ud2l0aExhYmVsKCk7XG4gICAgICAgIGlmICghZWRpdERlc2NyaXB0b3IpIGFjdGlvbi5idXR0b24ud2l0aEljb24oJ3BpIHBpLXBlbmNpbCcpO1xuXG4gICAgICAgIHJldHVybiBhY3Rpb247XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBkZWxldGVPbkRldGFpbHM8TW9kZWw+KG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+LCBpbmplY3RvcjogSW5qZWN0b3IpOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbD4gfCBudWxsIHtcbiAgICAgICAgY29uc3QgYWN0aW9uID0gdGhpcy5kZWxldGUobW9kZWwsIGluamVjdG9yKTtcbiAgICAgICAgY29uc3QgZGF0YVByb3ZpZGVyRXhlY3V0b3IgPSBpbmplY3Rvci5nZXQoRGF0YVByb3ZpZGVyRXhlY3V0b3IpO1xuICAgICAgICBpZiAoYWN0aW9uKSB7XG4gICAgICAgICAgICBhY3Rpb25cbiAgICAgICAgICAgICAgICAud2l0aFRhYmxldmlld0NhdGVnb3J5KFRhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLkRFTEVURSlcbiAgICAgICAgICAgICAgICAud2l0aFBvc2l0aW9uVGFibGV2aWV3Q2F0ZWdvcmllcyhbVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuREVUQUlMU10pXG4gICAgICAgICAgICAgICAgLndpdGhQb3NpdGlvbihBY3Rpb25Qb3NpdGlvbkVudW0uRm9vdGVyTGVmdClcbiAgICAgICAgICAgICAgICAud2l0aFJ1bkZ1bmN0aW9uKGN0eCA9PlxuICAgICAgICAgICAgICAgICAgICBkYXRhUHJvdmlkZXJFeGVjdXRvci5ydW5EZWxldGVPckZhaWwoY3R4KS5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHgudmlld0NvbnRhaW5lcj8ucmVsb2FkVGFibGUoe30pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC52aWV3Q29udGFpbmVyPy5jbG9zZUVkaXRvcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBhY3Rpb24uYnV0dG9uLndpdGhMYWJlbCh1bmRlZmluZWQpO1xuICAgICAgICAgICAgYWN0aW9uLmJ1dHRvbi5zdHlsZUNsYXNzLndpdGhTaXplKFN0eWxlU2l6ZUVudW0uTm9ybWFsKTtcblxuICAgICAgICAgICAgcmV0dXJuIGFjdGlvbjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZGVsZXRlPE1vZGVsPihkZXNjcmlwdG9yOiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+LCBpbmplY3RvcjogSW5qZWN0b3IpOiBBY3Rpb25EZWxldGVEZXNjcmlwdG9ySW5zdDxNb2RlbD4gfCBudWxsIHtcbiAgICAgICAgY29uc3Qgcm91dGVEYXRhID0gVGFibGV2aWV3RGVmYXVsdEFjdGlvbnMuZ2V0Um91dGVEYXRhKGluamVjdG9yKTtcbiAgICAgICAgcmV0dXJuICFyb3V0ZURhdGEudGFibGV2aWV3QWN0aW9ucyB8fCByb3V0ZURhdGEudGFibGV2aWV3QWN0aW9ucy5oYXNEZWxldGUgPyBuZXcgQWN0aW9uRGVsZXRlRGVzY3JpcHRvckluc3QoZGVzY3JpcHRvcikgOiBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZXhwb3J0PE1vZGVsPihcbiAgICAgICAgZGVzY3JpcHRvcjogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWw+LFxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIGRlZmF1bHRBY3Rpb25zPzogVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtW11cbiAgICApOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbD4gfCBudWxsIHtcbiAgICAgICAgY29uc3QgZXhwb3J0QWN0aW9uID0gQWN0aW9uRGVzY3JpcHRvci5mcm9tTW9kZWwoZGVzY3JpcHRvci5tb2RlbCwgJ2V4cG9ydCcpXG4gICAgICAgICAgICAud2l0aEJ1dHRvbkRlc2NyaXB0b3IobmV3IEFjdGlvbkJ1dHRvbkRlc2NyaXB0b3IoKS53aXRoSWNvbigncGkgcGktZG93bmxvYWQnKSlcbiAgICAgICAgICAgIC53aXRoU3ViYWN0aW9uc0FzTWVudSgpO1xuXG4gICAgICAgIGNvbnN0IHN1YmFjdGlvbnM6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsPltdID0gW107XG5cbiAgICAgICAgaWYgKGRlZmF1bHRBY3Rpb25zID09IG51bGwgfHwgZGVmYXVsdEFjdGlvbnMuaW5jbHVkZXMoVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtLkV4cG9ydEpzb24pKSBzdWJhY3Rpb25zLnB1c2godGhpcy5leHBvcnRKc29uKGRlc2NyaXB0b3IsIGluamVjdG9yKSk7XG4gICAgICAgIGlmIChkZWZhdWx0QWN0aW9ucyA9PSBudWxsIHx8IGRlZmF1bHRBY3Rpb25zLmluY2x1ZGVzKFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bS5FeHBvcnRDc3YpKSBzdWJhY3Rpb25zLnB1c2godGhpcy5leHBvcnRDc3YoZGVzY3JpcHRvciwgaW5qZWN0b3IpKTtcblxuICAgICAgICBleHBvcnRBY3Rpb24ud2l0aFN1YmFjdGlvbnMoLi4uc3ViYWN0aW9ucyk7XG4gICAgICAgIHJldHVybiBleHBvcnRBY3Rpb247XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBleHBvcnRKc29uPE1vZGVsPihkZXNjcmlwdG9yOiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNb2RlbD4sIGluamVjdG9yOiBJbmplY3Rvcik6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsPiB7XG4gICAgICAgIGNvbnN0IGRhdGFQcm92aWRlckV4ZWN1dG9yID0gaW5qZWN0b3IuZ2V0KERhdGFQcm92aWRlckV4ZWN1dG9yKTtcbiAgICAgICAgcmV0dXJuIEFjdGlvbkRlc2NyaXB0b3IuZnJvbU1vZGVsKGRlc2NyaXB0b3IubW9kZWwsICdleHBvcnRKc29uJylcbiAgICAgICAgICAgIC53aXRoUnVuRnVuY3Rpb24oY3R4ID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJhbXMgPSBjdHgucGFyYW1ldGVycy5kYXRhTGlzdFBhcmFtcyA/IERhdGFMaXN0UGFyYW1zVXRpbC5jb3B5KGN0eC5wYXJhbWV0ZXJzLmRhdGFMaXN0UGFyYW1zKSA6IHt9O1xuICAgICAgICAgICAgICAgIHBhcmFtcy5vZmZzZXQgPSAwO1xuICAgICAgICAgICAgICAgIHBhcmFtcy5saW1pdCA9IDUwMDtcbiAgICAgICAgICAgICAgICBjdHgucGFyYW1ldGVycy53aXRoRGF0YUxpc3RQYXJhbXMocGFyYW1zKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YVByb3ZpZGVyRXhlY3V0b3IucnVuR2V0QWxsT3JGYWlsKGN0eCkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgbWFwKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW0pTT04uc3RyaW5naWZ5KHJlcy5kYXRhLCB1bmRlZmluZWQsIDQpXSwge3R5cGU6ICdhcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTgnfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0eXBlTmFtZSA9IGN0eC5pbnN0YW5jZS5hY3Rpb24ubW9kZWw/LnR5cGVOYW1lID8/ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVV0aWwuc2F2ZUFzKGJsb2IsIGAke3R5cGVOYW1lID8gdHlwZU5hbWUgKyAnXycgOiAnJ30ke2N0eC5pbnN0YW5jZS5hY3Rpb24uYWN0aW9uTmFtZX0uanNvbmApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC53aXRoQnV0dG9uRGVzY3JpcHRvcihuZXcgQWN0aW9uQnV0dG9uRGVzY3JpcHRvcigpLndpdGhJY29uKCdwaSBwaS1jb2RlJykpXG4gICAgICAgICAgICAud2l0aFBvc2l0aW9uKEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZXhwb3J0Q3N2PE1vZGVsPihkZXNjcmlwdG9yOiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNb2RlbD4sIGluamVjdG9yOiBJbmplY3Rvcik6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsPiB7XG4gICAgICAgIGNvbnN0IGRhdGFQcm92aWRlckV4ZWN1dG9yID0gaW5qZWN0b3IuZ2V0KERhdGFQcm92aWRlckV4ZWN1dG9yKTtcbiAgICAgICAgcmV0dXJuIEFjdGlvbkRlc2NyaXB0b3IuZnJvbU1vZGVsKGRlc2NyaXB0b3IubW9kZWwsICdleHBvcnRDc3YnKVxuICAgICAgICAgICAgLndpdGhSdW5GdW5jdGlvbihjdHggPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IGN0eC5wYXJhbWV0ZXJzLmRhdGFMaXN0UGFyYW1zID8gRGF0YUxpc3RQYXJhbXNVdGlsLmNvcHkoY3R4LnBhcmFtZXRlcnMuZGF0YUxpc3RQYXJhbXMpIDoge307XG4gICAgICAgICAgICAgICAgcGFyYW1zLm9mZnNldCA9IDA7XG4gICAgICAgICAgICAgICAgcGFyYW1zLmxpbWl0ID0gNTAwO1xuICAgICAgICAgICAgICAgIGN0eC5wYXJhbWV0ZXJzLndpdGhEYXRhTGlzdFBhcmFtcyhwYXJhbXMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBkYXRhUHJvdmlkZXJFeGVjdXRvci5ydW5HZXRBbGxPckZhaWwoY3R4KS5waXBlKFxuICAgICAgICAgICAgICAgICAgICBtYXAocmVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmVzLmRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtFeHBvcnRVdGlscy5wcmVwYXJlRGF0YUZvckV4cG9ydChyZXMuZGF0YSwgJywnLCBkZXNjcmlwdG9yLCBjdHguaW5qZWN0b3IuZ2V0KFRyYW5zbGF0ZVNlcnZpY2UpKV0sIHt0eXBlOiAndGV4dC9jc3Y7Y2hhcnNldD11dGYtOCd9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHR5cGVOYW1lID0gY3R4Lmluc3RhbmNlLmFjdGlvbi5tb2RlbD8udHlwZU5hbWUgPz8gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBGaWxlVXRpbC5zYXZlQXMoYmxvYiwgYCR7dHlwZU5hbWUgPyB0eXBlTmFtZSArICdfJyA6ICcnfSR7Y3R4Lmluc3RhbmNlLmFjdGlvbi5hY3Rpb25OYW1lfS5jc3ZgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAud2l0aEJ1dHRvbkRlc2NyaXB0b3IobmV3IEFjdGlvbkJ1dHRvbkRlc2NyaXB0b3IoKS53aXRoSWNvbigncGkgcGktZmlsZScpKVxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbihBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhclJpZ2h0KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHJlZnJlc2g8TW9kZWw+KGRlc2NyaXB0b3I6IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD4pOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbD4gfCBudWxsIHtcbiAgICAgICAgY29uc3QgYWN0aW9uID0gQWN0aW9uRGVzY3JpcHRvci5mcm9tTW9kZWwoZGVzY3JpcHRvciwgJ3JlZnJlc2gnKVxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbihBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhclJpZ2h0KVxuICAgICAgICAgICAgLndpdGhUYWJsZXZpZXdDYXRlZ29yeShUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5SRUFEKVxuICAgICAgICAgICAgLndpdGhSdW5Ob3RpZmljYXRpb25TdWNjZXNzKHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBmYWxzZSlcbiAgICAgICAgICAgIC53aXRoUnVuRnVuY3Rpb24oY3R4ID0+IHtcbiAgICAgICAgICAgICAgICBjdHgudmlld0NvbnRhaW5lcj8ucmVsb2FkVGFibGUoe30pO1xuICAgICAgICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICBhY3Rpb24uYnV0dG9uLndpdGhJY29uKCdwaSBwaS1yZWZyZXNoJykuc3R5bGVDbGFzcy53aXRoQWN0aW9uTGV2ZWwoU3R5bGVMZXZlbEVudW0uU2Vjb25kYXJ5KTtcbiAgICAgICAgcmV0dXJuIGFjdGlvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIExvY2FsaXphdGlvbkxhbmd1YWdlU2VsZWN0PE1vZGVsPihkZXNjcmlwdG9yOiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNb2RlbD4pOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbD4gfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3IuaXNMb2NhbGl6ZWQoKVxuICAgICAgICAgICAgPyBBY3Rpb25EZXNjcmlwdG9yLmZyb21Nb2RlbChkZXNjcmlwdG9yLm1vZGVsLCAndHJhbnNsYXRvcicpLndpdGhQb3NpdGlvbihBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhckxlZnQpLndpdGhDb21wb25lbnQoTW5nRGF0YUxhbmd1YWdlRHJvcGRvd25Db21wb25lbnQpXG4gICAgICAgICAgICA6IG51bGw7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,162 @@
1
+ import { TableviewDefaultActions } from '../actions/tableview-default-actions';
2
+ /**
3
+ * The `TableviewBuilder` class is used to build a tableview configuration.
4
+ * It allows you to set various options such as the descriptor, data provider,
5
+ * default actions, and custom actions for the tableview.
6
+ *
7
+ * @typeparam Model - The main model type.
8
+ * @typeparam Service - The API service type.
9
+ * @typeparam Descriptor - The descriptor type.
10
+ * @typeparam DataProvider - The data provider type.
11
+ * @typeparam Sorts - The sort type representing available sort keys.
12
+ * @typeparam Filters - The filter type representing available filter keys.
13
+ */
14
+ export class TableviewBuilder {
15
+ constructor(_descriptor, _dataProvider, injector) {
16
+ this._descriptor = _descriptor;
17
+ this._dataProvider = _dataProvider;
18
+ this.injector = injector;
19
+ this.defaultActions = TableviewDefaultActions.getDefaultActions().map(a => ({ type: a, descriptor: undefined }));
20
+ this._customActions = [];
21
+ }
22
+ prepareSetterParams() {
23
+ return { descriptor: this._descriptor, dataProvider: this._dataProvider, injector: this.injector };
24
+ }
25
+ /**
26
+ * Sets a descriptor instead of the default one.
27
+ *
28
+ * @param {TvBuilderDescriptorSetterFnType<Descriptor, DataProvider>} fn - The function that returns the new descriptor. It should accept a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.
29
+ * @returns {this} - Returns the current instance of the builder.
30
+ */
31
+ withDescriptor(fn) {
32
+ this._descriptor = fn(this.prepareSetterParams());
33
+ return this;
34
+ }
35
+ /**
36
+ * Adjusts the descriptor using the provided adjust function.
37
+ *
38
+ * @param {(descriptor: Descriptor) => void} adjustFn - The function used to adjust the descriptor. It accepts a single parameter of type `Descriptor`.
39
+ * @returns {this} - Returns the current instance of the builder.
40
+ */
41
+ withAdjustDescriptor(adjustFn) {
42
+ adjustFn(this._descriptor);
43
+ return this;
44
+ }
45
+ /**
46
+ * Sets the data provider for the TvBuilder instance
47
+ *
48
+ * @param {TvBuilderDataProviderSetterFnType<Descriptor, DataProvider>} fn - The function that returns the new data provider. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.
49
+ * * @returns {this} - Returns the current instance of the builder.
50
+ */
51
+ withDataProvider(fn) {
52
+ this._dataProvider = fn(this.prepareSetterParams());
53
+ return this;
54
+ }
55
+ /**
56
+ * Adjusts the data provider using the provided adjust function.
57
+ *
58
+ * @param {(dataProvider: DataProvider) => void} adjustFn - The function used to adjust the data provider. It accepts a single parameter of type `DataProvider`.
59
+ * @returns {this} - Returns the current instance of the builder.
60
+ */
61
+ withAdjustDataProvider(adjustFn) {
62
+ adjustFn(this._dataProvider);
63
+ return this;
64
+ }
65
+ /**
66
+ * Adjusts the data provider and/or descriptor using the provided adjust function.
67
+ *
68
+ * @param {(params: TvBuilderSetterParamsType<Descriptor, DataProvider>) => void} adjustFn - The function used to adjust the data provider. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.
69
+ * @returns {this} - Returns the current instance of the builder.
70
+ */
71
+ withAdjust(adjustFn) {
72
+ adjustFn(this.prepareSetterParams());
73
+ return this;
74
+ }
75
+ /**
76
+ * Removes all the default tableview actions.
77
+ *
78
+ * @returns {this} - Returns the current instance of the builder.
79
+ */
80
+ withNoDefaultActions() {
81
+ this.defaultActions.forEach(a => (a.descriptor = null));
82
+ return this;
83
+ }
84
+ /**
85
+ * Adds the default actions specified in parameters.
86
+ *
87
+ * @param {TableviewDefaultActionsEnum[]} types - The default actions to add.
88
+ * @returns {this} - Returns the current instance of the builder.
89
+ */
90
+ withDefaultActions(...types) {
91
+ types.forEach(type => {
92
+ const action = this.defaultActions.find(a => a.type === type);
93
+ if (action?.descriptor === null) {
94
+ action.descriptor = undefined;
95
+ }
96
+ });
97
+ return this;
98
+ }
99
+ /**
100
+ * Removes the default actions specified in parameters.
101
+ *
102
+ * @param {TableviewDefaultActionsEnum[]} types - The default actions to remove.
103
+ * @returns {this} - Returns the current instance of the builder.
104
+ */
105
+ withoutDefaultActions(...types) {
106
+ types.forEach(type => {
107
+ const action = this.defaultActions.find(a => a.type === type);
108
+ if (action) {
109
+ action.descriptor = null;
110
+ }
111
+ });
112
+ return this;
113
+ }
114
+ /**
115
+ * Overrides the default action.
116
+ *
117
+ * @param {TableviewDefaultActionsEnum} type - The default actions to override.
118
+ * @param {TvBuilderActionSetterFnType<Model, ActionService, Descriptor, DataProvider>} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.
119
+ * @typeParam ActionService - The service type (same as build `Service` by default).
120
+ * @returns {this} - Returns the current instance of the builder.
121
+ */
122
+ withDefaultActionOverride(type, fn) {
123
+ const action = this.defaultActions.find(a => a.type === type);
124
+ if (action) {
125
+ action.descriptor = fn(this.prepareSetterParams()) ?? null;
126
+ }
127
+ return this;
128
+ }
129
+ /**
130
+ * Adds a custom action.
131
+ *
132
+ * @param {TvBuilderActionSetterFnType<Model, ActionService, Descriptor, DataProvider>} fn - The function that returns the new action descriptor. It accepts a single parameter of type `TvBuilderSetterParamsType<Descriptor, DataProvider>`.
133
+ * @typeParam ActionService - The service type (same as build `Service` by default).
134
+ * @returns {this} - Returns the current instance of the builder.
135
+ */
136
+ withAction(fn) {
137
+ const action = fn(this.prepareSetterParams());
138
+ if (action) {
139
+ this._customActions.push(action);
140
+ }
141
+ return this;
142
+ }
143
+ /**
144
+ * Builds and returns an instance of ITableview.
145
+ * DO NOT CALL this within tableview create callback function!
146
+ *
147
+ * @return {ITableview<Model, Service, Sorts, Filters, Descriptor, DataProvider>} - The built ITableview instance.
148
+ */
149
+ build() {
150
+ return {
151
+ actions: TableviewDefaultActions.createActions(this._descriptor, this.injector, this.defaultActions.filter(a => a.descriptor !== null).map(a => a.type), this.defaultActions
152
+ .filter(a => a.descriptor != null)
153
+ .reduce((acc, a) => ({
154
+ ...acc,
155
+ [a.type]: a.descriptor
156
+ }), {})).concat(this._customActions),
157
+ dataProvider: this._dataProvider,
158
+ descriptor: this._descriptor
159
+ };
160
+ }
161
+ }
162
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LWJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvdGFibGV2aWV3L2J1aWxkZXJzL3RhYmxldmlldy1idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE9BQU8sRUFBQyx1QkFBdUIsRUFBOEIsTUFBTSxzQ0FBc0MsQ0FBQztBQWUxRzs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sT0FBTyxnQkFBZ0I7SUFXekIsWUFDWSxXQUF1QixFQUN2QixhQUEyQixFQUNsQixRQUFrQjtRQUYzQixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN2QixrQkFBYSxHQUFiLGFBQWEsQ0FBYztRQUNsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBTi9CLG1CQUFjLEdBQW9CLHVCQUF1QixDQUFDLGlCQUFpQixFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBQyxDQUFDLENBQUMsQ0FBQztRQUNsSCxtQkFBYyxHQUFrQyxFQUFFLENBQUM7SUFNakUsQ0FBQztJQUVJLG1CQUFtQjtRQUN2QixPQUFPLEVBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUMsQ0FBQztJQUNyRyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxjQUFjLENBQUMsRUFBNkQ7UUFDeEUsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQztRQUNsRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxvQkFBb0IsQ0FBQyxRQUEwQztRQUMzRCxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcs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RUFDYixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLEtBQUssSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUN2RSxJQUFJLENBQUMsY0FBYztpQkFDZCxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQztpQkFDakMsTUFBTSxDQUNILENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDVCxHQUFHLEdBQUc7Z0JBQ04sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVc7YUFDMUIsQ0FBQyxFQUN5QyxFQUFFLENBQ2hELENBQ1IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQztZQUM3QixZQUFZLEVBQUUsSUFBSSxDQUFDLGFBQWE7WUFDaEMsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXO1NBQy9CLENBQUM7SUFDTixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdG9yfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtJRGF0YVByb3ZpZGVyfSBmcm9tICcuLi8uLi8uLi9kYXRhLXByb3ZpZGVycyc7XG5pbXBvcnQge0FjdGlvbkRlc2NyaXB0b3JJbnN0fSBmcm9tICcuLi8uLi8uLi9kZXNjcmlwdG9ycy9hY3Rpb24nO1xuaW1wb3J0IHtUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi4vLi4vLi4vZGVzY3JpcHRvcnMvdGFibGV2aWV3JztcbmltcG9ydCB7TnVsbGFibGV9IGZyb20gJy4uLy4uLy4uL3R5cGVzJztcbmltcG9ydCB7VGFibGV2aWV3RGVmYXVsdEFjdGlvbnMsIFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bX0gZnJvbSAnLi4vYWN0aW9ucy90YWJsZXZpZXctZGVmYXVsdC1hY3Rpb25zJztcbmltcG9ydCB7SVRhYmxldmlld30gZnJvbSAnLi4vbW9kZWxzL3RhYmxldmlldy5tb2RlbCc7XG5cbmV4cG9ydCB0eXBlIFR2QnVpbGRlclNldHRlclBhcmFtc1R5cGU8RGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPiA9IHtkZXNjcmlwdG9yOiBEZXNjcmlwdG9yOyBkYXRhUHJvdmlkZXI6IERhdGFQcm92aWRlcjsgaW5qZWN0b3I6IEluamVjdG9yfTtcbmV4cG9ydCB0eXBlIFR2QnVpbGRlckFjdGlvblNldHRlckZuVHlwZTxBY3Rpb25Nb2RlbCwgQWN0aW9uU2VydmljZSwgRGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPiA9IChcbiAgICBwYXJhbXM6IFR2QnVpbGRlclNldHRlclBhcmFtc1R5cGU8RGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPlxuKSA9PiBOdWxsYWJsZTxBY3Rpb25EZXNjcmlwdG9ySW5zdDxBY3Rpb25Nb2RlbCwgQWN0aW9uU2VydmljZT4+O1xuZXhwb3J0IHR5cGUgVHZCdWlsZGVyRGVzY3JpcHRvclNldHRlckZuVHlwZTxEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+ID0gKHBhcmFtczogVHZCdWlsZGVyU2V0dGVyUGFyYW1zVHlwZTxEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+KSA9PiBEZXNjcmlwdG9yO1xuZXhwb3J0IHR5cGUgVHZCdWlsZGVyRGF0YVByb3ZpZGVyU2V0dGVyRm5UeXBlPERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj4gPSAocGFyYW1zOiBUdkJ1aWxkZXJTZXR0ZXJQYXJhbXNUeXBlPERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj4pID0+IERhdGFQcm92aWRlcjtcblxudHlwZSBEZWZhdWx0QWN0aW9uID0ge1xuICAgIHR5cGU6IFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bTtcbiAgICBkZXNjcmlwdG9yOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxhbnksIGFueT4gfCBudWxsIHwgdW5kZWZpbmVkO1xufTtcblxuLyoqXG4gKiBUaGUgYFRhYmxldmlld0J1aWxkZXJgIGNsYXNzIGlzIHVzZWQgdG8gYnVpbGQgYSB0YWJsZXZpZXcgY29uZmlndXJhdGlvbi5cbiAqIEl0IGFsbG93cyB5b3UgdG8gc2V0IHZhcmlvdXMgb3B0aW9ucyBzdWNoIGFzIHRoZSBkZXNjcmlwdG9yLCBkYXRhIHByb3ZpZGVyLFxuICogZGVmYXVsdCBhY3Rpb25zLCBhbmQgY3VzdG9tIGFjdGlvbnMgZm9yIHRoZSB0YWJsZXZpZXcuXG4gKlxuICogQHR5cGVwYXJhbSBNb2RlbCAtIFRoZSBtYWluIG1vZGVsIHR5cGUuXG4gKiBAdHlwZXBhcmFtIFNlcnZpY2UgLSBUaGUgQVBJIHNlcnZpY2UgdHlwZS5cbiAqIEB0eXBlcGFyYW0gRGVzY3JpcHRvciAtIFRoZSBkZXNjcmlwdG9yIHR5cGUuXG4gKiBAdHlwZXBhcmFtIERhdGFQcm92aWRlciAtIFRoZSBkYXRhIHByb3ZpZGVyIHR5cGUuXG4gKiBAdHlwZXBhcmFtIFNvcnRzIC0gVGhlIHNvcnQgdHlwZSByZXByZXNlbnRpbmcgYXZhaWxhYmxlIHNvcnQga2V5cy5cbiAqIEB0eXBlcGFyYW0gRmlsdGVycyAtIFRoZSBmaWx0ZXIgdHlwZSByZXByZXNlbnRpbmcgYXZhaWxhYmxlIGZpbHRlciBrZXlzLlxuICovXG5leHBvcnQgY2xhc3MgVGFibGV2aWV3QnVpbGRlcjxcbiAgICBNb2RlbCxcbiAgICBTZXJ2aWNlLFxuICAgIERlc2NyaXB0b3IgZXh0ZW5kcyBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU29ydHMsIEZpbHRlcnM+LFxuICAgIERhdGFQcm92aWRlciBleHRlbmRzIElEYXRhUHJvdmlkZXI8TW9kZWwsIFNlcnZpY2U+LFxuICAgIFNvcnRzID0ga2V5b2YgTW9kZWwsXG4gICAgRmlsdGVycyBleHRlbmRzIGtleW9mIGFueSA9IGtleW9mIE1vZGVsXG4+IHtcbiAgICBwcml2YXRlIGRlZmF1bHRBY3Rpb25zOiBEZWZhdWx0QWN0aW9uW10gPSBUYWJsZXZpZXdEZWZhdWx0QWN0aW9ucy5nZXREZWZhdWx0QWN0aW9ucygpLm1hcChhID0+ICh7dHlwZTogYSwgZGVzY3JpcHRvcjogdW5kZWZpbmVkfSkpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2N1c3RvbUFjdGlvbnM6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsPltdID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfZGVzY3JpcHRvcjogRGVzY3JpcHRvcixcbiAgICAgICAgcHJpdmF0ZSBfZGF0YVByb3ZpZGVyOiBEYXRhUHJvdmlkZXIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yXG4gICAgKSB7fVxuXG4gICAgcHJpdmF0ZSBwcmVwYXJlU2V0dGVyUGFyYW1zKCk6IFR2QnVpbGRlclNldHRlclBhcmFtc1R5cGU8RGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPiB7XG4gICAgICAgIHJldHVybiB7ZGVzY3JpcHRvcjogdGhpcy5fZGVzY3JpcHRvciwgZGF0YVByb3ZpZGVyOiB0aGlzLl9kYXRhUHJvdmlkZXIsIGluamVjdG9yOiB0aGlzLmluamVjdG9yfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIGEgZGVzY3JpcHRvciBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IG9uZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7VHZCdWlsZGVyRGVzY3JpcHRvclNldHRlckZuVHlwZTxEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+fSBmbiAtIFRoZSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIG5ldyBkZXNjcmlwdG9yLiBJdCBzaG91bGQgYWNjZXB0IGEgc2luZ2xlIHBhcmFtZXRlciBvZiB0eXBlIGBUdkJ1aWxkZXJTZXR0ZXJQYXJhbXNUeXBlPERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj5gLlxuICAgICAqIEByZXR1cm5zIHt0aGlzfSAtIFJldHVybnMgdGhlIGN1cnJlbnQgaW5zdGFuY2Ugb2YgdGhlIGJ1aWxkZXIuXG4gICAgICovXG4gICAgd2l0aERlc2NyaXB0b3IoZm46IFR2QnVpbGRlckRlc2NyaXB0b3JTZXR0ZXJGblR5cGU8RGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9kZXNjcmlwdG9yID0gZm4odGhpcy5wcmVwYXJlU2V0dGVyUGFyYW1zKCkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGp1c3RzIHRoZSBkZXNjcmlwdG9yIHVzaW5nIHRoZSBwcm92aWRlZCBhZGp1c3QgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0geyhkZXNjcmlwdG9yOiBEZXNjcmlwdG9yKSA9PiB2b2lkfSBhZGp1c3RGbiAtIFRoZSBmdW5jdGlvbiB1c2VkIHRvIGFkanVzdCB0aGUgZGVzY3JpcHRvci4gSXQgYWNjZXB0cyBhIHNpbmdsZSBwYXJhbWV0ZXIgb2YgdHlwZSBgRGVzY3JpcHRvcmAuXG4gICAgICogQHJldHVybnMge3RoaXN9IC0gUmV0dXJucyB0aGUgY3VycmVudCBpbnN0YW5jZSBvZiB0aGUgYnVpbGRlci5cbiAgICAgKi9cbiAgICB3aXRoQWRqdXN0RGVzY3JpcHRvcihhZGp1c3RGbjogKGRlc2NyaXB0b3I6IERlc2NyaXB0b3IpID0+IHZvaWQpOiB0aGlzIHtcbiAgICAgICAgYWRqdXN0Rm4odGhpcy5fZGVzY3JpcHRvcik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGRhdGEgcHJvdmlkZXIgZm9yIHRoZSBUdkJ1aWxkZXIgaW5zdGFuY2VcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7VHZCdWlsZGVyRGF0YVByb3ZpZGVyU2V0dGVyRm5UeXBlPERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj59IGZuIC0gVGhlIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgbmV3IGRhdGEgcHJvdmlkZXIuIEl0IGFjY2VwdHMgYSBzaW5nbGUgcGFyYW1ldGVyIG9mIHR5cGUgYFR2QnVpbGRlclNldHRlclBhcmFtc1R5cGU8RGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPmAuXG4gICAgICogKiBAcmV0dXJucyB7dGhpc30gLSBSZXR1cm5zIHRoZSBjdXJyZW50IGluc3RhbmNlIG9mIHRoZSBidWlsZGVyLlxuICAgICAqL1xuICAgIHdpdGhEYXRhUHJvdmlkZXIoZm46IFR2QnVpbGRlckRhdGFQcm92aWRlclNldHRlckZuVHlwZTxEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2RhdGFQcm92aWRlciA9IGZuKHRoaXMucHJlcGFyZVNldHRlclBhcmFtcygpKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRqdXN0cyB0aGUgZGF0YSBwcm92aWRlciB1c2luZyB0aGUgcHJvdmlkZWQgYWRqdXN0IGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIHsoZGF0YVByb3ZpZGVyOiBEYXRhUHJvdmlkZXIpID0+IHZvaWR9IGFkanVzdEZuIC0gVGhlIGZ1bmN0aW9uIHVzZWQgdG8gYWRqdXN0IHRoZSBkYXRhIHByb3ZpZGVyLiBJdCBhY2NlcHRzIGEgc2luZ2xlIHBhcmFtZXRlciBvZiB0eXBlIGBEYXRhUHJvdmlkZXJgLlxuICAgICAqIEByZXR1cm5zIHt0aGlzfSAtIFJldHVybnMgdGhlIGN1cnJlbnQgaW5zdGFuY2Ugb2YgdGhlIGJ1aWxkZXIuXG4gICAgICovXG4gICAgd2l0aEFkanVzdERhdGFQcm92aWRlcihhZGp1c3RGbjogKGRhdGFQcm92aWRlcjogRGF0YVByb3ZpZGVyKSA9PiB2b2lkKTogdGhpcyB7XG4gICAgICAgIGFkanVzdEZuKHRoaXMuX2RhdGFQcm92aWRlcik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkanVzdHMgdGhlIGRhdGEgcHJvdmlkZXIgYW5kL29yIGRlc2NyaXB0b3IgdXNpbmcgdGhlIHByb3ZpZGVkIGFkanVzdCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7KHBhcmFtczogVHZCdWlsZGVyU2V0dGVyUGFyYW1zVHlwZTxEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+KSA9PiB2b2lkfSBhZGp1c3RGbiAtIFRoZSBmdW5jdGlvbiB1c2VkIHRvIGFkanVzdCB0aGUgZGF0YSBwcm92aWRlci4gSXQgYWNjZXB0cyBhIHNpbmdsZSBwYXJhbWV0ZXIgb2YgdHlwZSBgVHZCdWlsZGVyU2V0dGVyUGFyYW1zVHlwZTxEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+YC5cbiAgICAgKiBAcmV0dXJucyB7dGhpc30gLSBSZXR1cm5zIHRoZSBjdXJyZW50IGluc3RhbmNlIG9mIHRoZSBidWlsZGVyLlxuICAgICAqL1xuICAgIHdpdGhBZGp1c3QoYWRqdXN0Rm46IChwYXJhbXM6IFR2QnVpbGRlclNldHRlclBhcmFtc1R5cGU8RGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPikgPT4gdm9pZCk6IHRoaXMge1xuICAgICAgICBhZGp1c3RGbih0aGlzLnByZXBhcmVTZXR0ZXJQYXJhbXMoKSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYWxsIHRoZSBkZWZhdWx0IHRhYmxldmlldyBhY3Rpb25zLlxuICAgICAqXG4gICAgICogQHJldHVybnMge3RoaXN9IC0gUmV0dXJucyB0aGUgY3VycmVudCBpbnN0YW5jZSBvZiB0aGUgYnVpbGRlci5cbiAgICAgKi9cbiAgICB3aXRoTm9EZWZhdWx0QWN0aW9ucygpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5kZWZhdWx0QWN0aW9ucy5mb3JFYWNoKGEgPT4gKGEuZGVzY3JpcHRvciA9IG51bGwpKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyB0aGUgZGVmYXVsdCBhY3Rpb25zIHNwZWNpZmllZCBpbiBwYXJhbWV0ZXJzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW1bXX0gdHlwZXMgLSBUaGUgZGVmYXVsdCBhY3Rpb25zIHRvIGFkZC5cbiAgICAgKiBAcmV0dXJucyB7dGhpc30gLSBSZXR1cm5zIHRoZSBjdXJyZW50IGluc3RhbmNlIG9mIHRoZSBidWlsZGVyLlxuICAgICAqL1xuICAgIHdpdGhEZWZhdWx0QWN0aW9ucyguLi50eXBlczogVGFibGV2aWV3RGVmYXVsdEFjdGlvbnNFbnVtW10pOiB0aGlzIHtcbiAgICAgICAgdHlwZXMuZm9yRWFjaCh0eXBlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuZGVmYXVsdEFjdGlvbnMuZmluZChhID0+IGEudHlwZSA9PT0gdHlwZSk7XG4gICAgICAgICAgICBpZiAoYWN0aW9uPy5kZXNjcmlwdG9yID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgYWN0aW9uLmRlc2NyaXB0b3IgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIHRoZSBkZWZhdWx0IGFjdGlvbnMgc3BlY2lmaWVkIGluIHBhcmFtZXRlcnMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1RhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bVtdfSB0eXBlcyAtIFRoZSBkZWZhdWx0IGFjdGlvbnMgdG8gcmVtb3ZlLlxuICAgICAqIEByZXR1cm5zIHt0aGlzfSAtIFJldHVybnMgdGhlIGN1cnJlbnQgaW5zdGFuY2Ugb2YgdGhlIGJ1aWxkZXIuXG4gICAgICovXG4gICAgd2l0aG91dERlZmF1bHRBY3Rpb25zKC4uLnR5cGVzOiBUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW1bXSk6IHRoaXMge1xuICAgICAgICB0eXBlcy5mb3JFYWNoKHR5cGUgPT4ge1xuICAgICAgICAgICAgY29uc3QgYWN0aW9uID0gdGhpcy5kZWZhdWx0QWN0aW9ucy5maW5kKGEgPT4gYS50eXBlID09PSB0eXBlKTtcbiAgICAgICAgICAgIGlmIChhY3Rpb24pIHtcbiAgICAgICAgICAgICAgICBhY3Rpb24uZGVzY3JpcHRvciA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPdmVycmlkZXMgdGhlIGRlZmF1bHQgYWN0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtUYWJsZXZpZXdEZWZhdWx0QWN0aW9uc0VudW19IHR5cGUgLSBUaGUgZGVmYXVsdCBhY3Rpb25zIHRvIG92ZXJyaWRlLlxuICAgICAqIEBwYXJhbSB7VHZCdWlsZGVyQWN0aW9uU2V0dGVyRm5UeXBlPE1vZGVsLCBBY3Rpb25TZXJ2aWNlLCBEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+fSBmbiAtIFRoZSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIG5ldyBhY3Rpb24gZGVzY3JpcHRvci4gSXQgYWNjZXB0cyBhIHNpbmdsZSBwYXJhbWV0ZXIgb2YgdHlwZSBgVHZCdWlsZGVyU2V0dGVyUGFyYW1zVHlwZTxEZXNjcmlwdG9yLCBEYXRhUHJvdmlkZXI+YC5cbiAgICAgKiBAdHlwZVBhcmFtIEFjdGlvblNlcnZpY2UgLSBUaGUgc2VydmljZSB0eXBlIChzYW1lIGFzIGJ1aWxkIGBTZXJ2aWNlYCBieSBkZWZhdWx0KS5cbiAgICAgKiBAcmV0dXJucyB7dGhpc30gLSBSZXR1cm5zIHRoZSBjdXJyZW50IGluc3RhbmNlIG9mIHRoZSBidWlsZGVyLlxuICAgICAqL1xuICAgIHdpdGhEZWZhdWx0QWN0aW9uT3ZlcnJpZGU8QWN0aW9uU2VydmljZSA9IFNlcnZpY2U+KHR5cGU6IFRhYmxldmlld0RlZmF1bHRBY3Rpb25zRW51bSwgZm46IFR2QnVpbGRlckFjdGlvblNldHRlckZuVHlwZTxNb2RlbCwgQWN0aW9uU2VydmljZSwgRGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPik6IHRoaXMge1xuICAgICAgICBjb25zdCBhY3Rpb24gPSB0aGlzLmRlZmF1bHRBY3Rpb25zLmZpbmQoYSA9PiBhLnR5cGUgPT09IHR5cGUpO1xuICAgICAgICBpZiAoYWN0aW9uKSB7XG4gICAgICAgICAgICBhY3Rpb24uZGVzY3JpcHRvciA9IGZuKHRoaXMucHJlcGFyZVNldHRlclBhcmFtcygpKSA/PyBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgYSBjdXN0b20gYWN0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtUdkJ1aWxkZXJBY3Rpb25TZXR0ZXJGblR5cGU8TW9kZWwsIEFjdGlvblNlcnZpY2UsIERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj59IGZuIC0gVGhlIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgbmV3IGFjdGlvbiBkZXNjcmlwdG9yLiBJdCBhY2NlcHRzIGEgc2luZ2xlIHBhcmFtZXRlciBvZiB0eXBlIGBUdkJ1aWxkZXJTZXR0ZXJQYXJhbXNUeXBlPERlc2NyaXB0b3IsIERhdGFQcm92aWRlcj5gLlxuICAgICAqIEB0eXBlUGFyYW0gQWN0aW9uU2VydmljZSAtIFRoZSBzZXJ2aWNlIHR5cGUgKHNhbWUgYXMgYnVpbGQgYFNlcnZpY2VgIGJ5IGRlZmF1bHQpLlxuICAgICAqIEByZXR1cm5zIHt0aGlzfSAtIFJldHVybnMgdGhlIGN1cnJlbnQgaW5zdGFuY2Ugb2YgdGhlIGJ1aWxkZXIuXG4gICAgICovXG4gICAgd2l0aEFjdGlvbjxBY3Rpb25TZXJ2aWNlID0gU2VydmljZT4oZm46IFR2QnVpbGRlckFjdGlvblNldHRlckZuVHlwZTxNb2RlbCwgQWN0aW9uU2VydmljZSwgRGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPik6IHRoaXMge1xuICAgICAgICBjb25zdCBhY3Rpb24gPSBmbih0aGlzLnByZXBhcmVTZXR0ZXJQYXJhbXMoKSk7XG4gICAgICAgIGlmIChhY3Rpb24pIHtcbiAgICAgICAgICAgIHRoaXMuX2N1c3RvbUFjdGlvbnMucHVzaChhY3Rpb24pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEJ1aWxkcyBhbmQgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiBJVGFibGV2aWV3LlxuICAgICAqIERPIE5PVCBDQUxMIHRoaXMgd2l0aGluIHRhYmxldmlldyBjcmVhdGUgY2FsbGJhY2sgZnVuY3Rpb24hXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtJVGFibGV2aWV3PE1vZGVsLCBTZXJ2aWNlLCBTb3J0cywgRmlsdGVycywgRGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPn0gLSBUaGUgYnVpbHQgSVRhYmxldmlldyBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICBidWlsZCgpIHtcbiAgICAgICAgcmV0dXJuIDxJVGFibGV2aWV3PE1vZGVsLCBTZXJ2aWNlLCBTb3J0cywgRmlsdGVycywgRGVzY3JpcHRvciwgRGF0YVByb3ZpZGVyPj57XG4gICAgICAgICAgICBhY3Rpb25zOiBUYWJsZXZpZXdEZWZhdWx0QWN0aW9ucy5jcmVhdGVBY3Rpb25zKFxuICAgICAgICAgICAgICAgIHRoaXMuX2Rlc2NyaXB0b3IgYXMgVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8YW55LCBhbnksIGFueT4sXG4gICAgICAgICAgICAgICAgdGhpcy5pbmplY3RvcixcbiAgICAgICAgICAgICAgICB0aGlzLmRlZmF1bHRBY3Rpb25zLmZpbHRlcihhID0+IGEuZGVzY3JpcHRvciAhPT0gbnVsbCkubWFwKGEgPT4gYS50eXBlKSxcbiAgICAgICAgICAgICAgICB0aGlzLmRlZmF1bHRBY3Rpb25zXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoYSA9PiBhLmRlc2NyaXB0b3IgIT0gbnVsbClcbiAgICAgICAgICAgICAgICAgICAgLnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgICAgIChhY2MsIGEpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthLnR5cGVdOiBhLmRlc2NyaXB0b3IhXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIDxSZWNvcmQ8bnVtYmVyLCBBY3Rpb25EZXNjcmlwdG9ySW5zdDxhbnk+Pj57fVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLmNvbmNhdCh0aGlzLl9jdXN0b21BY3Rpb25zKSxcbiAgICAgICAgICAgIGRhdGFQcm92aWRlcjogdGhpcy5fZGF0YVByb3ZpZGVyLFxuICAgICAgICAgICAgZGVzY3JpcHRvcjogdGhpcy5fZGVzY3JpcHRvclxuICAgICAgICB9O1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,24 @@
1
+ import { Injector, inject } from '@angular/core';
2
+ import { TableviewDataProvider } from '../../../data-providers';
3
+ import { TableviewDescriptor } from '../../../descriptors/tableview';
4
+ import { TableviewBuilder } from '../builders/tableview-builder';
5
+ /**
6
+ * Creates a tableview with the given model, service.
7
+ *
8
+ * @param {ModelDescriptor<Model>} model - The model descriptor.
9
+ * @param {ServiceClassType<Service>} service - The class type of the service.
10
+ * @param {(builder: TableviewBuilder) => void} [buildFn] - The optional callback function to customize the tableview using the prepared builder.
11
+ *
12
+ * @returns A tableview instance with descriptor, data provider and actions.
13
+ */
14
+ export function tableview(model, service, buildFn) {
15
+ const builder = new TableviewBuilder(TableviewDescriptor.fromModel(model), TableviewDataProvider.fromService(service), inject(Injector));
16
+ buildFn?.(builder);
17
+ return builder.build();
18
+ }
19
+ export function tableviewWithSortAndFilter(model, service, sorts, filters, buildFn) {
20
+ const builder = new TableviewBuilder(TableviewDescriptor.fromModel(model), TableviewDataProvider.fromService(service), inject(Injector));
21
+ buildFn?.(builder);
22
+ return builder.build();
23
+ }
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LWNyZWF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXZpZXcvaGVscGVycy90YWJsZXZpZXctY3JlYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRS9DLE9BQU8sRUFBQyxxQkFBcUIsRUFBNEIsTUFBTSx5QkFBeUIsQ0FBQztBQUV6RixPQUFPLEVBQUMsbUJBQW1CLEVBQTBCLE1BQU0sZ0NBQWdDLENBQUM7QUFFNUYsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFFL0Q7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUNyQixLQUE2QixFQUM3QixPQUFrQyxFQUNsQyxPQUVTO0lBRVQsTUFBTSxPQUFPLEdBQUcsSUFBSSxnQkFBZ0IsQ0FDaEMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUNwQyxxQkFBcUIsQ0FBQyxXQUFXLENBQWlDLE9BQU8sQ0FBQyxFQUMxRSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQ25CLENBQUM7SUFDRixPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuQixPQUFPLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUMzQixDQUFDO0FBRUQsTUFBTSxVQUFVLDBCQUEwQixDQUN0QyxLQUE2QixFQUM3QixPQUFrQyxFQUNsQyxLQUE0QixFQUM1QixPQUFnQyxFQUNoQyxPQUVTO0lBRVQsTUFBTSxPQUFPLEdBQUcsSUFBSSxnQkFBZ0IsQ0FDaEMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUNwQyxxQkFBcUIsQ0FBQyxXQUFXLENBQWlDLE9BQU8sQ0FBQyxFQUMxRSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQ25CLENBQUM7SUFDRixPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuQixPQUFPLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUMzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RvciwgaW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtUYWJsZXZpZXdEYXRhUHJvdmlkZXIsIFRhYmxldmlld0RhdGFQcm92aWRlckluc3R9IGZyb20gJy4uLy4uLy4uL2RhdGEtcHJvdmlkZXJzJztcbmltcG9ydCB7TW9kZWxEZXNjcmlwdG9yLCBUeXBlRGVzY3JpcHRvcn0gZnJvbSAnLi4vLi4vLi4vZGVzY3JpcHRvcnMvbW9kZWwnO1xuaW1wb3J0IHtUYWJsZXZpZXdEZXNjcmlwdG9yLCBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi4vLi4vLi4vZGVzY3JpcHRvcnMvdGFibGV2aWV3JztcbmltcG9ydCB7U2VydmljZUNsYXNzVHlwZX0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHtUYWJsZXZpZXdCdWlsZGVyfSBmcm9tICcuLi9idWlsZGVycy90YWJsZXZpZXctYnVpbGRlcic7XG5cbi8qKlxuICogQ3JlYXRlcyBhIHRhYmxldmlldyB3aXRoIHRoZSBnaXZlbiBtb2RlbCwgc2VydmljZS5cbiAqXG4gKiBAcGFyYW0ge01vZGVsRGVzY3JpcHRvcjxNb2RlbD59IG1vZGVsIC0gVGhlIG1vZGVsIGRlc2NyaXB0b3IuXG4gKiBAcGFyYW0ge1NlcnZpY2VDbGFzc1R5cGU8U2VydmljZT59IHNlcnZpY2UgLSBUaGUgY2xhc3MgdHlwZSBvZiB0aGUgc2VydmljZS5cbiAqIEBwYXJhbSB7KGJ1aWxkZXI6IFRhYmxldmlld0J1aWxkZXIpID0+IHZvaWR9IFtidWlsZEZuXSAtIFRoZSBvcHRpb25hbCBjYWxsYmFjayBmdW5jdGlvbiB0byBjdXN0b21pemUgdGhlIHRhYmxldmlldyB1c2luZyB0aGUgcHJlcGFyZWQgYnVpbGRlci5cbiAqXG4gKiBAcmV0dXJucyBBIHRhYmxldmlldyBpbnN0YW5jZSB3aXRoIGRlc2NyaXB0b3IsIGRhdGEgcHJvdmlkZXIgYW5kIGFjdGlvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXc8TW9kZWwsIFNlcnZpY2UsIFNvcnRzID0ga2V5b2YgTW9kZWwsIEZpbHRlcnMgZXh0ZW5kcyBrZXlvZiBhbnkgPSBrZXlvZiBNb2RlbD4oXG4gICAgbW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD4sXG4gICAgc2VydmljZTogU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPixcbiAgICBidWlsZEZuPzogKFxuICAgICAgICBidWlsZGVyOiBUYWJsZXZpZXdCdWlsZGVyPE1vZGVsLCBTZXJ2aWNlLCBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU29ydHMsIEZpbHRlcnM+LCBUYWJsZXZpZXdEYXRhUHJvdmlkZXJJbnN0PE1vZGVsLCBTZXJ2aWNlLCBTb3J0cywgRmlsdGVycz4sIFNvcnRzLCBGaWx0ZXJzPlxuICAgICkgPT4gdm9pZFxuKSB7XG4gICAgY29uc3QgYnVpbGRlciA9IG5ldyBUYWJsZXZpZXdCdWlsZGVyPE1vZGVsLCBTZXJ2aWNlLCBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU29ydHMsIEZpbHRlcnM+LCBUYWJsZXZpZXdEYXRhUHJvdmlkZXJJbnN0PE1vZGVsLCBTZXJ2aWNlLCBTb3J0cywgRmlsdGVycz4sIFNvcnRzLCBGaWx0ZXJzPihcbiAgICAgICAgVGFibGV2aWV3RGVzY3JpcHRvci5mcm9tTW9kZWwobW9kZWwpLFxuICAgICAgICBUYWJsZXZpZXdEYXRhUHJvdmlkZXIuZnJvbVNlcnZpY2U8U2VydmljZSwgTW9kZWwsIFNvcnRzLCBGaWx0ZXJzPihzZXJ2aWNlKSxcbiAgICAgICAgaW5qZWN0KEluamVjdG9yKVxuICAgICk7XG4gICAgYnVpbGRGbj8uKGJ1aWxkZXIpO1xuICAgIHJldHVybiBidWlsZGVyLmJ1aWxkKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZXZpZXdXaXRoU29ydEFuZEZpbHRlcjxNb2RlbCwgU2VydmljZSwgU29ydHMsIEZpbHRlcnMgZXh0ZW5kcyBrZXlvZiBhbnk+KFxuICAgIG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+LFxuICAgIHNlcnZpY2U6IFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT4sXG4gICAgc29ydHM6IFR5cGVEZXNjcmlwdG9yPFNvcnRzPixcbiAgICBmaWx0ZXJzOiBUeXBlRGVzY3JpcHRvcjxGaWx0ZXJzPixcbiAgICBidWlsZEZuPzogKFxuICAgICAgICBidWlsZGVyOiBUYWJsZXZpZXdCdWlsZGVyPE1vZGVsLCBTZXJ2aWNlLCBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU29ydHMsIEZpbHRlcnM+LCBUYWJsZXZpZXdEYXRhUHJvdmlkZXJJbnN0PE1vZGVsLCBTZXJ2aWNlLCBTb3J0cywgRmlsdGVycz4sIFNvcnRzLCBGaWx0ZXJzPlxuICAgICkgPT4gdm9pZFxuKSB7XG4gICAgY29uc3QgYnVpbGRlciA9IG5ldyBUYWJsZXZpZXdCdWlsZGVyPE1vZGVsLCBTZXJ2aWNlLCBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxNb2RlbCwgU29ydHMsIEZpbHRlcnM+LCBUYWJsZXZpZXdEYXRhUHJvdmlkZXJJbnN0PE1vZGVsLCBTZXJ2aWNlLCBTb3J0cywgRmlsdGVycz4sIFNvcnRzLCBGaWx0ZXJzPihcbiAgICAgICAgVGFibGV2aWV3RGVzY3JpcHRvci5mcm9tTW9kZWwobW9kZWwpLFxuICAgICAgICBUYWJsZXZpZXdEYXRhUHJvdmlkZXIuZnJvbVNlcnZpY2U8U2VydmljZSwgTW9kZWwsIFNvcnRzLCBGaWx0ZXJzPihzZXJ2aWNlKSxcbiAgICAgICAgaW5qZWN0KEluamVjdG9yKVxuICAgICk7XG4gICAgYnVpbGRGbj8uKGJ1aWxkZXIpO1xuICAgIHJldHVybiBidWlsZGVyLmJ1aWxkKCk7XG59XG4iXX0=
@@ -1,4 +1,7 @@
1
+ export * from './actions/tableview-default-actions';
2
+ export * from './builders/tableview-builder';
1
3
  export * from './tableview.component';
2
- export * from './route/tableview-route.abstract.component';
3
4
  export * from './route/tableview-route.component';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvdGFibGV2aWV3L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLG1DQUFtQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi90YWJsZXZpZXcuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcm91dGUvdGFibGV2aWV3LXJvdXRlLmFic3RyYWN0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3JvdXRlL3RhYmxldmlldy1yb3V0ZS5jb21wb25lbnQnO1xuIl19
5
+ export * from './models/tableview.model';
6
+ export * from './helpers/tableview-create';
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvdGFibGV2aWV3L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDRCQUE0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hY3Rpb25zL3RhYmxldmlldy1kZWZhdWx0LWFjdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9idWlsZGVycy90YWJsZXZpZXctYnVpbGRlcic7XG5leHBvcnQgKiBmcm9tICcuL3RhYmxldmlldy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9yb3V0ZS90YWJsZXZpZXctcm91dGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzL3RhYmxldmlldy5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2hlbHBlcnMvdGFibGV2aWV3LWNyZWF0ZSc7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL3RhYmxldmlldy9tb2RlbHMvdGFibGV2aWV3Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0lUYWJsZXZpZXdEYXRhUHJvdmlkZXJ9IGZyb20gJy4uLy4uLy4uL2RhdGEtcHJvdmlkZXJzJztcbmltcG9ydCB7QWN0aW9uRGVzY3JpcHRvckluc3R9IGZyb20gJy4uLy4uLy4uL2Rlc2NyaXB0b3JzL2FjdGlvbic7XG5pbXBvcnQge1RhYmxldmlld0Rlc2NyaXB0b3JJbnN0fSBmcm9tICcuLi8uLi8uLi9kZXNjcmlwdG9ycy90YWJsZXZpZXcnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElUYWJsZXZpZXc8XG4gICAgTW9kZWwsXG4gICAgU2VydmljZSxcbiAgICBTb3J0cyA9IGtleW9mIE1vZGVsLFxuICAgIEZpbHRlcnMgZXh0ZW5kcyBrZXlvZiBhbnkgPSBrZXlvZiBNb2RlbCxcbiAgICBEZXNjcmlwdG9yID0gVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8TW9kZWwsIFNvcnRzLCBGaWx0ZXJzPixcbiAgICBEYXRhUHJvdmlkZXIgPSBJVGFibGV2aWV3RGF0YVByb3ZpZGVyPE1vZGVsLCBTZXJ2aWNlLCBTb3J0cywgRmlsdGVycz5cbj4ge1xuICAgIGRlc2NyaXB0b3I6IERlc2NyaXB0b3I7XG4gICAgZGF0YVByb3ZpZGVyOiBEYXRhUHJvdmlkZXI7XG4gICAgYWN0aW9uczogQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWw+W107XG59XG4iXX0=
@@ -1,47 +1,15 @@
1
1
  import { Component, Input } from '@angular/core';
2
- import { TableviewDescriptorInst } from '../../../descriptors/tableview';
3
2
  import { MngTableviewComponent } from '../tableview.component';
4
- import { AMngTableviewRouteComponent } from './tableview-route.abstract.component';
5
3
  import * as i0 from "@angular/core";
6
- export class MngTableviewRouteComponent extends AMngTableviewRouteComponent {
7
- createTableviewDescriptor() {
8
- if (this.descriptorInit) {
9
- return this.descriptorInit;
10
- }
11
- if (this.routeData?.tableview?.descriptor) {
12
- throw Error('Tableview requires a descriptor.');
13
- }
14
- return this.routeData.tableview.descriptor;
15
- }
16
- createTableviewDataProvider() {
17
- if (this.dataProviderInit) {
18
- return this.dataProviderInit;
19
- }
20
- if (this.routeData?.tableview?.dataProvider) {
21
- throw Error('Tableview requires a data provider.');
22
- }
23
- return this.routeData.tableview.dataProvider;
24
- }
25
- createActionDescriptors() {
26
- if (this.actionsInit) {
27
- return this.actionsInit;
28
- }
29
- return this.routeData?.tableview?.actions ?? super.createActionDescriptors();
30
- }
31
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: MngTableviewRouteComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
32
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: MngTableviewRouteComponent, isStandalone: true, selector: "mng-tableview-route", inputs: { descriptorInit: ["descriptor", "descriptorInit"], dataProviderInit: ["dataProvider", "dataProviderInit"], actionsInit: ["actions", "actionsInit"] }, usesInheritance: true, ngImport: i0, template: "<div class=\"grid\">\n <div class=\"col-12\">\n <mng-tableview [descriptor]=\"descriptor\" [dataProvider]=\"dataProvider\" [actions]=\"actions\"> </mng-tableview>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: MngTableviewComponent, selector: "mng-tableview", inputs: ["descriptor", "dataProvider", "actions"] }] }); }
4
+ export class MngTableviewRouteComponent {
5
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: MngTableviewRouteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: MngTableviewRouteComponent, isStandalone: true, selector: "mng-tableview-route", inputs: { tableview: "tableview" }, ngImport: i0, template: "<mng-tableview [descriptor]=\"tableview.descriptor\" [dataProvider]=\"tableview.dataProvider\" [actions]=\"tableview.actions\"> </mng-tableview>\n", dependencies: [{ kind: "component", type: MngTableviewComponent, selector: "mng-tableview", inputs: ["descriptor", "dataProvider", "actions"] }] }); }
33
7
  }
34
8
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: MngTableviewRouteComponent, decorators: [{
35
9
  type: Component,
36
- args: [{ standalone: true, selector: 'mng-tableview-route', imports: [MngTableviewComponent], template: "<div class=\"grid\">\n <div class=\"col-12\">\n <mng-tableview [descriptor]=\"descriptor\" [dataProvider]=\"dataProvider\" [actions]=\"actions\"> </mng-tableview>\n </div>\n</div>\n" }]
37
- }], propDecorators: { descriptorInit: [{
10
+ args: [{ standalone: true, selector: 'mng-tableview-route', imports: [MngTableviewComponent], template: "<mng-tableview [descriptor]=\"tableview.descriptor\" [dataProvider]=\"tableview.dataProvider\" [actions]=\"tableview.actions\"> </mng-tableview>\n" }]
11
+ }], propDecorators: { tableview: [{
38
12
  type: Input,
39
- args: ['descriptor']
40
- }], dataProviderInit: [{
41
- type: Input,
42
- args: ['dataProvider']
43
- }], actionsInit: [{
44
- type: Input,
45
- args: ['actions']
13
+ args: [{ required: true }]
46
14
  }] } });
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LXJvdXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXZpZXcvcm91dGUvdGFibGV2aWV3LXJvdXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy90ZW1wbGF0ZXMvdGFibGV2aWV3LXJvdXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBSXZELE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQzdELE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDOztBQVFqRixNQUFNLE9BQU8sMEJBQTZDLFNBQVEsMkJBQWlDO0lBS3JGLHlCQUF5QjtRQUMvQixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDckIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO1NBQzlCO1FBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUU7WUFDdkMsTUFBTSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQztTQUNuRDtRQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFVLENBQUMsVUFBVSxDQUFDO0lBQ2hELENBQUM7SUFFUywyQkFBMkI7UUFDakMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDdkIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7U0FDaEM7UUFDRCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRTtZQUN6QyxNQUFNLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO1NBQ3REO1FBQ0QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVUsQ0FBQyxZQUFZLENBQUM7SUFDbEQsQ0FBQztJQUVrQix1QkFBdUI7UUFDdEMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2xCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztTQUMzQjtRQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsT0FBTyxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO0lBQ2pGLENBQUM7OEdBOUJRLDBCQUEwQjtrR0FBMUIsMEJBQTBCLHFRQ2R2QyxvTUFLQSw0Q0RNYyxxQkFBcUI7OzJGQUd0QiwwQkFBMEI7a0JBTnRDLFNBQVM7aUNBQ00sSUFBSSxZQUNOLHFCQUFxQixXQUN0QixDQUFDLHFCQUFxQixDQUFDOzhCQUlKLGNBQWM7c0JBQXpDLEtBQUs7dUJBQUMsWUFBWTtnQkFDVyxnQkFBZ0I7c0JBQTdDLEtBQUs7dUJBQUMsY0FBYztnQkFDSSxXQUFXO3NCQUFuQyxLQUFLO3VCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7SVRhYmxldmlld0RhdGFQcm92aWRlcn0gZnJvbSAnLi4vLi4vLi4vZGF0YS1wcm92aWRlcnMnO1xuaW1wb3J0IHtBY3Rpb25EZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi4vLi4vLi4vZGVzY3JpcHRvcnMvYWN0aW9uJztcbmltcG9ydCB7VGFibGV2aWV3RGVzY3JpcHRvckluc3R9IGZyb20gJy4uLy4uLy4uL2Rlc2NyaXB0b3JzL3RhYmxldmlldyc7XG5pbXBvcnQge01uZ1RhYmxldmlld0NvbXBvbmVudH0gZnJvbSAnLi4vdGFibGV2aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQge0FNbmdUYWJsZXZpZXdSb3V0ZUNvbXBvbmVudH0gZnJvbSAnLi90YWJsZXZpZXctcm91dGUuYWJzdHJhY3QuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ21uZy10YWJsZXZpZXctcm91dGUnLFxuICAgIGltcG9ydHM6IFtNbmdUYWJsZXZpZXdDb21wb25lbnRdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi4vLi4vLi4vLi4vdGVtcGxhdGVzL3RhYmxldmlldy1yb3V0ZS5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgTW5nVGFibGV2aWV3Um91dGVDb21wb25lbnQ8VCwgUyA9IHVuZGVmaW5lZD4gZXh0ZW5kcyBBTW5nVGFibGV2aWV3Um91dGVDb21wb25lbnQ8VCwgUz4gaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgnZGVzY3JpcHRvcicpIHB1YmxpYyBkZXNjcmlwdG9ySW5pdD86IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PFQ+O1xuICAgIEBJbnB1dCgnZGF0YVByb3ZpZGVyJykgcHVibGljIGRhdGFQcm92aWRlckluaXQ/OiBJVGFibGV2aWV3RGF0YVByb3ZpZGVyPFQsIFM+O1xuICAgIEBJbnB1dCgnYWN0aW9ucycpIHB1YmxpYyBhY3Rpb25zSW5pdD86IEFycmF5PEFjdGlvbkRlc2NyaXB0b3JJbnN0PFQ+PjtcblxuICAgIHByb3RlY3RlZCBjcmVhdGVUYWJsZXZpZXdEZXNjcmlwdG9yKCk6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PFQ+IHtcbiAgICAgICAgaWYgKHRoaXMuZGVzY3JpcHRvckluaXQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRlc2NyaXB0b3JJbml0O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnJvdXRlRGF0YT8udGFibGV2aWV3Py5kZXNjcmlwdG9yKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcignVGFibGV2aWV3IHJlcXVpcmVzIGEgZGVzY3JpcHRvci4nKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5yb3V0ZURhdGEudGFibGV2aWV3IS5kZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVUYWJsZXZpZXdEYXRhUHJvdmlkZXIoKTogSVRhYmxldmlld0RhdGFQcm92aWRlcjxULCBTPiB7XG4gICAgICAgIGlmICh0aGlzLmRhdGFQcm92aWRlckluaXQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFQcm92aWRlckluaXQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucm91dGVEYXRhPy50YWJsZXZpZXc/LmRhdGFQcm92aWRlcikge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ1RhYmxldmlldyByZXF1aXJlcyBhIGRhdGEgcHJvdmlkZXIuJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucm91dGVEYXRhLnRhYmxldmlldyEuZGF0YVByb3ZpZGVyO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBjcmVhdGVBY3Rpb25EZXNjcmlwdG9ycygpOiBBcnJheTxBY3Rpb25EZXNjcmlwdG9ySW5zdDxUPj4ge1xuICAgICAgICBpZiAodGhpcy5hY3Rpb25zSW5pdCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWN0aW9uc0luaXQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucm91dGVEYXRhPy50YWJsZXZpZXc/LmFjdGlvbnMgPz8gc3VwZXIuY3JlYXRlQWN0aW9uRGVzY3JpcHRvcnMoKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZ3JpZFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cbiAgICAgICAgPG1uZy10YWJsZXZpZXcgW2Rlc2NyaXB0b3JdPVwiZGVzY3JpcHRvclwiIFtkYXRhUHJvdmlkZXJdPVwiZGF0YVByb3ZpZGVyXCIgW2FjdGlvbnNdPVwiYWN0aW9uc1wiPiA8L21uZy10YWJsZXZpZXc+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LXJvdXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXZpZXcvcm91dGUvdGFibGV2aWV3LXJvdXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXZpZXcvcm91dGUvdGFibGV2aWV3LXJvdXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRy9DLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHdCQUF3QixDQUFDOztBQVE3RCxNQUFNLE9BQU8sMEJBQTBCOzhHQUExQiwwQkFBMEI7a0dBQTFCLDBCQUEwQixtSENYdkMsb0pBQ0EsNENET2MscUJBQXFCOzsyRkFHdEIsMEJBQTBCO2tCQU50QyxTQUFTO2lDQUNNLElBQUksWUFDTixxQkFBcUIsV0FDdEIsQ0FBQyxxQkFBcUIsQ0FBQzs4QkFJQSxTQUFTO3NCQUF4QyxLQUFLO3VCQUFDLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7SVRhYmxldmlld30gZnJvbSAnLi4vbW9kZWxzL3RhYmxldmlldy5tb2RlbCc7XG5pbXBvcnQge01uZ1RhYmxldmlld0NvbXBvbmVudH0gZnJvbSAnLi4vdGFibGV2aWV3LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdtbmctdGFibGV2aWV3LXJvdXRlJyxcbiAgICBpbXBvcnRzOiBbTW5nVGFibGV2aWV3Q29tcG9uZW50XSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGFibGV2aWV3LXJvdXRlLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBNbmdUYWJsZXZpZXdSb3V0ZUNvbXBvbmVudDxJdGVtLCBTZXJ2aWNlID0gdW5kZWZpbmVkLCBTb3J0cyA9IGtleW9mIEl0ZW0sIEZpbHRlcnMgZXh0ZW5kcyBrZXlvZiBhbnkgPSBrZXlvZiBJdGVtPiB7XG4gICAgQElucHV0KHtyZXF1aXJlZDogdHJ1ZX0pIHB1YmxpYyB0YWJsZXZpZXchOiBJVGFibGV2aWV3PEl0ZW0sIFNlcnZpY2UsIFNvcnRzLCBGaWx0ZXJzPjtcbn1cbiIsIjxtbmctdGFibGV2aWV3IFtkZXNjcmlwdG9yXT1cInRhYmxldmlldy5kZXNjcmlwdG9yXCIgW2RhdGFQcm92aWRlcl09XCJ0YWJsZXZpZXcuZGF0YVByb3ZpZGVyXCIgW2FjdGlvbnNdPVwidGFibGV2aWV3LmFjdGlvbnNcIj4gPC9tbmctdGFibGV2aWV3PlxuIl19