@equinor/fusion-react-filter 1.1.10 → 2.1.0-filter.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 (401) hide show
  1. package/README.md +4 -4
  2. package/dist/FilterProvider.d.ts +7 -28
  3. package/dist/FilterProvider.d.ts.map +1 -1
  4. package/dist/FilterProvider.js +24 -31
  5. package/dist/FilterProvider.js.map +1 -1
  6. package/dist/actions.d.ts +32 -0
  7. package/dist/actions.d.ts.map +1 -0
  8. package/dist/actions.js +20 -0
  9. package/dist/actions.js.map +1 -0
  10. package/dist/components/filter/FilterOptionHeader.d.ts +7 -0
  11. package/dist/components/filter/FilterOptionHeader.d.ts.map +1 -0
  12. package/dist/components/filter/FilterOptionHeader.js +69 -0
  13. package/dist/components/filter/FilterOptionHeader.js.map +1 -0
  14. package/dist/components/filter/checkbox/CheckboxFilter.d.ts +16 -0
  15. package/dist/components/filter/checkbox/CheckboxFilter.d.ts.map +1 -0
  16. package/dist/components/filter/checkbox/CheckboxFilter.js +16 -0
  17. package/dist/components/filter/checkbox/CheckboxFilter.js.map +1 -0
  18. package/dist/components/filter/checkbox/CheckboxFilter.style.d.ts +5 -0
  19. package/dist/components/filter/checkbox/CheckboxFilter.style.d.ts.map +1 -0
  20. package/dist/components/filter/checkbox/CheckboxFilter.style.js +19 -0
  21. package/dist/components/filter/checkbox/CheckboxFilter.style.js.map +1 -0
  22. package/dist/components/filter/checkbox/CheckboxFilterOption.d.ts +14 -0
  23. package/dist/components/filter/checkbox/CheckboxFilterOption.d.ts.map +1 -0
  24. package/dist/components/filter/checkbox/CheckboxFilterOption.js +19 -0
  25. package/dist/components/filter/checkbox/CheckboxFilterOption.js.map +1 -0
  26. package/dist/components/filter/checkbox/CheckboxFilterOption.style.d.ts +3 -0
  27. package/dist/components/filter/checkbox/CheckboxFilterOption.style.d.ts.map +1 -0
  28. package/dist/components/filter/checkbox/CheckboxFilterOption.style.js +40 -0
  29. package/dist/components/filter/checkbox/CheckboxFilterOption.style.js.map +1 -0
  30. package/dist/components/filter/checkbox/CheckboxFilterOptionAll.d.ts +3 -0
  31. package/dist/components/filter/checkbox/CheckboxFilterOptionAll.d.ts.map +1 -0
  32. package/dist/components/filter/checkbox/CheckboxFilterOptionAll.js +24 -0
  33. package/dist/components/filter/checkbox/CheckboxFilterOptionAll.js.map +1 -0
  34. package/dist/components/filter/checkbox/CheckboxFilterOptions.d.ts +3 -0
  35. package/dist/components/filter/checkbox/CheckboxFilterOptions.d.ts.map +1 -0
  36. package/dist/components/filter/checkbox/CheckboxFilterOptions.js +37 -0
  37. package/dist/components/filter/checkbox/CheckboxFilterOptions.js.map +1 -0
  38. package/dist/components/filter/checkbox/CheckboxFilterProvider.d.ts +13 -0
  39. package/dist/components/filter/checkbox/CheckboxFilterProvider.d.ts.map +1 -0
  40. package/dist/components/filter/checkbox/CheckboxFilterProvider.js +16 -0
  41. package/dist/components/filter/checkbox/CheckboxFilterProvider.js.map +1 -0
  42. package/dist/components/filter/checkbox/context.d.ts +4 -0
  43. package/dist/components/filter/checkbox/context.d.ts.map +1 -0
  44. package/dist/components/filter/checkbox/context.js +3 -0
  45. package/dist/components/filter/checkbox/context.js.map +1 -0
  46. package/dist/components/filter/checkbox/index.d.ts +2 -0
  47. package/dist/components/filter/checkbox/index.d.ts.map +1 -0
  48. package/dist/components/filter/checkbox/index.js +2 -0
  49. package/dist/components/filter/checkbox/index.js.map +1 -0
  50. package/dist/components/filter/checkbox/types.d.ts +7 -0
  51. package/dist/components/filter/checkbox/types.d.ts.map +1 -0
  52. package/dist/components/filter/checkbox/types.js +2 -0
  53. package/dist/components/filter/checkbox/types.js.map +1 -0
  54. package/dist/components/filter/index.d.ts +5 -0
  55. package/dist/components/filter/index.d.ts.map +1 -0
  56. package/dist/components/filter/index.js +5 -0
  57. package/dist/components/filter/index.js.map +1 -0
  58. package/dist/components/filter/search/SearchFilter.d.ts +17 -0
  59. package/dist/components/filter/search/SearchFilter.d.ts.map +1 -0
  60. package/dist/components/filter/search/SearchFilter.js +47 -0
  61. package/dist/components/filter/search/SearchFilter.js.map +1 -0
  62. package/dist/components/filter/search/index.d.ts +2 -0
  63. package/dist/components/filter/search/index.d.ts.map +1 -0
  64. package/dist/components/filter/search/index.js +2 -0
  65. package/dist/components/filter/search/index.js.map +1 -0
  66. package/dist/components/filter/types.d.ts +7 -0
  67. package/dist/components/filter/types.d.ts.map +1 -0
  68. package/dist/components/filter/types.js +2 -0
  69. package/dist/components/filter/types.js.map +1 -0
  70. package/dist/components/index.d.ts +4 -0
  71. package/dist/components/index.d.ts.map +1 -0
  72. package/dist/components/index.js +4 -0
  73. package/dist/components/index.js.map +1 -0
  74. package/dist/components/misc/ClearFilterButton.d.ts +10 -0
  75. package/dist/components/misc/ClearFilterButton.d.ts.map +1 -0
  76. package/dist/components/misc/ClearFilterButton.js +25 -0
  77. package/dist/components/misc/ClearFilterButton.js.map +1 -0
  78. package/dist/components/misc/FilterContainer.d.ts +12 -0
  79. package/dist/components/misc/FilterContainer.d.ts.map +1 -0
  80. package/dist/components/misc/FilterContainer.js +18 -0
  81. package/dist/components/misc/FilterContainer.js.map +1 -0
  82. package/dist/components/misc/index.d.ts +3 -0
  83. package/dist/components/misc/index.d.ts.map +1 -0
  84. package/dist/components/misc/index.js +3 -0
  85. package/dist/components/misc/index.js.map +1 -0
  86. package/dist/components/panel/FilterPanel.d.ts +19 -0
  87. package/dist/components/panel/FilterPanel.d.ts.map +1 -0
  88. package/dist/components/panel/FilterPanel.js +17 -0
  89. package/dist/components/panel/FilterPanel.js.map +1 -0
  90. package/dist/components/panel/FilterPanelBar.d.ts +3 -0
  91. package/dist/components/panel/FilterPanelBar.d.ts.map +1 -0
  92. package/dist/components/panel/FilterPanelBar.js +31 -0
  93. package/dist/components/panel/FilterPanelBar.js.map +1 -0
  94. package/dist/components/panel/FilterPanelFilters.d.ts +3 -0
  95. package/dist/components/panel/FilterPanelFilters.d.ts.map +1 -0
  96. package/dist/components/panel/FilterPanelFilters.js +13 -0
  97. package/dist/components/panel/FilterPanelFilters.js.map +1 -0
  98. package/dist/components/panel/FilterPanelProvider.d.ts +32 -0
  99. package/dist/components/panel/FilterPanelProvider.d.ts.map +1 -0
  100. package/dist/components/panel/FilterPanelProvider.js +35 -0
  101. package/dist/components/panel/FilterPanelProvider.js.map +1 -0
  102. package/dist/components/panel/FilterPanelSelector.d.ts +7 -0
  103. package/dist/components/panel/FilterPanelSelector.d.ts.map +1 -0
  104. package/dist/components/panel/FilterPanelSelector.js +17 -0
  105. package/dist/components/panel/FilterPanelSelector.js.map +1 -0
  106. package/dist/components/panel/index.d.ts +5 -0
  107. package/dist/components/panel/index.d.ts.map +1 -0
  108. package/dist/components/panel/index.js +5 -0
  109. package/dist/components/panel/index.js.map +1 -0
  110. package/dist/context.d.ts +6 -0
  111. package/dist/context.d.ts.map +1 -0
  112. package/dist/context.js +6 -0
  113. package/dist/context.js.map +1 -0
  114. package/dist/hooks/index.d.ts +12 -0
  115. package/dist/hooks/index.d.ts.map +1 -0
  116. package/dist/hooks/index.js +25 -0
  117. package/dist/hooks/index.js.map +1 -0
  118. package/dist/hooks/useClearFilter.d.ts +9 -0
  119. package/dist/hooks/useClearFilter.d.ts.map +1 -0
  120. package/dist/hooks/useClearFilter.js +30 -0
  121. package/dist/hooks/useClearFilter.js.map +1 -0
  122. package/dist/hooks/useFilter.d.ts +7 -0
  123. package/dist/hooks/useFilter.d.ts.map +1 -0
  124. package/dist/hooks/useFilter.js +26 -0
  125. package/dist/hooks/useFilter.js.map +1 -0
  126. package/dist/hooks/useFilterData.d.ts +11 -0
  127. package/dist/hooks/useFilterData.d.ts.map +1 -0
  128. package/dist/hooks/useFilterData.js +39 -0
  129. package/dist/hooks/useFilterData.js.map +1 -0
  130. package/dist/hooks/useFilterSelection.d.ts +5 -9
  131. package/dist/hooks/useFilterSelection.d.ts.map +1 -1
  132. package/dist/hooks/useFilterSelection.js +6 -21
  133. package/dist/hooks/useFilterSelection.js.map +1 -1
  134. package/dist/index.d.ts +4 -14
  135. package/dist/index.d.ts.map +1 -1
  136. package/dist/index.js +3 -15
  137. package/dist/index.js.map +1 -1
  138. package/dist/options/FilterOptionProvider.d.ts +12 -0
  139. package/dist/options/FilterOptionProvider.d.ts.map +1 -0
  140. package/dist/options/FilterOptionProvider.js +55 -0
  141. package/dist/options/FilterOptionProvider.js.map +1 -0
  142. package/dist/options/actions.d.ts +8 -0
  143. package/dist/options/actions.d.ts.map +1 -0
  144. package/dist/options/actions.js +6 -0
  145. package/dist/options/actions.js.map +1 -0
  146. package/dist/options/context.d.ts +6 -0
  147. package/dist/options/context.d.ts.map +1 -0
  148. package/dist/options/context.js +7 -0
  149. package/dist/options/context.js.map +1 -0
  150. package/dist/options/create-options.d.ts +4 -0
  151. package/dist/options/create-options.d.ts.map +1 -0
  152. package/dist/options/create-options.js +24 -0
  153. package/dist/options/create-options.js.map +1 -0
  154. package/dist/options/index.d.ts +6 -0
  155. package/dist/options/index.d.ts.map +1 -0
  156. package/dist/options/index.js +6 -0
  157. package/dist/options/index.js.map +1 -0
  158. package/dist/options/reducer.d.ts +58 -0
  159. package/dist/options/reducer.d.ts.map +1 -0
  160. package/dist/options/reducer.js +4 -0
  161. package/dist/options/reducer.js.map +1 -0
  162. package/dist/options/search/filter-option-match.d.ts +7 -0
  163. package/dist/options/search/filter-option-match.d.ts.map +1 -0
  164. package/dist/options/search/filter-option-match.js +10 -0
  165. package/dist/options/search/filter-option-match.js.map +1 -0
  166. package/dist/options/search/filter-option-search.d.ts +8 -0
  167. package/dist/options/search/filter-option-search.d.ts.map +1 -0
  168. package/dist/options/search/filter-option-search.js +12 -0
  169. package/dist/options/search/filter-option-search.js.map +1 -0
  170. package/dist/options/search/index.d.ts +2 -0
  171. package/dist/options/search/index.d.ts.map +1 -0
  172. package/dist/options/search/index.js +2 -0
  173. package/dist/options/search/index.js.map +1 -0
  174. package/dist/options/search/types.d.ts +9 -0
  175. package/dist/options/search/types.d.ts.map +1 -0
  176. package/dist/options/search/types.js +2 -0
  177. package/dist/options/search/types.js.map +1 -0
  178. package/dist/options/search/useFilterOptionSearch.d.ts +12 -0
  179. package/dist/options/search/useFilterOptionSearch.d.ts.map +1 -0
  180. package/dist/options/search/useFilterOptionSearch.js +28 -0
  181. package/dist/options/search/useFilterOptionSearch.js.map +1 -0
  182. package/dist/options/types.d.ts +32 -0
  183. package/dist/options/types.d.ts.map +1 -0
  184. package/dist/options/types.js +2 -0
  185. package/dist/options/types.js.map +1 -0
  186. package/dist/reducers.d.ts +170 -0
  187. package/dist/reducers.d.ts.map +1 -0
  188. package/dist/reducers.js +23 -0
  189. package/dist/reducers.js.map +1 -0
  190. package/dist/{types/Filter.d.ts → types.d.ts} +19 -16
  191. package/dist/types.d.ts.map +1 -0
  192. package/dist/types.js +2 -0
  193. package/dist/types.js.map +1 -0
  194. package/package.json +13 -9
  195. package/dist/FilterContext.d.ts +0 -8
  196. package/dist/FilterContext.d.ts.map +0 -1
  197. package/dist/FilterContext.js +0 -4
  198. package/dist/FilterContext.js.map +0 -1
  199. package/dist/components/CheckBoxFilter/CheckBoxFilter.d.ts +0 -34
  200. package/dist/components/CheckBoxFilter/CheckBoxFilter.d.ts.map +0 -1
  201. package/dist/components/CheckBoxFilter/CheckBoxFilter.js +0 -76
  202. package/dist/components/CheckBoxFilter/CheckBoxFilter.js.map +0 -1
  203. package/dist/components/CheckBoxFilter/CheckBoxOption.d.ts +0 -14
  204. package/dist/components/CheckBoxFilter/CheckBoxOption.d.ts.map +0 -1
  205. package/dist/components/CheckBoxFilter/CheckBoxOption.js +0 -10
  206. package/dist/components/CheckBoxFilter/CheckBoxOption.js.map +0 -1
  207. package/dist/components/CheckBoxFilter/CheckBoxOption.style.d.ts +0 -3
  208. package/dist/components/CheckBoxFilter/CheckBoxOption.style.d.ts.map +0 -1
  209. package/dist/components/CheckBoxFilter/CheckBoxOption.style.js +0 -24
  210. package/dist/components/CheckBoxFilter/CheckBoxOption.style.js.map +0 -1
  211. package/dist/components/CheckBoxFilter/CheckboxFilter.style.d.ts +0 -3
  212. package/dist/components/CheckBoxFilter/CheckboxFilter.style.d.ts.map +0 -1
  213. package/dist/components/CheckBoxFilter/CheckboxFilter.style.js +0 -29
  214. package/dist/components/CheckBoxFilter/CheckboxFilter.style.js.map +0 -1
  215. package/dist/components/CheckBoxFilter/SelectAllOption.d.ts +0 -12
  216. package/dist/components/CheckBoxFilter/SelectAllOption.d.ts.map +0 -1
  217. package/dist/components/CheckBoxFilter/SelectAllOption.js +0 -22
  218. package/dist/components/CheckBoxFilter/SelectAllOption.js.map +0 -1
  219. package/dist/components/CheckBoxFilter/index.d.ts +0 -5
  220. package/dist/components/CheckBoxFilter/index.d.ts.map +0 -1
  221. package/dist/components/CheckBoxFilter/index.js +0 -5
  222. package/dist/components/CheckBoxFilter/index.js.map +0 -1
  223. package/dist/components/FilterSection/FilterSection.d.ts +0 -29
  224. package/dist/components/FilterSection/FilterSection.d.ts.map +0 -1
  225. package/dist/components/FilterSection/FilterSection.js +0 -64
  226. package/dist/components/FilterSection/FilterSection.js.map +0 -1
  227. package/dist/components/FilterSection/FilterSection.style.d.ts +0 -3
  228. package/dist/components/FilterSection/FilterSection.style.d.ts.map +0 -1
  229. package/dist/components/FilterSection/FilterSection.style.js +0 -56
  230. package/dist/components/FilterSection/FilterSection.style.js.map +0 -1
  231. package/dist/components/FilterSection/index.d.ts +0 -3
  232. package/dist/components/FilterSection/index.d.ts.map +0 -1
  233. package/dist/components/FilterSection/index.js +0 -3
  234. package/dist/components/FilterSection/index.js.map +0 -1
  235. package/dist/components/FilterSelectionChips/FilterSelectionChips.d.ts +0 -7
  236. package/dist/components/FilterSelectionChips/FilterSelectionChips.d.ts.map +0 -1
  237. package/dist/components/FilterSelectionChips/FilterSelectionChips.js +0 -18
  238. package/dist/components/FilterSelectionChips/FilterSelectionChips.js.map +0 -1
  239. package/dist/components/FilterSelectionChips/FilterSelectionChips.style.d.ts +0 -3
  240. package/dist/components/FilterSelectionChips/FilterSelectionChips.style.d.ts.map +0 -1
  241. package/dist/components/FilterSelectionChips/FilterSelectionChips.style.js +0 -31
  242. package/dist/components/FilterSelectionChips/FilterSelectionChips.style.js.map +0 -1
  243. package/dist/components/FilterSelectionChips/index.d.ts +0 -2
  244. package/dist/components/FilterSelectionChips/index.d.ts.map +0 -1
  245. package/dist/components/FilterSelectionChips/index.js +0 -2
  246. package/dist/components/FilterSelectionChips/index.js.map +0 -1
  247. package/dist/components/FilterSelectionChips/useChipsSelection.d.ts +0 -9
  248. package/dist/components/FilterSelectionChips/useChipsSelection.d.ts.map +0 -1
  249. package/dist/components/FilterSelectionChips/useChipsSelection.js +0 -26
  250. package/dist/components/FilterSelectionChips/useChipsSelection.js.map +0 -1
  251. package/dist/components/FilterSelector/FilterCategory.d.ts +0 -7
  252. package/dist/components/FilterSelector/FilterCategory.d.ts.map +0 -1
  253. package/dist/components/FilterSelector/FilterCategory.js +0 -24
  254. package/dist/components/FilterSelector/FilterCategory.js.map +0 -1
  255. package/dist/components/FilterSelector/FilterCategory.style.d.ts +0 -3
  256. package/dist/components/FilterSelector/FilterCategory.style.d.ts.map +0 -1
  257. package/dist/components/FilterSelector/FilterCategory.style.js +0 -12
  258. package/dist/components/FilterSelector/FilterCategory.style.js.map +0 -1
  259. package/dist/components/FilterSelector/FilterSelector.d.ts +0 -31
  260. package/dist/components/FilterSelector/FilterSelector.d.ts.map +0 -1
  261. package/dist/components/FilterSelector/FilterSelector.js +0 -51
  262. package/dist/components/FilterSelector/FilterSelector.js.map +0 -1
  263. package/dist/components/FilterSelector/FilterSelector.style.d.ts +0 -3
  264. package/dist/components/FilterSelector/FilterSelector.style.d.ts.map +0 -1
  265. package/dist/components/FilterSelector/FilterSelector.style.js +0 -44
  266. package/dist/components/FilterSelector/FilterSelector.style.js.map +0 -1
  267. package/dist/components/FilterSelector/index.d.ts +0 -4
  268. package/dist/components/FilterSelector/index.d.ts.map +0 -1
  269. package/dist/components/FilterSelector/index.js +0 -4
  270. package/dist/components/FilterSelector/index.js.map +0 -1
  271. package/dist/components/GeneralBar/GeneralBar.d.ts +0 -26
  272. package/dist/components/GeneralBar/GeneralBar.d.ts.map +0 -1
  273. package/dist/components/GeneralBar/GeneralBar.js +0 -63
  274. package/dist/components/GeneralBar/GeneralBar.js.map +0 -1
  275. package/dist/components/GeneralBar/GeneralBar.style.d.ts +0 -3
  276. package/dist/components/GeneralBar/GeneralBar.style.d.ts.map +0 -1
  277. package/dist/components/GeneralBar/GeneralBar.style.js +0 -20
  278. package/dist/components/GeneralBar/GeneralBar.style.js.map +0 -1
  279. package/dist/components/GeneralBar/index.d.ts +0 -3
  280. package/dist/components/GeneralBar/index.d.ts.map +0 -1
  281. package/dist/components/GeneralBar/index.js +0 -3
  282. package/dist/components/GeneralBar/index.js.map +0 -1
  283. package/dist/components/HorizontalBar/HorizontalBar.d.ts +0 -10
  284. package/dist/components/HorizontalBar/HorizontalBar.d.ts.map +0 -1
  285. package/dist/components/HorizontalBar/HorizontalBar.js +0 -23
  286. package/dist/components/HorizontalBar/HorizontalBar.js.map +0 -1
  287. package/dist/components/HorizontalBar/index.d.ts +0 -3
  288. package/dist/components/HorizontalBar/index.d.ts.map +0 -1
  289. package/dist/components/HorizontalBar/index.js +0 -3
  290. package/dist/components/HorizontalBar/index.js.map +0 -1
  291. package/dist/components/HorizontalFilterPanel/HorizontalFilterPanel.d.ts +0 -17
  292. package/dist/components/HorizontalFilterPanel/HorizontalFilterPanel.d.ts.map +0 -1
  293. package/dist/components/HorizontalFilterPanel/HorizontalFilterPanel.js +0 -28
  294. package/dist/components/HorizontalFilterPanel/HorizontalFilterPanel.js.map +0 -1
  295. package/dist/components/HorizontalFilterPanel/index.d.ts +0 -3
  296. package/dist/components/HorizontalFilterPanel/index.d.ts.map +0 -1
  297. package/dist/components/HorizontalFilterPanel/index.js +0 -3
  298. package/dist/components/HorizontalFilterPanel/index.js.map +0 -1
  299. package/dist/components/Icon/index.d.ts +0 -11
  300. package/dist/components/Icon/index.d.ts.map +0 -1
  301. package/dist/components/Icon/index.js +0 -16
  302. package/dist/components/Icon/index.js.map +0 -1
  303. package/dist/components/RadioFilter/RadioFilter.d.ts +0 -17
  304. package/dist/components/RadioFilter/RadioFilter.d.ts.map +0 -1
  305. package/dist/components/RadioFilter/RadioFilter.js +0 -51
  306. package/dist/components/RadioFilter/RadioFilter.js.map +0 -1
  307. package/dist/components/RadioFilter/RadioFilter.style.d.ts +0 -3
  308. package/dist/components/RadioFilter/RadioFilter.style.d.ts.map +0 -1
  309. package/dist/components/RadioFilter/RadioFilter.style.js +0 -38
  310. package/dist/components/RadioFilter/RadioFilter.style.js.map +0 -1
  311. package/dist/components/RadioFilter/index.d.ts +0 -3
  312. package/dist/components/RadioFilter/index.d.ts.map +0 -1
  313. package/dist/components/RadioFilter/index.js +0 -3
  314. package/dist/components/RadioFilter/index.js.map +0 -1
  315. package/dist/epic/StatefulObserver.d.ts +0 -8
  316. package/dist/epic/StatefulObserver.d.ts.map +0 -1
  317. package/dist/epic/StatefulObserver.js +0 -26
  318. package/dist/epic/StatefulObserver.js.map +0 -1
  319. package/dist/epic/epic.d.ts +0 -14
  320. package/dist/epic/epic.d.ts.map +0 -1
  321. package/dist/epic/epic.js +0 -2
  322. package/dist/epic/epic.js.map +0 -1
  323. package/dist/epic/hooks/useObservableSelector.d.ts +0 -14
  324. package/dist/epic/hooks/useObservableSelector.d.ts.map +0 -1
  325. package/dist/epic/hooks/useObservableSelector.js +0 -16
  326. package/dist/epic/hooks/useObservableSelector.js.map +0 -1
  327. package/dist/epic/hooks/useObservableState.d.ts +0 -13
  328. package/dist/epic/hooks/useObservableState.d.ts.map +0 -1
  329. package/dist/epic/hooks/useObservableState.js +0 -18
  330. package/dist/epic/hooks/useObservableState.js.map +0 -1
  331. package/dist/epic/hooks/useSelector.d.ts +0 -10
  332. package/dist/epic/hooks/useSelector.d.ts.map +0 -1
  333. package/dist/epic/hooks/useSelector.js +0 -14
  334. package/dist/epic/hooks/useSelector.js.map +0 -1
  335. package/dist/epic/reducer.d.ts +0 -56
  336. package/dist/epic/reducer.d.ts.map +0 -1
  337. package/dist/epic/reducer.js +0 -78
  338. package/dist/epic/reducer.js.map +0 -1
  339. package/dist/filterStore/actions.d.ts +0 -23
  340. package/dist/filterStore/actions.d.ts.map +0 -1
  341. package/dist/filterStore/actions.js +0 -18
  342. package/dist/filterStore/actions.js.map +0 -1
  343. package/dist/filterStore/epics.d.ts +0 -10
  344. package/dist/filterStore/epics.d.ts.map +0 -1
  345. package/dist/filterStore/epics.js +0 -10
  346. package/dist/filterStore/epics.js.map +0 -1
  347. package/dist/filterStore/reducers.d.ts +0 -4
  348. package/dist/filterStore/reducers.d.ts.map +0 -1
  349. package/dist/filterStore/reducers.js +0 -43
  350. package/dist/filterStore/reducers.js.map +0 -1
  351. package/dist/filterStore/store.d.ts +0 -106
  352. package/dist/filterStore/store.d.ts.map +0 -1
  353. package/dist/filterStore/store.js +0 -158
  354. package/dist/filterStore/store.js.map +0 -1
  355. package/dist/hooks/useEventListener.d.ts +0 -4
  356. package/dist/hooks/useEventListener.d.ts.map +0 -1
  357. package/dist/hooks/useEventListener.js +0 -14
  358. package/dist/hooks/useEventListener.js.map +0 -1
  359. package/dist/hooks/useFilterChangeHandler.d.ts +0 -26
  360. package/dist/hooks/useFilterChangeHandler.d.ts.map +0 -1
  361. package/dist/hooks/useFilterChangeHandler.js +0 -43
  362. package/dist/hooks/useFilterChangeHandler.js.map +0 -1
  363. package/dist/hooks/useFilterContext.d.ts +0 -4
  364. package/dist/hooks/useFilterContext.d.ts.map +0 -1
  365. package/dist/hooks/useFilterContext.js +0 -5
  366. package/dist/hooks/useFilterContext.js.map +0 -1
  367. package/dist/hooks/useFilterOptionsBuilder.d.ts +0 -27
  368. package/dist/hooks/useFilterOptionsBuilder.d.ts.map +0 -1
  369. package/dist/hooks/useFilterOptionsBuilder.js +0 -39
  370. package/dist/hooks/useFilterOptionsBuilder.js.map +0 -1
  371. package/dist/hooks/useFilterOptionsCounter.d.ts +0 -16
  372. package/dist/hooks/useFilterOptionsCounter.d.ts.map +0 -1
  373. package/dist/hooks/useFilterOptionsCounter.js +0 -32
  374. package/dist/hooks/useFilterOptionsCounter.js.map +0 -1
  375. package/dist/hooks/useFilterStore.d.ts +0 -25
  376. package/dist/hooks/useFilterStore.d.ts.map +0 -1
  377. package/dist/hooks/useFilterStore.js +0 -34
  378. package/dist/hooks/useFilterStore.js.map +0 -1
  379. package/dist/hooks/useResizablePanel.d.ts +0 -20
  380. package/dist/hooks/useResizablePanel.d.ts.map +0 -1
  381. package/dist/hooks/useResizablePanel.js +0 -71
  382. package/dist/hooks/useResizablePanel.js.map +0 -1
  383. package/dist/types/Filter.d.ts.map +0 -1
  384. package/dist/types/Filter.js +0 -2
  385. package/dist/types/Filter.js.map +0 -1
  386. package/dist/types/FilterContainerProps.d.ts +0 -10
  387. package/dist/types/FilterContainerProps.d.ts.map +0 -1
  388. package/dist/types/FilterContainerProps.js +0 -2
  389. package/dist/types/FilterContainerProps.js.map +0 -1
  390. package/dist/types/FilterCounters.d.ts +0 -3
  391. package/dist/types/FilterCounters.d.ts.map +0 -1
  392. package/dist/types/FilterCounters.js +0 -2
  393. package/dist/types/FilterCounters.js.map +0 -1
  394. package/dist/types/FilterOption.d.ts +0 -13
  395. package/dist/types/FilterOption.d.ts.map +0 -1
  396. package/dist/types/FilterOption.js +0 -2
  397. package/dist/types/FilterOption.js.map +0 -1
  398. package/dist/types/FilterStoreState.d.ts +0 -6
  399. package/dist/types/FilterStoreState.d.ts.map +0 -1
  400. package/dist/types/FilterStoreState.js +0 -2
  401. package/dist/types/FilterStoreState.js.map +0 -1
