@recursyve/nice-data-filter-kit 18.0.3 → 20.0.0

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 (256) hide show
  1. package/_index.scss +1 -1
  2. package/fesm2022/recursyve-nice-data-filter-kit.mjs +388 -326
  3. package/fesm2022/recursyve-nice-data-filter-kit.mjs.map +1 -1
  4. package/index.d.ts +1681 -5
  5. package/package.json +9 -11
  6. package/src/lib/components/base-list/base-list.theme.scss +10 -9
  7. package/src/lib/components/nice-filter-view/components/advanced-filters/advanced-filters.theme.scss +4 -4
  8. package/src/lib/components/nice-filter-view/components/advanced-filters/rule/rule.theme.scss +6 -5
  9. package/src/lib/components/query-builder/query-builder.theme.scss +9 -8
  10. package/src/lib/components/query-builder/rule/rule.theme.scss +8 -7
  11. package/src/lib/nice-data-filter.theme.scss +6 -6
  12. package/esm2022/lib/api/dto/saved-reports.dto.mjs +0 -2
  13. package/esm2022/lib/api/filter.api.mjs +0 -113
  14. package/esm2022/lib/api/models/saved-reports.model.mjs +0 -2
  15. package/esm2022/lib/api/public-api.mjs +0 -2
  16. package/esm2022/lib/api/saved-report.api.mjs +0 -48
  17. package/esm2022/lib/components/base-list/base-list.component.mjs +0 -338
  18. package/esm2022/lib/components/base-list/base-list.constant.mjs +0 -11
  19. package/esm2022/lib/components/base-list/base-list.module.mjs +0 -185
  20. package/esm2022/lib/components/base-list/directives/base-list-buttons.directive.mjs +0 -17
  21. package/esm2022/lib/components/base-list/directives/base-list-cards.directive.mjs +0 -14
  22. package/esm2022/lib/components/base-list/directives/base-list-custom-content.directive.mjs +0 -14
  23. package/esm2022/lib/components/base-list/directives/base-list-directives.module.mjs +0 -55
  24. package/esm2022/lib/components/base-list/directives/base-list-empty-search-result-state.directive.mjs +0 -14
  25. package/esm2022/lib/components/base-list/directives/base-list-empty-state.directive.mjs +0 -14
  26. package/esm2022/lib/components/base-list/directives/base-list-filters.directive.mjs +0 -14
  27. package/esm2022/lib/components/base-list/directives/base-list-table.directive.mjs +0 -17
  28. package/esm2022/lib/components/base-list/directives/base-list-title.directive.mjs +0 -14
  29. package/esm2022/lib/components/base-list/models/columns.model.mjs +0 -8
  30. package/esm2022/lib/components/base-list/models/export.model.mjs +0 -2
  31. package/esm2022/lib/components/base-list/models/icons.model.mjs +0 -18
  32. package/esm2022/lib/components/base-list/models/layout.model.mjs +0 -149
  33. package/esm2022/lib/components/base-list/providers/base-filter.service.mjs +0 -36
  34. package/esm2022/lib/components/base-list/providers/base-list-saved-report.service.mjs +0 -33
  35. package/esm2022/lib/components/base-list/public-api.mjs +0 -19
  36. package/esm2022/lib/components/base-list/store/base-list.query.mjs +0 -51
  37. package/esm2022/lib/components/base-list/store/base-list.service.mjs +0 -375
  38. package/esm2022/lib/components/base-list/store/base-list.store.mjs +0 -88
  39. package/esm2022/lib/components/multi-state-list/models/list-states.model.mjs +0 -3
  40. package/esm2022/lib/components/multi-state-list/multi-state-list.component.mjs +0 -73
  41. package/esm2022/lib/components/multi-state-list/multi-state-list.constant.mjs +0 -3
  42. package/esm2022/lib/components/multi-state-list/multi-state-list.module.mjs +0 -140
  43. package/esm2022/lib/components/multi-state-list/providers/multi-state-filter.service.mjs +0 -11
  44. package/esm2022/lib/components/multi-state-list/public-api.mjs +0 -8
  45. package/esm2022/lib/components/multi-state-list/store/multi-state-list.query.mjs +0 -17
  46. package/esm2022/lib/components/multi-state-list/store/multi-state-list.service.mjs +0 -48
  47. package/esm2022/lib/components/multi-state-list/store/multi-state-list.store.mjs +0 -24
  48. package/esm2022/lib/components/nice-filter-view/components/advanced-filters/advanced-filters-trigger.directive.mjs +0 -83
  49. package/esm2022/lib/components/nice-filter-view/components/advanced-filters/advanced-filters.component.mjs +0 -120
  50. package/esm2022/lib/components/nice-filter-view/components/advanced-filters/advanced-filters.constant.mjs +0 -4
  51. package/esm2022/lib/components/nice-filter-view/components/advanced-filters/advanced-filters.form.mjs +0 -121
  52. package/esm2022/lib/components/nice-filter-view/components/advanced-filters/advanced-filters.module.mjs +0 -152
  53. package/esm2022/lib/components/nice-filter-view/components/advanced-filters/button/advanced-filters-button.component.mjs +0 -43
  54. package/esm2022/lib/components/nice-filter-view/components/advanced-filters/filter-selection/filter-selection.component.mjs +0 -49
  55. package/esm2022/lib/components/nice-filter-view/components/advanced-filters/models/advanced-date-filter-options.model.mjs +0 -2
  56. package/esm2022/lib/components/nice-filter-view/components/advanced-filters/models/icons.model.mjs +0 -24
  57. package/esm2022/lib/components/nice-filter-view/components/advanced-filters/providers/async-typeahead.provider.mjs +0 -41
  58. package/esm2022/lib/components/nice-filter-view/components/advanced-filters/public-api.mjs +0 -10
  59. package/esm2022/lib/components/nice-filter-view/components/advanced-filters/rule/components/date/date-filter.component.mjs +0 -52
  60. package/esm2022/lib/components/nice-filter-view/components/advanced-filters/rule/components/filter.component.mjs +0 -29
  61. package/esm2022/lib/components/nice-filter-view/components/advanced-filters/rule/components/number/number-filter.component.mjs +0 -28
  62. package/esm2022/lib/components/nice-filter-view/components/advanced-filters/rule/components/options/options-filter.component.mjs +0 -33
  63. package/esm2022/lib/components/nice-filter-view/components/advanced-filters/rule/components/radio/radio-filter.component.mjs +0 -30
  64. package/esm2022/lib/components/nice-filter-view/components/advanced-filters/rule/components/select/select-filter.component.mjs +0 -60
  65. package/esm2022/lib/components/nice-filter-view/components/advanced-filters/rule/components/text/text-filter.component.mjs +0 -31
  66. package/esm2022/lib/components/nice-filter-view/components/advanced-filters/rule/rule.component.mjs +0 -72
  67. package/esm2022/lib/components/nice-filter-view/components/advanced-filters/utils/advanced-filters.utils.mjs +0 -80
  68. package/esm2022/lib/components/nice-filter-view/components/common/data.directive.mjs +0 -14
  69. package/esm2022/lib/components/nice-filter-view/components/custom-data-view/custom-data-view.component.mjs +0 -22
  70. package/esm2022/lib/components/nice-filter-view/components/export-buttons/export-buttons.component.mjs +0 -115
  71. package/esm2022/lib/components/nice-filter-view/components/export-buttons/export.directive.mjs +0 -27
  72. package/esm2022/lib/components/nice-filter-view/components/infinite-scroll-data-view/infinite-scroll-data-view.component.mjs +0 -39
  73. package/esm2022/lib/components/nice-filter-view/components/search/search.component.mjs +0 -60
  74. package/esm2022/lib/components/nice-filter-view/directives/mat-paginator.mjs +0 -42
  75. package/esm2022/lib/components/nice-filter-view/directives/mat-sort.mjs +0 -52
  76. package/esm2022/lib/components/nice-filter-view/directives/mat-tables.mjs +0 -22
  77. package/esm2022/lib/components/nice-filter-view/directives/query-params.directive.mjs +0 -94
  78. package/esm2022/lib/components/nice-filter-view/models/order-options.model.mjs +0 -2
  79. package/esm2022/lib/components/nice-filter-view/nice-base-filter-view.component.mjs +0 -181
  80. package/esm2022/lib/components/nice-filter-view/nice-filter-view.component.mjs +0 -34
  81. package/esm2022/lib/components/nice-filter-view/nice-filter-view.constant.mjs +0 -6
  82. package/esm2022/lib/components/nice-filter-view/nice-filter-view.module.mjs +0 -147
  83. package/esm2022/lib/components/nice-filter-view/nice-nested-filter-view.mjs +0 -46
  84. package/esm2022/lib/components/nice-filter-view/pipes/filter-group-icon.pipe.mjs +0 -32
  85. package/esm2022/lib/components/nice-filter-view/public-api.mjs +0 -18
  86. package/esm2022/lib/components/nice-filter-view/store/nice-filter-view.query.mjs +0 -41
  87. package/esm2022/lib/components/nice-filter-view/store/nice-filter-view.service.mjs +0 -290
  88. package/esm2022/lib/components/nice-filter-view/store/nice-filter-view.store.mjs +0 -236
  89. package/esm2022/lib/components/public-api.mjs +0 -5
  90. package/esm2022/lib/components/query-builder/filter-selection/filter-selection.component.mjs +0 -42
  91. package/esm2022/lib/components/query-builder/models/icons.model.mjs +0 -18
  92. package/esm2022/lib/components/query-builder/pipes/filter-group-icon.pipe.mjs +0 -32
  93. package/esm2022/lib/components/query-builder/providers/filter-group.service.mjs +0 -3
  94. package/esm2022/lib/components/query-builder/public-api.mjs +0 -15
  95. package/esm2022/lib/components/query-builder/query-builder-trigger.directive.mjs +0 -79
  96. package/esm2022/lib/components/query-builder/query-builder.component.mjs +0 -100
  97. package/esm2022/lib/components/query-builder/query-builder.constant.mjs +0 -3
  98. package/esm2022/lib/components/query-builder/query-builder.form.mjs +0 -79
  99. package/esm2022/lib/components/query-builder/query-builder.module.mjs +0 -128
  100. package/esm2022/lib/components/query-builder/rule/components/date/date-filter.component.mjs +0 -40
  101. package/esm2022/lib/components/query-builder/rule/components/filter.component.mjs +0 -29
  102. package/esm2022/lib/components/query-builder/rule/components/number/number-filter.component.mjs +0 -28
  103. package/esm2022/lib/components/query-builder/rule/components/radio/radio-filter.component.mjs +0 -30
  104. package/esm2022/lib/components/query-builder/rule/components/select/select-filter.component.mjs +0 -87
  105. package/esm2022/lib/components/query-builder/rule/components/text/text-filter.component.mjs +0 -31
  106. package/esm2022/lib/components/query-builder/rule/rule.component.mjs +0 -85
  107. package/esm2022/lib/components/query-builder/utils/qb-filter.utils.mjs +0 -90
  108. package/esm2022/lib/directive/public-api.mjs +0 -2
  109. package/esm2022/lib/directive/selectable-list/model/load-all-entities-options.model.mjs +0 -2
  110. package/esm2022/lib/directive/selectable-list/model/selectable-list-options.model.mjs +0 -2
  111. package/esm2022/lib/directive/selectable-list/providers/preload-selected-entities.provider.mjs +0 -10
  112. package/esm2022/lib/directive/selectable-list/providers/selectable-list-content.service.mjs +0 -37
  113. package/esm2022/lib/directive/selectable-list/public-api.mjs +0 -12
  114. package/esm2022/lib/directive/selectable-list/selectable-list-checkbox.directive.mjs +0 -164
  115. package/esm2022/lib/directive/selectable-list/selectable-list-select-all.directive.mjs +0 -48
  116. package/esm2022/lib/directive/selectable-list/selectable-list-state.directive.mjs +0 -50
  117. package/esm2022/lib/directive/selectable-list/selectable-list.constant.mjs +0 -3
  118. package/esm2022/lib/directive/selectable-list/selectable-list.directive.mjs +0 -95
  119. package/esm2022/lib/directive/selectable-list/selectable-list.module.mjs +0 -31
  120. package/esm2022/lib/directive/selectable-list/store/selectable-list-state.query.mjs +0 -32
  121. package/esm2022/lib/directive/selectable-list/store/selectable-list-state.service.mjs +0 -220
  122. package/esm2022/lib/directive/selectable-list/store/selectable-list.service.mjs +0 -59
  123. package/esm2022/lib/directive/selectable-list/store/selectable-list.state.mjs +0 -2
  124. package/esm2022/lib/models/filter.model.mjs +0 -10
  125. package/esm2022/lib/models/public-api.mjs +0 -3
  126. package/esm2022/lib/models/query.model.mjs +0 -25
  127. package/esm2022/lib/utils/date.adapter.mjs +0 -34
  128. package/esm2022/lib/utils/filter.utils.mjs +0 -42
  129. package/esm2022/lib/utils/order.utils.mjs +0 -28
  130. package/esm2022/lib/utils/public-api.mjs +0 -5
  131. package/esm2022/lib/utils/query-params.utils.mjs +0 -70
  132. package/esm2022/lib/utils/string.utils.mjs +0 -9
  133. package/esm2022/public-api.mjs +0 -9
  134. package/esm2022/recursyve-nice-data-filter-kit.mjs +0 -5
  135. package/lib/api/dto/saved-reports.dto.d.ts +0 -6
  136. package/lib/api/filter.api.d.ts +0 -59
  137. package/lib/api/models/saved-reports.model.d.ts +0 -5
  138. package/lib/api/public-api.d.ts +0 -1
  139. package/lib/api/saved-report.api.d.ts +0 -20
  140. package/lib/components/base-list/base-list.component.d.ts +0 -109
  141. package/lib/components/base-list/base-list.constant.d.ts +0 -10
  142. package/lib/components/base-list/base-list.module.d.ts +0 -59
  143. package/lib/components/base-list/directives/base-list-buttons.directive.d.ts +0 -9
  144. package/lib/components/base-list/directives/base-list-cards.directive.d.ts +0 -8
  145. package/lib/components/base-list/directives/base-list-custom-content.directive.d.ts +0 -8
  146. package/lib/components/base-list/directives/base-list-directives.module.d.ts +0 -14
  147. package/lib/components/base-list/directives/base-list-empty-search-result-state.directive.d.ts +0 -8
  148. package/lib/components/base-list/directives/base-list-empty-state.directive.d.ts +0 -8
  149. package/lib/components/base-list/directives/base-list-filters.directive.d.ts +0 -8
  150. package/lib/components/base-list/directives/base-list-table.directive.d.ts +0 -9
  151. package/lib/components/base-list/directives/base-list-title.directive.d.ts +0 -8
  152. package/lib/components/base-list/models/columns.model.d.ts +0 -10
  153. package/lib/components/base-list/models/export.model.d.ts +0 -5
  154. package/lib/components/base-list/models/icons.model.d.ts +0 -19
  155. package/lib/components/base-list/models/layout.model.d.ts +0 -26
  156. package/lib/components/base-list/providers/base-filter.service.d.ts +0 -23
  157. package/lib/components/base-list/providers/base-list-saved-report.service.d.ts +0 -17
  158. package/lib/components/base-list/public-api.d.ts +0 -18
  159. package/lib/components/base-list/store/base-list.query.d.ts +0 -19
  160. package/lib/components/base-list/store/base-list.service.d.ts +0 -57
  161. package/lib/components/base-list/store/base-list.store.d.ts +0 -26
  162. package/lib/components/multi-state-list/models/list-states.model.d.ts +0 -10
  163. package/lib/components/multi-state-list/multi-state-list.component.d.ts +0 -18
  164. package/lib/components/multi-state-list/multi-state-list.constant.d.ts +0 -2
  165. package/lib/components/multi-state-list/multi-state-list.module.d.ts +0 -44
  166. package/lib/components/multi-state-list/providers/multi-state-filter.service.d.ts +0 -11
  167. package/lib/components/multi-state-list/public-api.d.ts +0 -7
  168. package/lib/components/multi-state-list/store/multi-state-list.query.d.ts +0 -9
  169. package/lib/components/multi-state-list/store/multi-state-list.service.d.ts +0 -19
  170. package/lib/components/multi-state-list/store/multi-state-list.store.d.ts +0 -10
  171. package/lib/components/nice-filter-view/components/advanced-filters/advanced-filters-trigger.directive.d.ts +0 -27
  172. package/lib/components/nice-filter-view/components/advanced-filters/advanced-filters.component.d.ts +0 -31
  173. package/lib/components/nice-filter-view/components/advanced-filters/advanced-filters.constant.d.ts +0 -3
  174. package/lib/components/nice-filter-view/components/advanced-filters/advanced-filters.form.d.ts +0 -19
  175. package/lib/components/nice-filter-view/components/advanced-filters/advanced-filters.module.d.ts +0 -44
  176. package/lib/components/nice-filter-view/components/advanced-filters/button/advanced-filters-button.component.d.ts +0 -17
  177. package/lib/components/nice-filter-view/components/advanced-filters/filter-selection/filter-selection.component.d.ts +0 -16
  178. package/lib/components/nice-filter-view/components/advanced-filters/models/advanced-date-filter-options.model.d.ts +0 -3
  179. package/lib/components/nice-filter-view/components/advanced-filters/models/icons.model.d.ts +0 -11
  180. package/lib/components/nice-filter-view/components/advanced-filters/providers/async-typeahead.provider.d.ts +0 -20
  181. package/lib/components/nice-filter-view/components/advanced-filters/public-api.d.ts +0 -9
  182. package/lib/components/nice-filter-view/components/advanced-filters/rule/components/date/date-filter.component.d.ts +0 -13
  183. package/lib/components/nice-filter-view/components/advanced-filters/rule/components/filter.component.d.ts +0 -13
  184. package/lib/components/nice-filter-view/components/advanced-filters/rule/components/number/number-filter.component.d.ts +0 -6
  185. package/lib/components/nice-filter-view/components/advanced-filters/rule/components/options/options-filter.component.d.ts +0 -8
  186. package/lib/components/nice-filter-view/components/advanced-filters/rule/components/radio/radio-filter.component.d.ts +0 -8
  187. package/lib/components/nice-filter-view/components/advanced-filters/rule/components/select/select-filter.component.d.ts +0 -18
  188. package/lib/components/nice-filter-view/components/advanced-filters/rule/components/text/text-filter.component.d.ts +0 -8
  189. package/lib/components/nice-filter-view/components/advanced-filters/rule/rule.component.d.ts +0 -26
  190. package/lib/components/nice-filter-view/components/advanced-filters/utils/advanced-filters.utils.d.ts +0 -11
  191. package/lib/components/nice-filter-view/components/common/data.directive.d.ts +0 -8
  192. package/lib/components/nice-filter-view/components/custom-data-view/custom-data-view.component.d.ts +0 -11
  193. package/lib/components/nice-filter-view/components/export-buttons/export-buttons.component.d.ts +0 -29
  194. package/lib/components/nice-filter-view/components/export-buttons/export.directive.d.ts +0 -11
  195. package/lib/components/nice-filter-view/components/infinite-scroll-data-view/infinite-scroll-data-view.component.d.ts +0 -15
  196. package/lib/components/nice-filter-view/components/search/search.component.d.ts +0 -20
  197. package/lib/components/nice-filter-view/directives/mat-paginator.d.ts +0 -12
  198. package/lib/components/nice-filter-view/directives/mat-sort.d.ts +0 -11
  199. package/lib/components/nice-filter-view/directives/mat-tables.d.ts +0 -12
  200. package/lib/components/nice-filter-view/directives/query-params.directive.d.ts +0 -23
  201. package/lib/components/nice-filter-view/models/order-options.model.d.ts +0 -7
  202. package/lib/components/nice-filter-view/nice-base-filter-view.component.d.ts +0 -84
  203. package/lib/components/nice-filter-view/nice-filter-view.component.d.ts +0 -12
  204. package/lib/components/nice-filter-view/nice-filter-view.constant.d.ts +0 -5
  205. package/lib/components/nice-filter-view/nice-filter-view.module.d.ts +0 -42
  206. package/lib/components/nice-filter-view/nice-nested-filter-view.d.ts +0 -23
  207. package/lib/components/nice-filter-view/pipes/filter-group-icon.pipe.d.ts +0 -11
  208. package/lib/components/nice-filter-view/public-api.d.ts +0 -17
  209. package/lib/components/nice-filter-view/store/nice-filter-view.query.d.ts +0 -20
  210. package/lib/components/nice-filter-view/store/nice-filter-view.service.d.ts +0 -47
  211. package/lib/components/nice-filter-view/store/nice-filter-view.store.d.ts +0 -41
  212. package/lib/components/public-api.d.ts +0 -4
  213. package/lib/components/query-builder/filter-selection/filter-selection.component.d.ts +0 -12
  214. package/lib/components/query-builder/models/icons.model.d.ts +0 -9
  215. package/lib/components/query-builder/pipes/filter-group-icon.pipe.d.ts +0 -11
  216. package/lib/components/query-builder/providers/filter-group.service.d.ts +0 -4
  217. package/lib/components/query-builder/public-api.d.ts +0 -14
  218. package/lib/components/query-builder/query-builder-trigger.directive.d.ts +0 -25
  219. package/lib/components/query-builder/query-builder.component.d.ts +0 -33
  220. package/lib/components/query-builder/query-builder.constant.d.ts +0 -2
  221. package/lib/components/query-builder/query-builder.form.d.ts +0 -18
  222. package/lib/components/query-builder/query-builder.module.d.ts +0 -37
  223. package/lib/components/query-builder/rule/components/date/date-filter.component.d.ts +0 -9
  224. package/lib/components/query-builder/rule/components/filter.component.d.ts +0 -13
  225. package/lib/components/query-builder/rule/components/number/number-filter.component.d.ts +0 -6
  226. package/lib/components/query-builder/rule/components/radio/radio-filter.component.d.ts +0 -8
  227. package/lib/components/query-builder/rule/components/select/select-filter.component.d.ts +0 -22
  228. package/lib/components/query-builder/rule/components/text/text-filter.component.d.ts +0 -8
  229. package/lib/components/query-builder/rule/rule.component.d.ts +0 -29
  230. package/lib/components/query-builder/utils/qb-filter.utils.d.ts +0 -12
  231. package/lib/directive/public-api.d.ts +0 -1
  232. package/lib/directive/selectable-list/model/load-all-entities-options.model.d.ts +0 -4
  233. package/lib/directive/selectable-list/model/selectable-list-options.model.d.ts +0 -7
  234. package/lib/directive/selectable-list/providers/preload-selected-entities.provider.d.ts +0 -12
  235. package/lib/directive/selectable-list/providers/selectable-list-content.service.d.ts +0 -18
  236. package/lib/directive/selectable-list/public-api.d.ts +0 -11
  237. package/lib/directive/selectable-list/selectable-list-checkbox.directive.d.ts +0 -27
  238. package/lib/directive/selectable-list/selectable-list-select-all.directive.d.ts +0 -18
  239. package/lib/directive/selectable-list/selectable-list-state.directive.d.ts +0 -24
  240. package/lib/directive/selectable-list/selectable-list.constant.d.ts +0 -2
  241. package/lib/directive/selectable-list/selectable-list.directive.d.ts +0 -27
  242. package/lib/directive/selectable-list/selectable-list.module.d.ts +0 -13
  243. package/lib/directive/selectable-list/store/selectable-list-state.query.d.ts +0 -10
  244. package/lib/directive/selectable-list/store/selectable-list-state.service.d.ts +0 -44
  245. package/lib/directive/selectable-list/store/selectable-list.service.d.ts +0 -27
  246. package/lib/directive/selectable-list/store/selectable-list.state.d.ts +0 -10
  247. package/lib/models/filter.model.d.ts +0 -79
  248. package/lib/models/public-api.d.ts +0 -2
  249. package/lib/models/query.model.d.ts +0 -41
  250. package/lib/utils/date.adapter.d.ts +0 -13
  251. package/lib/utils/filter.utils.d.ts +0 -5
  252. package/lib/utils/order.utils.d.ts +0 -7
  253. package/lib/utils/public-api.d.ts +0 -4
  254. package/lib/utils/query-params.utils.d.ts +0 -13
  255. package/lib/utils/string.utils.d.ts +0 -12
  256. package/public-api.d.ts +0 -5
