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

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 (386) hide show
  1. package/core/components/notification/notification-wrapper.component.d.ts +4 -4
  2. package/core/error/error.model.d.ts +4 -4
  3. package/core/helpers/notification.d.ts +2 -2
  4. package/core/provide.d.ts +3 -3
  5. package/core/styles/style-constants.d.ts +9 -8
  6. package/core/styles/style.model.d.ts +2 -1
  7. package/fesm2022/mediusinc-mng-commons-core.mjs +91 -104
  8. package/fesm2022/mediusinc-mng-commons-core.mjs.map +1 -1
  9. package/fesm2022/mediusinc-mng-commons-form-api.mjs +8 -9
  10. package/fesm2022/mediusinc-mng-commons-form-api.mjs.map +1 -1
  11. package/fesm2022/mediusinc-mng-commons-form.mjs +149 -49
  12. package/fesm2022/mediusinc-mng-commons-form.mjs.map +1 -1
  13. package/fesm2022/mediusinc-mng-commons-table-column-toggle.component-DTSBP9WQ.mjs +31 -0
  14. package/fesm2022/mediusinc-mng-commons-table-column-toggle.component-DTSBP9WQ.mjs.map +1 -0
  15. package/fesm2022/mediusinc-mng-commons-table-mediusinc-mng-commons-table-JZpyiDIL.mjs +2118 -0
  16. package/fesm2022/mediusinc-mng-commons-table-mediusinc-mng-commons-table-JZpyiDIL.mjs.map +1 -0
  17. package/fesm2022/mediusinc-mng-commons-table.mjs +1 -2154
  18. package/fesm2022/mediusinc-mng-commons-table.mjs.map +1 -1
  19. package/fesm2022/mediusinc-mng-commons-tableview-api.mjs +97 -49
  20. package/fesm2022/mediusinc-mng-commons-tableview-api.mjs.map +1 -1
  21. package/fesm2022/mediusinc-mng-commons-tableview.mjs +326 -290
  22. package/fesm2022/mediusinc-mng-commons-tableview.mjs.map +1 -1
  23. package/fesm2022/mediusinc-mng-commons.mjs.map +1 -1
  24. package/form/api/index.d.ts +1 -0
  25. package/form/api/models/empty-value.model.d.ts +7 -0
  26. package/form/components/autocomplete/autocomplete.component.d.ts +1 -2
  27. package/form/components/date-range/date-range.component.d.ts +4 -3
  28. package/form/components/dropdown/dropdown.component.d.ts +3 -2
  29. package/form/components/number-range/number-range.component.d.ts +3 -2
  30. package/form/directives/input-empty-value.directive.d.ts +40 -0
  31. package/form/directives/input-trim.directive.d.ts +3 -5
  32. package/form/index.d.ts +1 -0
  33. package/i18n/en.json +57 -8
  34. package/i18n/sl.json +1 -3
  35. package/package.json +16 -42
  36. package/provide.d.ts +2 -2
  37. package/table/components/column-toggle/column-toggle.component.d.ts +12 -0
  38. package/table/components/filter/filter-form/filter-form.component.d.ts +2 -2
  39. package/table/components/table/table.component.d.ts +0 -1
  40. package/table/helpers/filters.d.ts +3 -2
  41. package/table/helpers/notification.d.ts +2 -2
  42. package/table/services/table-metadata.service.d.ts +3 -3
  43. package/tableview/action/components/action/action.component.d.ts +1 -0
  44. package/tableview/action/components/editor/action-editor.component.d.ts +1 -1
  45. package/tableview/action/components/table/action-table.component.d.ts +2 -1
  46. package/tableview/action/helpers/notification.d.ts +3 -3
  47. package/tableview/action/models/execution/action-context.model.d.ts +2 -2
  48. package/tableview/action/services/action-executor.service.d.ts +1 -1
  49. package/tableview/api/action/models/execution/action-context.model.d.ts +2 -2
  50. package/tableview/api/editor/descriptors/editor.descriptor.d.ts +5 -0
  51. package/tableview/api/editor/descriptors/field-base.descriptor.d.ts +14 -10
  52. package/tableview/api/editor/descriptors/field-group.descriptor.d.ts +10 -0
  53. package/tableview/api/editor/descriptors/field.descriptor.d.ts +36 -9
  54. package/tableview/api/editor/descriptors/wrappers/editor-descriptor-nested-object-wrapper.d.ts +1 -1
  55. package/tableview/api/editor/models/field-action-context.model.d.ts +1 -1
  56. package/tableview/api/editor/models/field.model.d.ts +1 -2
  57. package/tableview/api/editor/models/form-editor.interface.d.ts +2 -2
  58. package/tableview/api/editor/models/formly-custom-field.model.d.ts +1 -1
  59. package/tableview/api/editor/models/formly-field.model.d.ts +2 -2
  60. package/tableview/editor/components/editor/form-editor.component.d.ts +2 -2
  61. package/tableview/editor/components/formly/fields/formly-field-action/formly-field-action.component.d.ts +1 -1
  62. package/tableview/editor/components/formly/fields/formly-field-datepicker/formly-field-datepicker.component.d.ts +2 -1
  63. package/tableview/editor/components/formly/fields/formly-field-fieldset/formly-field-fieldset.component.d.ts +4 -6
  64. package/tableview/editor/components/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.d.ts +0 -2
  65. package/tableview/editor/components/formly/fields/formly-field-tabs/formly-field-tabs.component.d.ts +2 -2
  66. package/tableview/editor/components/formly/fields/formly-field-type.abstract.component.d.ts +8 -15
  67. package/tableview/editor/components/formly/fields/formly-group-type.abstract.component.d.ts +7 -0
  68. package/tableview/editor/components/formly/fields/formly-type.abstract.component.d.ts +20 -0
  69. package/tableview/editor/components/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.d.ts +11 -4
  70. package/tableview/editor/components/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.d.ts +2 -1
  71. package/tableview/editor/helpers/formly-config.d.ts +1 -1
  72. package/tableview/editor/helpers/notification.d.ts +3 -3
  73. package/tableview/editor/models/formly-config.model.d.ts +10 -1
  74. package/tableview/editor/models/formly.model.d.ts +23 -0
  75. package/tableview/editor/services/form-editor.service.d.ts +2 -2
  76. package/tableview/tableview/router/tableview-route-builder.d.ts +10 -3
  77. package/tableview/tableview/services/tableview-feature-config.token.d.ts +1 -1
  78. package/version-info.json +3 -3
  79. package/esm2022/core/action/action-data.model.mjs +0 -2
  80. package/esm2022/core/action/action-parameters.model.mjs +0 -2
  81. package/esm2022/core/components/notification/notification-wrapper.component.mjs +0 -50
  82. package/esm2022/core/data-list/data-list-params-helpers.mjs +0 -465
  83. package/esm2022/core/data-list/data-list.model.mjs +0 -2
  84. package/esm2022/core/data-list/filter-match.model.mjs +0 -105
  85. package/esm2022/core/data-list/filter-metadata.model.mjs +0 -2
  86. package/esm2022/core/data-providers/base.data-provider.mjs +0 -16
  87. package/esm2022/core/data-providers/lookup.data-provider.mjs +0 -2
  88. package/esm2022/core/descriptors/action.descriptor.mjs +0 -2
  89. package/esm2022/core/descriptors/column.descriptor.mjs +0 -2
  90. package/esm2022/core/descriptors/editor.descriptor.mjs +0 -2
  91. package/esm2022/core/descriptors/enum.descriptor.mjs +0 -2
  92. package/esm2022/core/descriptors/filter.descriptor.mjs +0 -2
  93. package/esm2022/core/descriptors/lookup.descriptor.mjs +0 -2
  94. package/esm2022/core/descriptors/model.descriptor.mjs +0 -2
  95. package/esm2022/core/descriptors/table.descriptor.mjs +0 -2
  96. package/esm2022/core/descriptors/tableview.descriptor.mjs +0 -2
  97. package/esm2022/core/directives/component.directive.mjs +0 -75
  98. package/esm2022/core/directives/rerender.directive.mjs +0 -25
  99. package/esm2022/core/directives/template.directive.mjs +0 -29
  100. package/esm2022/core/enum/enum-helpers.mjs +0 -90
  101. package/esm2022/core/enum/enum.model.mjs +0 -2
  102. package/esm2022/core/error/error-handler.mjs +0 -20
  103. package/esm2022/core/error/error-helpers.mjs +0 -273
  104. package/esm2022/core/error/error.model.mjs +0 -33
  105. package/esm2022/core/helpers/coercion.mjs +0 -55
  106. package/esm2022/core/helpers/date.mjs +0 -119
  107. package/esm2022/core/helpers/notification.mjs +0 -21
  108. package/esm2022/core/helpers/number.mjs +0 -19
  109. package/esm2022/core/helpers/object.mjs +0 -152
  110. package/esm2022/core/helpers/route.mjs +0 -58
  111. package/esm2022/core/helpers/string.mjs +0 -57
  112. package/esm2022/core/helpers/templates.mjs +0 -4
  113. package/esm2022/core/helpers/type-helpers.mjs +0 -2
  114. package/esm2022/core/i18n/i18n-common.mjs +0 -24
  115. package/esm2022/core/i18n/i18n-error.mjs +0 -29
  116. package/esm2022/core/i18n/i18n-type.mjs +0 -46
  117. package/esm2022/core/index.mjs +0 -107
  118. package/esm2022/core/log/log-publisher-console.service.mjs +0 -40
  119. package/esm2022/core/log/log.model.mjs +0 -10
  120. package/esm2022/core/log/logger.service.mjs +0 -131
  121. package/esm2022/core/mediusinc-mng-commons-core.mjs +0 -5
  122. package/esm2022/core/models/class-attribute.model.mjs +0 -2
  123. package/esm2022/core/models/class-service.model.mjs +0 -2
  124. package/esm2022/core/models/getter.model.mjs +0 -2
  125. package/esm2022/core/models/i18n.model.mjs +0 -2
  126. package/esm2022/core/models/menu.model.mjs +0 -2
  127. package/esm2022/core/models/user.model.mjs +0 -2
  128. package/esm2022/core/models/version.model.mjs +0 -2
  129. package/esm2022/core/pipes/boolean.pipe.mjs +0 -34
  130. package/esm2022/core/pipes/class-map.pipe.mjs +0 -23
  131. package/esm2022/core/pipes/enum.pipe.mjs +0 -38
  132. package/esm2022/core/pipes/enumerate-async.pipe.mjs +0 -36
  133. package/esm2022/core/pipes/enumerate.pipe.mjs +0 -49
  134. package/esm2022/core/pipes/getter.pipe.mjs +0 -21
  135. package/esm2022/core/pipes/i18n-property.pipe.mjs +0 -19
  136. package/esm2022/core/pipes/json-path.pipe.mjs +0 -25
  137. package/esm2022/core/pipes/parametrize.pipe.mjs +0 -86
  138. package/esm2022/core/pipes/template.pipe.mjs +0 -25
  139. package/esm2022/core/provide.mjs +0 -79
  140. package/esm2022/core/reactivity/effect.mjs +0 -22
  141. package/esm2022/core/reflect/type-enum-decorator.mjs +0 -12
  142. package/esm2022/core/reflect/type-enum-metadata.mjs +0 -62
  143. package/esm2022/core/registry/registry.model.mjs +0 -2
  144. package/esm2022/core/registry/type-registry.mjs +0 -106
  145. package/esm2022/core/router/route-builder.mjs +0 -431
  146. package/esm2022/core/router/router.model.mjs +0 -2
  147. package/esm2022/core/router/routes-builder.mjs +0 -52
  148. package/esm2022/core/rxjs/map-data-list-result-operator.mjs +0 -22
  149. package/esm2022/core/security/permission-helpers.mjs +0 -14
  150. package/esm2022/core/security/permission.guard.mjs +0 -15
  151. package/esm2022/core/security/permission.service.mjs +0 -101
  152. package/esm2022/core/security/permissions.model.mjs +0 -93
  153. package/esm2022/core/services/commons-configuration.service.mjs +0 -189
  154. package/esm2022/core/services/commons-init.service.mjs +0 -111
  155. package/esm2022/core/services/commons-router.service.mjs +0 -181
  156. package/esm2022/core/services/commons-storage.service.mjs +0 -31
  157. package/esm2022/core/services/commons.service.mjs +0 -324
  158. package/esm2022/core/services/providers/commons-init.provider.mjs +0 -4
  159. package/esm2022/core/services/tokens/browser-storage.token.mjs +0 -3
  160. package/esm2022/core/services/tokens/commons-init.token.mjs +0 -3
  161. package/esm2022/core/services/tokens/log-publisher.token.mjs +0 -3
  162. package/esm2022/core/services/tokens/module-config.token.mjs +0 -3
  163. package/esm2022/core/styles/style-constants.mjs +0 -11
  164. package/esm2022/core/styles/style.model.mjs +0 -20
  165. package/esm2022/filter/descriptors/filter-generic.descriptor.mjs +0 -31
  166. package/esm2022/filter/descriptors/filter-lookup.descriptor.mjs +0 -168
  167. package/esm2022/filter/descriptors/filter.descriptor.mjs +0 -421
  168. package/esm2022/filter/index.mjs +0 -8
  169. package/esm2022/filter/mediusinc-mng-commons-filter.mjs +0 -5
  170. package/esm2022/filter/models/filter-generic-property.model.mjs +0 -2
  171. package/esm2022/filter/models/filter.model.mjs +0 -20
  172. package/esm2022/form/api/data-providers/lookup-data-provider.factory.mjs +0 -15
  173. package/esm2022/form/api/data-providers/lookup.data-provider.mjs +0 -15
  174. package/esm2022/form/api/descriptors/action-button.descriptor.mjs +0 -56
  175. package/esm2022/form/api/descriptors/button-style.builder.mjs +0 -153
  176. package/esm2022/form/api/index.mjs +0 -10
  177. package/esm2022/form/api/mediusinc-mng-commons-form-api.mjs +0 -5
  178. package/esm2022/form/api/models/button.model.mjs +0 -2
  179. package/esm2022/form/api/models/trim.model.mjs +0 -2
  180. package/esm2022/form/components/autocomplete/autocomplete.component.mjs +0 -436
  181. package/esm2022/form/components/date-range/date-range.component.mjs +0 -147
  182. package/esm2022/form/components/dropdown/dropdown.component.mjs +0 -372
  183. package/esm2022/form/components/number-range/number-range.component.mjs +0 -123
  184. package/esm2022/form/directives/input-trim.directive.mjs +0 -50
  185. package/esm2022/form/index.mjs +0 -8
  186. package/esm2022/form/mediusinc-mng-commons-form.mjs +0 -5
  187. package/esm2022/index.mjs +0 -2
  188. package/esm2022/mediusinc-mng-commons.mjs +0 -5
  189. package/esm2022/model/class/data-providers/base-from-class-data-provider.factory.mjs +0 -5
  190. package/esm2022/model/class/descriptors/model-class.descriptor.mjs +0 -28
  191. package/esm2022/model/class/descriptors/type-class.descriptor.mjs +0 -6
  192. package/esm2022/model/class/helpers/model.mjs +0 -53
  193. package/esm2022/model/class/index.mjs +0 -8
  194. package/esm2022/model/class/mediusinc-mng-commons-model-class.mjs +0 -5
  195. package/esm2022/model/data-providers/base-from-type-data-provider.factory.mjs +0 -13
  196. package/esm2022/model/descriptors/enum.descriptor.mjs +0 -28
  197. package/esm2022/model/descriptors/model.descriptor.mjs +0 -53
  198. package/esm2022/model/descriptors/type.descriptor.mjs +0 -7
  199. package/esm2022/model/helpers/i18n.mjs +0 -47
  200. package/esm2022/model/index.mjs +0 -9
  201. package/esm2022/model/mediusinc-mng-commons-model.mjs +0 -5
  202. package/esm2022/provide.mjs +0 -6
  203. package/esm2022/table/api/class/class-table-attribute-converter.mjs +0 -80
  204. package/esm2022/table/api/class/class-table-attribute.model.mjs +0 -2
  205. package/esm2022/table/api/class/class-table-data-provider.factory.mjs +0 -5
  206. package/esm2022/table/api/class/class-table-descriptor-helpers.mjs +0 -99
  207. package/esm2022/table/api/class/class-table-descriptor.factory.mjs +0 -21
  208. package/esm2022/table/api/class/index.mjs +0 -6
  209. package/esm2022/table/api/class/mediusinc-mng-commons-table-api-class.mjs +0 -5
  210. package/esm2022/table/api/data-providers/table-data-provider.factory.mjs +0 -15
  211. package/esm2022/table/api/data-providers/table.data-provider.mjs +0 -33
  212. package/esm2022/table/api/descriptors/column.descriptor.mjs +0 -475
  213. package/esm2022/table/api/descriptors/sort.descriptor.mjs +0 -67
  214. package/esm2022/table/api/descriptors/table-descriptor.factory.mjs +0 -22
  215. package/esm2022/table/api/descriptors/table.descriptor.mjs +0 -1116
  216. package/esm2022/table/api/helpers/column-converter.mjs +0 -25
  217. package/esm2022/table/api/helpers/table-data-provider-descriptor-convert.mjs +0 -7
  218. package/esm2022/table/api/index.mjs +0 -19
  219. package/esm2022/table/api/mediusinc-mng-commons-table-api.mjs +0 -5
  220. package/esm2022/table/api/models/column-value.model.mjs +0 -2
  221. package/esm2022/table/api/models/column.model.mjs +0 -21
  222. package/esm2022/table/api/models/row-expandable-component.model.mjs +0 -2
  223. package/esm2022/table/api/models/table-columns.model.mjs +0 -2
  224. package/esm2022/table/api/models/table-event.model.mjs +0 -2
  225. package/esm2022/table/api/models/table.model.mjs +0 -21
  226. package/esm2022/table/components/column-filter/column-filter.component.mjs +0 -389
  227. package/esm2022/table/components/column-value/column-value.component.mjs +0 -78
  228. package/esm2022/table/components/filter/filter-active-tag/filter-active-tag.component.mjs +0 -55
  229. package/esm2022/table/components/filter/filter-form/filter-form.component.mjs +0 -226
  230. package/esm2022/table/components/filter/filter-overlay-with-tag/filter-overlay-with-tag.component.mjs +0 -219
  231. package/esm2022/table/components/table/table.component.mjs +0 -319
  232. package/esm2022/table/helpers/filters.mjs +0 -312
  233. package/esm2022/table/helpers/notification.mjs +0 -21
  234. package/esm2022/table/helpers/table-layout-prefs.mjs +0 -10
  235. package/esm2022/table/helpers/table.mjs +0 -24
  236. package/esm2022/table/index.mjs +0 -24
  237. package/esm2022/table/mediusinc-mng-commons-table.mjs +0 -5
  238. package/esm2022/table/models/column-preferences.model.mjs +0 -2
  239. package/esm2022/table/models/filter.model.mjs +0 -2
  240. package/esm2022/table/pipes/filter-value.pipe.mjs +0 -77
  241. package/esm2022/table/pipes/locale-default-row-class.pipe.mjs +0 -27
  242. package/esm2022/table/pipes/table-column-filter-class.pipe.mjs +0 -25
  243. package/esm2022/table/provide.mjs +0 -19
  244. package/esm2022/table/services/table-data.service.mjs +0 -194
  245. package/esm2022/table/services/table-feature-config.token.mjs +0 -3
  246. package/esm2022/table/services/table-metadata.service.mjs +0 -136
  247. package/esm2022/table/services/table-preferences.service.mjs +0 -142
  248. package/esm2022/tableview/action/components/action/action.component.mjs +0 -277
  249. package/esm2022/tableview/action/components/editor/action-editor.component.mjs +0 -86
  250. package/esm2022/tableview/action/components/editor/injector-context/action-editor-injector-context.component.mjs +0 -428
  251. package/esm2022/tableview/action/components/localization/data-language-dropdown.component.mjs +0 -35
  252. package/esm2022/tableview/action/components/route/action-route.component.mjs +0 -146
  253. package/esm2022/tableview/action/components/table/action-table.component.mjs +0 -102
  254. package/esm2022/tableview/action/guards/unsaved-changes.guard.mjs +0 -4
  255. package/esm2022/tableview/action/helpers/action-execution.mjs +0 -25
  256. package/esm2022/tableview/action/helpers/i18n.mjs +0 -102
  257. package/esm2022/tableview/action/helpers/notification.mjs +0 -78
  258. package/esm2022/tableview/action/helpers/styles.mjs +0 -32
  259. package/esm2022/tableview/action/models/action-editor-dialog-data.model.mjs +0 -2
  260. package/esm2022/tableview/action/models/can-component-deactivate.model.mjs +0 -2
  261. package/esm2022/tableview/action/models/execution/action-context.model.mjs +0 -64
  262. package/esm2022/tableview/action/models/execution/action-instance.model.mjs +0 -169
  263. package/esm2022/tableview/action/services/action-error-mapper.service.mjs +0 -20
  264. package/esm2022/tableview/action/services/action-executor.service.mjs +0 -772
  265. package/esm2022/tableview/action/services/component-action-executor.service.mjs +0 -19
  266. package/esm2022/tableview/action/services/data-provider-executor.service.mjs +0 -41
  267. package/esm2022/tableview/action/services/navigation.service.mjs +0 -53
  268. package/esm2022/tableview/action/services/providers/provide-action-executor.mjs +0 -9
  269. package/esm2022/tableview/action/services/providers/provide-view-container.mjs +0 -17
  270. package/esm2022/tableview/action/services/root-action-executor.service.mjs +0 -18
  271. package/esm2022/tableview/action/services/tokens/action-editor.token.mjs +0 -3
  272. package/esm2022/tableview/action/services/view-container.service.mjs +0 -40
  273. package/esm2022/tableview/api/action/descriptors/action-descriptor.factory.mjs +0 -28
  274. package/esm2022/tableview/api/action/descriptors/action-editor-descriptor.factory.mjs +0 -30
  275. package/esm2022/tableview/api/action/descriptors/action-editor.descriptor.mjs +0 -223
  276. package/esm2022/tableview/api/action/descriptors/action-link-descriptor.factory.mjs +0 -32
  277. package/esm2022/tableview/api/action/descriptors/action-link.descriptor.mjs +0 -74
  278. package/esm2022/tableview/api/action/descriptors/action.descriptor.mjs +0 -302
  279. package/esm2022/tableview/api/action/descriptors/editor-action-descriptor.factory.mjs +0 -21
  280. package/esm2022/tableview/api/action/descriptors/editor-action-editor-descriptor.factory.mjs +0 -21
  281. package/esm2022/tableview/api/action/descriptors/table-action-descriptor.factory.mjs +0 -37
  282. package/esm2022/tableview/api/action/descriptors/table-action-editor-descriptor.factory.mjs +0 -40
  283. package/esm2022/tableview/api/action/helpers/data-provider-executors.mjs +0 -100
  284. package/esm2022/tableview/api/action/models/action-component.model.mjs +0 -2
  285. package/esm2022/tableview/api/action/models/action-confirmation.model.mjs +0 -2
  286. package/esm2022/tableview/api/action/models/action-descriptor.types.mjs +0 -2
  287. package/esm2022/tableview/api/action/models/action-editor.model.mjs +0 -2
  288. package/esm2022/tableview/api/action/models/action-error.model.mjs +0 -14
  289. package/esm2022/tableview/api/action/models/action.type.mjs +0 -26
  290. package/esm2022/tableview/api/action/models/execution/action-context-validation.model.mjs +0 -2
  291. package/esm2022/tableview/api/action/models/execution/action-context.model.mjs +0 -2
  292. package/esm2022/tableview/api/action/models/execution/action-execution-error.model.mjs +0 -2
  293. package/esm2022/tableview/api/action/models/execution/action-instance-state.model.mjs +0 -32
  294. package/esm2022/tableview/api/action/models/execution/action-instance.model.mjs +0 -2
  295. package/esm2022/tableview/api/action/models/execution/view-container.model.mjs +0 -2
  296. package/esm2022/tableview/api/action/models/tableview-action-default-categories.model.mjs +0 -11
  297. package/esm2022/tableview/api/action/services/data-provider-executor.service.mjs +0 -28
  298. package/esm2022/tableview/api/action/services/tokens/data-language-dropdown.token.mjs +0 -3
  299. package/esm2022/tableview/api/class/editor/class-editor-attribute-converter.mjs +0 -85
  300. package/esm2022/tableview/api/class/editor/class-editor-attribute.model.mjs +0 -2
  301. package/esm2022/tableview/api/class/editor/class-editor-data-provider.factory.mjs +0 -5
  302. package/esm2022/tableview/api/class/editor/class-editor-descriptor-helpers.mjs +0 -95
  303. package/esm2022/tableview/api/class/editor/class-editor-descriptor.factory.mjs +0 -21
  304. package/esm2022/tableview/api/class/index.mjs +0 -13
  305. package/esm2022/tableview/api/class/mediusinc-mng-commons-tableview-api-class.mjs +0 -5
  306. package/esm2022/tableview/api/class/tableview/class-tableview-attribute-converter.mjs +0 -35
  307. package/esm2022/tableview/api/class/tableview/class-tableview-attribute.model.mjs +0 -2
  308. package/esm2022/tableview/api/class/tableview/class-tableview-data-provider.factory.mjs +0 -5
  309. package/esm2022/tableview/api/class/tableview/class-tableview-descriptor-helpers.mjs +0 -111
  310. package/esm2022/tableview/api/class/tableview/class-tableview-descriptor.factory.mjs +0 -26
  311. package/esm2022/tableview/api/editor/data-providers/editor-data-provider.factory.mjs +0 -15
  312. package/esm2022/tableview/api/editor/data-providers/editor.data-provider.mjs +0 -114
  313. package/esm2022/tableview/api/editor/descriptors/editor-descriptor.factory.mjs +0 -15
  314. package/esm2022/tableview/api/editor/descriptors/editor.descriptor.mjs +0 -437
  315. package/esm2022/tableview/api/editor/descriptors/field-action.descriptor.mjs +0 -51
  316. package/esm2022/tableview/api/editor/descriptors/field-base.descriptor.mjs +0 -314
  317. package/esm2022/tableview/api/editor/descriptors/field-group.descriptor.mjs +0 -103
  318. package/esm2022/tableview/api/editor/descriptors/field-lookup.descriptor.mjs +0 -211
  319. package/esm2022/tableview/api/editor/descriptors/field-many.descriptor.mjs +0 -142
  320. package/esm2022/tableview/api/editor/descriptors/field-validation.descriptor.mjs +0 -25
  321. package/esm2022/tableview/api/editor/descriptors/field.descriptor.mjs +0 -402
  322. package/esm2022/tableview/api/editor/descriptors/wrappers/editor-descriptor-nested-object-wrapper.mjs +0 -51
  323. package/esm2022/tableview/api/editor/models/editor-fields.model.mjs +0 -2
  324. package/esm2022/tableview/api/editor/models/editor.model.mjs +0 -9
  325. package/esm2022/tableview/api/editor/models/field-action-context.model.mjs +0 -2
  326. package/esm2022/tableview/api/editor/models/field-image-preview.model.mjs +0 -2
  327. package/esm2022/tableview/api/editor/models/field-validation.model.mjs +0 -2
  328. package/esm2022/tableview/api/editor/models/field.model.mjs +0 -57
  329. package/esm2022/tableview/api/editor/models/form-editor.event.mjs +0 -28
  330. package/esm2022/tableview/api/editor/models/form-editor.interface.mjs +0 -2
  331. package/esm2022/tableview/api/editor/models/formly-custom-field.model.mjs +0 -70
  332. package/esm2022/tableview/api/editor/models/formly-field.model.mjs +0 -2
  333. package/esm2022/tableview/api/editor/models/formly-options.model.mjs +0 -2
  334. package/esm2022/tableview/api/editor/models/radio.model.mjs +0 -2
  335. package/esm2022/tableview/api/index.mjs +0 -76
  336. package/esm2022/tableview/api/mediusinc-mng-commons-tableview-api.mjs +0 -5
  337. package/esm2022/tableview/api/tableview/data-providers/tableview-data-provider.factory.mjs +0 -18
  338. package/esm2022/tableview/api/tableview/data-providers/tableview.data-provider.mjs +0 -84
  339. package/esm2022/tableview/api/tableview/descriptors/tableview-descriptor.factory.mjs +0 -34
  340. package/esm2022/tableview/api/tableview/descriptors/tableview.descriptor.mjs +0 -377
  341. package/esm2022/tableview/api/tableview/helpers/files-export.mjs +0 -34
  342. package/esm2022/tableview/api/tableview/helpers/tableview-create.mjs +0 -26
  343. package/esm2022/tableview/api/tableview/helpers/tableview-data-provider-descriptor-convert.mjs +0 -7
  344. package/esm2022/tableview/api/tableview/helpers/tableview-default-actions.mjs +0 -324
  345. package/esm2022/tableview/api/tableview/helpers/tableview-input-builder.mjs +0 -319
  346. package/esm2022/tableview/api/tableview/models/tableview-descriptor-fields-manage-helper.type.mjs +0 -2
  347. package/esm2022/tableview/api/tableview/models/tableview-descriptor-helper.type.mjs +0 -2
  348. package/esm2022/tableview/api/tableview/models/tableview-input.model.mjs +0 -2
  349. package/esm2022/tableview/api/tableview/models/tableview-route.model.mjs +0 -2
  350. package/esm2022/tableview/editor/components/editor/auto-save-status/auto-save-status.component.mjs +0 -82
  351. package/esm2022/tableview/editor/components/editor/form-editor.component.mjs +0 -480
  352. package/esm2022/tableview/editor/components/formly/constants.mjs +0 -2
  353. package/esm2022/tableview/editor/components/formly/fields/formly-field-action/formly-field-action.component.mjs +0 -66
  354. package/esm2022/tableview/editor/components/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +0 -47
  355. package/esm2022/tableview/editor/components/formly/fields/formly-field-custom/formly-field-custom.component.mjs +0 -39
  356. package/esm2022/tableview/editor/components/formly/fields/formly-field-datepicker/formly-field-datepicker.component.mjs +0 -165
  357. package/esm2022/tableview/editor/components/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +0 -42
  358. package/esm2022/tableview/editor/components/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +0 -34
  359. package/esm2022/tableview/editor/components/formly/fields/formly-field-input/formly-field-input.component.mjs +0 -211
  360. package/esm2022/tableview/editor/components/formly/fields/formly-field-label/formly-field-label.component.mjs +0 -23
  361. package/esm2022/tableview/editor/components/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +0 -195
  362. package/esm2022/tableview/editor/components/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +0 -239
  363. package/esm2022/tableview/editor/components/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +0 -205
  364. package/esm2022/tableview/editor/components/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +0 -28
  365. package/esm2022/tableview/editor/components/formly/fields/formly-field-type.abstract.component.mjs +0 -46
  366. package/esm2022/tableview/editor/components/formly/pipes/formly-field-label.pipe.mjs +0 -19
  367. package/esm2022/tableview/editor/components/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.mjs +0 -33
  368. package/esm2022/tableview/editor/components/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +0 -59
  369. package/esm2022/tableview/editor/helpers/editor-autosave.mjs +0 -49
  370. package/esm2022/tableview/editor/helpers/editor-field.mjs +0 -39
  371. package/esm2022/tableview/editor/helpers/editor-formly.mjs +0 -388
  372. package/esm2022/tableview/editor/helpers/editor-validators.mjs +0 -25
  373. package/esm2022/tableview/editor/helpers/field-create.mjs +0 -21
  374. package/esm2022/tableview/editor/helpers/formly-config.mjs +0 -260
  375. package/esm2022/tableview/editor/helpers/notification.mjs +0 -11
  376. package/esm2022/tableview/editor/models/editor-auto-save-preview.model.mjs +0 -2
  377. package/esm2022/tableview/editor/models/formly-config.model.mjs +0 -2
  378. package/esm2022/tableview/editor/services/form-editor.service.mjs +0 -96
  379. package/esm2022/tableview/editor/services/formly-config.provider.mjs +0 -31
  380. package/esm2022/tableview/index.mjs +0 -67
  381. package/esm2022/tableview/mediusinc-mng-commons-tableview.mjs +0 -5
  382. package/esm2022/tableview/provide.mjs +0 -105
  383. package/esm2022/tableview/tableview/components/route/tableview-route.component.mjs +0 -15
  384. package/esm2022/tableview/tableview/components/tableview/tableview.component.mjs +0 -59
  385. package/esm2022/tableview/tableview/router/tableview-route-builder.mjs +0 -175
  386. package/esm2022/tableview/tableview/services/tableview-feature-config.token.mjs +0 -3