@@ -0,0 +1,6 @@
1
+ import { createContext, useContext } from 'react';
2
+ const context = createContext({});
3
+ export const useFilterContext = () => useContext(context);
4
+ export const { Provider, Consumer } = context;
5
+ export default useFilterContext;
6
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAGlD,MAAM,OAAO,GAAG,aAAa,CAAgB,EAAmB,CAAC,CAAC;AAElE,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAGM,EAAE,CAAC,UAAU,CAAC,OAAO,CAAqC,CAAC;AAEjG,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;AAE9C,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,12 @@
1
+ export { useClearFilter } from './useClearFilter';
2
+ export { useFilter } from './useFilter';
3
+ export { useFilterSelection } from './useFilterSelection';
4
+ export { useFilterData } from './useFilterData';
5
+ /** re-exports */
6
+ export { useFilterContext } from '../context';
7
+ export declare const useFunky: () => import("rxjs").Observable<{
8
+ key: string;
9
+ title: string | undefined;
10
+ selection: any[];
11
+ }[]>;
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,iBAAiB;AACjB,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAO9C,eAAO,MAAM,QAAQ;;;;IAkBpB,CAAC"}
@@ -0,0 +1,25 @@
1
+ export { useClearFilter } from './useClearFilter';
2
+ export { useFilter } from './useFilter';
3
+ export { useFilterSelection } from './useFilterSelection';
4
+ export { useFilterData } from './useFilterData';
5
+ /** re-exports */
6
+ export { useFilterContext } from '../context';
7
+ import { useState } from 'react';
8
+ import { combineLatest, of } from 'rxjs';
9
+ import { distinctUntilChanged, switchMap } from 'rxjs/operators';
10
+ import { useFilterContext } from '..';
11
+ export const useFunky = () => {
12
+ const context = useFilterContext();
13
+ const [gg] = useState(() => combineLatest([context.filter$, context.selection$]).pipe(distinctUntilChanged(), switchMap(([filters, selections]) => {
14
+ const gg = Object.values(filters)
15
+ .map((filter) => {
16
+ const { title, key } = filter;
17
+ const selection = selections[key] || [];
18
+ return { key, title, selection: [...selection] };
19
+ })
20
+ .filter((x) => !!x.title && !!x.selection);
21
+ return of(gg);
22
+ })));
23
+ return gg;
24
+ };
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,iBAAiB;AACjB,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,IAAI,CAAC;AAEtC,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,EAAE;IAC3B,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAC;IACnC,MAAM,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CACzB,aAAa,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CACvD,oBAAoB,EAAE,EACtB,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,EAAE;QAClC,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;aAC9B,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YACd,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;YAC9B,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YACxC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC;QACnD,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC7C,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IAChB,CAAC,CAAC,CACH,CACF,CAAC;IACF,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { Observable } from 'rxjs';
2
+ import { Filter } from '../types';
3
+ export declare const selectionChanges: <TSelection = any>(filter$: Observable<Record<string, Filter>>, selection$: Observable<Record<string, TSelection>>) => Observable<Record<string, TSelection>>;
4
+ export declare const useClearFilter: () => {
5
+ clear: () => void;
6
+ changed$: Observable<Record<string, any>>;
7
+ };
8
+ export default useClearFilter;
9
+ //# sourceMappingURL=useClearFilter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useClearFilter.d.ts","sourceRoot":"","sources":["../../src/hooks/useClearFilter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAyC,UAAU,EAAE,MAAM,MAAM,CAAC;AASzE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,eAAO,MAAM,gBAAgB,8BAClB,WAAW,OAAO,MAAM,EAAE,MAAM,CAAC,CAAC,+FAa5C,CAAC;AAEF,eAAO,MAAM,cAAc;;;CAkC1B,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { useCallback, useMemo } from 'react';
2
+ import { withLatestFrom, filter, combineLatest } from 'rxjs';
3
+ import { map, distinctUntilChanged } from 'rxjs/operators';
4
+ import { isActionOf } from 'typesafe-actions';
5
+ import { useObservableEffect } from '@equinor/fusion-react-observable';
6
+ import { useFilterContext } from '../context';
7
+ import { actions } from '../actions';
8
+ export const selectionChanges = (filter$, selection$) => {
9
+ return combineLatest([selection$, filter$]).pipe(map(([selections, filters]) => {
10
+ return Object.values(filters).reduce((acc, filter) => {
11
+ const selection = selections[filter.key];
12
+ const changed = filter.hasChanged && filter.hasChanged(selection, filter.initial);
13
+ return changed ? Object.assign(acc, { [filter.key]: selection }) : acc;
14
+ }, {});
15
+ }), distinctUntilChanged());
16
+ };
17
+ export const useClearFilter = () => {
18
+ const { selection$, filter$ } = useFilterContext();
19
+ const clear = useCallback(() => {
20
+ selection$.next(actions.selection.clear());
21
+ }, [selection$]);
22
+ const initial$ = useMemo(() => filter$.pipe(map((x) => Object.values(x).reduce((acc, filter) => {
23
+ return Object.assign(acc, { [filter.key]: filter.initial });
24
+ }, {}))), [filter$]);
25
+ const changed$ = useMemo(() => selectionChanges(filter$, selection$), [filter$, selection$]);
26
+ useObservableEffect(selection$, useCallback((action$) => action$.pipe(filter(isActionOf(actions.selection.clear)), withLatestFrom(initial$), map(([_, initial]) => actions.selection.set(initial))), [initial$]));
27
+ return { clear, changed$ };
28
+ };
29
+ export default useClearFilter;
30
+ //# sourceMappingURL=useClearFilter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useClearFilter.js","sourceRoot":"","sources":["../../src/hooks/useClearFilter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { Filter } from '../types';
2
+ /**
3
+ * Hook for attaching a filter to the current context
4
+ * Must be used within {@link FilterProvider}
5
+ */
6
+ export declare const useFilter: <TData, TSelection>(filter: Filter<TData, TSelection>) => (value: TSelection) => void;
7
+ //# sourceMappingURL=useFilter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFilter.d.ts","sourceRoot":"","sources":["../../src/hooks/useFilter.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC;;;GAGG;AACH,eAAO,MAAM,SAAS,mFAAmF,IAsBxG,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { useCallback, useLayoutEffect } from 'react';
2
+ import { actions } from '../actions';
3
+ import { useFilterContext } from '../context';
4
+ /**
5
+ * Hook for attaching a filter to the current context
6
+ * Must be used within {@link FilterProvider}
7
+ */
8
+ export const useFilter = (filter) => {
9
+ const context = useFilterContext();
10
+ const { key } = filter;
11
+ useLayoutEffect(() => {
12
+ /** add filter to store */
13
+ context.filter$.next(actions.filter.add(filter));
14
+ /** add initial selection to filter selection */
15
+ if (!Object.keys(context.selection$.value).includes(key)) {
16
+ context.selection$.next(actions.selection.initial({ [key]: filter.initial }));
17
+ }
18
+ /** remove filter when consumer unmounts */
19
+ return () => context.filter$.next(actions.filter.remove(filter.key));
20
+ }, [context, filter, key]);
21
+ /** return a function which the consumer can set the selection for the provided filter */
22
+ return useCallback((selection) => {
23
+ context.selection$.next(actions.selection.set({ [key]: selection }));
24
+ }, [context, key]);
25
+ };
26
+ //# sourceMappingURL=useFilter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFilter.js","sourceRoot":"","sources":["../../src/hooks/useFilter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAErD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAG9C;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAoB,MAAiC,EAAiC,EAAE;IAC/G,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAC;IACnC,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;IACvB,eAAe,CAAC,GAAG,EAAE;QACnB,0BAA0B;QAC1B,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QAEjD,gDAAgD;QAChD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACxD,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;SAC/E;QACD,2CAA2C;QAC3C,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACvE,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IAE3B,0FAA0F;IAC1F,OAAO,WAAW,CAChB,CAAC,SAAqB,EAAE,EAAE;QACxB,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;IACvE,CAAC,EACD,CAAC,OAAO,EAAE,GAAG,CAAC,CACf,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { Observable } from 'rxjs';
2
+ import { Filter } from '../types';
3
+ declare type useFilterDataArgs = {
4
+ /** array of filter keys of filters that will not be included in the data filtration */
5
+ exclude?: string[];
6
+ };
7
+ export declare const filterSelection: (filter$: Observable<Record<string, Filter>>, exclude?: string[] | undefined) => Observable<Record<string, Filter>>;
8
+ export declare const filterData: <TInn extends Record<string, any>, TOut extends Record<string, any> = TInn>(source$: Observable<TInn[]>, filter$: Observable<Record<string, Filter<TInn, any>>>, selection$: Observable<Record<string, any>>) => Observable<TOut[]>;
9
+ export declare const useFilterData: <TData extends Record<string, any>>(args?: useFilterDataArgs | undefined) => Observable<TData[]>;
10
+ export default useFilterData;
11
+ //# sourceMappingURL=useFilterData.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFilterData.d.ts","sourceRoot":"","sources":["../../src/hooks/useFilterData.ts"],"names":[],"mappings":"AAEA,OAAO,EAAuB,UAAU,EAAE,MAAM,MAAM,CAAC;AAIvD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,aAAK,iBAAiB,GAAG;IACvB,uFAAuF;IACvF,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,eAAe,YACjB,WAAW,OAAO,MAAM,EAAE,MAAM,CAAC,CAAC,qCAE1C,WAAW,OAAO,MAAM,EAAE,MAAM,CAAC,CAgBnC,CAAC;AAEF,eAAO,MAAM,UAAU,+KAGT,WAAW,OAAO,MAAM,EAAE,GAAG,CAAC,CAAC,uBAc5C,CAAC;AAEF,eAAO,MAAM,aAAa,kGASzB,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -0,0 +1,39 @@
1
+ import { useMemo } from 'react';
2
+ import { combineLatest, from } from 'rxjs';
3
+ import { distinctUntilChanged, map, switchMap, reduce } from 'rxjs/operators';
4
+ import { useFilterContext } from '.';
5
+ export const filterSelection = (filter$, exclude) => {
6
+ return filter$.pipe(
7
+ /** create a selection of filters base on provided args */
8
+ map((x) => Object.entries(x)
9
+ .filter(([key]) => !exclude || !exclude.includes(key))
10
+ .reduce((acc, [key, filter]) => Object.assign(acc, { [key]: filter }), {})),
11
+ /** only update filters when filter function changes */
12
+ distinctUntilChanged((a, b) => {
13
+ const filterA = Object.values(a);
14
+ const filterB = Object.values(b);
15
+ if (filterA.length !== filterB.length)
16
+ return false;
17
+ return !filterA.find((x) => filterB.find((y) => x.filterFn !== y.filterFn));
18
+ }));
19
+ };
20
+ export const filterData = (source$, filter$, selection$) => {
21
+ return combineLatest([selection$, source$, filter$]).pipe(switchMap(([selections, source, filters]) => {
22
+ /** loop threw all provided filters */
23
+ return from(Object.values(filters)).pipe(reduce((acc, filter) => {
24
+ /** extract selection for current filter */
25
+ const selection = selections[filter.key];
26
+ return selection ? filter.filterFn(acc, selection) : acc;
27
+ }, source));
28
+ }));
29
+ };
30
+ export const useFilterData = (args) => {
31
+ const { exclude } = args || {};
32
+ const { source$, filter$, selection$ } = useFilterContext();
33
+ /** create selection of filters to apply */
34
+ const selectedFilter$ = useMemo(() => filterSelection(filter$, exclude), [filter$, exclude]);
35
+ /** create observable filtered data */
36
+ return useMemo(() => filterData(source$, selectedFilter$, selection$), [source$, selectedFilter$, selection$]);
37
+ };
38
+ export default useFilterData;
39
+ //# sourceMappingURL=useFilterData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFilterData.js","sourceRoot":"","sources":["../../src/hooks/useFilterData.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,9 @@
1
+ import { Observable } from '@equinor/fusion-react-observable';
1
2
  /**
2
- * Gives you the current selection for a given filter key.
3
- * Updates when the selection changes in the filterstore.
4
- *
5
- * @param key Filter key
6
- * @returns filter selection
7
- *
8
- * @example
9
- * const currentOptionsSelection = useFilterSelection<string[]>('name');
3
+ * Use the filter selection from filter provider context
4
+ * @param filterKey {string} the key that the filter was registered on
5
+ * @returns {Observable<TSelection>}
10
6
  */
