3
3
/* eslint-disable no-param-reassign */
4
4
// links component state tree to library
5
5
// changes the setState method to also update our snapshot
6
-
7
- // import loadable from '@loadable/component';
8
-
9
6
const Tree = require ( './tree' ) ;
10
7
const astParser = require ( './astParser' ) ;
11
8
const { saveState } = require ( './masterState' ) ;
@@ -55,9 +52,8 @@ module.exports = (snap, mode) => {
55
52
component . queue . dispatch = ( fiber , queue , action ) => {
56
53
// don't do anything if state is locked
57
54
if ( mode . locked && ! mode . jumping ) return ;
58
- // oldDispatch(fiber, queue, action);
55
+ oldDispatch ( fiber , queue , action ) ;
59
56
setTimeout ( ( ) => {
60
- oldDispatch ( fiber , queue , action ) ;
61
57
updateSnapShotTree ( ) ;
62
58
sendSnapshot ( ) ;
63
59
} , 100 ) ;
@@ -87,12 +83,13 @@ module.exports = (snap, mode) => {
87
83
88
84
function createTree ( currentFiber , tree = new Tree ( 'root' ) ) {
89
85
if ( ! currentFiber ) return tree ;
90
-
86
+
91
87
const {
92
88
sibling,
93
89
stateNode,
94
90
child,
95
91
memoizedState,
92
+ elementType,
96
93
} = currentFiber ;
97
94
98
95
let nextTree = tree ;
@@ -105,8 +102,11 @@ module.exports = (snap, mode) => {
105
102
}
106
103
// Check if the component uses hooks
107
104
if ( memoizedState && Object . hasOwnProperty . call ( memoizedState , 'baseState' ) ) {
108
- // Add a traversed property and initialize to the evaluated result
109
- // of invoking traverseHooks, and reassign nextTree
105
+ // Traverse through the currentFiber and extract the getters/setters
106
+ astHooks = astParser ( elementType ) ;
107
+ saveState ( astHooks ) ;
108
+ // Create a traversed property and assign to the evaluated result of
109
+ // invoking traverseHooks with memoizedState
110
110
memoizedState . traversed = traverseHooks ( memoizedState ) ;
111
111
nextTree = tree . appendChild ( memoizedState ) ;
112
112
}
@@ -124,20 +124,14 @@ module.exports = (snap, mode) => {
124
124
snap . tree = createTree ( current ) ;
125
125
}
126
126
127
- return ( container , entryFile ) => {
127
+ return container => {
128
128
const {
129
129
_reactRootContainer : { _internalRoot } ,
130
130
_reactRootContainer,
131
131
} = container ;
132
132
// only assign internal rootp if it actually exists
133
133
fiberRoot = _internalRoot || _reactRootContainer ;
134
- // If hooks are implemented, traverse through the source code
135
- // Save the getter/setter combo for timeJump
136
- if ( entryFile ) {
137
- astHooks = astParser ( entryFile ) ;
138
- // console.log('Ast Hooks', astHooks);
139
- saveState ( astHooks ) ;
140
- }
134
+
141
135
updateSnapShotTree ( ) ;
142
136
// send the initial snapshot once the content script has started up
143
137
window . addEventListener ( 'message' , ( { data : { action } } ) => {
0 commit comments