@@ -1,36 +0,0 @@
1
- import { Inject, Injectable } from "@angular/core";
2
- import { NiceFilterApi } from "../../../api/filter.api";
3
- import { FilterUtils } from "../../../utils/filter.utils";
4
- import * as i0 from "@angular/core";
5
- export class NiceFilterService {
6
- constructor(api) {
7
- this.api = api;
8
- }
9
- filter(params, option = {}) {
10
- return this.api?.filter(FilterUtils.parametersToRequest(params), option);
11
- }
12
- getFile(type, parameters) {
13
- return this.api?.downloadData(type, FilterUtils.parametersToRequest(parameters));
14
- }
15
- getPrintableHtml(parameters) {
16
- return this.api?.getPrintableHtml(FilterUtils.parametersToRequest(parameters));
17
- }
18
- getFilterConfig(option = {}) {
19
- return this.api?.getFilterConfig(option);
20
- }
21
- searchFilterValue(filterConfig, value, options) {
22
- return this.api?.searchFilterValue(filterConfig.id, value, options);
23
- }
24
- searchFilterResourceValue(filterConfig, resourceId, options) {
25
- return this.api?.searchFilterResourceValue(filterConfig.id, resourceId, options);
26
- }
27
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NiceFilterService, deps: [{ token: NiceFilterApi }], target: i0.ɵɵFactoryTarget.Injectable }); }
28
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NiceFilterService }); }
29
- }
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NiceFilterService, decorators: [{
31
- type: Injectable
32
- }], ctorParameters: () => [{ type: undefined, decorators: [{
33
- type: Inject,
34
- args: [NiceFilterApi]
35
- }] }] });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1maWx0ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pY2UtZGF0YS1maWx0ZXIta2l0L3NyYy9saWIvY29tcG9uZW50cy9iYXNlLWxpc3QvcHJvdmlkZXJzL2Jhc2UtZmlsdGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLGFBQWEsRUFBNEMsTUFBTSx5QkFBeUIsQ0FBQztBQUVsRyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBYzFELE1BQU0sT0FBTyxpQkFBaUI7SUFDMUIsWUFBNkMsR0FBNkI7UUFBN0IsUUFBRyxHQUFILEdBQUcsQ0FBMEI7SUFBRyxDQUFDO0lBRXZFLE1BQU0sQ0FBQyxNQUE2QixFQUFFLFNBQTBCLEVBQUU7UUFDckUsT0FBTyxJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVNLE9BQU8sQ0FBQyxJQUFZLEVBQUUsVUFBaUM7UUFDMUQsT0FBTyxJQUFJLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVNLGdCQUFnQixDQUFDLFVBQWlDO1FBQ3JELE9BQU8sSUFBSSxDQUFDLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRU0sZUFBZSxDQUFDLFNBQTBCLEVBQUU7UUFDL0MsT0FBTyxJQUFJLENBQUMsR0FBRyxFQUFFLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRU0saUJBQWlCLENBQ3BCLFlBQXNDLEVBQ3RDLEtBQWEsRUFDYixPQUFxQjtRQUVyQixPQUFPLElBQUksQ0FBQyxHQUFHLEVBQUUsaUJBQWlCLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVNLHlCQUF5QixDQUM1QixZQUFzQyxFQUN0QyxVQUFrQixFQUNsQixPQUFxQjtRQUVyQixPQUFPLElBQUksQ0FBQyxHQUFHLEVBQUUseUJBQXlCLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDckYsQ0FBQzsrR0FqQ1EsaUJBQWlCLGtCQUNOLGFBQWE7bUhBRHhCLGlCQUFpQjs7NEZBQWpCLGlCQUFpQjtrQkFEN0IsVUFBVTs7MEJBRU0sTUFBTTsyQkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgTmljZUZpbHRlckFwaSwgTmljZUZpbHRlckFwaURlZmluaXRpb24sIE5pY2VIdHRwT3B0aW9ucyB9IGZyb20gXCIuLi8uLi8uLi9hcGkvZmlsdGVyLmFwaVwiO1xuaW1wb3J0IHsgRmlsdGVyQ29uZmlndXJhdGlvbk1vZGVsLCBGaWx0ZXJQYXJhbWV0ZXJzTW9kZWwsIEZpbHRlclJlc3VsdE1vZGVsLCBTZWxlY3RGaWx0ZXJWYWx1ZSB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvZmlsdGVyLm1vZGVsXCI7XG5pbXBvcnQgeyBGaWx0ZXJVdGlscyB9IGZyb20gXCIuLi8uLi8uLi91dGlscy9maWx0ZXIudXRpbHNcIjtcbmltcG9ydCB7IEh0dHBPcHRpb25zIH0gZnJvbSBcIkByZWN1cnN5dmUvbmljZS11aS1raXQudjJcIjtcblxuZXhwb3J0IGludGVyZmFjZSBJTmljZUZpbHRlclNlcnZpY2U8VD4ge1xuICAgIGdldEZpbHRlckNvbmZpZyhvcHRpb246IE5pY2VIdHRwT3B0aW9ucyk6IE9ic2VydmFibGU8RmlsdGVyQ29uZmlndXJhdGlvbk1vZGVsW10+O1xuXG4gICAgZmlsdGVyKHBhcmFtczogRmlsdGVyUGFyYW1ldGVyc01vZGVsLCBvcHRpb246IE5pY2VIdHRwT3B0aW9ucyk6IE9ic2VydmFibGU8RmlsdGVyUmVzdWx0TW9kZWw8VD4+O1xuXG4gICAgZ2V0RmlsZSh0eXBlOiBzdHJpbmcsIHBhcmFtZXRlcnM6IEZpbHRlclBhcmFtZXRlcnNNb2RlbCk6IE9ic2VydmFibGU8QmxvYj47XG5cbiAgICBnZXRQcmludGFibGVIdG1sKHBhcmFtZXRlcnM6IEZpbHRlclBhcmFtZXRlcnNNb2RlbCk6IE9ic2VydmFibGU8c3RyaW5nPjtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5pY2VGaWx0ZXJTZXJ2aWNlPFQ+IGltcGxlbWVudHMgSU5pY2VGaWx0ZXJTZXJ2aWNlPFQ+IHtcbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KE5pY2VGaWx0ZXJBcGkpIHByb3RlY3RlZCBhcGk/OiBOaWNlRmlsdGVyQXBpRGVmaW5pdGlvbikge31cblxuICAgIHB1YmxpYyBmaWx0ZXIocGFyYW1zOiBGaWx0ZXJQYXJhbWV0ZXJzTW9kZWwsIG9wdGlvbjogTmljZUh0dHBPcHRpb25zID0ge30pOiBPYnNlcnZhYmxlPEZpbHRlclJlc3VsdE1vZGVsPFQ+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaT8uZmlsdGVyKEZpbHRlclV0aWxzLnBhcmFtZXRlcnNUb1JlcXVlc3QocGFyYW1zKSwgb3B0aW9uKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RmlsZSh0eXBlOiBzdHJpbmcsIHBhcmFtZXRlcnM6IEZpbHRlclBhcmFtZXRlcnNNb2RlbCk6IE9ic2VydmFibGU8QmxvYj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGk/LmRvd25sb2FkRGF0YSh0eXBlLCBGaWx0ZXJVdGlscy5wYXJhbWV0ZXJzVG9SZXF1ZXN0KHBhcmFtZXRlcnMpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UHJpbnRhYmxlSHRtbChwYXJhbWV0ZXJzOiBGaWx0ZXJQYXJhbWV0ZXJzTW9kZWwpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGk/LmdldFByaW50YWJsZUh0bWwoRmlsdGVyVXRpbHMucGFyYW1ldGVyc1RvUmVxdWVzdChwYXJhbWV0ZXJzKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZpbHRlckNvbmZpZyhvcHRpb246IE5pY2VIdHRwT3B0aW9ucyA9IHt9KTogT2JzZXJ2YWJsZTxGaWx0ZXJDb25maWd1cmF0aW9uTW9kZWxbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGk/LmdldEZpbHRlckNvbmZpZyhvcHRpb24pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZWFyY2hGaWx0ZXJWYWx1ZShcbiAgICAgICAgZmlsdGVyQ29uZmlnOiBGaWx0ZXJDb25maWd1cmF0aW9uTW9kZWwsXG4gICAgICAgIHZhbHVlOiBzdHJpbmcsXG4gICAgICAgIG9wdGlvbnM/OiBIdHRwT3B0aW9uc1xuICAgICk6IE9ic2VydmFibGU8U2VsZWN0RmlsdGVyVmFsdWVbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGk/LnNlYXJjaEZpbHRlclZhbHVlKGZpbHRlckNvbmZpZy5pZCwgdmFsdWUsIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZWFyY2hGaWx0ZXJSZXNvdXJjZVZhbHVlKFxuICAgICAgICBmaWx0ZXJDb25maWc6IEZpbHRlckNvbmZpZ3VyYXRpb25Nb2RlbCxcbiAgICAgICAgcmVzb3VyY2VJZDogbnVtYmVyLFxuICAgICAgICBvcHRpb25zPzogSHR0cE9wdGlvbnNcbiAgICApOiBPYnNlcnZhYmxlPFNlbGVjdEZpbHRlclZhbHVlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaT8uc2VhcmNoRmlsdGVyUmVzb3VyY2VWYWx1ZShmaWx0ZXJDb25maWcuaWQsIHJlc291cmNlSWQsIG9wdGlvbnMpO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,33 +0,0 @@
1
- import { Injectable } from "@angular/core";
2
- import { NiceSavedReportsApi } from "../../../api/saved-report.api";
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "../../../api/saved-report.api";
5
- export class NiceSavedReportService {
6
- constructor(api) {
7
- this.api = api;
8
- }
9
- create(report) {
10
- return this.api.create(report);
11
- }
12
- update(id, report) {
13
- return this.api.update(id, report);
14
- }
15
- remove(id) {
16
- return this.api.delete(id);
17
- }
18
- getByTableName(table) {
19
- return this.api.getByTable(table);
20
- }
21
- getTopByTableName(table) {
22
- return this.api.getTopByTable(table);
23
- }
24
- hit(id) {
25
- return this.api.hit(id);
26
- }
27
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NiceSavedReportService, deps: [{ token: i1.NiceSavedReportsApi }], target: i0.ɵɵFactoryTarget.Injectable }); }
28
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NiceSavedReportService }); }
29
- }
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NiceSavedReportService, decorators: [{
31
- type: Injectable
32
- }], ctorParameters: () => [{ type: i1.NiceSavedReportsApi }] });
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1saXN0LXNhdmVkLXJlcG9ydC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmljZS1kYXRhLWZpbHRlci1raXQvc3JjL2xpYi9jb21wb25lbnRzL2Jhc2UtbGlzdC9wcm92aWRlcnMvYmFzZS1saXN0LXNhdmVkLXJlcG9ydC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJM0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0JBQStCLENBQUM7OztBQUdwRSxNQUFNLE9BQU8sc0JBQXNCO0lBQy9CLFlBQW9CLEdBQXdCO1FBQXhCLFFBQUcsR0FBSCxHQUFHLENBQXFCO0lBQUcsQ0FBQztJQUV6QyxNQUFNLENBQUMsTUFBMEI7UUFDcEMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRU0sTUFBTSxDQUFDLEVBQVUsRUFBRSxNQUEwQjtRQUNoRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRU0sTUFBTSxDQUFDLEVBQVU7UUFDcEIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRU0sY0FBYyxDQUFDLEtBQWE7UUFDL0IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU0saUJBQWlCLENBQUMsS0FBYTtRQUNsQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFTSxHQUFHLENBQUMsRUFBVTtRQUNqQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzVCLENBQUM7K0dBekJRLHNCQUFzQjttSEFBdEIsc0JBQXNCOzs0RkFBdEIsc0JBQXNCO2tCQURsQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IE5pY2VTYXZlZFJlcG9ydER0byB9IGZyb20gXCIuLi8uLi8uLi9hcGkvZHRvL3NhdmVkLXJlcG9ydHMuZHRvXCI7XG5pbXBvcnQgeyBOaWNlU2F2ZWRSZXBvcnRzIH0gZnJvbSBcIi4uLy4uLy4uL2FwaS9tb2RlbHMvc2F2ZWQtcmVwb3J0cy5tb2RlbFwiO1xuaW1wb3J0IHsgTmljZVNhdmVkUmVwb3J0c0FwaSB9IGZyb20gXCIuLi8uLi8uLi9hcGkvc2F2ZWQtcmVwb3J0LmFwaVwiO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTmljZVNhdmVkUmVwb3J0U2VydmljZSB7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBhcGk6IE5pY2VTYXZlZFJlcG9ydHNBcGkpIHt9XG5cbiAgICBwdWJsaWMgY3JlYXRlKHJlcG9ydDogTmljZVNhdmVkUmVwb3J0RHRvKTogT2JzZXJ2YWJsZTxOaWNlU2F2ZWRSZXBvcnRzPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5jcmVhdGUocmVwb3J0KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdXBkYXRlKGlkOiBudW1iZXIsIHJlcG9ydDogTmljZVNhdmVkUmVwb3J0RHRvKTogT2JzZXJ2YWJsZTxOaWNlU2F2ZWRSZXBvcnRzPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS51cGRhdGUoaWQsIHJlcG9ydCk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZShpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5kZWxldGUoaWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRCeVRhYmxlTmFtZSh0YWJsZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxOaWNlU2F2ZWRSZXBvcnRzW10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmdldEJ5VGFibGUodGFibGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRUb3BCeVRhYmxlTmFtZSh0YWJsZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxOaWNlU2F2ZWRSZXBvcnRzW10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmdldFRvcEJ5VGFibGUodGFibGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBoaXQoaWQ6IG51bWJlcik6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuaGl0KGlkKTtcbiAgICB9XG59XG4iXX0=
@@ -1,19 +0,0 @@
1
- export * from "./directives/base-list-directives.module";
2
- export * from "./directives/base-list-buttons.directive";
3
- export * from "./directives/base-list-cards.directive";
4
- export * from "./directives/base-list-custom-content.directive";
5
- export * from "./directives/base-list-empty-state.directive";
6
- export * from "./directives/base-list-empty-search-result-state.directive";
7
- export * from "./directives/base-list-filters.directive";
8
- export * from "./directives/base-list-table.directive";
9
- export * from "./directives/base-list-title.directive";
10
- export * from "./models/columns.model";
11
- export * from "./models/layout.model";
12
- export * from "./providers/base-filter.service";
13
- export * from "./providers/base-list-saved-report.service";
14
- export * from "./store/base-list.query";
15
- export * from "./store/base-list.service";
16
- export * from "./store/base-list.store";
17
- export * from "./base-list.component";
18
- export * from "./base-list.module";
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pY2UtZGF0YS1maWx0ZXIta2l0L3NyYy9saWIvY29tcG9uZW50cy9iYXNlLWxpc3QvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyw0REFBNEQsQ0FBQztBQUMzRSxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2RpcmVjdGl2ZXMvYmFzZS1saXN0LWRpcmVjdGl2ZXMubW9kdWxlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kaXJlY3RpdmVzL2Jhc2UtbGlzdC1idXR0b25zLmRpcmVjdGl2ZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGlyZWN0aXZlcy9iYXNlLWxpc3QtY2FyZHMuZGlyZWN0aXZlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kaXJlY3RpdmVzL2Jhc2UtbGlzdC1jdXN0b20tY29udGVudC5kaXJlY3RpdmVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RpcmVjdGl2ZXMvYmFzZS1saXN0LWVtcHR5LXN0YXRlLmRpcmVjdGl2ZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGlyZWN0aXZlcy9iYXNlLWxpc3QtZW1wdHktc2VhcmNoLXJlc3VsdC1zdGF0ZS5kaXJlY3RpdmVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RpcmVjdGl2ZXMvYmFzZS1saXN0LWZpbHRlcnMuZGlyZWN0aXZlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kaXJlY3RpdmVzL2Jhc2UtbGlzdC10YWJsZS5kaXJlY3RpdmVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RpcmVjdGl2ZXMvYmFzZS1saXN0LXRpdGxlLmRpcmVjdGl2ZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbW9kZWxzL2NvbHVtbnMubW9kZWxcIjtcbmV4cG9ydCAqIGZyb20gXCIuL21vZGVscy9sYXlvdXQubW9kZWxcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3Byb3ZpZGVycy9iYXNlLWZpbHRlci5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wcm92aWRlcnMvYmFzZS1saXN0LXNhdmVkLXJlcG9ydC5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zdG9yZS9iYXNlLWxpc3QucXVlcnlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3N0b3JlL2Jhc2UtbGlzdC5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zdG9yZS9iYXNlLWxpc3Quc3RvcmVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2Jhc2UtbGlzdC5jb21wb25lbnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2Jhc2UtbGlzdC5tb2R1bGVcIjtcbiJdfQ==
@@ -1,51 +0,0 @@
1
- import { Injectable } from "@angular/core";
2
- import { Query } from "@datorama/akita";
3
- import { combineLatest } from "rxjs";
4
- import { map } from "rxjs/operators";
5
- import { NiceBaseListStore } from "./base-list.store";
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "./base-list.store";
8
- export class NiceBaseListQuery extends Query {
9
- constructor(store) {
10
- super(store);
11
- this.store = store;
12
- }
13
- selectEmpty() {
14
- return combineLatest([
15
- this.selectLoading(),
16
- this.selectData(),
17
- this.selectFilterParameters()
18
- ]).pipe(map(([loading, data, parameter]) => !data?.length && !loading && !parameter?.search));
19
- }
20
- selectSearchResultEmpty() {
21
- return combineLatest([
22
- this.selectLoading(),
23
- this.selectData(),
24
- this.selectFilterParameters()
25
- ]).pipe(map(([loading, data, parameter]) => !data?.length && !loading && !!parameter?.search));
26
- }
27
- selectData() {
28
- return this.select(s => s.filterResult?.values ?? []);
29
- }
30
- selectFilterParameters() {
31
- return this.select(s => s.filterParameters);
32
- }
33
- selectFilterResult() {
34
- return this.select(s => s.filterResult);
35
- }
36
- selectFilterConfig() {
37
- return this.select(s => s.filterConfig);
38
- }
39
- selectFilterConfigLoading() {
40
- return this.select(s => s.filterConfigLoading);
41
- }
42
- selectShowQueryBuilder() {
43
- return this.select(s => s.showQueryBuilder);
44
- }
45
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NiceBaseListQuery, deps: [{ token: i1.NiceBaseListStore }], target: i0.ɵɵFactoryTarget.Injectable }); }
46
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NiceBaseListQuery }); }
47
- }
48
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NiceBaseListQuery, decorators: [{
49
- type: Injectable
50
- }], ctorParameters: () => [{ type: i1.NiceBaseListStore }] });
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1saXN0LnF1ZXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmljZS1kYXRhLWZpbHRlci1raXQvc3JjL2xpYi9jb21wb25lbnRzL2Jhc2UtbGlzdC9zdG9yZS9iYXNlLWxpc3QucXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEMsT0FBTyxFQUFFLGFBQWEsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUFxQixpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7QUFHekUsTUFBTSxPQUFPLGlCQUFtRSxTQUFRLEtBQVE7SUFDNUYsWUFBc0IsS0FBMkI7UUFDN0MsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBREssVUFBSyxHQUFMLEtBQUssQ0FBc0I7SUFFakQsQ0FBQztJQUVNLFdBQVc7UUFDZCxPQUFPLGFBQWEsQ0FBQztZQUNqQixJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDakIsSUFBSSxDQUFDLHNCQUFzQixFQUFFO1NBQ2hDLENBQUMsQ0FBQyxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxNQUFNLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQ3ZGLENBQUM7SUFDTixDQUFDO0lBRU0sdUJBQXVCO1FBQzFCLE9BQU8sYUFBYSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNqQixJQUFJLENBQUMsc0JBQXNCLEVBQUU7U0FDaEMsQ0FBQyxDQUFDLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLE1BQU0sSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUN4RixDQUFDO0lBQ04sQ0FBQztJQUVNLFVBQVU7UUFDYixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxFQUFFLE1BQU0sSUFBSSxFQUFFLENBQXNCLENBQUM7SUFDL0UsQ0FBQztJQUVNLHNCQUFzQjtRQUN6QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRU0sa0JBQWtCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRU0sa0JBQWtCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRU0seUJBQXlCO1FBQzVCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFTSxzQkFBc0I7UUFDekIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDaEQsQ0FBQzsrR0EvQ1EsaUJBQWlCO21IQUFqQixpQkFBaUI7OzRGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFF1ZXJ5IH0gZnJvbSBcIkBkYXRvcmFtYS9ha2l0YVwiO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBtYXAgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcbmltcG9ydCB7IEZpbHRlckNvbmZpZ3VyYXRpb25Nb2RlbCwgRmlsdGVyUGFyYW1ldGVyc01vZGVsLCBGaWx0ZXJSZXN1bHRNb2RlbCB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvZmlsdGVyLm1vZGVsXCI7XG5pbXBvcnQgeyBOaWNlQmFzZUxpc3RTdGF0ZSwgTmljZUJhc2VMaXN0U3RvcmUgfSBmcm9tIFwiLi9iYXNlLWxpc3Quc3RvcmVcIjtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5pY2VCYXNlTGlzdFF1ZXJ5PFQgZXh0ZW5kcyBOaWNlQmFzZUxpc3RTdGF0ZSA9IE5pY2VCYXNlTGlzdFN0YXRlPiBleHRlbmRzIFF1ZXJ5PFQ+IHtcbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgc3RvcmU6IE5pY2VCYXNlTGlzdFN0b3JlPFQ+KSB7XG4gICAgICAgIHN1cGVyKHN0b3JlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VsZWN0RW1wdHkoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0TG9hZGluZygpLFxuICAgICAgICAgICAgdGhpcy5zZWxlY3REYXRhKCksXG4gICAgICAgICAgICB0aGlzLnNlbGVjdEZpbHRlclBhcmFtZXRlcnMoKVxuICAgICAgICBdKS5waXBlKFxuICAgICAgICAgICAgbWFwKChbbG9hZGluZywgZGF0YSwgcGFyYW1ldGVyXSkgPT4gIWRhdGE/Lmxlbmd0aCAmJiAhbG9hZGluZyAmJiAhcGFyYW1ldGVyPy5zZWFyY2gpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIHNlbGVjdFNlYXJjaFJlc3VsdEVtcHR5KCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICB0aGlzLnNlbGVjdExvYWRpbmcoKSxcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0RGF0YSgpLFxuICAgICAgICAgICAgdGhpcy5zZWxlY3RGaWx0ZXJQYXJhbWV0ZXJzKClcbiAgICAgICAgXSkucGlwZShcbiAgICAgICAgICAgIG1hcCgoW2xvYWRpbmcsIGRhdGEsIHBhcmFtZXRlcl0pID0+ICFkYXRhPy5sZW5ndGggJiYgIWxvYWRpbmcgJiYgISFwYXJhbWV0ZXI/LnNlYXJjaClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VsZWN0RGF0YSgpOiBPYnNlcnZhYmxlPGFueVtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdChzID0+IHMuZmlsdGVyUmVzdWx0Py52YWx1ZXMgPz8gW10pIGFzIE9ic2VydmFibGU8YW55W10+O1xuICAgIH1cblxuICAgIHB1YmxpYyBzZWxlY3RGaWx0ZXJQYXJhbWV0ZXJzKCk6IE9ic2VydmFibGU8RmlsdGVyUGFyYW1ldGVyc01vZGVsPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdChzID0+IHMuZmlsdGVyUGFyYW1ldGVycyk7XG4gICAgfVxuXG4gICAgcHVibGljIHNlbGVjdEZpbHRlclJlc3VsdCgpOiBPYnNlcnZhYmxlPEZpbHRlclJlc3VsdE1vZGVsIHwgbnVsbD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3QocyA9PiBzLmZpbHRlclJlc3VsdCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNlbGVjdEZpbHRlckNvbmZpZygpOiBPYnNlcnZhYmxlPEZpbHRlckNvbmZpZ3VyYXRpb25Nb2RlbFtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdChzID0+IHMuZmlsdGVyQ29uZmlnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VsZWN0RmlsdGVyQ29uZmlnTG9hZGluZygpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0KHMgPT4gcy5maWx0ZXJDb25maWdMb2FkaW5nKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VsZWN0U2hvd1F1ZXJ5QnVpbGRlcigpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0KHMgPT4gcy5zaG93UXVlcnlCdWlsZGVyKTtcbiAgICB9XG59XG4iXX0=
@@ -1,375 +0,0 @@
1
- import { ApplicationRef, Inject, Injectable } from "@angular/core";
2
- import { ActivatedRoute, Router } from "@angular/router";
3
- import { arrayAdd, arrayRemove, arrayUpsert } from "@datorama/akita";
4
- import { FileUtils } from "@recursyve/nice-ui-kit.v2";
5
- import { firstValueFrom, Subject } from "rxjs";
6
- import { map, takeUntil } from "rxjs/operators";
7
- import { FilterUtils } from "../../../utils/filter.utils";
8
- import { QueryParamsUtils } from "../../../utils/query-params.utils";
9
- import { QBFilterUtils } from "../../query-builder/utils/qb-filter.utils";
10
- import { DISABLE_QUERY_PARAMS } from "../base-list.constant";
11
- import { NiceFilterService } from "../providers/base-filter.service";
12
- import { NiceBaseListStore } from "./base-list.store";
13
- import { OrderUtils } from "../../../utils/order.utils";
14
- import * as i0 from "@angular/core";
15
- import * as i1 from "./base-list.store";
16
- import * as i2 from "@angular/router";
17
- export class NiceBaseListService {
18
- constructor(store, filterService, disableQueryParams, activatedRoute, router, appRef) {
19
- this.store = store;
20
- this.filterService = filterService;
21
- this.disableQueryParams = disableQueryParams;
22
- this.activatedRoute = activatedRoute;
23
- this.router = router;
24
- this.appRef = appRef;
25
- this.queryParamsLoaded$ = new Subject();
26
- this.downloadFileName = "data";
27
- this.unsubscribeAll$ = new Subject();
28
- this.loadingData = false;
29
- }
30
- get filter() {
31
- return this.filterService;
32
- }
33
- async init(configQueryParams = {}) {
34
- this.store.setFilterConfigLoading(true);
35
- try {
36
- const filterConfig = await firstValueFrom(this.filterService.getFilterConfig({ params: configQueryParams }));
37
- this.store.update({
38
- filterConfig
39
- });
40
- }
41
- catch (e) {
42
- this.store.setError(e);
43
- }
44
- finally {
45
- this.store.setFilterConfigLoading(false);
46
- }
47
- }
48
- resetStore() {
49
- this.store.reset();
50
- }
51
- resetData() {
52
- this.store.update({
53
- filterResult: null
54
- });
55
- }
56
- closeSubscriptions() {
57
- this.unsubscribeAll$.next(null);
58
- this.unsubscribeAll$.complete();
59
- this.queryParamsLoaded$.complete();
60
- }
61
- disableList() {
62
- this.store.update({
63
- disabled: true
64
- });
65
- }
66
- enableList() {
67
- this.store.update({
68
- disabled: false
69
- });
70
- }
71
- setLoading(loading) {
72
- this.store.setLoading(loading);
73
- }
74
- setMode(mode) {
75
- this.store.update({
76
- mergePageResults: mode === "infinite-scroll"
77
- });
78
- }
79
- setQueryParams(queryParams) {
80
- this.store.update({ queryParams });
81
- }
82
- loadQueryParams(autoLoad) {
83
- if (this.disableQueryParams) {
84
- return;
85
- }
86
- this.activatedRoute?.queryParams
87
- .pipe(takeUntil(this.unsubscribeAll$), map((params) => {
88
- return {
89
- params: QueryParamsUtils.extractFilterParameters(params)
90
- };
91
- }))
92
- .subscribe(({ params }) => {
93
- if (!params || Object.keys(params).length === 0) {
94
- params = this.store.getValue().filterParameters;
95
- }
96
- const { filterParameters, filterResult } = this.store.getValue();
97
- if (FilterUtils.filterChangeNeedsRefresh(filterParameters, params) ||
98
- !filterResult) {
99
- if (autoLoad) {
100
- this.loadData(params, false);
101
- }
102
- else {
103
- this.setParameters(params, false, true);
104
- }
105
- }
106
- this.queryParamsLoaded$.next(null);
107
- });
108
- }
109
- async resetAndLoadData(parameters, updateQueryParams = true) {
110
- return this.loadData(parameters, updateQueryParams, true);
111
- }
112
- async loadData(parameters, updateQueryParams = true, reset = false) {
113
- const { disabled, queryParams } = this.store.getValue();
114
- try {
115
- const filterParameters = this.mergeParameters(parameters);
116
- if (filterParameters) {
117
- this.setParameters(filterParameters, disabled ? false : updateQueryParams);
118
- }
119
- if (!disabled) {
120
- this.store.setLoading(true);
121
- this.loadingData = true;
122
- const result = await firstValueFrom(this.filterService.filter(this.getParameters(filterParameters), {
123
- params: queryParams
124
- }));
125
- this.store.setResult(result, reset);
126
- }
127
- }
128
- catch (e) {
129
- this.store.setError(e);
130
- }
131
- finally {
132
- this.store.setLoading(false);
133
- this.loadingData = false;
134
- }
135
- }
136
- async searchData(search) {
137
- const { filterParameters } = this.store.getValue();
138
- await this.loadData({
139
- ...filterParameters,
140
- search
141
- });
142
- }
143
- async loadNewPage(start, length) {
144
- const { filterParameters } = this.store.getValue();
145
- await this.loadData({
146
- ...filterParameters,
147
- start,
148
- length
149
- });
150
- }
151
- async loadNextPage() {
152
- const { filterParameters } = this.store.getValue();
153
- await this.loadData({
154
- ...filterParameters,
155
- start: filterParameters.start + filterParameters.length
156
- });
157
- }
158
- resetPaging() {
159
- const { filterParameters } = this.store.getValue();
160
- this.store.setParameters({
161
- ...filterParameters,
162
- start: 0
163
- });
164
- this.store.update({
165
- resetPaging: true
166
- });
167
- }
168
- async downloadData(type, parameters, updateQueryParams = true) {
169
- try {
170
- this.store.setLoading(true);
171
- this.loadingData = true;
172
- const filterParameters = this.mergeParameters(parameters);
173
- if (filterParameters) {
174
- this.setParameters(filterParameters, updateQueryParams);
175
- }
176
- const result = await firstValueFrom(this.filterService.getFile(type, this.getParameters(filterParameters)));
177
- FileUtils.downloadFile(`${this.downloadFileName}.${type}`, result);
178
- }
179
- catch (e) {
180
- this.store.setError(e);
181
- }
182
- finally {
183
- this.store.setLoading(false);
184
- this.loadingData = false;
185
- }
186
- }
187
- async printData(parameters, updateQueryParams = true) {
188
- try {
189
- this.store.setLoading(true);
190
- this.loadingData = true;
191
- const filterParameters = this.mergeParameters(parameters);
192
- if (filterParameters) {
193
- this.setParameters(filterParameters, updateQueryParams);
194
- }
195
- const result = await firstValueFrom(this.filterService.getPrintableHtml(this.getParameters(filterParameters)));
196
- FileUtils.openPrintableWindow(result);
197
- }
198
- catch (e) {
199
- this.store.setError(e);
200
- }
201
- finally {
202
- this.store.setLoading(false);
203
- this.loadingData = false;
204
- }
205
- }
206
- updateRule(id, newRule) {
207
- const { filterParameters } = this.store.getValue();
208
- const rules = filterParameters.rules?.[0];
209
- if (!rules || rules.rules.length === 0) {
210
- this.updateRules([newRule]);
211
- return;
212
- }
213
- const oldRule = rules.rules.find((r) => r.id === id);
214
- let newRules = rules.rules;
215
- if (oldRule) {
216
- if (newRule) {
217
- // Array replace
218
- newRules = [
219
- ...rules.rules.slice(0, rules.rules.indexOf(oldRule)),
220
- newRule,
221
- ...rules.rules.slice(rules.rules.indexOf(oldRule) + 1, rules.rules.length)
222
- ];
223
- }
224
- else {
225
- newRules = rules.rules.filter((r) => r.id !== id);
226
- }
227
- }
228
- else {
229
- newRules = [...newRules, newRule];
230
- }
231
- this.updateRules(newRules);
232
- }
233
- updateDefaultRules(rule) {
234
- this.store.update({
235
- defaultRules: rule
236
- });
237
- }
238
- async updateGlobalRules(rules, updateQueryParams = true, reset = true) {
239
- if (reset) {
240
- this.resetPaging();
241
- }
242
- const { filterParameters } = this.store.getValue();
243
- const newRules = {
244
- ...filterParameters,
245
- rules
246
- };
247
- await this.loadData(newRules, updateQueryParams);
248
- }
249
- addRuleFromConfig(config) {
250
- this.resetPaging();
251
- const { filterParameters } = this.store.getValue();
252
- const newRules = {
253
- ...filterParameters,
254
- rules: [
255
- ...filterParameters.rules,
256
- QBFilterUtils.createQueryModel(config)
257
- ]
258
- };
259
- this.store.update({
260
- showQueryBuilder: true
261
- });
262
- this.loadData(newRules, true);
263
- }
264
- updateRules(rules) {
265
- const { filterParameters } = this.store.getValue();
266
- const newRules = {
267
- order: filterParameters.order,
268
- rules: [
269
- {
270
- condition: "and",
271
- rules
272
- }
273
- ]
274
- };
275
- this.loadData(newRules, true);
276
- }
277
- toggleQueryBuilder() {
278
- this.store.update((state) => ({
279
- showQueryBuilder: !state.showQueryBuilder
280
- }));
281
- }
282
- addListValue(value, opts) {
283
- const { filterResult } = this.store.getValue();
284
- if (!filterResult) {
285
- return;
286
- }
287
- this.store.update({
288
- filterResult: {
289
- ...filterResult,
290
- values: arrayAdd(filterResult.values, value, opts)
291
- }
292
- });
293
- }
294
- updateListValue(value, key = "id") {
295
- const { filterResult } = this.store.getValue();
296
- if (!filterResult) {
297
- return;
298
- }
299
- this.store.update({
300
- filterResult: {
301
- ...filterResult,
302
- values: arrayUpsert(filterResult.values, value[key], value)
303
- }
304
- });
305
- }
306
- removeListValue(value, key = "id") {
307
- const { filterResult } = this.store.getValue();
308
- if (!filterResult) {
309
- return;
310
- }
311
- this.store.update({
312
- filterResult: {
313
- ...filterResult,
314
- values: arrayRemove(filterResult.values, value[key])
315
- }
316
- });
317
- }
318
- getParameters(filterParameters) {
319
- const { defaultRules } = this.store.getValue();
320
- const parameters = {
321
- ...filterParameters,
322
- rules: filterParameters?.rules ? [...filterParameters.rules] : []
323
- };
324
- if (defaultRules?.length) {
325
- parameters.rules.push({
326
- condition: "and",
327
- rules: defaultRules
328
- });
329
- }
330
- return parameters;
331
- }
332
- async updateQueryParams(queryParams) {
333
- if (!this.activatedRoute || this.disableQueryParams) {
334
- return;
335
- }
336
- await this.router.navigate([], {
337
- relativeTo: this.activatedRoute,
338
- queryParams,
339
- queryParamsHandling: "merge"
340
- });
341
- }
342
- mergeParameters(parameters) {
343
- const { filterParameters } = this.store.getValue();
344
- if (!parameters) {
345
- return filterParameters;
346
- }
347
- return {
348
- ...filterParameters,
349
- ...parameters,
350
- order: OrderUtils.mergeOrder(filterParameters.order, parameters.order),
351
- fallbackOrder: OrderUtils.combineOrders(filterParameters.fallbackOrder, parameters.fallbackOrder, { uniqueFromBack: true })
352
- };
353
- }
354
- setParameters(parameters, updateQueryParams = true, merge = false) {
355
- if (merge) {
356
- parameters = this.mergeParameters(parameters);
357
- }
358
- this.store.setParameters(parameters);
359
- if (updateQueryParams) {
360
- this.updateQueryParams(QueryParamsUtils.filterParametersToParamsMap(parameters));
361
- }
362
- }
363
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NiceBaseListService, deps: [{ token: i1.NiceBaseListStore }, { token: NiceFilterService }, { token: DISABLE_QUERY_PARAMS }, { token: i2.ActivatedRoute }, { token: i2.Router }, { token: i0.ApplicationRef }], target: i0.ɵɵFactoryTarget.Injectable }); }
364
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NiceBaseListService }); }
365
- }
366
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NiceBaseListService, decorators: [{
367
- type: Injectable
368
- }], ctorParameters: () => [{ type: i1.NiceBaseListStore }, { type: undefined, decorators: [{
369
- type: Inject,
370
- args: [NiceFilterService]
371
- }] }, { type: undefined, decorators: [{
372
- type: Inject,
373
- args: [DISABLE_QUERY_PARAMS]
374
- }] }, { type: i2.ActivatedRoute }, { type: i2.Router }, { type: i0.ApplicationRef }] });
375
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1saXN0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uaWNlLWRhdGEtZmlsdGVyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvYmFzZS1saXN0L3N0b3JlL2Jhc2UtbGlzdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQyxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSWhELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDMUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7O0FBR3hELE1BQU0sT0FBTyxtQkFBbUI7SUFPNUIsWUFDYyxLQUF3QixFQUV4QixhQUFxQixFQUVyQixrQkFB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O1FBQ25ELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNkLE9BQU8sZ0JBQWdCLENBQUM7UUFDNUIsQ0FBQztRQUVELE9BQU87WUFDSCxHQUFHLGdCQUFnQjtZQUNuQixHQUFHLFVBQVU7WUFDYixLQUFLLEVBQUUsVUFBVSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQztZQUN0RSxhQUFhLEVBQUUsVUFBVSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDLGFBQWEsRUFBRSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FBQztTQUM5SCxDQUFDO0lBQ04sQ0FBQztJQUVPLGFBQWEsQ0FBQyxVQUFpQyxFQUFFLG9CQUE2QixJQUFJLEVBQUUsUUFBaUIsS0FBSztRQUM5RyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1IsVUFBVSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEQsQ0FBQztRQUVELElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3JDLElBQUksaUJBQWlCLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsMkJBQTJCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUNyRixDQUFDO0lBQ0wsQ0FBQzsrR0E1WVEsbUJBQW1CLG1EQVNoQixpQkFBaUIsYUFFakIsb0JBQW9CO21IQVh2QixtQkFBbUI7OzRGQUFuQixtQkFBbUI7a0JBRC9CLFVBQVU7OzBCQVVGLE1BQU07MkJBQUMsaUJBQWlCOzswQkFFeEIsTUFBTTsyQkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcHBsaWNhdGlvblJlZiwgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5pbXBvcnQgeyBhcnJheUFkZCwgYXJyYXlSZW1vdmUsIGFycmF5VXBzZXJ0IH0gZnJvbSBcIkBkYXRvcmFtYS9ha2l0YVwiO1xuaW1wb3J0IHsgRmlsZVV0aWxzIH0gZnJvbSBcIkByZWN1cnN5dmUvbmljZS11aS1raXQudjJcIjtcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tLCBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IG1hcCwgdGFrZVVudGlsIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQgeyBRdWVyeVBhcmFtcyB9IGZyb20gXCIuLi8uLi8uLi9hcGkvZmlsdGVyLmFwaVwiO1xuaW1wb3J0IHsgRmlsdGVyQ29uZmlndXJhdGlvbk1vZGVsLCBGaWx0ZXJQYXJhbWV0ZXJzTW9kZWwgfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2ZpbHRlci5tb2RlbFwiO1xuaW1wb3J0IHsgUXVlcnlNb2RlbCwgUXVlcnlSdWxlTW9kZWwgfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL3F1ZXJ5Lm1vZGVsXCI7XG5pbXBvcnQgeyBGaWx0ZXJVdGlscyB9IGZyb20gXCIuLi8uLi8uLi91dGlscy9maWx0ZXIudXRpbHNcIjtcbmltcG9ydCB7IFF1ZXJ5UGFyYW1zVXRpbHMgfSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvcXVlcnktcGFyYW1zLnV0aWxzXCI7XG5pbXBvcnQgeyBRQkZpbHRlclV0aWxzIH0gZnJvbSBcIi4uLy4uL3F1ZXJ5LWJ1aWxkZXIvdXRpbHMvcWItZmlsdGVyLnV0aWxzXCI7XG5pbXBvcnQgeyBESVNBQkxFX1FVRVJZX1BBUkFNUyB9IGZyb20gXCIuLi9iYXNlLWxpc3QuY29uc3RhbnRcIjtcbmltcG9ydCB7IE5pY2VGaWx0ZXJTZXJ2aWNlIH0gZnJvbSBcIi4uL3Byb3ZpZGVycy9iYXNlLWZpbHRlci5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBOaWNlQmFzZUxpc3RTdG9yZSB9IGZyb20gXCIuL2Jhc2UtbGlzdC5zdG9yZVwiO1xuaW1wb3J0IHsgQWRkRW50aXRpZXNPcHRpb25zIH0gZnJvbSBcIkBkYXRvcmFtYS9ha2l0YS9zcmMvbGliL2FkZEVudGl0aWVzXCI7XG5pbXBvcnQgeyBPcmRlclV0aWxzIH0gZnJvbSBcIi4uLy4uLy4uL3V0aWxzL29yZGVyLnV0aWxzXCI7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOaWNlQmFzZUxpc3RTZXJ2aWNlPEZpbHRlciBleHRlbmRzIE5pY2VGaWx0ZXJTZXJ2aWNlPGFueT4gPSBOaWNlRmlsdGVyU2VydmljZTxhbnk+PiB7XG4gICAgcHVibGljIHF1ZXJ5UGFyYW1zTG9hZGVkJCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgICBwcm90ZWN0ZWQgZG93bmxvYWRGaWxlTmFtZSA9IFwiZGF0YVwiO1xuICAgIHByb3RlY3RlZCB1bnN1YnNjcmliZUFsbCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHByb3RlY3RlZCBsb2FkaW5nRGF0YSA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBzdG9yZTogTmljZUJhc2VMaXN0U3RvcmUsXG4gICAgICAgIEBJbmplY3QoTmljZUZpbHRlclNlcnZpY2UpXG4gICAgICAgIHByb3RlY3RlZCBmaWx0ZXJTZXJ2aWNlOiBGaWx0ZXIsXG4gICAgICAgIEBJbmplY3QoRElTQUJMRV9RVUVSWV9QQVJBTVMpXG4gICAgICAgIHByb3RlY3RlZCBkaXNhYmxlUXVlcnlQYXJhbXM6IGJvb2xlYW4sXG4gICAgICAgIHByb3RlY3RlZCBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgICAgIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgcHJvdGVjdGVkIGFwcFJlZjogQXBwbGljYXRpb25SZWZcbiAgICApIHtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGZpbHRlcigpOiBGaWx0ZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXJTZXJ2aWNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBpbml0KGNvbmZpZ1F1ZXJ5UGFyYW1zOiBRdWVyeVBhcmFtcyA9IHt9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMuc3RvcmUuc2V0RmlsdGVyQ29uZmlnTG9hZGluZyh0cnVlKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlckNvbmZpZyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuZmlsdGVyU2VydmljZS5nZXRGaWx0ZXJDb25maWcoeyBwYXJhbXM6IGNvbmZpZ1F1ZXJ5UGFyYW1zIH0pKTtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUudXBkYXRlKHtcbiAgICAgICAgICAgICAgICBmaWx0ZXJDb25maWdcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLnNldEVycm9yKGUpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5zZXRGaWx0ZXJDb25maWdMb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyByZXNldFN0b3JlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0b3JlLnJlc2V0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlc2V0RGF0YSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdG9yZS51cGRhdGUoe1xuICAgICAgICAgICAgZmlsdGVyUmVzdWx0OiBudWxsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbG9zZVN1YnNjcmlwdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudW5zdWJzY3JpYmVBbGwkLm5leHQobnVsbCk7XG4gICAgICAgIHRoaXMudW5zdWJzY3JpYmVBbGwkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMucXVlcnlQYXJhbXNMb2FkZWQkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGRpc2FibGVMaXN0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0b3JlLnVwZGF0ZSh7XG4gICAgICAgICAgICBkaXNhYmxlZDogdHJ1ZVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZW5hYmxlTGlzdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdG9yZS51cGRhdGUoe1xuICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRMb2FkaW5nKGxvYWRpbmc6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdG9yZS5zZXRMb2FkaW5nKGxvYWRpbmcpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRNb2RlKG1vZGU6IFwibm9ybWFsXCIgfCBcImluZmluaXRlLXNjcm9sbFwiKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RvcmUudXBkYXRlKHtcbiAgICAgICAgICAgIG1lcmdlUGFnZVJlc3VsdHM6IG1vZGUgPT09IFwiaW5maW5pdGUtc2Nyb2xsXCJcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFF1ZXJ5UGFyYW1zKHF1ZXJ5UGFyYW1zOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdG9yZS51cGRhdGUoeyBxdWVyeVBhcmFtcyB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbG9hZFF1ZXJ5UGFyYW1zKGF1dG9Mb2FkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVRdWVyeVBhcmFtcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZT8ucXVlcnlQYXJhbXNcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlQWxsJCksXG4gICAgICAgICAgICAgICAgbWFwKChwYXJhbXM6IHsgW2tleTogc3RyaW5nXTogYW55IH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczogUXVlcnlQYXJhbXNVdGlscy5leHRyYWN0RmlsdGVyUGFyYW1ldGVycyhwYXJhbXMpXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHsgcGFyYW1zIH0pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXBhcmFtcyB8fCBPYmplY3Qua2V5cyhwYXJhbXMpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBwYXJhbXMgPSB0aGlzLnN0b3JlLmdldFZhbHVlKCkuZmlsdGVyUGFyYW1ldGVycztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgeyBmaWx0ZXJQYXJhbWV0ZXJzLCBmaWx0ZXJSZXN1bHQgfSA9IHRoaXMuc3RvcmUuZ2V0VmFsdWUoKTtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIEZpbHRlclV0aWxzLmZpbHRlckNoYW5nZU5lZWRzUmVmcmVzaChmaWx0ZXJQYXJhbWV0ZXJzLCBwYXJhbXMpIHx8XG4gICAgICAgICAgICAgICAgICAgICFmaWx0ZXJSZXN1bHRcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG9Mb2FkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWREYXRhKHBhcmFtcywgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRQYXJhbWV0ZXJzKHBhcmFtcywgZmFsc2UsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5xdWVyeVBhcmFtc0xvYWRlZCQubmV4dChudWxsKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyByZXNldEFuZExvYWREYXRhKHBhcmFtZXRlcnM/OiBGaWx0ZXJQYXJhbWV0ZXJzTW9kZWwsIHVwZGF0ZVF1ZXJ5UGFyYW1zOiBib29sZWFuID0gdHJ1ZSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkRGF0YShwYXJhbWV0ZXJzLCB1cGRhdGVRdWVyeVBhcmFtcywgdHJ1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGxvYWREYXRhKHBhcmFtZXRlcnM/OiBGaWx0ZXJQYXJhbWV0ZXJzTW9kZWwsIHVwZGF0ZVF1ZXJ5UGFyYW1zOiBib29sZWFuID0gdHJ1ZSwgcmVzZXQ6IGJvb2xlYW4gPSBmYWxzZSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCB7IGRpc2FibGVkLCBxdWVyeVBhcmFtcyB9ID0gdGhpcy5zdG9yZS5nZXRWYWx1ZSgpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyUGFyYW1ldGVycyA9IHRoaXMubWVyZ2VQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpO1xuICAgICAgICAgICAgaWYgKGZpbHRlclBhcmFtZXRlcnMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFBhcmFtZXRlcnMoZmlsdGVyUGFyYW1ldGVycywgZGlzYWJsZWQgPyBmYWxzZSA6IHVwZGF0ZVF1ZXJ5UGFyYW1zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JlLnNldExvYWRpbmcodHJ1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nRGF0YSA9IHRydWU7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlcih0aGlzLmdldFBhcmFtZXRlcnMoZmlsdGVyUGFyYW1ldGVycyksIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiBxdWVyeVBhcmFtc1xuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JlLnNldFJlc3VsdChyZXN1bHQsIHJlc2V0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5zZXRFcnJvcihlKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuc2V0TG9hZGluZyhmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmdEYXRhID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2VhcmNoRGF0YShzZWFyY2g6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCB7IGZpbHRlclBhcmFtZXRlcnMgfSA9IHRoaXMuc3RvcmUuZ2V0VmFsdWUoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5sb2FkRGF0YSh7XG4gICAgICAgICAgICAuLi5maWx0ZXJQYXJhbWV0ZXJzLFxuICAgICAgICAgICAgc2VhcmNoXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBsb2FkTmV3UGFnZShzdGFydDogbnVtYmVyLCBsZW5ndGg6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCB7IGZpbHRlclBhcmFtZXRlcnMgfSA9IHRoaXMuc3RvcmUuZ2V0VmFsdWUoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5sb2FkRGF0YSh7XG4gICAgICAgICAgICAuLi5maWx0ZXJQYXJhbWV0ZXJzLFxuICAgICAgICAgICAgc3RhcnQsXG4gICAgICAgICAgICBsZW5ndGhcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGxvYWROZXh0UGFnZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgeyBmaWx0ZXJQYXJhbWV0ZXJzIH0gPSB0aGlzLnN0b3JlLmdldFZhbHVlKCk7XG4gICAgICAgIGF3YWl0IHRoaXMubG9hZERhdGEoe1xuICAgICAgICAgICAgLi4uZmlsdGVyUGFyYW1ldGVycyxcbiAgICAgICAgICAgIHN0YXJ0OiBmaWx0ZXJQYXJhbWV0ZXJzLnN0YXJ0ICsgZmlsdGVyUGFyYW1ldGVycy5sZW5ndGhcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlc2V0UGFnaW5nKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB7IGZpbHRlclBhcmFtZXRlcnMgfSA9IHRoaXMuc3RvcmUuZ2V0VmFsdWUoKTtcbiAgICAgICAgdGhpcy5zdG9yZS5zZXRQYXJhbWV0ZXJzKHtcbiAgICAgICAgICAgIC4uLmZpbHRlclBhcmFtZXRlcnMsXG4gICAgICAgICAgICBzdGFydDogMFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zdG9yZS51cGRhdGUoe1xuICAgICAgICAgICAgcmVzZXRQYWdpbmc6IHRydWVcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGRvd25sb2FkRGF0YShcbiAgICAgICAgdHlwZTogc3RyaW5nLFxuICAgICAgICBwYXJhbWV0ZXJzPzogRmlsdGVyUGFyYW1ldGVyc01vZGVsLFxuICAgICAgICB1cGRhdGVRdWVyeVBhcmFtczogYm9vbGVhbiA9IHRydWVcbiAgICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuc2V0TG9hZGluZyh0cnVlKTtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZ0RhdGEgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyUGFyYW1ldGVycyA9IHRoaXMubWVyZ2VQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpO1xuICAgICAgICAgICAgaWYgKGZpbHRlclBhcmFtZXRlcnMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFBhcmFtZXRlcnMoZmlsdGVyUGFyYW1ldGVycywgdXBkYXRlUXVlcnlQYXJhbXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5maWx0ZXJTZXJ2aWNlLmdldEZpbGUodHlwZSwgdGhpcy5nZXRQYXJhbWV0ZXJzKGZpbHRlclBhcmFtZXRlcnMpKSk7XG4gICAgICAgICAgICBGaWxlVXRpbHMuZG93bmxvYWRGaWxlKGAke3RoaXMuZG93bmxvYWRGaWxlTmFtZX0uJHt0eXBlfWAsIHJlc3VsdCk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuc2V0RXJyb3IoZSk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLnNldExvYWRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nRGF0YSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHByaW50RGF0YShwYXJhbWV0ZXJzPzogRmlsdGVyUGFyYW1ldGVyc01vZGVsLCB1cGRhdGVRdWVyeVBhcmFtczogYm9vbGVhbiA9IHRydWUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuc2V0TG9hZGluZyh0cnVlKTtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZ0RhdGEgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyUGFyYW1ldGVycyA9IHRoaXMubWVyZ2VQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpO1xuICAgICAgICAgICAgaWYgKGZpbHRlclBhcmFtZXRlcnMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFBhcmFtZXRlcnMoZmlsdGVyUGFyYW1ldGVycywgdXBkYXRlUXVlcnlQYXJhbXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5maWx0ZXJTZXJ2aWNlLmdldFByaW50YWJsZUh0bWwodGhpcy5nZXRQYXJhbWV0ZXJzKGZpbHRlclBhcmFtZXRlcnMpKSk7XG4gICAgICAgICAgICBGaWxlVXRpbHMub3BlblByaW50YWJsZVdpbmRvdyhyZXN1bHQpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLnNldEVycm9yKGUpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5zZXRMb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZ0RhdGEgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyB1cGRhdGVSdWxlKGlkOiBzdHJpbmcsIG5ld1J1bGU6IFF1ZXJ5UnVsZU1vZGVsKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgZmlsdGVyUGFyYW1ldGVycyB9ID0gdGhpcy5zdG9yZS5nZXRWYWx1ZSgpO1xuICAgICAgICBjb25zdCBydWxlcyA9IGZpbHRlclBhcmFtZXRlcnMucnVsZXM/LlswXTtcbiAgICAgICAgaWYgKCFydWxlcyB8fCBydWxlcy5ydWxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUnVsZXMoW25ld1J1bGVdKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG9sZFJ1bGUgPSBydWxlcy5ydWxlcy5maW5kKChyKSA9PiAociBhcyBRdWVyeVJ1bGVNb2RlbCkuaWQgPT09IGlkKSBhcyBRdWVyeVJ1bGVNb2RlbDtcbiAgICAgICAgbGV0IG5ld1J1bGVzID0gcnVsZXMucnVsZXM7XG4gICAgICAgIGlmIChvbGRSdWxlKSB7XG4gICAgICAgICAgICBpZiAobmV3UnVsZSkge1xuICAgICAgICAgICAgICAgIC8vIEFycmF5IHJlcGxhY2VcbiAgICAgICAgICAgICAgICBuZXdSdWxlcyA9IFtcbiAgICAgICAgICAgICAgICAgICAgLi4ucnVsZXMucnVsZXMuc2xpY2UoMCwgcnVsZXMucnVsZXMuaW5kZXhPZihvbGRSdWxlKSksXG4gICAgICAgICAgICAgICAgICAgIG5ld1J1bGUsXG4gICAgICAgICAgICAgICAgICAgIC4uLnJ1bGVzLnJ1bGVzLnNsaWNlKHJ1bGVzLnJ1bGVzLmluZGV4T2Yob2xkUnVsZSkgKyAxLCBydWxlcy5ydWxlcy5sZW5ndGgpXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbmV3UnVsZXMgPSBydWxlcy5ydWxlcy5maWx0ZXIoKHIpID0+IChyIGFzIFF1ZXJ5UnVsZU1vZGVsKS5pZCAhPT0gaWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV3UnVsZXMgPSBbLi4ubmV3UnVsZXMsIG5ld1J1bGVdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudXBkYXRlUnVsZXMobmV3UnVsZXMgYXMgUXVlcnlSdWxlTW9kZWxbXSk7XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZURlZmF1bHRSdWxlcyhydWxlOiAoUXVlcnlSdWxlTW9kZWwgfCBRdWVyeU1vZGVsKVtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RvcmUudXBkYXRlKHtcbiAgICAgICAgICAgIGRlZmF1bHRSdWxlczogcnVsZVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgdXBkYXRlR2xvYmFsUnVsZXMocnVsZXM6IFF1ZXJ5TW9kZWxbXSwgdXBkYXRlUXVlcnlQYXJhbXMgPSB0cnVlLCByZXNldCA9IHRydWUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHJlc2V0KSB7XG4gICAgICAgICAgICB0aGlzLnJlc2V0UGFnaW5nKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7IGZpbHRlclBhcmFtZXRlcnMgfSA9IHRoaXMuc3RvcmUuZ2V0VmFsdWUoKTtcbiAgICAgICAgY29uc3QgbmV3UnVsZXM6IEZpbHRlclBhcmFtZXRlcnNNb2RlbCA9IHtcbiAgICAgICAgICAgIC4uLmZpbHRlclBhcmFtZXRlcnMsXG4gICAgICAgICAgICBydWxlc1xuICAgICAgICB9O1xuXG4gICAgICAgIGF3YWl0IHRoaXMubG9hZERhdGEobmV3UnVsZXMsIHVwZGF0ZVF1ZXJ5UGFyYW1zKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkUnVsZUZyb21Db25maWcoY29uZmlnOiBGaWx0ZXJDb25maWd1cmF0aW9uTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZXNldFBhZ2luZygpO1xuXG4gICAgICAgIGNvbnN0IHsgZmlsdGVyUGFyYW1ldGVycyB9ID0gdGhpcy5zdG9yZS5nZXRWYWx1ZSgpO1xuXG4gICAgICAgIGNvbnN0IG5ld1J1bGVzOiBGaWx0ZXJQYXJhbWV0ZXJzTW9kZWwgPSB7XG4gICAgICAgICAgICAuLi5maWx0ZXJQYXJhbWV0ZXJzLFxuICAgICAgICAgICAgcnVsZXM6IFtcbiAgICAgICAgICAgICAgICAuLi4oZmlsdGVyUGFyYW1ldGVycy5ydWxlcyBhcyBRdWVyeU1vZGVsW10pLFxuICAgICAgICAgICAgICAgIFFCRmlsdGVyVXRpbHMuY3JlYXRlUXVlcnlNb2RlbChjb25maWcpXG4gICAgICAgICAgICBdXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5zdG9yZS51cGRhdGUoe1xuICAgICAgICAgICAgc2hvd1F1ZXJ5QnVpbGRlcjogdHJ1ZVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmxvYWREYXRhKG5ld1J1bGVzLCB0cnVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdXBkYXRlUnVsZXMocnVsZXM6IFF1ZXJ5UnVsZU1vZGVsW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyBmaWx0ZXJQYXJhbWV0ZXJzIH0gPSB0aGlzLnN0b3JlLmdldFZhbHVlKCk7XG4gICAgICAgIGNvbnN0IG5ld1J1bGVzOiBGaWx0ZXJQYXJhbWV0ZXJzTW9kZWwgPSB7XG4gICAgICAgICAgICBvcmRlcjogZmlsdGVyUGFyYW1ldGVycy5vcmRlcixcbiAgICAgICAgICAgIHJ1bGVzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb25kaXRpb246IFwiYW5kXCIsXG4gICAgICAgICAgICAgICAgICAgIHJ1bGVzXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMubG9hZERhdGEobmV3UnVsZXMsIHRydWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b2dnbGVRdWVyeUJ1aWxkZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RvcmUudXBkYXRlKChzdGF0ZSkgPT4gKHtcbiAgICAgICAgICAgIHNob3dRdWVyeUJ1aWxkZXI6ICFzdGF0ZS5zaG93UXVlcnlCdWlsZGVyXG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkTGlzdFZhbHVlKHZhbHVlOiBhbnksIG9wdHM/OiBBZGRFbnRpdGllc09wdGlvbnMpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyBmaWx0ZXJSZXN1bHQgfSA9IHRoaXMuc3RvcmUuZ2V0VmFsdWUoKTtcbiAgICAgICAgaWYgKCFmaWx0ZXJSZXN1bHQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc3RvcmUudXBkYXRlKHtcbiAgICAgICAgICAgIGZpbHRlclJlc3VsdDoge1xuICAgICAgICAgICAgICAgIC4uLmZpbHRlclJlc3VsdCxcbiAgICAgICAgICAgICAgICB2YWx1ZXM6IGFycmF5QWRkKGZpbHRlclJlc3VsdC52YWx1ZXMsIHZhbHVlLCBvcHRzKVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdXBkYXRlTGlzdFZhbHVlKHZhbHVlOiBhbnksIGtleSA9IFwiaWRcIik6IHZvaWQge1xuICAgICAgICBjb25zdCB7IGZpbHRlclJlc3VsdCB9ID0gdGhpcy5zdG9yZS5nZXRWYWx1ZSgpO1xuICAgICAgICBpZiAoIWZpbHRlclJlc3VsdCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zdG9yZS51cGRhdGUoe1xuICAgICAgICAgICAgZmlsdGVyUmVzdWx0OiB7XG4gICAgICAgICAgICAgICAgLi4uZmlsdGVyUmVzdWx0LFxuICAgICAgICAgICAgICAgIHZhbHVlczogYXJyYXlVcHNlcnQoZmlsdGVyUmVzdWx0LnZhbHVlcywgdmFsdWVba2V5XSwgdmFsdWUpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVMaXN0VmFsdWUodmFsdWU6IGFueSwga2V5ID0gXCJpZFwiKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgZmlsdGVyUmVzdWx0IH0gPSB0aGlzLnN0b3JlLmdldFZhbHVlKCk7XG4gICAgICAgIGlmICghZmlsdGVyUmVzdWx0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnN0b3JlLnVwZGF0ZSh7XG4gICAgICAgICAgICBmaWx0ZXJSZXN1bHQ6IHtcbiAgICAgICAgICAgICAgICAuLi5maWx0ZXJSZXN1bHQsXG4gICAgICAgICAgICAgICAgdmFsdWVzOiBhcnJheVJlbW92ZShmaWx0ZXJSZXN1bHQudmFsdWVzLCB2YWx1ZVtrZXldKVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UGFyYW1ldGVycyhmaWx0ZXJQYXJhbWV0ZXJzPzogRmlsdGVyUGFyYW1ldGVyc01vZGVsKTogRmlsdGVyUGFyYW1ldGVyc01vZGVsIHtcbiAgICAgICAgY29uc3QgeyBkZWZhdWx0UnVsZXMgfSA9IHRoaXMuc3RvcmUuZ2V0VmFsdWUoKTtcbiAgICAgICAgY29uc3QgcGFyYW1ldGVycyA9IHtcbiAgICAgICAgICAgIC4uLmZpbHRlclBhcmFtZXRlcnMsXG4gICAgICAgICAgICBydWxlczogZmlsdGVyUGFyYW1ldGVycz8ucnVsZXMgPyBbLi4uZmlsdGVyUGFyYW1ldGVycy5ydWxlc10gOiBbXVxuICAgICAgICB9O1xuICAgICAgICBpZiAoZGVmYXVsdFJ1bGVzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHBhcmFtZXRlcnMucnVsZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgY29uZGl0aW9uOiBcImFuZFwiLFxuICAgICAgICAgICAgICAgIHJ1bGVzOiBkZWZhdWx0UnVsZXNcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXJhbWV0ZXJzO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhc3luYyB1cGRhdGVRdWVyeVBhcmFtcyhxdWVyeVBhcmFtczogYW55KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICghdGhpcy5hY3RpdmF0ZWRSb3V0ZSB8fCB0aGlzLmRpc2FibGVRdWVyeVBhcmFtcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHtcbiAgICAgICAgICAgIHJlbGF0aXZlVG86IHRoaXMuYWN0aXZhdGVkUm91dGUsXG4gICAgICAgICAgICBxdWVyeVBhcmFtcyxcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6IFwibWVyZ2VcIlxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1lcmdlUGFyYW1ldGVycyhwYXJhbWV0ZXJzPzogRmlsdGVyUGFyYW1ldGVyc01vZGVsKTogRmlsdGVyUGFyYW1ldGVyc01vZGVsIHtcbiAgICAgICAgY29uc3QgeyBmaWx0ZXJQYXJhbWV0ZXJzIH0gPSB0aGlzLnN0b3JlLmdldFZhbHVlKCk7XG4gICAgICAgIGlmICghcGFyYW1ldGVycykge1xuICAgICAgICAgICAgcmV0dXJuIGZpbHRlclBhcmFtZXRlcnM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uZmlsdGVyUGFyYW1ldGVycyxcbiAgICAgICAgICAgIC4uLnBhcmFtZXRlcnMsXG4gICAgICAgICAgICBvcmRlcjogT3JkZXJVdGlscy5tZXJnZU9yZGVyKGZpbHRlclBhcmFtZXRlcnMub3JkZXIsIHBhcmFtZXRlcnMub3JkZXIpLFxuICAgICAgICAgICAgZmFsbGJhY2tPcmRlcjogT3JkZXJVdGlscy5jb21iaW5lT3JkZXJzKGZpbHRlclBhcmFtZXRlcnMuZmFsbGJhY2tPcmRlciwgcGFyYW1ldGVycy5mYWxsYmFja09yZGVyLCB7IHVuaXF1ZUZyb21CYWNrOiB0cnVlIH0pXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRQYXJhbWV0ZXJzKHBhcmFtZXRlcnM6IEZpbHRlclBhcmFtZXRlcnNNb2RlbCwgdXBkYXRlUXVlcnlQYXJhbXM6IGJvb2xlYW4gPSB0cnVlLCBtZXJnZTogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIGlmIChtZXJnZSkge1xuICAgICAgICAgICAgcGFyYW1ldGVycyA9IHRoaXMubWVyZ2VQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zdG9yZS5zZXRQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpO1xuICAgICAgICBpZiAodXBkYXRlUXVlcnlQYXJhbXMpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUXVlcnlQYXJhbXMoUXVlcnlQYXJhbXNVdGlscy5maWx0ZXJQYXJhbWV0ZXJzVG9QYXJhbXNNYXAocGFyYW1ldGVycykpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19