11
- declare const useFilterSelection: <TSelection>(key: string) => TSelection | null;
7
+ export declare const useFilterSelection: <TSelection>(filterKey: string) => Observable<Set<TSelection>>;
12
8
  export default useFilterSelection;
13
9
  //# sourceMappingURL=useFilterSelection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useFilterSelection.d.ts","sourceRoot":"","sources":["../../src/hooks/useFilterSelection.tsx"],"names":[],"mappings":"AAGA;;;;;;;;;GASG;AACH,QAAA,MAAM,kBAAkB,oBAAsB,MAAM,sBAYnD,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"useFilterSelection.d.ts","sourceRoot":"","sources":["../../src/hooks/useFilterSelection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAI3E;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,0BAA2B,MAAM,gCAC0B,CAAC;AAE3F,eAAe,kBAAkB,CAAC"}
@@ -1,25 +1,10 @@
1
- import { useState, useEffect } from 'react';
2
- import useFilterContext from './useFilterContext';
1
+ import { useSelector } from '@equinor/fusion-react-observable';
2
+ import { useFilterContext } from '../context';
3
3
  /**
4
- * Gives you the current selection for a given filter key.
5
- * Updates when the selection changes in the filterstore.
6
- *
7
- * @param key Filter key
8
- * @returns filter selection
9
- *
10
- * @example
11
- * const currentOptionsSelection = useFilterSelection<string[]>('name');
4
+ * Use the filter selection from filter provider context
5
+ * @param filterKey {string} the key that the filter was registered on
6
+ * @returns {Observable<TSelection>}
12
7
  */
