@firestitch/filter 14.0.0 → 14.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 (269) hide show
  1. package/{package/app → app}/classes/actions-controller.d.ts +41 -41
  2. package/{package/app → app}/components/action-button/action-button.component.d.ts +9 -9
  3. package/{package/app → app}/components/action-kebab-actions/action-kebab-actions.component.d.ts +7 -7
  4. package/{package/app → app}/components/actions/actions.component.d.ts +13 -13
  5. package/{package/app → app}/components/filter/filter.component.d.ts +204 -204
  6. package/{package/app → app}/components/filter-chip/filter-chip.component.d.ts +26 -26
  7. package/{package/app → app}/components/filter-chip-content/filter-chip-content.component.d.ts +18 -18
  8. package/{package/app → app}/components/filter-chips/filter-chips.component.d.ts +9 -9
  9. package/{package/app → app}/components/filter-drawer/filter-drawer.component.d.ts +30 -30
  10. package/{package/app → app}/components/filter-drawer-actions/filter-drawer-actions.component.d.ts +15 -15
  11. package/{package/app → app}/components/filters-item/autocomplete/autocomplete.component.d.ts +14 -14
  12. package/{package/app → app}/components/filters-item/autocompletechips/autocompletechips.component.d.ts +16 -16
  13. package/{package/app → app}/components/filters-item/base-item/base-item.component.d.ts +25 -25
  14. package/{package/app → app}/components/filters-item/checkbox/checkbox.component.d.ts +11 -11
  15. package/{package/app → app}/components/filters-item/chips/chips.component.d.ts +13 -13
  16. package/{package/app → app}/components/filters-item/date/date.component.d.ts +20 -20
  17. package/{package/app → app}/components/filters-item/date-range/date-range.component.d.ts +15 -15
  18. package/{package/app → app}/components/filters-item/filter-item.component.d.ts +39 -39
  19. package/{package/app → app}/components/filters-item/range/range.component.d.ts +15 -15
  20. package/{package/app → app}/components/filters-item/select/backdrop/backdrop.component.d.ts +6 -6
  21. package/{package/app → app}/components/filters-item/select/groups/groups.component.d.ts +12 -12
  22. package/{package/app → app}/components/filters-item/select/multiple/multiple.component.d.ts +15 -15
  23. package/{package/app → app}/components/filters-item/select/select.component.d.ts +23 -23
  24. package/{package/app → app}/components/filters-item/select/simple/simple.component.d.ts +14 -14
  25. package/{package/app → app}/components/filters-item/text/text.component.d.ts +19 -19
  26. package/{package/app → app}/components/filters-item/week/week.component.d.ts +12 -12
  27. package/{package/app → app}/components/saved-filter/index.d.ts +3 -3
  28. package/{package/app → app}/components/saved-filter/saved-filter-edit/index.d.ts +1 -1
  29. package/{package/app → app}/components/saved-filter/saved-filter-edit/saved-filter-edit.component.d.ts +18 -18
  30. package/{package/app → app}/components/saved-filter/saved-filter-manage/index.d.ts +1 -1
  31. package/{package/app → app}/components/saved-filter/saved-filter-manage/saved-filter-manage.component.d.ts +16 -16
  32. package/{package/app → app}/components/saved-filter/saved-filters-menu/index.d.ts +1 -1
  33. package/{package/app → app}/components/saved-filter/saved-filters-menu/saved-filters-menu.component.d.ts +23 -23
  34. package/{package/app → app}/consts/query-param-delimiter.d.ts +1 -1
  35. package/{package/app → app}/directives/focus-to-item/focus-to-item.directive.d.ts +27 -27
  36. package/{package/app → app}/directives/status-bar/status-bar.directive.d.ts +8 -8
  37. package/{package/app → app}/enums/action-mode.enum.d.ts +6 -6
  38. package/{package/app → app}/enums/action-type.enum.d.ts +9 -9
  39. package/{package/app → app}/enums/button-style.d.ts +9 -9
  40. package/{package/app → app}/enums/index.d.ts +6 -6
  41. package/{package/app → app}/enums/item-date-mode.enum.d.ts +5 -5
  42. package/{package/app → app}/enums/item-type.enum.d.ts +15 -15
  43. package/{package/app → app}/enums/picker-view-type.enum.d.ts +7 -7
  44. package/{package/app → app}/fs-filter.module.d.ts +70 -70
  45. package/{package/app → app}/helpers/build-query-params.d.ts +3 -3
  46. package/{package/app → app}/helpers/compare.d.ts +2 -2
  47. package/{package/app → app}/helpers/create-filter-item.d.ts +14 -14
  48. package/{package/app → app}/helpers/find-value.d.ts +1 -1
  49. package/{package/app → app}/helpers/get-range-name.d.ts +1 -1
  50. package/{package/app → app}/helpers/parse-date.d.ts +1 -1
  51. package/{package/app → app}/helpers/parse-item-value-from-stored.d.ts +1 -1
  52. package/{package/app → app}/helpers/query-param-transformers.d.ts +2 -2
  53. package/{package/app → app}/helpers/restore-items.d.ts +12 -12
  54. package/{package/app → app}/injectors/filter-config.d.ts +2 -2
  55. package/{package/app → app}/injectors/filter-drawer-data.d.ts +2 -2
  56. package/{package/app → app}/injectors/filter-drawer-overlay.d.ts +2 -2
  57. package/{package/app → app}/interfaces/action.interface.d.ts +81 -81
  58. package/{package/app → app}/interfaces/config.interface.d.ts +66 -66
  59. package/{package/app → app}/interfaces/external-params.interface.d.ts +3 -3
  60. package/{package/app → app}/interfaces/filter.interface.d.ts +4 -4
  61. package/{package/app → app}/interfaces/index.d.ts +6 -6
  62. package/{package/app → app}/interfaces/items/autocomplete-chips.interface.d.ts +15 -15
  63. package/{package/app → app}/interfaces/items/autocomplete.interface.d.ts +9 -9
  64. package/{package/app → app}/interfaces/items/base.interface.d.ts +29 -29
  65. package/{package/app → app}/interfaces/items/checkbox.interface.d.ts +7 -7
  66. package/{package/app → app}/interfaces/items/chips.interface.d.ts +6 -6
  67. package/{package/app → app}/interfaces/items/date-range.interface.d.ts +8 -8
  68. package/{package/app → app}/interfaces/items/date.interface.d.ts +7 -7
  69. package/{package/app → app}/interfaces/items/range.interface.d.ts +13 -13
  70. package/{package/app → app}/interfaces/items/select.interface.d.ts +20 -20
  71. package/{package/app → app}/interfaces/items/text.interface.d.ts +9 -9
  72. package/{package/app → app}/interfaces/items/week.interface.d.ts +7 -7
  73. package/{package/app → app}/interfaces/saved-filters.interface.d.ts +18 -18
  74. package/{package/app → app}/interfaces/update-filter-item.interface.d.ts +4 -4
  75. package/{package/app → app}/models/action-menu-item.model.d.ts +23 -23
  76. package/{package/app → app}/models/action.model.d.ts +54 -54
  77. package/{package/app → app}/models/filter-config.d.ts +31 -31
  78. package/{package/app → app}/models/items/autocomplete/base-autocomplete-item.d.ts +12 -12
  79. package/{package/app → app}/models/items/autocomplete-chips-item.d.ts +20 -20
  80. package/{package/app → app}/models/items/autocomplete-item.d.ts +11 -11
  81. package/{package/app → app}/models/items/base-item.d.ts +80 -80
  82. package/{package/app → app}/models/items/checkbox-item.d.ts +17 -17
  83. package/{package/app → app}/models/items/chips-item.d.ts +18 -18
  84. package/{package/app → app}/models/items/date/base-date-item.d.ts +14 -14
  85. package/{package/app → app}/models/items/date-item.d.ts +8 -8
  86. package/{package/app → app}/models/items/date-range/base-date-range-item.d.ts +21 -21
  87. package/{package/app → app}/models/items/date-range-item.d.ts +6 -6
  88. package/{package/app → app}/models/items/date-time-item.d.ts +7 -7
  89. package/{package/app → app}/models/items/date-time-range-item.d.ts +6 -6
  90. package/{package/app → app}/models/items/range-item.d.ts +23 -23
  91. package/{package/app → app}/models/items/select/base-select-item.d.ts +13 -13
  92. package/{package/app → app}/models/items/select/multiple-select-item.d.ts +14 -14
  93. package/{package/app → app}/models/items/select/simple-select-item.d.ts +14 -14
  94. package/{package/app → app}/models/items/select-item.d.ts +8 -8
  95. package/{package/app → app}/models/items/text-item.d.ts +15 -15
  96. package/{package/app → app}/models/items/week-item.d.ts +18 -18
  97. package/{package/app → app}/pipes/remove-isolate-value.pipe.d.ts +8 -8
  98. package/{package/app → app}/providers/filter-meta.d.ts +5 -5
  99. package/{package/app → app}/services/external-params/persistance-params-controller.service.d.ts +22 -22
  100. package/{package/app → app}/services/external-params/query-params-controller.service.d.ts +22 -22
  101. package/{package/app → app}/services/external-params/saved-filters-controller.service.d.ts +40 -40
  102. package/{package/app → app}/services/external-params-controller.service.d.ts +42 -42
  103. package/{package/app → app}/services/filter-overlay.service.d.ts +36 -36
  104. package/{package/app → app}/services/focus-controller.service.d.ts +18 -18
  105. package/{package/app → app}/services/items-store.service.d.ts +69 -69
  106. package/{package/esm2020 → esm2020}/app/classes/actions-controller.mjs +126 -126
  107. package/{package/esm2020 → esm2020}/app/components/action-button/action-button.component.mjs +21 -21
  108. package/{package/esm2020 → esm2020}/app/components/action-kebab-actions/action-kebab-actions.component.mjs +16 -16
  109. package/{package/esm2020 → esm2020}/app/components/actions/actions.component.mjs +41 -41
  110. package/{package/esm2020 → esm2020}/app/components/filter/filter.component.mjs +613 -613
  111. package/{package/esm2020 → esm2020}/app/components/filter-chip/filter-chip.component.mjs +85 -85
  112. package/{package/esm2020 → esm2020}/app/components/filter-chip-content/filter-chip-content.component.mjs +78 -78
  113. package/{package/esm2020 → esm2020}/app/components/filter-chips/filter-chips.component.mjs +18 -18
  114. package/{package/esm2020 → esm2020}/app/components/filter-drawer/filter-drawer.component.mjs +70 -70
  115. package/{package/esm2020 → esm2020}/app/components/filter-drawer-actions/filter-drawer-actions.component.mjs +40 -40
  116. package/{package/esm2020 → esm2020}/app/components/filters-item/autocomplete/autocomplete.component.mjs +26 -26
  117. package/{package/esm2020 → esm2020}/app/components/filters-item/autocompletechips/autocompletechips.component.mjs +41 -41
  118. package/{package/esm2020 → esm2020}/app/components/filters-item/base-item/base-item.component.mjs +62 -62
  119. package/{package/esm2020 → esm2020}/app/components/filters-item/checkbox/checkbox.component.mjs +20 -20
  120. package/{package/esm2020 → esm2020}/app/components/filters-item/chips/chips.component.mjs +27 -27
  121. package/{package/esm2020 → esm2020}/app/components/filters-item/date/date.component.mjs +42 -42
  122. package/{package/esm2020 → esm2020}/app/components/filters-item/date-range/date-range.component.mjs +33 -33
  123. package/{package/esm2020 → esm2020}/app/components/filters-item/filter-item.component.mjs +79 -79
  124. package/{package/esm2020 → esm2020}/app/components/filters-item/range/range.component.mjs +44 -44
  125. package/{package/esm2020 → esm2020}/app/components/filters-item/select/backdrop/backdrop.component.mjs +11 -11
  126. package/{package/esm2020 → esm2020}/app/components/filters-item/select/groups/groups.component.mjs +29 -29
  127. package/{package/esm2020 → esm2020}/app/components/filters-item/select/multiple/multiple.component.mjs +56 -56
  128. package/{package/esm2020 → esm2020}/app/components/filters-item/select/select.component.mjs +50 -50
  129. package/{package/esm2020 → esm2020}/app/components/filters-item/select/simple/simple.component.mjs +42 -42
  130. package/{package/esm2020 → esm2020}/app/components/filters-item/text/text.component.mjs +48 -48
  131. package/{package/esm2020 → esm2020}/app/components/filters-item/week/week.component.mjs +24 -24
  132. package/{package/esm2020 → esm2020}/app/components/saved-filter/index.mjs +3 -3
  133. package/{package/esm2020 → esm2020}/app/components/saved-filter/saved-filter-edit/index.mjs +1 -1
  134. package/{package/esm2020 → esm2020}/app/components/saved-filter/saved-filter-edit/saved-filter-edit.component.mjs +49 -49
  135. package/{package/esm2020 → esm2020}/app/components/saved-filter/saved-filter-manage/index.mjs +1 -1
  136. package/{package/esm2020 → esm2020}/app/components/saved-filter/saved-filter-manage/saved-filter-manage.component.mjs +39 -39
  137. package/{package/esm2020 → esm2020}/app/components/saved-filter/saved-filters-menu/index.mjs +1 -1
  138. package/{package/esm2020 → esm2020}/app/components/saved-filter/saved-filters-menu/saved-filters-menu.component.mjs +51 -51
  139. package/{package/esm2020 → esm2020}/app/consts/query-param-delimiter.mjs +1 -1
  140. package/{package/esm2020 → esm2020}/app/directives/focus-to-item/focus-to-item.directive.mjs +129 -129
  141. package/{package/esm2020 → esm2020}/app/directives/status-bar/status-bar.directive.mjs +15 -15
  142. package/{package/esm2020 → esm2020}/app/enums/action-mode.enum.mjs +7 -7
  143. package/{package/esm2020 → esm2020}/app/enums/action-type.enum.mjs +11 -11
  144. package/{package/esm2020 → esm2020}/app/enums/button-style.mjs +10 -10
  145. package/{package/esm2020 → esm2020}/app/enums/index.mjs +6 -6
  146. package/{package/esm2020 → esm2020}/app/enums/item-date-mode.enum.mjs +6 -6
  147. package/{package/esm2020 → esm2020}/app/enums/item-type.enum.mjs +16 -16
  148. package/{package/esm2020 → esm2020}/app/enums/picker-view-type.enum.mjs +8 -8
  149. package/{package/esm2020 → esm2020}/app/fs-filter.module.mjs +260 -260
  150. package/{package/esm2020 → esm2020}/app/helpers/build-query-params.mjs +32 -32
  151. package/{package/esm2020 → esm2020}/app/helpers/compare.mjs +37 -37
  152. package/{package/esm2020 → esm2020}/app/helpers/create-filter-item.mjs +54 -54
  153. package/{package/esm2020 → esm2020}/app/helpers/find-value.mjs +12 -12
  154. package/{package/esm2020 → esm2020}/app/helpers/get-range-name.mjs +8 -8
  155. package/{package/esm2020 → esm2020}/app/helpers/parse-date.mjs +7 -7
  156. package/{package/esm2020 → esm2020}/app/helpers/parse-item-value-from-stored.mjs +80 -80
  157. package/{package/esm2020 → esm2020}/app/helpers/query-param-transformers.mjs +8 -8
  158. package/{package/esm2020 → esm2020}/app/helpers/restore-items.mjs +48 -48
  159. package/{package/esm2020 → esm2020}/app/injectors/filter-config.mjs +2 -2
  160. package/{package/esm2020 → esm2020}/app/injectors/filter-drawer-data.mjs +2 -2
  161. package/{package/esm2020 → esm2020}/app/injectors/filter-drawer-overlay.mjs +2 -2
  162. package/{package/esm2020 → esm2020}/app/interfaces/action.interface.mjs +1 -1
  163. package/{package/esm2020 → esm2020}/app/interfaces/config.interface.mjs +1 -1
  164. package/{package/esm2020 → esm2020}/app/interfaces/external-params.interface.mjs +1 -1
  165. package/{package/esm2020 → esm2020}/app/interfaces/filter.interface.mjs +1 -1
  166. package/{package/esm2020 → esm2020}/app/interfaces/index.mjs +6 -6
  167. package/{package/esm2020 → esm2020}/app/interfaces/items/autocomplete-chips.interface.mjs +1 -1
  168. package/{package/esm2020 → esm2020}/app/interfaces/items/autocomplete.interface.mjs +1 -1
  169. package/{package/esm2020 → esm2020}/app/interfaces/items/base.interface.mjs +1 -1
  170. package/{package/esm2020 → esm2020}/app/interfaces/items/checkbox.interface.mjs +1 -1
  171. package/{package/esm2020 → esm2020}/app/interfaces/items/chips.interface.mjs +1 -1
  172. package/{package/esm2020 → esm2020}/app/interfaces/items/date-range.interface.mjs +1 -1
  173. package/{package/esm2020 → esm2020}/app/interfaces/items/date.interface.mjs +1 -1
  174. package/{package/esm2020 → esm2020}/app/interfaces/items/range.interface.mjs +1 -1
  175. package/{package/esm2020 → esm2020}/app/interfaces/items/select.interface.mjs +1 -1
  176. package/{package/esm2020 → esm2020}/app/interfaces/items/text.interface.mjs +1 -1
  177. package/{package/esm2020 → esm2020}/app/interfaces/items/week.interface.mjs +1 -1
  178. package/{package/esm2020 → esm2020}/app/interfaces/saved-filters.interface.mjs +1 -1
  179. package/{package/esm2020 → esm2020}/app/interfaces/update-filter-item.interface.mjs +1 -1
  180. package/{package/esm2020 → esm2020}/app/models/action-menu-item.model.mjs +66 -66
  181. package/{package/esm2020 → esm2020}/app/models/action.model.mjs +129 -129
  182. package/{package/esm2020 → esm2020}/app/models/filter-config.mjs +66 -66
  183. package/{package/esm2020 → esm2020}/app/models/items/autocomplete/base-autocomplete-item.mjs +13 -13
  184. package/{package/esm2020 → esm2020}/app/models/items/autocomplete-chips-item.mjs +60 -60
  185. package/{package/esm2020 → esm2020}/app/models/items/autocomplete-item.mjs +32 -32
  186. package/{package/esm2020 → esm2020}/app/models/items/base-item.mjs +233 -233
  187. package/{package/esm2020 → esm2020}/app/models/items/checkbox-item.mjs +49 -49
  188. package/{package/esm2020 → esm2020}/app/models/items/chips-item.mjs +88 -88
  189. package/{package/esm2020 → esm2020}/app/models/items/date/base-date-item.mjs +47 -47
  190. package/{package/esm2020 → esm2020}/app/models/items/date-item.mjs +18 -18
  191. package/{package/esm2020 → esm2020}/app/models/items/date-range/base-date-range-item.mjs +134 -134
  192. package/{package/esm2020 → esm2020}/app/models/items/date-range-item.mjs +6 -6
  193. package/{package/esm2020 → esm2020}/app/models/items/date-time-item.mjs +9 -9
  194. package/{package/esm2020 → esm2020}/app/models/items/date-time-range-item.mjs +6 -6
  195. package/{package/esm2020 → esm2020}/app/models/items/range-item.mjs +82 -82
  196. package/{package/esm2020 → esm2020}/app/models/items/select/base-select-item.mjs +36 -36
  197. package/{package/esm2020 → esm2020}/app/models/items/select/multiple-select-item.mjs +87 -87
  198. package/{package/esm2020 → esm2020}/app/models/items/select/simple-select-item.mjs +65 -65
  199. package/{package/esm2020 → esm2020}/app/models/items/select-item.mjs +10 -10
  200. package/{package/esm2020 → esm2020}/app/models/items/text-item.mjs +33 -33
  201. package/{package/esm2020 → esm2020}/app/models/items/week-item.mjs +93 -93
  202. package/{package/esm2020 → esm2020}/app/pipes/remove-isolate-value.pipe.mjs +20 -20
  203. package/{package/esm2020 → esm2020}/app/providers/filter-meta.mjs +9 -9
  204. package/{package/esm2020 → esm2020}/app/services/external-params/persistance-params-controller.service.mjs +57 -57
  205. package/{package/esm2020 → esm2020}/app/services/external-params/query-params-controller.service.mjs +61 -61
  206. package/{package/esm2020 → esm2020}/app/services/external-params/saved-filters-controller.service.mjs +162 -162
  207. package/{package/esm2020 → esm2020}/app/services/external-params-controller.service.mjs +178 -178
  208. package/{package/esm2020 → esm2020}/app/services/filter-overlay.service.mjs +121 -121
  209. package/{package/esm2020 → esm2020}/app/services/focus-controller.service.mjs +29 -29
  210. package/{package/esm2020 → esm2020}/app/services/items-store.service.mjs +344 -344
  211. package/{package/esm2020 → esm2020}/firestitch-filter.mjs +4 -4
  212. package/{package/esm2020 → esm2020}/public_api.mjs +35 -35
  213. package/{package/fesm2015 → fesm2015}/firestitch-filter.mjs +4349 -4349
  214. package/{package/fesm2015 → fesm2015}/firestitch-filter.mjs.map +1 -1
  215. package/{package/fesm2020 → fesm2020}/firestitch-filter.mjs +4336 -4336
  216. package/{package/fesm2020 → fesm2020}/firestitch-filter.mjs.map +1 -1
  217. package/{package/index.d.ts → index.d.ts} +5 -5
  218. package/package.json +22 -79
  219. package/{package/public_api.d.ts → public_api.d.ts} +40 -40
  220. package/.angular/cache/14.2.13/ng-packagr/content-v2/sha512/16/25/214635fa124a83a4fe3a52bde70e7124d9d011a5d176790a9c607bf1f5ed27cadefc4a1b5a225c0bda11250a180ca5798773e0c108e8d5e2d8559d2f9eed +0 -1
  221. package/.angular/cache/14.2.13/ng-packagr/content-v2/sha512/44/f9/ee834587d4ac4a429d8c4af2e1562028c7432ac179f9699f2990ab3dadc8e4f66ae45bf22625aedf47fad137e2de39a9b99141784e56d5123544f90c922a +0 -1
  222. package/.angular/cache/14.2.13/ng-packagr/content-v2/sha512/4d/89/993c2eaff9e0cfca023676bf3f2d3d446f6b6cc90eec839075529d155102b2808a8b44e259d357704acd43143c12af5a5916b4e291a799164b722142ee8e +0 -1
  223. package/.angular/cache/14.2.13/ng-packagr/content-v2/sha512/52/cb/71f80b48163c432fcb05ac0f736ae7cae10318713c98c74739b3eb5d83ebce635b1a7c77d357b1a4b13a9ae9cfe43348538e4336c25c234551f1e80f0567 +0 -1
  224. package/.angular/cache/14.2.13/ng-packagr/content-v2/sha512/54/f6/73f0d8ea64a18aa71d80a2cf99d6eb4a2cd345e943127e018913d0f76e9575fabe3aee5002ee4da996e661662d474ad31e9a77f2858c68eed532c2d45d47 +0 -1
  225. package/.angular/cache/14.2.13/ng-packagr/content-v2/sha512/61/84/7f56389ef39faf5c5b6ad292f668ec6cc5cb6e476d94b1740bdadb9832e3de22a0032b90811f02c80d3d56be5f5e32d8bb900e17ebcb09db379befddc221 +0 -1
  226. package/.angular/cache/14.2.13/ng-packagr/content-v2/sha512/69/d3/d48ad36dd0a576c4d6f8af3a2ee671037639b0a8d91679992dcbd9dabc284bf316c3126201837e931a162f23cdc4a505608bb64df8e87f59a17364890873 +0 -1
  227. package/.angular/cache/14.2.13/ng-packagr/content-v2/sha512/70/92/ac80dcd48732b949f163abf36c48b0912598d2bb66e5c1f2056fef872f59fb1b591abbf3bfdbf461a46cbd507eea05a6bd0f14ba3d573f1684cbc78bd094 +0 -1
  228. package/.angular/cache/14.2.13/ng-packagr/content-v2/sha512/73/10/12664696206dcdab6b084331532b234c439acef8a6428af667a2e1bb1c15e2055b3ac70f44fd8bf508396d3e11a798b40849fd66dbdbd0ff9d9d7e780edd +0 -1
  229. package/.angular/cache/14.2.13/ng-packagr/content-v2/sha512/74/f6/4c2db73499d08279895e1ab6e2fb65baa613d31218b6968f74143ba03819c72a2720b927ca5a708dd484c0bc6763124e62ce9c2e652f71b740cb2d29ae03 +0 -1
  230. package/.angular/cache/14.2.13/ng-packagr/content-v2/sha512/78/30/8eedd8d752a08df898806b01abde5b4c1809f6edcba95fcf112c006833b34986c295b62a7e47cd73297c3da78ca6072ef18ba502b6efdd6048dbdbbcd257 +0 -1
  231. package/.angular/cache/14.2.13/ng-packagr/content-v2/sha512/8c/f8/d9f30e3e898c99e8c3157d4c9157dead1b1115ea4db50aced0c33713cd394bb770b182d1d5087c821d22b2abb99e288191ba9e30954ea4ed9ab6ff70d391 +0 -1
  232. package/.angular/cache/14.2.13/ng-packagr/content-v2/sha512/8d/53/ad58764bc240411378ae1c47c0c20525da378a3b143795a11bc3fdbf6c9cde6fb2de6c3947d673d5872b9ce205d6274114b3b4dfd27609a636df7fd0b600 +0 -1
  233. package/.angular/cache/14.2.13/ng-packagr/content-v2/sha512/8f/74/3ed29367f32f9c909f5898704561eb1ebe5cdabba507ba08cbeeaeecd274d020b1401ba871938be899025a265299f8be66c59d59b574a996a74b2987d98e +0 -1
  234. package/.angular/cache/14.2.13/ng-packagr/content-v2/sha512/a1/ac/1dbcf215585477c3f70180cb40186b5119d9ad1d27b2e0dcde66034c950e334ce0577409535c29bb15d2e6c9238eb9e841177fc62d3949a58bbbb397238d +0 -1
  235. package/.angular/cache/14.2.13/ng-packagr/content-v2/sha512/a3/08/068a7a29e9cc2385b62d4b0fc14b04a7f09ed469d9b79bb754e37d4933b0ab8aa171b286080e20a11e67f42b8558a4bda64aa03ca097001ecda5c25a9015 +0 -1
  236. package/.angular/cache/14.2.13/ng-packagr/content-v2/sha512/ae/6c/352ab77e603fa53f25ab95cd6fd19a230095b212464689ab76c89db8d97bd0f221c27fbd84d0767fb5ce7e33f5feb175a9256ab35cf216d30dd3263b6b14 +0 -1
  237. package/.angular/cache/14.2.13/ng-packagr/content-v2/sha512/b6/38/eb8a1b6bd6265968335935cbc2763fbcbb9cd4e32dd58a5234bfd87379ee840044338eeae5f126da9936d21ed423071cfbca6748ee153235addf874824f7 +0 -1
  238. package/.angular/cache/14.2.13/ng-packagr/index-v5/01/3c/d4dca899e5bd80c43ed2e78ec79687adc272ff835d03f0ae48cb881ddd83 +0 -2
  239. package/.angular/cache/14.2.13/ng-packagr/index-v5/05/a7/da2d9625c1bc294409dbf750062e363a1abbe39b51177bfb7e5a9aa9ae81 +0 -2
  240. package/.angular/cache/14.2.13/ng-packagr/index-v5/08/f1/b2e705e45544df7c77f4238b558d569a1215422c2086df9140963f960eef +0 -2
  241. package/.angular/cache/14.2.13/ng-packagr/index-v5/21/1d/398c87beb2402502d4e706beedd98ea707f31b441d6aa7711eef62a0439b +0 -2
  242. package/.angular/cache/14.2.13/ng-packagr/index-v5/26/0b/ee2b1cad7f114e99f8d4da848bd6ceb4e849178b50723d9dcd10f39fb05c +0 -2
  243. package/.angular/cache/14.2.13/ng-packagr/index-v5/26/98/b8614f38ea6fefe80f96f06adb98d925eccfae9eec0937c645a42034614c +0 -2
  244. package/.angular/cache/14.2.13/ng-packagr/index-v5/64/4d/18a7b240783e7b3de33ad33724d2b43e8f3349e840ccab571ca3c6c51c00 +0 -2
  245. package/.angular/cache/14.2.13/ng-packagr/index-v5/64/70/77036e049a76cab5a64caa9cba4b603631c7e9e2f47e6c5fbc7f39d67a2f +0 -2
  246. package/.angular/cache/14.2.13/ng-packagr/index-v5/6c/5d/700bf777ddebfd9b8f15e2709674069747b6fcd37376049712828252ca92 +0 -3
  247. package/.angular/cache/14.2.13/ng-packagr/index-v5/71/89/4e4e3808e28a4a95a98391ab38f87f165ae234aefd4231092d1f531f56b3 +0 -2
  248. package/.angular/cache/14.2.13/ng-packagr/index-v5/7c/c2/bd7b21a07f8b1da7797f40df86dc4289416305c26464c6b965a336fd3975 +0 -2
  249. package/.angular/cache/14.2.13/ng-packagr/index-v5/85/64/cb2f22b4df13a70eb519564e382de3d7dd3747bc0cab1109017f8934cff8 +0 -2
  250. package/.angular/cache/14.2.13/ng-packagr/index-v5/96/b1/2730596477eee53fc70082999f48e373f6795e68d21e04234a45131added +0 -2
  251. package/.angular/cache/14.2.13/ng-packagr/index-v5/af/e4/165326aa8daa8e07ac9e02bde3d64a31b00d1b2b59a797a51a89456d2ad6 +0 -2
  252. package/.angular/cache/14.2.13/ng-packagr/index-v5/cd/96/32e83b96bce723e8ad58fdb7c43cf0002b3e0561309899e8b2a75204cbff +0 -2
  253. package/.angular/cache/14.2.13/ng-packagr/index-v5/dd/38/1f423a0e17cf4e99ef3c880daeb533cdce9275226cb2f617aed52e881e59 +0 -2
  254. package/.angular/cache/14.2.13/ng-packagr/index-v5/e4/e8/f48bdfbec024c932fd928e4db790b6454d090d4db31e9d69201a5e1ea466 +0 -2
  255. package/.angular/cache/14.2.13/ng-packagr/index-v5/ee/59/16a63690de125da5067876d4ccf122230175174f3489e48893448bcbdcd3 +0 -2
  256. package/.angular/cache/14.2.13/ng-packagr/index-v5/fd/46/71e9d6d1a123ed68ce03aa617dcaaad4ad9c5a9193f1281166766c453621 +0 -3
  257. package/.angulardoc.json +0 -4
  258. package/.editorconfig +0 -15
  259. package/.eslintrc.json +0 -9
  260. package/.gitmodules +0 -3
  261. package/README.MD +0 -0
  262. package/angular.json +0 -163
  263. package/babel.config.js +0 -11
  264. package/jest.config.js +0 -24
  265. package/package/package.json +0 -56
  266. package/tsconfig.compodoc.json +0 -12
  267. package/tsconfig.json +0 -10
  268. package/tslint.json +0 -8
  269. /package/{package/styles.scss → styles.scss} +0 -0
