@firestitch/filter 15.0.1 → 16.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 (269) hide show
  1. package/app/classes/actions-controller.d.ts +41 -41
  2. package/app/components/action-button/action-button.component.d.ts +9 -9
  3. package/app/components/action-kebab-actions/action-kebab-actions.component.d.ts +7 -7
  4. package/app/components/actions/actions.component.d.ts +13 -13
  5. package/app/components/filter/filter.component.d.ts +204 -204
  6. package/app/components/filter-chip/filter-chip.component.d.ts +26 -26
  7. package/app/components/filter-chip-content/filter-chip-content.component.d.ts +18 -18
  8. package/app/components/filter-chips/filter-chips.component.d.ts +9 -9
  9. package/app/components/filter-drawer/filter-drawer.component.d.ts +30 -30
  10. package/app/components/filter-drawer-actions/filter-drawer-actions.component.d.ts +9 -9
  11. package/app/components/filters-item/autocomplete/autocomplete.component.d.ts +14 -14
  12. package/app/components/filters-item/autocompletechips/autocompletechips.component.d.ts +16 -16
  13. package/app/components/filters-item/base-item/base-item.component.d.ts +25 -25
  14. package/app/components/filters-item/checkbox/checkbox.component.d.ts +11 -11
  15. package/app/components/filters-item/chips/chips.component.d.ts +13 -13
  16. package/app/components/filters-item/date/date.component.d.ts +20 -20
  17. package/app/components/filters-item/date-range/date-range.component.d.ts +15 -15
  18. package/app/components/filters-item/filter-item.component.d.ts +39 -39
  19. package/app/components/filters-item/range/range.component.d.ts +15 -15
  20. package/app/components/filters-item/select/backdrop/backdrop.component.d.ts +6 -6
  21. package/app/components/filters-item/select/groups/groups.component.d.ts +12 -12
  22. package/app/components/filters-item/select/multiple/multiple.component.d.ts +15 -15
  23. package/app/components/filters-item/select/select.component.d.ts +23 -23
  24. package/app/components/filters-item/select/simple/simple.component.d.ts +14 -14
  25. package/app/components/filters-item/text/text.component.d.ts +19 -19
  26. package/app/components/filters-item/week/week.component.d.ts +12 -12
  27. package/app/components/saved-filter/index.d.ts +3 -3
  28. package/app/components/saved-filter/saved-filter-edit/index.d.ts +1 -1
  29. package/app/components/saved-filter/saved-filter-edit/saved-filter-edit.component.d.ts +18 -18
  30. package/app/components/saved-filter/saved-filter-manage/index.d.ts +1 -1
  31. package/app/components/saved-filter/saved-filter-manage/saved-filter-manage.component.d.ts +16 -16
  32. package/app/components/saved-filter/saved-filters-menu/index.d.ts +1 -1
  33. package/app/components/saved-filter/saved-filters-menu/saved-filters-menu.component.d.ts +24 -24
  34. package/app/consts/query-param-delimiter.d.ts +1 -1
  35. package/app/directives/focus-to-item/focus-to-item.directive.d.ts +27 -27
  36. package/app/directives/status-bar/status-bar.directive.d.ts +8 -8
  37. package/app/enums/action-mode.enum.d.ts +6 -6
  38. package/app/enums/action-type.enum.d.ts +9 -9
  39. package/app/enums/button-style.d.ts +9 -9
  40. package/app/enums/index.d.ts +6 -6
  41. package/app/enums/item-date-mode.enum.d.ts +5 -5
  42. package/app/enums/item-type.enum.d.ts +15 -15
  43. package/app/enums/picker-view-type.enum.d.ts +7 -7
  44. package/app/fs-filter.module.d.ts +70 -70
  45. package/app/helpers/build-query-params.d.ts +3 -3
  46. package/app/helpers/compare.d.ts +2 -2
  47. package/app/helpers/create-filter-item.d.ts +14 -14
  48. package/app/helpers/find-value.d.ts +1 -1
  49. package/app/helpers/get-range-name.d.ts +1 -1
  50. package/app/helpers/parse-date.d.ts +1 -1
  51. package/app/helpers/parse-item-value-from-stored.d.ts +1 -1
  52. package/app/helpers/query-param-transformers.d.ts +2 -2
  53. package/app/helpers/restore-items.d.ts +12 -12
  54. package/app/injectors/filter-config.d.ts +2 -2
  55. package/app/injectors/filter-drawer-data.d.ts +2 -2
  56. package/app/injectors/filter-drawer-overlay.d.ts +2 -2
  57. package/app/interfaces/action.interface.d.ts +81 -81
  58. package/app/interfaces/config.interface.d.ts +66 -66
  59. package/app/interfaces/external-params.interface.d.ts +3 -3
  60. package/app/interfaces/filter.interface.d.ts +4 -4
  61. package/app/interfaces/index.d.ts +6 -6
  62. package/app/interfaces/items/autocomplete-chips.interface.d.ts +15 -15
  63. package/app/interfaces/items/autocomplete.interface.d.ts +9 -9
  64. package/app/interfaces/items/base.interface.d.ts +29 -29
  65. package/app/interfaces/items/checkbox.interface.d.ts +7 -7
  66. package/app/interfaces/items/chips.interface.d.ts +6 -6
  67. package/app/interfaces/items/date-range.interface.d.ts +8 -8
  68. package/app/interfaces/items/date.interface.d.ts +7 -7
  69. package/app/interfaces/items/range.interface.d.ts +13 -13
  70. package/app/interfaces/items/select.interface.d.ts +20 -20
  71. package/app/interfaces/items/text.interface.d.ts +9 -9
  72. package/app/interfaces/items/week.interface.d.ts +7 -7
  73. package/app/interfaces/saved-filters.interface.d.ts +18 -18
  74. package/app/interfaces/update-filter-item.interface.d.ts +4 -4
  75. package/app/models/action-menu-item.model.d.ts +23 -23
  76. package/app/models/action.model.d.ts +54 -54
  77. package/app/models/filter-config.d.ts +31 -31
  78. package/app/models/items/autocomplete/base-autocomplete-item.d.ts +12 -12
  79. package/app/models/items/autocomplete-chips-item.d.ts +20 -20
  80. package/app/models/items/autocomplete-item.d.ts +11 -11
  81. package/app/models/items/base-item.d.ts +80 -80
  82. package/app/models/items/checkbox-item.d.ts +17 -17
  83. package/app/models/items/chips-item.d.ts +18 -18
  84. package/app/models/items/date/base-date-item.d.ts +14 -14
  85. package/app/models/items/date-item.d.ts +8 -8
  86. package/app/models/items/date-range/base-date-range-item.d.ts +17 -17
  87. package/app/models/items/date-range-item.d.ts +6 -6
  88. package/app/models/items/date-time-item.d.ts +7 -7
  89. package/app/models/items/date-time-range-item.d.ts +6 -6
  90. package/app/models/items/range-item.d.ts +19 -19
  91. package/app/models/items/select/base-select-item.d.ts +13 -13
  92. package/app/models/items/select/multiple-select-item.d.ts +14 -14
  93. package/app/models/items/select/simple-select-item.d.ts +14 -14
  94. package/app/models/items/select-item.d.ts +8 -8
  95. package/app/models/items/text-item.d.ts +15 -15
  96. package/app/models/items/week-item.d.ts +18 -18
  97. package/app/pipes/remove-isolate-value.pipe.d.ts +8 -8
  98. package/app/providers/filter-meta.d.ts +5 -5
  99. package/app/services/external-params/persistance-params-controller.service.d.ts +21 -21
  100. package/app/services/external-params/query-params-controller.service.d.ts +22 -22
  101. package/app/services/external-params/saved-filters-controller.service.d.ts +40 -40
  102. package/app/services/external-params-controller.service.d.ts +42 -42
  103. package/app/services/filter-overlay.service.d.ts +36 -36
  104. package/app/services/focus-controller.service.d.ts +18 -18
  105. package/app/services/items-store.service.d.ts +69 -69
  106. package/esm2022/app/classes/actions-controller.mjs +130 -0
  107. package/esm2022/app/components/action-button/action-button.component.mjs +21 -0
  108. package/esm2022/app/components/action-kebab-actions/action-kebab-actions.component.mjs +18 -0
  109. package/esm2022/app/components/actions/actions.component.mjs +40 -0
  110. package/esm2022/app/components/filter/filter.component.mjs +626 -0
  111. package/esm2022/app/components/filter-chip/filter-chip.component.mjs +92 -0
  112. package/esm2022/app/components/filter-chip-content/filter-chip-content.component.mjs +83 -0
  113. package/esm2022/app/components/filter-chips/filter-chips.component.mjs +18 -0
  114. package/esm2022/app/components/filter-drawer/filter-drawer.component.mjs +78 -0
  115. package/esm2022/app/components/filter-drawer-actions/filter-drawer-actions.component.mjs +27 -0
  116. package/esm2022/app/components/filters-item/autocomplete/autocomplete.component.mjs +29 -0
  117. package/esm2022/app/components/filters-item/autocompletechips/autocompletechips.component.mjs +44 -0
  118. package/esm2022/app/components/filters-item/base-item/base-item.component.mjs +68 -0
  119. package/esm2022/app/components/filters-item/checkbox/checkbox.component.mjs +23 -0
  120. package/esm2022/app/components/filters-item/chips/chips.component.mjs +30 -0
  121. package/esm2022/app/components/filters-item/date/date.component.mjs +45 -0
  122. package/esm2022/app/components/filters-item/date-range/date-range.component.mjs +36 -0
  123. package/esm2022/app/components/filters-item/filter-item.component.mjs +82 -0
  124. package/esm2022/app/components/filters-item/range/range.component.mjs +49 -0
  125. package/{esm2020 → esm2022}/app/components/filters-item/select/backdrop/backdrop.component.mjs +12 -12
  126. package/esm2022/app/components/filters-item/select/groups/groups.component.mjs +33 -0
  127. package/esm2022/app/components/filters-item/select/multiple/multiple.component.mjs +60 -0
  128. package/esm2022/app/components/filters-item/select/select.component.mjs +55 -0
  129. package/esm2022/app/components/filters-item/select/simple/simple.component.mjs +46 -0
  130. package/esm2022/app/components/filters-item/text/text.component.mjs +51 -0
  131. package/esm2022/app/components/filters-item/week/week.component.mjs +26 -0
  132. package/{esm2020 → esm2022}/app/components/saved-filter/index.mjs +3 -3
  133. package/{esm2020 → esm2022}/app/components/saved-filter/saved-filter-edit/index.mjs +1 -1
  134. package/esm2022/app/components/saved-filter/saved-filter-edit/saved-filter-edit.component.mjs +55 -0
  135. package/{esm2020 → esm2022}/app/components/saved-filter/saved-filter-manage/index.mjs +1 -1
  136. package/esm2022/app/components/saved-filter/saved-filter-manage/saved-filter-manage.component.mjs +45 -0
  137. package/{esm2020 → esm2022}/app/components/saved-filter/saved-filters-menu/index.mjs +1 -1
  138. package/esm2022/app/components/saved-filter/saved-filters-menu/saved-filters-menu.component.mjs +61 -0
  139. package/{esm2020 → esm2022}/app/consts/query-param-delimiter.mjs +1 -1
  140. package/esm2022/app/directives/focus-to-item/focus-to-item.directive.mjs +141 -0
  141. package/esm2022/app/directives/status-bar/status-bar.directive.mjs +17 -0
  142. package/{esm2020 → esm2022}/app/enums/action-mode.enum.mjs +7 -7
  143. package/{esm2020 → esm2022}/app/enums/action-type.enum.mjs +10 -10
  144. package/{esm2020 → esm2022}/app/enums/button-style.mjs +10 -10
  145. package/{esm2020 → esm2022}/app/enums/index.mjs +6 -6
  146. package/{esm2020 → esm2022}/app/enums/item-date-mode.enum.mjs +6 -6
  147. package/{esm2020 → esm2022}/app/enums/item-type.enum.mjs +16 -16
  148. package/{esm2020 → esm2022}/app/enums/picker-view-type.enum.mjs +8 -8
  149. package/{esm2020 → esm2022}/app/fs-filter.module.mjs +261 -261
  150. package/{esm2020 → esm2022}/app/helpers/build-query-params.mjs +32 -32
  151. package/{esm2020 → esm2022}/app/helpers/compare.mjs +37 -37
  152. package/{esm2020 → esm2022}/app/helpers/create-filter-item.mjs +54 -54
  153. package/{esm2020 → esm2022}/app/helpers/find-value.mjs +12 -12
  154. package/{esm2020 → esm2022}/app/helpers/get-range-name.mjs +3 -3
  155. package/{esm2020 → esm2022}/app/helpers/parse-date.mjs +7 -7
  156. package/{esm2020 → esm2022}/app/helpers/parse-item-value-from-stored.mjs +76 -76
  157. package/{esm2020 → esm2022}/app/helpers/query-param-transformers.mjs +8 -8
  158. package/{esm2020 → esm2022}/app/helpers/restore-items.mjs +48 -48
  159. package/{esm2020 → esm2022}/app/injectors/filter-config.mjs +2 -2
  160. package/{esm2020 → esm2022}/app/injectors/filter-drawer-data.mjs +2 -2
  161. package/{esm2020 → esm2022}/app/injectors/filter-drawer-overlay.mjs +2 -2
  162. package/{esm2020 → esm2022}/app/interfaces/action.interface.mjs +1 -1
  163. package/{esm2020 → esm2022}/app/interfaces/config.interface.mjs +1 -1
  164. package/{esm2020 → esm2022}/app/interfaces/external-params.interface.mjs +1 -1
  165. package/{esm2020 → esm2022}/app/interfaces/filter.interface.mjs +1 -1
  166. package/{esm2020 → esm2022}/app/interfaces/index.mjs +6 -6
  167. package/{esm2020 → esm2022}/app/interfaces/items/autocomplete-chips.interface.mjs +1 -1
  168. package/{esm2020 → esm2022}/app/interfaces/items/autocomplete.interface.mjs +1 -1
  169. package/{esm2020 → esm2022}/app/interfaces/items/base.interface.mjs +1 -1
  170. package/{esm2020 → esm2022}/app/interfaces/items/checkbox.interface.mjs +1 -1
  171. package/{esm2020 → esm2022}/app/interfaces/items/chips.interface.mjs +1 -1
  172. package/{esm2020 → esm2022}/app/interfaces/items/date-range.interface.mjs +1 -1
  173. package/{esm2020 → esm2022}/app/interfaces/items/date.interface.mjs +1 -1
  174. package/{esm2020 → esm2022}/app/interfaces/items/range.interface.mjs +1 -1
  175. package/{esm2020 → esm2022}/app/interfaces/items/select.interface.mjs +1 -1
  176. package/{esm2020 → esm2022}/app/interfaces/items/text.interface.mjs +1 -1
  177. package/{esm2020 → esm2022}/app/interfaces/items/week.interface.mjs +1 -1
  178. package/{esm2020 → esm2022}/app/interfaces/saved-filters.interface.mjs +1 -1
  179. package/{esm2020 → esm2022}/app/interfaces/update-filter-item.interface.mjs +1 -1
  180. package/esm2022/app/models/action-menu-item.model.mjs +73 -0
  181. package/esm2022/app/models/action.model.mjs +156 -0
  182. package/esm2022/app/models/filter-config.mjs +79 -0
  183. package/esm2022/app/models/items/autocomplete/base-autocomplete-item.mjs +16 -0
  184. package/{esm2020 → esm2022}/app/models/items/autocomplete-chips-item.mjs +67 -61
  185. package/{esm2020 → esm2022}/app/models/items/autocomplete-item.mjs +32 -32
  186. package/esm2022/app/models/items/base-item.mjs +254 -0
  187. package/esm2022/app/models/items/checkbox-item.mjs +52 -0
  188. package/esm2022/app/models/items/chips-item.mjs +90 -0
  189. package/esm2022/app/models/items/date/base-date-item.mjs +50 -0
  190. package/{esm2020 → esm2022}/app/models/items/date-item.mjs +18 -18
  191. package/{esm2020 → esm2022}/app/models/items/date-range/base-date-range-item.mjs +123 -123
  192. package/{esm2020 → esm2022}/app/models/items/date-range-item.mjs +6 -6
  193. package/{esm2020 → esm2022}/app/models/items/date-time-item.mjs +9 -9
  194. package/{esm2020 → esm2022}/app/models/items/date-time-range-item.mjs +6 -6
  195. package/esm2022/app/models/items/range-item.mjs +85 -0
  196. package/esm2022/app/models/items/select/base-select-item.mjs +40 -0
  197. package/{esm2020 → esm2022}/app/models/items/select/multiple-select-item.mjs +87 -87
  198. package/{esm2020 → esm2022}/app/models/items/select/simple-select-item.mjs +65 -65
  199. package/esm2022/app/models/items/select-item.mjs +12 -0
  200. package/esm2022/app/models/items/text-item.mjs +36 -0
  201. package/esm2022/app/models/items/week-item.mjs +95 -0
  202. package/{esm2020 → esm2022}/app/pipes/remove-isolate-value.pipe.mjs +21 -21
  203. package/{esm2020 → esm2022}/app/providers/filter-meta.mjs +9 -9
  204. package/esm2022/app/services/external-params/persistance-params-controller.service.mjs +62 -0
  205. package/esm2022/app/services/external-params/query-params-controller.service.mjs +66 -0
  206. package/esm2022/app/services/external-params/saved-filters-controller.service.mjs +167 -0
  207. package/esm2022/app/services/external-params-controller.service.mjs +185 -0
  208. package/esm2022/app/services/filter-overlay.service.mjs +130 -0
  209. package/esm2022/app/services/focus-controller.service.mjs +29 -0
  210. package/esm2022/app/services/items-store.service.mjs +347 -0
  211. package/{esm2020 → esm2022}/firestitch-filter.mjs +4 -4
  212. package/{esm2020 → esm2022}/public_api.mjs +35 -35
  213. package/{fesm2020 → fesm2022}/firestitch-filter.mjs +4516 -4311
  214. package/{fesm2020 → fesm2022}/firestitch-filter.mjs.map +1 -1
  215. package/index.d.ts +5 -5
  216. package/package.json +5 -11
  217. package/public_api.d.ts +40 -40
  218. package/esm2020/app/classes/actions-controller.mjs +0 -127
  219. package/esm2020/app/components/action-button/action-button.component.mjs +0 -22
  220. package/esm2020/app/components/action-kebab-actions/action-kebab-actions.component.mjs +0 -17
  221. package/esm2020/app/components/actions/actions.component.mjs +0 -42
  222. package/esm2020/app/components/filter/filter.component.mjs +0 -614
  223. package/esm2020/app/components/filter-chip/filter-chip.component.mjs +0 -86
  224. package/esm2020/app/components/filter-chip-content/filter-chip-content.component.mjs +0 -79
  225. package/esm2020/app/components/filter-chips/filter-chips.component.mjs +0 -19
  226. package/esm2020/app/components/filter-drawer/filter-drawer.component.mjs +0 -71
  227. package/esm2020/app/components/filter-drawer-actions/filter-drawer-actions.component.mjs +0 -29
  228. package/esm2020/app/components/filters-item/autocomplete/autocomplete.component.mjs +0 -27
  229. package/esm2020/app/components/filters-item/autocompletechips/autocompletechips.component.mjs +0 -42
  230. package/esm2020/app/components/filters-item/base-item/base-item.component.mjs +0 -63
  231. package/esm2020/app/components/filters-item/checkbox/checkbox.component.mjs +0 -21
  232. package/esm2020/app/components/filters-item/chips/chips.component.mjs +0 -28
  233. package/esm2020/app/components/filters-item/date/date.component.mjs +0 -43
  234. package/esm2020/app/components/filters-item/date-range/date-range.component.mjs +0 -34
  235. package/esm2020/app/components/filters-item/filter-item.component.mjs +0 -80
  236. package/esm2020/app/components/filters-item/range/range.component.mjs +0 -45
  237. package/esm2020/app/components/filters-item/select/groups/groups.component.mjs +0 -30
  238. package/esm2020/app/components/filters-item/select/multiple/multiple.component.mjs +0 -57
  239. package/esm2020/app/components/filters-item/select/select.component.mjs +0 -51
  240. package/esm2020/app/components/filters-item/select/simple/simple.component.mjs +0 -43
  241. package/esm2020/app/components/filters-item/text/text.component.mjs +0 -49
  242. package/esm2020/app/components/filters-item/week/week.component.mjs +0 -24
  243. package/esm2020/app/components/saved-filter/saved-filter-edit/saved-filter-edit.component.mjs +0 -50
  244. package/esm2020/app/components/saved-filter/saved-filter-manage/saved-filter-manage.component.mjs +0 -40
  245. package/esm2020/app/components/saved-filter/saved-filters-menu/saved-filters-menu.component.mjs +0 -57
  246. package/esm2020/app/directives/focus-to-item/focus-to-item.directive.mjs +0 -130
  247. package/esm2020/app/directives/status-bar/status-bar.directive.mjs +0 -16
  248. package/esm2020/app/models/action-menu-item.model.mjs +0 -67
  249. package/esm2020/app/models/action.model.mjs +0 -130
  250. package/esm2020/app/models/filter-config.mjs +0 -67
  251. package/esm2020/app/models/items/autocomplete/base-autocomplete-item.mjs +0 -14
  252. package/esm2020/app/models/items/base-item.mjs +0 -237
  253. package/esm2020/app/models/items/checkbox-item.mjs +0 -50
  254. package/esm2020/app/models/items/chips-item.mjs +0 -89
  255. package/esm2020/app/models/items/date/base-date-item.mjs +0 -48
  256. package/esm2020/app/models/items/range-item.mjs +0 -82
  257. package/esm2020/app/models/items/select/base-select-item.mjs +0 -37
  258. package/esm2020/app/models/items/select-item.mjs +0 -11
  259. package/esm2020/app/models/items/text-item.mjs +0 -34
  260. package/esm2020/app/models/items/week-item.mjs +0 -94
  261. package/esm2020/app/services/external-params/persistance-params-controller.service.mjs +0 -57
  262. package/esm2020/app/services/external-params/query-params-controller.service.mjs +0 -62
  263. package/esm2020/app/services/external-params/saved-filters-controller.service.mjs +0 -163
  264. package/esm2020/app/services/external-params-controller.service.mjs +0 -179
  265. package/esm2020/app/services/filter-overlay.service.mjs +0 -122
  266. package/esm2020/app/services/focus-controller.service.mjs +0 -30
  267. package/esm2020/app/services/items-store.service.mjs +0 -345
  268. package/fesm2015/firestitch-filter.mjs +0 -4562
  269. package/fesm2015/firestitch-filter.mjs.map +0 -1