13
- const useFilterSelection = (key) => {
14
- const { store } = useFilterContext();
15
- const [filterSelection, setFilterSelection] = useState(null);
16
- useEffect(() => {
17
- const subscription = store.selection$.subscribe((selection) => {
18
- setFilterSelection(selection[key] || null);
19
- });
20
- return () => subscription.unsubscribe();
21
- }, [store, key]);
22
- return filterSelection;
23
- };
8
+ export const useFilterSelection = (filterKey) => useSelector(useFilterContext().selection$, filterKey);
24
9
  export default useFilterSelection;
25
10
  //# sourceMappingURL=useFilterSelection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useFilterSelection.js","sourceRoot":"","sources":["../../src/hooks/useFilterSelection.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAElD;;;;;;;;;GASG;AACH,MAAM,kBAAkB,GAAG,CAAc,GAAW,EAAqB,EAAE;IACzE,MAAM,EAAE,KAAK,EAAE,GAAG,gBAAgB,EAAE,CAAC;IACrC,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAoB,IAAI,CAAC,CAAC;IAEhF,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,YAAY,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,EAAE;YAC5D,kBAAkB,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;IAC1C,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IAEjB,OAAO,eAAe,CAAC;AACzB,CAAC,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"useFilterSelection.js","sourceRoot":"","sources":["../../src/hooks/useFilterSelection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAc,MAAM,kCAAkC,CAAC;AAE3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAa,SAAiB,EAA+B,EAAE,CAC/F,WAAW,CAAC,gBAAgB,EAAE,CAAC,UAA6C,EAAE,SAAS,CAAC,CAAC;AAE3F,eAAe,kBAAkB,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,15 +1,5 @@