@@ -1,179 +1,179 @@
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
- let result = {};
26
- if (this._persistanceStore.enabled) {
27
- result = {
28
- ...result,
29
- ...this._persistanceStore.value?.data,
30
- };
31
- }
32
- if (this._savedFilters.enabled && this._savedFilters.activeFilter) {
33
- const query = Object.keys(result)
34
- .filter((key) => !this._itemsStore.itemNames.includes(key))
35
- .reduce((acc, key) => {
36
- return {
37
- ...acc,
38
- [key]: result[key],
39
- };
40
- }, {});
41
- result = {
42
- ...query,
43
- ...this._savedFilters.activeFilterData,
44
- };
45
- }
46
- else if (this._queryParams.enabled) {
47
- result = {
48
- ...result,
49
- ...this._queryParams.fetchedParams,
50
- };
51
- }
52
- return result;
53
- }
54
- get pending() {
55
- return this._pending$.getValue();
56
- }
57
- get pending$() {
58
- return this._pending$.asObservable();
59
- }
60
- get savedFiltersController() {
61
- return this._savedFilters;
62
- }
63
- get savedFiltersEnabled() {
64
- return this._savedFilters.enabled;
65
- }
66
- ngOnDestroy() {
67
- this._destroy$.next();
68
- this._destroy$.complete();
69
- }
70
- setConfig(config) {
71
- this._config = config;
72
- this._initPersistance();
73
- this._initQueryParams();
74
- this._initSavedFilters();
75
- this.initItems();
76
- }
77
- setActiveSavedFilter(savedFilter) {
78
- this.savedFiltersController.setActiveFilter(savedFilter);
79
- if (savedFilter) {
80
- this.reloadFiltersWithValues(savedFilter.filters, false);
81
- }
82
- }
83
- reloadFiltersWithValues(params, shouldResetSavedFilters = true) {
84
- this._shouldResetSavedFilters = shouldResetSavedFilters;
85
- this._itemsStore.updateItemsWithValues(params);
86
- this._saveQueryParams();
87
- this._savePersistedParams();
88
- }
89
- initItems() {
90
- this._pending$.next(true);
91
- if (this._savedFilters.enabled) {
92
- this._savedFilters
93
- .load()
94
- .pipe(takeUntil(this._destroy$))
95
- .subscribe(() => {
96
- this._savedFilters.updateActiveFilter();
97
- this._initItemsValues();
98
- this._listenAndResetSavedFilters();
99
- this._pending$.next(false);
100
- });
101
- }
102
- else {
103
- this._initItemsValues();
104
- this._pending$.next(false);
105
- }
106
- this._listenItemsChange();
107
- }
108
- _initItemsValues() {
109
- this._itemsStore.init(this.params);
110
- this._saveQueryParams();
111
- this._savePersistedParams();
112
- }
113
- fetchQueryParams() {
114
- this._initQueryParams();
115
- this._itemsStore.updateItemsWithValues(this.params);
116
- }
117
- _initPersistance() {
118
- this._persistanceStore.init(this._config.persist, this._config.namespace, this._config.case);
119
- }
120
- _initQueryParams() {
121
- this._queryParams.init(this._config.queryParam, this._config.case);
122
- }
123
- _initSavedFilters() {
124
- this._savedFilters.init(this._config.savedFilters, this._config.case);
125
- }
126
- _listenItemsChange() {
127
- this._itemsStore.ready$
128
- .pipe(filter((v) => v), take(1), takeUntil(this._destroy$))
129
- .subscribe(() => {
130
- this._saveQueryParams();
131
- this._savePersistedParams();
132
- });
133
- this._itemsStore
134
- .itemsChange$
135
- .pipe(takeUntil(this._destroy$))
136
- .subscribe(() => {
137
- this._saveQueryParams();
138
- this._savePersistedParams();
139
- });
140
- }
141
- _listenAndResetSavedFilters() {
142
- this._itemsStore
143
- .itemsChange$
144
- .pipe(filter(() => !!this.savedFiltersController.activeFilter), switchMap(() => {
145
- const shouldReset = this._shouldResetSavedFilters;
146
- this._shouldResetSavedFilters = true;
147
- return of(shouldReset);
148
- }), filter((shouldReset) => shouldReset), takeUntil(this._destroy$))
149
- .subscribe(() => {
150
- this.savedFiltersController.resetActiveFilter();
151
- });
152
- }
153
- _saveQueryParams() {
154
- const targetItems = this._itemsStore.items
155
- .filter((item) => !item.queryParamsDisabled);
156
- const params = buildQueryParams(this._itemsStore.valuesAsQuery({
157
- onlyPresented: false,
158
- items: targetItems,
159
- persisted: true,
160
- }), targetItems);
161
- this._queryParams.writeStateToQueryParams(params);
162
- }
163
- _savePersistedParams() {
164
- const targetItems = this._itemsStore.items
165
- .filter((item) => !item.persistanceDisabled);
166
- const params = buildQueryParams(this._itemsStore.valuesAsQuery({
167
- onlyPresented: false,
168
- items: targetItems,
169
- persisted: true,
170
- }), targetItems);
171
- this._persistanceStore.save(params);
172
- }
173
- }
174
- ExternalParamsController.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ExternalParamsController, deps: [{ token: i1.FsFilterItemsStore }, { token: i2.PersistanceParamsController }, { token: i3.QueryParamsController }, { token: i4.SavedFiltersController }], target: i0.ɵɵFactoryTarget.Injectable });
175
- ExternalParamsController.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ExternalParamsController });
176
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ExternalParamsController, decorators: [{
177
- type: Injectable
178
- }], ctorParameters: function () { return [{ type: i1.FsFilterItemsStore }, { type: i2.PersistanceParamsController }, { type: i3.QueryParamsController }, { type: i4.SavedFiltersController }]; } });
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
+ let result = {};
26
+ if (this._persistanceStore.enabled) {
27
+ result = {
28
+ ...result,
29
+ ...this._persistanceStore.value?.data,
30
+ };
31
+ }
32
+ if (this._savedFilters.enabled && this._savedFilters.activeFilter) {
33
+ const query = Object.keys(result)
34
+ .filter((key) => !this._itemsStore.itemNames.includes(key))
35
+ .reduce((acc, key) => {
36
+ return {
37
+ ...acc,
38
+ [key]: result[key],
39
+ };
40
+ }, {});
41
+ result = {
42
+ ...query,
43
+ ...this._savedFilters.activeFilterData,
44
+ };
45
+ }
46
+ else if (this._queryParams.enabled) {
47
+ result = {
48
+ ...result,
49
+ ...this._queryParams.fetchedParams,
50
+ };
51
+ }
52
+ return result;
53
+ }
54
+ get pending() {
55
+ return this._pending$.getValue();
56
+ }
57
+ get pending$() {
58
+ return this._pending$.asObservable();
59
+ }
60
+ get savedFiltersController() {
61
+ return this._savedFilters;
62
+ }
63
+ get savedFiltersEnabled() {
64
+ return this._savedFilters.enabled;
65
+ }
66
+ ngOnDestroy() {
67
+ this._destroy$.next();
68
+ this._destroy$.complete();
69
+ }
70
+ setConfig(config) {
71
+ this._config = config;
72
+ this._initPersistance();
73
+ this._initQueryParams();
74
+ this._initSavedFilters();
75
+ this.initItems();
76
+ }
77
+ setActiveSavedFilter(savedFilter) {
78
+ this.savedFiltersController.setActiveFilter(savedFilter);
79
+ if (savedFilter) {
80
+ this.reloadFiltersWithValues(savedFilter.filters, false);
81
+ }
82
+ }
83
+ reloadFiltersWithValues(params, shouldResetSavedFilters = true) {
84
+ this._shouldResetSavedFilters = shouldResetSavedFilters;
85
+ this._itemsStore.updateItemsWithValues(params);
86
+ this._saveQueryParams();
87
+ this._savePersistedParams();
88
+ }
89
+ initItems() {
90
+ this._pending$.next(true);
91
+ if (this._savedFilters.enabled) {
92
+ this._savedFilters
93
+ .load()
94
+ .pipe(takeUntil(this._destroy$))
95
+ .subscribe(() => {
96
+ this._savedFilters.updateActiveFilter();
97
+ this._initItemsValues();
98
+ this._listenAndResetSavedFilters();
99
+ this._pending$.next(false);
100
+ });
101
+ }
102
+ else {
103
+ this._initItemsValues();
104
+ this._pending$.next(false);
105
+ }
106
+ this._listenItemsChange();
107
+ }
108
+ _initItemsValues() {
109
+ this._itemsStore.init(this.params);
110
+ this._saveQueryParams();
111
+ this._savePersistedParams();
112
+ }
113
+ fetchQueryParams() {
114
+ this._initQueryParams();
115
+ this._itemsStore.updateItemsWithValues(this.params);
116
+ }
117
+ _initPersistance() {
118
+ this._persistanceStore.init(this._config.persist, this._config.namespace, this._config.case);
119
+ }
120
+ _initQueryParams() {
121
+ this._queryParams.init(this._config.queryParam, this._config.case);
122
+ }
123
+ _initSavedFilters() {
124
+ this._savedFilters.init(this._config.savedFilters, this._config.case);
125
+ }
126
+ _listenItemsChange() {
127
+ this._itemsStore.ready$
128
+ .pipe(filter((v) => v), take(1), takeUntil(this._destroy$))
129
+ .subscribe(() => {
130
+ this._saveQueryParams();
131
+ this._savePersistedParams();
132
+ });
133
+ this._itemsStore
134
+ .itemsChange$
135
+ .pipe(takeUntil(this._destroy$))
136
+ .subscribe(() => {
137
+ this._saveQueryParams();
138
+ this._savePersistedParams();
139
+ });
140
+ }
141
+ _listenAndResetSavedFilters() {
142
+ this._itemsStore
143
+ .itemsChange$
144
+ .pipe(filter(() => !!this.savedFiltersController.activeFilter), switchMap(() => {
145
+ const shouldReset = this._shouldResetSavedFilters;
146
+ this._shouldResetSavedFilters = true;
147
+ return of(shouldReset);
148
+ }), filter((shouldReset) => shouldReset), takeUntil(this._destroy$))
149
+ .subscribe(() => {
150
+ this.savedFiltersController.resetActiveFilter();
151
+ });
152
+ }
153
+ _saveQueryParams() {
154
+ const targetItems = this._itemsStore.items
155
+ .filter((item) => !item.queryParamsDisabled);
156
+ const params = buildQueryParams(this._itemsStore.valuesAsQuery({
157
+ onlyPresented: false,
158
+ items: targetItems,
159
+ persisted: true,
160
+ }), targetItems);
161
+ this._queryParams.writeStateToQueryParams(params);
162
+ }
163
+ _savePersistedParams() {
164
+ const targetItems = this._itemsStore.items
165
+ .filter((item) => !item.persistanceDisabled);
166
+ const params = buildQueryParams(this._itemsStore.valuesAsQuery({
167
+ onlyPresented: false,
168
+ items: targetItems,
169
+ persisted: true,
170
+ }), targetItems);
171
+ this._persistanceStore.save(params);
172
+ }
173
+ }
174
+ ExternalParamsController.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ExternalParamsController, deps: [{ token: i1.FsFilterItemsStore }, { token: i2.PersistanceParamsController }, { token: i3.QueryParamsController }, { token: i4.SavedFiltersController }], target: i0.ɵɵFactoryTarget.Injectable });
175
+ ExternalParamsController.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ExternalParamsController });
176
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ExternalParamsController, decorators: [{
177
+ type: Injectable
178
+ }], ctorParameters: function () { return [{ type: i1.FsFilterItemsStore }, { type: i2.PersistanceParamsController }, { type: i3.QueryParamsController }, { type: i4.SavedFiltersController }]; } });
179
179
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZXJuYWwtcGFyYW1zLWNvbnRyb2xsZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvc2VydmljZXMvZXh0ZXJuYWwtcGFyYW1zLWNvbnRyb2xsZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRXRELE9BQU8sRUFBRSxlQUFlLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFLakUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDdEcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDMUYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDNUYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7OztBQUkzRCxNQUFNLE9BQU8sd0JBQXdCO0lBU25DLFlBQ1UsV0FBK0IsRUFDL0IsaUJBQThDLEVBQzlDLFlBQW1DLEVBQ25DLGFBQXFDO1FBSHJDLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQUMvQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQTZCO1FBQzlDLGlCQUFZLEdBQVosWUFBWSxDQUF1QjtRQUNuQyxrQkFBYSxHQUFiLGFBQWEsQ0FBd0I7UUFUdkMsY0FBUyxHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLDZCQUF3QixHQUFHLElBQUksQ0FBQztRQUVoQyxjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQU9wQyxDQUFDO0lB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LGFBQWEsRUFBRSxLQUFLO1lBQ3BCLEtBQUssRUFBRSxXQUFXO1lBQ2xCLFNBQVMsRUFBRSxJQUFJO1NBQ2hCLENBQUMsRUFDRixXQUFXLENBQ1osQ0FBQztRQUVGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEMsQ0FBQzs7cUhBMU5VLHdCQUF3Qjt5SEFBeEIsd0JBQXdCOzJGQUF4Qix3QkFBd0I7a0JBRHBDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBzd2l0Y2hNYXAsIHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgYnVpbGRRdWVyeVBhcmFtcyB9IGZyb20gJy4uL2hlbHBlcnMvYnVpbGQtcXVlcnktcGFyYW1zJztcbmltcG9ydCB7IElGaWx0ZXJFeHRlcm5hbFBhcmFtcyB9IGZyb20gJy4uL2ludGVyZmFjZXMvZXh0ZXJuYWwtcGFyYW1zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJRmlsdGVyU2F2ZWRGaWx0ZXIgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3NhdmVkLWZpbHRlcnMuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZzRmlsdGVyQ29uZmlnIH0gZnJvbSAnLi4vbW9kZWxzL2ZpbHRlci1jb25maWcnO1xuXG5pbXBvcnQgeyBQZXJzaXN0YW5jZVBhcmFtc0NvbnRyb2xsZXIgfSBmcm9tICcuL2V4dGVybmFsLXBhcmFtcy9wZXJzaXN0YW5jZS1wYXJhbXMtY29udHJvbGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IFF1ZXJ5UGFyYW1zQ29udHJvbGxlciB9IGZyb20gJy4vZXh0ZXJuYWwtcGFyYW1zL3F1ZXJ5LXBhcmFtcy1jb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2F2ZWRGaWx0ZXJzQ29udHJvbGxlciB9IGZyb20gJy4vZXh0ZXJuYWwtcGFyYW1zL3NhdmVkLWZpbHRlcnMtY29udHJvbGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IEZzRmlsdGVySXRlbXNTdG9yZSB9IGZyb20gJy4vaXRlbXMtc3RvcmUuc2VydmljZSc7XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEV4dGVybmFsUGFyYW1zQ29udHJvbGxlciBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgcHJvdGVjdGVkIF9pbml0O1xuXG4gIHByaXZhdGUgX3BlbmRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIHByaXZhdGUgX3Nob3VsZFJlc2V0U2F2ZWRGaWx0ZXJzID0gdHJ1ZTtcbiAgcHJpdmF0ZSBfY29uZmlnOiBGc0ZpbHRlckNvbmZpZztcbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2l0ZW1zU3RvcmU6IEZzRmlsdGVySXRlbXNTdG9yZSxcbiAgICBwcml2YXRlIF9wZXJzaXN0YW5jZVN0b3JlOiBQZXJzaXN0YW5jZVBhcmFtc0NvbnRyb2xsZXIsXG4gICAgcHJpdmF0ZSBfcXVlcnlQYXJhbXM6IFF1ZXJ5UGFyYW1zQ29udHJvbGxlcixcbiAgICBwcml2YXRlIF9zYXZlZEZpbHRlcnM6IFNhdmVkRmlsdGVyc0NvbnRyb2xsZXIsXG4gICkgeyB9XG5cbiAgcHVibGljIGdldCBwYXJhbXMoKTogSUZpbHRlckV4dGVybmFsUGFyYW1zIHtcbiAgICBsZXQgcmVzdWx0OiBJRmlsdGVyRXh0ZXJuYWxQYXJhbXMgPSB7fTtcblxuICAgIGlmICh0aGlzLl9wZXJzaXN0YW5jZVN0b3JlLmVuYWJsZWQpIHtcbiAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgLi4ucmVzdWx0LCBcbiAgICAgICAgLi4udGhpcy5fcGVyc2lzdGFuY2VTdG9yZS52YWx1ZT8uZGF0YSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3NhdmVkRmlsdGVycy5lbmFibGVkICYmIHRoaXMuX3NhdmVkRmlsdGVycy5hY3RpdmVGaWx0ZXIpIHtcbiAgICAgIGNvbnN0IHF1ZXJ5ID0gT2JqZWN0LmtleXMocmVzdWx0KVxuICAgICAgICAuZmlsdGVyKChrZXkpID0+ICF0aGlzLl9pdGVtc1N0b3JlLml0ZW1OYW1lcy5pbmNsdWRlcyhrZXkpKVxuICAgICAgICAucmVkdWNlKChhY2MsIGtleSkgPT4ge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgICBba2V5XTogcmVzdWx0W2tleV0sXG4gICAgICAgICAgfTtcbiAgICAgICAgfSwge30pO1xuXG4gICAgICByZXN1bHQgPSB7XG4gICAgICAgIC4uLnF1ZXJ5LCBcbiAgICAgICAgLi4udGhpcy5fc2F2ZWRGaWx0ZXJzLmFjdGl2ZUZpbHRlckRhdGEsXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAodGhpcy5fcXVlcnlQYXJhbXMuZW5hYmxlZCkge1xuICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAuLi5yZXN1bHQsIFxuICAgICAgICAuLi50aGlzLl9xdWVyeVBhcmFtcy5mZXRjaGVkUGFyYW1zLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHVibGljIGdldCBwZW5kaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9wZW5kaW5nJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBwZW5kaW5nJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcGVuZGluZyQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNhdmVkRmlsdGVyc0NvbnRyb2xsZXIoKTogU2F2ZWRGaWx0ZXJzQ29udHJvbGxlciB7XG4gICAgcmV0dXJuIHRoaXMuX3NhdmVkRmlsdGVycztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2F2ZWRGaWx0ZXJzRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc2F2ZWRGaWx0ZXJzLmVuYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0Q29uZmlnKGNvbmZpZykge1xuICAgIHRoaXMuX2NvbmZpZyA9IGNvbmZpZztcblxuICAgIHRoaXMuX2luaXRQZXJzaXN0YW5jZSgpO1xuICAgIHRoaXMuX2luaXRRdWVyeVBhcmFtcygpO1xuICAgIHRoaXMuX2luaXRTYXZlZEZpbHRlcnMoKTtcbiAgICB0aGlzLmluaXRJdGVtcygpO1xuICB9XG5cbiAgcHVibGljIHNldEFjdGl2ZVNhdmVkRmlsdGVyKHNhdmVkRmlsdGVyOiBJRmlsdGVyU2F2ZWRGaWx0ZXIpIHtcbiAgICB0aGlzLnNhdmVkRmlsdGVyc0NvbnRyb2xsZXIuc2V0QWN0aXZlRmlsdGVyKHNhdmVkRmlsdGVyKTtcblxuICAgIGlmIChzYXZlZEZpbHRlcikge1xuICAgICAgdGhpcy5yZWxvYWRGaWx0ZXJzV2l0aFZhbHVlcyhzYXZlZEZpbHRlci5maWx0ZXJzLCBmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlbG9hZEZpbHRlcnNXaXRoVmFsdWVzKHBhcmFtczogSUZpbHRlckV4dGVybmFsUGFyYW1zLCBzaG91bGRSZXNldFNhdmVkRmlsdGVycyA9IHRydWUpIHtcbiAgICB0aGlzLl9zaG91bGRSZXNldFNhdmVkRmlsdGVycyA9IHNob3VsZFJlc2V0U2F2ZWRGaWx0ZXJzO1xuICAgIHRoaXMuX2l0ZW1zU3RvcmUudXBkYXRlSXRlbXNXaXRoVmFsdWVzKHBhcmFtcyk7XG5cbiAgICB0aGlzLl9zYXZlUXVlcnlQYXJhbXMoKTtcbiAgICB0aGlzLl9zYXZlUGVyc2lzdGVkUGFyYW1zKCk7XG4gIH1cblxuICBwdWJsaWMgaW5pdEl0ZW1zKCk6IHZvaWQge1xuICAgIHRoaXMuX3BlbmRpbmckLm5leHQodHJ1ZSk7XG4gICAgaWYgKHRoaXMuX3NhdmVkRmlsdGVycy5lbmFibGVkKSB7XG4gICAgICB0aGlzLl9zYXZlZEZpbHRlcnNcbiAgICAgICAgLmxvYWQoKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX3NhdmVkRmlsdGVycy51cGRhdGVBY3RpdmVGaWx0ZXIoKTtcbiAgICAgICAgICB0aGlzLl9pbml0SXRlbXNWYWx1ZXMoKTtcbiAgICAgICAgICB0aGlzLl9saXN0ZW5BbmRSZXNldFNhdmVkRmlsdGVycygpO1xuICAgICAgICAgIHRoaXMuX3BlbmRpbmckLm5leHQoZmFsc2UpO1xuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5faW5pdEl0ZW1zVmFsdWVzKCk7XG4gICAgICB0aGlzLl9wZW5kaW5nJC5uZXh0KGZhbHNlKTtcbiAgICB9XG5cbiAgICB0aGlzLl9saXN0ZW5JdGVtc0NoYW5nZSgpO1xuICB9XG5cbiAgcHVibGljIF9pbml0SXRlbXNWYWx1ZXMoKSB7XG4gICAgdGhpcy5faXRlbXNTdG9yZS5pbml0KHRoaXMucGFyYW1zKTtcbiAgICB0aGlzLl9zYXZlUXVlcnlQYXJhbXMoKTtcbiAgICB0aGlzLl9zYXZlUGVyc2lzdGVkUGFyYW1zKCk7XG4gIH1cblxuICBwdWJsaWMgZmV0Y2hRdWVyeVBhcmFtcygpOiB2b2lkIHtcbiAgICB0aGlzLl9pbml0UXVlcnlQYXJhbXMoKTtcbiAgICB0aGlzLl9pdGVtc1N0b3JlLnVwZGF0ZUl0ZW1zV2l0aFZhbHVlcyh0aGlzLnBhcmFtcyk7XG4gIH1cblxuICBwcml2YXRlIF9pbml0UGVyc2lzdGFuY2UoKSB7XG4gICAgdGhpcy5fcGVyc2lzdGFuY2VTdG9yZS5pbml0KFxuICAgICAgdGhpcy5fY29uZmlnLnBlcnNpc3QsXG4gICAgICB0aGlzLl9jb25maWcubmFtZXNwYWNlLFxuICAgICAgdGhpcy5fY29uZmlnLmNhc2UsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRRdWVyeVBhcmFtcygpIHtcbiAgICB0aGlzLl9xdWVyeVBhcmFtcy5pbml0KHRoaXMuX2NvbmZpZy5xdWVyeVBhcmFtLCB0aGlzLl9jb25maWcuY2FzZSk7XG4gIH1cblxuICBwcml2YXRlIF9pbml0U2F2ZWRGaWx0ZXJzKCkge1xuICAgIHRoaXMuX3NhdmVkRmlsdGVycy5pbml0KHRoaXMuX2NvbmZpZy5zYXZlZEZpbHRlcnMsIHRoaXMuX2NvbmZpZy5jYXNlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2xpc3Rlbkl0ZW1zQ2hhbmdlKCkge1xuICAgIHRoaXMuX2l0ZW1zU3RvcmUucmVhZHkkXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKCh2KSA9PiB2KSxcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLl9zYXZlUXVlcnlQYXJhbXMoKTtcbiAgICAgICAgdGhpcy5fc2F2ZVBlcnNpc3RlZFBhcmFtcygpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLl9pdGVtc1N0b3JlXG4gICAgICAuaXRlbXNDaGFuZ2UkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLl9zYXZlUXVlcnlQYXJhbXMoKTtcbiAgICAgICAgdGhpcy5fc2F2ZVBlcnNpc3RlZFBhcmFtcygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9saXN0ZW5BbmRSZXNldFNhdmVkRmlsdGVycygpOiB2b2lkIHtcbiAgICB0aGlzLl9pdGVtc1N0b3JlXG4gICAgICAuaXRlbXNDaGFuZ2UkXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKCgpID0+ICEhdGhpcy5zYXZlZEZpbHRlcnNDb250cm9sbGVyLmFjdGl2ZUZpbHRlciksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc2hvdWxkUmVzZXQgPSB0aGlzLl9zaG91bGRSZXNldFNhdmVkRmlsdGVycztcblxuICAgICAgICAgIHRoaXMuX3Nob3VsZFJlc2V0U2F2ZWRGaWx0ZXJzID0gdHJ1ZTtcblxuICAgICAgICAgIHJldHVybiBvZihzaG91bGRSZXNldCk7XG4gICAgICAgIH0pLFxuICAgICAgICBmaWx0ZXIoKHNob3VsZFJlc2V0KSA9PiBzaG91bGRSZXNldCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5zYXZlZEZpbHRlcnNDb250cm9sbGVyLnJlc2V0QWN0aXZlRmlsdGVyKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3NhdmVRdWVyeVBhcmFtcygpIHtcbiAgICBjb25zdCB0YXJnZXRJdGVtcyA9IHRoaXMuX2l0ZW1zU3RvcmUuaXRlbXNcbiAgICAgIC5maWx0ZXIoKGl0ZW0pID0+ICFpdGVtLnF1ZXJ5UGFyYW1zRGlzYWJsZWQpO1xuXG4gICAgY29uc3QgcGFyYW1zID0gYnVpbGRRdWVyeVBhcmFtcyhcbiAgICAgIHRoaXMuX2l0ZW1zU3RvcmUudmFsdWVzQXNRdWVyeSh7XG4gICAgICAgIG9ubHlQcmVzZW50ZWQ6IGZhbHNlLFxuICAgICAgICBpdGVtczogdGFyZ2V0SXRlbXMsXG4gICAgICAgIHBlcnNpc3RlZDogdHJ1ZSxcbiAgICAgIH0pLFxuICAgICAgdGFyZ2V0SXRlbXMsXG4gICAgKTtcblxuICAgIHRoaXMuX3F1ZXJ5UGFyYW1zLndyaXRlU3RhdGVUb1F1ZXJ5UGFyYW1zKHBhcmFtcyk7XG4gIH1cblxuICBwcml2YXRlIF9zYXZlUGVyc2lzdGVkUGFyYW1zKCkge1xuICAgIGNvbnN0IHRhcmdldEl0ZW1zID0gdGhpcy5faXRlbXNTdG9yZS5pdGVtc1xuICAgICAgLmZpbHRlcigoaXRlbSkgPT4gIWl0ZW0ucGVyc2lzdGFuY2VEaXNhYmxlZCk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSBidWlsZFF1ZXJ5UGFyYW1zKFxuICAgICAgdGhpcy5faXRlbXNTdG9yZS52YWx1ZXNBc1F1ZXJ5KHtcbiAgICAgICAgb25seVByZXNlbnRlZDogZmFsc2UsXG4gICAgICAgIGl0ZW1zOiB0YXJnZXRJdGVtcyxcbiAgICAgICAgcGVyc2lzdGVkOiB0cnVlLFxuICAgICAgfSksXG4gICAgICB0YXJnZXRJdGVtcyxcbiAgICApO1xuXG4gICAgdGhpcy5fcGVyc2lzdGFuY2VTdG9yZS5zYXZlKHBhcmFtcyk7XG4gIH1cbn1cbiJdfQ==