@firestitch/filter 12.13.3 → 13.0.2

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 (253) 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 +8 -8
  5. package/app/components/filter/filter.component.d.ts +192 -192
  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 +10 -10
  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 +15 -15
  11. package/app/components/filters-item/autocomplete/autocomplete.component.d.ts +14 -13
  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-edit/saved-filter-edit.component.d.ts +18 -18
  28. package/app/components/saved-filters-menu/saved-filters-menu.component.d.ts +23 -23
  29. package/app/consts/query-param-delimiter.d.ts +1 -1
  30. package/app/directives/focus-to-item/focus-to-item.directive.d.ts +27 -27
  31. package/app/directives/status-bar/status-bar.directive.d.ts +8 -8
  32. package/app/enums/action-mode.enum.d.ts +5 -5
  33. package/app/enums/action-type.enum.d.ts +9 -9
  34. package/app/enums/button-style.d.ts +9 -9
  35. package/app/enums/index.d.ts +6 -6
  36. package/app/enums/item-date-mode.enum.d.ts +5 -5
  37. package/app/enums/item-type.enum.d.ts +15 -15
  38. package/app/enums/picker-view-type.enum.d.ts +7 -7
  39. package/app/fs-filter.module.d.ts +65 -65
  40. package/app/helpers/build-query-params.d.ts +3 -3
  41. package/app/helpers/compare.d.ts +2 -2
  42. package/app/helpers/create-filter-item.d.ts +14 -14
  43. package/app/helpers/find-value.d.ts +1 -1
  44. package/app/helpers/get-range-name.d.ts +1 -1
  45. package/app/helpers/parse-date.d.ts +1 -1
  46. package/app/helpers/parse-item-value-from-stored.d.ts +1 -1
  47. package/app/helpers/query-param-transformers.d.ts +2 -2
  48. package/app/helpers/restore-items.d.ts +12 -12
  49. package/app/helpers/try-convert-to-number.d.ts +1 -1
  50. package/app/injectors/filter-config.d.ts +2 -2
  51. package/app/injectors/filter-drawer-data.d.ts +2 -2
  52. package/app/injectors/filter-drawer-overlay.d.ts +2 -2
  53. package/app/interfaces/action.interface.d.ts +70 -70
  54. package/app/interfaces/config.interface.d.ts +62 -62
  55. package/app/interfaces/external-params.interface.d.ts +3 -3
  56. package/app/interfaces/filter.interface.d.ts +4 -4
  57. package/app/interfaces/items/autocomplete-chips.interface.d.ts +15 -15
  58. package/app/interfaces/items/autocomplete.interface.d.ts +9 -9
  59. package/app/interfaces/items/base.interface.d.ts +29 -29
  60. package/app/interfaces/items/checkbox.interface.d.ts +7 -7
  61. package/app/interfaces/items/chips.interface.d.ts +6 -6
  62. package/app/interfaces/items/date-range.interface.d.ts +8 -8
  63. package/app/interfaces/items/date.interface.d.ts +7 -7
  64. package/app/interfaces/items/range.interface.d.ts +13 -13
  65. package/app/interfaces/items/select.interface.d.ts +20 -20
  66. package/app/interfaces/items/text.interface.d.ts +9 -9
  67. package/app/interfaces/items/week.interface.d.ts +7 -7
  68. package/app/interfaces/saved-filters.interface.d.ts +18 -18
  69. package/app/interfaces/update-filter-item.interface.d.ts +4 -4
  70. package/app/models/action-menu-item.model.d.ts +23 -23
  71. package/app/models/action.model.d.ts +47 -47
  72. package/app/models/filter-config.d.ts +30 -30
  73. package/app/models/items/autocomplete/base-autocomplete-item.d.ts +12 -12
  74. package/app/models/items/autocomplete-chips-item.d.ts +20 -20
  75. package/app/models/items/autocomplete-item.d.ts +11 -11
  76. package/app/models/items/base-item.d.ts +80 -79
  77. package/app/models/items/checkbox-item.d.ts +17 -17
  78. package/app/models/items/chips-item.d.ts +18 -18
  79. package/app/models/items/date/base-date-item.d.ts +14 -14
  80. package/app/models/items/date-item.d.ts +8 -8
  81. package/app/models/items/date-range/base-date-range-item.d.ts +21 -21
  82. package/app/models/items/date-range-item.d.ts +6 -6
  83. package/app/models/items/date-time-item.d.ts +7 -7
  84. package/app/models/items/date-time-range-item.d.ts +6 -6
  85. package/app/models/items/range-item.d.ts +23 -23
  86. package/app/models/items/select/base-select-item.d.ts +13 -13
  87. package/app/models/items/select/multiple-select-item.d.ts +14 -14
  88. package/app/models/items/select/simple-select-item.d.ts +14 -14
  89. package/app/models/items/select-item.d.ts +8 -8
  90. package/app/models/items/text-item.d.ts +15 -15
  91. package/app/models/items/week-item.d.ts +18 -18
  92. package/app/pipes/remove-isolate-value.pipe.d.ts +8 -8
  93. package/app/providers/filter-meta.d.ts +5 -5
  94. package/app/services/external-params/persistance-params-controller.service.d.ts +22 -22
  95. package/app/services/external-params/query-params-controller.service.d.ts +24 -24
  96. package/app/services/external-params/saved-filters-controller.service.d.ts +40 -40
  97. package/app/services/external-params-controller.service.d.ts +42 -42
  98. package/app/services/filter-overlay.service.d.ts +34 -34
  99. package/app/services/focus-controller.service.d.ts +18 -18
  100. package/app/services/items-store.service.d.ts +67 -67
  101. package/{esm2015/app/classes/actions-controller.js → esm2020/app/classes/actions-controller.mjs} +127 -127
  102. package/esm2020/app/components/action-button/action-button.component.mjs +24 -0
  103. package/esm2020/app/components/action-kebab-actions/action-kebab-actions.component.mjs +17 -0
  104. package/esm2020/app/components/actions/actions.component.mjs +26 -0
  105. package/esm2020/app/components/filter/filter.component.mjs +572 -0
  106. package/esm2020/app/components/filter-chip/filter-chip.component.mjs +86 -0
  107. package/{esm2015/app/components/filter-chip-content/filter-chip-content.component.js → esm2020/app/components/filter-chip-content/filter-chip-content.component.mjs} +79 -84
  108. package/esm2020/app/components/filter-chips/filter-chips.component.mjs +23 -0
  109. package/esm2020/app/components/filter-drawer/filter-drawer.component.mjs +71 -0
  110. package/esm2020/app/components/filter-drawer-actions/filter-drawer-actions.component.mjs +41 -0
  111. package/esm2020/app/components/filters-item/autocomplete/autocomplete.component.mjs +27 -0
  112. package/esm2020/app/components/filters-item/autocompletechips/autocompletechips.component.mjs +42 -0
  113. package/{esm2015/app/components/filters-item/base-item/base-item.component.js → esm2020/app/components/filters-item/base-item/base-item.component.mjs} +63 -63
  114. package/esm2020/app/components/filters-item/checkbox/checkbox.component.mjs +21 -0
  115. package/esm2020/app/components/filters-item/chips/chips.component.mjs +28 -0
  116. package/esm2020/app/components/filters-item/date/date.component.mjs +43 -0
  117. package/esm2020/app/components/filters-item/date-range/date-range.component.mjs +34 -0
  118. package/esm2020/app/components/filters-item/filter-item.component.mjs +80 -0
  119. package/esm2020/app/components/filters-item/range/range.component.mjs +45 -0
  120. package/esm2020/app/components/filters-item/select/backdrop/backdrop.component.mjs +12 -0
  121. package/esm2020/app/components/filters-item/select/groups/groups.component.mjs +30 -0
  122. package/esm2020/app/components/filters-item/select/multiple/multiple.component.mjs +57 -0
  123. package/esm2020/app/components/filters-item/select/select.component.mjs +51 -0
  124. package/esm2020/app/components/filters-item/select/simple/simple.component.mjs +43 -0
  125. package/esm2020/app/components/filters-item/text/text.component.mjs +49 -0
  126. package/esm2020/app/components/filters-item/week/week.component.mjs +25 -0
  127. package/esm2020/app/components/saved-filter-edit/saved-filter-edit.component.mjs +55 -0
  128. package/esm2020/app/components/saved-filters-menu/saved-filters-menu.component.mjs +51 -0
  129. package/{esm2015/app/consts/query-param-delimiter.js → esm2020/app/consts/query-param-delimiter.mjs} +1 -1
  130. package/{esm2015/app/directives/focus-to-item/focus-to-item.directive.js → esm2020/app/directives/focus-to-item/focus-to-item.directive.mjs} +130 -130
  131. package/{esm2015/app/directives/status-bar/status-bar.directive.js → esm2020/app/directives/status-bar/status-bar.directive.mjs} +16 -16
  132. package/{esm2015/app/enums/action-mode.enum.js → esm2020/app/enums/action-mode.enum.mjs} +6 -6
  133. package/{esm2015/app/enums/action-type.enum.js → esm2020/app/enums/action-type.enum.mjs} +10 -10
  134. package/{esm2015/app/enums/button-style.js → esm2020/app/enums/button-style.mjs} +10 -10
  135. package/{esm2015/app/enums/index.js → esm2020/app/enums/index.mjs} +6 -6
  136. package/{esm2015/app/enums/item-date-mode.enum.js → esm2020/app/enums/item-date-mode.enum.mjs} +6 -6
  137. package/{esm2015/app/enums/item-type.enum.js → esm2020/app/enums/item-type.enum.mjs} +16 -16
  138. package/{esm2015/app/enums/picker-view-type.enum.js → esm2020/app/enums/picker-view-type.enum.mjs} +8 -8
  139. package/{esm2015/app/fs-filter.module.js → esm2020/app/fs-filter.module.mjs} +244 -241
  140. package/{esm2015/app/helpers/build-query-params.js → esm2020/app/helpers/build-query-params.mjs} +31 -31
  141. package/{esm2015/app/helpers/compare.js → esm2020/app/helpers/compare.mjs} +37 -37
  142. package/{esm2015/app/helpers/create-filter-item.js → esm2020/app/helpers/create-filter-item.mjs} +54 -54
  143. package/{esm2015/app/helpers/find-value.js → esm2020/app/helpers/find-value.mjs} +12 -12
  144. package/{esm2015/app/helpers/get-range-name.js → esm2020/app/helpers/get-range-name.mjs} +8 -8
  145. package/{esm2015/app/helpers/parse-date.js → esm2020/app/helpers/parse-date.mjs} +7 -7
  146. package/{esm2015/app/helpers/parse-item-value-from-stored.js → esm2020/app/helpers/parse-item-value-from-stored.mjs} +81 -81
  147. package/{esm2015/app/helpers/query-param-transformers.js → esm2020/app/helpers/query-param-transformers.mjs} +8 -8
  148. package/{esm2015/app/helpers/restore-items.js → esm2020/app/helpers/restore-items.mjs} +48 -48
  149. package/{esm2015/app/helpers/try-convert-to-number.js → esm2020/app/helpers/try-convert-to-number.mjs} +5 -5
  150. package/{esm2015/app/injectors/filter-config.js → esm2020/app/injectors/filter-config.mjs} +2 -2
  151. package/{esm2015/app/injectors/filter-drawer-data.js → esm2020/app/injectors/filter-drawer-data.mjs} +2 -2
  152. package/{esm2015/app/injectors/filter-drawer-overlay.js → esm2020/app/injectors/filter-drawer-overlay.mjs} +2 -2
  153. package/{esm2015/app/interfaces/action.interface.js → esm2020/app/interfaces/action.interface.mjs} +1 -1
  154. package/{esm2015/app/interfaces/config.interface.js → esm2020/app/interfaces/config.interface.mjs} +1 -1
  155. package/{esm2015/app/interfaces/external-params.interface.js → esm2020/app/interfaces/external-params.interface.mjs} +1 -1
  156. package/{esm2015/app/interfaces/filter.interface.js → esm2020/app/interfaces/filter.interface.mjs} +1 -1
  157. package/{esm2015/app/interfaces/items/autocomplete-chips.interface.js → esm2020/app/interfaces/items/autocomplete-chips.interface.mjs} +1 -1
  158. package/{esm2015/app/interfaces/items/autocomplete.interface.js → esm2020/app/interfaces/items/autocomplete.interface.mjs} +1 -1
  159. package/{esm2015/app/interfaces/items/base.interface.js → esm2020/app/interfaces/items/base.interface.mjs} +1 -1
  160. package/{esm2015/app/interfaces/items/checkbox.interface.js → esm2020/app/interfaces/items/checkbox.interface.mjs} +1 -1
  161. package/{esm2015/app/interfaces/items/chips.interface.js → esm2020/app/interfaces/items/chips.interface.mjs} +1 -1
  162. package/{esm2015/app/interfaces/items/date-range.interface.js → esm2020/app/interfaces/items/date-range.interface.mjs} +1 -1
  163. package/{esm2015/app/interfaces/items/date.interface.js → esm2020/app/interfaces/items/date.interface.mjs} +1 -1
  164. package/{esm2015/app/interfaces/items/range.interface.js → esm2020/app/interfaces/items/range.interface.mjs} +1 -1
  165. package/{esm2015/app/interfaces/items/select.interface.js → esm2020/app/interfaces/items/select.interface.mjs} +1 -1
  166. package/{esm2015/app/interfaces/items/text.interface.js → esm2020/app/interfaces/items/text.interface.mjs} +1 -1
  167. package/{esm2015/app/interfaces/items/week.interface.js → esm2020/app/interfaces/items/week.interface.mjs} +1 -1
  168. package/{esm2015/app/interfaces/saved-filters.interface.js → esm2020/app/interfaces/saved-filters.interface.mjs} +1 -1
  169. package/{esm2015/app/interfaces/update-filter-item.interface.js → esm2020/app/interfaces/update-filter-item.interface.mjs} +1 -1
  170. package/{esm2015/app/models/action-menu-item.model.js → esm2020/app/models/action-menu-item.model.mjs} +66 -66
  171. package/esm2020/app/models/action.model.mjs +108 -0
  172. package/esm2020/app/models/filter-config.mjs +66 -0
  173. package/esm2020/app/models/items/autocomplete/base-autocomplete-item.mjs +14 -0
  174. package/esm2020/app/models/items/autocomplete-chips-item.mjs +61 -0
  175. package/{esm2015/app/models/items/autocomplete-item.js → esm2020/app/models/items/autocomplete-item.mjs} +33 -33
  176. package/esm2020/app/models/items/base-item.mjs +237 -0
  177. package/{esm2015/app/models/items/checkbox-item.js → esm2020/app/models/items/checkbox-item.mjs} +50 -50
  178. package/{esm2015/app/models/items/chips-item.js → esm2020/app/models/items/chips-item.mjs} +84 -84
  179. package/{esm2015/app/models/items/date/base-date-item.js → esm2020/app/models/items/date/base-date-item.mjs} +47 -47
  180. package/{esm2015/app/models/items/date-item.js → esm2020/app/models/items/date-item.mjs} +19 -19
  181. package/esm2020/app/models/items/date-range/base-date-range-item.mjs +135 -0
  182. package/{esm2015/app/models/items/date-range-item.js → esm2020/app/models/items/date-range-item.mjs} +6 -6
  183. package/esm2020/app/models/items/date-time-item.mjs +10 -0
  184. package/{esm2015/app/models/items/date-time-range-item.js → esm2020/app/models/items/date-time-range-item.mjs} +6 -6
  185. package/esm2020/app/models/items/range-item.mjs +83 -0
  186. package/esm2020/app/models/items/select/base-select-item.mjs +37 -0
  187. package/esm2020/app/models/items/select/multiple-select-item.mjs +88 -0
  188. package/esm2020/app/models/items/select/simple-select-item.mjs +66 -0
  189. package/{esm2015/app/models/items/select-item.js → esm2020/app/models/items/select-item.mjs} +10 -10
  190. package/{esm2015/app/models/items/text-item.js → esm2020/app/models/items/text-item.mjs} +34 -34
  191. package/esm2020/app/models/items/week-item.mjs +94 -0
  192. package/{esm2015/app/pipes/remove-isolate-value.pipe.js → esm2020/app/pipes/remove-isolate-value.pipe.mjs} +21 -21
  193. package/{esm2015/app/providers/filter-meta.js → esm2020/app/providers/filter-meta.mjs} +9 -9
  194. package/esm2020/app/services/external-params/persistance-params-controller.service.mjs +58 -0
  195. package/{esm2015/app/services/external-params/query-params-controller.service.js → esm2020/app/services/external-params/query-params-controller.service.mjs} +67 -67
  196. package/esm2020/app/services/external-params/saved-filters-controller.service.mjs +164 -0
  197. package/esm2020/app/services/external-params-controller.service.mjs +162 -0
  198. package/{esm2015/app/services/filter-overlay.service.js → esm2020/app/services/filter-overlay.service.mjs} +119 -119
  199. package/{esm2015/app/services/focus-controller.service.js → esm2020/app/services/focus-controller.service.mjs} +30 -30
  200. package/esm2020/app/services/items-store.service.mjs +337 -0
  201. package/{esm2015/firestitch-filter.js → esm2020/firestitch-filter.mjs} +4 -4
  202. package/{esm2015/public_api.js → esm2020/public_api.mjs} +36 -36
  203. package/fesm2015/{firestitch-filter.js → firestitch-filter.mjs} +4247 -4359
  204. package/fesm2015/firestitch-filter.mjs.map +1 -0
  205. package/fesm2020/firestitch-filter.mjs +4442 -0
  206. package/fesm2020/firestitch-filter.mjs.map +1 -0
  207. package/firestitch-filter.d.ts +5 -5
  208. package/package.json +20 -7
  209. package/public_api.d.ts +40 -40
  210. package/bundles/firestitch-filter.umd.js +0 -5746
  211. package/bundles/firestitch-filter.umd.js.map +0 -1
  212. package/esm2015/app/components/action-button/action-button.component.js +0 -28
  213. package/esm2015/app/components/action-kebab-actions/action-kebab-actions.component.js +0 -22
  214. package/esm2015/app/components/actions/actions.component.js +0 -31
  215. package/esm2015/app/components/filter/filter.component.js +0 -577
  216. package/esm2015/app/components/filter-chip/filter-chip.component.js +0 -91
  217. package/esm2015/app/components/filter-chips/filter-chips.component.js +0 -27
  218. package/esm2015/app/components/filter-drawer/filter-drawer.component.js +0 -76
  219. package/esm2015/app/components/filter-drawer-actions/filter-drawer-actions.component.js +0 -44
  220. package/esm2015/app/components/filters-item/autocomplete/autocomplete.component.js +0 -30
  221. package/esm2015/app/components/filters-item/autocompletechips/autocompletechips.component.js +0 -45
  222. package/esm2015/app/components/filters-item/checkbox/checkbox.component.js +0 -25
  223. package/esm2015/app/components/filters-item/chips/chips.component.js +0 -32
  224. package/esm2015/app/components/filters-item/date/date.component.js +0 -46
  225. package/esm2015/app/components/filters-item/date-range/date-range.component.js +0 -37
  226. package/esm2015/app/components/filters-item/filter-item.component.js +0 -84
  227. package/esm2015/app/components/filters-item/range/range.component.js +0 -48
  228. package/esm2015/app/components/filters-item/select/backdrop/backdrop.component.js +0 -17
  229. package/esm2015/app/components/filters-item/select/groups/groups.component.js +0 -33
  230. package/esm2015/app/components/filters-item/select/multiple/multiple.component.js +0 -61
  231. package/esm2015/app/components/filters-item/select/select.component.js +0 -55
  232. package/esm2015/app/components/filters-item/select/simple/simple.component.js +0 -47
  233. package/esm2015/app/components/filters-item/text/text.component.js +0 -54
  234. package/esm2015/app/components/filters-item/week/week.component.js +0 -28
  235. package/esm2015/app/components/saved-filter-edit/saved-filter-edit.component.js +0 -55
  236. package/esm2015/app/components/saved-filters-menu/saved-filters-menu.component.js +0 -58
  237. package/esm2015/app/models/action.model.js +0 -109
  238. package/esm2015/app/models/filter-config.js +0 -67
  239. package/esm2015/app/models/items/autocomplete/base-autocomplete-item.js +0 -15
  240. package/esm2015/app/models/items/autocomplete-chips-item.js +0 -62
  241. package/esm2015/app/models/items/base-item.js +0 -241
  242. package/esm2015/app/models/items/date-range/base-date-range-item.js +0 -137
  243. package/esm2015/app/models/items/date-time-item.js +0 -10
  244. package/esm2015/app/models/items/range-item.js +0 -84
  245. package/esm2015/app/models/items/select/base-select-item.js +0 -34
  246. package/esm2015/app/models/items/select/multiple-select-item.js +0 -89
  247. package/esm2015/app/models/items/select/simple-select-item.js +0 -66
  248. package/esm2015/app/models/items/week-item.js +0 -94
  249. package/esm2015/app/services/external-params/persistance-params-controller.service.js +0 -58
  250. package/esm2015/app/services/external-params/saved-filters-controller.service.js +0 -165
  251. package/esm2015/app/services/external-params-controller.service.js +0 -163
  252. package/esm2015/app/services/items-store.service.js +0 -341
  253. package/fesm2015/firestitch-filter.js.map +0 -1