1
- export { FilterProvider } from './FilterProvider';
2
- export { default as useFilterStore } from './hooks/useFilterStore';
3
- export { default as useFilterChangeHandler } from './hooks/useFilterChangeHandler';
4
- export { default as useFilterOptionsBuilder } from './hooks/useFilterOptionsBuilder';
5
- export { default as useFilterOptionsCounter } from './hooks/useFilterOptionsCounter';
6
- export { default as useFilterSelection } from './hooks/useFilterSelection';
7
- export { default as useFilterContext } from './hooks/useFilterContext';
8
- export { HorizontalFilterPanel as FilterPanel } from './components/HorizontalFilterPanel/HorizontalFilterPanel';
9
- export { FilterSection } from './components/FilterSection';
10
- export { CheckBoxFilter } from './components/CheckBoxFilter';
11
- export { RadioFilter } from './components/RadioFilter/RadioFilter';
12
- export { FilterSelectionChips } from './components/FilterSelectionChips/FilterSelectionChips';
13
- export { GeneralBar } from './components/GeneralBar';
14
- export { HorizontalBar } from './components/HorizontalBar/HorizontalBar';
1
+ export { FilterProvider, FilterProviderProps } from './FilterProvider';
2
+ export { actions as filterActions, Actions as FilterActions } from './actions';
3
+ export * from './hooks';
4
+ export * from './types';
15
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGlD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACnF,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AACrF,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AACrF,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAGvE,OAAO,EAAE,qBAAqB,IAAI,WAAW,EAAE,MAAM,0DAA0D,CAAC;AAChH,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wDAAwD,CAAC;AAC9F,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,WAAW,CAAC;AAE/E,cAAc,SAAS,CAAC;AAExB,cAAc,SAAS,CAAC"}
package/dist/index.js CHANGED
@@ -1,17 +1,5 @@
1
1
  export { FilterProvider } from './FilterProvider';
