@@ -14,6 +14,21 @@ function _typeof(obj) {
1414 return _typeof ( obj ) ;
1515}
1616
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+
1732var isProduction = process . env . NODE_ENV === 'production' ;
1833var prefix = 'Invariant failed' ;
1934
@@ -129,6 +144,50 @@ function createNamedHook(name, hook) {
129144 return hook . bind ( null , keySymbol ) ;
130145}
131146
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+
132191/**
133192 * https://github.com/salvoravida/react-class-hooks
134193 */
@@ -158,6 +217,7 @@ function useClassStateKey(keySymbol, initialValue) {
158217 var _self$MAGIC_STATES$ke = self [ MAGIC_STATES ] [ keySymbol ] ,
159218 value = _self$MAGIC_STATES$ke . value ,
160219 setValue = _self$MAGIC_STATES$ke . setValue ;
220+ setDevToolsHookState ( keySymbol . description , value ) ;
161221 return [ value , setValue ] ;
162222}
163223
@@ -301,7 +361,9 @@ var useClassMemoKey = function useClassMemoKey(keySymbol, creator, inputs) {
301361 }
302362 }
303363
304- return self [ MAGIC_MEMOS ] [ keySymbol ] . value ;
364+ var returnValue = self [ MAGIC_MEMOS ] [ keySymbol ] . value ;
365+ setDevToolsHookState ( keySymbol . description , returnValue ) ;
366+ return returnValue ;
305367} ;
306368var useClassMemo = createHook ( 'Memos' , useClassMemoKey ) ;
307369
@@ -369,7 +431,9 @@ function useClassRefKey(keySymbol, initialValue) {
369431 self [ MAGIC_REFS ] [ keySymbol ] = ref ;
370432 }
371433
372- return self [ MAGIC_REFS ] [ keySymbol ] ;
434+ var returnValue = self [ MAGIC_REFS ] [ keySymbol ] ;
435+ setDevToolsHookState ( keySymbol . description , returnValue ) ;
436+ return returnValue ;
373437}
374438
375439/**
@@ -395,12 +459,16 @@ var refCallback = function refCallback(refObject) {
395459/**
396460 * https://github.com/salvoravida/react-class-hooks
397461 */
398- var useClassContext = function useClassContext ( context , observedBits ) {
462+ function useClassContextKey ( keySymbol , context , observedBits ) {
463+ checkSymbol ( 'useClassContext' , keySymbol ) ;
399464 getMagicSelf ( ) ; // invariant hook outside render method
400465
401466 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 ) ;
404472
405473function useClassImperativeHandle ( ref , create , deps ) {
406474 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) {
429497 } , effectDeps ) ;
430498}
431499
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+
432510/**
433511 * https://github.com/salvoravida/react-class-hooks
434512 */
435513var useClassLayoutEffect = useClassEffect ;
436514
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