@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,312 +0,0 @@
1
- import { FilterMatchMode, angularDateFormatHasSeconds, angularDateFormatHasTime, dateToIsoString, fromAngularDateFormatToPrime, fromAngularNumberFormatToFractions } from '@mediusinc/mng-commons/core';
2
- import { FilterDescriptor, FilterTypeEnum } from '@mediusinc/mng-commons/filter';
3
- export function filterGenerateMatchModeOptions(primeConfig, descriptor, cmpSerCfg) {
4
- let options = undefined;
5
- if (descriptor == null || descriptor.filterType === FilterTypeEnum.String) {
6
- options = [
7
- { value: FilterMatchMode.Contains, label: primeConfig.getTranslation(FilterMatchMode.Contains) },
8
- { value: FilterMatchMode.NotContains, label: primeConfig.getTranslation(FilterMatchMode.NotContains) },
9
- { value: FilterMatchMode.Equals, label: primeConfig.getTranslation(FilterMatchMode.Equals) },
10
- { value: FilterMatchMode.NotEquals, label: primeConfig.getTranslation(FilterMatchMode.NotEquals) },
11
- { value: FilterMatchMode.StartsWith, label: primeConfig.getTranslation(FilterMatchMode.StartsWith) },
12
- { value: FilterMatchMode.EndsWith, label: primeConfig.getTranslation(FilterMatchMode.EndsWith) }
13
- ];
14
- }
15
- else if (descriptor.filterType === FilterTypeEnum.Boolean) {
16
- options = [{ value: FilterMatchMode.Equals, label: primeConfig.getTranslation(FilterMatchMode.Equals) }];
17
- }
18
- else if (descriptor.filterType === FilterTypeEnum.Number) {
19
- options = [
20
- { value: FilterMatchMode.Equals, label: primeConfig.getTranslation(FilterMatchMode.Equals) },
21
- { value: FilterMatchMode.NotEquals, label: primeConfig.getTranslation(FilterMatchMode.NotEquals) },
22
- { value: FilterMatchMode.LessThan, label: primeConfig.getTranslation(FilterMatchMode.LessThan) },
23
- { value: FilterMatchMode.LessThanOrEqualTo, label: primeConfig.getTranslation(FilterMatchMode.LessThanOrEqualTo) },
24
- { value: FilterMatchMode.GreaterThan, label: primeConfig.getTranslation(FilterMatchMode.GreaterThan) },
25
- { value: FilterMatchMode.GreaterThanOrEqualTo, label: primeConfig.getTranslation(FilterMatchMode.GreaterThanOrEqualTo) },
26
- { value: FilterMatchMode.Between, label: primeConfig.getTranslation(FilterMatchMode.Between) }
27
- ];
28
- }
29
- else if (descriptor.filterType === FilterTypeEnum.Lookup || descriptor.filterType === FilterTypeEnum.LookupEnum) {
30
- options = [
31
- { value: FilterMatchMode.Equals, label: primeConfig.getTranslation(FilterMatchMode.Equals) },
32
- { value: FilterMatchMode.NotEquals, label: primeConfig.getTranslation(FilterMatchMode.NotEquals) },
33
- { value: FilterMatchMode.In, label: primeConfig.getTranslation(FilterMatchMode.In) },
34
- { value: FilterMatchMode.NotIn, label: primeConfig.getTranslation(FilterMatchMode.NotIn) }
35
- ];
36
- }
37
- else if (descriptor.filterType === FilterTypeEnum.Date) {
38
- if (!descriptor.datePickerShowTime && !descriptor.dateValueNoTime && !cmpSerCfg?.filtersDateOnlyDisabled) {
39
- options = [
40
- { value: FilterMatchMode.Equals, label: primeConfig.getTranslation(FilterMatchMode.Equals) },
41
- { value: FilterMatchMode.NotEquals, label: primeConfig.getTranslation(FilterMatchMode.NotEquals) },
42
- { value: FilterMatchMode.LessThanOrEqualTo, label: primeConfig.getTranslation(FilterMatchMode.LessThanOrEqualTo) },
43
- { value: FilterMatchMode.GreaterThanOrEqualTo, label: primeConfig.getTranslation(FilterMatchMode.GreaterThanOrEqualTo) },
44
- { value: FilterMatchMode.Between, label: primeConfig.getTranslation(FilterMatchMode.Between) }
45
- ];
46
- }
47
- else {
48
- options = [
49
- { value: FilterMatchMode.Equals, label: primeConfig.getTranslation(FilterMatchMode.Equals) },
50
- { value: FilterMatchMode.LessThanOrEqualTo, label: primeConfig.getTranslation(FilterMatchMode.LessThanOrEqualTo) },
51
- { value: FilterMatchMode.GreaterThanOrEqualTo, label: primeConfig.getTranslation(FilterMatchMode.GreaterThanOrEqualTo) },
52
- { value: FilterMatchMode.Between, label: primeConfig.getTranslation(FilterMatchMode.Between) }
53
- ];
54
- }
55
- }
56
- options?.push({ value: FilterMatchMode.Exists, label: primeConfig.getTranslation(FilterMatchMode.Exists) }, { value: FilterMatchMode.DoesNotExist, label: primeConfig.getTranslation(FilterMatchMode.DoesNotExist) });
57
- if (descriptor?.matchModes) {
58
- options = descriptor.matchModes.map(mm => ({ value: mm, label: primeConfig.getTranslation(mm) }));
59
- }
60
- return options || [];
61
- }
62
- /**
63
- * Gets the default match mode for a filter.
64
- *
65
- * @param {FilterDescriptor<any, any>} [descriptor] - The filter descriptor.
66
- * @param {SelectItem[]} [matchModes=[]] - The available match modes options.
67
- *
68
- * @return {FilterMatchModeExtendedType} The default match mode for the filter.
69
- */
70
- export function filterGetDefaultMatchMode(descriptor, matchModes = []) {
71
- let defaultMatchMode = FilterMatchMode.Equals;
72
- if (descriptor?.filterType === FilterTypeEnum.String)
73
- defaultMatchMode = FilterMatchMode.StartsWith;
74
- // overwrite type default set in descriptor
75
- if (descriptor?.defaultMatchMode) {
76
- defaultMatchMode = descriptor.defaultMatchMode;
77
- }
78
- // check if default mode exists!
79
- if (matchModes.length > 0 && !matchModes.some(m => m.value === defaultMatchMode)) {
80
- defaultMatchMode = matchModes[0].value;
81
- }
82
- return defaultMatchMode;
83
- }
84
- export function filterSetMetadataOnChange(filter, matchMode, value, filterType, filterDateCfg) {
85
- let displayValue = filter?.displayValue ?? value;
86
- let displayMatchMode = filter?.displayMatchMode ?? matchMode;
87
- // when equals is used on dates with time, the actual filter will be between, but displayed as equals
88
- if (filterType === FilterTypeEnum.Date && !filterDateCfg?.valueNoTime) {
89
- if (matchMode === FilterMatchMode.Between &&
90
- Array.isArray(value) &&
91
- value.length === 2 &&
92
- value.every(v => v instanceof Date || typeof v === 'string' || typeof v === 'number')) {
93
- if (filterAreDatesEqual(value[0], value[1], filterDateCfg)) {
94
- displayMatchMode = FilterMatchMode.Equals;
95
- displayValue = new Date(value[0]);
96
- }
97
- }
98
- else if (matchMode === FilterMatchMode.Equals && !value) {
99
- matchMode = FilterMatchMode.Between;
100
- }
101
- }
102
- if (filterType === FilterTypeEnum.Date && displayValue) {
103
- // display value for calendar cannot be string, convert to date
104
- displayValue = Array.isArray(displayValue)
105
- ? displayValue.map(v => (!(v instanceof Date) ? new Date(v) : v))
106
- : displayValue instanceof Date
107
- ? displayValue
108
- : new Date(displayValue);
109
- }
110
- if (filterType === FilterTypeEnum.Boolean && displayValue != null && typeof displayValue !== 'boolean') {
111
- displayValue = (typeof displayValue === 'string' && displayValue.toLowerCase() === 'true') || displayValue === 1;
112
- }
113
- if (filterType === FilterTypeEnum.Number && displayValue != null && typeof displayValue !== 'number') {
114
- const numValue = +displayValue;
115
- if (!isNaN(numValue)) {
116
- displayValue = numValue;
117
- }
118
- }
119
- return {
120
- ...filter,
121
- matchMode,
122
- value: value,
123
- displayMatchMode,
124
- displayValue
125
- };
126
- }
127
- export function filterSetMetadataOnDisplayChange(filter, displayMatchMode, displayValue, filterType, filterDateCfg) {
128
- let matchMode = displayMatchMode;
129
- let value = displayValue;
130
- if (filterType === FilterTypeEnum.Date) {
131
- if (!filterDateCfg?.valueNoTime && displayValue !== null) {
132
- if (displayMatchMode === FilterMatchMode.Equals) {
133
- if (value instanceof Date || typeof value === 'string' || typeof value === 'number') {
134
- const fromDate = new Date(value);
135
- const toDate = new Date(value);
136
- if (filterDateCfg?.showTime) {
137
- if (filterDateCfg?.showSeconds) {
138
- fromDate.setMilliseconds(0);
139
- toDate.setMilliseconds(999);
140
- }
141
- else {
142
- fromDate.setSeconds(0, 0);
143
- toDate.setSeconds(59, 999);
144
- }
145
- }
146
- else {
147
- fromDate.setHours(0, 0, 0, 0);
148
- toDate.setHours(23, 59, 59, 999);
149
- }
150
- value = [fromDate, toDate];
151
- matchMode = FilterMatchMode.Between;
152
- }
153
- else {
154
- value = null;
155
- }
156
- }
157
- else if (displayMatchMode === FilterMatchMode.Between) {
158
- if (Array.isArray(value) && value.length === 2 && value.every(i => i instanceof Date || typeof i === 'string' || typeof i === 'number')) {
159
- const fromDate = new Date(value[0]);
160
- let toDate = new Date(value[1]);
161
- if (filterAreDatesEqual(fromDate, toDate, filterDateCfg)) {
162
- toDate = new Date(fromDate);
163
- if (filterDateCfg?.showTime) {
164
- if (filterDateCfg?.showSeconds) {
165
- toDate.setSeconds(toDate.getSeconds() + 1);
166
- }
167
- else {
168
- toDate.setMinutes(toDate.getMinutes() + 1);
169
- }
170
- }
171
- else {
172
- toDate.setDate(toDate.getDate() + 1);
173
- }
174
- value = [fromDate, toDate];
175
- matchMode = FilterMatchMode.Between;
176
- }
177
- }
178
- else {
179
- value = null;
180
- }
181
- }
182
- }
183
- const convertDateType = filterDateCfg?.valueNoTime ? 'date' : 'date-time';
184
- const convertDateTimeOpts = {
185
- utc: filterDateCfg?.valueUtc,
186
- noMillis: filterDateCfg?.valueNoMillis,
187
- noTimezone: filterDateCfg?.valueNoTimezone
188
- };
189
- value =
190
- value == null
191
- ? value
192
- : Array.isArray(value)
193
- ? value.filter(i => i != null).map(i => dateToIsoString(i, convertDateType, convertDateTimeOpts))
194
- : dateToIsoString(value, convertDateType, convertDateTimeOpts);
195
- }
196
- if (matchMode === FilterMatchMode.Exists || matchMode === FilterMatchMode.DoesNotExist) {
197
- value = null;
198
- }
199
- return {
200
- ...filter,
201
- displayMatchMode: displayMatchMode,
202
- matchMode: matchMode,
203
- displayValue: displayValue,
204
- value: value,
205
- caseSensitive: filterType === FilterTypeEnum.String ? filter?.caseSensitive : undefined
206
- };
207
- }
208
- export function filterAreDatesEqual(fromDate, toDate, filterDateCfg) {
209
- const startDate = dateToIsoString(fromDate);
210
- const endDate = dateToIsoString(toDate);
211
- // 2020-11-02T11:12:12.000
212
- const cmpLength = filterDateCfg?.showTime ? (filterDateCfg?.showSeconds ? 19 : 16) : 10;
213
- return startDate.substring(0, cmpLength) === endDate.substring(0, cmpLength);
214
- }
215
- export function filterApplySerializationConfigToCmp(config, cmpSerCfg) {
216
- // set default
217
- cmpSerCfg.dateTimeInUtc = false;
218
- cmpSerCfg.dateTimeWithTimezone = true;
219
- cmpSerCfg.dateTimeWithMillis = true;
220
- cmpSerCfg.filtersDateOnlyDisabled = false;
221
- // set customizations
222
- if (config?.serialization) {
223
- if (config.serialization.dateTimeInUtc !== undefined)
224
- cmpSerCfg.dateTimeInUtc = config.serialization.dateTimeInUtc;
225
- if (config.serialization.dateTimeWithTimezone !== undefined)
226
- cmpSerCfg.dateTimeWithTimezone = config.serialization.dateTimeWithTimezone;
227
- if (config.serialization.dateTimeWithMillis !== undefined)
228
- cmpSerCfg.dateTimeWithMillis = config.serialization.dateTimeWithMillis;
229
- if (config.serialization.filtersDateOnlyDisabled !== undefined)
230
- cmpSerCfg.filtersDateOnlyDisabled = config.serialization.filtersDateOnlyDisabled;
231
- }
232
- }
233
- export function filterAdjustDisplayValueOnMatchModeChange(matchMode, value) {
234
- if (matchMode == null || matchMode === FilterMatchMode.Exists || matchMode === FilterMatchMode.DoesNotExist) {
235
- return value; // never change, only change later if something else changes here
236
- }
237
- if (matchMode === FilterMatchMode.Between) {
238
- if (!Array.isArray(value)) {
239
- return value != null ? [value, value] : [];
240
- }
241
- else if (value.length === 0 || value.length === 2) {
242
- return value;
243
- }
244
- else if (value.length === 1) {
245
- return [value[0], value[0]];
246
- }
247
- else {
248
- return [value[0], value[1]];
249
- }
250
- }
251
- if (matchMode === FilterMatchMode.In || matchMode === FilterMatchMode.NotIn) {
252
- return Array.isArray(value) ? value : value == null ? [] : [value];
253
- }
254
- return Array.isArray(value) && value.length > 0 ? value[0] : value;
255
- }
256
- export function filterGetDateConfig(descriptor, serCfg) {
257
- if (!descriptor || descriptor.filterType !== FilterTypeEnum.Date) {
258
- return undefined;
259
- }
260
- const showTime = descriptor.datePickerShowTime ?? (descriptor.displayFormatApplyToField && descriptor.displayFormat ? angularDateFormatHasTime(descriptor.displayFormat) : false);
261
- return {
262
- valueNoTime: descriptor.dateValueNoTime || (!serCfg?.filtersDateOnlyDisabled && !showTime),
263
- valueUtc: descriptor.dateValueUtc ?? serCfg?.dateTimeInUtc,
264
- valueNoTimezone: descriptor.dateValueNoTimezone ?? !serCfg?.dateTimeWithTimezone,
265
- valueNoMillis: !serCfg?.dateTimeWithMillis,
266
- format: descriptor.datePickerFormat ?? (descriptor.displayFormatApplyToField && descriptor.displayFormat ? fromAngularDateFormatToPrime(descriptor.displayFormat) : undefined),
267
- showTime: showTime,
268
- showSeconds: showTime &&
269
- (descriptor.datePickerShowSeconds ?? (descriptor.displayFormatApplyToField && descriptor.displayFormat ? angularDateFormatHasSeconds(descriptor.displayFormat) : false))
270
- };
271
- }
272
- export function filterGetNumberConfig(descriptor) {
273
- if (!descriptor || descriptor.filterType !== FilterTypeEnum.Number) {
274
- return undefined;
275
- }
276
- const displayCfg = descriptor.displayFormatApplyToField && descriptor.displayFormat ? fromAngularNumberFormatToFractions(descriptor.displayFormat) : undefined;
277
- return {
278
- fractionsMin: descriptor.numberMinFractionDigits ?? displayCfg?.fractionsMin,
279
- fractionsMax: descriptor.numberMaxFractionDigits ?? displayCfg?.fractionsMax
280
- };
281
- }
282
- /**
283
- * Creates an array of filter descriptors from an array of generic filter properties.
284
- *
285
- * @param {FilterGenericProperty[]} properties - The array of filterable properties, their types and options.
286
- * @param {LookupDataProviderInst<string, any, any, 'field'>} [valueLookup] - The lookup data provider for value suggestions.
287
- */
288
- export function createFilterDescriptorsFromGeneric(properties, valueLookup) {
289
- return properties.reduce((createdFilterDescriptors, genericFilter) => {
290
- // when no generic value lookup is provided, lookup enum filters are treated as string filters
291
- const filterType = genericFilter.type === FilterTypeEnum.LookupEnum && valueLookup === undefined ? FilterTypeEnum.String : genericFilter.type;
292
- const filterDescriptor = new FilterDescriptor(genericFilter.property).asFilterType(filterType).asGenericFilter();
293
- if ((genericFilter.type === FilterTypeEnum.String || genericFilter.type === FilterTypeEnum.LookupEnum) && valueLookup) {
294
- filterDescriptor.withGenericValueProvider(valueLookup);
295
- }
296
- if (filterDescriptor && genericFilter.opts !== undefined) {
297
- switch (genericFilter.type) {
298
- case FilterTypeEnum.Number:
299
- filterDescriptor.asNumber(genericFilter.opts);
300
- break;
301
- case FilterTypeEnum.Date:
302
- filterDescriptor.asDate(genericFilter.opts);
303
- break;
304
- }
305
- }
306
- if (filterDescriptor) {
307
- createdFilterDescriptors.push(filterDescriptor);
308
- }
309
- return createdFilterDescriptors;
310
- }, []);
311
- }
312
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RhYmxlL3NyYy9oZWxwZXJzL2ZpbHRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUlILGVBQWUsRUFJZiwyQkFBMkIsRUFDM0Isd0JBQXdCLEVBQ3hCLGVBQWUsRUFDZiw0QkFBNEIsRUFDNUIsa0NBQWtDLEVBQ3JDLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUFDLGdCQUFnQixFQUF5QixjQUFjLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUt0RyxNQUFNLFVBQVUsOEJBQThCLENBQzFDLFdBQTBCLEVBQzFCLFVBQWtELEVBQ2xELFNBQXNDO0lBRXRDLElBQUksT0FBTyxHQUE2QixTQUFTLENBQUM7SUFDbEQsSUFBSSxVQUFVLElBQUksSUFBSSxJQUFJLFVBQVUsQ0FBQyxVQUFVLEtBQUssY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3hFLE9BQU8sR0FBRztZQUNOLEVBQUMsS0FBSyxFQUFFLGVBQWUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLFdBQVcsQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxFQUFDO1lBQzlGLEVBQUMsS0FBSyxFQUFFLGVBQWUsQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLFdBQVcsQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxFQUFDO1lBQ3BHLEVBQUMsS0FBSyxFQUFFLGVBQWUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFdBQVcsQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxFQUFDO1lBQzFGLEVBQUMsS0FBSyxFQUFFLGVBQWUsQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLFdBQVcsQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxFQUFDO1lBQ2hHLEVBQUMsS0FBSyxFQUFFLGVBQWUsQ0FBQyxVQUFVLEVBQUUsS0FBSyxF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LElBQUksYUFBYSxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN2RCxRQUFRLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDekIsS0FBSyxjQUFjLENBQUMsTUFBTTtvQkFDdEIsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDOUMsTUFBTTtnQkFDVixLQUFLLGNBQWMsQ0FBQyxJQUFJO29CQUNwQixnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUM1QyxNQUFNO1lBQ2QsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLGdCQUFnQixFQUFFLENBQUM7WUFDbkIsd0JBQXdCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUNELE9BQU8sd0JBQXdCLENBQUM7SUFDcEMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ1gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UHJpbWVOR0NvbmZpZywgU2VsZWN0SXRlbX0gZnJvbSAncHJpbWVuZy9hcGknO1xuXG5pbXBvcnQge1xuICAgIENvbW1vbnNGaWx0ZXJNZXRhZGF0YSxcbiAgICBDb21tb25zTW9kdWxlQ29uZmlnLFxuICAgIENvbW1vbnNTZXJpYWxpemF0aW9uQ29uZmlnLFxuICAgIEZpbHRlck1hdGNoTW9kZSxcbiAgICBGaWx0ZXJNYXRjaE1vZGVFeHRlbmRlZFR5cGUsXG4gICAgTnVsbGFibGUsXG4gICAgU2luZ2xlT3JBcnJheVR5cGUsXG4gICAgYW5ndWxhckRhdGVGb3JtYXRIYXNTZWNvbmRzLFxuICAgIGFuZ3VsYXJEYXRlRm9ybWF0SGFzVGltZSxcbiAgICBkYXRlVG9Jc29TdHJpbmcsXG4gICAgZnJvbUFuZ3VsYXJEYXRlRm9ybWF0VG9QcmltZSxcbiAgICBmcm9tQW5ndWxhck51bWJlckZvcm1hdFRvRnJhY3Rpb25zXG59IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5pbXBvcnQge0ZpbHRlckRlc2NyaXB0b3IsIEZpbHRlckdlbmVyaWNQcm9wZXJ0eSwgRmlsdGVyVHlwZUVudW19IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvZmlsdGVyJztcbmltcG9ydCB7TG9va3VwRGF0YVByb3ZpZGVySW5zdH0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9mb3JtL2FwaSc7XG5cbmltcG9ydCB7RmlsdGVyRGF0ZUNvbmZpZywgRmlsdGVyTnVtYmVyQ29uZmlnfSBmcm9tICcuLi9tb2RlbHMvZmlsdGVyLm1vZGVsJztcblxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlckdlbmVyYXRlTWF0Y2hNb2RlT3B0aW9ucyhcbiAgICBwcmltZUNvbmZpZzogUHJpbWVOR0NvbmZpZyxcbiAgICBkZXNjcmlwdG9yOiBGaWx0ZXJEZXNjcmlwdG9yPGFueSwgYW55PiB8IHVuZGVmaW5lZCxcbiAgICBjbXBTZXJDZmc/OiBDb21tb25zU2VyaWFsaXphdGlvbkNvbmZpZ1xuKTogU2VsZWN0SXRlbVtdIHtcbiAgICBsZXQgb3B0aW9uczogU2VsZWN0SXRlbVtdIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIGlmIChkZXNjcmlwdG9yID09IG51bGwgfHwgZGVzY3JpcHRvci5maWx0ZXJUeXBlID09PSBGaWx0ZXJUeXBlRW51bS5TdHJpbmcpIHtcbiAgICAgICAgb3B0aW9ucyA9IFtcbiAgICAgICAgICAgIHt2YWx1ZTogRmlsdGVyTWF0Y2hNb2RlLkNvbnRhaW5zLCBsYWJlbDogcHJpbWVDb25maWcuZ2V0VHJhbnNsYXRpb24oRmlsdGVyTWF0Y2hNb2RlLkNvbnRhaW5zKX0sXG4gICAgICAgICAgICB7dmFsdWU6IEZpbHRlck1hdGNoTW9kZS5Ob3RDb250YWlucywgbGFiZWw6IHByaW1lQ29uZmlnLmdldFRyYW5zbGF0aW9uKEZpbHRlck1hdGNoTW9kZS5Ob3RDb250YWlucyl9LFxuICAgICAgICAgICAge3ZhbHVlOiBGaWx0ZXJNYXRjaE1vZGUuRXF1YWxzLCBsYWJlbDogcHJpbWVDb25maWcuZ2V0VHJhbnNsYXRpb24oRmlsdGVyTWF0Y2hNb2RlLkVxdWFscyl9LFxuICAgICAgICAgICAge3ZhbHVlOiBGaWx0ZXJNYXRjaE1vZGUuTm90RXF1YWxzLCBsYWJlbDogcHJpbWVDb25maWcuZ2V0VHJhbnNsYXRpb24oRmlsdGVyTWF0Y2hNb2RlLk5vdEVxdWFscyl9LFxuICAgICAgICAgICAge3ZhbHVlOiBGaWx0ZXJNYXRjaE1vZGUuU3RhcnRzV2l0aCwgbGFiZWw6IHByaW1lQ29uZmlnLmdldFRyYW5zbGF0aW9uKEZpbHRlck1hdGNoTW9kZS5TdGFydHNXaXRoKX0sXG4gICAgICAgICAgICB7dmFsdWU6IEZpbHRlck1hdGNoTW9kZS5FbmRzV2l0aCwgbGFiZWw6IHByaW1lQ29uZmlnLmdldFRyYW5zbGF0aW9uKEZpbHRlck1hdGNoTW9kZS5FbmRzV2l0aCl9XG4gICAgICAgIF07XG4gICAgfSBlbHNlIGlmIChkZXNjcmlwdG9yLmZpbHRlclR5cGUgPT09IEZpbHRlclR5cGVFbnVtLkJvb2xlYW4pIHtcbiAgICAgICAgb3B0aW9ucyA9IFt7dmFsdWU6IEZpbHRlck1hdGNoTW9kZS5FcXVhbHMsIGxhYmVsOiBwcmltZUNvbmZpZy5nZXRUcmFuc2xhdGlvbihGaWx0ZXJNYXRjaE1vZGUuRXF1YWxzKX1dO1xuICAgIH0gZWxzZSBpZiAoZGVzY3JpcHRvci5maWx0ZXJUeXBlID09PSBGaWx0ZXJUeXBlRW51bS5OdW1iZXIpIHtcbiAgICAgICAgb3B0aW9ucyA9IFtcbiAgICAgICAgICAgIHt2YWx1ZTogRmlsdGVyTWF0Y2hNb2RlLkVxdWFscywgbGFiZWw6IHByaW1lQ29uZmlnLmdldFRyYW5zbGF0aW9uKEZpbHRlck1hdGNoTW9kZS5FcXVhbHMpfSxcbiAgICAgICAgICAgIHt2YWx1ZTogRmlsdGVyTWF0Y2hNb2RlLk5vdEVxdWFscywgbGFiZWw6IHByaW1lQ29uZmlnLmdldFRyYW5zbGF0aW9uKEZpbHRlck1hdGNoTW9kZS5Ob3RFcXVhbHMpfSxcbiAgICAgICAgICAgIHt2YWx1ZTogRmlsdGVyTWF0Y2hNb2RlLkxlc3NUaGFuLCBsYWJlbDogcHJpbWVDb25maWcuZ2V0VHJhbnNsYXRpb24oRmlsdGVyTWF0Y2hNb2RlLkxlc3NUaGFuKX0sXG4gICAgICAgICAgICB7dmFsdWU6IEZpbHRlck1hdGNoTW9kZS5MZXNzVGhhbk9yRXF1YWxUbywgbGFiZWw6IHByaW1lQ29uZmlnLmdldFRyYW5zbGF0aW9uKEZpbHRlck1hdGNoTW9kZS5MZXNzVGhhbk9yRXF1YWxUbyl9LFxuICAgICAgICAgICAge3ZhbHVlOiBGaWx0ZXJNYXRjaE1vZGUuR3JlYXRlclRoYW4sIGxhYmVsOiBwcmltZUNvbmZpZy5nZXRUcmFuc2xhdGlvbihGaWx0ZXJNYXRjaE1vZGUuR3JlYXRlclRoYW4pfSxcbiAgICAgICAgICAgIHt2YWx1ZTogRmlsdGVyTWF0Y2hNb2RlLkdyZWF0ZXJUaGFuT3JFcXVhbFRvLCBsYWJlbDogcHJpbWVDb25maWcuZ2V0VHJhbnNsYXRpb24oRmlsdGVyTWF0Y2hNb2RlLkdyZWF0ZXJUaGFuT3JFcXVhbFRvKX0sXG4gICAgICAgICAgICB7dmFsdWU6IEZpbHRlck1hdGNoTW9kZS5CZXR3ZWVuLCBsYWJlbDogcHJpbWVDb25maWcuZ2V0VHJhbnNsYXRpb24oRmlsdGVyTWF0Y2hNb2RlLkJldHdlZW4pfVxuICAgICAgICBdO1xuICAgIH0gZWxzZSBpZiAoZGVzY3JpcHRvci5maWx0ZXJUeXBlID09PSBGaWx0ZXJUeXBlRW51bS5Mb29rdXAgfHwgZGVzY3JpcHRvci5maWx0ZXJUeXBlID09PSBGaWx0ZXJUeXBlRW51bS5Mb29rdXBFbnVtKSB7XG4gICAgICAgIG9wdGlvbnMgPSBbXG4gICAgICAgICAgICB7dmFsdWU6IEZpbHRlck1hdGNoTW9kZS5FcXVhbHMsIGxhYmVsOiBwcmltZUNvbmZpZy5nZXRUcmFuc2xhdGlvbihGaWx0ZXJNYXRjaE1vZGUuRXF1YWxzKX0sXG4gICAgICAgICAgICB7dmFsdWU6IEZpbHRlck1hdGNoTW9kZS5Ob3RFcXVhbHMsIGxhYmVsOiBwcmltZUNvbmZpZy5nZXRUcmFuc2xhdGlvbihGaWx0ZXJNYXRjaE1vZGUuTm90RXF1YWxzKX0sXG4gICAgICAgICAgICB7dmFsdWU6IEZpbHRlck1hdGNoTW9kZS5JbiwgbGFiZWw6IHByaW1lQ29uZmlnLmdldFRyYW5zbGF0aW9uKEZpbHRlck1hdGNoTW9kZS5Jbil9LFxuICAgICAgICAgICAge3ZhbHVlOiBGaWx0ZXJNYXRjaE1vZGUuTm90SW4sIGxhYmVsOiBwcmltZUNvbmZpZy5nZXRUcmFuc2xhdGlvbihGaWx0ZXJNYXRjaE1vZGUuTm90SW4pfVxuICAgICAgICBdO1xuICAgIH0gZWxzZSBpZiAoZGVzY3JpcHRvci5maWx0ZXJUeXBlID09PSBGaWx0ZXJUeXBlRW51bS5EYXRlKSB7XG4gICAgICAgIGlmICghZGVzY3JpcHRvci5kYXRlUGlja2VyU2hvd1RpbWUgJiYgIWRlc2NyaXB0b3IuZGF0ZVZhbHVlTm9UaW1lICYmICFjbXBTZXJDZmc/LmZpbHRlcnNEYXRlT25seURpc2FibGVkKSB7XG4gICAgICAgICAgICBvcHRpb25zID0gW1xuICAgICAgICAgICAgICAgIHt2YWx1ZTogRmlsdGVyTWF0Y2hNb2RlLkVxdWFscywgbGFiZWw6IHByaW1lQ29uZmlnLmdldFRyYW5zbGF0aW9uKEZpbHRlck1hdGNoTW9kZS5FcXVhbHMpfSxcbiAgICAgICAgICAgICAgICB7dmFsdWU6IEZpbHRlck1hdGNoTW9kZS5Ob3RFcXVhbHMsIGxhYmVsOiBwcmltZUNvbmZpZy5nZXRUcmFuc2xhdGlvbihGaWx0ZXJNYXRjaE1vZGUuTm90RXF1YWxzKX0sXG4gICAgICAgICAgICAgICAge3ZhbHVlOiBGaWx0ZXJNYXRjaE1vZGUuTGVzc1RoYW5PckVxdWFsVG8sIGxhYmVsOiBwcmltZUNvbmZpZy5nZXRUcmFuc2xhdGlvbihGaWx0ZXJNYXRjaE1vZGUuTGVzc1RoYW5PckVxdWFsVG8pfSxcbiAgICAgICAgICAgICAgICB7dmFsdWU6IEZpbHRlck1hdGNoTW9kZS5HcmVhdGVyVGhhbk9yRXF1YWxUbywgbGFiZWw6IHByaW1lQ29uZmlnLmdldFRyYW5zbGF0aW9uKEZpbHRlck1hdGNoTW9kZS5HcmVhdGVyVGhhbk9yRXF1YWxUbyl9LFxuICAgICAgICAgICAgICAgIHt2YWx1ZTogRmlsdGVyTWF0Y2hNb2RlLkJldHdlZW4sIGxhYmVsOiBwcmltZUNvbmZpZy5nZXRUcmFuc2xhdGlvbihGaWx0ZXJNYXRjaE1vZGUuQmV0d2Vlbil9XG4gICAgICAgICAgICBdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3B0aW9ucyA9IFtcbiAgICAgICAgICAgICAgICB7dmFsdWU6IEZpbHRlck1hdGNoTW9kZS5FcXVhbHMsIGxhYmVsOiBwcmltZUNvbmZpZy5nZXRUcmFuc2xhdGlvbihGaWx0ZXJNYXRjaE1vZGUuRXF1YWxzKX0sXG4gICAgICAgICAgICAgICAge3ZhbHVlOiBGaWx0ZXJNYXRjaE1vZGUuTGVzc1RoYW5PckVxdWFsVG8sIGxhYmVsOiBwcmltZUNvbmZpZy5nZXRUcmFuc2xhdGlvbihGaWx0ZXJNYXRjaE1vZGUuTGVzc1RoYW5PckVxdWFsVG8pfSxcbiAgICAgICAgICAgICAgICB7dmFsdWU6IEZpbHRlck1hdGNoTW9kZS5HcmVhdGVyVGhhbk9yRXF1YWxUbywgbGFiZWw6IHByaW1lQ29uZmlnLmdldFRyYW5zbGF0aW9uKEZpbHRlck1hdGNoTW9kZS5HcmVhdGVyVGhhbk9yRXF1YWxUbyl9LFxuICAgICAgICAgICAgICAgIHt2YWx1ZTogRmlsdGVyTWF0Y2hNb2RlLkJldHdlZW4sIGxhYmVsOiBwcmltZUNvbmZpZy5nZXRUcmFuc2xhdGlvbihGaWx0ZXJNYXRjaE1vZGUuQmV0d2Vlbil9XG4gICAgICAgICAgICBdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb3B0aW9ucz8ucHVzaChcbiAgICAgICAge3ZhbHVlOiBGaWx0ZXJNYXRjaE1vZGUuRXhpc3RzLCBsYWJlbDogcHJpbWVDb25maWcuZ2V0VHJhbnNsYXRpb24oRmlsdGVyTWF0Y2hNb2RlLkV4aXN0cyl9LFxuICAgICAgICB7dmFsdWU6IEZpbHRlck1hdGNoTW9kZS5Eb2VzTm90RXhpc3QsIGxhYmVsOiBwcmltZUNvbmZpZy5nZXRUcmFuc2xhdGlvbihGaWx0ZXJNYXRjaE1vZGUuRG9lc05vdEV4aXN0KX1cbiAgICApO1xuXG4gICAgaWYgKGRlc2NyaXB0b3I/Lm1hdGNoTW9kZXMpIHtcbiAgICAgICAgb3B0aW9ucyA9IGRlc2NyaXB0b3IubWF0Y2hNb2Rlcy5tYXAobW0gPT4gPFNlbGVjdEl0ZW0+e3ZhbHVlOiBtbSwgbGFiZWw6IHByaW1lQ29uZmlnLmdldFRyYW5zbGF0aW9uKG1tKX0pO1xuICAgIH1cbiAgICByZXR1cm4gb3B0aW9ucyB8fCBbXTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBkZWZhdWx0IG1hdGNoIG1vZGUgZm9yIGEgZmlsdGVyLlxuICpcbiAqIEBwYXJhbSB7RmlsdGVyRGVzY3JpcHRvcjxhbnksIGFueT59IFtkZXNjcmlwdG9yXSAtIFRoZSBmaWx0ZXIgZGVzY3JpcHRvci5cbiAqIEBwYXJhbSB7U2VsZWN0SXRlbVtdfSBbbWF0Y2hNb2Rlcz1bXV0gLSBUaGUgYXZhaWxhYmxlIG1hdGNoIG1vZGVzIG9wdGlvbnMuXG4gKlxuICogQHJldHVybiB7RmlsdGVyTWF0Y2hNb2RlRXh0ZW5kZWRUeXBlfSBUaGUgZGVmYXVsdCBtYXRjaCBtb2RlIGZvciB0aGUgZmlsdGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyR2V0RGVmYXVsdE1hdGNoTW9kZShkZXNjcmlwdG9yPzogRmlsdGVyRGVzY3JpcHRvcjxhbnksIGFueT4sIG1hdGNoTW9kZXM6IFNlbGVjdEl0ZW1bXSA9IFtdKTogRmlsdGVyTWF0Y2hNb2RlRXh0ZW5kZWRUeXBlIHtcbiAgICBsZXQgZGVmYXVsdE1hdGNoTW9kZTogRmlsdGVyTWF0Y2hNb2RlRXh0ZW5kZWRUeXBlID0gRmlsdGVyTWF0Y2hNb2RlLkVxdWFscztcbiAgICBpZiAoZGVzY3JpcHRvcj8uZmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZUVudW0uU3RyaW5nKSBkZWZhdWx0TWF0Y2hNb2RlID0gRmlsdGVyTWF0Y2hNb2RlLlN0YXJ0c1dpdGg7XG5cbiAgICAvLyBvdmVyd3JpdGUgdHlwZSBkZWZhdWx0IHNldCBpbiBkZXNjcmlwdG9yXG4gICAgaWYgKGRlc2NyaXB0b3I/LmRlZmF1bHRNYXRjaE1vZGUpIHtcbiAgICAgICAgZGVmYXVsdE1hdGNoTW9kZSA9IGRlc2NyaXB0b3IuZGVmYXVsdE1hdGNoTW9kZTtcbiAgICB9XG5cbiAgICAvLyBjaGVjayBpZiBkZWZhdWx0IG1vZGUgZXhpc3RzIVxuICAgIGlmIChtYXRjaE1vZGVzLmxlbmd0aCA+IDAgJiYgIW1hdGNoTW9kZXMuc29tZShtID0+IG0udmFsdWUgPT09IGRlZmF1bHRNYXRjaE1vZGUpKSB7XG4gICAgICAgIGRlZmF1bHRNYXRjaE1vZGUgPSBtYXRjaE1vZGVzWzBdLnZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiBkZWZhdWx0TWF0Y2hNb2RlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyU2V0TWV0YWRhdGFPbkNoYW5nZShcbiAgICBmaWx0ZXI6IENvbW1vbnNGaWx0ZXJNZXRhZGF0YSxcbiAgICBtYXRjaE1vZGU/OiBGaWx0ZXJNYXRjaE1vZGVFeHRlbmRlZFR5cGUsXG4gICAgdmFsdWU/OiBhbnksXG4gICAgZmlsdGVyVHlwZT86IEZpbHRlclR5cGVFbnVtLFxuICAgIGZpbHRlckRhdGVDZmc/OiBGaWx0ZXJEYXRlQ29uZmlnXG4pOiBDb21tb25zRmlsdGVyTWV0YWRhdGEge1xuICAgIGxldCBkaXNwbGF5VmFsdWUgPSBmaWx0ZXI/LmRpc3BsYXlWYWx1ZSA/PyB2YWx1ZTtcbiAgICBsZXQgZGlzcGxheU1hdGNoTW9kZSA9IGZpbHRlcj8uZGlzcGxheU1hdGNoTW9kZSA/PyBtYXRjaE1vZGU7XG5cbiAgICAvLyB3aGVuIGVxdWFscyBpcyB1c2VkIG9uIGRhdGVzIHdpdGggdGltZSwgdGhlIGFjdHVhbCBmaWx0ZXIgd2lsbCBiZSBiZXR3ZWVuLCBidXQgZGlzcGxheWVkIGFzIGVxdWFsc1xuICAgIGlmIChmaWx0ZXJUeXBlID09PSBGaWx0ZXJUeXBlRW51bS5EYXRlICYmICFmaWx0ZXJEYXRlQ2ZnPy52YWx1ZU5vVGltZSkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBtYXRjaE1vZGUgPT09IEZpbHRlck1hdGNoTW9kZS5CZXR3ZWVuICYmXG4gICAgICAgICAgICBBcnJheS5pc0FycmF5KHZhbHVlKSAmJlxuICAgICAgICAgICAgdmFsdWUubGVuZ3RoID09PSAyICYmXG4gICAgICAgICAgICB2YWx1ZS5ldmVyeSh2ID0+IHYgaW5zdGFuY2VvZiBEYXRlIHx8IHR5cGVvZiB2ID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdiA9PT0gJ251bWJlcicpXG4gICAgICAgICkge1xuICAgICAgICAgICAgaWYgKGZpbHRlckFyZURhdGVzRXF1YWwodmFsdWVbMF0sIHZhbHVlWzFdLCBmaWx0ZXJEYXRlQ2ZnKSkge1xuICAgICAgICAgICAgICAgIGRpc3BsYXlNYXRjaE1vZGUgPSBGaWx0ZXJNYXRjaE1vZGUuRXF1YWxzO1xuICAgICAgICAgICAgICAgIGRpc3BsYXlWYWx1ZSA9IG5ldyBEYXRlKHZhbHVlWzBdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChtYXRjaE1vZGUgPT09IEZpbHRlck1hdGNoTW9kZS5FcXVhbHMgJiYgIXZhbHVlKSB7XG4gICAgICAgICAgICBtYXRjaE1vZGUgPSBGaWx0ZXJNYXRjaE1vZGUuQmV0d2VlbjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChmaWx0ZXJUeXBlID09PSBGaWx0ZXJUeXBlRW51bS5EYXRlICYmIGRpc3BsYXlWYWx1ZSkge1xuICAgICAgICAvLyBkaXNwbGF5IHZhbHVlIGZvciBjYWxlbmRhciBjYW5ub3QgYmUgc3RyaW5nLCBjb252ZXJ0IHRvIGRhdGVcbiAgICAgICAgZGlzcGxheVZhbHVlID0gQXJyYXkuaXNBcnJheShkaXNwbGF5VmFsdWUpXG4gICAgICAgICAgICA/IGRpc3BsYXlWYWx1ZS5tYXAodiA9PiAoISh2IGluc3RhbmNlb2YgRGF0ZSkgPyBuZXcgRGF0ZSh2KSA6IHYpKVxuICAgICAgICAgICAgOiBkaXNwbGF5VmFsdWUgaW5zdGFuY2VvZiBEYXRlXG4gICAgICAgICAgICAgID8gZGlzcGxheVZhbHVlXG4gICAgICAgICAgICAgIDogbmV3IERhdGUoZGlzcGxheVZhbHVlKTtcbiAgICB9XG4gICAgaWYgKGZpbHRlclR5cGUgPT09IEZpbHRlclR5cGVFbnVtLkJvb2xlYW4gJiYgZGlzcGxheVZhbHVlICE9IG51bGwgJiYgdHlwZW9mIGRpc3BsYXlWYWx1ZSAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgIGRpc3BsYXlWYWx1ZSA9ICh0eXBlb2YgZGlzcGxheVZhbHVlID09PSAnc3RyaW5nJyAmJiBkaXNwbGF5VmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gJ3RydWUnKSB8fCBkaXNwbGF5VmFsdWUgPT09IDE7XG4gICAgfVxuICAgIGlmIChmaWx0ZXJUeXBlID09PSBGaWx0ZXJUeXBlRW51bS5OdW1iZXIgJiYgZGlzcGxheVZhbHVlICE9IG51bGwgJiYgdHlwZW9mIGRpc3BsYXlWYWx1ZSAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgY29uc3QgbnVtVmFsdWUgPSArZGlzcGxheVZhbHVlO1xuICAgICAgICBpZiAoIWlzTmFOKG51bVZhbHVlKSkge1xuICAgICAgICAgICAgZGlzcGxheVZhbHVlID0gbnVtVmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICAuLi5maWx0ZXIsXG4gICAgICAgIG1hdGNoTW9kZSxcbiAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICBkaXNwbGF5TWF0Y2hNb2RlLFxuICAgICAgICBkaXNwbGF5VmFsdWVcbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyU2V0TWV0YWRhdGFPbkRpc3BsYXlDaGFuZ2UoXG4gICAgZmlsdGVyOiBDb21tb25zRmlsdGVyTWV0YWRhdGEgfCB1bmRlZmluZWQsXG4gICAgZGlzcGxheU1hdGNoTW9kZTogRmlsdGVyTWF0Y2hNb2RlRXh0ZW5kZWRUeXBlLFxuICAgIGRpc3BsYXlWYWx1ZTogYW55LFxuICAgIGZpbHRlclR5cGU/OiBGaWx0ZXJUeXBlRW51bSxcbiAgICBmaWx0ZXJEYXRlQ2ZnPzogRmlsdGVyRGF0ZUNvbmZpZ1xuKSB7XG4gICAgbGV0IG1hdGNoTW9kZSA9IGRpc3BsYXlNYXRjaE1vZGU7XG4gICAgbGV0IHZhbHVlOiBTaW5nbGVPckFycmF5VHlwZTxOdWxsYWJsZTxEYXRlIHwgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj4+ID0gZGlzcGxheVZhbHVlO1xuXG4gICAgaWYgKGZpbHRlclR5cGUgPT09IEZpbHRlclR5cGVFbnVtLkRhdGUpIHtcbiAgICAgICAgaWYgKCFmaWx0ZXJEYXRlQ2ZnPy52YWx1ZU5vVGltZSAmJiBkaXNwbGF5VmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGlmIChkaXNwbGF5TWF0Y2hNb2RlID09PSBGaWx0ZXJNYXRjaE1vZGUuRXF1YWxzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSB8fCB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZnJvbURhdGUgPSBuZXcgRGF0ZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRvRGF0ZSA9IG5ldyBEYXRlKHZhbHVlKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyRGF0ZUNmZz8uc2hvd1RpbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJEYXRlQ2ZnPy5zaG93U2Vjb25kcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21EYXRlLnNldE1pbGxpc2Vjb25kcygwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b0RhdGUuc2V0TWlsbGlzZWNvbmRzKDk5OSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21EYXRlLnNldFNlY29uZHMoMCwgMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9EYXRlLnNldFNlY29uZHMoNTksIDk5OSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmcm9tRGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvRGF0ZS5zZXRIb3VycygyMywgNTksIDU5LCA5OTkpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBbZnJvbURhdGUsIHRvRGF0ZV07XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoTW9kZSA9IEZpbHRlck1hdGNoTW9kZS5CZXR3ZWVuO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGRpc3BsYXlNYXRjaE1vZGUgPT09IEZpbHRlck1hdGNoTW9kZS5CZXR3ZWVuKSB7XG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMiAmJiB2YWx1ZS5ldmVyeShpID0+IGkgaW5zdGFuY2VvZiBEYXRlIHx8IHR5cGVvZiBpID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgaSA9PT0gJ251bWJlcicpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZyb21EYXRlID0gbmV3IERhdGUodmFsdWVbMF0gYXMgRGF0ZSB8IHN0cmluZyB8IG51bWJlcik7XG4gICAgICAgICAgICAgICAgICAgIGxldCB0b0RhdGUgPSBuZXcgRGF0ZSh2YWx1ZVsxXSBhcyBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyQXJlRGF0ZXNFcXVhbChmcm9tRGF0ZSwgdG9EYXRlLCBmaWx0ZXJEYXRlQ2ZnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9EYXRlID0gbmV3IERhdGUoZnJvbURhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlckRhdGVDZmc/LnNob3dUaW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlckRhdGVDZmc/LnNob3dTZWNvbmRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvRGF0ZS5zZXRTZWNvbmRzKHRvRGF0ZS5nZXRTZWNvbmRzKCkgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b0RhdGUuc2V0TWludXRlcyh0b0RhdGUuZ2V0TWludXRlcygpICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b0RhdGUuc2V0RGF0ZSh0b0RhdGUuZ2V0RGF0ZSgpICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gW2Zyb21EYXRlLCB0b0RhdGVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hNb2RlID0gRmlsdGVyTWF0Y2hNb2RlLkJldHdlZW47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY29udmVydERhdGVUeXBlID0gZmlsdGVyRGF0ZUNmZz8udmFsdWVOb1RpbWUgPyAnZGF0ZScgOiAnZGF0ZS10aW1lJztcbiAgICAgICAgY29uc3QgY29udmVydERhdGVUaW1lT3B0cyA9IHtcbiAgICAgICAgICAgIHV0YzogZmlsdGVyRGF0ZUNmZz8udmFsdWVVdGMsXG4gICAgICAgICAgICBub01pbGxpczogZmlsdGVyRGF0ZUNmZz8udmFsdWVOb01pbGxpcyxcbiAgICAgICAgICAgIG5vVGltZXpvbmU6IGZpbHRlckRhdGVDZmc/LnZhbHVlTm9UaW1lem9uZVxuICAgICAgICB9O1xuXG4gICAgICAgIHZhbHVlID1cbiAgICAgICAgICAgIHZhbHVlID09IG51bGxcbiAgICAgICAgICAgICAgICA/IHZhbHVlXG4gICAgICAgICAgICAgICAgOiBBcnJheS5pc0FycmF5KHZhbHVlKVxuICAgICAgICAgICAgICAgICAgPyB2YWx1ZS5maWx0ZXIoaSA9PiBpICE9IG51bGwpLm1hcChpID0+IGRhdGVUb0lzb1N0cmluZyhpLCBjb252ZXJ0RGF0ZVR5cGUsIGNvbnZlcnREYXRlVGltZU9wdHMpKVxuICAgICAgICAgICAgICAgICAgOiBkYXRlVG9Jc29TdHJpbmcodmFsdWUsIGNvbnZlcnREYXRlVHlwZSwgY29udmVydERhdGVUaW1lT3B0cyk7XG4gICAgfVxuICAgIGlmIChtYXRjaE1vZGUgPT09IEZpbHRlck1hdGNoTW9kZS5FeGlzdHMgfHwgbWF0Y2hNb2RlID09PSBGaWx0ZXJNYXRjaE1vZGUuRG9lc05vdEV4aXN0KSB7XG4gICAgICAgIHZhbHVlID0gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICAuLi5maWx0ZXIsXG4gICAgICAgIGRpc3BsYXlNYXRjaE1vZGU6IGRpc3BsYXlNYXRjaE1vZGUsXG4gICAgICAgIG1hdGNoTW9kZTogbWF0Y2hNb2RlLFxuICAgICAgICBkaXNwbGF5VmFsdWU6IGRpc3BsYXlWYWx1ZSxcbiAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICBjYXNlU2Vuc2l0aXZlOiBmaWx0ZXJUeXBlID09PSBGaWx0ZXJUeXBlRW51bS5TdHJpbmcgPyBmaWx0ZXI/LmNhc2VTZW5zaXRpdmUgOiB1bmRlZmluZWRcbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyQXJlRGF0ZXNFcXVhbChmcm9tRGF0ZTogRGF0ZSB8IHN0cmluZyB8IG51bWJlciwgdG9EYXRlOiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyLCBmaWx0ZXJEYXRlQ2ZnPzogRmlsdGVyRGF0ZUNvbmZpZykge1xuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IGRhdGVUb0lzb1N0cmluZyhmcm9tRGF0ZSk7XG4gICAgY29uc3QgZW5kRGF0ZSA9IGRhdGVUb0lzb1N0cmluZyh0b0RhdGUpO1xuXG4gICAgLy8gMjAyMC0xMS0wMlQxMToxMjoxMi4wMDBcbiAgICBjb25zdCBjbXBMZW5ndGggPSBmaWx0ZXJEYXRlQ2ZnPy5zaG93VGltZSA/IChmaWx0ZXJEYXRlQ2ZnPy5zaG93U2Vjb25kcyA/IDE5IDogMTYpIDogMTA7XG5cbiAgICByZXR1cm4gc3RhcnREYXRlLnN1YnN0cmluZygwLCBjbXBMZW5ndGgpID09PSBlbmREYXRlLnN1YnN0cmluZygwLCBjbXBMZW5ndGgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyQXBwbHlTZXJpYWxpemF0aW9uQ29uZmlnVG9DbXAoY29uZmlnOiBDb21tb25zTW9kdWxlQ29uZmlnIHwgbnVsbCwgY21wU2VyQ2ZnOiBDb21tb25zU2VyaWFsaXphdGlvbkNvbmZpZykge1xuICAgIC8vIHNldCBkZWZhdWx0XG4gICAgY21wU2VyQ2ZnLmRhdGVUaW1lSW5VdGMgPSBmYWxzZTtcbiAgICBjbXBTZXJDZmcuZGF0ZVRpbWVXaXRoVGltZXpvbmUgPSB0cnVlO1xuICAgIGNtcFNlckNmZy5kYXRlVGltZVdpdGhNaWxsaXMgPSB0cnVlO1xuICAgIGNtcFNlckNmZy5maWx0ZXJzRGF0ZU9ubHlEaXNhYmxlZCA9IGZhbHNlO1xuICAgIC8vIHNldCBjdXN0b21pemF0aW9uc1xuICAgIGlmIChjb25maWc/LnNlcmlhbGl6YXRpb24pIHtcbiAgICAgICAgaWYgKGNvbmZpZy5zZXJpYWxpemF0aW9uLmRhdGVUaW1lSW5VdGMgIT09IHVuZGVmaW5lZCkgY21wU2VyQ2ZnLmRhdGVUaW1lSW5VdGMgPSBjb25maWcuc2VyaWFsaXphdGlvbi5kYXRlVGltZUluVXRjO1xuICAgICAgICBpZiAoY29uZmlnLnNlcmlhbGl6YXRpb24uZGF0ZVRpbWVXaXRoVGltZXpvbmUgIT09IHVuZGVmaW5lZCkgY21wU2VyQ2ZnLmRhdGVUaW1lV2l0aFRpbWV6b25lID0gY29uZmlnLnNlcmlhbGl6YXRpb24uZGF0ZVRpbWVXaXRoVGltZXpvbmU7XG4gICAgICAgIGlmIChjb25maWcuc2VyaWFsaXphdGlvbi5kYXRlVGltZVdpdGhNaWxsaXMgIT09IHVuZGVmaW5lZCkgY21wU2VyQ2ZnLmRhdGVUaW1lV2l0aE1pbGxpcyA9IGNvbmZpZy5zZXJpYWxpemF0aW9uLmRhdGVUaW1lV2l0aE1pbGxpcztcbiAgICAgICAgaWYgKGNvbmZpZy5zZXJpYWxpemF0aW9uLmZpbHRlcnNEYXRlT25seURpc2FibGVkICE9PSB1bmRlZmluZWQpIGNtcFNlckNmZy5maWx0ZXJzRGF0ZU9ubHlEaXNhYmxlZCA9IGNvbmZpZy5zZXJpYWxpemF0aW9uLmZpbHRlcnNEYXRlT25seURpc2FibGVkO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlckFkanVzdERpc3BsYXlWYWx1ZU9uTWF0Y2hNb2RlQ2hhbmdlKG1hdGNoTW9kZT86IEZpbHRlck1hdGNoTW9kZUV4dGVuZGVkVHlwZSwgdmFsdWU/OiBhbnkpOiBhbnkge1xuICAgIGlmIChtYXRjaE1vZGUgPT0gbnVsbCB8fCBtYXRjaE1vZGUgPT09IEZpbHRlck1hdGNoTW9kZS5FeGlzdHMgfHwgbWF0Y2hNb2RlID09PSBGaWx0ZXJNYXRjaE1vZGUuRG9lc05vdEV4aXN0KSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTsgLy8gbmV2ZXIgY2hhbmdlLCBvbmx5IGNoYW5nZSBsYXRlciBpZiBzb21ldGhpbmcgZWxzZSBjaGFuZ2VzIGhlcmVcbiAgICB9XG4gICAgaWYgKG1hdGNoTW9kZSA9PT0gRmlsdGVyTWF0Y2hNb2RlLkJldHdlZW4pIHtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlICE9IG51bGwgPyBbdmFsdWUsIHZhbHVlXSA6IFtdO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlLmxlbmd0aCA9PT0gMCB8fCB2YWx1ZS5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIHJldHVybiBbdmFsdWVbMF0sIHZhbHVlWzBdXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBbdmFsdWVbMF0sIHZhbHVlWzFdXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAobWF0Y2hNb2RlID09PSBGaWx0ZXJNYXRjaE1vZGUuSW4gfHwgbWF0Y2hNb2RlID09PSBGaWx0ZXJNYXRjaE1vZGUuTm90SW4pIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiB2YWx1ZSA9PSBudWxsID8gW10gOiBbdmFsdWVdO1xuICAgIH1cbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID4gMCA/IHZhbHVlWzBdIDogdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJHZXREYXRlQ29uZmlnKGRlc2NyaXB0b3I/OiBGaWx0ZXJEZXNjcmlwdG9yPGFueSwgYW55Piwgc2VyQ2ZnPzogQ29tbW9uc1NlcmlhbGl6YXRpb25Db25maWcpOiBGaWx0ZXJEYXRlQ29uZmlnIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIWRlc2NyaXB0b3IgfHwgZGVzY3JpcHRvci5maWx0ZXJUeXBlICE9PSBGaWx0ZXJUeXBlRW51bS5EYXRlKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3Qgc2hvd1RpbWUgPVxuICAgICAgICBkZXNjcmlwdG9yLmRhdGVQaWNrZXJTaG93VGltZSA/PyAoZGVzY3JpcHRvci5kaXNwbGF5Rm9ybWF0QXBwbHlUb0ZpZWxkICYmIGRlc2NyaXB0b3IuZGlzcGxheUZvcm1hdCA/IGFuZ3VsYXJEYXRlRm9ybWF0SGFzVGltZShkZXNjcmlwdG9yLmRpc3BsYXlGb3JtYXQpIDogZmFsc2UpO1xuICAgIHJldHVybiB7XG4gICAgICAgIHZhbHVlTm9UaW1lOiBkZXNjcmlwdG9yLmRhdGVWYWx1ZU5vVGltZSB8fCAoIXNlckNmZz8uZmlsdGVyc0RhdGVPbmx5RGlzYWJsZWQgJiYgIXNob3dUaW1lKSxcbiAgICAgICAgdmFsdWVVdGM6IGRlc2NyaXB0b3IuZGF0ZVZhbHVlVXRjID8/IHNlckNmZz8uZGF0ZVRpbWVJblV0YyxcbiAgICAgICAgdmFsdWVOb1RpbWV6b25lOiBkZXNjcmlwdG9yLmRhdGVWYWx1ZU5vVGltZXpvbmUgPz8gIXNlckNmZz8uZGF0ZVRpbWVXaXRoVGltZXpvbmUsXG4gICAgICAgIHZhbHVlTm9NaWxsaXM6ICFzZXJDZmc/LmRhdGVUaW1lV2l0aE1pbGxpcyxcbiAgICAgICAgZm9ybWF0OlxuICAgICAgICAgICAgZGVzY3JpcHRvci5kYXRlUGlja2VyRm9ybWF0ID8/IChkZXNjcmlwdG9yLmRpc3BsYXlGb3JtYXRBcHBseVRvRmllbGQgJiYgZGVzY3JpcHRvci5kaXNwbGF5Rm9ybWF0ID8gZnJvbUFuZ3VsYXJEYXRlRm9ybWF0VG9QcmltZShkZXNjcmlwdG9yLmRpc3BsYXlGb3JtYXQpIDogdW5kZWZpbmVkKSxcbiAgICAgICAgc2hvd1RpbWU6IHNob3dUaW1lLFxuICAgICAgICBzaG93U2Vjb25kczpcbiAgICAgICAgICAgIHNob3dUaW1lICYmXG4gICAgICAgICAgICAoZGVzY3JpcHRvci5kYXRlUGlja2VyU2hvd1NlY29uZHMgPz8gKGRlc2NyaXB0b3IuZGlzcGxheUZvcm1hdEFwcGx5VG9GaWVsZCAmJiBkZXNjcmlwdG9yLmRpc3BsYXlGb3JtYXQgPyBhbmd1bGFyRGF0ZUZvcm1hdEhhc1NlY29uZHMoZGVzY3JpcHRvci5kaXNwbGF5Rm9ybWF0KSA6IGZhbHNlKSlcbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyR2V0TnVtYmVyQ29uZmlnKGRlc2NyaXB0b3I/OiBGaWx0ZXJEZXNjcmlwdG9yPGFueSwgYW55Pik6IEZpbHRlck51bWJlckNvbmZpZyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFkZXNjcmlwdG9yIHx8IGRlc2NyaXB0b3IuZmlsdGVyVHlwZSAhPT0gRmlsdGVyVHlwZUVudW0uTnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3QgZGlzcGxheUNmZyA9IGRlc2NyaXB0b3IuZGlzcGxheUZvcm1hdEFwcGx5VG9GaWVsZCAmJiBkZXNjcmlwdG9yLmRpc3BsYXlGb3JtYXQgPyBmcm9tQW5ndWxhck51bWJlckZvcm1hdFRvRnJhY3Rpb25zKGRlc2NyaXB0b3IuZGlzcGxheUZvcm1hdCkgOiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgZnJhY3Rpb25zTWluOiBkZXNjcmlwdG9yLm51bWJlck1pbkZyYWN0aW9uRGlnaXRzID8/IGRpc3BsYXlDZmc/LmZyYWN0aW9uc01pbixcbiAgICAgICAgZnJhY3Rpb25zTWF4OiBkZXNjcmlwdG9yLm51bWJlck1heEZyYWN0aW9uRGlnaXRzID8/IGRpc3BsYXlDZmc/LmZyYWN0aW9uc01heFxuICAgIH07XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiBmaWx0ZXIgZGVzY3JpcHRvcnMgZnJvbSBhbiBhcnJheSBvZiBnZW5lcmljIGZpbHRlciBwcm9wZXJ0aWVzLlxuICpcbiAqIEBwYXJhbSB7RmlsdGVyR2VuZXJpY1Byb3BlcnR5W119IHByb3BlcnRpZXMgLSBUaGUgYXJyYXkgb2YgZmlsdGVyYWJsZSBwcm9wZXJ0aWVzLCB0aGVpciB0eXBlcyBhbmQgb3B0aW9ucy5cbiAqIEBwYXJhbSB7TG9va3VwRGF0YVByb3ZpZGVySW5zdDxzdHJpbmcsIGFueSwgYW55LCAnZmllbGQnPn0gW3ZhbHVlTG9va3VwXSAtIFRoZSBsb29rdXAgZGF0YSBwcm92aWRlciBmb3IgdmFsdWUgc3VnZ2VzdGlvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGaWx0ZXJEZXNjcmlwdG9yc0Zyb21HZW5lcmljKFxuICAgIHByb3BlcnRpZXM6IEZpbHRlckdlbmVyaWNQcm9wZXJ0eVtdLFxuICAgIHZhbHVlTG9va3VwPzogTG9va3VwRGF0YVByb3ZpZGVySW5zdDxzdHJpbmcsIGFueSwgYW55LCAnZmllbGQnPlxuKTogRmlsdGVyRGVzY3JpcHRvcjxhbnksIGFueT5bXSB8IFtdIHtcbiAgICByZXR1cm4gcHJvcGVydGllcy5yZWR1Y2U8RmlsdGVyRGVzY3JpcHRvcjxhbnksIGFueT5bXT4oKGNyZWF0ZWRGaWx0ZXJEZXNjcmlwdG9ycywgZ2VuZXJpY0ZpbHRlcikgPT4ge1xuICAgICAgICAvLyB3aGVuIG5vIGdlbmVyaWMgdmFsdWUgbG9va3VwIGlzIHByb3ZpZGVkLCBsb29rdXAgZW51bSBmaWx0ZXJzIGFyZSB0cmVhdGVkIGFzIHN0cmluZyBmaWx0ZXJzXG4gICAgICAgIGNvbnN0IGZpbHRlclR5cGUgPSBnZW5lcmljRmlsdGVyLnR5cGUgPT09IEZpbHRlclR5cGVFbnVtLkxvb2t1cEVudW0gJiYgdmFsdWVMb29rdXAgPT09IHVuZGVmaW5lZCA/IEZpbHRlclR5cGVFbnVtLlN0cmluZyA6IGdlbmVyaWNGaWx0ZXIudHlwZTtcbiAgICAgICAgY29uc3QgZmlsdGVyRGVzY3JpcHRvciA9IG5ldyBGaWx0ZXJEZXNjcmlwdG9yKGdlbmVyaWNGaWx0ZXIucHJvcGVydHkpLmFzRmlsdGVyVHlwZShmaWx0ZXJUeXBlKS5hc0dlbmVyaWNGaWx0ZXIoKTtcbiAgICAgICAgaWYgKChnZW5lcmljRmlsdGVyLnR5cGUgPT09IEZpbHRlclR5cGVFbnVtLlN0cmluZyB8fCBnZW5lcmljRmlsdGVyLnR5cGUgPT09IEZpbHRlclR5cGVFbnVtLkxvb2t1cEVudW0pICYmIHZhbHVlTG9va3VwKSB7XG4gICAgICAgICAgICBmaWx0ZXJEZXNjcmlwdG9yLndpdGhHZW5lcmljVmFsdWVQcm92aWRlcih2YWx1ZUxvb2t1cCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpbHRlckRlc2NyaXB0b3IgJiYgZ2VuZXJpY0ZpbHRlci5vcHRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoZ2VuZXJpY0ZpbHRlci50eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJUeXBlRW51bS5OdW1iZXI6XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlckRlc2NyaXB0b3IuYXNOdW1iZXIoZ2VuZXJpY0ZpbHRlci5vcHRzKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJUeXBlRW51bS5EYXRlOlxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJEZXNjcmlwdG9yLmFzRGF0ZShnZW5lcmljRmlsdGVyLm9wdHMpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaWx0ZXJEZXNjcmlwdG9yKSB7XG4gICAgICAgICAgICBjcmVhdGVkRmlsdGVyRGVzY3JpcHRvcnMucHVzaChmaWx0ZXJEZXNjcmlwdG9yKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY3JlYXRlZEZpbHRlckRlc2NyaXB0b3JzO1xuICAgIH0sIFtdKTtcbn1cbiJdfQ==
@@ -1,21 +0,0 @@
1
- import { getI18nErrorParams, getI18nForError, toastMessage } from '@mediusinc/mng-commons/core';
2
- import { getI18nForModel } from '@mediusinc/mng-commons/model';
3
- /**
4
- * Generates and displays a notification for a table-related error with localized error messages and details.
5
- *
6
- * @param {TranslateService} translate - The service used to handle localization and translations.
7
- * @param {MessageService} messageService - The service used to manage and display messages.
8
- * @param {TableDescriptorInst<any>} table - The table descriptor containing table-specific information and model data.
9
- * @param {Error} error - The error object providing details about the error that occurred.
10
- * @return {Message | null} The generated message object for the error notification or null if no notification was created.
11
- */
12
- export function tableNotificationError(translate, messageService, table, error) {
13
- const params = {
14
- errorMessage: getI18nForError(translate, error) ?? error.message,
15
- ...getI18nErrorParams(error)
16
- };
17
- const tableErrorTitle = getI18nForModel(translate, table.model, 'table.error.title', { fallbackKey: 'general.error', params }) ?? undefined;
18
- const tableErrorMessage = getI18nForModel(translate, table.model, 'table.error.message', { fallbackKey: 'general.errorMessage', params }) ?? undefined;
19
- return toastMessage(tableErrorMessage ?? error.message, 'error', { messageService: messageService, title: tableErrorTitle, icon: 'pi-exclamation-triangle' });
20
- }
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGFibGUvc3JjL2hlbHBlcnMvbm90aWZpY2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBQyxrQkFBa0IsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDOUYsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBRzdEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLHNCQUFzQixDQUFDLFNBQTJCLEVBQUUsY0FBOEIsRUFBRSxLQUErQixFQUFFLEtBQVk7SUFDN0ksTUFBTSxNQUFNLEdBQUc7UUFDWCxZQUFZLEVBQUUsZUFBZSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTztRQUNoRSxHQUFHLGtCQUFrQixDQUFDLEtBQUssQ0FBQztLQUMvQixDQUFDO0lBQ0YsTUFBTSxlQUFlLEdBQUcsZUFBZSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLG1CQUFtQixFQUFFLEVBQUMsV0FBVyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQztJQUMxSSxNQUFNLGlCQUFpQixHQUFHLGVBQWUsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxxQkFBcUIsRUFBRSxFQUFDLFdBQVcsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLEVBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQztJQUNySixPQUFPLFlBQVksQ0FBQyxpQkFBaUIsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFDLGNBQWMsRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUseUJBQXlCLEVBQUMsQ0FBQyxDQUFDO0FBQ2hLLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtNZXNzYWdlLCBNZXNzYWdlU2VydmljZX0gZnJvbSAncHJpbWVuZy9hcGknO1xuXG5pbXBvcnQge2dldEkxOG5FcnJvclBhcmFtcywgZ2V0STE4bkZvckVycm9yLCB0b2FzdE1lc3NhZ2V9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5pbXBvcnQge2dldEkxOG5Gb3JNb2RlbH0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9tb2RlbCc7XG5pbXBvcnQge1RhYmxlRGVzY3JpcHRvckluc3R9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvdGFibGUvYXBpJztcblxuLyoqXG4gKiBHZW5lcmF0ZXMgYW5kIGRpc3BsYXlzIGEgbm90aWZpY2F0aW9uIGZvciBhIHRhYmxlLXJlbGF0ZWQgZXJyb3Igd2l0aCBsb2NhbGl6ZWQgZXJyb3IgbWVzc2FnZXMgYW5kIGRldGFpbHMuXG4gKlxuICogQHBhcmFtIHtUcmFuc2xhdGVTZXJ2aWNlfSB0cmFuc2xhdGUgLSBUaGUgc2VydmljZSB1c2VkIHRvIGhhbmRsZSBsb2NhbGl6YXRpb24gYW5kIHRyYW5zbGF0aW9ucy5cbiAqIEBwYXJhbSB7TWVzc2FnZVNlcnZpY2V9IG1lc3NhZ2VTZXJ2aWNlIC0gVGhlIHNlcnZpY2UgdXNlZCB0byBtYW5hZ2UgYW5kIGRpc3BsYXkgbWVzc2FnZXMuXG4gKiBAcGFyYW0ge1RhYmxlRGVzY3JpcHRvckluc3Q8YW55Pn0gdGFibGUgLSBUaGUgdGFibGUgZGVzY3JpcHRvciBjb250YWluaW5nIHRhYmxlLXNwZWNpZmljIGluZm9ybWF0aW9uIGFuZCBtb2RlbCBkYXRhLlxuICogQHBhcmFtIHtFcnJvcn0gZXJyb3IgLSBUaGUgZXJyb3Igb2JqZWN0IHByb3ZpZGluZyBkZXRhaWxzIGFib3V0IHRoZSBlcnJvciB0aGF0IG9jY3VycmVkLlxuICogQHJldHVybiB7TWVzc2FnZSB8IG51bGx9IFRoZSBnZW5lcmF0ZWQgbWVzc2FnZSBvYmplY3QgZm9yIHRoZSBlcnJvciBub3RpZmljYXRpb24gb3IgbnVsbCBpZiBubyBub3RpZmljYXRpb24gd2FzIGNyZWF0ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZU5vdGlmaWNhdGlvbkVycm9yKHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSwgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLCB0YWJsZTogVGFibGVEZXNjcmlwdG9ySW5zdDxhbnk+LCBlcnJvcjogRXJyb3IpOiBNZXNzYWdlIHwgbnVsbCB7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICBlcnJvck1lc3NhZ2U6IGdldEkxOG5Gb3JFcnJvcih0cmFuc2xhdGUsIGVycm9yKSA/PyBlcnJvci5tZXNzYWdlLFxuICAgICAgICAuLi5nZXRJMThuRXJyb3JQYXJhbXMoZXJyb3IpXG4gICAgfTtcbiAgICBjb25zdCB0YWJsZUVycm9yVGl0bGUgPSBnZXRJMThuRm9yTW9kZWwodHJhbnNsYXRlLCB0YWJsZS5tb2RlbCwgJ3RhYmxlLmVycm9yLnRpdGxlJywge2ZhbGxiYWNrS2V5OiAnZ2VuZXJhbC5lcnJvcicsIHBhcmFtc30pID8/IHVuZGVmaW5lZDtcbiAgICBjb25zdCB0YWJsZUVycm9yTWVzc2FnZSA9IGdldEkxOG5Gb3JNb2RlbCh0cmFuc2xhdGUsIHRhYmxlLm1vZGVsLCAndGFibGUuZXJyb3IubWVzc2FnZScsIHtmYWxsYmFja0tleTogJ2dlbmVyYWwuZXJyb3JNZXNzYWdlJywgcGFyYW1zfSkgPz8gdW5kZWZpbmVkO1xuICAgIHJldHVybiB0b2FzdE1lc3NhZ2UodGFibGVFcnJvck1lc3NhZ2UgPz8gZXJyb3IubWVzc2FnZSwgJ2Vycm9yJywge21lc3NhZ2VTZXJ2aWNlOiBtZXNzYWdlU2VydmljZSwgdGl0bGU6IHRhYmxlRXJyb3JUaXRsZSwgaWNvbjogJ3BpLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlJ30pO1xufVxuIl19
@@ -1,10 +0,0 @@
1
- /**
2
- * generates table layout preferences key used when saving preferences to localstorage
3
- * @param typeName string, required
4
- * @param url string, required
5
- * @param trackProperty string, not required
6
- */
7
- export function generateTableLayoutPrefsKey(typeName, url, trackProperty) {
8
- return `commonsTableLayoutPrefs~~${typeName}~~${trackProperty ?? url.split('?')[0].split('#')[0]}`;
9
- }
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtbGF5b3V0LXByZWZzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGFibGUvc3JjL2hlbHBlcnMvdGFibGUtbGF5b3V0LXByZWZzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLDJCQUEyQixDQUFDLFFBQWdCLEVBQUUsR0FBVyxFQUFFLGFBQXNCO0lBQzdGLE9BQU8sNEJBQTRCLFFBQVEsS0FBSyxhQUFhLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUN2RyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBnZW5lcmF0ZXMgdGFibGUgbGF5b3V0IHByZWZlcmVuY2VzIGtleSB1c2VkIHdoZW4gc2F2aW5nIHByZWZlcmVuY2VzIHRvIGxvY2Fsc3RvcmFnZVxuICogQHBhcmFtIHR5cGVOYW1lIHN0cmluZywgcmVxdWlyZWRcbiAqIEBwYXJhbSB1cmwgc3RyaW5nLCByZXF1aXJlZFxuICogQHBhcmFtIHRyYWNrUHJvcGVydHkgc3RyaW5nLCBub3QgcmVxdWlyZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlVGFibGVMYXlvdXRQcmVmc0tleSh0eXBlTmFtZTogc3RyaW5nLCB1cmw6IHN0cmluZywgdHJhY2tQcm9wZXJ0eT86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBjb21tb25zVGFibGVMYXlvdXRQcmVmc35+JHt0eXBlTmFtZX1+fiR7dHJhY2tQcm9wZXJ0eSA/PyB1cmwuc3BsaXQoJz8nKVswXS5zcGxpdCgnIycpWzBdfWA7XG59XG4iXX0=
@@ -1,24 +0,0 @@
1
- export function tableCreateFilterMeta(paramsWithDefaults) {
2
- const primeFilterMeta = {};
3
- // if any filter is present, no default filters should be applied!
4
- if (paramsWithDefaults?.filters) {
5
- Object.entries(paramsWithDefaults.filters).forEach(([key, value]) => {
6
- primeFilterMeta[key] = {
7
- value: value?.value,
8
- matchMode: value?.matchMode,
9
- caseSensitive: value?.caseSensitive
10
- };
11
- });
12
- }
13
- return primeFilterMeta;
14
- }
15
- export function tableCreateSortMeta(paramsWithDefaults) {
16
- if (paramsWithDefaults?.sort !== undefined && Array.isArray(paramsWithDefaults?.sort) && paramsWithDefaults?.sort.length > 0) {
17
- return paramsWithDefaults?.sort.map(s => ({
18
- field: s.property,
19
- order: s.ascending ? 1 : -1
20
- }));
21
- }
22
- return undefined;
23
- }
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90YWJsZS9zcmMvaGVscGVycy90YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLFVBQVUscUJBQXFCLENBQUMsa0JBQW1DO0lBQ3JFLE1BQU0sZUFBZSxHQUF5QyxFQUFFLENBQUM7SUFDakUsa0VBQWtFO0lBQ2xFLElBQUksa0JBQWtCLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDOUIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO1lBQ2hFLGVBQWUsQ0FBQyxHQUFHLENBQUMsR0FBRztnQkFDbkIsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO2dCQUNuQixTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVM7Z0JBQzNCLGFBQWEsRUFBRSxLQUFLLEVBQUUsYUFBYTthQUN0QyxDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0QsT0FBTyxlQUFlLENBQUM7QUFDM0IsQ0FBQztBQUVELE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxrQkFBbUM7SUFDbkUsSUFBSSxrQkFBa0IsRUFBRSxJQUFJLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLElBQUksa0JBQWtCLEVBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMzSCxPQUFPLGtCQUFrQixFQUFFLElBQUksQ0FBQyxHQUFHLENBQy9CLENBQUMsQ0FBQyxFQUFFLENBQ0EsQ0FBVTtZQUNOLEtBQUssRUFBRSxDQUFDLENBQUMsUUFBUTtZQUNqQixLQUFLLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDOUIsQ0FBQSxDQUNSLENBQUM7SUFDTixDQUFDO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDckIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U29ydE1ldGF9IGZyb20gJ3ByaW1lbmcvYXBpJztcblxuaW1wb3J0IHtDb21tb25zRmlsdGVyTWV0YWRhdGEsIERhdGFMaXN0UGFyYW1zfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuXG5leHBvcnQgZnVuY3Rpb24gdGFibGVDcmVhdGVGaWx0ZXJNZXRhKHBhcmFtc1dpdGhEZWZhdWx0cz86IERhdGFMaXN0UGFyYW1zKSB7XG4gICAgY29uc3QgcHJpbWVGaWx0ZXJNZXRhOiB7W3M6IHN0cmluZ106IENvbW1vbnNGaWx0ZXJNZXRhZGF0YX0gPSB7fTtcbiAgICAvLyBpZiBhbnkgZmlsdGVyIGlzIHByZXNlbnQsIG5vIGRlZmF1bHQgZmlsdGVycyBzaG91bGQgYmUgYXBwbGllZCFcbiAgICBpZiAocGFyYW1zV2l0aERlZmF1bHRzPy5maWx0ZXJzKSB7XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHBhcmFtc1dpdGhEZWZhdWx0cy5maWx0ZXJzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICAgIHByaW1lRmlsdGVyTWV0YVtrZXldID0ge1xuICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZT8udmFsdWUsXG4gICAgICAgICAgICAgICAgbWF0Y2hNb2RlOiB2YWx1ZT8ubWF0Y2hNb2RlLFxuICAgICAgICAgICAgICAgIGNhc2VTZW5zaXRpdmU6IHZhbHVlPy5jYXNlU2Vuc2l0aXZlXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHByaW1lRmlsdGVyTWV0YTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxlQ3JlYXRlU29ydE1ldGEocGFyYW1zV2l0aERlZmF1bHRzPzogRGF0YUxpc3RQYXJhbXMpOiBTb3J0TWV0YVtdIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAocGFyYW1zV2l0aERlZmF1bHRzPy5zb3J0ICE9PSB1bmRlZmluZWQgJiYgQXJyYXkuaXNBcnJheShwYXJhbXNXaXRoRGVmYXVsdHM/LnNvcnQpICYmIHBhcmFtc1dpdGhEZWZhdWx0cz8uc29ydC5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJldHVybiBwYXJhbXNXaXRoRGVmYXVsdHM/LnNvcnQubWFwKFxuICAgICAgICAgICAgcyA9PlxuICAgICAgICAgICAgICAgIDxTb3J0TWV0YT57XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkOiBzLnByb3BlcnR5LFxuICAgICAgICAgICAgICAgICAgICBvcmRlcjogcy5hc2NlbmRpbmcgPyAxIDogLTFcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cbiJdfQ==
@@ -1,24 +0,0 @@
1
- // components
2
- export * from './components/column-filter/column-filter.component';
3
- export * from './components/column-value/column-value.component';
4
- export * from './components/filter/filter-active-tag/filter-active-tag.component';
5
- export * from './components/filter/filter-form/filter-form.component';
6
- export * from './components/filter/filter-overlay-with-tag/filter-overlay-with-tag.component';
7
- export * from './components/table/table.component';
8
- // helpers
9
- export * from './helpers/filters';
10
- export * from './helpers/notification';
11
- export * from './helpers/table-layout-prefs';
12
- // models
13
- export * from './models/column-preferences.model';
14
- export * from './models/filter.model';
15
- // pipes
16
- export * from './pipes/filter-value.pipe';
17
- export * from './pipes/locale-default-row-class.pipe';
18
- export * from './pipes/table-column-filter-class.pipe';
19
- // services
20
- export * from './services/table-data.service';
21
- export * from './services/table-feature-config.token';
22
- // provide
23
- export * from './provide';
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90YWJsZS9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsYUFBYTtBQUNiLGNBQWMsb0RBQW9ELENBQUM7QUFDbkUsY0FBYyxrREFBa0QsQ0FBQztBQUNqRSxjQUFjLG1FQUFtRSxDQUFDO0FBQ2xGLGNBQWMsdURBQXVELENBQUM7QUFDdEUsY0FBYywrRUFBK0UsQ0FBQztBQUM5RixjQUFjLG9DQUFvQyxDQUFDO0FBRW5ELFVBQVU7QUFDVixjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyw4QkFBOEIsQ0FBQztBQUU3QyxTQUFTO0FBQ1QsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLHVCQUF1QixDQUFDO0FBRXRDLFFBQVE7QUFDUixjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyx3Q0FBd0MsQ0FBQztBQUV2RCxXQUFXO0FBQ1gsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLHVDQUF1QyxDQUFDO0FBRXRELFVBQVU7QUFDVixjQUFjLFdBQVcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGNvbXBvbmVudHNcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9jb2x1bW4tZmlsdGVyL2NvbHVtbi1maWx0ZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9jb2x1bW4tdmFsdWUvY29sdW1uLXZhbHVlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvZmlsdGVyL2ZpbHRlci1hY3RpdmUtdGFnL2ZpbHRlci1hY3RpdmUtdGFnLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvZmlsdGVyL2ZpbHRlci1mb3JtL2ZpbHRlci1mb3JtLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvZmlsdGVyL2ZpbHRlci1vdmVybGF5LXdpdGgtdGFnL2ZpbHRlci1vdmVybGF5LXdpdGgtdGFnLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvdGFibGUvdGFibGUuY29tcG9uZW50JztcblxuLy8gaGVscGVyc1xuZXhwb3J0ICogZnJvbSAnLi9oZWxwZXJzL2ZpbHRlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9oZWxwZXJzL25vdGlmaWNhdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2hlbHBlcnMvdGFibGUtbGF5b3V0LXByZWZzJztcblxuLy8gbW9kZWxzXG5leHBvcnQgKiBmcm9tICcuL21vZGVscy9jb2x1bW4tcHJlZmVyZW5jZXMubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMvZmlsdGVyLm1vZGVsJztcblxuLy8gcGlwZXNcbmV4cG9ydCAqIGZyb20gJy4vcGlwZXMvZmlsdGVyLXZhbHVlLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9waXBlcy9sb2NhbGUtZGVmYXVsdC1yb3ctY2xhc3MucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL3RhYmxlLWNvbHVtbi1maWx0ZXItY2xhc3MucGlwZSc7XG5cbi8vIHNlcnZpY2VzXG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL3RhYmxlLWRhdGEuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL3RhYmxlLWZlYXR1cmUtY29uZmlnLnRva2VuJztcblxuLy8gcHJvdmlkZVxuZXhwb3J0ICogZnJvbSAnLi9wcm92aWRlJztcbiJdfQ==
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './index';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaXVzaW5jLW1uZy1jb21tb25zLXRhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGFibGUvc3JjL21lZGl1c2luYy1tbmctY29tbW9ucy10YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXByZWZlcmVuY2VzLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGFibGUvc3JjL21vZGVscy9jb2x1bW4tcHJlZmVyZW5jZXMubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29sdW1uRGVzY3JpcHRvciwgU29ydERlc2NyaXB0b3J9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvdGFibGUvYXBpJztcblxuaW1wb3J0IHtGaWx0ZXJNZXRhZGF0YX0gZnJvbSAnLi9maWx0ZXIubW9kZWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbHVtbldpdGhQcmVmZXJlbmNlcyB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBkZXNjcmlwdG9yOiBDb2x1bW5EZXNjcmlwdG9yPGFueSwgYW55PjtcbiAgICBmaWx0ZXI/OiBGaWx0ZXJNZXRhZGF0YTtcbiAgICBzb3J0PzogU29ydERlc2NyaXB0b3I8YW55PjtcbiAgICBkaXNhYmxlZDogYm9vbGVhbjtcbiAgICBpc1Zpc2libGU6IGJvb2xlYW47XG4gICAgd2lkdGg/OiBudW1iZXI7XG4gICAgb3JkZXJJZHg/OiBudW1iZXI7XG59XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGFibGUvc3JjL21vZGVscy9maWx0ZXIubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U2VsZWN0SXRlbX0gZnJvbSAncHJpbWVuZy9hcGknO1xuXG5pbXBvcnQge0NvbW1vbnNGaWx0ZXJNZXRhZGF0YSwgRmlsdGVyTWF0Y2hNb2RlRXh0ZW5kZWRUeXBlfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtGaWx0ZXJEZXNjcmlwdG9yfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2ZpbHRlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyTWV0YWRhdGEge1xuICAgIGRlc2NyaXB0b3I6IEZpbHRlckRlc2NyaXB0b3I8YW55LCBhbnk+O1xuICAgIG1hdGNoTW9kZXM6IFNlbGVjdEl0ZW1bXTtcbiAgICBkZWZhdWx0TWF0Y2hNb2RlOiBGaWx0ZXJNYXRjaE1vZGVFeHRlbmRlZFR5cGU7XG4gICAgZGF0ZUNvbmZpZz86IEZpbHRlckRhdGVDb25maWc7XG4gICAgbnVtYmVyQ29uZmlnPzogRmlsdGVyTnVtYmVyQ29uZmlnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlclN0YXRlIGV4dGVuZHMgQ29tbW9uc0ZpbHRlck1ldGFkYXRhIHtcbiAgICBtZXRhZGF0YTogRmlsdGVyTWV0YWRhdGE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyRm9ybUVtaXRFdmVudCB7XG4gICAgcHJvcGVydHk6IHN0cmluZztcbiAgICBtYXRjaE1vZGU6IEZpbHRlck1hdGNoTW9kZUV4dGVuZGVkVHlwZTtcbiAgICB2YWx1ZT86IGFueSB8IG51bGwgfCBhbnlbXTtcbiAgICBjYXNlU2Vuc2l0aXZlOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlckFjdGl2ZVRhZ0V2ZW50IHtcbiAgICBmaWx0ZXI6IEZpbHRlclN0YXRlO1xuICAgIGV2ZW50PzogRXZlbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyRGF0ZUNvbmZpZyB7XG4gICAgdmFsdWVVdGM/OiBib29sZWFuO1xuICAgIHZhbHVlTm9UaW1lPzogYm9vbGVhbjtcbiAgICB2YWx1ZU5vVGltZXpvbmU/OiBib29sZWFuO1xuICAgIHZhbHVlTm9NaWxsaXM/OiBib29sZWFuO1xuICAgIGZvcm1hdD86IHN0cmluZztcbiAgICBzaG93VGltZT86IGJvb2xlYW47IC8vIGRhdGUsIGhvdXIgYW5kIG1pbnV0ZXNcbiAgICBzaG93U2Vjb25kcz86IGJvb2xlYW47IC8vIGRhdGUsIGhvdXIsIG1pbnV0ZXMgYW5kIHNlY29uZHNcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJOdW1iZXJDb25maWcge1xuICAgIGZyYWN0aW9uc01pbj86IG51bWJlcjtcbiAgICBmcmFjdGlvbnNNYXg/OiBudW1iZXI7XG59XG4iXX0=
@@ -1,77 +0,0 @@
1
- import { DatePipe, DecimalPipe } from '@angular/common';
2
- import { LOCALE_ID, Pipe, inject } from '@angular/core';
3
- import { TranslateService } from '@ngx-translate/core';
4
- import { ReplaySubject } from 'rxjs';
5
- import { BooleanPipe, EnumPipe } from '@mediusinc/mng-commons/core';
6
- import { FilterTypeEnum } from '@mediusinc/mng-commons/filter';
7
- import * as i0 from "@angular/core";
8
- export class FilterValuePipe {
9
- constructor() {
10
- this.locale = inject(LOCALE_ID);
11
- this.translate = inject(TranslateService);
12
- this.enumPipe = new EnumPipe();
13
- this.subject = new ReplaySubject(1);
14
- }
15
- transform(value, descriptor) {
16
- const valTransform = this.prepareValueTransform(value, descriptor);
17
- this.subscription?.unsubscribe();
18
- if (valTransform.translate) {
19
- this.subscription = this.translate.stream(valTransform.valueArr).subscribe(i18n => {
20
- this.subject.next(valTransform.valueArr.map(k => i18n[k]).join(', '));
21
- });
22
- }
23
- else {
24
- this.subject.next(valTransform.valueArr.join(', '));
25
- }
26
- return this.subject.asObservable();
27
- }
28
- /**
29
- * If returns a string, this represents i18n key that must go through translation. If translation is not needed, undefined is returned.
30
- */
31
- prepareValueTransform(value, descriptor) {
32
- const result = {
33
- translate: false,
34
- valueArr: Array.isArray(value) ? value : [value]
35
- };
36
- switch (descriptor?.filterType) {
37
- case FilterTypeEnum.Date:
38
- // eslint-disable-next-line no-case-declarations
39
- const datePipe = new DatePipe(this.locale);
40
- result.valueArr = result.valueArr.map(v => datePipe.transform(v, descriptor.displayFormat, descriptor.locale));
41
- break;
42
- case FilterTypeEnum.Number:
43
- // eslint-disable-next-line no-case-declarations
44
- const decimalPipe = new DecimalPipe(this.locale);
45
- result.valueArr = result.valueArr.map(v => decimalPipe.transform(v, descriptor.displayFormat, descriptor.locale));
46
- break;
47
- case FilterTypeEnum.Boolean:
48
- // eslint-disable-next-line no-case-declarations
49
- const booleanPipe = new BooleanPipe();
50
- result.valueArr = result.valueArr.map(v => booleanPipe.transform(v));
51
- result.translate = true;
52
- break;
53
- case FilterTypeEnum.LookupEnum:
54
- // eslint-disable-next-line no-case-declarations
55
- const enumPipe = new EnumPipe();
56
- result.valueArr = result.valueArr.map(v => enumPipe.transform(v, descriptor.enum));
57
- result.translate = true;
58
- break;
59
- }
60
- return result;
61
- }
62
- ngOnDestroy() {
63
- this.subscription?.unsubscribe();
64
- this.subject.complete();
65
- }
66
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: FilterValuePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
67
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.12", ngImport: i0, type: FilterValuePipe, isStandalone: true, name: "mngFilterValue" }); }
68
- }
69
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: FilterValuePipe, decorators: [{
70
- type: Pipe,
71
- args: [{
72
- name: 'mngFilterValue',
73
- standalone: true,
74
- pure: true
75
- }]
76
- }] });
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXZhbHVlLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90YWJsZS9zcmMvcGlwZXMvZmlsdGVyLXZhbHVlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsU0FBUyxFQUFhLElBQUksRUFBaUIsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRWhGLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBYSxhQUFhLEVBQWUsTUFBTSxNQUFNLENBQUM7QUFFN0QsT0FBTyxFQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUNsRSxPQUFPLEVBQStDLGNBQWMsRUFBQyxNQUFNLCtCQUErQixDQUFDOztBQU8zRyxNQUFNLE9BQU8sZUFBZTtJQUw1QjtRQU1xQixXQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzNCLGNBQVMsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNyQyxhQUFRLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUczQyxZQUFPLEdBQUcsSUFBSSxhQUFhLENBQU0sQ0FBQyxDQUFDLENBQUM7S0F5RHZDO0lBdkRHLFNBQVMsQ0FBQyxLQUFjLEVBQUUsVUFBdUM7UUFDN0QsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztRQUVuRSxJQUFJLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQ2pDLElBQUksWUFBWSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFD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QUFlOzZHQUFmLGVBQWU7OzRGQUFmLGVBQWU7a0JBTDNCLElBQUk7bUJBQUM7b0JBQ0YsSUFBSSxFQUFFLGdCQUFnQjtvQkFDdEIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLElBQUksRUFBRSxJQUFJO2lCQUNiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEYXRlUGlwZSwgRGVjaW1hbFBpcGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0xPQ0FMRV9JRCwgT25EZXN0cm95LCBQaXBlLCBQaXBlVHJhbnNmb3JtLCBpbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge0Jvb2xlYW5QaXBlLCBFbnVtUGlwZX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcbmltcG9ydCB7RmlsdGVyRGVzY3JpcHRvciwgRmlsdGVyTG9va3VwRW51bURlc2NyaXB0b3IsIEZpbHRlclR5cGVFbnVtfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2ZpbHRlcic7XG5cbkBQaXBlKHtcbiAgICBuYW1lOiAnbW5nRmlsdGVyVmFsdWUnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgcHVyZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBGaWx0ZXJWYWx1ZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtLCBPbkRlc3Ryb3kge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9jYWxlID0gaW5qZWN0KExPQ0FMRV9JRCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGUgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBlbnVtUGlwZSA9IG5ldyBFbnVtUGlwZSgpO1xuXG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG4gICAgc3ViamVjdCA9IG5ldyBSZXBsYXlTdWJqZWN0PGFueT4oMSk7XG5cbiAgICB0cmFuc2Zvcm0odmFsdWU6IHVua25vd24sIGRlc2NyaXB0b3I/OiBGaWx0ZXJEZXNjcmlwdG9yPGFueSwgYW55Pik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIGNvbnN0IHZhbFRyYW5zZm9ybSA9IHRoaXMucHJlcGFyZVZhbHVlVHJhbnNmb3JtKHZhbHVlLCBkZXNjcmlwdG9yKTtcblxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgaWYgKHZhbFRyYW5zZm9ybS50cmFuc2xhdGUpIHtcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy50cmFuc2xhdGUuc3RyZWFtKHZhbFRyYW5zZm9ybS52YWx1ZUFycikuc3Vic2NyaWJlKGkxOG4gPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc3ViamVjdC5uZXh0KHZhbFRyYW5zZm9ybS52YWx1ZUFyci5tYXAoayA9PiBpMThuW2tdKS5qb2luKCcsICcpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdWJqZWN0Lm5leHQodmFsVHJhbnNmb3JtLnZhbHVlQXJyLmpvaW4oJywgJykpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuc3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJZiByZXR1cm5zIGEgc3RyaW5nLCB0aGlzIHJlcHJlc2VudHMgaTE4biBrZXkgdGhhdCBtdXN0IGdvIHRocm91Z2ggdHJhbnNsYXRpb24uIElmIHRyYW5zbGF0aW9uIGlzIG5vdCBuZWVkZWQsIHVuZGVmaW5lZCBpcyByZXR1cm5lZC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHByZXBhcmVWYWx1ZVRyYW5zZm9ybSh2YWx1ZTogdW5rbm93biwgZGVzY3JpcHRvcj86IEZpbHRlckRlc2NyaXB0b3I8YW55LCBhbnk+KToge3RyYW5zbGF0ZTogYm9vbGVhbjsgdmFsdWVBcnI6IGFueVtdfSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAgICAgICAgIHRyYW5zbGF0ZTogZmFsc2UsXG4gICAgICAgICAgICB2YWx1ZUFycjogQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV1cbiAgICAgICAgfTtcbiAgICAgICAgc3dpdGNoIChkZXNjcmlwdG9yPy5maWx0ZXJUeXBlKSB7XG4gICAgICAgICAgICBjYXNlIEZpbHRlclR5cGVFbnVtLkRhdGU6XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNhc2UtZGVjbGFyYXRpb25zXG4gICAgICAgICAgICAgICAgY29uc3QgZGF0ZVBpcGUgPSBuZXcgRGF0ZVBpcGUodGhpcy5sb2NhbGUpO1xuICAgICAgICAgICAgICAgIHJlc3VsdC52YWx1ZUFyciA9IHJlc3VsdC52YWx1ZUFyci5tYXAodiA9PiBkYXRlUGlwZS50cmFuc2Zvcm0odiBhcyBEYXRlLCBkZXNjcmlwdG9yLmRpc3BsYXlGb3JtYXQsIGRlc2NyaXB0b3IubG9jYWxlKSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEZpbHRlclR5cGVFbnVtLk51bWJlcjpcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY2FzZS1kZWNsYXJhdGlvbnNcbiAgICAgICAgICAgICAgICBjb25zdCBkZWNpbWFsUGlwZSA9IG5ldyBEZWNpbWFsUGlwZSh0aGlzLmxvY2FsZSk7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnZhbHVlQXJyID0gcmVzdWx0LnZhbHVlQXJyLm1hcCh2ID0+IGRlY2ltYWxQaXBlLnRyYW5zZm9ybSh2IGFzIG51bWJlciwgZGVzY3JpcHRvci5kaXNwbGF5Rm9ybWF0LCBkZXNjcmlwdG9yLmxvY2FsZSkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBGaWx0ZXJUeXBlRW51bS5Cb29sZWFuOlxuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jYXNlLWRlY2xhcmF0aW9uc1xuICAgICAgICAgICAgICAgIGNvbnN0IGJvb2xlYW5QaXBlID0gbmV3IEJvb2xlYW5QaXBlKCk7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnZhbHVlQXJyID0gcmVzdWx0LnZhbHVlQXJyLm1hcCh2ID0+IGJvb2xlYW5QaXBlLnRyYW5zZm9ybSh2KSk7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnRyYW5zbGF0ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEZpbHRlclR5cGVFbnVtLkxvb2t1cEVudW06XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNhc2UtZGVjbGFyYXRpb25zXG4gICAgICAgICAgICAgICAgY29uc3QgZW51bVBpcGUgPSBuZXcgRW51bVBpcGUoKTtcbiAgICAgICAgICAgICAgICByZXN1bHQudmFsdWVBcnIgPSByZXN1bHQudmFsdWVBcnIubWFwKHYgPT4gZW51bVBpcGUudHJhbnNmb3JtKHYsIChkZXNjcmlwdG9yIGFzIEZpbHRlckxvb2t1cEVudW1EZXNjcmlwdG9yPGFueSwgYW55PikuZW51bSkpO1xuICAgICAgICAgICAgICAgIHJlc3VsdC50cmFuc2xhdGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuc3ViamVjdC5jb21wbGV0ZSgpO1xuICAgIH1cbn1cbiJdfQ==