@@ -10,11 +10,19 @@ export interface RawFilter {
10
10
export function createFilterStore (
11
11
onSubmit : ( event : "update-filter" , filters : RawFilterState ) => void ,
12
12
) {
13
- const filters = valoo < RawFilter [ ] > ( [ ] ) ;
14
- const filterFragment = valoo ( true ) ;
15
- const filterDom = valoo ( true ) ;
16
- const filterHoc = valoo ( true ) ;
17
- const filterRoot = valoo ( true ) ;
13
+ const defaults = {
14
+ fragment : true ,
15
+ dom : true ,
16
+ hoc : true ,
17
+ root : true ,
18
+ regex : [ ] as RawFilter [ ] ,
19
+ } ;
20
+
21
+ const filters = valoo < RawFilter [ ] > ( defaults . regex ) ;
22
+ const filterFragment = valoo ( defaults . fragment ) ;
23
+ const filterDom = valoo ( defaults . dom ) ;
24
+ const filterHoc = valoo ( defaults . hoc ) ;
25
+ const filterRoot = valoo ( defaults . root ) ;
18
26
19
27
const submit = ( ) => {
20
28
const s : RawFilterState = {
@@ -23,6 +31,7 @@ export function createFilterStore(
23
31
fragment : filterFragment . $ ,
24
32
dom : filterDom . $ ,
25
33
hoc : filterHoc . $ ,
34
+ root : filterRoot . $ ,
26
35
} ,
27
36
} ;
28
37
@@ -39,6 +48,17 @@ export function createFilterStore(
39
48
filterHoc . $ = ! ! state . type . hoc ;
40
49
filterRoot . $ = ! ! state . type . root ;
41
50
filters . $ = state . regex ;
51
+
52
+ // Refetch component tree if filters are not the default ones
53
+ if (
54
+ defaults . fragment !== filterFragment . $ ||
55
+ defaults . dom !== filterDom . $ ||
56
+ defaults . hoc !== filterHoc . $ ||
57
+ defaults . root !== filterRoot . $ ||
58
+ filters . $ . some ( f => f . enabled )
59
+ ) {
60
+ submit ( ) ;
61
+ }
42
62
} catch ( err ) {
43
63
// eslint-disable-next-line no-console
44
64
console . log ( err ) ;
0 commit comments