@@ -1,27 +0,0 @@
1
- import { Injector, Pipe } from '@angular/core';
2
- import { CommonsService } from '@mediusinc/mng-commons/core';
3
- import * as i0 from "@angular/core";
4
- export class LocaleDefaultRowClassPipe {
5
- constructor(injector) {
6
- this.injector = injector;
7
- }
8
- transform(value, descriptor, item) {
9
- if (descriptor?.isLocalized) {
10
- if (item[descriptor.localizationLocaleProperty] === this.injector.get(CommonsService).getDefaultLocale()) {
11
- return value + ' all-translations-default-value';
12
- }
13
- }
14
- return value ?? '';
15
- }
16
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: LocaleDefaultRowClassPipe, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Pipe }); }
17
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.12", ngImport: i0, type: LocaleDefaultRowClassPipe, isStandalone: true, name: "mngLocaleDefaultRowClass" }); }
18
- }
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: LocaleDefaultRowClassPipe, decorators: [{
20
- type: Pipe,
21
- args: [{
22
- standalone: true,
23
- name: 'mngLocaleDefaultRowClass',
24
- pure: true
25
- }]
26
- }], ctorParameters: () => [{ type: i0.Injector }] });
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLWRlZmF1bHQtcm93LWNsYXNzLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90YWJsZS9zcmMvcGlwZXMvbG9jYWxlLWRlZmF1bHQtcm93LWNsYXNzLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBRTVELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQzs7QUFRM0QsTUFBTSxPQUFPLHlCQUF5QjtJQUNsQyxZQUFvQixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO0lBQUcsQ0FBQztJQUUxQyxTQUFTLENBQUMsS0FBVyxFQUFFLFVBQW1DLEVBQUUsSUFBUTtRQUNoRSxJQUFJLFVBQVUsRUFBRSxXQUFXLEVBQUUsQ0FBQztZQUMxQixJQUFLLElBQVksQ0FBQyxVQUFVLENBQUMsMEJBQTJCLENBQUMsS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLENBQUM7Z0JBQ2pILE9BQU8sS0FBSyxHQUFHLGlDQUFpQyxDQUFDO1lBQ3JELENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxLQUFLLElBQUksRUFBRSxDQUFDO0lBQ3ZCLENBQUM7K0dBVlEseUJBQXlCOzZHQUF6Qix5QkFBeUI7OzRGQUF6Qix5QkFBeUI7a0JBTHJDLElBQUk7bUJBQUM7b0JBQ0YsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLElBQUksRUFBRSwwQkFBMEI7b0JBQ2hDLElBQUksRUFBRSxJQUFJO2lCQUNiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RvciwgUGlwZSwgUGlwZVRyYW5zZm9ybX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7Q29tbW9uc1NlcnZpY2V9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5pbXBvcnQge1RhYmxlRGVzY3JpcHRvckluc3R9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvdGFibGUvYXBpJztcblxuQFBpcGUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgbmFtZTogJ21uZ0xvY2FsZURlZmF1bHRSb3dDbGFzcycsXG4gICAgcHVyZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBMb2NhbGVEZWZhdWx0Um93Q2xhc3NQaXBlPFQ+IGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHt9XG5cbiAgICB0cmFuc2Zvcm0odmFsdWU/OiBhbnksIGRlc2NyaXB0b3I/OiBUYWJsZURlc2NyaXB0b3JJbnN0PFQ+LCBpdGVtPzogVCk6IHN0cmluZyB7XG4gICAgICAgIGlmIChkZXNjcmlwdG9yPy5pc0xvY2FsaXplZCkge1xuICAgICAgICAgICAgaWYgKChpdGVtIGFzIGFueSlbZGVzY3JpcHRvci5sb2NhbGl6YXRpb25Mb2NhbGVQcm9wZXJ0eSFdID09PSB0aGlzLmluamVjdG9yLmdldChDb21tb25zU2VydmljZSkuZ2V0RGVmYXVsdExvY2FsZSgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlICsgJyBhbGwtdHJhbnNsYXRpb25zLWRlZmF1bHQtdmFsdWUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZSA/PyAnJztcbiAgICB9XG59XG4iXX0=
@@ -1,25 +0,0 @@
1
- import { Pipe } from '@angular/core';
2
- import { FilterTypeEnum } from '@mediusinc/mng-commons/filter';
3
- import * as i0 from "@angular/core";
4
- export class TableColumnFilterClassPipe {
5
- transform(value, filter, isEnabled) {
6
- const strValue = typeof value === 'string' ? value : '';
7
- if (isEnabled && filter?.filterType !== undefined) {
8
- return `${strValue} mng-column-filter-${FilterTypeEnum[filter.filterType].toLowerCase()}`;
9
- }
10
- else {
11
- return strValue;
12
- }
13
- }
14
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: TableColumnFilterClassPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
15
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.12", ngImport: i0, type: TableColumnFilterClassPipe, isStandalone: true, name: "mngTableColumnFilterClass" }); }
16
- }
17
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: TableColumnFilterClassPipe, decorators: [{
18
- type: Pipe,
19
- args: [{
20
- standalone: true,
21
- pure: true,
22
- name: 'mngTableColumnFilterClass'
23
- }]
24
- }] });
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29sdW1uLWZpbHRlci1jbGFzcy5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGFibGUvc3JjL3BpcGVzL3RhYmxlLWNvbHVtbi1maWx0ZXItY2xhc3MucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsSUFBSSxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUVsRCxPQUFPLEVBQW1CLGNBQWMsRUFBQyxNQUFNLCtCQUErQixDQUFDOztBQU8vRSxNQUFNLE9BQU8sMEJBQTBCO0lBQ25DLFNBQVMsQ0FBQyxLQUFjLEVBQUUsTUFBOEMsRUFBRSxTQUFrQjtRQUN4RixNQUFNLFFBQVEsR0FBRyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3hELElBQUksU0FBUyxJQUFJLE1BQU0sRUFBRSxVQUFVLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDaEQsT0FBTyxHQUFHLFFBQVEsc0JBQXNCLGNBQWMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztRQUM5RixDQUFDO2FBQU0sQ0FBQztZQUNKLE9BQU8sUUFBUSxDQUFDO1FBQ3BCLENBQUM7SUFDTCxDQUFDOytHQVJRLDBCQUEwQjs2R0FBMUIsMEJBQTBCOzs0RkFBMUIsMEJBQTBCO2tCQUx0QyxJQUFJO21CQUFDO29CQUNGLFVBQVUsRUFBRSxJQUFJO29CQUNoQixJQUFJLEVBQUUsSUFBSTtvQkFDVixJQUFJLEVBQUUsMkJBQTJCO2lCQUNwQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UGlwZSwgUGlwZVRyYW5zZm9ybX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7RmlsdGVyRGVzY3JpcHRvciwgRmlsdGVyVHlwZUVudW19IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvZmlsdGVyJztcblxuQFBpcGUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgcHVyZTogdHJ1ZSxcbiAgICBuYW1lOiAnbW5nVGFibGVDb2x1bW5GaWx0ZXJDbGFzcydcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVDb2x1bW5GaWx0ZXJDbGFzc1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICB0cmFuc2Zvcm0odmFsdWU6IHVua25vd24sIGZpbHRlcjogRmlsdGVyRGVzY3JpcHRvcjxhbnksIGFueT4gfCB1bmRlZmluZWQsIGlzRW5hYmxlZDogYm9vbGVhbik6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHN0clZhbHVlID0gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlIDogJyc7XG4gICAgICAgIGlmIChpc0VuYWJsZWQgJiYgZmlsdGVyPy5maWx0ZXJUeXBlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBgJHtzdHJWYWx1ZX0gbW5nLWNvbHVtbi1maWx0ZXItJHtGaWx0ZXJUeXBlRW51bVtmaWx0ZXIuZmlsdGVyVHlwZV0udG9Mb3dlckNhc2UoKX1gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHN0clZhbHVlO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -1,19 +0,0 @@
1
- import { CommonsFeatureTypeEnum } from '@mediusinc/mng-commons/core';
2
- import { COMMONS_TABLE_FEATURE_CONFIG_IT } from './services/table-feature-config.token';
3
- /**
4
- * Prepares providers for usage of the tableview functionalities.
5
- *
6
- * @returns {CommonsFeature} The `CommonsFeature` object with the layout configuration.
7
- */
8
- export function withTable(config) {
9
- return {
10
- type: CommonsFeatureTypeEnum.Table,
11
- providers: [
12
- {
13
- provide: COMMONS_TABLE_FEATURE_CONFIG_IT,
14
- useValue: config
15
- }
16
- ]
17
- };
18
- }
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RhYmxlL3NyYy9wcm92aWRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsc0JBQXNCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUVuRixPQUFPLEVBQUMsK0JBQStCLEVBQXFCLE1BQU0sdUNBQXVDLENBQUM7QUFFMUc7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxTQUFTLENBQUMsTUFBMkI7SUFDakQsT0FBTztRQUNILElBQUksRUFBRSxzQkFBc0IsQ0FBQyxLQUFLO1FBQ2xDLFNBQVMsRUFBRTtZQUNQO2dCQUNJLE9BQU8sRUFBRSwrQkFBK0I7Z0JBQ3hDLFFBQVEsRUFBRSxNQUFNO2FBQ25CO1NBQ0o7S0FDSixDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tbW9uc0ZlYXR1cmUsIENvbW1vbnNGZWF0dXJlVHlwZUVudW19IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5cbmltcG9ydCB7Q09NTU9OU19UQUJMRV9GRUFUVVJFX0NPTkZJR19JVCwgVGFibGVGZWF0dXJlQ29uZmlnfSBmcm9tICcuL3NlcnZpY2VzL3RhYmxlLWZlYXR1cmUtY29uZmlnLnRva2VuJztcblxuLyoqXG4gKiBQcmVwYXJlcyBwcm92aWRlcnMgZm9yIHVzYWdlIG9mIHRoZSB0YWJsZXZpZXcgZnVuY3Rpb25hbGl0aWVzLlxuICpcbiAqIEByZXR1cm5zIHtDb21tb25zRmVhdHVyZX0gVGhlIGBDb21tb25zRmVhdHVyZWAgb2JqZWN0IHdpdGggdGhlIGxheW91dCBjb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gd2l0aFRhYmxlKGNvbmZpZz86IFRhYmxlRmVhdHVyZUNvbmZpZyk6IENvbW1vbnNGZWF0dXJlIHtcbiAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBDb21tb25zRmVhdHVyZVR5cGVFbnVtLlRhYmxlLFxuICAgICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcm92aWRlOiBDT01NT05TX1RBQkxFX0ZFQVRVUkVfQ09ORklHX0lULFxuICAgICAgICAgICAgICAgIHVzZVZhbHVlOiBjb25maWdcbiAgICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgIH07XG59XG4iXX0=
@@ -1,194 +0,0 @@
1
- import { Injectable, Injector, computed, inject, signal } from '@angular/core';
2
- import { CommonsService, toObservable as commonsToObservable, effectWithDeps } from '@mediusinc/mng-commons/core';
3
- import { TableDynamicDescriptorInst, TablePaginationModeEnum } from '@mediusinc/mng-commons/table/api';
4
- import { tableCreateFilterMeta, tableCreateSortMeta } from '../helpers/table';
5
- import { TableMetadataService } from './table-metadata.service';
6
- import * as i0 from "@angular/core";
7
- export class TableDataService {
8
- constructor() {
9
- this.#injector = inject(Injector);
10
- this.#commons = inject(CommonsService);
11
- this.#metadata = inject(TableMetadataService);
12
- // signal sources
13
- this.#dataSources = signal({});
14
- // data sources
15
- this.#manualLoading = computed(() => this.#dataSources()?.manualLoading?.());
16
- // results that are set directly via input and are not result of a asynchronous operation (aka data provider)
17
- this.#synchronousResult = computed(() => {
18
- const dataSources = this.#dataSources();
19
- if (dataSources?.dataProvider?.() !== undefined) {
20
- return undefined;
21
- }
22
- if (dataSources?.dataListResult?.() !== undefined) {
23
- return dataSources?.dataListResult();
24
- }
25
- if (dataSources?.arrayItems?.() !== undefined) {
26
- return { data: dataSources.arrayItems(), totalCount: dataSources.arrayItems()?.length ?? 0 };
27
- }
28
- return undefined;
29
- });
30
- this.#dataProvider = computed(() => this.#dataSources()?.dataProvider?.());
31
- this.#dataProviderService = computed(() => {
32
- const dataProvider = this.#dataProvider();
33
- return dataProvider?.serviceType ? this.#injector.get(dataProvider.serviceType) : null;
34
- });
35
- this.#synchronousResultEffect = effectWithDeps([this.#synchronousResult], ([res]) => {
36
- if (res != null) {
37
- this.#setData(res.data ?? [], res.totalCount);
38
- }
39
- });
40
- this.#synchronousLoadingEffect = effectWithDeps([this.#synchronousResult, this.#manualLoading], ([res, manualLoading]) => {
41
- if (res != null && manualLoading == null) {
42
- this.#loading.set(false);
43
- }
44
- });
45
- this.#manualLoadingEffect = effectWithDeps([this.#manualLoading], ([manualLoading]) => {
46
- if (manualLoading != null) {
47
- this.#loading.set(manualLoading);
48
- }
49
- });
50
- // pagination
51
- this.#params = signal(undefined);
52
- this.params = this.#params.asReadonly();
53
- this.#sortMeta = signal(undefined);
54
- this.sortMeta = this.#sortMeta.asReadonly();
55
- this.#filterMeta = signal({});
56
- this.filterMeta = this.#filterMeta.asReadonly();
57
- this.#isSortAndFilterMetaInitialized = signal(false);
58
- this.#defaultParamsEffect = effectWithDeps([this.#metadata.defaultParams], ([defaultParams]) => {
59
- this.#sortMeta.set(tableCreateSortMeta(defaultParams));
60
- this.#filterMeta.set(tableCreateFilterMeta(defaultParams));
61
- this.#isSortAndFilterMetaInitialized.set(true);
62
- }, { firstOnly: true });
63
- this.#isSearchMetaInitialized = signal(false);
64
- this.#searchMeta = signal(undefined);
65
- this.searchMeta = this.#searchMeta.asReadonly();
66
- this.isAllPaginationMetaInitialized = computed(() => this.#isSortAndFilterMetaInitialized() && this.#isSortAndFilterMetaInitialized());
67
- this.paginationMode = computed(() => {
68
- const descriptor = this.#metadata.descriptor();
69
- if (descriptor.paginationMode != null) {
70
- // descriptor choice is the strongest - if defined, use this value
71
- return descriptor.paginationMode;
72
- }
73
- else if (this.#dataProvider() != null) {
74
- // when data provider is used, use pagination
75
- return TablePaginationModeEnum.Pagination;
76
- }
77
- else {
78
- return TablePaginationModeEnum.None;
79
- }
80
- });
81
- this.offset = computed(() => this.params()?.offset ?? 0);
82
- this.rows = computed(() => {
83
- if (this.params()?.limit) {
84
- return this.params()?.limit;
85
- }
86
- const descriptor = this.#metadata.descriptor();
87
- const rowsPerPageOptions = this.#metadata.rowsPerPageOptions();
88
- if (descriptor.defaultNumRows && rowsPerPageOptions.includes(descriptor.defaultNumRows)) {
89
- return descriptor.defaultNumRows;
90
- }
91
- return rowsPerPageOptions[0];
92
- });
93
- // data
94
- this.#data = signal([]);
95
- this.data = this.#data.asReadonly();
96
- this.#count = signal(0);
97
- this.count = this.#count.asReadonly();
98
- this.#loading = signal(true);
99
- this.loading = this.#loading.asReadonly();
100
- }
101
- #injector;
102
- #commons;
103
- #metadata;
104
- // signal sources
105
- #dataSources;
106
- // data sources
107
- #manualLoading;
108
- // results that are set directly via input and are not result of a asynchronous operation (aka data provider)
109
- #synchronousResult;
110
- #dataProvider;
111
- #dataProviderService;
112
- #synchronousResultEffect;
113
- #synchronousLoadingEffect;
114
- #manualLoadingEffect;
115
- #dataProviderSubscription;
116
- // pagination
117
- #params;
118
- #sortMeta;
119
- #filterMeta;
120
- #isSortAndFilterMetaInitialized;
121
- #defaultParamsEffect;
122
- #isSearchMetaInitialized;
123
- #searchMeta;
124
- // data
125
- #data;
126
- #count;
127
- #loading;
128
- setDataSources(arrayItems, dataListResult, dataProvider, manualLoading) {
129
- this.#dataSources.set({ arrayItems, dataListResult, dataProvider, manualLoading });
130
- }
131
- fetchWithDataProvider(params, onErrorFn) {
132
- const dataProvider = this.#dataProvider();
133
- if (!dataProvider || params.limit === 0) {
134
- return false;
135
- }
136
- this.#dataProviderSubscription?.unsubscribe();
137
- this.#loading.set(true);
138
- this.#dataProviderSubscription = commonsToObservable(dataProvider.getAll(params, this.#dataProviderService(), this.#metadata.descriptor().isLocalized ? (this.#commons.appDataLocale() ?? undefined) : undefined)).subscribe({
139
- next: res => {
140
- const descriptorInput = this.#metadata.descriptorFromSource();
141
- if (descriptorInput instanceof TableDynamicDescriptorInst) {
142
- this.#metadata.setDescriptor(descriptorInput.toTableDescriptorFromData(res));
143
- }
144
- this.#setData(res?.data ?? [], res?.totalCount);
145
- this.#loading.set(false);
146
- },
147
- error: err => {
148
- onErrorFn(err);
149
- this.#setData([]);
150
- this.#loading.set(false);
151
- }
152
- });
153
- return true;
154
- }
155
- setParams(params, fromQueryParams = false) {
156
- if (!fromQueryParams && this.compareWithCurrentParams(params)) {
157
- return;
158
- }
159
- this.#params.set(params);
160
- this.#sortMeta.set(tableCreateSortMeta(params));
161
- this.#filterMeta.set(tableCreateFilterMeta(params));
162
- this.#isSortAndFilterMetaInitialized.set(true);
163
- if (fromQueryParams && !this.#isSearchMetaInitialized() && params?.search) {
164
- this.#searchMeta.set({ value: params.search, caseSensitive: params.filters?.['global']?.caseSensitive ?? false });
165
- }
166
- this.#isSearchMetaInitialized.set(true);
167
- }
168
- /**
169
- * Compare the given params with the stored params in the DataListService.
170
- *
171
- * @param {DataListParams} params - The params to compare with the stored params.
172
- *
173
- * @return {boolean} - True if the given params match the stored params, otherwise false.
174
- */
175
- compareWithCurrentParams(params) {
176
- return (params.offset === this.offset() &&
177
- params.limit === this.rows() &&
178
- JSON.stringify(tableCreateSortMeta(params)) === JSON.stringify(this.#sortMeta()) &&
179
- JSON.stringify(tableCreateFilterMeta(params)) === JSON.stringify(this.#filterMeta()));
180
- }
181
- #setData(data, count) {
182
- this.#data.set([...data]);
183
- this.#count.set(count ?? data.length);
184
- }
185
- ngOnDestroy() {
186
- this.#dataProviderSubscription?.unsubscribe();
187
- }
188
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: TableDataService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
189
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: TableDataService }); }
190
- }
191
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: TableDataService, decorators: [{
192
- type: Injectable
193
- }] });
194
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZGF0YS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGFibGUvc3JjL3NlcnZpY2VzL3RhYmxlLWRhdGEuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFFLFFBQVEsRUFBcUIsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFLaEcsT0FBTyxFQUF3QixjQUFjLEVBQWtDLFlBQVksSUFBSSxtQkFBbUIsRUFBRSxjQUFjLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUN2SyxPQUFPLEVBQXFCLDBCQUEwQixFQUFFLHVCQUF1QixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFFekgsT0FBTyxFQUFDLHFCQUFxQixFQUFFLG1CQUFtQixFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDNUUsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sMEJBQTBCLENBQUM7O0FBVTlELE1BQU0sT0FBTyxnQkFBZ0I7SUFEN0I7UUFFYSxjQUFTLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdCLGFBQVEsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDbEMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBRWxELGlCQUFpQjtRQUNSLGlCQUFZLEdBQUcsTUFBTSxDQUFvQixFQUFFLENBQUMsQ0FBQztRQUV0RCxlQUFlO1FBQ04sbUJBQWMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqRiw2R0FBNkc7UUFDcEcsdUJBQWtCLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUN4QyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDeEMsSUFBSSxXQUFXLEVBQUUsWUFB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LENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMseUJBQXlCLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDbEQsQ0FBQzsrR0F2TFEsZ0JBQWdCO21IQUFoQixnQkFBZ0I7OzRGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGUsIEluamVjdG9yLCBPbkRlc3Ryb3ksIFNpZ25hbCwgY29tcHV0ZWQsIGluamVjdCwgc2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtTb3J0TWV0YX0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge0NvbW1vbnNGaWx0ZXJNZXRhZGF0YSwgQ29tbW9uc1NlcnZpY2UsIERhdGFMaXN0UGFyYW1zLCBEYXRhTGlzdFJlc3VsdCwgdG9PYnNlcnZhYmxlIGFzIGNvbW1vbnNUb09ic2VydmFibGUsIGVmZmVjdFdpdGhEZXBzfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtJVGFibGVEYXRhUHJvdmlkZXIsIFRhYmxlRHluYW1pY0Rlc2NyaXB0b3JJbnN0LCBUYWJsZVBhZ2luYXRpb25Nb2RlRW51bX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy90YWJsZS9hcGknO1xuXG5pbXBvcnQge3RhYmxlQ3JlYXRlRmlsdGVyTWV0YSwgdGFibGVDcmVhdGVTb3J0TWV0YX0gZnJvbSAnLi4vaGVscGVycy90YWJsZSc7XG5pbXBvcnQge1RhYmxlTWV0YWRhdGFTZXJ2aWNlfSBmcm9tICcuL3RhYmxlLW1ldGFkYXRhLnNlcnZpY2UnO1xuXG5pbnRlcmZhY2UgRGF0YVNvdXJjZXM8SXRlbSA9IGFueT4ge1xuICAgIGFycmF5SXRlbXM/OiBTaWduYWw8SXRlbVtdIHwgdW5kZWZpbmVkPjtcbiAgICBkYXRhTGlzdFJlc3VsdD86IFNpZ25hbDxEYXRhTGlzdFJlc3VsdDxJdGVtPiB8IHVuZGVmaW5lZD47XG4gICAgZGF0YVByb3ZpZGVyPzogU2lnbmFsPElUYWJsZURhdGFQcm92aWRlcjxJdGVtPiB8IHVuZGVmaW5lZD47XG4gICAgbWFudWFsTG9hZGluZz86IFNpZ25hbDxib29sZWFuIHwgdW5kZWZpbmVkPjtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRhYmxlRGF0YVNlcnZpY2U8SXRlbT4gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIHJlYWRvbmx5ICNpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gICAgcmVhZG9ubHkgI2NvbW1vbnMgPSBpbmplY3QoQ29tbW9uc1NlcnZpY2UpO1xuICAgIHJlYWRvbmx5ICNtZXRhZGF0YSA9IGluamVjdChUYWJsZU1ldGFkYXRhU2VydmljZSk7XG5cbiAgICAvLyBzaWduYWwgc291cmNlc1xuICAgIHJlYWRvbmx5ICNkYXRhU291cmNlcyA9IHNpZ25hbDxEYXRhU291cmNlczxJdGVtPj4oe30pO1xuXG4gICAgLy8gZGF0YSBzb3VyY2VzXG4gICAgcmVhZG9ubHkgI21hbnVhbExvYWRpbmcgPSBjb21wdXRlZCgoKSA9PiB0aGlzLiNkYXRhU291cmNlcygpPy5tYW51YWxMb2FkaW5nPy4oKSk7XG4gICAgLy8gcmVzdWx0cyB0aGF0IGFyZSBzZXQgZGlyZWN0bHkgdmlhIGlucHV0IGFuZCBhcmUgbm90IHJlc3VsdCBvZiBhIGFzeW5jaHJvbm91cyBvcGVyYXRpb24gKGFrYSBkYXRhIHByb3ZpZGVyKVxuICAgIHJlYWRvbmx5ICNzeW5jaHJvbm91c1Jlc3VsdCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3QgZGF0YVNvdXJjZXMgPSB0aGlzLiNkYXRhU291cmNlcygpO1xuICAgICAgICBpZiAoZGF0YVNvdXJjZXM/LmRhdGFQcm92aWRlcj8uKCkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF0YVNvdXJjZXM/LmRhdGFMaXN0UmVzdWx0Py4oKSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0YVNvdXJjZXM/LmRhdGFMaXN0UmVzdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRhdGFTb3VyY2VzPy5hcnJheUl0ZW1zPy4oKSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gPERhdGFMaXN0UmVzdWx0PntkYXRhOiBkYXRhU291cmNlcy5hcnJheUl0ZW1zKCksIHRvdGFsQ291bnQ6IGRhdGFTb3VyY2VzLmFycmF5SXRlbXMoKT8ubGVuZ3RoID8/IDB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSk7XG4gICAgcmVhZG9ubHkgI2RhdGFQcm92aWRlciA9IGNvbXB1dGVkKCgpID0+IHRoaXMuI2RhdGFTb3VyY2VzKCk/LmRhdGFQcm92aWRlcj8uKCkpO1xuICAgIHJlYWRvbmx5ICNkYXRhUHJvdmlkZXJTZXJ2aWNlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCBkYXRhUHJvdmlkZXIgPSB0aGlzLiNkYXRhUHJvdmlkZXIoKTtcbiAgICAgICAgcmV0dXJuIGRhdGFQcm92aWRlcj8uc2VydmljZVR5cGUgPyB0aGlzLiNpbmplY3Rvci5nZXQ8YW55PihkYXRhUHJvdmlkZXIuc2VydmljZVR5cGUpIDogbnVsbDtcbiAgICB9KTtcbiAgICByZWFkb25seSAjc3luY2hyb25vdXNSZXN1bHRFZmZlY3QgPSBlZmZlY3RXaXRoRGVwcyhbdGhpcy4jc3luY2hyb25vdXNSZXN1bHRdLCAoW3Jlc10pID0+IHtcbiAgICAgICAgaWYgKHJlcyAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLiNzZXREYXRhKHJlcy5kYXRhID8/IFtdLCByZXMudG90YWxDb3VudCk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZWFkb25seSAjc3luY2hyb25vdXNMb2FkaW5nRWZmZWN0ID0gZWZmZWN0V2l0aERlcHMoW3RoaXMuI3N5bmNocm9ub3VzUmVzdWx0LCB0aGlzLiNtYW51YWxMb2FkaW5nXSwgKFtyZXMsIG1hbnVhbExvYWRpbmddKSA9PiB7XG4gICAgICAgIGlmIChyZXMgIT0gbnVsbCAmJiBtYW51YWxMb2FkaW5nID09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuI2xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJlYWRvbmx5ICNtYW51YWxMb2FkaW5nRWZmZWN0ID0gZWZmZWN0V2l0aERlcHMoW3RoaXMuI21hbnVhbExvYWRpbmddLCAoW21hbnVhbExvYWRpbmddKSA9PiB7XG4gICAgICAgIGlmIChtYW51YWxMb2FkaW5nICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuI2xvYWRpbmcuc2V0KG1hbnVhbExvYWRpbmcpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgI2RhdGFQcm92aWRlclN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcblxuICAgIC8vIHBhZ2luYXRpb25cbiAgICByZWFkb25seSAjcGFyYW1zID0gc2lnbmFsPERhdGFMaXN0UGFyYW1zIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICAgIHJlYWRvbmx5IHBhcmFtcyA9IHRoaXMuI3BhcmFtcy5hc1JlYWRvbmx5KCk7XG4gICAgcmVhZG9ubHkgI3NvcnRNZXRhID0gc2lnbmFsPFNvcnRNZXRhW10gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gICAgcmVhZG9ubHkgc29ydE1ldGEgPSB0aGlzLiNzb3J0TWV0YS5hc1JlYWRvbmx5KCk7XG4gICAgcmVhZG9ubHkgI2ZpbHRlck1ldGEgPSBzaWduYWw8UmVjb3JkPHN0cmluZywgQ29tbW9uc0ZpbHRlck1ldGFkYXRhPj4oe30pO1xuICAgIHJlYWRvbmx5IGZpbHRlck1ldGEgPSB0aGlzLiNmaWx0ZXJNZXRhLmFzUmVhZG9ubHkoKTtcbiAgICByZWFkb25seSAjaXNTb3J0QW5kRmlsdGVyTWV0YUluaXRpYWxpemVkID0gc2lnbmFsKGZhbHNlKTtcbiAgICByZWFkb25seSAjZGVmYXVsdFBhcmFtc0VmZmVjdCA9IGVmZmVjdFdpdGhEZXBzKFxuICAgICAgICBbdGhpcy4jbWV0YWRhdGEuZGVmYXVsdFBhcmFtc10sXG4gICAgICAgIChbZGVmYXVsdFBhcmFtc10pID0+IHtcbiAgICAgICAgICAgIHRoaXMuI3NvcnRNZXRhLnNldCh0YWJsZUNyZWF0ZVNvcnRNZXRhKGRlZmF1bHRQYXJhbXMpKTtcbiAgICAgICAgICAgIHRoaXMuI2ZpbHRlck1ldGEuc2V0KHRhYmxlQ3JlYXRlRmlsdGVyTWV0YShkZWZhdWx0UGFyYW1zKSk7XG4gICAgICAgICAgICB0aGlzLiNpc1NvcnRBbmRGaWx0ZXJNZXRhSW5pdGlhbGl6ZWQuc2V0KHRydWUpO1xuICAgICAgICB9LFxuICAgICAgICB7Zmlyc3RPbmx5OiB0cnVlfVxuICAgICk7XG4gICAgcmVhZG9ubHkgI2lzU2VhcmNoTWV0YUluaXRpYWxpemVkID0gc2lnbmFsKGZhbHNlKTtcbiAgICByZWFkb25seSAjc2VhcmNoTWV0YSA9IHNpZ25hbDx7dmFsdWU6IHN0cmluZzsgY2FzZVNlbnNpdGl2ZTogYm9vbGVhbn0gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gICAgcmVhZG9ubHkgc2VhcmNoTWV0YSA9IHRoaXMuI3NlYXJjaE1ldGEuYXNSZWFkb25seSgpO1xuICAgIHJlYWRvbmx5IGlzQWxsUGFnaW5hdGlvbk1ldGFJbml0aWFsaXplZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuI2lzU29ydEFuZEZpbHRlck1ldGFJbml0aWFsaXplZCgpICYmIHRoaXMuI2lzU29ydEFuZEZpbHRlck1ldGFJbml0aWFsaXplZCgpKTtcbiAgICByZWFkb25seSBwYWdpbmF0aW9uTW9kZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRvciA9IHRoaXMuI21ldGFkYXRhLmRlc2NyaXB0b3IoKTtcbiAgICAgICAgaWYgKGRlc2NyaXB0b3IucGFnaW5hdGlvbk1vZGUgIT0gbnVsbCkge1xuICAgICAgICAgICAgLy8gZGVzY3JpcHRvciBjaG9pY2UgaXMgdGhlIHN0cm9uZ2VzdCAtIGlmIGRlZmluZWQsIHVzZSB0aGlzIHZhbHVlXG4gICAgICAgICAgICByZXR1cm4gZGVzY3JpcHRvci5wYWdpbmF0aW9uTW9kZTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLiNkYXRhUHJvdmlkZXIoKSAhPSBudWxsKSB7XG4gICAgICAgICAgICAvLyB3aGVuIGRhdGEgcHJvdmlkZXIgaXMgdXNlZCwgdXNlIHBhZ2luYXRpb25cbiAgICAgICAgICAgIHJldHVybiBUYWJsZVBhZ2luYXRpb25Nb2RlRW51bS5QYWdpbmF0aW9uO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFRhYmxlUGFnaW5hdGlvbk1vZGVFbnVtLk5vbmU7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZWFkb25seSBvZmZzZXQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnBhcmFtcygpPy5vZmZzZXQgPz8gMCk7XG4gICAgcmVhZG9ubHkgcm93cyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMucGFyYW1zKCk/LmxpbWl0KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJhbXMoKT8ubGltaXQ7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gdGhpcy4jbWV0YWRhdGEuZGVzY3JpcHRvcigpO1xuICAgICAgICBjb25zdCByb3dzUGVyUGFnZU9wdGlvbnMgPSB0aGlzLiNtZXRhZGF0YS5yb3dzUGVyUGFnZU9wdGlvbnMoKTtcbiAgICAgICAgaWYgKGRlc2NyaXB0b3IuZGVmYXVsdE51bVJvd3MgJiYgcm93c1BlclBhZ2VPcHRpb25zLmluY2x1ZGVzKGRlc2NyaXB0b3IuZGVmYXVsdE51bVJvd3MpKSB7XG4gICAgICAgICAgICByZXR1cm4gZGVzY3JpcHRvci5kZWZhdWx0TnVtUm93cztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByb3dzUGVyUGFnZU9wdGlvbnNbMF07XG4gICAgfSk7XG5cbiAgICAvLyBkYXRhXG4gICAgcmVhZG9ubHkgI2RhdGEgPSBzaWduYWw8SXRlbVtdPihbXSk7XG4gICAgcmVhZG9ubHkgZGF0YSA9IHRoaXMuI2RhdGEuYXNSZWFkb25seSgpO1xuICAgIHJlYWRvbmx5ICNjb3VudCA9IHNpZ25hbCgwKTtcbiAgICByZWFkb25seSBjb3VudCA9IHRoaXMuI2NvdW50LmFzUmVhZG9ubHkoKTtcbiAgICByZWFkb25seSAjbG9hZGluZyA9IHNpZ25hbCh0cnVlKTtcbiAgICByZWFkb25seSBsb2FkaW5nID0gdGhpcy4jbG9hZGluZy5hc1JlYWRvbmx5KCk7XG5cbiAgICBzZXREYXRhU291cmNlcyhcbiAgICAgICAgYXJyYXlJdGVtczogU2lnbmFsPEl0ZW1bXSB8IHVuZGVmaW5lZD4sXG4gICAgICAgIGRhdGFMaXN0UmVzdWx0OiBTaWduYWw8RGF0YUxpc3RSZXN1bHQ8SXRlbT4gfCB1bmRlZmluZWQ+LFxuICAgICAgICBkYXRhUHJvdmlkZXI6IFNpZ25hbDxJVGFibGVEYXRhUHJvdmlkZXI8SXRlbSwgYW55LCBhbnksIGFueT4gfCB1bmRlZmluZWQ+LFxuICAgICAgICBtYW51YWxMb2FkaW5nOiBTaWduYWw8Ym9vbGVhbiB8IHVuZGVmaW5lZD5cbiAgICApIHtcbiAgICAgICAgdGhpcy4jZGF0YVNvdXJjZXMuc2V0KHthcnJheUl0ZW1zLCBkYXRhTGlzdFJlc3VsdCwgZGF0YVByb3ZpZGVyLCBtYW51YWxMb2FkaW5nfSk7XG4gICAgfVxuXG4gICAgZmV0Y2hXaXRoRGF0YVByb3ZpZGVyKHBhcmFtczogRGF0YUxpc3RQYXJhbXMsIG9uRXJyb3JGbjogKGVycm9yOiBFcnJvcikgPT4gdm9pZCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBkYXRhUHJvdmlkZXIgPSB0aGlzLiNkYXRhUHJvdmlkZXIoKTtcbiAgICAgICAgaWYgKCFkYXRhUHJvdmlkZXIgfHwgcGFyYW1zLmxpbWl0ID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLiNkYXRhUHJvdmlkZXJTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuI2xvYWRpbmcuc2V0KHRydWUpO1xuXG4gICAgICAgIHRoaXMuI2RhdGFQcm92aWRlclN1YnNjcmlwdGlvbiA9IGNvbW1vbnNUb09ic2VydmFibGUoXG4gICAgICAgICAgICBkYXRhUHJvdmlkZXIuZ2V0QWxsKFxuICAgICAgICAgICAgICAgIHBhcmFtcyBhcyBEYXRhTGlzdFBhcmFtczxhbnksIGFueT4sXG4gICAgICAgICAgICAgICAgdGhpcy4jZGF0YVByb3ZpZGVyU2VydmljZSgpLFxuICAgICAgICAgICAgICAgIHRoaXMuI21ldGFkYXRhLmRlc2NyaXB0b3IoKS5pc0xvY2FsaXplZCA/ICh0aGlzLiNjb21tb25zLmFwcERhdGFMb2NhbGUoKSA/PyB1bmRlZmluZWQpIDogdW5kZWZpbmVkXG4gICAgICAgICAgICApXG4gICAgICAgICkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6IHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVzY3JpcHRvcklucHV0ID0gdGhpcy4jbWV0YWRhdGEuZGVzY3JpcHRvckZyb21Tb3VyY2UoKTtcbiAgICAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvcklucHV0IGluc3RhbmNlb2YgVGFibGVEeW5hbWljRGVzY3JpcHRvckluc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4jbWV0YWRhdGEuc2V0RGVzY3JpcHRvcihkZXNjcmlwdG9ySW5wdXQudG9UYWJsZURlc2NyaXB0b3JGcm9tRGF0YShyZXMpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy4jc2V0RGF0YShyZXM/LmRhdGEgPz8gW10sIHJlcz8udG90YWxDb3VudCk7XG4gICAgICAgICAgICAgICAgdGhpcy4jbG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVycm9yOiBlcnIgPT4ge1xuICAgICAgICAgICAgICAgIG9uRXJyb3JGbihlcnIpO1xuICAgICAgICAgICAgICAgIHRoaXMuI3NldERhdGEoW10pO1xuICAgICAgICAgICAgICAgIHRoaXMuI2xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgc2V0UGFyYW1zKHBhcmFtczogRGF0YUxpc3RQYXJhbXMsIGZyb21RdWVyeVBhcmFtcyA9IGZhbHNlKSB7XG4gICAgICAgIGlmICghZnJvbVF1ZXJ5UGFyYW1zICYmIHRoaXMuY29tcGFyZVdpdGhDdXJyZW50UGFyYW1zKHBhcmFtcykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuI3BhcmFtcy5zZXQocGFyYW1zKTtcbiAgICAgICAgdGhpcy4jc29ydE1ldGEuc2V0KHRhYmxlQ3JlYXRlU29ydE1ldGEocGFyYW1zKSk7XG4gICAgICAgIHRoaXMuI2ZpbHRlck1ldGEuc2V0KHRhYmxlQ3JlYXRlRmlsdGVyTWV0YShwYXJhbXMpKTtcbiAgICAgICAgdGhpcy4jaXNTb3J0QW5kRmlsdGVyTWV0YUluaXRpYWxpemVkLnNldCh0cnVlKTtcbiAgICAgICAgaWYgKGZyb21RdWVyeVBhcmFtcyAmJiAhdGhpcy4jaXNTZWFyY2hNZXRhSW5pdGlhbGl6ZWQoKSAmJiBwYXJhbXM/LnNlYXJjaCkge1xuICAgICAgICAgICAgdGhpcy4jc2VhcmNoTWV0YS5zZXQoe3ZhbHVlOiBwYXJhbXMuc2VhcmNoLCBjYXNlU2Vuc2l0aXZlOiBwYXJhbXMuZmlsdGVycz8uWydnbG9iYWwnXT8uY2FzZVNlbnNpdGl2ZSA/PyBmYWxzZX0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuI2lzU2VhcmNoTWV0YUluaXRpYWxpemVkLnNldCh0cnVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21wYXJlIHRoZSBnaXZlbiBwYXJhbXMgd2l0aCB0aGUgc3RvcmVkIHBhcmFtcyBpbiB0aGUgRGF0YUxpc3RTZXJ2aWNlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtEYXRhTGlzdFBhcmFtc30gcGFyYW1zIC0gVGhlIHBhcmFtcyB0byBjb21wYXJlIHdpdGggdGhlIHN0b3JlZCBwYXJhbXMuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtib29sZWFufSAtIFRydWUgaWYgdGhlIGdpdmVuIHBhcmFtcyBtYXRjaCB0aGUgc3RvcmVkIHBhcmFtcywgb3RoZXJ3aXNlIGZhbHNlLlxuICAgICAqL1xuICAgIHByaXZhdGUgY29tcGFyZVdpdGhDdXJyZW50UGFyYW1zKHBhcmFtczogRGF0YUxpc3RQYXJhbXMpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHBhcmFtcy5vZmZzZXQgPT09IHRoaXMub2Zmc2V0KCkgJiZcbiAgICAgICAgICAgIHBhcmFtcy5saW1pdCA9PT0gdGhpcy5yb3dzKCkgJiZcbiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHRhYmxlQ3JlYXRlU29ydE1ldGEocGFyYW1zKSkgPT09IEpTT04uc3RyaW5naWZ5KHRoaXMuI3NvcnRNZXRhKCkpICYmXG4gICAgICAgICAgICBKU09OLnN0cmluZ2lmeSh0YWJsZUNyZWF0ZUZpbHRlck1ldGEocGFyYW1zKSkgPT09IEpTT04uc3RyaW5naWZ5KHRoaXMuI2ZpbHRlck1ldGEoKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAjc2V0RGF0YShkYXRhOiBJdGVtW10sIGNvdW50PzogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuI2RhdGEuc2V0KFsuLi5kYXRhXSk7XG4gICAgICAgIHRoaXMuI2NvdW50LnNldChjb3VudCA/PyBkYXRhLmxlbmd0aCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuI2RhdGFQcm92aWRlclN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB9XG59XG4iXX0=
@@ -1,3 +0,0 @@
1
- import { InjectionToken } from '@angular/core';
2
- export const COMMONS_TABLE_FEATURE_CONFIG_IT = new InjectionToken('COMMONS_TABLE_FEATURE_CONFIG');
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZmVhdHVyZS1jb25maWcudG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90YWJsZS9zcmMvc2VydmljZXMvdGFibGUtZmVhdHVyZS1jb25maWcudG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQVM3QyxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRyxJQUFJLGNBQWMsQ0FBcUIsOEJBQThCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0aW9uVG9rZW59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge0ZpbHRlckRpc3BsYXlUeXBlRW51bX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9maWx0ZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlRmVhdHVyZUNvbmZpZyB7XG4gICAgZmlsdGVyRGlzcGxheVR5cGU/OiBGaWx0ZXJEaXNwbGF5VHlwZUVudW07XG4gICAgc2VhcmNoTGltaXRNYXhXb3Jkcz86IG51bWJlciB8IG51bGw7XG59XG5cbmV4cG9ydCBjb25zdCBDT01NT05TX1RBQkxFX0ZFQVRVUkVfQ09ORklHX0lUID0gbmV3IEluamVjdGlvblRva2VuPFRhYmxlRmVhdHVyZUNvbmZpZz4oJ0NPTU1PTlNfVEFCTEVfRkVBVFVSRV9DT05GSUcnKTtcbiJdfQ==
@@ -1,136 +0,0 @@
1
- import { Injectable, Injector, computed, inject, signal } from '@angular/core';
2
- import { takeUntilDestroyed, toObservable, toSignal } from '@angular/core/rxjs-interop';
3
- import { PrimeNGConfig } from 'primeng/api';
4
- import { combineLatest, of, switchMap } from 'rxjs';
5
- import { COMMONS_MODULE_CONFIG_IT, toObservable as commonsToObservable, effectWithDeps } from '@mediusinc/mng-commons/core';
6
- import { FilterDisplayTypeEnum } from '@mediusinc/mng-commons/filter';
7
- import { TableDynamicDescriptorInst, tableDescriptor } from '@mediusinc/mng-commons/table/api';
8
- import { createFilterDescriptorsFromGeneric, filterApplySerializationConfigToCmp, filterGenerateMatchModeOptions, filterGetDateConfig, filterGetDefaultMatchMode, filterGetNumberConfig } from '../helpers/filters';
9
- import { COMMONS_TABLE_FEATURE_CONFIG_IT } from './table-feature-config.token';
10
- import * as i0 from "@angular/core";
11
- export class TableMetadataService {
12
- static { this.cmpTypeName = 'TableComponent'; }
13
- #injector;
14
- #translationObserver;
15
- // signal sources
16
- #signalSources;
17
- #descriptor;
18
- #updateDescriptorFromSourceEffect;
19
- #genericFilters;
20
- // search
21
- #searchFieldsFromSignalSource;
22
- #searchFields;
23
- #searchFieldsEffect;
24
- constructor() {
25
- this.#injector = inject(Injector);
26
- this.primeConfig = inject(PrimeNGConfig);
27
- this.moduleConfig = inject(COMMONS_MODULE_CONFIG_IT, { optional: true });
28
- this.tableModuleConfig = inject(COMMONS_TABLE_FEATURE_CONFIG_IT, { optional: true });
29
- this.serializationCfg = {};
30
- this.#translationObserver = toSignal(this.primeConfig.translationObserver);
31
- this.defaultFilterDisplayType = this.tableModuleConfig?.filterDisplayType ?? FilterDisplayTypeEnum.Column;
32
- // signal sources
33
- this.#signalSources = signal({});
34
- // descriptors
35
- this.descriptorFromSource = computed(() => this.#signalSources().descriptor?.());
36
- this.#descriptor = signal(tableDescriptor());
37
- this.descriptor = this.#descriptor.asReadonly();
38
- this.#updateDescriptorFromSourceEffect = effectWithDeps([this.descriptorFromSource], ([d]) => {
39
- if (d != null) {
40
- this.#descriptor.set(d);
41
- }
42
- });
43
- // pagination
44
- this.rowsPerPageOptions = computed(() => {
45
- const descriptor = this.descriptor();
46
- if (Array.isArray(descriptor.rowsPerPageOptions) && descriptor.rowsPerPageOptions.length > 0) {
47
- return descriptor.rowsPerPageOptions;
48
- }
49
- else {
50
- return [25, 50, 100];
51
- }
52
- });
53
- // filters
54
- this.filterDescriptors = computed(() => this.descriptor().filters);
55
- this.filters = computed(() => {
56
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
57
- const observer = this.#translationObserver(); // need this one to track language changes
58
- return this.filterDescriptors().map(d => this.mapDescriptorToMetadata(d));
59
- });
60
- this.genericFilterDescriptor = computed(() => this.descriptor().genericFilter);
61
- this.#genericFilters = signal([]);
62
- this.genericFilters = this.#genericFilters.asReadonly();
63
- // search
64
- this.#searchFieldsFromSignalSource = computed(() => this.#signalSources().searchFields?.());
65
- this.#searchFields = signal([]);
66
- this.searchFields = this.#searchFields.asReadonly();
67
- this.#searchFieldsEffect = effectWithDeps([this.descriptor, this.#searchFieldsFromSignalSource], ([descriptor, searchFieldsFromSignalSource]) => {
68
- this.#searchFields.set(searchFieldsFromSignalSource ?? (descriptor.search && descriptor.searchFields ? descriptor.searchFields : this.descriptor().columns.map(c => c.property)));
69
- });
70
- // params
71
- this.defaultParams = computed(() => {
72
- const params = {
73
- offset: 0,
74
- limit: this.rowsPerPageOptions()[0],
75
- sort: this.descriptor()
76
- .sorts.filter(s => s.defaultIsEnabled)
77
- .sort((s1, s2) => (s1.defaultOrder ?? 1000) - (s2.defaultOrder ?? 1000))
78
- .map(s => ({
79
- property: s.property,
80
- ascending: s.defaultIsAscending
81
- })),
82
- filters: {}
83
- };
84
- this.filters()
85
- .filter(f => f.descriptor.hasDefaultValue)
86
- .forEach(f => {
87
- params.filters[f.descriptor.property] = {
88
- value: f.descriptor.defaultValue,
89
- matchMode: f.defaultMatchMode
90
- };
91
- });
92
- return params;
93
- });
94
- filterApplySerializationConfigToCmp(this.moduleConfig, this.serializationCfg);
95
- combineLatest([toObservable(this.genericFilterDescriptor), toObservable(this.#translationObserver)])
96
- .pipe(switchMap(([genericFilterDescriptor]) => {
97
- if (genericFilterDescriptor) {
98
- const dataProvider = this.genericFilterDescriptor()?.propertyLookup;
99
- const genericFilterService = dataProvider?.serviceType ? this.#injector.get(dataProvider.serviceType) : null;
100
- // fetch filterable properties
101
- return commonsToObservable(genericFilterDescriptor.propertyLookup.lookup({}, genericFilterService));
102
- }
103
- return of([]);
104
- }), takeUntilDestroyed())
105
- .subscribe({
106
- next: genericFilters => {
107
- // set descriptors from generic filter data
108
- this.#genericFilters.set(createFilterDescriptorsFromGeneric(genericFilters, this.genericFilterDescriptor()?.valueLookup).map(d => this.mapDescriptorToMetadata(d)));
109
- }
110
- });
111
- }
112
- setSignalSources(descriptor, searchFields) {
113
- this.#signalSources.set({ descriptor, searchFields });
114
- }
115
- setDescriptor(descriptor) {
116
- if (this.descriptorFromSource() instanceof TableDynamicDescriptorInst) {
117
- this.#descriptor.set(descriptor);
118
- }
119
- }
120
- mapDescriptorToMetadata(descriptor) {
121
- const matchModes = filterGenerateMatchModeOptions(this.primeConfig, descriptor, this.serializationCfg);
122
- return {
123
- descriptor: descriptor,
124
- matchModes: matchModes,
125
- defaultMatchMode: filterGetDefaultMatchMode(descriptor, matchModes),
126
- dateConfig: filterGetDateConfig(descriptor, this.serializationCfg),
127
- numberConfig: filterGetNumberConfig(descriptor)
128
- };
129
- }
130
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: TableMetadataService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
131
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: TableMetadataService }); }
132
- }
133
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: TableMetadataService, decorators: [{
134
- type: Injectable
135
- }], ctorParameters: () => [] });
136
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtbWV0YWRhdGEuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RhYmxlL3NyYy9zZXJ2aWNlcy90YWJsZS1tZXRhZGF0YS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUUsUUFBUSxFQUFVLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3JGLE9BQU8sRUFBQyxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFFdEYsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUMxQyxPQUFPLEVBQUMsYUFBYSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFbEQsT0FBTyxFQUFDLHdCQUF3QixFQUE4QyxZQUFZLElBQUksbUJBQW1CLEVBQUUsY0FBYyxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDdEssT0FBTyxFQUFtQixxQkFBcUIsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQ3RGLE9BQU8sRUFBc0IsMEJBQTBCLEVBQUUsZUFBZSxFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFFbEgsT0FBTyxFQUNILGtDQUFrQyxFQUNsQyxtQ0FBbUMsRUFDbkMsOEJBQThCLEVBQzlCLG1CQUFtQixFQUNuQix5QkFBeUIsRUFDekIscUJBQXFCLEVBQ3hCLE1BQU0sb0JBQW9CLENBQUM7QUFFNUIsT0FBTyxFQUFDLCtCQUErQixFQUFDLE1BQU0sOEJBQThCLENBQUM7O0FBUTdFLE1BQU0sT0FBTyxvQkFBb0I7YUFDYixnQkFBVyxHQUFHLGdCQUFnQixBQUFuQixDQUFvQjtJQUV0QyxTQUFTLENBQW9CO0lBTTdCLG9CQUFvQixDQUFrRDtJQUcvRSxpQkFBaUI7SUFDUixjQUFjLENBQTZCO0lBSTNDLFdBQVcsQ0FBeUY7SUFFN0csaUNBQWlDLENBSTlCO0lBb0JNLGVBQWUsQ0FBZ0M7SUFHeEQsU0FBUztJQUNBLDZCQUE2QixDQUEwRDtJQUN2RixhQUFhLENBQXdCO0lBRTlDLG1CQUFtQixDQUloQjtJQTZCSDtRQWhGUyxjQUFTLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdCLGdCQUFXLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3BDLGlCQUFZLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixFQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7UUFDbEUsc0JBQWlCLEdBQUcsTUFBTSxDQUFDLCtCQUErQixFQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7UUFFOUUscUJBQWdCLEdBQStCLEVBQUUsQ0FBQztRQUNsRCx5QkFBb0IsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3RFLDZCQUF3QixHQUEwQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsaUJBQWlCLElBQUkscUJBQXFCLENBQUMsTUFBTSxDQUFDO1FBRXJJLGlCQUFpQjtRQUNSLG1CQUFjLEdBQUcsTUFBTSxDQUFnQixFQUFFLENBQUMsQ0FBQztRQUVwRCxjQUFjO1FBQ0wseUJBQW9CLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDNUUsZ0JBQVcsR0FBRyxNQUFNLENBQXFDLGVBQWUsRUFBMEIsQ0FBQyxDQUFDO1FBQ3BHLGVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3BELHNDQUFpQyxHQUFHLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3BGLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNaLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVCLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILGFBQWE7UUFDYix1QkFBa0IsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQy9CLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNyQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLElBQUksVUFBVSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDM0YsT0FBTyxVQUFVLENBQUMsa0JBQWtCLENBQUM7WUFDekMsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3pCLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILFVBQVU7UUFDRCxzQkFBaUIsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlELFlBQU8sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzdCLDZEQUE2RDtZQUM3RCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLDBDQUEwQztZQUN4RixPQUFPLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlFLENBQUMsQ0FBQyxDQUFDO1FBQ00sNEJBQXVCLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMxRSxvQkFBZSxHQUFHLE1BQU0sQ0FBbUIsRUFBRSxDQUFDLENBQUM7UUFDL0MsbUJBQWMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRTVELFNBQVM7UUFDQSxrQ0FBNkIsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN2RixrQkFBYSxHQUFHLE1BQU0sQ0FBVyxFQUFFLENBQUMsQ0FBQztRQUNyQyxpQkFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDeEQsd0JBQW1CLEdBQUcsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsNkJBQTZCLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLDRCQUE0QixDQUFDLEVBQUUsRUFBRTtZQUN2SSxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FDbEIsNEJBQTRCLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxJQUFJLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQzVKLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQztRQUVILFNBQVM7UUFDQSxrQkFBYSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDbkMsTUFBTSxNQUFNLEdBQW1CO2dCQUMzQixNQUFNLEVBQUUsQ0FBQztnQkFDVCxLQUFLLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNuQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRTtxQkFDbEIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQztxQkFDckMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsQ0FBQztxQkFDdkUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDUCxRQUFRLEVBQUUsQ0FBQyxDQUFDLFFBQVE7b0JBQ3BCLFNBQVMsRUFBRSxDQUFDLENBQUMsa0JBQWtCO2lCQUNsQyxDQUFDLENBQUM7Z0JBQ1AsT0FBTyxFQUFFLEVBQUU7YUFDZCxDQUFDO1lBRUYsSUFBSSxDQUFDLE9BQU8sRUFBRTtpQkFDVCxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQztpQkFDekMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNULE1BQU0sQ0FBQyxPQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRztvQkFDckMsS0FBSyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsWUFBWTtvQkFDaEMsU0FBUyxFQUFFLENBQUMsQ0FBQyxnQkFBZ0I7aUJBQ2hDLENBQUM7WUFDTixDQUFDLENBQUMsQ0FBQztZQUVQLE9BQU8sTUFBTSxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxDQUFDO1FBR0MsbUNBQW1DLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUU5RSxhQUFhLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7YUFDL0YsSUFBSSxDQUNELFNBQVMsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUMsRUFBRSxFQUFFO1lBQ3BDLElBQUksdUJBQXVCLEVBQUUsQ0FBQztnQkFDMUIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixFQUFFLEVBQUUsY0FBYyxDQUFDO2dCQUNwRSxNQUFNLG9CQUFvQixHQUFHLFlBQVksRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFNLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUVsSCw4QkFBOEI7Z0JBQzlCLE9BQU8sbUJBQW1CLENBQUMsdUJBQXVCLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsb0JBQW9CLENBQUMsQ0FBQyxDQUFDO1lBQ3hHLENBQUM7WUFDRCxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNsQixDQUFDLENBQUMsRUFDRixrQkFBa0IsRUFBRSxDQUN2QjthQUNBLFNBQVMsQ0FBQztZQUNQLElBQUksRUFBRSxjQUFjLENBQUMsRUFBRTtnQkFDbkIsMkNBQTJDO2dCQUMzQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FDcEIsa0NBQWtDLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUM1SSxDQUFDO1lBQ04sQ0FBQztTQUNKLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxVQUFpRCxFQUFFLFlBQTBDO1FBQ2pILElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUMsVUFBVSxFQUFFLFlBQVksRUFBQyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVNLGFBQWEsQ0FBQyxVQUE4QztRQUMvRCxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxZQUFZLDBCQUEwQixFQUFFLENBQUM7WUFDcEUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckMsQ0FBQztJQUNMLENBQUM7SUFFTyx1QkFBdUIsQ0FBQyxVQUFzQztRQUNsRSxNQUFNLFVBQVUsR0FBRyw4QkFBOEIsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN2RyxPQUFPO1lBQ0gsVUFBVSxFQUFFLFVBQVU7WUFDdEIsVUFBVSxFQUFFLFVBQVU7WUFDdEIsZ0JBQWdCLEVBQUUseUJBQXlCLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQztZQUNuRSxVQUFVLEVBQUUsbUJBQW1CLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztZQUNsRSxZQUFZLEVBQUUscUJBQXFCLENBQUMsVUFBVSxDQUFDO1NBQ2xELENBQUM7SUFDTixDQUFDOytHQWpJUSxvQkFBb0I7bUhBQXBCLG9CQUFvQjs7NEZBQXBCLG9CQUFvQjtrQkFEaEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZSwgSW5qZWN0b3IsIFNpZ25hbCwgY29tcHV0ZWQsIGluamVjdCwgc2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dGFrZVVudGlsRGVzdHJveWVkLCB0b09ic2VydmFibGUsIHRvU2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbmltcG9ydCB7UHJpbWVOR0NvbmZpZ30gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHtjb21iaW5lTGF0ZXN0LCBvZiwgc3dpdGNoTWFwfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtDT01NT05TX01PRFVMRV9DT05GSUdfSVQsIENvbW1vbnNTZXJpYWxpemF0aW9uQ29uZmlnLCBEYXRhTGlzdFBhcmFtcywgdG9PYnNlcnZhYmxlIGFzIGNvbW1vbnNUb09ic2VydmFibGUsIGVmZmVjdFdpdGhEZXBzfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtGaWx0ZXJEZXNjcmlwdG9yLCBGaWx0ZXJEaXNwbGF5VHlwZUVudW19IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvZmlsdGVyJztcbmltcG9ydCB7VGFibGVEZXNjcmlwdG9ySW5zdCwgVGFibGVEeW5hbWljRGVzY3JpcHRvckluc3QsIHRhYmxlRGVzY3JpcHRvcn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy90YWJsZS9hcGknO1xuXG5pbXBvcnQge1xuICAgIGNyZWF0ZUZpbHRlckRlc2NyaXB0b3JzRnJvbUdlbmVyaWMsXG4gICAgZmlsdGVyQXBwbHlTZXJpYWxpemF0aW9uQ29uZmlnVG9DbXAsXG4gICAgZmlsdGVyR2VuZXJhdGVNYXRjaE1vZGVPcHRpb25zLFxuICAgIGZpbHRlckdldERhdGVDb25maWcsXG4gICAgZmlsdGVyR2V0RGVmYXVsdE1hdGNoTW9kZSxcbiAgICBmaWx0ZXJHZXROdW1iZXJDb25maWdcbn0gZnJvbSAnLi4vaGVscGVycy9maWx0ZXJzJztcbmltcG9ydCB7RmlsdGVyTWV0YWRhdGF9IGZyb20gJy4uL21vZGVscy9maWx0ZXIubW9kZWwnO1xuaW1wb3J0IHtDT01NT05TX1RBQkxFX0ZFQVRVUkVfQ09ORklHX0lUfSBmcm9tICcuL3RhYmxlLWZlYXR1cmUtY29uZmlnLnRva2VuJztcblxuaW50ZXJmYWNlIFNpZ25hbFNvdXJjZXM8SXRlbSA9IGFueT4ge1xuICAgIGRlc2NyaXB0b3I/OiBTaWduYWw8VGFibGVEZXNjcmlwdG9ySW5zdDxJdGVtLCBhbnksIGFueT4+O1xuICAgIHNlYXJjaEZpZWxkcz86IFNpZ25hbDxzdHJpbmdbXSB8IHVuZGVmaW5lZD47XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUYWJsZU1ldGFkYXRhU2VydmljZSB7XG4gICAgc3RhdGljIHJlYWRvbmx5IGNtcFR5cGVOYW1lID0gJ1RhYmxlQ29tcG9uZW50JztcblxuICAgIHJlYWRvbmx5ICNpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gICAgcmVhZG9ubHkgcHJpbWVDb25maWcgPSBpbmplY3QoUHJpbWVOR0NvbmZpZyk7XG4gICAgcmVhZG9ubHkgbW9kdWxlQ29uZmlnID0gaW5qZWN0KENPTU1PTlNfTU9EVUxFX0NPTkZJR19JVCwge29wdGlvbmFsOiB0cnVlfSk7XG4gICAgcmVhZG9ubHkgdGFibGVNb2R1bGVDb25maWcgPSBpbmplY3QoQ09NTU9OU19UQUJMRV9GRUFUVVJFX0NPTkZJR19JVCwge29wdGlvbmFsOiB0cnVlfSk7XG5cbiAgICByZWFkb25seSBzZXJpYWxpemF0aW9uQ2ZnOiBDb21tb25zU2VyaWFsaXphdGlvbkNvbmZpZyA9IHt9O1xuICAgIHJlYWRvbmx5ICN0cmFuc2xhdGlvbk9ic2VydmVyID0gdG9TaWduYWwodGhpcy5wcmltZUNvbmZpZy50cmFuc2xhdGlvbk9ic2VydmVyKTtcbiAgICByZWFkb25seSBkZWZhdWx0RmlsdGVyRGlzcGxheVR5cGU6IEZpbHRlckRpc3BsYXlUeXBlRW51bSA9IHRoaXMudGFibGVNb2R1bGVDb25maWc/LmZpbHRlckRpc3BsYXlUeXBlID8/IEZpbHRlckRpc3BsYXlUeXBlRW51bS5Db2x1bW47XG5cbiAgICAvLyBzaWduYWwgc291cmNlc1xuICAgIHJlYWRvbmx5ICNzaWduYWxTb3VyY2VzID0gc2lnbmFsPFNpZ25hbFNvdXJjZXM+KHt9KTtcblxuICAgIC8vIGRlc2NyaXB0b3JzXG4gICAgcmVhZG9ubHkgZGVzY3JpcHRvckZyb21Tb3VyY2UgPSBjb21wdXRlZCgoKSA9PiB0aGlzLiNzaWduYWxTb3VyY2VzKCkuZGVzY3JpcHRvcj8uKCkpO1xuICAgIHJlYWRvbmx5ICNkZXNjcmlwdG9yID0gc2lnbmFsPFRhYmxlRGVzY3JpcHRvckluc3Q8YW55LCBhbnksIGFueT4+KHRhYmxlRGVzY3JpcHRvcjxzdHJpbmcsIHN0cmluZywgc3RyaW5nPigpKTtcbiAgICByZWFkb25seSBkZXNjcmlwdG9yID0gdGhpcy4jZGVzY3JpcHRvci5hc1JlYWRvbmx5KCk7XG4gICAgI3VwZGF0ZURlc2NyaXB0b3JGcm9tU291cmNlRWZmZWN0ID0gZWZmZWN0V2l0aERlcHMoW3RoaXMuZGVzY3JpcHRvckZyb21Tb3VyY2VdLCAoW2RdKSA9PiB7XG4gICAgICAgIGlmIChkICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuI2Rlc2NyaXB0b3Iuc2V0KGQpO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBwYWdpbmF0aW9uXG4gICAgcm93c1BlclBhZ2VPcHRpb25zID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gdGhpcy5kZXNjcmlwdG9yKCk7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRlc2NyaXB0b3Iucm93c1BlclBhZ2VPcHRpb25zKSAmJiBkZXNjcmlwdG9yLnJvd3NQZXJQYWdlT3B0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gZGVzY3JpcHRvci5yb3dzUGVyUGFnZU9wdGlvbnM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gWzI1LCA1MCwgMTAwXTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gZmlsdGVyc1xuICAgIHJlYWRvbmx5IGZpbHRlckRlc2NyaXB0b3JzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5kZXNjcmlwdG9yKCkuZmlsdGVycyk7XG4gICAgcmVhZG9ubHkgZmlsdGVycyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgICBjb25zdCBvYnNlcnZlciA9IHRoaXMuI3RyYW5zbGF0aW9uT2JzZXJ2ZXIoKTsgLy8gbmVlZCB0aGlzIG9uZSB0byB0cmFjayBsYW5ndWFnZSBjaGFuZ2VzXG4gICAgICAgIHJldHVybiB0aGlzLmZpbHRlckRlc2NyaXB0b3JzKCkubWFwKGQgPT4gdGhpcy5tYXBEZXNjcmlwdG9yVG9NZXRhZGF0YShkKSk7XG4gICAgfSk7XG4gICAgcmVhZG9ubHkgZ2VuZXJpY0ZpbHRlckRlc2NyaXB0b3IgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmRlc2NyaXB0b3IoKS5nZW5lcmljRmlsdGVyKTtcbiAgICByZWFkb25seSAjZ2VuZXJpY0ZpbHRlcnMgPSBzaWduYWw8RmlsdGVyTWV0YWRhdGFbXT4oW10pO1xuICAgIHJlYWRvbmx5IGdlbmVyaWNGaWx0ZXJzID0gdGhpcy4jZ2VuZXJpY0ZpbHRlcnMuYXNSZWFkb25seSgpO1xuXG4gICAgLy8gc2VhcmNoXG4gICAgcmVhZG9ubHkgI3NlYXJjaEZpZWxkc0Zyb21TaWduYWxTb3VyY2UgPSBjb21wdXRlZCgoKSA9PiB0aGlzLiNzaWduYWxTb3VyY2VzKCkuc2VhcmNoRmllbGRzPy4oKSk7XG4gICAgcmVhZG9ubHkgI3NlYXJjaEZpZWxkcyA9IHNpZ25hbDxzdHJpbmdbXT4oW10pO1xuICAgIHJlYWRvbmx5IHNlYXJjaEZpZWxkcyA9IHRoaXMuI3NlYXJjaEZpZWxkcy5hc1JlYWRvbmx5KCk7XG4gICAgI3NlYXJjaEZpZWxkc0VmZmVjdCA9IGVmZmVjdFdpdGhEZXBzKFt0aGlzLmRlc2NyaXB0b3IsIHRoaXMuI3NlYXJjaEZpZWxkc0Zyb21TaWduYWxTb3VyY2VdLCAoW2Rlc2NyaXB0b3IsIHNlYXJjaEZpZWxkc0Zyb21TaWduYWxTb3VyY2VdKSA9PiB7XG4gICAgICAgIHRoaXMuI3NlYXJjaEZpZWxkcy5zZXQoXG4gICAgICAgICAgICBzZWFyY2hGaWVsZHNGcm9tU2lnbmFsU291cmNlID8/IChkZXNjcmlwdG9yLnNlYXJjaCAmJiBkZXNjcmlwdG9yLnNlYXJjaEZpZWxkcyA/IGRlc2NyaXB0b3Iuc2VhcmNoRmllbGRzIDogdGhpcy5kZXNjcmlwdG9yKCkuY29sdW1ucy5tYXAoYyA9PiBjLnByb3BlcnR5KSlcbiAgICAgICAgKTtcbiAgICB9KTtcblxuICAgIC8vIHBhcmFtc1xuICAgIHJlYWRvbmx5IGRlZmF1bHRQYXJhbXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhcmFtczogRGF0YUxpc3RQYXJhbXMgPSB7XG4gICAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgICBsaW1pdDogdGhpcy5yb3dzUGVyUGFnZU9wdGlvbnMoKVswXSxcbiAgICAgICAgICAgIHNvcnQ6IHRoaXMuZGVzY3JpcHRvcigpXG4gICAgICAgICAgICAgICAgLnNvcnRzLmZpbHRlcihzID0+IHMuZGVmYXVsdElzRW5hYmxlZClcbiAgICAgICAgICAgICAgICAuc29ydCgoczEsIHMyKSA9PiAoczEuZGVmYXVsdE9yZGVyID8/IDEwMDApIC0gKHMyLmRlZmF1bHRPcmRlciA/PyAxMDAwKSlcbiAgICAgICAgICAgICAgICAubWFwKHMgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6IHMucHJvcGVydHksXG4gICAgICAgICAgICAgICAgICAgIGFzY2VuZGluZzogcy5kZWZhdWx0SXNBc2NlbmRpbmdcbiAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICBmaWx0ZXJzOiB7fVxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuZmlsdGVycygpXG4gICAgICAgICAgICAuZmlsdGVyKGYgPT4gZi5kZXNjcmlwdG9yLmhhc0RlZmF1bHRWYWx1ZSlcbiAgICAgICAgICAgIC5mb3JFYWNoKGYgPT4ge1xuICAgICAgICAgICAgICAgIHBhcmFtcy5maWx0ZXJzIVtmLmRlc2NyaXB0b3IucHJvcGVydHldID0ge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZi5kZXNjcmlwdG9yLmRlZmF1bHRWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2hNb2RlOiBmLmRlZmF1bHRNYXRjaE1vZGVcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHBhcmFtcztcbiAgICB9KTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBmaWx0ZXJBcHBseVNlcmlhbGl6YXRpb25Db25maWdUb0NtcCh0aGlzLm1vZHVsZUNvbmZpZywgdGhpcy5zZXJpYWxpemF0aW9uQ2ZnKTtcblxuICAgICAgICBjb21iaW5lTGF0ZXN0KFt0b09ic2VydmFibGUodGhpcy5nZW5lcmljRmlsdGVyRGVzY3JpcHRvciksIHRvT2JzZXJ2YWJsZSh0aGlzLiN0cmFuc2xhdGlvbk9ic2VydmVyKV0pXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKFtnZW5lcmljRmlsdGVyRGVzY3JpcHRvcl0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGdlbmVyaWNGaWx0ZXJEZXNjcmlwdG9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRhUHJvdmlkZXIgPSB0aGlzLmdlbmVyaWNGaWx0ZXJEZXNjcmlwdG9yKCk/LnByb3BlcnR5TG9va3VwO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2VuZXJpY0ZpbHRlclNlcnZpY2UgPSBkYXRhUHJvdmlkZXI/LnNlcnZpY2VUeXBlID8gdGhpcy4jaW5qZWN0b3IuZ2V0PGFueT4oZGF0YVByb3ZpZGVyLnNlcnZpY2VUeXBlKSA6IG51bGw7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZldGNoIGZpbHRlcmFibGUgcHJvcGVydGllc1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbW1vbnNUb09ic2VydmFibGUoZ2VuZXJpY0ZpbHRlckRlc2NyaXB0b3IucHJvcGVydHlMb29rdXAubG9va3VwKHt9LCBnZW5lcmljRmlsdGVyU2VydmljZSkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihbXSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgIG5leHQ6IGdlbmVyaWNGaWx0ZXJzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gc2V0IGRlc2NyaXB0b3JzIGZyb20gZ2VuZXJpYyBmaWx0ZXIgZGF0YVxuICAgICAgICAgICAgICAgICAgICB0aGlzLiNnZW5lcmljRmlsdGVycy5zZXQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVGaWx0ZXJEZXNjcmlwdG9yc0Zyb21HZW5lcmljKGdlbmVyaWNGaWx0ZXJzLCB0aGlzLmdlbmVyaWNGaWx0ZXJEZXNjcmlwdG9yKCk/LnZhbHVlTG9va3VwKS5tYXAoZCA9PiB0aGlzLm1hcERlc2NyaXB0b3JUb01ldGFkYXRhKGQpKVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRTaWduYWxTb3VyY2VzKGRlc2NyaXB0b3I6IFNpZ25hbDxUYWJsZURlc2NyaXB0b3JJbnN0PGFueSwgYW55Pj4sIHNlYXJjaEZpZWxkczogU2lnbmFsPHN0cmluZ1tdIHwgdW5kZWZpbmVkPikge1xuICAgICAgICB0aGlzLiNzaWduYWxTb3VyY2VzLnNldCh7ZGVzY3JpcHRvciwgc2VhcmNoRmllbGRzfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldERlc2NyaXB0b3IoZGVzY3JpcHRvcjogVGFibGVEZXNjcmlwdG9ySW5zdDxhbnksIGFueSwgYW55Pikge1xuICAgICAgICBpZiAodGhpcy5kZXNjcmlwdG9yRnJvbVNvdXJjZSgpIGluc3RhbmNlb2YgVGFibGVEeW5hbWljRGVzY3JpcHRvckluc3QpIHtcbiAgICAgICAgICAgIHRoaXMuI2Rlc2NyaXB0b3Iuc2V0KGRlc2NyaXB0b3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtYXBEZXNjcmlwdG9yVG9NZXRhZGF0YShkZXNjcmlwdG9yOiBGaWx0ZXJEZXNjcmlwdG9yPGFueSwgYW55Pik6IEZpbHRlck1ldGFkYXRhIHtcbiAgICAgICAgY29uc3QgbWF0Y2hNb2RlcyA9IGZpbHRlckdlbmVyYXRlTWF0Y2hNb2RlT3B0aW9ucyh0aGlzLnByaW1lQ29uZmlnLCBkZXNjcmlwdG9yLCB0aGlzLnNlcmlhbGl6YXRpb25DZmcpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGVzY3JpcHRvcjogZGVzY3JpcHRvcixcbiAgICAgICAgICAgIG1hdGNoTW9kZXM6IG1hdGNoTW9kZXMsXG4gICAgICAgICAgICBkZWZhdWx0TWF0Y2hNb2RlOiBmaWx0ZXJHZXREZWZhdWx0TWF0Y2hNb2RlKGRlc2NyaXB0b3IsIG1hdGNoTW9kZXMpLFxuICAgICAgICAgICAgZGF0ZUNvbmZpZzogZmlsdGVyR2V0RGF0ZUNvbmZpZyhkZXNjcmlwdG9yLCB0aGlzLnNlcmlhbGl6YXRpb25DZmcpLFxuICAgICAgICAgICAgbnVtYmVyQ29uZmlnOiBmaWx0ZXJHZXROdW1iZXJDb25maWcoZGVzY3JpcHRvcilcbiAgICAgICAgfTtcbiAgICB9XG59XG4iXX0=