2
- //Hooks
3
- export { default as useFilterStore } from './hooks/useFilterStore';
4
- export { default as useFilterChangeHandler } from './hooks/useFilterChangeHandler';
5
- export { default as useFilterOptionsBuilder } from './hooks/useFilterOptionsBuilder';
6
- export { default as useFilterOptionsCounter } from './hooks/useFilterOptionsCounter';
7
- export { default as useFilterSelection } from './hooks/useFilterSelection';
8
- export { default as useFilterContext } from './hooks/useFilterContext';
9
- // UI Components
10
- export { HorizontalFilterPanel as FilterPanel } from './components/HorizontalFilterPanel/HorizontalFilterPanel';
11
- export { FilterSection } from './components/FilterSection';
12
- export { CheckBoxFilter } from './components/CheckBoxFilter';
13
- export { RadioFilter } from './components/RadioFilter/RadioFilter';
14
- export { FilterSelectionChips } from './components/FilterSelectionChips/FilterSelectionChips';
15
- export { GeneralBar } from './components/GeneralBar';
16
- export { HorizontalBar } from './components/HorizontalBar/HorizontalBar';
2
+ export { actions as filterActions } from './actions';
3
+ export * from './hooks';
4
+ export * from './types';
17
5
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO;AACP,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACnF,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AACrF,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AACrF,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEvE,gBAAgB;AAChB,OAAO,EAAE,qBAAqB,IAAI,WAAW,EAAE,MAAM,0DAA0D,CAAC;AAChH,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wDAAwD,CAAC;AAC9F,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAuB,MAAM,kBAAkB,CAAC;AAEvE,OAAO,EAAE,OAAO,IAAI,aAAa,EAA4B,MAAM,WAAW,CAAC;AAE/E,cAAc,SAAS,CAAC;AAExB,cAAc,SAAS,CAAC"}
@@ -0,0 +1,12 @@
1
+ /// <reference types="react" />
2
+ import { Filter } from '..';
3
+ import { FilterOption, FilterOptionBuilder, FilterOptionSelector } from './types';
4
+ export declare type FilterComponentProviderProps<TData, TOption extends FilterOption, TValue> = {
5
+ filter: Filter<TData, Set<TValue>>;
6
+ optionBuilder?: FilterOptionBuilder<TData, TOption, TValue>;
7
+ selector?: Extract<keyof TData, string> | string | FilterOptionSelector<TData>;
8
+ initial?: Set<TValue>;
9
+ };
10
+ export declare const FilterOptionProvider: <TData extends Record<string, any>, TOption extends FilterOption, TValue>(props: import("react").PropsWithChildren<FilterComponentProviderProps<TData, TOption, TValue>>) => JSX.Element;
11
+ export default FilterOptionProvider;
12
+ //# sourceMappingURL=FilterOptionProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterOptionProvider.d.ts","sourceRoot":"","sources":["../../src/options/FilterOptionProvider.tsx"],"names":[],"mappings":";AAOA,OAAO,EAA+B,MAAM,EAAE,MAAM,IAAI,CAAC;AAKzD,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAOlF,oBAAY,4BAA4B,CAAC,KAAK,EAAE,OAAO,SAAS,YAAY,EAAE,MAAM,IAAI;IACtF,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACnC,aAAa,CAAC,EAAE,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC5D,QAAQ,CAAC,EAAE,OAAO,CAAC,MAAM,KAAK,EAAE,MAAM,CAAC,GAAG,MAAM,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC/E,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,oBAAoB,+KAE9B,WAiDF,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
@@ -0,0 +1,55 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useEffect, useMemo } from 'react';
3
+ import { combineLatest, of } from 'rxjs';
4
+ import { switchMap, map } from 'rxjs/operators';
5
+ import { useObservable } from '@equinor/fusion-react-observable';
6
+ import { useFilter, useFilterContext } from '..';
7
+ import { Provider } from './context';
8
+ import { actions } from './actions';
9
+ import { createOptionReducer } from './reducer';
10
+ import { createOptionBuilder, propertySelector } from './create-options';
11
+ import { useFilterData, useFilterSelection } from '../hooks';
12
+ const optionReducer = createOptionReducer({});
13
+ export const FilterOptionProvider = (props) => {
14
+ /** append change method if not provided */
15
+ const filter = useMemo(() => {
16
+ props.filter.hasChanged ??= (a, b) => a !== b;
17
+ return props.filter;
18
+ }, [props.filter]);
19
+ const setSelection = useFilter(filter);
20
+ const selection$ = useFilterSelection(filter.key);
21
+ const context = useFilterContext();
22
+ const options$ = useObservable(optionReducer, {});
23
+ /** memorize method for creating filter options */
24
+ const optionBuilder = useMemo(() => {
25
+ /** return provided builder if any */
26
+ if (props.optionBuilder)
27
+ return props.optionBuilder;
28
+ if (props.selector) {
29
+ /** create a default option builder */
30
+ return createOptionBuilder(
31
+ /** if selector is not a key of object return the selector for creating option */
32
+ typeof props.selector === 'string'
33
+ ? propertySelector(props.selector)
34
+ : props.selector);
35
+ }
36
+ throw Error('either provide a builder for option or a selector for option creation');
37
+ }, [props.optionBuilder, props.selector]);
38
+ const data$ = useFilterData(useMemo(() => ({ exclude: [filter.key] }), [filter.key]));
39
+ useEffect(() => {
40
+ const subscription = combineLatest([context.source$, data$, selection$])
41
+ .pipe(switchMap(([source, data, selection]) => {
42
+ return of(optionBuilder(source, selection, data));
43
+ }), map((x) => actions.set(x)))
44
+ .subscribe(options$);
45
+ return () => subscription.unsubscribe();
46
+ }, [context, selection$, options$, data$, optionBuilder]);
47
+ const value = {
48
+ options$,
49
+ selection$,
50
+ setSelection,
51
+ };
52
+ return _jsx(Provider, Object.assign({ value: value }, { children: props.children }), void 0);
53
+ };
54
+ export default FilterOptionProvider;
55
+ //# sourceMappingURL=FilterOptionProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterOptionProvider.js","sourceRoot":"","sources":["../../src/options/FilterOptionProvider.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { ActionType } from 'typesafe-actions';
2
+ import { FilterOption } from './types';
3
+ export declare const actions: {
4
+ set: import("typesafe-actions").PayloadActionCreator<"@FILTER_OPTIONS/SELECTION_SET", Record<string, FilterOption>>;
5
+ };
6
+ export declare type Actions = ActionType<typeof actions>;
7
+ export default actions;
8
+ //# sourceMappingURL=actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/options/actions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,eAAO,MAAM,OAAO;;CAEnB,CAAC;AAEF,oBAAY,OAAO,GAAG,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC;AAEjD,eAAe,OAAO,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { createAction } from 'typesafe-actions';
2
+ export const actions = {
3
+ set: createAction('@FILTER_OPTIONS/SELECTION_SET')(),
4
+ };
5
+ export default actions;
6
+ //# sourceMappingURL=actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/options/actions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAc,MAAM,kBAAkB,CAAC;AAG5D,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,GAAG,EAAE,YAAY,CAAC,+BAA+B,CAAC,EAAgC;CACnF,CAAC;AAIF,eAAe,OAAO,CAAC"}
@@ -0,0 +1,6 @@
1
+ /// <reference types="react" />
2
+ import { FilterOption, FilterOptionContext } from './types';
3
+ export declare const Provider: import("react").Provider<any>, Consumer: import("react").Consumer<any>;
4
+ export declare const useFilterOptionContext: <TOption extends FilterOption = FilterOption, TValue = string>() => FilterOptionContext<TOption, TValue>;
5
+ export default useFilterOptionContext;
6
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/options/context.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAI5D,eAAO,MAAQ,QAAQ,iCAAE,QAAQ,+BAAY,CAAC;AAE9C,eAAO,MAAM,sBAAsB,0GAGqE,CAAC;AAEzG,eAAe,sBAAsB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { createContext, useContext } from 'react';
2
+ // @ts-ignore
3
+ const context = createContext({});
4
+ export const { Provider, Consumer } = context;
5
+ export const useFilterOptionContext = () => useContext(context);
6
+ export default useFilterOptionContext;
7
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/options/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAIlD,aAAa;AACb,MAAM,OAAO,GAAG,aAAa,CAAsB,EAAE,CAAC,CAAC;AACvD,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;AAE9C,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAGI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAyC,CAAC;AAEzG,eAAe,sBAAsB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { FilterOption, FilterOptionBuilder, FilterOptionSelector } from './types';
2
+ export declare const propertySelector: <TData extends Record<string, any>>(key: Extract<keyof TData, string>) => FilterOptionSelector<TData>;
3
+ export declare const createOptionBuilder: <TData extends Record<string, unknown>, TOption extends FilterOption, TOptions extends Record<string, TOption> = Record<string, TOption>, TValue = string | keyof TOptions>(selector: FilterOptionSelector<TData>, isSelected?: (key: string | keyof TOptions, selection: Set<TValue>, data?: TData | undefined) => boolean) => FilterOptionBuilder<TData, TOption, TValue>;
4
+ //# sourceMappingURL=create-options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-options.d.ts","sourceRoot":"","sources":["../../src/options/create-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAElF,eAAO,MAAM,gBAAgB,uGAI5B,CAAC;AAEF,eAAO,MAAM,mBAAmB,sTAQwD,OAAO,gDAyB5F,CAAC"}
@@ -0,0 +1,24 @@
1
+ export const propertySelector = (key) => {
2
+ return (data) => ({ key: data[key], value: data[key] });
3
+ };
4
+ export const createOptionBuilder = (selector, isSelected = (key, selection) => selection.has(key)) => (source, selection, data) => {
5
+ const hasEntry = (value) => data && !!data.find((x) => selector(x).value === value);
6
+ const srcCount = (value) => source.filter((x) => selector(x).value === value).length;
7
+ const dataCount = (value) => (data || []).filter((x) => selector(x).value === value).length;
8
+ const options = source.reduce((acc, item) => {
9
+ const { key, value, label } = selector(item);
10
+ if (acc[key]) {
11
+ return acc;
12
+ }
13
+ const option = {
14
+ label: label || value,
15
+ excluded: !hasEntry(value),
16
+ selected: selection && isSelected(key, selection, item),
17
+ count: dataCount(value),
18
+ totalCount: srcCount(value),
19
+ };
20
+ return { ...acc, [key]: option };
21
+ }, {});
22
+ return options;
23
+ };
24
+ //# sourceMappingURL=create-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-options.js","sourceRoot":"","sources":["../../src/options/create-options.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,GAAiC,EACJ,EAAE;IAC/B,OAAO,CAAC,IAAW,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACjE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAC9B,CAME,QAAqC,EACrC,aAA8F,CAC5F,GAAmB,EACnB,SAAsB,EACtB,EAAE,CAAE,SAA4C,CAAC,GAAG,CAAC,GAAG,CAAC,EACd,EAAE,CACjD,CAAC,MAAe,EAAE,SAAuB,EAAE,IAAc,EAAY,EAAE;IACrE,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;IAC7F,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,MAAM,CAAC;IAC9F,MAAM,SAAS,GAAG,CAAC,KAAc,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,MAAM,CAAC;IACrG,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;QAC1C,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,GAAG,CAAC,GAAuB,CAAC,EAAE;YAChC,OAAO,GAAG,CAAC;SACZ;QACD,MAAM,MAAM,GAAG;YACb,KAAK,EAAE,KAAK,IAAI,KAAK;YACrB,QAAQ,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC1B,QAAQ,EAAE,SAAS,IAAI,UAAU,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC;YACvD,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC;YACvB,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC;SAC5B,CAAC;QACF,OAAO,EAAE,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACnC,CAAC,EAAE,EAAc,CAAC,CAAC;IAEnB,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { FilterOptionProvider, FilterComponentProviderProps, default } from './FilterOptionProvider';
2
+ export { useFilterOptionSearch } from './search';
3
+ export * from './types';
4
+ export { Consumer as FilterOptionConsumer, useFilterOptionContext } from './context';
5
+ export { propertySelector } from './create-options';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/options/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,4BAA4B,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACrG,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAEjD,cAAc,SAAS,CAAC;AAExB,OAAO,EAAE,QAAQ,IAAI,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAErF,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { FilterOptionProvider, default } from './FilterOptionProvider';
2
+ export { useFilterOptionSearch } from './search';
3
+ export * from './types';
4
+ export { Consumer as FilterOptionConsumer, useFilterOptionContext } from './context';
5
+ export { propertySelector } from './create-options';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/options/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAgC,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACrG,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAEjD,cAAc,SAAS,CAAC;AAExB,OAAO,EAAE,QAAQ,IAAI,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAErF,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC"}