@@ -0,0 +1,62 @@
1
+ import { Location } from '@angular/common';
2
+ import { Injectable, Optional } from '@angular/core';
3
+ import { ActivatedRoute } from '@angular/router';
4
+ import { MatDialogRef } from '@angular/material/dialog';
5
+ import { getNormalizedPath } from '@firestitch/common';
6
+ import { DrawerRef } from '@firestitch/drawer';
7
+ import { FsPersistanceStore, FsStore } from '@firestitch/store';
8
+ import { restoreItems } from '../../helpers/restore-items';
9
+ import { FsFilterItemsStore } from '../items-store.service';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "@firestitch/store";
12
+ import * as i2 from "@angular/router";
13
+ import * as i3 from "@angular/common";
14
+ import * as i4 from "../items-store.service";
15
+ import * as i5 from "@angular/material/dialog";
16
+ import * as i6 from "@firestitch/drawer";
17
+ const FILTER_STORE_KEY = 'fs-filter-persist';
18
+ export class PersistanceParamsController extends FsPersistanceStore {
19
+ _location;
20
+ _itemsStore;
21
+ _dialogRef;
22
+ _drawerRef;
23
+ STORE_KEY = FILTER_STORE_KEY;
24
+ _paramsCase;
25
+ constructor(_store, _route, _location, _itemsStore, _dialogRef, _drawerRef) {
26
+ super(_store, _route);
27
+ this._location = _location;
28
+ this._itemsStore = _itemsStore;
29
+ this._dialogRef = _dialogRef;
30
+ this._drawerRef = _drawerRef;
31
+ }
32
+ init(persistanceConfig, namespace, paramsCase) {
33
+ this._paramsCase = paramsCase;
34
+ namespace = namespace ?? getNormalizedPath(this._location);
35
+ const persistanceDisabled = !!this._dialogRef || !!this._drawerRef;
36
+ this.setConfig(persistanceConfig, namespace, persistanceDisabled);
37
+ }
38
+ restore() {
39
+ if (!this.enabled) {
40
+ return;
41
+ }
42
+ super.restore();
43
+ const items = [
44
+ ...this._itemsStore.items,
45
+ this._itemsStore.sortByItem,
46
+ this._itemsStore.sortDirectionItem,
47
+ ].filter((item) => !!item);
48
+ if (this._value) {
49
+ this._value.data = restoreItems(this._value.data, items);
50
+ }
51
+ }
52
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PersistanceParamsController, deps: [{ token: i1.FsStore }, { token: i2.ActivatedRoute }, { token: i3.Location }, { token: i4.FsFilterItemsStore }, { token: i5.MatDialogRef, optional: true }, { token: i6.DrawerRef, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
53
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PersistanceParamsController });
54
+ }
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PersistanceParamsController, decorators: [{
56
+ type: Injectable
57
+ }], ctorParameters: function () { return [{ type: i1.FsStore }, { type: i2.ActivatedRoute }, { type: i3.Location }, { type: i4.FsFilterItemsStore }, { type: i5.MatDialogRef, decorators: [{
58
+ type: Optional
59
+ }] }, { type: i6.DrawerRef, decorators: [{
60
+ type: Optional
61
+ }] }]; } });
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyc2lzdGFuY2UtcGFyYW1zLWNvbnRyb2xsZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2VydmljZXMvZXh0ZXJuYWwtcGFyYW1zL3BlcnNpc3RhbmNlLXBhcmFtcy1jb250cm9sbGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFeEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7O0FBRTVELE1BQU0sZ0JBQWdCLEdBQUcsbUJBQW1CLENBQUM7QUFJN0MsTUFBTSxPQUFPLDJCQUE0QixTQUFRLGtCQUF1QztJQVE1RTtJQUNBO0lBQ1k7SUFDQTtJQVRaLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQztJQUM3QixXQUFXLENBQW9CO0lBRXpDLFlBQ0UsTUFBZSxFQUNmLE1BQXNCLEVBQ2QsU0FBbUIsRUFDbkIsV0FBK0IsRUFDbkIsVUFBaUMsRUFDakMsVUFBOEI7UUFFbEQsS0FBSyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUxkLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFDbkIsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBQ25CLGVBQVUsR0FBVixVQUFVLENBQXVCO1FBQ2pDLGVBQVUsR0FBVixVQUFVLENBQW9CO0lBR3BELENBQUM7SUFFTSxJQUFJLENBQ1QsaUJBQXNDLEVBQ3RDLFNBQWlCLEVBQ2pCLFVBQTZCO1FBRTdCLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO1FBRTlCLFNBQVMsR0FBRyxTQUFTLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzNELE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7UUFFbkUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRU0sT0FBTztRQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2pCLE9BQU87U0FDUjtRQUVELEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUVoQixNQUFNLEtBQUssR0FBRztZQUNaLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLO1lBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVTtZQUMzQixJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQjtTQUNuQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTNCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLFlBQVksQ0FDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQ2hCLEtBQUssQ0FDTixDQUFDO1NBQ0g7SUFDSCxDQUFDO3dHQWhEVSwyQkFBMkI7NEdBQTNCLDJCQUEyQjs7NEZBQTNCLDJCQUEyQjtrQkFEdkMsVUFBVTs7MEJBV04sUUFBUTs7MEJBQ1IsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmltcG9ydCB7IGdldE5vcm1hbGl6ZWRQYXRoIH0gZnJvbSAnQGZpcmVzdGl0Y2gvY29tbW9uJztcbmltcG9ydCB7IERyYXdlclJlZiB9IGZyb20gJ0BmaXJlc3RpdGNoL2RyYXdlcic7XG5pbXBvcnQgeyBGc1BlcnNpc3RhbmNlU3RvcmUsIEZzU3RvcmUgfSBmcm9tICdAZmlyZXN0aXRjaC9zdG9yZSc7XG5cbmltcG9ydCB7IHJlc3RvcmVJdGVtcyB9IGZyb20gJy4uLy4uL2hlbHBlcnMvcmVzdG9yZS1pdGVtcyc7XG5pbXBvcnQgeyBGc0ZpbHRlclBlcnNpc3RhbmNlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZzRmlsdGVySXRlbXNTdG9yZSB9IGZyb20gJy4uL2l0ZW1zLXN0b3JlLnNlcnZpY2UnO1xuXG5jb25zdCBGSUxURVJfU1RPUkVfS0VZID0gJ2ZzLWZpbHRlci1wZXJzaXN0JztcblxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUGVyc2lzdGFuY2VQYXJhbXNDb250cm9sbGVyIGV4dGVuZHMgRnNQZXJzaXN0YW5jZVN0b3JlPEZzRmlsdGVyUGVyc2lzdGFuY2U+IHtcblxuICBwcm90ZWN0ZWQgU1RPUkVfS0VZID0gRklMVEVSX1NUT1JFX0tFWTtcbiAgcHJvdGVjdGVkIF9wYXJhbXNDYXNlOiAnc25ha2UnIHwgJ2NhbWVsJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBfc3RvcmU6IEZzU3RvcmUsXG4gICAgX3JvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIF9sb2NhdGlvbjogTG9jYXRpb24sXG4gICAgcHJpdmF0ZSBfaXRlbXNTdG9yZTogRnNGaWx0ZXJJdGVtc1N0b3JlLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX2RpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPHVua25vd24+LFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX2RyYXdlclJlZjogRHJhd2VyUmVmPHVua25vd24+LFxuICApIHtcbiAgICBzdXBlcihfc3RvcmUsIF9yb3V0ZSk7XG4gIH1cblxuICBwdWJsaWMgaW5pdChcbiAgICBwZXJzaXN0YW5jZUNvbmZpZzogRnNGaWx0ZXJQZXJzaXN0YW5jZSxcbiAgICBuYW1lc3BhY2U6IHN0cmluZyxcbiAgICBwYXJhbXNDYXNlOiAnc25ha2UnIHwgJ2NhbWVsJyxcbiAgKTogdm9pZCB7XG4gICAgdGhpcy5fcGFyYW1zQ2FzZSA9IHBhcmFtc0Nhc2U7XG5cbiAgICBuYW1lc3BhY2UgPSBuYW1lc3BhY2UgPz8gZ2V0Tm9ybWFsaXplZFBhdGgodGhpcy5fbG9jYXRpb24pO1xuICAgIGNvbnN0IHBlcnNpc3RhbmNlRGlzYWJsZWQgPSAhIXRoaXMuX2RpYWxvZ1JlZiB8fCAhIXRoaXMuX2RyYXdlclJlZjtcblxuICAgIHRoaXMuc2V0Q29uZmlnKHBlcnNpc3RhbmNlQ29uZmlnLCBuYW1lc3BhY2UsIHBlcnNpc3RhbmNlRGlzYWJsZWQpO1xuICB9XG5cbiAgcHVibGljIHJlc3RvcmUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmVuYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzdXBlci5yZXN0b3JlKCk7XG5cbiAgICBjb25zdCBpdGVtcyA9IFtcbiAgICAgIC4uLnRoaXMuX2l0ZW1zU3RvcmUuaXRlbXMsXG4gICAgICB0aGlzLl9pdGVtc1N0b3JlLnNvcnRCeUl0ZW0sXG4gICAgICB0aGlzLl9pdGVtc1N0b3JlLnNvcnREaXJlY3Rpb25JdGVtLFxuICAgIF0uZmlsdGVyKChpdGVtKSA9PiAhIWl0ZW0pO1xuXG4gICAgaWYgKHRoaXMuX3ZhbHVlKSB7XG4gICAgICB0aGlzLl92YWx1ZS5kYXRhID0gcmVzdG9yZUl0ZW1zKFxuICAgICAgICB0aGlzLl92YWx1ZS5kYXRhLFxuICAgICAgICBpdGVtcyxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
@@ -0,0 +1,66 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { ActivatedRoute } from '@angular/router';
3
+ import { restoreItems } from '../../helpers/restore-items';
4
+ import { FsFilterItemsStore } from '../items-store.service';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/router";
7
+ import * as i2 from "../items-store.service";
8
+ export class QueryParamsController {
9
+ _route;
10
+ _itemsStore;
11
+ _enabled = false;
12
+ _paramsCase;
13
+ _fetchedParams;
14
+ constructor(_route, _itemsStore) {
15
+ this._route = _route;
16
+ this._itemsStore = _itemsStore;
17
+ }
18
+ get enabled() {
19
+ return this._enabled;
20
+ }
21
+ get fetchedParams() {
22
+ return this._fetchedParams;
23
+ }
24
+ init(enabled, paramsCase) {
25
+ this._enabled = enabled;
26
+ this._paramsCase = paramsCase;
27
+ if (this.enabled) {
28
+ this.fetchFromQueryParams();
29
+ }
30
+ }
31
+ writeStateToQueryParams(params) {
32
+ if (this._enabled) {
33
+ this._replaceState(params);
34
+ }
35
+ }
36
+ /**
37
+ * Parse query and update filter values
38
+ */
39
+ fetchFromQueryParams() {
40
+ const items = [
41
+ ...this._itemsStore.items,
42
+ this._itemsStore.sortByItem,
43
+ this._itemsStore.sortDirectionItem,
44
+ ].filter((item) => !!item);
45
+ this._fetchedParams = restoreItems(this._route.snapshot.queryParams, items);
46
+ }
47
+ _replaceState(data) {
48
+ const url = new URL(window.location.href);
49
+ Object.keys(data)
50
+ .forEach((name) => {
51
+ if (data[name] === undefined || data[name] === null) {
52
+ url.searchParams.delete(name);
53
+ }
54
+ else {
55
+ url.searchParams.set(name, data[name]);
56
+ }
57
+ });
58
+ history.replaceState({}, null, url.pathname + url.search);
59
+ }
60
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: QueryParamsController, deps: [{ token: i1.ActivatedRoute }, { token: i2.FsFilterItemsStore }], target: i0.ɵɵFactoryTarget.Injectable });
61
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: QueryParamsController });
62
+ }
63
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: QueryParamsController, decorators: [{
64
+ type: Injectable
65
+ }], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.FsFilterItemsStore }]; } });
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktcGFyYW1zLWNvbnRyb2xsZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2VydmljZXMvZXh0ZXJuYWwtcGFyYW1zL3F1ZXJ5LXBhcmFtcy1jb250cm9sbGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7O0FBSTVELE1BQU0sT0FBTyxxQkFBcUI7SUFPdEI7SUFDQTtJQU5GLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDakIsV0FBVyxDQUFvQjtJQUMvQixjQUFjLENBQXNCO0lBRTVDLFlBQ1UsTUFBc0IsRUFDdEIsV0FBK0I7UUFEL0IsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFDdEIsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO0lBQ3RDLENBQUM7SUFFSixJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFXLGFBQWE7UUFDdEIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFFTSxJQUFJLENBQUMsT0FBZ0IsRUFBRSxVQUE2QjtRQUN6RCxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztRQUN4QixJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztRQUU5QixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7U0FDN0I7SUFDSCxDQUFDO0lBRU0sdUJBQXVCLENBQUMsTUFBTTtRQUNuQyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUM1QjtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNJLG9CQUFvQjtRQUN6QixNQUFNLEtBQUssR0FBRztZQUNaLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLO1lBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVTtZQUMzQixJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQjtTQUNuQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTNCLElBQUksQ0FBQyxjQUFjLEdBQUcsWUFBWSxDQUNoQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQ2hDLEtBQUssQ0FDTixDQUFDO0lBQ0osQ0FBQztJQUVPLGFBQWEsQ0FBQyxJQUFJO1FBQ3hCLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFMUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7YUFDZCxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNoQixJQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRTtnQkFDbEQsR0FBRyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDL0I7aUJBQU07Z0JBQ0wsR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2FBQ3ZDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFTCxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUQsQ0FBQzt3R0EvRFUscUJBQXFCOzRHQUFyQixxQkFBcUI7OzRGQUFyQixxQkFBcUI7a0JBRGpDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IHJlc3RvcmVJdGVtcyB9IGZyb20gJy4uLy4uL2hlbHBlcnMvcmVzdG9yZS1pdGVtcyc7XG5pbXBvcnQgeyBGc0ZpbHRlckl0ZW1zU3RvcmUgfSBmcm9tICcuLi9pdGVtcy1zdG9yZS5zZXJ2aWNlJztcblxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUXVlcnlQYXJhbXNDb250cm9sbGVyIHtcblxuICBwcml2YXRlIF9lbmFibGVkID0gZmFsc2U7XG4gIHByaXZhdGUgX3BhcmFtc0Nhc2U6ICdzbmFrZScgfCAnY2FtZWwnO1xuICBwcml2YXRlIF9mZXRjaGVkUGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX3JvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIF9pdGVtc1N0b3JlOiBGc0ZpbHRlckl0ZW1zU3RvcmUsXG4gICkge31cblxuICBwdWJsaWMgZ2V0IGVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2VuYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZldGNoZWRQYXJhbXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZldGNoZWRQYXJhbXM7XG4gIH1cblxuICBwdWJsaWMgaW5pdChlbmFibGVkOiBib29sZWFuLCBwYXJhbXNDYXNlOiAnc25ha2UnIHwgJ2NhbWVsJykge1xuICAgIHRoaXMuX2VuYWJsZWQgPSBlbmFibGVkO1xuICAgIHRoaXMuX3BhcmFtc0Nhc2UgPSBwYXJhbXNDYXNlO1xuXG4gICAgaWYgKHRoaXMuZW5hYmxlZCkge1xuICAgICAgdGhpcy5mZXRjaEZyb21RdWVyeVBhcmFtcygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB3cml0ZVN0YXRlVG9RdWVyeVBhcmFtcyhwYXJhbXMpIHtcbiAgICBpZiAodGhpcy5fZW5hYmxlZCkgeyBcbiAgICAgIHRoaXMuX3JlcGxhY2VTdGF0ZShwYXJhbXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZSBxdWVyeSBhbmQgdXBkYXRlIGZpbHRlciB2YWx1ZXNcbiAgICovXG4gIHB1YmxpYyBmZXRjaEZyb21RdWVyeVBhcmFtcygpIHtcbiAgICBjb25zdCBpdGVtcyA9IFtcbiAgICAgIC4uLnRoaXMuX2l0ZW1zU3RvcmUuaXRlbXMsXG4gICAgICB0aGlzLl9pdGVtc1N0b3JlLnNvcnRCeUl0ZW0sXG4gICAgICB0aGlzLl9pdGVtc1N0b3JlLnNvcnREaXJlY3Rpb25JdGVtLFxuICAgIF0uZmlsdGVyKChpdGVtKSA9PiAhIWl0ZW0pO1xuXG4gICAgdGhpcy5fZmV0Y2hlZFBhcmFtcyA9IHJlc3RvcmVJdGVtcyhcbiAgICAgIHRoaXMuX3JvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zLFxuICAgICAgaXRlbXMsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlcGxhY2VTdGF0ZShkYXRhKSB7XG4gICAgY29uc3QgdXJsID0gbmV3IFVSTCh3aW5kb3cubG9jYXRpb24uaHJlZik7XG5cbiAgICBPYmplY3Qua2V5cyhkYXRhKVxuICAgICAgLmZvckVhY2goKG5hbWUpID0+IHtcbiAgICAgICAgaWYoZGF0YVtuYW1lXSA9PT0gdW5kZWZpbmVkIHx8IGRhdGFbbmFtZV0gPT09IG51bGwpIHtcbiAgICAgICAgICB1cmwuc2VhcmNoUGFyYW1zLmRlbGV0ZShuYW1lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB1cmwuc2VhcmNoUGFyYW1zLnNldChuYW1lLGRhdGFbbmFtZV0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIGhpc3RvcnkucmVwbGFjZVN0YXRlKHt9LCBudWxsLCB1cmwucGF0aG5hbWUgKyB1cmwuc2VhcmNoKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,167 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { MatDialog } from '@angular/material/dialog';
3
+ import { BehaviorSubject, Subject } from 'rxjs';
4
+ import { distinctUntilChanged, take, takeUntil, tap, } from 'rxjs/operators';
5
+ import { FsFilterSavedFilterEditComponent, } from '../../components/saved-filter/saved-filter-edit/saved-filter-edit.component';
6
+ import { buildQueryParams } from '../../helpers/build-query-params';
7
+ import { restoreItems } from '../../helpers/restore-items';
8
+ import { FsFilterItemsStore } from '../items-store.service';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "../items-store.service";
11
+ import * as i2 from "@angular/material/dialog";
12
+ export class SavedFiltersController {
13
+ _itemsStore;
14
+ _dialog;
15
+ _config;
16
+ _savedFilters$ = new BehaviorSubject([]);
17
+ _activeFilter$ = new BehaviorSubject(null);
18
+ _enabled$ = new BehaviorSubject(false);
19
+ _paramsCase;
20
+ _destroy$ = new Subject();
21
+ constructor(_itemsStore, _dialog) {
22
+ this._itemsStore = _itemsStore;
23
+ this._dialog = _dialog;
24
+ }
25
+ get enabled() {
26
+ return this._enabled$.getValue();
27
+ }
28
+ get enabled$() {
29
+ return this._enabled$
30
+ .pipe(distinctUntilChanged());
31
+ }
32
+ get savedFilters() {
33
+ return this._savedFilters$.getValue();
34
+ }
35
+ set savedFilters(filters) {
36
+ this._savedFilters$.next(filters);
37
+ }
38
+ get savedFilters$() {
39
+ return this._savedFilters$
40
+ .pipe(distinctUntilChanged());
41
+ }
42
+ get activeFilter() {
43
+ return this._activeFilter$.getValue();
44
+ }
45
+ get activeFilter$() {
46
+ return this._activeFilter$
47
+ .pipe(distinctUntilChanged());
48
+ }
49
+ get activeFilterData() {
50
+ return this._activeFilter$.getValue()?.filters;
51
+ }
52
+ ngOnDestroy() {
53
+ this._destroy$.next();
54
+ this._destroy$.complete();
55
+ }
56
+ init(remoteParamsConfig, paramsCase) {
57
+ if (!remoteParamsConfig) {
58
+ this._setEnabledStatus(false);
59
+ return;
60
+ }
61
+ this._setEnabledStatus(true);
62
+ this._paramsCase = paramsCase;
63
+ this._config = remoteParamsConfig;
64
+ }
65
+ initSavedFilters(filters) {
66
+ filters = [...filters];
67
+ filters.forEach((savedFilter) => {
68
+ savedFilter.filters = restoreItems(savedFilter.filters, this._itemsStore.items);
69
+ });
70
+ this.savedFilters = filters;
71
+ }
72
+ load() {
73
+ return this._config.load()
74
+ .pipe(tap((response) => {
75
+ this.initSavedFilters(response);
76
+ }));
77
+ }
78
+ save(savedFilter) {
79
+ return this._config.save(savedFilter);
80
+ }
81
+ order(savedFilters) {
82
+ return this._config.order(savedFilters)
83
+ .pipe(tap(() => {
84
+ this.savedFilters = [
85
+ ...savedFilters,
86
+ ];
87
+ }));
88
+ }
89
+ delete(savedFilter) {
90
+ return this._config.delete(savedFilter)
91
+ .pipe(tap(() => {
92
+ this.savedFilters = this.savedFilters
93
+ .filter((f) => f.id !== savedFilter.id);
94
+ }));
95
+ }
96
+ setActiveFilter(savedFilter) {
97
+ if (savedFilter) {
98
+ const existingFilter = this.savedFilters
99
+ .find((f) => f.id === savedFilter.id);
100
+ if (!existingFilter) {
101
+ throw new Error(`Saved filter cannot be activated, because it does not exists. Filter ID = ${savedFilter.id}`);
102
+ }
103
+ this._activeFilter$.next(existingFilter);
104
+ }
105
+ else {
106
+ this._activeFilter$.next(null);
107
+ }
108
+ }
109
+ openSavedFilterEditDialog() {
110
+ const params = buildQueryParams(this._itemsStore.valuesAsQuery(), this._itemsStore.items);
111
+ const dialogConfig = {
112
+ data: {
113
+ params: params,
114
+ savedFilters: this.savedFilters,
115
+ saveCallback: this.save.bind(this),
116
+ },
117
+ };
118
+ this._dialog
119
+ .open(FsFilterSavedFilterEditComponent, dialogConfig)
120
+ .beforeClosed()
121
+ .pipe(take(1), takeUntil(this._destroy$))
122
+ .subscribe((updatedFilter) => {
123
+ if (updatedFilter) {
124
+ // get already saved related filter object
125
+ const savedFilter = this.savedFilters
126
+ .find((f) => f.id === updatedFilter.id);
127
+ // restore values from query string
128
+ updatedFilter.filters = restoreItems(updatedFilter.filters, this._itemsStore.items);
129
+ if (savedFilter) {
130
+ Object.assign(savedFilter, updatedFilter);
131
+ }
132
+ else {
133
+ this.resetActiveFilter();
134
+ this.savedFilters = [
135
+ ...this.savedFilters,
136
+ updatedFilter,
137
+ ];
138
+ }
139
+ this.updateActiveFilter();
140
+ }
141
+ });
142
+ }
143
+ updateActiveFilter() {
144
+ // Lookup active filter
145
+ const acitveFilter = this.savedFilters
146
+ .find((f) => f.active);
147
+ if (acitveFilter) {
148
+ this.setActiveFilter(acitveFilter);
149
+ }
150
+ }
151
+ resetActiveFilter() {
152
+ // Reset all previously activated filters
153
+ this.savedFilters.forEach((savedFilter) => {
154
+ savedFilter.active = false;
155
+ });
156
+ this.setActiveFilter(null);
157
+ }
158
+ _setEnabledStatus(value) {
159
+ this._enabled$.next(value);
160
+ }
161
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SavedFiltersController, deps: [{ token: i1.FsFilterItemsStore }, { token: i2.MatDialog }], target: i0.ɵɵFactoryTarget.Injectable });
162
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SavedFiltersController });
163
+ }
164
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SavedFiltersController, decorators: [{
165
+ type: Injectable
166
+ }], ctorParameters: function () { return [{ type: i1.FsFilterItemsStore }, { type: i2.MatDialog }]; } });
167
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F2ZWQtZmlsdGVycy1jb250cm9sbGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NlcnZpY2VzL2V4dGVybmFsLXBhcmFtcy9zYXZlZC1maWx0ZXJzLWNvbnRyb2xsZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRXRELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsZUFBZSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLElBQUksRUFDSixTQUFTLEVBQ1QsR0FBRyxHQUNKLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUNMLGdDQUFnQyxHQUNqQyxNQUFNLDZFQUE2RSxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQU0zRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7OztBQUk1RCxNQUFNLE9BQU8sc0JBQXNCO0lBV3ZCO0lBQ0E7SUFWQSxPQUFPLENBQTRCO0lBRXJDLGNBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBdUIsRUFBRSxDQUFDLENBQUM7SUFDL0QsY0FBYyxHQUFHLElBQUksZUFBZSxDQUFxQixJQUFJLENBQUMsQ0FBQztJQUMvRCxTQUFTLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDaEQsV0FBVyxDQUFvQjtJQUMvQixTQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUV4QyxZQUNVLFdBQStCLEVBQy9CLE9BQWtCO1FBRGxCLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQUMvQixZQUFPLEdB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Q0FBQyxDQUFDO1NBQ3BDO0lBQ0gsQ0FBQztJQUVNLGlCQUFpQjtRQUN0Qix5Q0FBeUM7UUFDekMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUN4QyxXQUFXLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVPLGlCQUFpQixDQUFDLEtBQWM7UUFDdEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQzt3R0EvTVUsc0JBQXNCOzRHQUF0QixzQkFBc0I7OzRGQUF0QixzQkFBc0I7a0JBRGxDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgdGFrZSxcbiAgdGFrZVVudGlsLFxuICB0YXAsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtcbiAgRnNGaWx0ZXJTYXZlZEZpbHRlckVkaXRDb21wb25lbnQsXG59IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvc2F2ZWQtZmlsdGVyL3NhdmVkLWZpbHRlci1lZGl0L3NhdmVkLWZpbHRlci1lZGl0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBidWlsZFF1ZXJ5UGFyYW1zIH0gZnJvbSAnLi4vLi4vaGVscGVycy9idWlsZC1xdWVyeS1wYXJhbXMnO1xuaW1wb3J0IHsgcmVzdG9yZUl0ZW1zIH0gZnJvbSAnLi4vLi4vaGVscGVycy9yZXN0b3JlLWl0ZW1zJztcbmltcG9ydCB7IElGaWx0ZXJFeHRlcm5hbFBhcmFtcyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZXh0ZXJuYWwtcGFyYW1zLmludGVyZmFjZSc7XG5pbXBvcnQge1xuICBJRmlsdGVyU2F2ZWRGaWx0ZXIsXG4gIElGaWx0ZXJTYXZlZEZpbHRlcnNDb25maWcsXG59IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvc2F2ZWQtZmlsdGVycy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRnNGaWx0ZXJJdGVtc1N0b3JlIH0gZnJvbSAnLi4vaXRlbXMtc3RvcmUuc2VydmljZSc7XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNhdmVkRmlsdGVyc0NvbnRyb2xsZXIgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gIHByb3RlY3RlZCBfY29uZmlnOiBJRmlsdGVyU2F2ZWRGaWx0ZXJzQ29uZmlnO1xuXG4gIHByaXZhdGUgX3NhdmVkRmlsdGVycyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElGaWx0ZXJTYXZlZEZpbHRlcltdPihbXSk7XG4gIHByaXZhdGUgX2FjdGl2ZUZpbHRlciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElGaWx0ZXJTYXZlZEZpbHRlcj4obnVsbCk7XG4gIHByaXZhdGUgX2VuYWJsZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgX3BhcmFtc0Nhc2U6ICdzbmFrZScgfCAnY2FtZWwnO1xuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfaXRlbXNTdG9yZTogRnNGaWx0ZXJJdGVtc1N0b3JlLFxuICAgIHByaXZhdGUgX2RpYWxvZzogTWF0RGlhbG9nLFxuICApIHt9XG5cbiAgcHVibGljIGdldCBlbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9lbmFibGVkJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBlbmFibGVkJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fZW5hYmxlZCRcbiAgICAgIC5waXBlKFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2F2ZWRGaWx0ZXJzKCk6IElGaWx0ZXJTYXZlZEZpbHRlcltdIHtcbiAgICByZXR1cm4gdGhpcy5fc2F2ZWRGaWx0ZXJzJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIHNldCBzYXZlZEZpbHRlcnMoZmlsdGVyczogSUZpbHRlclNhdmVkRmlsdGVyW10pIHtcbiAgICB0aGlzLl9zYXZlZEZpbHRlcnMkLm5leHQoZmlsdGVycyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNhdmVkRmlsdGVycyQoKTogT2JzZXJ2YWJsZTxJRmlsdGVyU2F2ZWRGaWx0ZXJbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zYXZlZEZpbHRlcnMkXG4gICAgICAucGlwZShcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFjdGl2ZUZpbHRlcigpOiBJRmlsdGVyU2F2ZWRGaWx0ZXIge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmVGaWx0ZXIkLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFjdGl2ZUZpbHRlciQoKTogT2JzZXJ2YWJsZTxJRmlsdGVyU2F2ZWRGaWx0ZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlRmlsdGVyJFxuICAgICAgLnBpcGUoXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIGdldCBhY3RpdmVGaWx0ZXJEYXRhKCk6IElGaWx0ZXJFeHRlcm5hbFBhcmFtcyB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZUZpbHRlciQuZ2V0VmFsdWUoKT8uZmlsdGVycztcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0KFxuICAgIHJlbW90ZVBhcmFtc0NvbmZpZzogSUZpbHRlclNhdmVkRmlsdGVyc0NvbmZpZyxcbiAgICBwYXJhbXNDYXNlOiAnc25ha2UnIHwgJ2NhbWVsJyxcbiAgKTogdm9pZCB7XG4gICAgaWYgKCFyZW1vdGVQYXJhbXNDb25maWcpIHtcbiAgICAgIHRoaXMuX3NldEVuYWJsZWRTdGF0dXMoZmFsc2UpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX3NldEVuYWJsZWRTdGF0dXModHJ1ZSk7XG5cbiAgICB0aGlzLl9wYXJhbXNDYXNlID0gcGFyYW1zQ2FzZTtcbiAgICB0aGlzLl9jb25maWcgPSByZW1vdGVQYXJhbXNDb25maWc7XG4gIH1cblxuICBwdWJsaWMgaW5pdFNhdmVkRmlsdGVycyhmaWx0ZXJzOiBJRmlsdGVyU2F2ZWRGaWx0ZXJbXSk6IHZvaWQge1xuICAgIGZpbHRlcnMgPSBbLi4uZmlsdGVyc107XG4gICAgZmlsdGVycy5mb3JFYWNoKChzYXZlZEZpbHRlcikgPT4ge1xuICAgICAgc2F2ZWRGaWx0ZXIuZmlsdGVycyA9IHJlc3RvcmVJdGVtcyhcbiAgICAgICAgc2F2ZWRGaWx0ZXIuZmlsdGVycyxcbiAgICAgICAgdGhpcy5faXRlbXNTdG9yZS5pdGVtcyxcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnNhdmVkRmlsdGVycyA9IGZpbHRlcnM7XG4gIH1cblxuICBwdWJsaWMgbG9hZCgpOiBPYnNlcnZhYmxlPElGaWx0ZXJTYXZlZEZpbHRlcltdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbmZpZy5sb2FkKClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgdGhpcy5pbml0U2F2ZWRGaWx0ZXJzKHJlc3BvbnNlKTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIHNhdmUoc2F2ZWRGaWx0ZXI6IElGaWx0ZXJTYXZlZEZpbHRlcik6IE9ic2VydmFibGU8SUZpbHRlclNhdmVkRmlsdGVyPiB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbmZpZy5zYXZlKHNhdmVkRmlsdGVyKTtcbiAgfVxuXG4gIHB1YmxpYyBvcmRlcihzYXZlZEZpbHRlcnM6IElGaWx0ZXJTYXZlZEZpbHRlcltdKTogT2JzZXJ2YWJsZTxJRmlsdGVyU2F2ZWRGaWx0ZXJbXT4ge1xuICAgIHJldHVybiB0aGlzLl9jb25maWcub3JkZXIoc2F2ZWRGaWx0ZXJzKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zYXZlZEZpbHRlcnMgPSBbXG4gICAgICAgICAgICAuLi5zYXZlZEZpbHRlcnMsXG4gICAgICAgICAgXTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIGRlbGV0ZShzYXZlZEZpbHRlcjogSUZpbHRlclNhdmVkRmlsdGVyKTogT2JzZXJ2YWJsZTxJRmlsdGVyU2F2ZWRGaWx0ZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fY29uZmlnLmRlbGV0ZShzYXZlZEZpbHRlcilcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2F2ZWRGaWx0ZXJzID0gdGhpcy5zYXZlZEZpbHRlcnNcbiAgICAgICAgICAgIC5maWx0ZXIoKGYpID0+IGYuaWQgIT09IHNhdmVkRmlsdGVyLmlkKTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIHNldEFjdGl2ZUZpbHRlcihzYXZlZEZpbHRlcjogSUZpbHRlclNhdmVkRmlsdGVyKTogdm9pZCB7XG4gICAgaWYgKHNhdmVkRmlsdGVyKSB7XG4gICAgICBjb25zdCBleGlzdGluZ0ZpbHRlciA9IHRoaXMuc2F2ZWRGaWx0ZXJzXG4gICAgICAgIC5maW5kKChmKSA9PiBmLmlkID09PSBzYXZlZEZpbHRlci5pZCk7XG5cbiAgICAgIGlmICghZXhpc3RpbmdGaWx0ZXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTYXZlZCBmaWx0ZXIgY2Fubm90IGJlIGFjdGl2YXRlZCwgYmVjYXVzZSBpdCBkb2VzIG5vdCBleGlzdHMuIEZpbHRlciBJRCA9ICR7c2F2ZWRGaWx0ZXIuaWR9YCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2FjdGl2ZUZpbHRlciQubmV4dChleGlzdGluZ0ZpbHRlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2FjdGl2ZUZpbHRlciQubmV4dChudWxsKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3BlblNhdmVkRmlsdGVyRWRpdERpYWxvZygpOiB2b2lkIHtcbiAgICBjb25zdCBwYXJhbXMgPSBidWlsZFF1ZXJ5UGFyYW1zKFxuICAgICAgdGhpcy5faXRlbXNTdG9yZS52YWx1ZXNBc1F1ZXJ5KCksXG4gICAgICB0aGlzLl9pdGVtc1N0b3JlLml0ZW1zLFxuICAgICk7XG5cbiAgICBjb25zdCBkaWFsb2dDb25maWcgPSB7XG4gICAgICBkYXRhOiB7XG4gICAgICAgIHBhcmFtczogcGFyYW1zLFxuICAgICAgICBzYXZlZEZpbHRlcnM6IHRoaXMuc2F2ZWRGaWx0ZXJzLFxuICAgICAgICBzYXZlQ2FsbGJhY2s6IHRoaXMuc2F2ZS5iaW5kKHRoaXMpLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgdGhpcy5fZGlhbG9nXG4gICAgICAub3BlbihGc0ZpbHRlclNhdmVkRmlsdGVyRWRpdENvbXBvbmVudCwgZGlhbG9nQ29uZmlnKVxuICAgICAgLmJlZm9yZUNsb3NlZCgpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHVwZGF0ZWRGaWx0ZXI6IElGaWx0ZXJTYXZlZEZpbHRlciB8IG51bGwpID0+IHtcbiAgICAgICAgaWYgKHVwZGF0ZWRGaWx0ZXIpIHtcbiAgICAgICAgICAvLyBnZXQgYWxyZWFkeSBzYXZlZCByZWxhdGVkIGZpbHRlciBvYmplY3RcbiAgICAgICAgICBjb25zdCBzYXZlZEZpbHRlciA9IHRoaXMuc2F2ZWRGaWx0ZXJzXG4gICAgICAgICAgICAuZmluZCgoZikgPT4gZi5pZCA9PT0gdXBkYXRlZEZpbHRlci5pZCk7XG5cbiAgICAgICAgICAvLyByZXN0b3JlIHZhbHVlcyBmcm9tIHF1ZXJ5IHN0cmluZ1xuICAgICAgICAgIHVwZGF0ZWRGaWx0ZXIuZmlsdGVycyA9IHJlc3RvcmVJdGVtcyhcbiAgICAgICAgICAgIHVwZGF0ZWRGaWx0ZXIuZmlsdGVycyxcbiAgICAgICAgICAgIHRoaXMuX2l0ZW1zU3RvcmUuaXRlbXMsXG4gICAgICAgICAgKTtcblxuXG4gICAgICAgICAgaWYgKHNhdmVkRmlsdGVyKSB7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHNhdmVkRmlsdGVyLCB1cGRhdGVkRmlsdGVyKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZXNldEFjdGl2ZUZpbHRlcigpO1xuICAgICAgICAgICAgdGhpcy5zYXZlZEZpbHRlcnMgPSBbXG4gICAgICAgICAgICAgIC4uLnRoaXMuc2F2ZWRGaWx0ZXJzLFxuICAgICAgICAgICAgICB1cGRhdGVkRmlsdGVyLFxuICAgICAgICAgICAgXTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLnVwZGF0ZUFjdGl2ZUZpbHRlcigpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVBY3RpdmVGaWx0ZXIoKTogdm9pZCB7XG4gICAgLy8gTG9va3VwIGFjdGl2ZSBmaWx0ZXJcbiAgICBjb25zdCBhY2l0dmVGaWx0ZXIgPSB0aGlzLnNhdmVkRmlsdGVyc1xuICAgICAgLmZpbmQoKGYpID0+IGYuYWN0aXZlKTtcblxuICAgIGlmIChhY2l0dmVGaWx0ZXIpIHtcbiAgICAgIHRoaXMuc2V0QWN0aXZlRmlsdGVyKGFjaXR2ZUZpbHRlcik7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlc2V0QWN0aXZlRmlsdGVyKCk6IHZvaWQge1xuICAgIC8vIFJlc2V0IGFsbCBwcmV2aW91c2x5IGFjdGl2YXRlZCBmaWx0ZXJzXG4gICAgdGhpcy5zYXZlZEZpbHRlcnMuZm9yRWFjaCgoc2F2ZWRGaWx0ZXIpID0+IHtcbiAgICAgIHNhdmVkRmlsdGVyLmFjdGl2ZSA9IGZhbHNlO1xuICAgIH0pO1xuXG4gICAgdGhpcy5zZXRBY3RpdmVGaWx0ZXIobnVsbCk7XG4gIH1cblxuICBwcml2YXRlIF9zZXRFbmFibGVkU3RhdHVzKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5fZW5hYmxlZCQubmV4dCh2YWx1ZSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,185 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { BehaviorSubject, of, Subject } from 'rxjs';
3
+ import { filter, switchMap, take, takeUntil } from 'rxjs/operators';
4
+ import { buildQueryParams } from '../helpers/build-query-params';
5
+ import { PersistanceParamsController } from './external-params/persistance-params-controller.service';
6
+ import { QueryParamsController } from './external-params/query-params-controller.service';
7
+ import { SavedFiltersController } from './external-params/saved-filters-controller.service';
8
+ import { FsFilterItemsStore } from './items-store.service';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "./items-store.service";
11
+ import * as i2 from "./external-params/persistance-params-controller.service";
12
+ import * as i3 from "./external-params/query-params-controller.service";
13
+ import * as i4 from "./external-params/saved-filters-controller.service";
14
+ export class ExternalParamsController {
15
+ _itemsStore;
16
+ _persistanceStore;
17
+ _queryParams;
18
+ _savedFilters;
19
+ _init;
20
+ _pending$ = new BehaviorSubject(false);
21
+ _shouldResetSavedFilters = true;
22
+ _config;
23
+ _destroy$ = new Subject();
24
+ constructor(_itemsStore, _persistanceStore, _queryParams, _savedFilters) {
25
+ this._itemsStore = _itemsStore;
26
+ this._persistanceStore = _persistanceStore;
27
+ this._queryParams = _queryParams;
28
+ this._savedFilters = _savedFilters;
29
+ }
30
+ get params() {
31
+ let result = {};
32
+ if (this._persistanceStore.enabled) {
33
+ result = {
34
+ ...result,
35
+ ...this._persistanceStore.value?.data,
36
+ };
37
+ }
38
+ if (this._savedFilters.enabled && this._savedFilters.activeFilter) {
39
+ const query = Object.keys(result)
40
+ .filter((key) => !this._itemsStore.itemNames.includes(key))
41
+ .reduce((acc, key) => {
42
+ return {
43
+ ...acc,
44
+ [key]: result[key],
45
+ };
46
+ }, {});
47
+ result = {
48
+ ...query,
49
+ ...this._savedFilters.activeFilterData,
50
+ };
51
+ }
52
+ else if (this._queryParams.enabled) {
53
+ result = {
54
+ ...result,
55
+ ...this._queryParams.fetchedParams,
56
+ };
57
+ }
58
+ return result;
59
+ }
60
+ get pending() {
61
+ return this._pending$.getValue();
62
+ }
63
+ get pending$() {
64
+ return this._pending$.asObservable();
65
+ }
66
+ get savedFiltersController() {
67
+ return this._savedFilters;
68
+ }
69
+ get savedFiltersEnabled() {
70
+ return this._savedFilters.enabled;
71
+ }
72
+ ngOnDestroy() {
73
+ this._destroy$.next();
74
+ this._destroy$.complete();
75
+ }
76
+ setConfig(config) {
77
+ this._config = config;
78
+ this._initPersistance();
79
+ this._initQueryParams();
80
+ this._initSavedFilters();
81
+ this.initItems();
82
+ }
83
+ setActiveSavedFilter(savedFilter) {
84
+ this.savedFiltersController.setActiveFilter(savedFilter);
85
+ if (savedFilter) {
86
+ this.reloadFiltersWithValues(savedFilter.filters, false);
87
+ }
88
+ }
89
+ reloadFiltersWithValues(params, shouldResetSavedFilters = true) {
90
+ this._shouldResetSavedFilters = shouldResetSavedFilters;
91
+ this._itemsStore.updateItemsWithValues(params);
92
+ this._saveQueryParams();
93
+ this._savePersistedParams();
94
+ }
95
+ initItems() {
96
+ this._pending$.next(true);
97
+ if (this._savedFilters.enabled) {
98
+ this._savedFilters
99
+ .load()
100
+ .pipe(takeUntil(this._destroy$))
101
+ .subscribe(() => {
102
+ this._savedFilters.updateActiveFilter();
103
+ this._initItemsValues();
104
+ this._listenAndResetSavedFilters();
105
+ this._pending$.next(false);
106
+ });
107
+ }
108
+ else {
109
+ this._initItemsValues();
110
+ this._pending$.next(false);
111
+ }
112
+ this._listenItemsChange();
113
+ }
114
+ _initItemsValues() {
115
+ this._itemsStore.init(this.params);
116
+ this._saveQueryParams();
117
+ this._savePersistedParams();
118
+ }
119
+ fetchQueryParams() {
120
+ this._initQueryParams();
121
+ this._itemsStore.updateItemsWithValues(this.params);
122
+ }
123
+ _initPersistance() {
124
+ this._persistanceStore.init(this._config.persist, this._config.namespace, this._config.case);
125
+ }
126
+ _initQueryParams() {
127
+ this._queryParams.init(this._config.queryParam, this._config.case);
128
+ }
129
+ _initSavedFilters() {
130
+ this._savedFilters.init(this._config.savedFilters, this._config.case);
131
+ }
132
+ _listenItemsChange() {
133
+ this._itemsStore.ready$
134
+ .pipe(filter((v) => v), take(1), takeUntil(this._destroy$))
135
+ .subscribe(() => {
136
+ this._saveQueryParams();
137
+ this._savePersistedParams();
138
+ });
139
+ this._itemsStore
140
+ .itemsChange$
141
+ .pipe(takeUntil(this._destroy$))
142
+ .subscribe(() => {
143
+ this._saveQueryParams();
144
+ this._savePersistedParams();
145
+ });
146
+ }
147
+ _listenAndResetSavedFilters() {
148
+ this._itemsStore
149
+ .itemsChange$
150
+ .pipe(filter(() => !!this.savedFiltersController.activeFilter), switchMap(() => {
151
+ const shouldReset = this._shouldResetSavedFilters;
152
+ this._shouldResetSavedFilters = true;
153
+ return of(shouldReset);
154
+ }), filter((shouldReset) => shouldReset), takeUntil(this._destroy$))
155
+ .subscribe(() => {
156
+ this.savedFiltersController.resetActiveFilter();
157
+ });
158
+ }
159
+ _saveQueryParams() {
160
+ const targetItems = this._itemsStore.items
161
+ .filter((item) => !item.queryParamsDisabled);
162
+ const params = buildQueryParams(this._itemsStore.valuesAsQuery({
163
+ onlyPresented: false,
164
+ items: targetItems,
165
+ persisted: true,
166
+ }), targetItems);
167
+ this._queryParams.writeStateToQueryParams(params);
168
+ }
169
+ _savePersistedParams() {
170
+ const targetItems = this._itemsStore.items
171
+ .filter((item) => !item.persistanceDisabled);
172
+ const params = buildQueryParams(this._itemsStore.valuesAsQuery({
173
+ onlyPresented: false,
174
+ items: targetItems,
175
+ persisted: true,
176
+ }), targetItems);
177
+ this._persistanceStore.save(params);
178
+ }
179
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ExternalParamsController, deps: [{ token: i1.FsFilterItemsStore }, { token: i2.PersistanceParamsController }, { token: i3.QueryParamsController }, { token: i4.SavedFiltersController }], target: i0.ɵɵFactoryTarget.Injectable });
180
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ExternalParamsController });
181
+ }
182
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ExternalParamsController, decorators: [{
183
+ type: Injectable
184
+ }], ctorParameters: function () { return [{ type: i1.FsFilterItemsStore }, { type: i2.PersistanceParamsController }, { type: i3.QueryParamsController }, { type: i4.SavedFiltersController }]; } });
185
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZXJuYWwtcGFyYW1zLWNvbnRyb2xsZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvc2VydmljZXMvZXh0ZXJuYWwtcGFyYW1zLWNvbnRyb2xsZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRXRELE9BQU8sRUFBRSxlQUFlLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFLakUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDdEcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDMUYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDNUYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7OztBQUkzRCxNQUFNLE9BQU8sd0JBQXdCO0lBVXpCO0lBQ0E7SUFDQTtJQUNBO0lBWEEsS0FBSyxDQUFDO0lBRVIsU0FBUyxHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLHdCQUF3QixHQUFHLElBQUksQ0FBQztJQUNoQyxPQUFPLENBQWlCO0lBQ3hCLFNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRXhDLFlBQ1UsV0FBK0IsRUFDL0IsaUJBQThDLEVBQzlDLFlBQW1DLEVBQ25DLGFBQXFDO1FBSHJDLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQUMvQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQTZCO1FBQzlDLGlCQUFZLEdBQVos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QUFHLGdCQUFnQixDQUM3QixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQztZQUM3QixhQUFhLEVBQUUsS0FBSztZQUNwQixLQUFLLEVBQUUsV0FBVztZQUNsQixTQUFTLEVBQUUsSUFBSTtTQUNoQixDQUFDLEVBQ0YsV0FBVyxDQUNaLENBQUM7UUFFRixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7d0dBMU5VLHdCQUF3Qjs0R0FBeEIsd0JBQXdCOzs0RkFBeEIsd0JBQXdCO2tCQURwQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgc3dpdGNoTWFwLCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IGJ1aWxkUXVlcnlQYXJhbXMgfSBmcm9tICcuLi9oZWxwZXJzL2J1aWxkLXF1ZXJ5LXBhcmFtcyc7XG5pbXBvcnQgeyBJRmlsdGVyRXh0ZXJuYWxQYXJhbXMgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2V4dGVybmFsLXBhcmFtcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSUZpbHRlclNhdmVkRmlsdGVyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9zYXZlZC1maWx0ZXJzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBGc0ZpbHRlckNvbmZpZyB9IGZyb20gJy4uL21vZGVscy9maWx0ZXItY29uZmlnJztcblxuaW1wb3J0IHsgUGVyc2lzdGFuY2VQYXJhbXNDb250cm9sbGVyIH0gZnJvbSAnLi9leHRlcm5hbC1wYXJhbXMvcGVyc2lzdGFuY2UtcGFyYW1zLWNvbnRyb2xsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBRdWVyeVBhcmFtc0NvbnRyb2xsZXIgfSBmcm9tICcuL2V4dGVybmFsLXBhcmFtcy9xdWVyeS1wYXJhbXMtY29udHJvbGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNhdmVkRmlsdGVyc0NvbnRyb2xsZXIgfSBmcm9tICcuL2V4dGVybmFsLXBhcmFtcy9zYXZlZC1maWx0ZXJzLWNvbnRyb2xsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBGc0ZpbHRlckl0ZW1zU3RvcmUgfSBmcm9tICcuL2l0ZW1zLXN0b3JlLnNlcnZpY2UnO1xuXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBFeHRlcm5hbFBhcmFtc0NvbnRyb2xsZXIgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gIHByb3RlY3RlZCBfaW5pdDtcblxuICBwcml2YXRlIF9wZW5kaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwcml2YXRlIF9zaG91bGRSZXNldFNhdmVkRmlsdGVycyA9IHRydWU7XG4gIHByaXZhdGUgX2NvbmZpZzogRnNGaWx0ZXJDb25maWc7XG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9pdGVtc1N0b3JlOiBGc0ZpbHRlckl0ZW1zU3RvcmUsXG4gICAgcHJpdmF0ZSBfcGVyc2lzdGFuY2VTdG9yZTogUGVyc2lzdGFuY2VQYXJhbXNDb250cm9sbGVyLFxuICAgIHByaXZhdGUgX3F1ZXJ5UGFyYW1zOiBRdWVyeVBhcmFtc0NvbnRyb2xsZXIsXG4gICAgcHJpdmF0ZSBfc2F2ZWRGaWx0ZXJzOiBTYXZlZEZpbHRlcnNDb250cm9sbGVyLFxuICApIHsgfVxuXG4gIHB1YmxpYyBnZXQgcGFyYW1zKCk6IElGaWx0ZXJFeHRlcm5hbFBhcmFtcyB7XG4gICAgbGV0IHJlc3VsdDogSUZpbHRlckV4dGVybmFsUGFyYW1zID0ge307XG5cbiAgICBpZiAodGhpcy5fcGVyc2lzdGFuY2VTdG9yZS5lbmFibGVkKSB7XG4gICAgICByZXN1bHQgPSB7XG4gICAgICAgIC4uLnJlc3VsdCwgXG4gICAgICAgIC4uLnRoaXMuX3BlcnNpc3RhbmNlU3RvcmUudmFsdWU/LmRhdGEsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9zYXZlZEZpbHRlcnMuZW5hYmxlZCAmJiB0aGlzLl9zYXZlZEZpbHRlcnMuYWN0aXZlRmlsdGVyKSB7XG4gICAgICBjb25zdCBxdWVyeSA9IE9iamVjdC5rZXlzKHJlc3VsdClcbiAgICAgICAgLmZpbHRlcigoa2V5KSA9PiAhdGhpcy5faXRlbXNTdG9yZS5pdGVtTmFtZXMuaW5jbHVkZXMoa2V5KSlcbiAgICAgICAgLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgICAgW2tleV06IHJlc3VsdFtrZXldLFxuICAgICAgICAgIH07XG4gICAgICAgIH0sIHt9KTtcblxuICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAuLi5xdWVyeSwgXG4gICAgICAgIC4uLnRoaXMuX3NhdmVkRmlsdGVycy5hY3RpdmVGaWx0ZXJEYXRhLFxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX3F1ZXJ5UGFyYW1zLmVuYWJsZWQpIHtcbiAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgLi4ucmVzdWx0LCBcbiAgICAgICAgLi4udGhpcy5fcXVlcnlQYXJhbXMuZmV0Y2hlZFBhcmFtcyxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGVuZGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcGVuZGluZyQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGVuZGluZyQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3BlbmRpbmckLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBzYXZlZEZpbHRlcnNDb250cm9sbGVyKCk6IFNhdmVkRmlsdGVyc0NvbnRyb2xsZXIge1xuICAgIHJldHVybiB0aGlzLl9zYXZlZEZpbHRlcnM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNhdmVkRmlsdGVyc0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3NhdmVkRmlsdGVycy5lbmFibGVkO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIHNldENvbmZpZyhjb25maWcpIHtcbiAgICB0aGlzLl9jb25maWcgPSBjb25maWc7XG5cbiAgICB0aGlzLl9pbml0UGVyc2lzdGFuY2UoKTtcbiAgICB0aGlzLl9pbml0UXVlcnlQYXJhbXMoKTtcbiAgICB0aGlzLl9pbml0U2F2ZWRGaWx0ZXJzKCk7XG4gICAgdGhpcy5pbml0SXRlbXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRBY3RpdmVTYXZlZEZpbHRlcihzYXZlZEZpbHRlcjogSUZpbHRlclNhdmVkRmlsdGVyKSB7XG4gICAgdGhpcy5zYXZlZEZpbHRlcnNDb250cm9sbGVyLnNldEFjdGl2ZUZpbHRlcihzYXZlZEZpbHRlcik7XG5cbiAgICBpZiAoc2F2ZWRGaWx0ZXIpIHtcbiAgICAgIHRoaXMucmVsb2FkRmlsdGVyc1dpdGhWYWx1ZXMoc2F2ZWRGaWx0ZXIuZmlsdGVycywgZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZWxvYWRGaWx0ZXJzV2l0aFZhbHVlcyhwYXJhbXM6IElGaWx0ZXJFeHRlcm5hbFBhcmFtcywgc2hvdWxkUmVzZXRTYXZlZEZpbHRlcnMgPSB0cnVlKSB7XG4gICAgdGhpcy5fc2hvdWxkUmVzZXRTYXZlZEZpbHRlcnMgPSBzaG91bGRSZXNldFNhdmVkRmlsdGVycztcbiAgICB0aGlzLl9pdGVtc1N0b3JlLnVwZGF0ZUl0ZW1zV2l0aFZhbHVlcyhwYXJhbXMpO1xuXG4gICAgdGhpcy5fc2F2ZVF1ZXJ5UGFyYW1zKCk7XG4gICAgdGhpcy5fc2F2ZVBlcnNpc3RlZFBhcmFtcygpO1xuICB9XG5cbiAgcHVibGljIGluaXRJdGVtcygpOiB2b2lkIHtcbiAgICB0aGlzLl9wZW5kaW5nJC5uZXh0KHRydWUpO1xuICAgIGlmICh0aGlzLl9zYXZlZEZpbHRlcnMuZW5hYmxlZCkge1xuICAgICAgdGhpcy5fc2F2ZWRGaWx0ZXJzXG4gICAgICAgIC5sb2FkKClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9zYXZlZEZpbHRlcnMudXBkYXRlQWN0aXZlRmlsdGVyKCk7XG4gICAgICAgICAgdGhpcy5faW5pdEl0ZW1zVmFsdWVzKCk7XG4gICAgICAgICAgdGhpcy5fbGlzdGVuQW5kUmVzZXRTYXZlZEZpbHRlcnMoKTtcbiAgICAgICAgICB0aGlzLl9wZW5kaW5nJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2luaXRJdGVtc1ZhbHVlcygpO1xuICAgICAgdGhpcy5fcGVuZGluZyQubmV4dChmYWxzZSk7XG4gICAgfVxuXG4gICAgdGhpcy5fbGlzdGVuSXRlbXNDaGFuZ2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBfaW5pdEl0ZW1zVmFsdWVzKCkge1xuICAgIHRoaXMuX2l0ZW1zU3RvcmUuaW5pdCh0aGlzLnBhcmFtcyk7XG4gICAgdGhpcy5fc2F2ZVF1ZXJ5UGFyYW1zKCk7XG4gICAgdGhpcy5fc2F2ZVBlcnNpc3RlZFBhcmFtcygpO1xuICB9XG5cbiAgcHVibGljIGZldGNoUXVlcnlQYXJhbXMoKTogdm9pZCB7XG4gICAgdGhpcy5faW5pdFF1ZXJ5UGFyYW1zKCk7XG4gICAgdGhpcy5faXRlbXNTdG9yZS51cGRhdGVJdGVtc1dpdGhWYWx1ZXModGhpcy5wYXJhbXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdFBlcnNpc3RhbmNlKCkge1xuICAgIHRoaXMuX3BlcnNpc3RhbmNlU3RvcmUuaW5pdChcbiAgICAgIHRoaXMuX2NvbmZpZy5wZXJzaXN0LFxuICAgICAgdGhpcy5fY29uZmlnLm5hbWVzcGFjZSxcbiAgICAgIHRoaXMuX2NvbmZpZy5jYXNlLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9pbml0UXVlcnlQYXJhbXMoKSB7XG4gICAgdGhpcy5fcXVlcnlQYXJhbXMuaW5pdCh0aGlzLl9jb25maWcucXVlcnlQYXJhbSwgdGhpcy5fY29uZmlnLmNhc2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdFNhdmVkRmlsdGVycygpIHtcbiAgICB0aGlzLl9zYXZlZEZpbHRlcnMuaW5pdCh0aGlzLl9jb25maWcuc2F2ZWRGaWx0ZXJzLCB0aGlzLl9jb25maWcuY2FzZSk7XG4gIH1cblxuICBwcml2YXRlIF9saXN0ZW5JdGVtc0NoYW5nZSgpIHtcbiAgICB0aGlzLl9pdGVtc1N0b3JlLnJlYWR5JFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigodikgPT4gdiksXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5fc2F2ZVF1ZXJ5UGFyYW1zKCk7XG4gICAgICAgIHRoaXMuX3NhdmVQZXJzaXN0ZWRQYXJhbXMoKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5faXRlbXNTdG9yZVxuICAgICAgLml0ZW1zQ2hhbmdlJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5fc2F2ZVF1ZXJ5UGFyYW1zKCk7XG4gICAgICAgIHRoaXMuX3NhdmVQZXJzaXN0ZWRQYXJhbXMoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfbGlzdGVuQW5kUmVzZXRTYXZlZEZpbHRlcnMoKTogdm9pZCB7XG4gICAgdGhpcy5faXRlbXNTdG9yZVxuICAgICAgLml0ZW1zQ2hhbmdlJFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoKSA9PiAhIXRoaXMuc2F2ZWRGaWx0ZXJzQ29udHJvbGxlci5hY3RpdmVGaWx0ZXIpLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHNob3VsZFJlc2V0ID0gdGhpcy5fc2hvdWxkUmVzZXRTYXZlZEZpbHRlcnM7XG5cbiAgICAgICAgICB0aGlzLl9zaG91bGRSZXNldFNhdmVkRmlsdGVycyA9IHRydWU7XG5cbiAgICAgICAgICByZXR1cm4gb2Yoc2hvdWxkUmVzZXQpO1xuICAgICAgICB9KSxcbiAgICAgICAgZmlsdGVyKChzaG91bGRSZXNldCkgPT4gc2hvdWxkUmVzZXQpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuc2F2ZWRGaWx0ZXJzQ29udHJvbGxlci5yZXNldEFjdGl2ZUZpbHRlcigpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9zYXZlUXVlcnlQYXJhbXMoKSB7XG4gICAgY29uc3QgdGFyZ2V0SXRlbXMgPSB0aGlzLl9pdGVtc1N0b3JlLml0ZW1zXG4gICAgICAuZmlsdGVyKChpdGVtKSA9PiAhaXRlbS5xdWVyeVBhcmFtc0Rpc2FibGVkKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IGJ1aWxkUXVlcnlQYXJhbXMoXG4gICAgICB0aGlzLl9pdGVtc1N0b3JlLnZhbHVlc0FzUXVlcnkoe1xuICAgICAgICBvbmx5UHJlc2VudGVkOiBmYWxzZSxcbiAgICAgICAgaXRlbXM6IHRhcmdldEl0ZW1zLFxuICAgICAgICBwZXJzaXN0ZWQ6IHRydWUsXG4gICAgICB9KSxcbiAgICAgIHRhcmdldEl0ZW1zLFxuICAgICk7XG5cbiAgICB0aGlzLl9xdWVyeVBhcmFtcy53cml0ZVN0YXRlVG9RdWVyeVBhcmFtcyhwYXJhbXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2F2ZVBlcnNpc3RlZFBhcmFtcygpIHtcbiAgICBjb25zdCB0YXJnZXRJdGVtcyA9IHRoaXMuX2l0ZW1zU3RvcmUuaXRlbXNcbiAgICAgIC5maWx0ZXIoKGl0ZW0pID0+ICFpdGVtLnBlcnNpc3RhbmNlRGlzYWJsZWQpO1xuXG4gICAgY29uc3QgcGFyYW1zID0gYnVpbGRRdWVyeVBhcmFtcyhcbiAgICAgIHRoaXMuX2l0ZW1zU3RvcmUudmFsdWVzQXNRdWVyeSh7XG4gICAgICAgIG9ubHlQcmVzZW50ZWQ6IGZhbHNlLFxuICAgICAgICBpdGVtczogdGFyZ2V0SXRlbXMsXG4gICAgICAgIHBlcnNpc3RlZDogdHJ1ZSxcbiAgICAgIH0pLFxuICAgICAgdGFyZ2V0SXRlbXMsXG4gICAgKTtcblxuICAgIHRoaXMuX3BlcnNpc3RhbmNlU3RvcmUuc2F2ZShwYXJhbXMpO1xuICB9XG59XG4iXX0=