@@ -1,67 +1,67 @@
1
- import { Injectable } from '@angular/core';
2
- import { ActivatedRoute, Router } from '@angular/router';
3
- import { FsFilterItemsStore } from '../items-store.service';
4
- import { restoreItems } from '../../helpers/restore-items';
5
- import { Location } from '@angular/common';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/router";
8
- import * as i2 from "@angular/common";
9
- import * as i3 from "../items-store.service";
10
- export class QueryParamsController {
11
- constructor(_router, _route, _location, _itemsStore) {
12
- this._router = _router;
13
- this._route = _route;
14
- this._location = _location;
15
- this._itemsStore = _itemsStore;
16
- this._enabled = false;
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
- return;
34
- }
35
- this._location.replaceState(this._router.createUrlTree([], {
36
- relativeTo: this._route,
37
- queryParams: params,
38
- queryParamsHandling: 'merge',
39
- preserveFragment: true,
40
- }).toString());
41
- // Trying replacing the URL without triggering an Angular navigation change
42
- // // Update query
43
- // this._router.navigate([], {
44
- // replaceUrl: true,
45
- // relativeTo: this._route,
46
- // queryParams: params,
47
- // queryParamsHandling: 'merge',
48
- // }).then(() => {});
49
- }
50
- /**
51
- * Parse query and update filter values
52
- */
53
- fetchFromQueryParams() {
54
- const items = [
55
- ...this._itemsStore.items,
56
- this._itemsStore.sortByItem,
57
- this._itemsStore.sortDirectionItem,
58
- ].filter((item) => !!item);
59
- this._fetchedParams = restoreItems(this._route.snapshot.queryParams, items, this._paramsCase);
60
- }
61
- }
62
- QueryParamsController.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: QueryParamsController, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.Location }, { token: i3.FsFilterItemsStore }], target: i0.ɵɵFactoryTarget.Injectable });
63
- QueryParamsController.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: QueryParamsController });
64
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: QueryParamsController, decorators: [{
65
- type: Injectable
66
- }], ctorParameters: function () { return [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.Location }, { type: i3.FsFilterItemsStore }]; } });
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktcGFyYW1zLWNvbnRyb2xsZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2VydmljZXMvZXh0ZXJuYWwtcGFyYW1zL3F1ZXJ5LXBhcmFtcy1jb250cm9sbGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBSTNDLE1BQU0sT0FBTyxxQkFBcUI7SUFNaEMsWUFDVSxPQUFlLEVBQ2YsTUFBc0IsRUFDdEIsU0FBbUIsRUFDbkIsV0FBK0I7UUFIL0IsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLFdBQU0sR0FBTixNQUFNLENBQWdCO1FBQ3RCLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFDbkIsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBUmpDLGFBQVEsR0FBRyxLQUFLLENBQUM7SUFTdEIsQ0FBQztJQUVKLElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQVcsYUFBYTtRQUN0QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUVNLElBQUksQ0FBQyxPQUFnQixFQUFFLFVBQTZCO1FBQ3pELElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO1FBRTlCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztTQUM3QjtJQUNILENBQUM7SUFFTSx1QkFBdUIsQ0FBQyxNQUFNO1FBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQUUsT0FBTTtTQUFFO1FBRTlCLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUN6QixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQ3pCO1lBQ0UsVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ3ZCLFdBQVcsRUFBRSxNQUFNO1lBQ25CLG1CQUFtQixFQUFFLE9BQU87WUFDNUIsZ0JBQWdCLEVBQUUsSUFBSTtTQUN2QixDQUNKLENBQUMsUUFBUSxFQUFFLENBQ2IsQ0FBQztRQUVGLDJFQUEyRTtRQUMzRSxrQkFBa0I7UUFDbEIsOEJBQThCO1FBQzlCLHNCQUFzQjtRQUN0Qiw2QkFBNkI7UUFDN0IseUJBQXlCO1FBQ3pCLGtDQUFrQztRQUNsQyxxQkFBcUI7SUFDdkIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksb0JBQW9CO1FBQ3pCLE1BQU0sS0FBSyxHQUFHO1lBQ1osR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUs7WUFDekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVO1lBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCO1NBQ25DLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFM0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxZQUFZLENBQ2hDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFDaEMsS0FBSyxFQUNMLElBQUksQ0FBQyxXQUFXLENBQ2pCLENBQUM7SUFDSixDQUFDOzttSEFyRVUscUJBQXFCO3VIQUFyQixxQkFBcUI7NEZBQXJCLHFCQUFxQjtrQkFEakMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBGc0ZpbHRlckl0ZW1zU3RvcmUgfSBmcm9tICcuLi9pdGVtcy1zdG9yZS5zZXJ2aWNlJztcbmltcG9ydCB7IHJlc3RvcmVJdGVtcyB9IGZyb20gJy4uLy4uL2hlbHBlcnMvcmVzdG9yZS1pdGVtcyc7XG5pbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFF1ZXJ5UGFyYW1zQ29udHJvbGxlciB7XG5cbiAgcHJpdmF0ZSBfZW5hYmxlZCA9IGZhbHNlO1xuICBwcml2YXRlIF9wYXJhbXNDYXNlOiAnc25ha2UnIHwgJ2NhbWVsJztcbiAgcHJpdmF0ZSBfZmV0Y2hlZFBhcmFtczogUmVjb3JkPHN0cmluZywgYW55PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9yb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIF9yb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBfbG9jYXRpb246IExvY2F0aW9uLFxuICAgIHByaXZhdGUgX2l0ZW1zU3RvcmU6IEZzRmlsdGVySXRlbXNTdG9yZVxuICApIHt9XG5cbiAgcHVibGljIGdldCBlbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9lbmFibGVkO1xuICB9XG5cbiAgcHVibGljIGdldCBmZXRjaGVkUGFyYW1zKCkge1xuICAgIHJldHVybiB0aGlzLl9mZXRjaGVkUGFyYW1zO1xuICB9XG5cbiAgcHVibGljIGluaXQoZW5hYmxlZDogYm9vbGVhbiwgcGFyYW1zQ2FzZTogJ3NuYWtlJyB8ICdjYW1lbCcpIHtcbiAgICB0aGlzLl9lbmFibGVkID0gZW5hYmxlZDtcbiAgICB0aGlzLl9wYXJhbXNDYXNlID0gcGFyYW1zQ2FzZTtcblxuICAgIGlmICh0aGlzLmVuYWJsZWQpIHtcbiAgICAgIHRoaXMuZmV0Y2hGcm9tUXVlcnlQYXJhbXMoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgd3JpdGVTdGF0ZVRvUXVlcnlQYXJhbXMocGFyYW1zKSB7XG4gICAgaWYgKCF0aGlzLl9lbmFibGVkKSB7IHJldHVybiB9XG5cbiAgICB0aGlzLl9sb2NhdGlvbi5yZXBsYWNlU3RhdGUoXG4gICAgICB0aGlzLl9yb3V0ZXIuY3JlYXRlVXJsVHJlZShbXSxcbiAgICAgICAgICB7ICAgICAgXG4gICAgICAgICAgICByZWxhdGl2ZVRvOiB0aGlzLl9yb3V0ZSxcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiBwYXJhbXMsXG4gICAgICAgICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiAnbWVyZ2UnLFxuICAgICAgICAgICAgcHJlc2VydmVGcmFnbWVudDogdHJ1ZSxcbiAgICAgICAgICB9XG4gICAgICApLnRvU3RyaW5nKClcbiAgICApO1xuICAgIFxuICAgIC8vIFRyeWluZyByZXBsYWNpbmcgdGhlIFVSTCB3aXRob3V0IHRyaWdnZXJpbmcgYW4gQW5ndWxhciBuYXZpZ2F0aW9uIGNoYW5nZVxuICAgIC8vIC8vIFVwZGF0ZSBxdWVyeVxuICAgIC8vIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbXSwge1xuICAgIC8vICAgcmVwbGFjZVVybDogdHJ1ZSxcbiAgICAvLyAgIHJlbGF0aXZlVG86IHRoaXMuX3JvdXRlLFxuICAgIC8vICAgcXVlcnlQYXJhbXM6IHBhcmFtcyxcbiAgICAvLyAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdtZXJnZScsXG4gICAgLy8gfSkudGhlbigoKSA9PiB7fSk7XG4gIH1cblxuICAvKipcbiAgICogUGFyc2UgcXVlcnkgYW5kIHVwZGF0ZSBmaWx0ZXIgdmFsdWVzXG4gICAqL1xuICBwdWJsaWMgZmV0Y2hGcm9tUXVlcnlQYXJhbXMoKSB7XG4gICAgY29uc3QgaXRlbXMgPSBbXG4gICAgICAuLi50aGlzLl9pdGVtc1N0b3JlLml0ZW1zLFxuICAgICAgdGhpcy5faXRlbXNTdG9yZS5zb3J0QnlJdGVtLFxuICAgICAgdGhpcy5faXRlbXNTdG9yZS5zb3J0RGlyZWN0aW9uSXRlbSxcbiAgICBdLmZpbHRlcigoaXRlbSkgPT4gISFpdGVtKTtcblxuICAgIHRoaXMuX2ZldGNoZWRQYXJhbXMgPSByZXN0b3JlSXRlbXMoXG4gICAgICB0aGlzLl9yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcyxcbiAgICAgIGl0ZW1zLFxuICAgICAgdGhpcy5fcGFyYW1zQ2FzZVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
1
+ import { Injectable } from '@angular/core';
2
+ import { ActivatedRoute, Router } from '@angular/router';
3
+ import { FsFilterItemsStore } from '../items-store.service';
4
+ import { restoreItems } from '../../helpers/restore-items';
5
+ import { Location } from '@angular/common';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/router";
8
+ import * as i2 from "@angular/common";
9
+ import * as i3 from "../items-store.service";
10
+ export class QueryParamsController {
11
+ constructor(_router, _route, _location, _itemsStore) {
12
+ this._router = _router;
13
+ this._route = _route;
14
+ this._location = _location;
15
+ this._itemsStore = _itemsStore;
16
+ this._enabled = false;
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
+ return;
34
+ }
35
+ this._location.replaceState(this._router.createUrlTree([], {
36
+ relativeTo: this._route,
37
+ queryParams: params,
38
+ queryParamsHandling: 'merge',
39
+ preserveFragment: true,
40
+ }).toString());
41
+ // Trying replacing the URL without triggering an Angular navigation change
42
+ // // Update query
43
+ // this._router.navigate([], {
44
+ // replaceUrl: true,
45
+ // relativeTo: this._route,
46
+ // queryParams: params,
47
+ // queryParamsHandling: 'merge',
48
+ // }).then(() => {});
49
+ }
50
+ /**
51
+ * Parse query and update filter values
52
+ */
53
+ fetchFromQueryParams() {
54
+ const items = [
55
+ ...this._itemsStore.items,
56
+ this._itemsStore.sortByItem,
57
+ this._itemsStore.sortDirectionItem,
58
+ ].filter((item) => !!item);
59
+ this._fetchedParams = restoreItems(this._route.snapshot.queryParams, items, this._paramsCase);
60
+ }
61
+ }
62
+ QueryParamsController.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: QueryParamsController, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.Location }, { token: i3.FsFilterItemsStore }], target: i0.ɵɵFactoryTarget.Injectable });
63
+ QueryParamsController.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: QueryParamsController });
64
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: QueryParamsController, decorators: [{
65
+ type: Injectable
66
+ }], ctorParameters: function () { return [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.Location }, { type: i3.FsFilterItemsStore }]; } });
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktcGFyYW1zLWNvbnRyb2xsZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2VydmljZXMvZXh0ZXJuYWwtcGFyYW1zL3F1ZXJ5LXBhcmFtcy1jb250cm9sbGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBSTNDLE1BQU0sT0FBTyxxQkFBcUI7SUFNaEMsWUFDVSxPQUFlLEVBQ2YsTUFBc0IsRUFDdEIsU0FBbUIsRUFDbkIsV0FBK0I7UUFIL0IsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLFdBQU0sR0FBTixNQUFNLENBQWdCO1FBQ3RCLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFDbkIsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBUmpDLGFBQVEsR0FBRyxLQUFLLENBQUM7SUFTdEIsQ0FBQztJQUVKLElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQVcsYUFBYTtRQUN0QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUVNLElBQUksQ0FBQyxPQUFnQixFQUFFLFVBQTZCO1FBQ3pELElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO1FBRTlCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztTQUM3QjtJQUNILENBQUM7SUFFTSx1QkFBdUIsQ0FBQyxNQUFNO1FBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQUUsT0FBTTtTQUFFO1FBRTlCLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUN6QixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQ3pCO1lBQ0UsVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ3ZCLFdBQVcsRUFBRSxNQUFNO1lBQ25CLG1CQUFtQixFQUFFLE9BQU87WUFDNUIsZ0JBQWdCLEVBQUUsSUFBSTtTQUN2QixDQUNKLENBQUMsUUFBUSxFQUFFLENBQ2IsQ0FBQztRQUVGLDJFQUEyRTtRQUMzRSxrQkFBa0I7UUFDbEIsOEJBQThCO1FBQzlCLHNCQUFzQjtRQUN0Qiw2QkFBNkI7UUFDN0IseUJBQXlCO1FBQ3pCLGtDQUFrQztRQUNsQyxxQkFBcUI7SUFDdkIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksb0JBQW9CO1FBQ3pCLE1BQU0sS0FBSyxHQUFHO1lBQ1osR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUs7WUFDekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVO1lBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCO1NBQ25DLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFM0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxZQUFZLENBQ2hDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFDaEMsS0FBSyxFQUNMLElBQUksQ0FBQyxXQUFXLENBQ2pCLENBQUM7SUFDSixDQUFDOztrSEFyRVUscUJBQXFCO3NIQUFyQixxQkFBcUI7MkZBQXJCLHFCQUFxQjtrQkFEakMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBGc0ZpbHRlckl0ZW1zU3RvcmUgfSBmcm9tICcuLi9pdGVtcy1zdG9yZS5zZXJ2aWNlJztcbmltcG9ydCB7IHJlc3RvcmVJdGVtcyB9IGZyb20gJy4uLy4uL2hlbHBlcnMvcmVzdG9yZS1pdGVtcyc7XG5pbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFF1ZXJ5UGFyYW1zQ29udHJvbGxlciB7XG5cbiAgcHJpdmF0ZSBfZW5hYmxlZCA9IGZhbHNlO1xuICBwcml2YXRlIF9wYXJhbXNDYXNlOiAnc25ha2UnIHwgJ2NhbWVsJztcbiAgcHJpdmF0ZSBfZmV0Y2hlZFBhcmFtczogUmVjb3JkPHN0cmluZywgYW55PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9yb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIF9yb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBfbG9jYXRpb246IExvY2F0aW9uLFxuICAgIHByaXZhdGUgX2l0ZW1zU3RvcmU6IEZzRmlsdGVySXRlbXNTdG9yZVxuICApIHt9XG5cbiAgcHVibGljIGdldCBlbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9lbmFibGVkO1xuICB9XG5cbiAgcHVibGljIGdldCBmZXRjaGVkUGFyYW1zKCkge1xuICAgIHJldHVybiB0aGlzLl9mZXRjaGVkUGFyYW1zO1xuICB9XG5cbiAgcHVibGljIGluaXQoZW5hYmxlZDogYm9vbGVhbiwgcGFyYW1zQ2FzZTogJ3NuYWtlJyB8ICdjYW1lbCcpIHtcbiAgICB0aGlzLl9lbmFibGVkID0gZW5hYmxlZDtcbiAgICB0aGlzLl9wYXJhbXNDYXNlID0gcGFyYW1zQ2FzZTtcblxuICAgIGlmICh0aGlzLmVuYWJsZWQpIHtcbiAgICAgIHRoaXMuZmV0Y2hGcm9tUXVlcnlQYXJhbXMoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgd3JpdGVTdGF0ZVRvUXVlcnlQYXJhbXMocGFyYW1zKSB7XG4gICAgaWYgKCF0aGlzLl9lbmFibGVkKSB7IHJldHVybiB9XG5cbiAgICB0aGlzLl9sb2NhdGlvbi5yZXBsYWNlU3RhdGUoXG4gICAgICB0aGlzLl9yb3V0ZXIuY3JlYXRlVXJsVHJlZShbXSxcbiAgICAgICAgICB7ICAgICAgXG4gICAgICAgICAgICByZWxhdGl2ZVRvOiB0aGlzLl9yb3V0ZSxcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiBwYXJhbXMsXG4gICAgICAgICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiAnbWVyZ2UnLFxuICAgICAgICAgICAgcHJlc2VydmVGcmFnbWVudDogdHJ1ZSxcbiAgICAgICAgICB9XG4gICAgICApLnRvU3RyaW5nKClcbiAgICApO1xuICAgIFxuICAgIC8vIFRyeWluZyByZXBsYWNpbmcgdGhlIFVSTCB3aXRob3V0IHRyaWdnZXJpbmcgYW4gQW5ndWxhciBuYXZpZ2F0aW9uIGNoYW5nZVxuICAgIC8vIC8vIFVwZGF0ZSBxdWVyeVxuICAgIC8vIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbXSwge1xuICAgIC8vICAgcmVwbGFjZVVybDogdHJ1ZSxcbiAgICAvLyAgIHJlbGF0aXZlVG86IHRoaXMuX3JvdXRlLFxuICAgIC8vICAgcXVlcnlQYXJhbXM6IHBhcmFtcyxcbiAgICAvLyAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdtZXJnZScsXG4gICAgLy8gfSkudGhlbigoKSA9PiB7fSk7XG4gIH1cblxuICAvKipcbiAgICogUGFyc2UgcXVlcnkgYW5kIHVwZGF0ZSBmaWx0ZXIgdmFsdWVzXG4gICAqL1xuICBwdWJsaWMgZmV0Y2hGcm9tUXVlcnlQYXJhbXMoKSB7XG4gICAgY29uc3QgaXRlbXMgPSBbXG4gICAgICAuLi50aGlzLl9pdGVtc1N0b3JlLml0ZW1zLFxuICAgICAgdGhpcy5faXRlbXNTdG9yZS5zb3J0QnlJdGVtLFxuICAgICAgdGhpcy5faXRlbXNTdG9yZS5zb3J0RGlyZWN0aW9uSXRlbSxcbiAgICBdLmZpbHRlcigoaXRlbSkgPT4gISFpdGVtKTtcblxuICAgIHRoaXMuX2ZldGNoZWRQYXJhbXMgPSByZXN0b3JlSXRlbXMoXG4gICAgICB0aGlzLl9yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcyxcbiAgICAgIGl0ZW1zLFxuICAgICAgdGhpcy5fcGFyYW1zQ2FzZVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,164 @@
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-edit/saved-filter-edit.component';
6
+ import { restoreItems } from '../../helpers/restore-items';
7
+ import { buildQueryParams } from '../../helpers/build-query-params';
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
+ constructor(_itemsStore, _dialog) {
14
+ this._itemsStore = _itemsStore;
15
+ this._dialog = _dialog;
16
+ this._savedFilters$ = new BehaviorSubject([]);
17
+ this._activeFilter$ = new BehaviorSubject(null);
18
+ this._enabled$ = new BehaviorSubject(false);
19
+ this._destroy$ = new Subject();
20
+ }
21
+ get enabled() {
22
+ return this._enabled$.getValue();
23
+ }
24
+ get enabled$() {
25
+ return this._enabled$
26
+ .pipe(distinctUntilChanged());
27
+ }
28
+ get savedFilters() {
29
+ return this._savedFilters$.getValue();
30
+ }
31
+ get savedFilters$() {
32
+ return this._savedFilters$
33
+ .pipe(distinctUntilChanged());
34
+ }
35
+ get activeFilter() {
36
+ return this._activeFilter$.getValue();
37
+ }
38
+ get activeFilter$() {
39
+ return this._activeFilter$
40
+ .pipe(distinctUntilChanged());
41
+ }
42
+ get activeFilterData() {
43
+ return this._activeFilter$.getValue()?.filters;
44
+ }
45
+ set savedFilters(filters) {
46
+ this._savedFilters$.next(filters);
47
+ }
48
+ ngOnDestroy() {
49
+ this._destroy$.next();
50
+ this._destroy$.complete();
51
+ }
52
+ init(remoteParamsConfig, paramsCase) {
53
+ if (!remoteParamsConfig) {
54
+ this._setEnabledStatus(false);
55
+ return;
56
+ }
57
+ this._setEnabledStatus(true);
58
+ this._paramsCase = paramsCase;
59
+ this._config = remoteParamsConfig;
60
+ }
61
+ initSavedFilters(filters) {
62
+ filters = [...filters];
63
+ filters.forEach((savedFilter) => {
64
+ savedFilter.filters = restoreItems(savedFilter.filters, this._itemsStore.items, this._paramsCase);
65
+ });
66
+ this.savedFilters = filters;
67
+ }
68
+ load() {
69
+ return this._config.load()
70
+ .pipe(tap((response) => {
71
+ this.initSavedFilters(response);
72
+ }));
73
+ }
74
+ save(savedFilter) {
75
+ return this._config.save(savedFilter);
76
+ }
77
+ order(savedFilters) {
78
+ return this._config.order(savedFilters)
79
+ .pipe(tap((response) => {
80
+ this.savedFilters = [
81
+ ...response,
82
+ ];
83
+ }));
84
+ }
85
+ delete(savedFilter) {
86
+ return this._config.delete(savedFilter)
87
+ .pipe(tap((response) => {
88
+ this.savedFilters = this.savedFilters
89
+ .filter((f) => f.id !== response.id);
90
+ }));
91
+ }
92
+ setActiveFilter(savedFilter) {
93
+ if (savedFilter) {
94
+ const existingFilter = this.savedFilters
95
+ .find((f) => f.id === savedFilter.id);
96
+ if (!existingFilter) {
97
+ throw new Error('Saved filter cannot be activated, because it does not exists. Filter ID = ' + savedFilter.id);
98
+ }
99
+ this._activeFilter$.next(existingFilter);
100
+ }
101
+ else {
102
+ this._activeFilter$.next(null);
103
+ }
104
+ }
105
+ openSavedFilterEditDialog() {
106
+ const params = buildQueryParams(this._itemsStore.valuesAsQuery(), this._itemsStore.items);
107
+ const values = this._itemsStore.values(true);
108
+ const dialogConfig = {
109
+ data: {
110
+ params: params,
111
+ savedFilters: this.savedFilters,
112
+ saveCallback: this.save.bind(this),
113
+ },
114
+ };
115
+ this._dialog
116
+ .open(FsFilterSavedFilterEditComponent, dialogConfig)
117
+ .beforeClosed()
118
+ .pipe(take(1), takeUntil(this._destroy$))
119
+ .subscribe((updatedFilter) => {
120
+ if (updatedFilter) {
121
+ // get already saved related filter object
122
+ const savedFilter = this.savedFilters
123
+ .find((f) => f.id === updatedFilter.id);
124
+ // restore values from query string
125
+ updatedFilter.filters = restoreItems(updatedFilter.filters, this._itemsStore.items, this._paramsCase);
126
+ if (savedFilter) {
127
+ Object.assign(savedFilter, updatedFilter);
128
+ }
129
+ else {
130
+ this.resetActiveFilter();
131
+ this.savedFilters = [
132
+ ...this.savedFilters,
133
+ updatedFilter
134
+ ];
135
+ }
136
+ this.updateActiveFilter();
137
+ }
138
+ });
139
+ }
140
+ updateActiveFilter() {
141
+ // Lookup active filter
142
+ const acitveFilter = this.savedFilters
143
+ .find((f) => f.active);
144
+ if (acitveFilter) {
145
+ this.setActiveFilter(acitveFilter);
146
+ }
147
+ }
148
+ resetActiveFilter() {
149
+ // Reset all previously activated filters
150
+ this.savedFilters.forEach((savedFilter) => {
151
+ savedFilter.active = false;
152
+ });
153
+ this.setActiveFilter(null);
154
+ }
155
+ _setEnabledStatus(value) {
156
+ this._enabled$.next(value);
157
+ }
158
+ }
159
+ SavedFiltersController.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SavedFiltersController, deps: [{ token: i1.FsFilterItemsStore }, { token: i2.MatDialog }], target: i0.ɵɵFactoryTarget.Injectable });
160
+ SavedFiltersController.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SavedFiltersController });
161
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SavedFiltersController, decorators: [{
162
+ type: Injectable
163
+ }], ctorParameters: function () { return [{ type: i1.FsFilterItemsStore }, { type: i2.MatDialog }]; } });
164
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F2ZWQtZmlsdGVycy1jb250cm9sbGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NlcnZpY2VzL2V4dGVybmFsLXBhcmFtcy9zYXZlZC1maWx0ZXJzLWNvbnRyb2xsZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRXRELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsZUFBZSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLElBQUksRUFDSixTQUFTLEVBQ1QsR0FBRyxHQUNKLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUNMLGdDQUFnQyxFQUNqQyxNQUFNLGdFQUFnRSxDQUFDO0FBTXhFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7OztBQUk1RCxNQUFNLE9BQU8sc0JBQXNCO0lBYWpDLFlBQ1UsV0FBK0IsRUFDL0IsT0FBa0I7UUFEbEIsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBQy9CLFlBQU8sR0FBUCxPQUFPLENBQVc7UUFYbEIsbUJBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBdUIsRUFBRSxDQUFDLENBQUM7UUFDL0QsbUJBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBcUIsSUFBSSxDQUFDLENBQUM7UUFFL0QsY0FBUyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBSWxELGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBS3JDLENBQUM7SUFFSixJQUFXLE9BQU87UUFD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QUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFekIsSUFBSSxZQUFZLEVBQUU7WUFDaEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUNwQztJQUNILENBQUM7SUFFTSxpQkFBaUI7UUFDdEIseUNBQXlDO1FBQ3pDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDeEMsV0FBVyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxLQUFjO1FBQ3RDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzVCLENBQUM7O21IQXZOVSxzQkFBc0I7dUhBQXRCLHNCQUFzQjsyRkFBdEIsc0JBQXNCO2tCQURsQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIHRha2UsXG4gIHRha2VVbnRpbCxcbiAgdGFwLFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7XG4gIEZzRmlsdGVyU2F2ZWRGaWx0ZXJFZGl0Q29tcG9uZW50XG59IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvc2F2ZWQtZmlsdGVyLWVkaXQvc2F2ZWQtZmlsdGVyLWVkaXQuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIElGaWx0ZXJTYXZlZEZpbHRlcixcbiAgSUZpbHRlclNhdmVkRmlsdGVyc0NvbmZpZ1xufSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3NhdmVkLWZpbHRlcnMuaW50ZXJmYWNlJztcbmltcG9ydCB7IElGaWx0ZXJFeHRlcm5hbFBhcmFtcyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZXh0ZXJuYWwtcGFyYW1zLmludGVyZmFjZSc7XG5pbXBvcnQgeyByZXN0b3JlSXRlbXMgfSBmcm9tICcuLi8uLi9oZWxwZXJzL3Jlc3RvcmUtaXRlbXMnO1xuaW1wb3J0IHsgYnVpbGRRdWVyeVBhcmFtcyB9IGZyb20gJy4uLy4uL2hlbHBlcnMvYnVpbGQtcXVlcnktcGFyYW1zJztcbmltcG9ydCB7IEZzRmlsdGVySXRlbXNTdG9yZSB9IGZyb20gJy4uL2l0ZW1zLXN0b3JlLnNlcnZpY2UnO1xuXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTYXZlZEZpbHRlcnNDb250cm9sbGVyIGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICBwcm90ZWN0ZWQgX2NvbmZpZzogSUZpbHRlclNhdmVkRmlsdGVyc0NvbmZpZztcblxuICBwcm90ZWN0ZWQgX3NhdmVkRmlsdGVycyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElGaWx0ZXJTYXZlZEZpbHRlcltdPihbXSk7XG4gIHByb3RlY3RlZCBfYWN0aXZlRmlsdGVyJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SUZpbHRlclNhdmVkRmlsdGVyPihudWxsKTtcblxuICBwcm90ZWN0ZWQgX2VuYWJsZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgcHJvdGVjdGVkIF9wYXJhbXNDYXNlOiAnc25ha2UnIHwgJ2NhbWVsJztcblxuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfaXRlbXNTdG9yZTogRnNGaWx0ZXJJdGVtc1N0b3JlLFxuICAgIHByaXZhdGUgX2RpYWxvZzogTWF0RGlhbG9nLFxuICApIHt9XG5cbiAgcHVibGljIGdldCBlbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9lbmFibGVkJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBlbmFibGVkJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fZW5hYmxlZCRcbiAgICAgIC5waXBlKFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2F2ZWRGaWx0ZXJzKCk6IElGaWx0ZXJTYXZlZEZpbHRlcltdIHtcbiAgICByZXR1cm4gdGhpcy5fc2F2ZWRGaWx0ZXJzJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBzYXZlZEZpbHRlcnMkKCk6IE9ic2VydmFibGU8SUZpbHRlclNhdmVkRmlsdGVyW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2F2ZWRGaWx0ZXJzJFxuICAgICAgLnBpcGUoXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIGdldCBhY3RpdmVGaWx0ZXIoKTogSUZpbHRlclNhdmVkRmlsdGVyIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlRmlsdGVyJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBhY3RpdmVGaWx0ZXIkKCk6IE9ic2VydmFibGU8SUZpbHRlclNhdmVkRmlsdGVyPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZUZpbHRlciRcbiAgICAgIC5waXBlKFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYWN0aXZlRmlsdGVyRGF0YSgpOiBJRmlsdGVyRXh0ZXJuYWxQYXJhbXMge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmVGaWx0ZXIkLmdldFZhbHVlKCk/LmZpbHRlcnM7XG4gIH1cblxuICBwdWJsaWMgc2V0IHNhdmVkRmlsdGVycyhmaWx0ZXJzOiBJRmlsdGVyU2F2ZWRGaWx0ZXJbXSkge1xuICAgIHRoaXMuX3NhdmVkRmlsdGVycyQubmV4dChmaWx0ZXJzKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0KFxuICAgIHJlbW90ZVBhcmFtc0NvbmZpZzogSUZpbHRlclNhdmVkRmlsdGVyc0NvbmZpZyxcbiAgICBwYXJhbXNDYXNlOiAnc25ha2UnIHwgJ2NhbWVsJyxcbiAgKTogdm9pZCB7XG4gICAgaWYgKCFyZW1vdGVQYXJhbXNDb25maWcpIHtcbiAgICAgIHRoaXMuX3NldEVuYWJsZWRTdGF0dXMoZmFsc2UpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX3NldEVuYWJsZWRTdGF0dXModHJ1ZSk7XG5cbiAgICB0aGlzLl9wYXJhbXNDYXNlID0gcGFyYW1zQ2FzZTtcbiAgICB0aGlzLl9jb25maWcgPSByZW1vdGVQYXJhbXNDb25maWc7XG4gIH1cblxuICBwdWJsaWMgaW5pdFNhdmVkRmlsdGVycyhmaWx0ZXJzOiBJRmlsdGVyU2F2ZWRGaWx0ZXJbXSk6IHZvaWQge1xuICAgIGZpbHRlcnMgPSBbLi4uZmlsdGVyc107XG4gICAgZmlsdGVycy5mb3JFYWNoKChzYXZlZEZpbHRlcikgPT4ge1xuICAgICAgc2F2ZWRGaWx0ZXIuZmlsdGVycyA9IHJlc3RvcmVJdGVtcyhcbiAgICAgICAgc2F2ZWRGaWx0ZXIuZmlsdGVycyxcbiAgICAgICAgdGhpcy5faXRlbXNTdG9yZS5pdGVtcyxcbiAgICAgICAgdGhpcy5fcGFyYW1zQ2FzZVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIHRoaXMuc2F2ZWRGaWx0ZXJzID0gZmlsdGVycztcbiAgfVxuXG4gIHB1YmxpYyBsb2FkKCk6IE9ic2VydmFibGU8SUZpbHRlclNhdmVkRmlsdGVyW10+IHtcbiAgICByZXR1cm4gdGhpcy5fY29uZmlnLmxvYWQoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICB0aGlzLmluaXRTYXZlZEZpbHRlcnMocmVzcG9uc2UpO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gIH1cblxuICBwdWJsaWMgc2F2ZShzYXZlZEZpbHRlcjogSUZpbHRlclNhdmVkRmlsdGVyKTogT2JzZXJ2YWJsZTxJRmlsdGVyU2F2ZWRGaWx0ZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fY29uZmlnLnNhdmUoc2F2ZWRGaWx0ZXIpO1xuICB9XG5cbiAgcHVibGljIG9yZGVyKHNhdmVkRmlsdGVyczogSUZpbHRlclNhdmVkRmlsdGVyW10pOiBPYnNlcnZhYmxlPElGaWx0ZXJTYXZlZEZpbHRlcltdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbmZpZy5vcmRlcihzYXZlZEZpbHRlcnMpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgIHRoaXMuc2F2ZWRGaWx0ZXJzID0gW1xuICAgICAgICAgICAgLi4ucmVzcG9uc2UsXG4gICAgICAgICAgXTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICBwdWJsaWMgZGVsZXRlKHNhdmVkRmlsdGVyOiBJRmlsdGVyU2F2ZWRGaWx0ZXIpOiBPYnNlcnZhYmxlPElGaWx0ZXJTYXZlZEZpbHRlcj4ge1xuICAgIHJldHVybiB0aGlzLl9jb25maWcuZGVsZXRlKHNhdmVkRmlsdGVyKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICB0aGlzLnNhdmVkRmlsdGVycyA9IHRoaXMuc2F2ZWRGaWx0ZXJzXG4gICAgICAgICAgICAuZmlsdGVyKChmKSA9PiBmLmlkICE9PSByZXNwb25zZS5pZCk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIHNldEFjdGl2ZUZpbHRlcihzYXZlZEZpbHRlcjogSUZpbHRlclNhdmVkRmlsdGVyKTogdm9pZCB7XG4gICAgaWYgKHNhdmVkRmlsdGVyKSB7XG4gICAgICBjb25zdCBleGlzdGluZ0ZpbHRlciA9IHRoaXMuc2F2ZWRGaWx0ZXJzXG4gICAgICAgIC5maW5kKChmKSA9PiBmLmlkID09PSBzYXZlZEZpbHRlci5pZCk7XG5cbiAgICAgIGlmICghZXhpc3RpbmdGaWx0ZXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdTYXZlZCBmaWx0ZXIgY2Fubm90IGJlIGFjdGl2YXRlZCwgYmVjYXVzZSBpdCBkb2VzIG5vdCBleGlzdHMuIEZpbHRlciBJRCA9ICcgKyBzYXZlZEZpbHRlci5pZCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2FjdGl2ZUZpbHRlciQubmV4dChleGlzdGluZ0ZpbHRlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2FjdGl2ZUZpbHRlciQubmV4dChudWxsKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3BlblNhdmVkRmlsdGVyRWRpdERpYWxvZygpOiB2b2lkIHtcbiAgICBjb25zdCBwYXJhbXMgPSBidWlsZFF1ZXJ5UGFyYW1zKFxuICAgICAgdGhpcy5faXRlbXNTdG9yZS52YWx1ZXNBc1F1ZXJ5KCksXG4gICAgICB0aGlzLl9pdGVtc1N0b3JlLml0ZW1zLFxuICAgICk7XG4gICAgY29uc3QgdmFsdWVzID0gdGhpcy5faXRlbXNTdG9yZS52YWx1ZXModHJ1ZSk7XG5cbiAgICBjb25zdCBkaWFsb2dDb25maWcgPSB7XG4gICAgICBkYXRhOiB7XG4gICAgICAgIHBhcmFtczogcGFyYW1zLFxuICAgICAgICBzYXZlZEZpbHRlcnM6IHRoaXMuc2F2ZWRGaWx0ZXJzLFxuICAgICAgICBzYXZlQ2FsbGJhY2s6IHRoaXMuc2F2ZS5iaW5kKHRoaXMpLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgdGhpcy5fZGlhbG9nXG4gICAgICAub3BlbihGc0ZpbHRlclNhdmVkRmlsdGVyRWRpdENvbXBvbmVudCwgZGlhbG9nQ29uZmlnKVxuICAgICAgLmJlZm9yZUNsb3NlZCgpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHVwZGF0ZWRGaWx0ZXI6IElGaWx0ZXJTYXZlZEZpbHRlciB8IG51bGwpID0+IHtcbiAgICAgICAgaWYgKHVwZGF0ZWRGaWx0ZXIpIHtcbiAgICAgICAgICAvLyBnZXQgYWxyZWFkeSBzYXZlZCByZWxhdGVkIGZpbHRlciBvYmplY3RcbiAgICAgICAgICBjb25zdCBzYXZlZEZpbHRlciA9IHRoaXMuc2F2ZWRGaWx0ZXJzXG4gICAgICAgICAgICAuZmluZCgoZikgPT4gZi5pZCA9PT0gdXBkYXRlZEZpbHRlci5pZClcblxuICAgICAgICAgIC8vIHJlc3RvcmUgdmFsdWVzIGZyb20gcXVlcnkgc3RyaW5nXG4gICAgICAgICAgdXBkYXRlZEZpbHRlci5maWx0ZXJzID0gcmVzdG9yZUl0ZW1zKFxuICAgICAgICAgICAgdXBkYXRlZEZpbHRlci5maWx0ZXJzLFxuICAgICAgICAgICAgdGhpcy5faXRlbXNTdG9yZS5pdGVtcyxcbiAgICAgICAgICAgIHRoaXMuX3BhcmFtc0Nhc2VcbiAgICAgICAgICApO1xuXG5cbiAgICAgICAgICBpZiAoc2F2ZWRGaWx0ZXIpIHtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oc2F2ZWRGaWx0ZXIsIHVwZGF0ZWRGaWx0ZXIpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlc2V0QWN0aXZlRmlsdGVyKCk7XG4gICAgICAgICAgICB0aGlzLnNhdmVkRmlsdGVycyA9IFtcbiAgICAgICAgICAgICAgLi4udGhpcy5zYXZlZEZpbHRlcnMsXG4gICAgICAgICAgICAgIHVwZGF0ZWRGaWx0ZXJcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy51cGRhdGVBY3RpdmVGaWx0ZXIoKTtcbiAgICAgICAgfVxuICAgICAgfSlcblxuXG4gIH1cblxuICBwdWJsaWMgdXBkYXRlQWN0aXZlRmlsdGVyKCk6IHZvaWQge1xuICAgIC8vIExvb2t1cCBhY3RpdmUgZmlsdGVyXG4gICAgY29uc3QgYWNpdHZlRmlsdGVyID0gdGhpcy5zYXZlZEZpbHRlcnNcbiAgICAgIC5maW5kKChmKSA9PiBmLmFjdGl2ZSk7XG5cbiAgICBpZiAoYWNpdHZlRmlsdGVyKSB7XG4gICAgICB0aGlzLnNldEFjdGl2ZUZpbHRlcihhY2l0dmVGaWx0ZXIpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZXNldEFjdGl2ZUZpbHRlcigpOiB2b2lkIHtcbiAgICAvLyBSZXNldCBhbGwgcHJldmlvdXNseSBhY3RpdmF0ZWQgZmlsdGVyc1xuICAgIHRoaXMuc2F2ZWRGaWx0ZXJzLmZvckVhY2goKHNhdmVkRmlsdGVyKSA9PiB7XG4gICAgICBzYXZlZEZpbHRlci5hY3RpdmUgPSBmYWxzZTtcbiAgICB9KTtcblxuICAgIHRoaXMuc2V0QWN0aXZlRmlsdGVyKG51bGwpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0RW5hYmxlZFN0YXR1cyh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuX2VuYWJsZWQkLm5leHQodmFsdWUpXG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,162 @@
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
+ constructor(_itemsStore, _persistanceStore, _queryParams, _savedFilters) {
16
+ this._itemsStore = _itemsStore;
17
+ this._persistanceStore = _persistanceStore;
18
+ this._queryParams = _queryParams;
19
+ this._savedFilters = _savedFilters;
20
+ this._pending$ = new BehaviorSubject(false);
21
+ this._shouldResetSavedFilters = true;
22
+ this._destroy$ = new Subject();
23
+ }
24
+ get params() {
25
+ const result = {};
26
+ if (this._persistanceStore.enabled) {
27
+ Object.assign(result, this._persistanceStore.value?.data);
28
+ }
29
+ if (this._savedFilters.enabled && this._savedFilters.activeFilter) {
30
+ Object.assign(result, this._savedFilters.activeFilterData);
31
+ }
32
+ if (this._queryParams.enabled) {
33
+ Object.assign(result, this._queryParams.fetchedParams);
34
+ }
35
+ return result;
36
+ }
37
+ get pending() {
38
+ return this._pending$.getValue();
39
+ }
40
+ get pending$() {
41
+ return this._pending$.asObservable();
42
+ }
43
+ get savedFiltersController() {
44
+ return this._savedFilters;
45
+ }
46
+ get savedFiltersEnabled() {
47
+ return this._savedFilters.enabled;
48
+ }
49
+ ngOnDestroy() {
50
+ this._destroy$.next();
51
+ this._destroy$.complete();
52
+ }
53
+ setConfig(config) {
54
+ this._config = config;
55
+ this._initPersistance();
56
+ this._initQueryParams();
57
+ this._initSavedFilters();
58
+ this.initItems();
59
+ }
60
+ setActiveSavedFilter(savedFilter) {
61
+ this.savedFiltersController.setActiveFilter(savedFilter);
62
+ if (savedFilter) {
63
+ this.reloadFiltersWithValues(savedFilter.filters, false);
64
+ }
65
+ }
66
+ reloadFiltersWithValues(params, shouldResetSavedFilters = true) {
67
+ this._shouldResetSavedFilters = shouldResetSavedFilters;
68
+ this._itemsStore.updateItemsWithValues(params);
69
+ this._saveQueryParams();
70
+ this._savePersistedParams();
71
+ }
72
+ initItems() {
73
+ this._pending$.next(true);
74
+ if (this._savedFilters.enabled) {
75
+ this._savedFilters
76
+ .load()
77
+ .pipe(takeUntil(this._destroy$))
78
+ .subscribe(() => {
79
+ this._savedFilters.updateActiveFilter();
80
+ this._initItemsValues();
81
+ this._listenAndResetSavedFilters();
82
+ this._pending$.next(false);
83
+ });
84
+ }
85
+ else {
86
+ this._initItemsValues();
87
+ this._pending$.next(false);
88
+ }
89
+ this._listenItemsChange();
90
+ }
91
+ _initItemsValues() {
92
+ this._itemsStore.init(this.params);
93
+ this._saveQueryParams();
94
+ this._savePersistedParams();
95
+ }
96
+ fetchQueryParams() {
97
+ this._initQueryParams();
98
+ this._itemsStore.updateItemsWithValues(this.params);
99
+ }
100
+ _initPersistance() {
101
+ this._persistanceStore.init(this._config.persist, this._config.namespace, this._config.case);
102
+ }
103
+ _initQueryParams() {
104
+ this._queryParams.init(this._config.queryParam, this._config.case);
105
+ }
106
+ _initSavedFilters() {
107
+ this._savedFilters.init(this._config.savedFilters, this._config.case);
108
+ }
109
+ _listenItemsChange() {
110
+ this._itemsStore.ready$
111
+ .pipe(filter((v) => v), take(1), takeUntil(this._destroy$))
112
+ .subscribe(() => {
113
+ this._saveQueryParams();
114
+ this._savePersistedParams();
115
+ });
116
+ this._itemsStore
117
+ .itemsChange$
118
+ .pipe(takeUntil(this._destroy$))
119
+ .subscribe(() => {
120
+ this._saveQueryParams();
121
+ this._savePersistedParams();
122
+ });
123
+ }
124
+ _listenAndResetSavedFilters() {
125
+ this._itemsStore
126
+ .itemsChange$
127
+ .pipe(filter(() => !!this.savedFiltersController.activeFilter), switchMap(() => {
128
+ const shouldReset = this._shouldResetSavedFilters;
129
+ this._shouldResetSavedFilters = true;
130
+ return of(shouldReset);
131
+ }), filter((shouldReset) => shouldReset), takeUntil(this._destroy$))
132
+ .subscribe(() => {
133
+ this.savedFiltersController.resetActiveFilter();
134
+ });
135
+ }
136
+ _saveQueryParams() {
137
+ const targetItems = this._itemsStore.items
138
+ .filter((item) => !item.queryParamsDisabled);
139
+ const params = buildQueryParams(this._itemsStore.valuesAsQuery({
140
+ onlyPresented: false,
141
+ items: targetItems,
142
+ persisted: true,
143
+ }), targetItems);
144
+ this._queryParams.writeStateToQueryParams(params);
145
+ }
146
+ _savePersistedParams() {
147
+ const targetItems = this._itemsStore.items
148
+ .filter((item) => !item.persistanceDisabled);
149
+ const params = buildQueryParams(this._itemsStore.valuesAsQuery({
150
+ onlyPresented: false,
151
+ items: targetItems,
152
+ persisted: true,
153
+ }), targetItems);
154
+ this._persistanceStore.save(params);
155
+ }
156
+ }
157
+ ExternalParamsController.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ExternalParamsController, deps: [{ token: i1.FsFilterItemsStore }, { token: i2.PersistanceParamsController }, { token: i3.QueryParamsController }, { token: i4.SavedFiltersController }], target: i0.ɵɵFactoryTarget.Injectable });
158
+ ExternalParamsController.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ExternalParamsController });
159
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ExternalParamsController, decorators: [{
160
+ type: Injectable
161
+ }], ctorParameters: function () { return [{ type: i1.FsFilterItemsStore }, { type: i2.PersistanceParamsController }, { type: i3.QueryParamsController }, { type: i4.SavedFiltersController }]; } });
162
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZXJuYWwtcGFyYW1zLWNvbnRyb2xsZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvc2VydmljZXMvZXh0ZXJuYWwtcGFyYW1zLWNvbnRyb2xsZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRXRELE9BQU8sRUFBRSxlQUFlLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFLakUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDdEcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDMUYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDNUYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7OztBQUkzRCxNQUFNLE9BQU8sd0JBQXdCO0lBU25DLFlBQ1UsV0FBK0IsRUFDL0IsaUJBQThDLEVBQzlDLFlBQW1DLEVBQ25DLGFBQXFDO1FBSHJDLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQUMvQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQTZCO1FBQzlDLGlCQUFZLEdBQVosWUFBWSxDQUF1QjtRQUNuQyxrQkFBYSxHQUFiLGFBQWEsQ0FBd0I7UUFUdkMsY0FBUyxHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLDZCQUF3QixHQUFHLElBQUksQ0FBQztRQUVoQyxjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQU9wQyxDQUFDO0lB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QztJQUNQLENBQUM7SUFFTyxnQkFBZ0I7UUFDdEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLO2FBQ3ZDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUUvQyxNQUFNLE1BQU0sR0FBRyxnQkFBZ0IsQ0FDN0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUM7WUFDN0IsYUFBYSxFQUFFLEtBQUs7WUFDcEIsS0FBSyxFQUFFLFdBQVc7WUFDbEIsU0FBUyxFQUFFLElBQUk7U0FDaEIsQ0FBQyxFQUNGLFdBQVcsQ0FDWixDQUFDO1FBRUYsSUFBSSxDQUFDLFlBQVksQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRU8sb0JBQW9CO1FBQzFCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSzthQUN2QyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFL0MsTUFBTSxNQUFNLEdBQUcsZ0JBQWdCLENBQzdCLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDO1lBQzdCLGFBQWEsRUFBRSxLQUFLO1lBQ3BCLEtBQUssRUFBRSxXQUFXO1lBQ2xCLFNBQVMsRUFBRSxJQUFJO1NBQ2hCLENBQUMsRUFDRixXQUFXLENBQ1osQ0FBQztRQUVGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEMsQ0FBQzs7cUhBMU1VLHdCQUF3Qjt5SEFBeEIsd0JBQXdCOzJGQUF4Qix3QkFBd0I7a0JBRHBDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBzd2l0Y2hNYXAsIHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgYnVpbGRRdWVyeVBhcmFtcyB9IGZyb20gJy4uL2hlbHBlcnMvYnVpbGQtcXVlcnktcGFyYW1zJztcbmltcG9ydCB7IElGaWx0ZXJFeHRlcm5hbFBhcmFtcyB9IGZyb20gJy4uL2ludGVyZmFjZXMvZXh0ZXJuYWwtcGFyYW1zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJRmlsdGVyU2F2ZWRGaWx0ZXIgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3NhdmVkLWZpbHRlcnMuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZzRmlsdGVyQ29uZmlnIH0gZnJvbSAnLi4vbW9kZWxzL2ZpbHRlci1jb25maWcnO1xuXG5pbXBvcnQgeyBQZXJzaXN0YW5jZVBhcmFtc0NvbnRyb2xsZXIgfSBmcm9tICcuL2V4dGVybmFsLXBhcmFtcy9wZXJzaXN0YW5jZS1wYXJhbXMtY29udHJvbGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IFF1ZXJ5UGFyYW1zQ29udHJvbGxlciB9IGZyb20gJy4vZXh0ZXJuYWwtcGFyYW1zL3F1ZXJ5LXBhcmFtcy1jb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2F2ZWRGaWx0ZXJzQ29udHJvbGxlciB9IGZyb20gJy4vZXh0ZXJuYWwtcGFyYW1zL3NhdmVkLWZpbHRlcnMtY29udHJvbGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IEZzRmlsdGVySXRlbXNTdG9yZSB9IGZyb20gJy4vaXRlbXMtc3RvcmUuc2VydmljZSc7XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEV4dGVybmFsUGFyYW1zQ29udHJvbGxlciBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgcHJvdGVjdGVkIF9pbml0O1xuXG4gIHByaXZhdGUgX3BlbmRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIHByaXZhdGUgX3Nob3VsZFJlc2V0U2F2ZWRGaWx0ZXJzID0gdHJ1ZTtcbiAgcHJpdmF0ZSBfY29uZmlnOiBGc0ZpbHRlckNvbmZpZztcbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2l0ZW1zU3RvcmU6IEZzRmlsdGVySXRlbXNTdG9yZSxcbiAgICBwcml2YXRlIF9wZXJzaXN0YW5jZVN0b3JlOiBQZXJzaXN0YW5jZVBhcmFtc0NvbnRyb2xsZXIsXG4gICAgcHJpdmF0ZSBfcXVlcnlQYXJhbXM6IFF1ZXJ5UGFyYW1zQ29udHJvbGxlcixcbiAgICBwcml2YXRlIF9zYXZlZEZpbHRlcnM6IFNhdmVkRmlsdGVyc0NvbnRyb2xsZXIsXG4gICkgeyB9XG5cbiAgcHVibGljIGdldCBwYXJhbXMoKTogSUZpbHRlckV4dGVybmFsUGFyYW1zIHtcbiAgICBjb25zdCByZXN1bHQ6IElGaWx0ZXJFeHRlcm5hbFBhcmFtcyA9IHt9O1xuXG4gICAgaWYgKHRoaXMuX3BlcnNpc3RhbmNlU3RvcmUuZW5hYmxlZCkge1xuICAgICAgT2JqZWN0LmFzc2lnbihyZXN1bHQsIHRoaXMuX3BlcnNpc3RhbmNlU3RvcmUudmFsdWU/LmRhdGEpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9zYXZlZEZpbHRlcnMuZW5hYmxlZCAmJiB0aGlzLl9zYXZlZEZpbHRlcnMuYWN0aXZlRmlsdGVyKSB7XG4gICAgICBPYmplY3QuYXNzaWduKHJlc3VsdCwgdGhpcy5fc2F2ZWRGaWx0ZXJzLmFjdGl2ZUZpbHRlckRhdGEpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9xdWVyeVBhcmFtcy5lbmFibGVkKSB7XG4gICAgICBPYmplY3QuYXNzaWduKHJlc3VsdCwgdGhpcy5fcXVlcnlQYXJhbXMuZmV0Y2hlZFBhcmFtcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGVuZGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcGVuZGluZyQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGVuZGluZyQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3BlbmRpbmckLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBzYXZlZEZpbHRlcnNDb250cm9sbGVyKCk6IFNhdmVkRmlsdGVyc0NvbnRyb2xsZXIge1xuICAgIHJldHVybiB0aGlzLl9zYXZlZEZpbHRlcnM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNhdmVkRmlsdGVyc0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3NhdmVkRmlsdGVycy5lbmFibGVkO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIHNldENvbmZpZyhjb25maWcpIHtcbiAgICB0aGlzLl9jb25maWcgPSBjb25maWc7XG5cbiAgICB0aGlzLl9pbml0UGVyc2lzdGFuY2UoKTtcbiAgICB0aGlzLl9pbml0UXVlcnlQYXJhbXMoKTtcbiAgICB0aGlzLl9pbml0U2F2ZWRGaWx0ZXJzKCk7XG4gICAgdGhpcy5pbml0SXRlbXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRBY3RpdmVTYXZlZEZpbHRlcihzYXZlZEZpbHRlcjogSUZpbHRlclNhdmVkRmlsdGVyKSB7XG4gICAgdGhpcy5zYXZlZEZpbHRlcnNDb250cm9sbGVyLnNldEFjdGl2ZUZpbHRlcihzYXZlZEZpbHRlcik7XG5cbiAgICBpZiAoc2F2ZWRGaWx0ZXIpIHtcbiAgICAgIHRoaXMucmVsb2FkRmlsdGVyc1dpdGhWYWx1ZXMoc2F2ZWRGaWx0ZXIuZmlsdGVycywgZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZWxvYWRGaWx0ZXJzV2l0aFZhbHVlcyhwYXJhbXM6IElGaWx0ZXJFeHRlcm5hbFBhcmFtcywgc2hvdWxkUmVzZXRTYXZlZEZpbHRlcnMgPSB0cnVlKSB7XG4gICAgdGhpcy5fc2hvdWxkUmVzZXRTYXZlZEZpbHRlcnMgPSBzaG91bGRSZXNldFNhdmVkRmlsdGVycztcbiAgICB0aGlzLl9pdGVtc1N0b3JlLnVwZGF0ZUl0ZW1zV2l0aFZhbHVlcyhwYXJhbXMpO1xuXG4gICAgdGhpcy5fc2F2ZVF1ZXJ5UGFyYW1zKCk7XG4gICAgdGhpcy5fc2F2ZVBlcnNpc3RlZFBhcmFtcygpO1xuICB9XG5cbiAgcHVibGljIGluaXRJdGVtcygpOiB2b2lkIHtcbiAgICB0aGlzLl9wZW5kaW5nJC5uZXh0KHRydWUpO1xuICAgIGlmICh0aGlzLl9zYXZlZEZpbHRlcnMuZW5hYmxlZCkge1xuICAgICAgdGhpcy5fc2F2ZWRGaWx0ZXJzXG4gICAgICAgIC5sb2FkKClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9zYXZlZEZpbHRlcnMudXBkYXRlQWN0aXZlRmlsdGVyKCk7XG4gICAgICAgICAgdGhpcy5faW5pdEl0ZW1zVmFsdWVzKCk7XG4gICAgICAgICAgdGhpcy5fbGlzdGVuQW5kUmVzZXRTYXZlZEZpbHRlcnMoKTtcbiAgICAgICAgICB0aGlzLl9wZW5kaW5nJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2luaXRJdGVtc1ZhbHVlcygpO1xuICAgICAgdGhpcy5fcGVuZGluZyQubmV4dChmYWxzZSk7XG4gICAgfVxuXG4gICAgdGhpcy5fbGlzdGVuSXRlbXNDaGFuZ2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBfaW5pdEl0ZW1zVmFsdWVzKCkge1xuICAgIHRoaXMuX2l0ZW1zU3RvcmUuaW5pdCh0aGlzLnBhcmFtcyk7XG4gICAgdGhpcy5fc2F2ZVF1ZXJ5UGFyYW1zKCk7XG4gICAgdGhpcy5fc2F2ZVBlcnNpc3RlZFBhcmFtcygpO1xuICB9XG5cbiAgcHVibGljIGZldGNoUXVlcnlQYXJhbXMoKTogdm9pZCB7XG4gICAgdGhpcy5faW5pdFF1ZXJ5UGFyYW1zKCk7XG4gICAgdGhpcy5faXRlbXNTdG9yZS51cGRhdGVJdGVtc1dpdGhWYWx1ZXModGhpcy5wYXJhbXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdFBlcnNpc3RhbmNlKCkge1xuICAgIHRoaXMuX3BlcnNpc3RhbmNlU3RvcmUuaW5pdChcbiAgICAgIHRoaXMuX2NvbmZpZy5wZXJzaXN0LFxuICAgICAgdGhpcy5fY29uZmlnLm5hbWVzcGFjZSxcbiAgICAgIHRoaXMuX2NvbmZpZy5jYXNlLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9pbml0UXVlcnlQYXJhbXMoKSB7XG4gICAgdGhpcy5fcXVlcnlQYXJhbXMuaW5pdCh0aGlzLl9jb25maWcucXVlcnlQYXJhbSwgdGhpcy5fY29uZmlnLmNhc2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdFNhdmVkRmlsdGVycygpIHtcbiAgICB0aGlzLl9zYXZlZEZpbHRlcnMuaW5pdCh0aGlzLl9jb25maWcuc2F2ZWRGaWx0ZXJzLCB0aGlzLl9jb25maWcuY2FzZSk7XG4gIH1cblxuICBwcml2YXRlIF9saXN0ZW5JdGVtc0NoYW5nZSgpIHtcbiAgICB0aGlzLl9pdGVtc1N0b3JlLnJlYWR5JFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigodikgPT4gdiksXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5fc2F2ZVF1ZXJ5UGFyYW1zKCk7XG4gICAgICAgIHRoaXMuX3NhdmVQZXJzaXN0ZWRQYXJhbXMoKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5faXRlbXNTdG9yZVxuICAgICAgLml0ZW1zQ2hhbmdlJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5fc2F2ZVF1ZXJ5UGFyYW1zKCk7XG4gICAgICAgIHRoaXMuX3NhdmVQZXJzaXN0ZWRQYXJhbXMoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfbGlzdGVuQW5kUmVzZXRTYXZlZEZpbHRlcnMoKTogdm9pZCB7XG4gICAgdGhpcy5faXRlbXNTdG9yZVxuICAgICAgLml0ZW1zQ2hhbmdlJFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoKSA9PiAhIXRoaXMuc2F2ZWRGaWx0ZXJzQ29udHJvbGxlci5hY3RpdmVGaWx0ZXIpLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHNob3VsZFJlc2V0ID0gdGhpcy5fc2hvdWxkUmVzZXRTYXZlZEZpbHRlcnM7XG5cbiAgICAgICAgICB0aGlzLl9zaG91bGRSZXNldFNhdmVkRmlsdGVycyA9IHRydWU7XG5cbiAgICAgICAgICByZXR1cm4gb2Yoc2hvdWxkUmVzZXQpO1xuICAgICAgICB9KSxcbiAgICAgICAgZmlsdGVyKChzaG91bGRSZXNldCkgPT4gc2hvdWxkUmVzZXQpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuc2F2ZWRGaWx0ZXJzQ29udHJvbGxlci5yZXNldEFjdGl2ZUZpbHRlcigpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9zYXZlUXVlcnlQYXJhbXMoKSB7XG4gICAgY29uc3QgdGFyZ2V0SXRlbXMgPSB0aGlzLl9pdGVtc1N0b3JlLml0ZW1zXG4gICAgICAuZmlsdGVyKChpdGVtKSA9PiAhaXRlbS5xdWVyeVBhcmFtc0Rpc2FibGVkKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IGJ1aWxkUXVlcnlQYXJhbXMoXG4gICAgICB0aGlzLl9pdGVtc1N0b3JlLnZhbHVlc0FzUXVlcnkoe1xuICAgICAgICBvbmx5UHJlc2VudGVkOiBmYWxzZSxcbiAgICAgICAgaXRlbXM6IHRhcmdldEl0ZW1zLFxuICAgICAgICBwZXJzaXN0ZWQ6IHRydWUsXG4gICAgICB9KSxcbiAgICAgIHRhcmdldEl0ZW1zLFxuICAgICk7XG5cbiAgICB0aGlzLl9xdWVyeVBhcmFtcy53cml0ZVN0YXRlVG9RdWVyeVBhcmFtcyhwYXJhbXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2F2ZVBlcnNpc3RlZFBhcmFtcygpIHtcbiAgICBjb25zdCB0YXJnZXRJdGVtcyA9IHRoaXMuX2l0ZW1zU3RvcmUuaXRlbXNcbiAgICAgIC5maWx0ZXIoKGl0ZW0pID0+ICFpdGVtLnBlcnNpc3RhbmNlRGlzYWJsZWQpO1xuXG4gICAgY29uc3QgcGFyYW1zID0gYnVpbGRRdWVyeVBhcmFtcyhcbiAgICAgIHRoaXMuX2l0ZW1zU3RvcmUudmFsdWVzQXNRdWVyeSh7XG4gICAgICAgIG9ubHlQcmVzZW50ZWQ6IGZhbHNlLFxuICAgICAgICBpdGVtczogdGFyZ2V0SXRlbXMsXG4gICAgICAgIHBlcnNpc3RlZDogdHJ1ZSxcbiAgICAgIH0pLFxuICAgICAgdGFyZ2V0SXRlbXMsXG4gICAgKTtcblxuICAgIHRoaXMuX3BlcnNpc3RhbmNlU3RvcmUuc2F2ZShwYXJhbXMpO1xuICB9XG59XG4iXX0=