@@ -14,6 +14,21 @@ function _typeof(obj) {
14
14
return _typeof ( obj ) ;
15
15
}
16
16
17
+ function _defineProperty ( obj , key , value ) {
18
+ if ( key in obj ) {
19
+ Object . defineProperty ( obj , key , {
20
+ value : value ,
21
+ enumerable : true ,
22
+ configurable : true ,
23
+ writable : true
24
+ } ) ;
25
+ } else {
26
+ obj [ key ] = value ;
27
+ }
28
+
29
+ return obj ;
30
+ }
31
+
17
32
var isProduction = process . env . NODE_ENV === 'production' ;
18
33
var prefix = 'Invariant failed' ;
19
34
@@ -129,6 +144,50 @@ function createNamedHook(name, hook) {
129
144
return hook . bind ( null , keySymbol ) ;
130
145
}
131
146
147
+ var devToolConfig = {
148
+ active : false ,
149
+ stateKey : '__UNIVERSAL_HOOKS__' ,
150
+ show : 'object' // object, array, map
151
+
152
+ } ;
153
+ function supportReactDevTools ( _ref ) {
154
+ var active = _ref . active ,
155
+ stateKey = _ref . stateKey ,
156
+ show = _ref . show ;
157
+ if ( stateKey ) devToolConfig . stateKey = stateKey ;
158
+ if ( show ) devToolConfig . show = show ;
159
+ devToolConfig . active = ! ! active ;
160
+ }
161
+ function setDevToolsHookState ( name , state ) {
162
+ if ( devToolConfig . active ) {
163
+ var self = getMagicSelf ( ) ;
164
+ var stateKey = devToolConfig . stateKey ,
165
+ show = devToolConfig . show ;
166
+ if ( ! self . state ) self . state = { } ;
167
+ if ( ! self . state [ stateKey ] ) self . state [ stateKey ] = show === 'map' ? new Map ( ) : show === 'array' ? [ ] : { } ;
168
+
169
+ if ( show === 'map' ) {
170
+ self . state [ stateKey ] . set ( name , state ) ;
171
+ } else if ( show === 'array' ) {
172
+ var hookState = self . state [ stateKey ] . find ( function ( h ) {
173
+ return h . hasOwnProperty ( name ) ;
174
+ } ) ;
175
+
176
+ if ( hookState ) {
177
+ hookState [ name ] = state ;
178
+ } else {
179
+ self . state [ stateKey ] . push ( _defineProperty ( { } , name , state ) ) ;
180
+ }
181
+ } else {
182
+ var hookNames = Object . keys ( self . state [ stateKey ] ) ;
183
+ var hookName = hookNames . find ( function ( s ) {
184
+ return s . split ( ':' ) [ 1 ] === name ;
185
+ } ) ;
186
+ self . state [ stateKey ] [ hookName || "" . concat ( hookNames . length . toString ( ) . padStart ( 2 , '0' ) , ":" ) . concat ( name ) ] = state ;
187
+ }
188
+ }
189
+ }
190
+
132
191
/**
133
192
* https://github.com/salvoravida/react-class-hooks
134
193
*/
@@ -158,6 +217,7 @@ function useClassStateKey(keySymbol, initialValue) {
158
217
var _self$MAGIC_STATES$ke = self [ MAGIC_STATES ] [ keySymbol ] ,
159
218
value = _self$MAGIC_STATES$ke . value ,
160
219
setValue = _self$MAGIC_STATES$ke . setValue ;
220
+ setDevToolsHookState ( keySymbol . description , value ) ;
161
221
return [ value , setValue ] ;
162
222
}
163
223
@@ -301,7 +361,9 @@ var useClassMemoKey = function useClassMemoKey(keySymbol, creator, inputs) {
301
361
}
302
362
}
303
363
304
- return self [ MAGIC_MEMOS ] [ keySymbol ] . value ;
364
+ var returnValue = self [ MAGIC_MEMOS ] [ keySymbol ] . value ;
365
+ setDevToolsHookState ( keySymbol . description , returnValue ) ;
366
+ return returnValue ;
305
367
} ;
306
368
var useClassMemo = createHook ( 'Memos' , useClassMemoKey ) ;
307
369
@@ -369,7 +431,9 @@ function useClassRefKey(keySymbol, initialValue) {
369
431
self [ MAGIC_REFS ] [ keySymbol ] = ref ;
370
432
}
371
433
372
- return self [ MAGIC_REFS ] [ keySymbol ] ;
434
+ var returnValue = self [ MAGIC_REFS ] [ keySymbol ] ;
435
+ setDevToolsHookState ( keySymbol . description , returnValue ) ;
436
+ return returnValue ;
373
437
}
374
438
375
439
/**
@@ -395,12 +459,16 @@ var refCallback = function refCallback(refObject) {
395
459
/**
396
460
* https://github.com/salvoravida/react-class-hooks
397
461
*/
398
- var useClassContext = function useClassContext ( context , observedBits ) {
462
+ function useClassContextKey ( keySymbol , context , observedBits ) {
463
+ checkSymbol ( 'useClassContext' , keySymbol ) ;
399
464
getMagicSelf ( ) ; // invariant hook outside render method
400
465
401
466
invariant ( context && context . Provider && context . Consumer , 'Context should be React.createContext object!' ) ;
402
- return getMagicDispatcher ( ) . readContext ( context , observedBits ) ;
403
- } ;
467
+ var contextValue = getMagicDispatcher ( ) . readContext ( context , observedBits ) ;
468
+ setDevToolsHookState ( keySymbol . description , contextValue ) ;
469
+ return contextValue ;
470
+ }
471
+ var useClassContext = createHook ( 'Contexts' , useClassContextKey ) ;
404
472
405
473
function useClassImperativeHandle ( ref , create , deps ) {
406
474
invariant ( typeof create === 'function' , "Expected useImperativeHandle() second argument to be a function that creates a handle. Instead received: " . concat ( create !== null ? _typeof ( create ) : 'null' ) ) ;
@@ -429,9 +497,19 @@ function useClassImperativeHandle(ref, create, deps) {
429
497
} , effectDeps ) ;
430
498
}
431
499
500
+ /**
501
+ * https://github.com/salvoravida/react-class-hooks
502
+ */
503
+ function useClassDebugValueKey ( keySymbol , value , formatter ) {
504
+ checkSymbol ( 'useDebugValueKey' , keySymbol ) ;
505
+ var viewValue = typeof formatter === "function" ? formatter ( value ) : value ;
506
+ setDevToolsHookState ( keySymbol . description , viewValue ) ;
507
+ }
508
+ var useClassDebugValue = createHook ( 'DebugValue' , useClassDebugValueKey ) ;
509
+
432
510
/**
433
511
* https://github.com/salvoravida/react-class-hooks
434
512
*/
435
513
var useClassLayoutEffect = useClassEffect ;
436
514
437
- export { refCallback , useClassCallback , useClassContext , useClassEffect , useClassImperativeHandle , useClassLayoutEffect , useClassMemo , useClassReducer , useClassRef , useClassState } ;
515
+ export { refCallback , supportReactDevTools , useClassCallback , useClassContext , useClassDebugValue , useClassEffect , useClassImperativeHandle , useClassLayoutEffect , useClassMemo , useClassReducer , useClassRef , useClassState } ;
0 commit comments