2017-05-26 17:51:06 +00:00
/ * *
* Copyright 2013 - present , Facebook , Inc .
* All rights reserved .
*
* This source code is licensed under the BSD - style license found in the
* LICENSE file in the root directory of this source tree . An additional grant
* of patent rights can be found in the PATENTS file in the same directory .
*
* @ noflow
* @ providesModule ReactNativeFiber - dev
* /
"use strict" ;
var invariant = require ( "fbjs/lib/invariant" ) , warning = require ( "fbjs/lib/warning" ) , ExceptionsManager = require ( "ExceptionsManager" ) ;
require ( "InitializeCore" ) ;
var RCTEventEmitter = require ( "RCTEventEmitter" ) , emptyFunction = require ( "fbjs/lib/emptyFunction" ) , UIManager = require ( "UIManager" ) , checkPropTypes = require ( "prop-types/checkPropTypes" ) , emptyObject = require ( "fbjs/lib/emptyObject" ) , react = require ( "react" ) , shallowEqual = require ( "fbjs/lib/shallowEqual" ) , deepDiffer = require ( "deepDiffer" ) , flattenStyle = require ( "flattenStyle" ) , TextInputState = require ( "TextInputState" ) , deepFreezeAndThrowOnMutationInDev = require ( "deepFreezeAndThrowOnMutationInDev" ) ;
require ( "ReactNativeFeatureFlags" ) ;
2017-06-09 02:01:23 +00:00
var ExecutionEnvironment = require ( "fbjs/lib/ExecutionEnvironment" ) , performanceNow = require ( "fbjs/lib/performanceNow" ) , defaultShowDialog = function ( capturedError ) {
2017-05-26 17:51:06 +00:00
return ! 0 ;
} , showDialog = defaultShowDialog ;
function logCapturedError ( capturedError ) {
if ( ! 1 !== showDialog ( capturedError ) ) {
var componentName = capturedError . componentName , componentStack = capturedError . componentStack , error = capturedError . error , errorBoundaryName = capturedError . errorBoundaryName , errorBoundaryFound = capturedError . errorBoundaryFound , willRetry = capturedError . willRetry , message = error . message , name = error . name , stack = error . stack , errorSummary = message ? name + ": " + message : name , componentNameMessage = componentName ? "React caught an error thrown by " + componentName + "." : "React caught an error thrown by one of your components." , formattedCallStack = stack . slice ( 0 , errorSummary . length ) === errorSummary ? stack . slice ( errorSummary . length ) : stack ;
formattedCallStack = formattedCallStack . trim ( ) . split ( "\n" ) . map ( function ( line ) {
return "\n " + line . trim ( ) ;
} ) . join ( ) ;
var errorBoundaryMessage = void 0 ;
2017-06-09 02:01:23 +00:00
errorBoundaryMessage = errorBoundaryFound && errorBoundaryName ? willRetry ? "React will try to recreate this component tree from scratch " + "using the error boundary you provided, " + errorBoundaryName + "." : "This error was initially handled by the error boundary " + errorBoundaryName + ". " + "Recreating the tree from scratch failed so React will unmount the tree." : "Consider adding an error boundary to your tree to customize error handling behavior." ,
2017-05-26 17:51:06 +00:00
console . error ( componentNameMessage + " You should fix this error in your code. " + errorBoundaryMessage + "\n\n" + errorSummary + "\n\n" + "The error is located at: " + componentStack + "\n\n" + "The error was thrown at: " + formattedCallStack ) ;
}
}
var injection = {
injectDialog : function ( fn ) {
2017-06-09 02:01:23 +00:00
invariant ( showDialog === defaultShowDialog , "The custom dialog was already injected." ) ,
invariant ( "function" == typeof fn , "Injected showDialog() must be a function." ) ,
2017-05-26 17:51:06 +00:00
showDialog = fn ;
}
} , logCapturedError _1 = logCapturedError , ReactFiberErrorLogger = {
injection : injection ,
logCapturedError : logCapturedError _1
} , caughtError = null , invokeGuardedCallback = function ( name , func , context , a , b , c , d , e , f ) {
var funcArgs = Array . prototype . slice . call ( arguments , 3 ) ;
try {
func . apply ( context , funcArgs ) ;
} catch ( error ) {
return error ;
}
return null ;
} ;
if ( "undefined" != typeof window && "function" == typeof window . dispatchEvent && "undefined" != typeof document && "function" == typeof document . createEvent ) {
var fakeNode = document . createElement ( "react" ) , depth = 0 ;
invokeGuardedCallback = function ( name , func , context , a , b , c , d , e , f ) {
depth ++ ;
var thisDepth = depth , funcArgs = Array . prototype . slice . call ( arguments , 3 ) , boundFunc = function ( ) {
func . apply ( context , funcArgs ) ;
} , fakeEventError = null , onFakeEventError = function ( event ) {
depth === thisDepth && ( fakeEventError = event . error ) ;
} , evtType = "react-" + ( name || "invokeguardedcallback" ) + "-" + depth ;
window . addEventListener ( "error" , onFakeEventError ) , fakeNode . addEventListener ( evtType , boundFunc , ! 1 ) ;
var evt = document . createEvent ( "Event" ) ;
2017-06-09 02:01:23 +00:00
return evt . initEvent ( evtType , ! 1 , ! 1 ) , fakeNode . dispatchEvent ( evt ) , fakeNode . removeEventListener ( evtType , boundFunc , ! 1 ) ,
2017-05-26 17:51:06 +00:00
window . removeEventListener ( "error" , onFakeEventError ) , depth -- , fakeEventError ;
} ;
}
var rethrowCaughtError = function ( ) {
if ( caughtError ) {
var error = caughtError ;
throw caughtError = null , error ;
}
} , ReactErrorUtils = {
injection : {
injectErrorUtils : function ( injectedErrorUtils ) {
2017-06-09 02:01:23 +00:00
invariant ( "function" == typeof injectedErrorUtils . invokeGuardedCallback , "Injected invokeGuardedCallback() must be a function." ) ,
2017-05-26 17:51:06 +00:00
invokeGuardedCallback = injectedErrorUtils . invokeGuardedCallback ;
}
} ,
invokeGuardedCallback : function ( name , func , context , a , b , c , d , e , f ) {
return invokeGuardedCallback . apply ( this , arguments ) ;
} ,
invokeGuardedCallbackAndCatchFirstError : function ( name , func , context , a , b , c , d , e , f ) {
var error = ReactErrorUtils . invokeGuardedCallback . apply ( this , arguments ) ;
null !== error && null === caughtError && ( caughtError = error ) ;
} ,
rethrowCaughtError : function ( ) {
return rethrowCaughtError . apply ( this , arguments ) ;
}
} , ReactErrorUtils _1 = ReactErrorUtils , ComponentTree , injection$1 = {
injectComponentTree : function ( Injected ) {
ComponentTree = Injected , warning ( Injected && Injected . getNodeFromInstance && Injected . getInstanceFromNode , "EventPluginUtils.injection.injectComponentTree(...): Injected " + "module is missing getNodeFromInstance or getInstanceFromNode." ) ;
}
} ;
function isEndish ( topLevelType ) {
return "topMouseUp" === topLevelType || "topTouchEnd" === topLevelType || "topTouchCancel" === topLevelType ;
}
function isMoveish ( topLevelType ) {
return "topMouseMove" === topLevelType || "topTouchMove" === topLevelType ;
}
function isStartish ( topLevelType ) {
return "topMouseDown" === topLevelType || "topTouchStart" === topLevelType ;
}
var validateEventDispatches ;
validateEventDispatches = function ( event ) {
var dispatchListeners = event . _dispatchListeners , dispatchInstances = event . _dispatchInstances , listenersIsArr = Array . isArray ( dispatchListeners ) , listenersLen = listenersIsArr ? dispatchListeners . length : dispatchListeners ? 1 : 0 , instancesIsArr = Array . isArray ( dispatchInstances ) , instancesLen = instancesIsArr ? dispatchInstances . length : dispatchInstances ? 1 : 0 ;
warning ( instancesIsArr === listenersIsArr && instancesLen === listenersLen , "EventPluginUtils: Invalid `event`." ) ;
} ;
function executeDispatch ( event , simulated , listener , inst ) {
var type = event . type || "unknown-event" ;
2017-06-09 02:01:23 +00:00
event . currentTarget = EventPluginUtils . getNodeFromInstance ( inst ) , ReactErrorUtils _1 . invokeGuardedCallbackAndCatchFirstError ( type , listener , void 0 , event ) ,
2017-05-26 17:51:06 +00:00
event . currentTarget = null ;
}
function executeDispatchesInOrder ( event , simulated ) {
var dispatchListeners = event . _dispatchListeners , dispatchInstances = event . _dispatchInstances ;
if ( validateEventDispatches ( event ) , Array . isArray ( dispatchListeners ) ) for ( var i = 0 ; i < dispatchListeners . length && ! event . isPropagationStopped ( ) ; i ++ ) executeDispatch ( event , simulated , dispatchListeners [ i ] , dispatchInstances [ i ] ) ; else dispatchListeners && executeDispatch ( event , simulated , dispatchListeners , dispatchInstances ) ;
event . _dispatchListeners = null , event . _dispatchInstances = null ;
}
function executeDispatchesInOrderStopAtTrueImpl ( event ) {
var dispatchListeners = event . _dispatchListeners , dispatchInstances = event . _dispatchInstances ;
if ( validateEventDispatches ( event ) , Array . isArray ( dispatchListeners ) ) {
for ( var i = 0 ; i < dispatchListeners . length && ! event . isPropagationStopped ( ) ; i ++ ) if ( dispatchListeners [ i ] ( event , dispatchInstances [ i ] ) ) return dispatchInstances [ i ] ;
} else if ( dispatchListeners && dispatchListeners ( event , dispatchInstances ) ) return dispatchInstances ;
return null ;
}
function executeDispatchesInOrderStopAtTrue ( event ) {
var ret = executeDispatchesInOrderStopAtTrueImpl ( event ) ;
return event . _dispatchInstances = null , event . _dispatchListeners = null , ret ;
}
function executeDirectDispatch ( event ) {
validateEventDispatches ( event ) ;
var dispatchListener = event . _dispatchListeners , dispatchInstance = event . _dispatchInstances ;
2017-06-09 02:01:23 +00:00
invariant ( ! Array . isArray ( dispatchListener ) , "executeDirectDispatch(...): Invalid `event`." ) ,
2017-05-26 17:51:06 +00:00
event . currentTarget = dispatchListener ? EventPluginUtils . getNodeFromInstance ( dispatchInstance ) : null ;
var res = dispatchListener ? dispatchListener ( event ) : null ;
2017-06-09 02:01:23 +00:00
return event . currentTarget = null , event . _dispatchListeners = null , event . _dispatchInstances = null ,
2017-05-26 17:51:06 +00:00
res ;
}
function hasDispatches ( event ) {
return ! ! event . _dispatchListeners ;
}
var EventPluginUtils = {
isEndish : isEndish ,
isMoveish : isMoveish ,
isStartish : isStartish ,
executeDirectDispatch : executeDirectDispatch ,
executeDispatchesInOrder : executeDispatchesInOrder ,
executeDispatchesInOrderStopAtTrue : executeDispatchesInOrderStopAtTrue ,
hasDispatches : hasDispatches ,
getFiberCurrentPropsFromNode : function ( node ) {
return ComponentTree . getFiberCurrentPropsFromNode ( node ) ;
} ,
getInstanceFromNode : function ( node ) {
return ComponentTree . getInstanceFromNode ( node ) ;
} ,
getNodeFromInstance : function ( node ) {
return ComponentTree . getNodeFromInstance ( node ) ;
} ,
injection : injection$1
} , EventPluginUtils _1 = EventPluginUtils , fiberHostComponent = null , ReactControlledComponentInjection = {
injectFiberControlledHostComponent : function ( hostComponentImpl ) {
fiberHostComponent = hostComponentImpl ;
}
} , restoreTarget = null , restoreQueue = null ;
function restoreStateOfTarget ( target ) {
var internalInstance = EventPluginUtils _1 . getInstanceFromNode ( target ) ;
if ( internalInstance ) {
if ( "number" == typeof internalInstance . tag ) {
invariant ( fiberHostComponent && "function" == typeof fiberHostComponent . restoreControlledState , "Fiber needs to be injected to handle a fiber target for controlled " + "events." ) ;
var props = EventPluginUtils _1 . getFiberCurrentPropsFromNode ( internalInstance . stateNode ) ;
return void fiberHostComponent . restoreControlledState ( internalInstance . stateNode , internalInstance . type , props ) ;
}
2017-06-09 02:01:23 +00:00
invariant ( "function" == typeof internalInstance . restoreControlledState , "The internal instance must be a React host component." ) ,
2017-05-26 17:51:06 +00:00
internalInstance . restoreControlledState ( ) ;
}
}
var ReactControlledComponent = {
injection : ReactControlledComponentInjection ,
enqueueStateRestore : function ( target ) {
restoreTarget ? restoreQueue ? restoreQueue . push ( target ) : restoreQueue = [ target ] : restoreTarget = target ;
} ,
restoreStateIfNeeded : function ( ) {
if ( restoreTarget ) {
var target = restoreTarget , queuedTargets = restoreQueue ;
if ( restoreTarget = null , restoreQueue = null , restoreStateOfTarget ( target ) , queuedTargets ) for ( var i = 0 ; i < queuedTargets . length ; i ++ ) restoreStateOfTarget ( queuedTargets [ i ] ) ;
}
}
} , ReactControlledComponent _1 = ReactControlledComponent , stackBatchedUpdates = function ( fn , a , b , c , d , e ) {
return fn ( a , b , c , d , e ) ;
} , fiberBatchedUpdates = function ( fn , bookkeeping ) {
return fn ( bookkeeping ) ;
} ;
function performFiberBatchedUpdates ( fn , bookkeeping ) {
return fiberBatchedUpdates ( fn , bookkeeping ) ;
}
function batchedUpdates ( fn , bookkeeping ) {
return stackBatchedUpdates ( performFiberBatchedUpdates , fn , bookkeeping ) ;
}
var isNestingBatched = ! 1 ;
function batchedUpdatesWithControlledComponents ( fn , bookkeeping ) {
if ( isNestingBatched ) return batchedUpdates ( fn , bookkeeping ) ;
isNestingBatched = ! 0 ;
try {
return batchedUpdates ( fn , bookkeeping ) ;
} finally {
isNestingBatched = ! 1 , ReactControlledComponent _1 . restoreStateIfNeeded ( ) ;
}
}
var ReactGenericBatchingInjection = {
injectStackBatchedUpdates : function ( _batchedUpdates ) {
stackBatchedUpdates = _batchedUpdates ;
} ,
injectFiberBatchedUpdates : function ( _batchedUpdates ) {
fiberBatchedUpdates = _batchedUpdates ;
}
} , ReactGenericBatching = {
batchedUpdates : batchedUpdatesWithControlledComponents ,
injection : ReactGenericBatchingInjection
} , ReactGenericBatching _1 = ReactGenericBatching ;
function ReactNativeFiberErrorDialog ( capturedError ) {
var componentStack = capturedError . componentStack , error = capturedError . error , errorMessage = void 0 , errorStack = void 0 , errorType = void 0 ;
if ( error && "object" == typeof error ) {
var message = error . message , name = error . name ;
2017-06-09 02:01:23 +00:00
errorMessage = ( message ? name + ": " + message : name ) + "\n\nThis error is located at:" + componentStack ,
2017-05-26 17:51:06 +00:00
errorStack = error . stack , errorType = error . constructor ;
2017-06-09 02:01:23 +00:00
} else errorMessage = "Unspecified error at:" + componentStack , errorStack = "" ,
2017-05-26 17:51:06 +00:00
errorType = Error ;
var newError = new errorType ( errorMessage ) ;
2017-06-09 02:01:23 +00:00
return newError . stack = errorStack , ExceptionsManager . handleException ( newError , ! 1 ) ,
2017-05-26 17:51:06 +00:00
! 1 ;
}
var showDialog$1 = ReactNativeFiberErrorDialog , ReactNativeFiberErrorDialog _1 = {
showDialog : showDialog$1
} , eventPluginOrder = null , namesToPlugins = { } ;
function recomputePluginOrdering ( ) {
if ( eventPluginOrder ) for ( var pluginName in namesToPlugins ) {
var pluginModule = namesToPlugins [ pluginName ] , pluginIndex = eventPluginOrder . indexOf ( pluginName ) ;
2017-06-09 02:01:23 +00:00
if ( invariant ( pluginIndex > - 1 , "EventPluginRegistry: Cannot inject event plugins that do not exist in " + "the plugin ordering, `%s`." , pluginName ) ,
2017-05-26 17:51:06 +00:00
! EventPluginRegistry . plugins [ pluginIndex ] ) {
2017-06-09 02:01:23 +00:00
invariant ( pluginModule . extractEvents , "EventPluginRegistry: Event plugins must implement an `extractEvents` " + "method, but `%s` does not." , pluginName ) ,
2017-05-26 17:51:06 +00:00
EventPluginRegistry . plugins [ pluginIndex ] = pluginModule ;
var publishedEvents = pluginModule . eventTypes ;
for ( var eventName in publishedEvents ) invariant ( publishEventForPlugin ( publishedEvents [ eventName ] , pluginModule , eventName ) , "EventPluginRegistry: Failed to publish event `%s` for plugin `%s`." , eventName , pluginName ) ;
}
}
}
function publishEventForPlugin ( dispatchConfig , pluginModule , eventName ) {
2017-06-09 02:01:23 +00:00
invariant ( ! EventPluginRegistry . eventNameDispatchConfigs . hasOwnProperty ( eventName ) , "EventPluginHub: More than one plugin attempted to publish the same " + "event name, `%s`." , eventName ) ,
2017-05-26 17:51:06 +00:00
EventPluginRegistry . eventNameDispatchConfigs [ eventName ] = dispatchConfig ;
var phasedRegistrationNames = dispatchConfig . phasedRegistrationNames ;
if ( phasedRegistrationNames ) {
for ( var phaseName in phasedRegistrationNames ) if ( phasedRegistrationNames . hasOwnProperty ( phaseName ) ) {
var phasedRegistrationName = phasedRegistrationNames [ phaseName ] ;
publishRegistrationName ( phasedRegistrationName , pluginModule , eventName ) ;
}
return ! 0 ;
}
2017-06-09 02:01:23 +00:00
return ! ! dispatchConfig . registrationName && ( publishRegistrationName ( dispatchConfig . registrationName , pluginModule , eventName ) ,
2017-05-26 17:51:06 +00:00
! 0 ) ;
}
function publishRegistrationName ( registrationName , pluginModule , eventName ) {
2017-06-09 02:01:23 +00:00
invariant ( ! EventPluginRegistry . registrationNameModules [ registrationName ] , "EventPluginHub: More than one plugin attempted to publish the same " + "registration name, `%s`." , registrationName ) ,
2017-05-26 17:51:06 +00:00
EventPluginRegistry . registrationNameModules [ registrationName ] = pluginModule , EventPluginRegistry . registrationNameDependencies [ registrationName ] = pluginModule . eventTypes [ eventName ] . dependencies ;
var lowerCasedName = registrationName . toLowerCase ( ) ;
2017-06-09 02:01:23 +00:00
EventPluginRegistry . possibleRegistrationNames [ lowerCasedName ] = registrationName ,
2017-05-26 17:51:06 +00:00
"onDoubleClick" === registrationName && ( EventPluginRegistry . possibleRegistrationNames . ondblclick = registrationName ) ;
}
var EventPluginRegistry = {
plugins : [ ] ,
eventNameDispatchConfigs : { } ,
registrationNameModules : { } ,
registrationNameDependencies : { } ,
possibleRegistrationNames : { } ,
injectEventPluginOrder : function ( injectedEventPluginOrder ) {
2017-06-09 02:01:23 +00:00
invariant ( ! eventPluginOrder , "EventPluginRegistry: Cannot inject event plugin ordering more than " + "once. You are likely trying to load more than one copy of React." ) ,
2017-05-26 17:51:06 +00:00
eventPluginOrder = Array . prototype . slice . call ( injectedEventPluginOrder ) , recomputePluginOrdering ( ) ;
} ,
injectEventPluginsByName : function ( injectedNamesToPlugins ) {
var isOrderingDirty = ! 1 ;
for ( var pluginName in injectedNamesToPlugins ) if ( injectedNamesToPlugins . hasOwnProperty ( pluginName ) ) {
var pluginModule = injectedNamesToPlugins [ pluginName ] ;
2017-06-09 02:01:23 +00:00
namesToPlugins . hasOwnProperty ( pluginName ) && namesToPlugins [ pluginName ] === pluginModule || ( invariant ( ! namesToPlugins [ pluginName ] , "EventPluginRegistry: Cannot inject two different event plugins " + "using the same name, `%s`." , pluginName ) ,
2017-05-26 17:51:06 +00:00
namesToPlugins [ pluginName ] = pluginModule , isOrderingDirty = ! 0 ) ;
}
isOrderingDirty && recomputePluginOrdering ( ) ;
}
} , EventPluginRegistry _1 = EventPluginRegistry ;
function accumulateInto ( current , next ) {
2017-06-09 02:01:23 +00:00
return invariant ( null != next , "accumulateInto(...): Accumulated items must not be null or undefined." ) ,
null == current ? next : Array . isArray ( current ) ? Array . isArray ( next ) ? ( current . push . apply ( current , next ) ,
2017-05-26 17:51:06 +00:00
current ) : ( current . push ( next ) , current ) : Array . isArray ( next ) ? [ current ] . concat ( next ) : [ current , next ] ;
}
var accumulateInto _1 = accumulateInto ;
function forEachAccumulated ( arr , cb , scope ) {
Array . isArray ( arr ) ? arr . forEach ( cb , scope ) : arr && cb . call ( scope , arr ) ;
}
var forEachAccumulated _1 = forEachAccumulated , eventQueue = null , executeDispatchesAndRelease = function ( event , simulated ) {
event && ( EventPluginUtils _1 . executeDispatchesInOrder ( event , simulated ) , event . isPersistent ( ) || event . constructor . release ( event ) ) ;
} , executeDispatchesAndReleaseSimulated = function ( e ) {
return executeDispatchesAndRelease ( e , ! 0 ) ;
} , executeDispatchesAndReleaseTopLevel = function ( e ) {
return executeDispatchesAndRelease ( e , ! 1 ) ;
} ;
function isInteractive ( tag ) {
return "button" === tag || "input" === tag || "select" === tag || "textarea" === tag ;
}
function shouldPreventMouseEvent ( name , type , props ) {
switch ( name ) {
case "onClick" :
case "onClickCapture" :
case "onDoubleClick" :
case "onDoubleClickCapture" :
case "onMouseDown" :
case "onMouseDownCapture" :
case "onMouseMove" :
case "onMouseMoveCapture" :
case "onMouseUp" :
case "onMouseUpCapture" :
return ! ( ! props . disabled || ! isInteractive ( type ) ) ;
default :
return ! 1 ;
}
}
var EventPluginHub = {
injection : {
injectEventPluginOrder : EventPluginRegistry _1 . injectEventPluginOrder ,
injectEventPluginsByName : EventPluginRegistry _1 . injectEventPluginsByName
} ,
getListener : function ( inst , registrationName ) {
var listener ;
if ( "number" == typeof inst . tag ) {
var stateNode = inst . stateNode ;
if ( ! stateNode ) return null ;
var props = EventPluginUtils _1 . getFiberCurrentPropsFromNode ( stateNode ) ;
if ( ! props ) return null ;
if ( listener = props [ registrationName ] , shouldPreventMouseEvent ( registrationName , inst . type , props ) ) return null ;
} else {
var currentElement = inst . _currentElement ;
if ( "string" == typeof currentElement || "number" == typeof currentElement ) return null ;
if ( ! inst . _rootNodeID ) return null ;
var _props = currentElement . props ;
if ( listener = _props [ registrationName ] , shouldPreventMouseEvent ( registrationName , currentElement . type , _props ) ) return null ;
}
2017-06-09 02:01:23 +00:00
return invariant ( ! listener || "function" == typeof listener , "Expected %s listener to be a function, instead got type %s" , registrationName , typeof listener ) ,
2017-05-26 17:51:06 +00:00
listener ;
} ,
extractEvents : function ( topLevelType , targetInst , nativeEvent , nativeEventTarget ) {
for ( var events , plugins = EventPluginRegistry _1 . plugins , i = 0 ; i < plugins . length ; i ++ ) {
var possiblePlugin = plugins [ i ] ;
if ( possiblePlugin ) {
var extractedEvents = possiblePlugin . extractEvents ( topLevelType , targetInst , nativeEvent , nativeEventTarget ) ;
extractedEvents && ( events = accumulateInto _1 ( events , extractedEvents ) ) ;
}
}
return events ;
} ,
enqueueEvents : function ( events ) {
events && ( eventQueue = accumulateInto _1 ( eventQueue , events ) ) ;
} ,
processEventQueue : function ( simulated ) {
var processingEventQueue = eventQueue ;
2017-06-09 02:01:23 +00:00
eventQueue = null , simulated ? forEachAccumulated _1 ( processingEventQueue , executeDispatchesAndReleaseSimulated ) : forEachAccumulated _1 ( processingEventQueue , executeDispatchesAndReleaseTopLevel ) ,
invariant ( ! eventQueue , "processEventQueue(): Additional events were enqueued while processing " + "an event queue. Support for this has not yet been implemented." ) ,
2017-05-26 17:51:06 +00:00
ReactErrorUtils _1 . rethrowCaughtError ( ) ;
}
} , EventPluginHub _1 = EventPluginHub , ReactTypeOfWork = {
IndeterminateComponent : 0 ,
FunctionalComponent : 1 ,
ClassComponent : 2 ,
HostRoot : 3 ,
HostPortal : 4 ,
HostComponent : 5 ,
HostText : 6 ,
CoroutineComponent : 7 ,
CoroutineHandlerPhase : 8 ,
YieldComponent : 9 ,
Fragment : 10
} , HostComponent = ReactTypeOfWork . HostComponent ;
function getParent ( inst ) {
if ( void 0 !== inst . _hostParent ) return inst . _hostParent ;
if ( "number" == typeof inst . tag ) {
do {
inst = inst . return ;
} while ( inst && inst . tag !== HostComponent ) ;
if ( inst ) return inst ;
}
return null ;
}
function getLowestCommonAncestor ( instA , instB ) {
for ( var depthA = 0 , tempA = instA ; tempA ; tempA = getParent ( tempA ) ) depthA ++ ;
for ( var depthB = 0 , tempB = instB ; tempB ; tempB = getParent ( tempB ) ) depthB ++ ;
for ( ; depthA - depthB > 0 ; ) instA = getParent ( instA ) , depthA -- ;
for ( ; depthB - depthA > 0 ; ) instB = getParent ( instB ) , depthB -- ;
for ( var depth = depthA ; depth -- ; ) {
if ( instA === instB || instA === instB . alternate ) return instA ;
instA = getParent ( instA ) , instB = getParent ( instB ) ;
}
return null ;
}
function isAncestor ( instA , instB ) {
for ( ; instB ; ) {
if ( instA === instB || instA === instB . alternate ) return ! 0 ;
instB = getParent ( instB ) ;
}
return ! 1 ;
}
function getParentInstance ( inst ) {
return getParent ( inst ) ;
}
function traverseTwoPhase ( inst , fn , arg ) {
for ( var path = [ ] ; inst ; ) path . push ( inst ) , inst = getParent ( inst ) ;
var i ;
for ( i = path . length ; i -- > 0 ; ) fn ( path [ i ] , "captured" , arg ) ;
for ( i = 0 ; i < path . length ; i ++ ) fn ( path [ i ] , "bubbled" , arg ) ;
}
function traverseEnterLeave ( from , to , fn , argFrom , argTo ) {
2017-06-09 02:01:23 +00:00
for ( var common = from && to ? getLowestCommonAncestor ( from , to ) : null , pathFrom = [ ] ; from && from !== common ; ) pathFrom . push ( from ) ,
2017-05-26 17:51:06 +00:00
from = getParent ( from ) ;
for ( var pathTo = [ ] ; to && to !== common ; ) pathTo . push ( to ) , to = getParent ( to ) ;
var i ;
for ( i = 0 ; i < pathFrom . length ; i ++ ) fn ( pathFrom [ i ] , "bubbled" , argFrom ) ;
for ( i = pathTo . length ; i -- > 0 ; ) fn ( pathTo [ i ] , "captured" , argTo ) ;
}
var ReactTreeTraversal = {
isAncestor : isAncestor ,
getLowestCommonAncestor : getLowestCommonAncestor ,
getParentInstance : getParentInstance ,
traverseTwoPhase : traverseTwoPhase ,
traverseEnterLeave : traverseEnterLeave
} , getListener = EventPluginHub _1 . getListener ;
function listenerAtPhase ( inst , event , propagationPhase ) {
var registrationName = event . dispatchConfig . phasedRegistrationNames [ propagationPhase ] ;
return getListener ( inst , registrationName ) ;
}
function accumulateDirectionalDispatches ( inst , phase , event ) {
warning ( inst , "Dispatching inst must not be null" ) ;
var listener = listenerAtPhase ( inst , event , phase ) ;
2017-06-09 02:01:23 +00:00
listener && ( event . _dispatchListeners = accumulateInto _1 ( event . _dispatchListeners , listener ) ,
2017-05-26 17:51:06 +00:00
event . _dispatchInstances = accumulateInto _1 ( event . _dispatchInstances , inst ) ) ;
}
function accumulateTwoPhaseDispatchesSingle ( event ) {
event && event . dispatchConfig . phasedRegistrationNames && ReactTreeTraversal . traverseTwoPhase ( event . _targetInst , accumulateDirectionalDispatches , event ) ;
}
function accumulateTwoPhaseDispatchesSingleSkipTarget ( event ) {
if ( event && event . dispatchConfig . phasedRegistrationNames ) {
var targetInst = event . _targetInst , parentInst = targetInst ? ReactTreeTraversal . getParentInstance ( targetInst ) : null ;
ReactTreeTraversal . traverseTwoPhase ( parentInst , accumulateDirectionalDispatches , event ) ;
}
}
function accumulateDispatches ( inst , ignoredDirection , event ) {
if ( inst && event && event . dispatchConfig . registrationName ) {
var registrationName = event . dispatchConfig . registrationName , listener = getListener ( inst , registrationName ) ;
2017-06-09 02:01:23 +00:00
listener && ( event . _dispatchListeners = accumulateInto _1 ( event . _dispatchListeners , listener ) ,
2017-05-26 17:51:06 +00:00
event . _dispatchInstances = accumulateInto _1 ( event . _dispatchInstances , inst ) ) ;
}
}
function accumulateDirectDispatchesSingle ( event ) {
event && event . dispatchConfig . registrationName && accumulateDispatches ( event . _targetInst , null , event ) ;
}
function accumulateTwoPhaseDispatches ( events ) {
forEachAccumulated _1 ( events , accumulateTwoPhaseDispatchesSingle ) ;
}
function accumulateTwoPhaseDispatchesSkipTarget ( events ) {
forEachAccumulated _1 ( events , accumulateTwoPhaseDispatchesSingleSkipTarget ) ;
}
function accumulateEnterLeaveDispatches ( leave , enter , from , to ) {
ReactTreeTraversal . traverseEnterLeave ( from , to , accumulateDispatches , leave , enter ) ;
}
function accumulateDirectDispatches ( events ) {
forEachAccumulated _1 ( events , accumulateDirectDispatchesSingle ) ;
}
var EventPropagators = {
accumulateTwoPhaseDispatches : accumulateTwoPhaseDispatches ,
accumulateTwoPhaseDispatchesSkipTarget : accumulateTwoPhaseDispatchesSkipTarget ,
accumulateDirectDispatches : accumulateDirectDispatches ,
accumulateEnterLeaveDispatches : accumulateEnterLeaveDispatches
} , EventPropagators _1 = EventPropagators , oneArgumentPooler = function ( copyFieldsFrom ) {
var Klass = this ;
if ( Klass . instancePool . length ) {
var instance = Klass . instancePool . pop ( ) ;
return Klass . call ( instance , copyFieldsFrom ) , instance ;
}
return new Klass ( copyFieldsFrom ) ;
} , twoArgumentPooler = function ( a1 , a2 ) {
var Klass = this ;
if ( Klass . instancePool . length ) {
var instance = Klass . instancePool . pop ( ) ;
return Klass . call ( instance , a1 , a2 ) , instance ;
}
return new Klass ( a1 , a2 ) ;
} , threeArgumentPooler = function ( a1 , a2 , a3 ) {
var Klass = this ;
if ( Klass . instancePool . length ) {
var instance = Klass . instancePool . pop ( ) ;
return Klass . call ( instance , a1 , a2 , a3 ) , instance ;
}
return new Klass ( a1 , a2 , a3 ) ;
} , fourArgumentPooler = function ( a1 , a2 , a3 , a4 ) {
var Klass = this ;
if ( Klass . instancePool . length ) {
var instance = Klass . instancePool . pop ( ) ;
return Klass . call ( instance , a1 , a2 , a3 , a4 ) , instance ;
}
return new Klass ( a1 , a2 , a3 , a4 ) ;
} , standardReleaser = function ( instance ) {
var Klass = this ;
2017-06-09 02:01:23 +00:00
invariant ( instance instanceof Klass , "Trying to release an instance into a pool of a different type." ) ,
2017-05-26 17:51:06 +00:00
instance . destructor ( ) , Klass . instancePool . length < Klass . poolSize && Klass . instancePool . push ( instance ) ;
} , DEFAULT _POOL _SIZE = 10 , DEFAULT _POOLER = oneArgumentPooler , addPoolingTo = function ( CopyConstructor , pooler ) {
var NewKlass = CopyConstructor ;
2017-06-09 02:01:23 +00:00
return NewKlass . instancePool = [ ] , NewKlass . getPooled = pooler || DEFAULT _POOLER ,
NewKlass . poolSize || ( NewKlass . poolSize = DEFAULT _POOL _SIZE ) , NewKlass . release = standardReleaser ,
2017-05-26 17:51:06 +00:00
NewKlass ;
} , PooledClass = {
addPoolingTo : addPoolingTo ,
oneArgumentPooler : oneArgumentPooler ,
twoArgumentPooler : twoArgumentPooler ,
threeArgumentPooler : threeArgumentPooler ,
fourArgumentPooler : fourArgumentPooler
} , PooledClass _1 = PooledClass , didWarnForAddedNewProperty = ! 1 , isProxySupported = "function" == typeof Proxy , shouldBeReleasedProperties = [ "dispatchConfig" , "_targetInst" , "nativeEvent" , "isDefaultPrevented" , "isPropagationStopped" , "_dispatchListeners" , "_dispatchInstances" ] , EventInterface = {
type : null ,
target : null ,
currentTarget : emptyFunction . thatReturnsNull ,
eventPhase : null ,
bubbles : null ,
cancelable : null ,
timeStamp : function ( event ) {
return event . timeStamp || Date . now ( ) ;
} ,
defaultPrevented : null ,
isTrusted : null
} ;
function SyntheticEvent ( dispatchConfig , targetInst , nativeEvent , nativeEventTarget ) {
2017-06-09 02:01:23 +00:00
delete this . nativeEvent , delete this . preventDefault , delete this . stopPropagation ,
2017-05-26 17:51:06 +00:00
this . dispatchConfig = dispatchConfig , this . _targetInst = targetInst , this . nativeEvent = nativeEvent ;
var Interface = this . constructor . Interface ;
for ( var propName in Interface ) if ( Interface . hasOwnProperty ( propName ) ) {
delete this [ propName ] ;
var normalize = Interface [ propName ] ;
normalize ? this [ propName ] = normalize ( nativeEvent ) : "target" === propName ? this . target = nativeEventTarget : this [ propName ] = nativeEvent [ propName ] ;
}
var defaultPrevented = null != nativeEvent . defaultPrevented ? nativeEvent . defaultPrevented : ! 1 === nativeEvent . returnValue ;
2017-06-09 02:01:23 +00:00
return this . isDefaultPrevented = defaultPrevented ? emptyFunction . thatReturnsTrue : emptyFunction . thatReturnsFalse ,
2017-05-26 17:51:06 +00:00
this . isPropagationStopped = emptyFunction . thatReturnsFalse , this ;
}
Object . assign ( SyntheticEvent . prototype , {
preventDefault : function ( ) {
this . defaultPrevented = ! 0 ;
var event = this . nativeEvent ;
2017-06-09 02:01:23 +00:00
event && ( event . preventDefault ? event . preventDefault ( ) : "unknown" != typeof event . returnValue && ( event . returnValue = ! 1 ) ,
2017-05-26 17:51:06 +00:00
this . isDefaultPrevented = emptyFunction . thatReturnsTrue ) ;
} ,
stopPropagation : function ( ) {
var event = this . nativeEvent ;
2017-06-09 02:01:23 +00:00
event && ( event . stopPropagation ? event . stopPropagation ( ) : "unknown" != typeof event . cancelBubble && ( event . cancelBubble = ! 0 ) ,
2017-05-26 17:51:06 +00:00
this . isPropagationStopped = emptyFunction . thatReturnsTrue ) ;
} ,
persist : function ( ) {
this . isPersistent = emptyFunction . thatReturnsTrue ;
} ,
isPersistent : emptyFunction . thatReturnsFalse ,
destructor : function ( ) {
var Interface = this . constructor . Interface ;
for ( var propName in Interface ) Object . defineProperty ( this , propName , getPooledWarningPropertyDefinition ( propName , Interface [ propName ] ) ) ;
for ( var i = 0 ; i < shouldBeReleasedProperties . length ; i ++ ) this [ shouldBeReleasedProperties [ i ] ] = null ;
2017-06-09 02:01:23 +00:00
Object . defineProperty ( this , "nativeEvent" , getPooledWarningPropertyDefinition ( "nativeEvent" , null ) ) ,
Object . defineProperty ( this , "preventDefault" , getPooledWarningPropertyDefinition ( "preventDefault" , emptyFunction ) ) ,
2017-05-26 17:51:06 +00:00
Object . defineProperty ( this , "stopPropagation" , getPooledWarningPropertyDefinition ( "stopPropagation" , emptyFunction ) ) ;
}
} ) , SyntheticEvent . Interface = EventInterface , isProxySupported && ( SyntheticEvent = new Proxy ( SyntheticEvent , {
construct : function ( target , args ) {
return this . apply ( target , Object . create ( target . prototype ) , args ) ;
} ,
apply : function ( constructor , that , args ) {
return new Proxy ( constructor . apply ( that , args ) , {
set : function ( target , prop , value ) {
2017-06-09 02:01:23 +00:00
return "isPersistent" === prop || target . constructor . Interface . hasOwnProperty ( prop ) || - 1 !== shouldBeReleasedProperties . indexOf ( prop ) || ( warning ( didWarnForAddedNewProperty || target . isPersistent ( ) , "This synthetic event is reused for performance reasons. If you're " + "seeing this, you're adding a new property in the synthetic event object. " + "The property is never released. See " + "https://fb.me/react-event-pooling for more information." ) ,
2017-05-26 17:51:06 +00:00
didWarnForAddedNewProperty = ! 0 ) , target [ prop ] = value , ! 0 ;
}
} ) ;
}
} ) ) , SyntheticEvent . augmentClass = function ( Class , Interface ) {
var Super = this , E = function ( ) { } ;
E . prototype = Super . prototype ;
var prototype = new E ( ) ;
2017-06-09 02:01:23 +00:00
Object . assign ( prototype , Class . prototype ) , Class . prototype = prototype , Class . prototype . constructor = Class ,
Class . Interface = Object . assign ( { } , Super . Interface , Interface ) , Class . augmentClass = Super . augmentClass ,
2017-05-26 17:51:06 +00:00
PooledClass _1 . addPoolingTo ( Class , PooledClass _1 . fourArgumentPooler ) ;
} , PooledClass _1 . addPoolingTo ( SyntheticEvent , PooledClass _1 . fourArgumentPooler ) ;
var SyntheticEvent _1 = SyntheticEvent ;
function getPooledWarningPropertyDefinition ( propName , getVal ) {
var isFunction = "function" == typeof getVal ;
return {
configurable : ! 0 ,
set : set ,
get : get
} ;
function set ( val ) {
2017-06-09 02:01:23 +00:00
return warn ( isFunction ? "setting the method" : "setting the property" , "This is effectively a no-op" ) ,
2017-05-26 17:51:06 +00:00
val ;
}
function get ( ) {
2017-06-09 02:01:23 +00:00
return warn ( isFunction ? "accessing the method" : "accessing the property" , isFunction ? "This is a no-op function" : "This is set to null" ) ,
2017-05-26 17:51:06 +00:00
getVal ;
}
function warn ( action , result ) {
warning ( ! 1 , "This synthetic event is reused for performance reasons. If you're seeing this, " + "you're %s `%s` on a released/nullified synthetic event. %s. " + "If you must keep the original synthetic event around, use event.persist(). " + "See https://fb.me/react-event-pooling for more information." , action , propName , result ) ;
}
}
var _extends = Object . assign || function ( target ) {
for ( var i = 1 ; i < arguments . length ; i ++ ) {
var source = arguments [ i ] ;
for ( var key in source ) Object . prototype . hasOwnProperty . call ( source , key ) && ( target [ key ] = source [ key ] ) ;
}
return target ;
} , customBubblingEventTypes = UIManager . customBubblingEventTypes , customDirectEventTypes = UIManager . customDirectEventTypes , allTypesByEventName = { } ;
for ( var bubblingTypeName in customBubblingEventTypes ) allTypesByEventName [ bubblingTypeName ] = customBubblingEventTypes [ bubblingTypeName ] ;
2017-06-09 02:01:23 +00:00
for ( var directTypeName in customDirectEventTypes ) warning ( ! customBubblingEventTypes [ directTypeName ] , "Event cannot be both direct and bubbling: %s" , directTypeName ) ,
2017-05-26 17:51:06 +00:00
allTypesByEventName [ directTypeName ] = customDirectEventTypes [ directTypeName ] ;
var ReactNativeBridgeEventPlugin = {
eventTypes : _extends ( { } , customBubblingEventTypes , customDirectEventTypes ) ,
extractEvents : function ( topLevelType , targetInst , nativeEvent , nativeEventTarget ) {
var bubbleDispatchConfig = customBubblingEventTypes [ topLevelType ] , directDispatchConfig = customDirectEventTypes [ topLevelType ] , event = SyntheticEvent _1 . getPooled ( bubbleDispatchConfig || directDispatchConfig , targetInst , nativeEvent , nativeEventTarget ) ;
if ( bubbleDispatchConfig ) EventPropagators _1 . accumulateTwoPhaseDispatches ( event ) ; else {
if ( ! directDispatchConfig ) return null ;
EventPropagators _1 . accumulateDirectDispatches ( event ) ;
}
return event ;
}
} , ReactNativeBridgeEventPlugin _1 = ReactNativeBridgeEventPlugin , instanceCache = { } , instanceProps = { } ;
function getRenderedHostOrTextFromComponent ( component ) {
for ( var rendered ; rendered = component . _renderedComponent ; ) component = rendered ;
return component ;
}
function precacheNode ( inst , tag ) {
var nativeInst = getRenderedHostOrTextFromComponent ( inst ) ;
instanceCache [ tag ] = nativeInst ;
}
function precacheFiberNode ( hostInst , tag ) {
instanceCache [ tag ] = hostInst ;
}
function uncacheNode ( inst ) {
var tag = inst . _rootNodeID ;
tag && delete instanceCache [ tag ] ;
}
function uncacheFiberNode ( tag ) {
delete instanceCache [ tag ] , delete instanceProps [ tag ] ;
}
function getInstanceFromTag ( tag ) {
return instanceCache [ tag ] || null ;
}
function getTagFromInstance ( inst ) {
var tag = "number" != typeof inst . tag ? inst . _rootNodeID : inst . stateNode . _nativeTag ;
return invariant ( tag , "All native instances should have a tag." ) , tag ;
}
function getFiberCurrentPropsFromNode ( stateNode ) {
return instanceProps [ stateNode . _nativeTag ] || null ;
}
function updateFiberProps ( tag , props ) {
instanceProps [ tag ] = props ;
}
var ReactNativeComponentTree = {
getClosestInstanceFromNode : getInstanceFromTag ,
getInstanceFromNode : getInstanceFromTag ,
getNodeFromInstance : getTagFromInstance ,
precacheFiberNode : precacheFiberNode ,
precacheNode : precacheNode ,
uncacheFiberNode : uncacheFiberNode ,
uncacheNode : uncacheNode ,
getFiberCurrentPropsFromNode : getFiberCurrentPropsFromNode ,
updateFiberProps : updateFiberProps
} , ReactNativeComponentTree _1 = ReactNativeComponentTree ;
function runEventQueueInBatch ( events ) {
EventPluginHub _1 . enqueueEvents ( events ) , EventPluginHub _1 . processEventQueue ( ! 1 ) ;
}
var ReactEventEmitterMixin = {
handleTopLevel : function ( topLevelType , targetInst , nativeEvent , nativeEventTarget ) {
runEventQueueInBatch ( EventPluginHub _1 . extractEvents ( topLevelType , targetInst , nativeEvent , nativeEventTarget ) ) ;
}
} , ReactEventEmitterMixin _1 = ReactEventEmitterMixin , INITIAL _TAG _COUNT = 1 , ReactNativeTagHandles = {
tagsStartAt : INITIAL _TAG _COUNT ,
tagCount : INITIAL _TAG _COUNT ,
allocateTag : function ( ) {
for ( ; this . reactTagIsNativeTopRootID ( ReactNativeTagHandles . tagCount ) ; ) ReactNativeTagHandles . tagCount ++ ;
var tag = ReactNativeTagHandles . tagCount ;
return ReactNativeTagHandles . tagCount ++ , tag ;
} ,
assertRootTag : function ( tag ) {
invariant ( this . reactTagIsNativeTopRootID ( tag ) , "Expect a native root tag, instead got %s" , tag ) ;
} ,
reactTagIsNativeTopRootID : function ( reactTag ) {
return reactTag % 10 == 1 ;
}
} , ReactNativeTagHandles _1 = ReactNativeTagHandles , _extends$1 = Object . assign || function ( target ) {
for ( var i = 1 ; i < arguments . length ; i ++ ) {
var source = arguments [ i ] ;
for ( var key in source ) Object . prototype . hasOwnProperty . call ( source , key ) && ( target [ key ] = source [ key ] ) ;
}
return target ;
} , EMPTY _NATIVE _EVENT = { } , touchSubsequence = function ( touches , indices ) {
for ( var ret = [ ] , i = 0 ; i < indices . length ; i ++ ) ret . push ( touches [ indices [ i ] ] ) ;
return ret ;
} , removeTouchesAtIndices = function ( touches , indices ) {
for ( var rippedOut = [ ] , temp = touches , i = 0 ; i < indices . length ; i ++ ) {
var index = indices [ i ] ;
rippedOut . push ( touches [ index ] ) , temp [ index ] = null ;
}
for ( var fillAt = 0 , j = 0 ; j < temp . length ; j ++ ) {
var cur = temp [ j ] ;
null !== cur && ( temp [ fillAt ++ ] = cur ) ;
}
return temp . length = fillAt , rippedOut ;
} , ReactNativeEventEmitter = _extends$1 ( { } , ReactEventEmitterMixin _1 , {
registrationNames : EventPluginRegistry _1 . registrationNameModules ,
getListener : EventPluginHub _1 . getListener ,
_receiveRootNodeIDEvent : function ( rootNodeID , topLevelType , nativeEventParam ) {
var nativeEvent = nativeEventParam || EMPTY _NATIVE _EVENT , inst = ReactNativeComponentTree _1 . getInstanceFromNode ( rootNodeID ) ;
ReactGenericBatching _1 . batchedUpdates ( function ( ) {
ReactNativeEventEmitter . handleTopLevel ( topLevelType , inst , nativeEvent , nativeEvent . target ) ;
} ) ;
} ,
receiveEvent : function ( tag , topLevelType , nativeEventParam ) {
var rootNodeID = tag ;
ReactNativeEventEmitter . _receiveRootNodeIDEvent ( rootNodeID , topLevelType , nativeEventParam ) ;
} ,
receiveTouches : function ( eventTopLevelType , touches , changedIndices ) {
for ( var changedTouches = "topTouchEnd" === eventTopLevelType || "topTouchCancel" === eventTopLevelType ? removeTouchesAtIndices ( touches , changedIndices ) : touchSubsequence ( touches , changedIndices ) , jj = 0 ; jj < changedTouches . length ; jj ++ ) {
var touch = changedTouches [ jj ] ;
touch . changedTouches = changedTouches , touch . touches = touches ;
var nativeEvent = touch , rootNodeID = null , target = nativeEvent . target ;
2017-06-09 02:01:23 +00:00
null !== target && void 0 !== target && ( target < ReactNativeTagHandles _1 . tagsStartAt ? warning ( ! 1 , "A view is reporting that a touch occurred on tag zero." ) : rootNodeID = target ) ,
2017-05-26 17:51:06 +00:00
ReactNativeEventEmitter . _receiveRootNodeIDEvent ( rootNodeID , eventTopLevelType , nativeEvent ) ;
}
}
} ) , ReactNativeEventEmitter _1 = ReactNativeEventEmitter , ReactNativeEventPluginOrder = [ "ResponderEventPlugin" , "ReactNativeBridgeEventPlugin" ] , ReactNativeEventPluginOrder _1 = ReactNativeEventPluginOrder , ReactNativeGlobalResponderHandler = {
onChange : function ( from , to , blockNativeResponder ) {
if ( null !== to ) {
var tag = "number" != typeof to . tag ? to . _rootNodeID : to . stateNode . _nativeTag ;
UIManager . setJSResponder ( tag , blockNativeResponder ) ;
} else UIManager . clearJSResponder ( ) ;
}
} , ReactNativeGlobalResponderHandler _1 = ReactNativeGlobalResponderHandler , ResponderEventInterface = {
touchHistory : function ( nativeEvent ) {
return null ;
}
} ;
function ResponderSyntheticEvent ( dispatchConfig , dispatchMarker , nativeEvent , nativeEventTarget ) {
return SyntheticEvent _1 . call ( this , dispatchConfig , dispatchMarker , nativeEvent , nativeEventTarget ) ;
}
SyntheticEvent _1 . augmentClass ( ResponderSyntheticEvent , ResponderEventInterface ) ;
var ResponderSyntheticEvent _1 = ResponderSyntheticEvent , isEndish$2 = EventPluginUtils _1 . isEndish , isMoveish$2 = EventPluginUtils _1 . isMoveish , isStartish$2 = EventPluginUtils _1 . isStartish , MAX _TOUCH _BANK = 20 , touchBank = [ ] , touchHistory = {
touchBank : touchBank ,
numberActiveTouches : 0 ,
indexOfSingleActiveTouch : - 1 ,
mostRecentTimeStamp : 0
} ;
function timestampForTouch ( touch ) {
return touch . timeStamp || touch . timestamp ;
}
function createTouchRecord ( touch ) {
return {
touchActive : ! 0 ,
startPageX : touch . pageX ,
startPageY : touch . pageY ,
startTimeStamp : timestampForTouch ( touch ) ,
currentPageX : touch . pageX ,
currentPageY : touch . pageY ,
currentTimeStamp : timestampForTouch ( touch ) ,
previousPageX : touch . pageX ,
previousPageY : touch . pageY ,
previousTimeStamp : timestampForTouch ( touch )
} ;
}
function resetTouchRecord ( touchRecord , touch ) {
2017-06-09 02:01:23 +00:00
touchRecord . touchActive = ! 0 , touchRecord . startPageX = touch . pageX , touchRecord . startPageY = touch . pageY ,
touchRecord . startTimeStamp = timestampForTouch ( touch ) , touchRecord . currentPageX = touch . pageX ,
touchRecord . currentPageY = touch . pageY , touchRecord . currentTimeStamp = timestampForTouch ( touch ) ,
touchRecord . previousPageX = touch . pageX , touchRecord . previousPageY = touch . pageY ,
2017-05-26 17:51:06 +00:00
touchRecord . previousTimeStamp = timestampForTouch ( touch ) ;
}
function getTouchIdentifier ( _ref ) {
var identifier = _ref . identifier ;
2017-06-09 02:01:23 +00:00
return invariant ( null != identifier , "Touch object is missing identifier." ) , warning ( identifier <= MAX _TOUCH _BANK , "Touch identifier %s is greater than maximum supported %s which causes " + "performance issues backfilling array locations for all of the indices." , identifier , MAX _TOUCH _BANK ) ,
2017-05-26 17:51:06 +00:00
identifier ;
}
function recordTouchStart ( touch ) {
var identifier = getTouchIdentifier ( touch ) , touchRecord = touchBank [ identifier ] ;
2017-06-09 02:01:23 +00:00
touchRecord ? resetTouchRecord ( touchRecord , touch ) : touchBank [ identifier ] = createTouchRecord ( touch ) ,
2017-05-26 17:51:06 +00:00
touchHistory . mostRecentTimeStamp = timestampForTouch ( touch ) ;
}
function recordTouchMove ( touch ) {
var touchRecord = touchBank [ getTouchIdentifier ( touch ) ] ;
2017-06-09 02:01:23 +00:00
touchRecord ? ( touchRecord . touchActive = ! 0 , touchRecord . previousPageX = touchRecord . currentPageX ,
touchRecord . previousPageY = touchRecord . currentPageY , touchRecord . previousTimeStamp = touchRecord . currentTimeStamp ,
touchRecord . currentPageX = touch . pageX , touchRecord . currentPageY = touch . pageY ,
2017-05-26 17:51:06 +00:00
touchRecord . currentTimeStamp = timestampForTouch ( touch ) , touchHistory . mostRecentTimeStamp = timestampForTouch ( touch ) ) : console . error ( "Cannot record touch move without a touch start.\n" + "Touch Move: %s\n" , "Touch Bank: %s" , printTouch ( touch ) , printTouchBank ( ) ) ;
}
function recordTouchEnd ( touch ) {
var touchRecord = touchBank [ getTouchIdentifier ( touch ) ] ;
2017-06-09 02:01:23 +00:00
touchRecord ? ( touchRecord . touchActive = ! 1 , touchRecord . previousPageX = touchRecord . currentPageX ,
touchRecord . previousPageY = touchRecord . currentPageY , touchRecord . previousTimeStamp = touchRecord . currentTimeStamp ,
touchRecord . currentPageX = touch . pageX , touchRecord . currentPageY = touch . pageY ,
2017-05-26 17:51:06 +00:00
touchRecord . currentTimeStamp = timestampForTouch ( touch ) , touchHistory . mostRecentTimeStamp = timestampForTouch ( touch ) ) : console . error ( "Cannot record touch end without a touch start.\n" + "Touch End: %s\n" , "Touch Bank: %s" , printTouch ( touch ) , printTouchBank ( ) ) ;
}
function printTouch ( touch ) {
return JSON . stringify ( {
identifier : touch . identifier ,
pageX : touch . pageX ,
pageY : touch . pageY ,
timestamp : timestampForTouch ( touch )
} ) ;
}
function printTouchBank ( ) {
var printed = JSON . stringify ( touchBank . slice ( 0 , MAX _TOUCH _BANK ) ) ;
2017-06-09 02:01:23 +00:00
return touchBank . length > MAX _TOUCH _BANK && ( printed += " (original size: " + touchBank . length + ")" ) ,
2017-05-26 17:51:06 +00:00
printed ;
}
var ResponderTouchHistoryStore = {
recordTouchTrack : function ( topLevelType , nativeEvent ) {
2017-06-09 02:01:23 +00:00
if ( isMoveish$2 ( topLevelType ) ) nativeEvent . changedTouches . forEach ( recordTouchMove ) ; else if ( isStartish$2 ( topLevelType ) ) nativeEvent . changedTouches . forEach ( recordTouchStart ) ,
touchHistory . numberActiveTouches = nativeEvent . touches . length , 1 === touchHistory . numberActiveTouches && ( touchHistory . indexOfSingleActiveTouch = nativeEvent . touches [ 0 ] . identifier ) ; else if ( isEndish$2 ( topLevelType ) && ( nativeEvent . changedTouches . forEach ( recordTouchEnd ) ,
2017-05-26 17:51:06 +00:00
touchHistory . numberActiveTouches = nativeEvent . touches . length , 1 === touchHistory . numberActiveTouches ) ) {
for ( var i = 0 ; i < touchBank . length ; i ++ ) {
var touchTrackToCheck = touchBank [ i ] ;
if ( null != touchTrackToCheck && touchTrackToCheck . touchActive ) {
touchHistory . indexOfSingleActiveTouch = i ;
break ;
}
}
var activeRecord = touchBank [ touchHistory . indexOfSingleActiveTouch ] ;
warning ( null != activeRecord && activeRecord . touchActive , "Cannot find single active touch." ) ;
}
} ,
touchHistory : touchHistory
} , ResponderTouchHistoryStore _1 = ResponderTouchHistoryStore ;
function accumulate ( current , next ) {
2017-06-09 02:01:23 +00:00
return invariant ( null != next , "accumulate(...): Accumulated items must be not be null or undefined." ) ,
2017-05-26 17:51:06 +00:00
null == current ? next : Array . isArray ( current ) ? current . concat ( next ) : Array . isArray ( next ) ? [ current ] . concat ( next ) : [ current , next ] ;
}
var accumulate _1 = accumulate , isStartish$1 = EventPluginUtils _1 . isStartish , isMoveish$1 = EventPluginUtils _1 . isMoveish , isEndish$1 = EventPluginUtils _1 . isEndish , executeDirectDispatch$1 = EventPluginUtils _1 . executeDirectDispatch , hasDispatches$1 = EventPluginUtils _1 . hasDispatches , executeDispatchesInOrderStopAtTrue$1 = EventPluginUtils _1 . executeDispatchesInOrderStopAtTrue , responderInst = null , trackedTouchCount = 0 , previousActiveTouches = 0 , changeResponder = function ( nextResponderInst , blockHostResponder ) {
var oldResponderInst = responderInst ;
responderInst = nextResponderInst , null !== ResponderEventPlugin . GlobalResponderHandler && ResponderEventPlugin . GlobalResponderHandler . onChange ( oldResponderInst , nextResponderInst , blockHostResponder ) ;
} , eventTypes = {
startShouldSetResponder : {
phasedRegistrationNames : {
bubbled : "onStartShouldSetResponder" ,
captured : "onStartShouldSetResponderCapture"
}
} ,
scrollShouldSetResponder : {
phasedRegistrationNames : {
bubbled : "onScrollShouldSetResponder" ,
captured : "onScrollShouldSetResponderCapture"
}
} ,
selectionChangeShouldSetResponder : {
phasedRegistrationNames : {
bubbled : "onSelectionChangeShouldSetResponder" ,
captured : "onSelectionChangeShouldSetResponderCapture"
}
} ,
moveShouldSetResponder : {
phasedRegistrationNames : {
bubbled : "onMoveShouldSetResponder" ,
captured : "onMoveShouldSetResponderCapture"
}
} ,
responderStart : {
registrationName : "onResponderStart"
} ,
responderMove : {
registrationName : "onResponderMove"
} ,
responderEnd : {
registrationName : "onResponderEnd"
} ,
responderRelease : {
registrationName : "onResponderRelease"
} ,
responderTerminationRequest : {
registrationName : "onResponderTerminationRequest"
} ,
responderGrant : {
registrationName : "onResponderGrant"
} ,
responderReject : {
registrationName : "onResponderReject"
} ,
responderTerminate : {
registrationName : "onResponderTerminate"
}
} ;
function setResponderAndExtractTransfer ( topLevelType , targetInst , nativeEvent , nativeEventTarget ) {
var shouldSetEventType = isStartish$1 ( topLevelType ) ? eventTypes . startShouldSetResponder : isMoveish$1 ( topLevelType ) ? eventTypes . moveShouldSetResponder : "topSelectionChange" === topLevelType ? eventTypes . selectionChangeShouldSetResponder : eventTypes . scrollShouldSetResponder , bubbleShouldSetFrom = responderInst ? ReactTreeTraversal . getLowestCommonAncestor ( responderInst , targetInst ) : targetInst , skipOverBubbleShouldSetFrom = bubbleShouldSetFrom === responderInst , shouldSetEvent = ResponderSyntheticEvent _1 . getPooled ( shouldSetEventType , bubbleShouldSetFrom , nativeEvent , nativeEventTarget ) ;
shouldSetEvent . touchHistory = ResponderTouchHistoryStore _1 . touchHistory , skipOverBubbleShouldSetFrom ? EventPropagators _1 . accumulateTwoPhaseDispatchesSkipTarget ( shouldSetEvent ) : EventPropagators _1 . accumulateTwoPhaseDispatches ( shouldSetEvent ) ;
var wantsResponderInst = executeDispatchesInOrderStopAtTrue$1 ( shouldSetEvent ) ;
2017-06-09 02:01:23 +00:00
if ( shouldSetEvent . isPersistent ( ) || shouldSetEvent . constructor . release ( shouldSetEvent ) ,
2017-05-26 17:51:06 +00:00
! wantsResponderInst || wantsResponderInst === responderInst ) return null ;
var extracted , grantEvent = ResponderSyntheticEvent _1 . getPooled ( eventTypes . responderGrant , wantsResponderInst , nativeEvent , nativeEventTarget ) ;
grantEvent . touchHistory = ResponderTouchHistoryStore _1 . touchHistory , EventPropagators _1 . accumulateDirectDispatches ( grantEvent ) ;
var blockHostResponder = ! 0 === executeDirectDispatch$1 ( grantEvent ) ;
if ( responderInst ) {
var terminationRequestEvent = ResponderSyntheticEvent _1 . getPooled ( eventTypes . responderTerminationRequest , responderInst , nativeEvent , nativeEventTarget ) ;
2017-06-09 02:01:23 +00:00
terminationRequestEvent . touchHistory = ResponderTouchHistoryStore _1 . touchHistory ,
2017-05-26 17:51:06 +00:00
EventPropagators _1 . accumulateDirectDispatches ( terminationRequestEvent ) ;
var shouldSwitch = ! hasDispatches$1 ( terminationRequestEvent ) || executeDirectDispatch$1 ( terminationRequestEvent ) ;
2017-06-09 02:01:23 +00:00
if ( terminationRequestEvent . isPersistent ( ) || terminationRequestEvent . constructor . release ( terminationRequestEvent ) ,
2017-05-26 17:51:06 +00:00
shouldSwitch ) {
var terminateEvent = ResponderSyntheticEvent _1 . getPooled ( eventTypes . responderTerminate , responderInst , nativeEvent , nativeEventTarget ) ;
2017-06-09 02:01:23 +00:00
terminateEvent . touchHistory = ResponderTouchHistoryStore _1 . touchHistory , EventPropagators _1 . accumulateDirectDispatches ( terminateEvent ) ,
2017-05-26 17:51:06 +00:00
extracted = accumulate _1 ( extracted , [ grantEvent , terminateEvent ] ) , changeResponder ( wantsResponderInst , blockHostResponder ) ;
} else {
var rejectEvent = ResponderSyntheticEvent _1 . getPooled ( eventTypes . responderReject , wantsResponderInst , nativeEvent , nativeEventTarget ) ;
2017-06-09 02:01:23 +00:00
rejectEvent . touchHistory = ResponderTouchHistoryStore _1 . touchHistory , EventPropagators _1 . accumulateDirectDispatches ( rejectEvent ) ,
2017-05-26 17:51:06 +00:00
extracted = accumulate _1 ( extracted , rejectEvent ) ;
}
} else extracted = accumulate _1 ( extracted , grantEvent ) , changeResponder ( wantsResponderInst , blockHostResponder ) ;
return extracted ;
}
function canTriggerTransfer ( topLevelType , topLevelInst , nativeEvent ) {
return topLevelInst && ( "topScroll" === topLevelType && ! nativeEvent . responderIgnoreScroll || trackedTouchCount > 0 && "topSelectionChange" === topLevelType || isStartish$1 ( topLevelType ) || isMoveish$1 ( topLevelType ) ) ;
}
function noResponderTouches ( nativeEvent ) {
var touches = nativeEvent . touches ;
if ( ! touches || 0 === touches . length ) return ! 0 ;
for ( var i = 0 ; i < touches . length ; i ++ ) {
var activeTouch = touches [ i ] , target = activeTouch . target ;
if ( null !== target && void 0 !== target && 0 !== target ) {
var targetInst = EventPluginUtils _1 . getInstanceFromNode ( target ) ;
if ( ReactTreeTraversal . isAncestor ( responderInst , targetInst ) ) return ! 1 ;
}
}
return ! 0 ;
}
var ResponderEventPlugin = {
_getResponder : function ( ) {
return responderInst ;
} ,
eventTypes : eventTypes ,
extractEvents : function ( topLevelType , targetInst , nativeEvent , nativeEventTarget ) {
if ( isStartish$1 ( topLevelType ) ) trackedTouchCount += 1 ; else if ( isEndish$1 ( topLevelType ) ) {
2017-06-09 02:01:23 +00:00
if ( ! ( trackedTouchCount >= 0 ) ) return console . error ( "Ended a touch event which was not counted in `trackedTouchCount`." ) ,
2017-05-26 17:51:06 +00:00
null ;
trackedTouchCount -= 1 ;
}
ResponderTouchHistoryStore _1 . recordTouchTrack ( topLevelType , nativeEvent ) ;
var extracted = canTriggerTransfer ( topLevelType , targetInst , nativeEvent ) ? setResponderAndExtractTransfer ( topLevelType , targetInst , nativeEvent , nativeEventTarget ) : null , isResponderTouchStart = responderInst && isStartish$1 ( topLevelType ) , isResponderTouchMove = responderInst && isMoveish$1 ( topLevelType ) , isResponderTouchEnd = responderInst && isEndish$1 ( topLevelType ) , incrementalTouch = isResponderTouchStart ? eventTypes . responderStart : isResponderTouchMove ? eventTypes . responderMove : isResponderTouchEnd ? eventTypes . responderEnd : null ;
if ( incrementalTouch ) {
var gesture = ResponderSyntheticEvent _1 . getPooled ( incrementalTouch , responderInst , nativeEvent , nativeEventTarget ) ;
2017-06-09 02:01:23 +00:00
gesture . touchHistory = ResponderTouchHistoryStore _1 . touchHistory , EventPropagators _1 . accumulateDirectDispatches ( gesture ) ,
2017-05-26 17:51:06 +00:00
extracted = accumulate _1 ( extracted , gesture ) ;
}
var isResponderTerminate = responderInst && "topTouchCancel" === topLevelType , isResponderRelease = responderInst && ! isResponderTerminate && isEndish$1 ( topLevelType ) && noResponderTouches ( nativeEvent ) , finalTouch = isResponderTerminate ? eventTypes . responderTerminate : isResponderRelease ? eventTypes . responderRelease : null ;
if ( finalTouch ) {
var finalEvent = ResponderSyntheticEvent _1 . getPooled ( finalTouch , responderInst , nativeEvent , nativeEventTarget ) ;
2017-06-09 02:01:23 +00:00
finalEvent . touchHistory = ResponderTouchHistoryStore _1 . touchHistory , EventPropagators _1 . accumulateDirectDispatches ( finalEvent ) ,
2017-05-26 17:51:06 +00:00
extracted = accumulate _1 ( extracted , finalEvent ) , changeResponder ( null ) ;
}
var numberActiveTouches = ResponderTouchHistoryStore _1 . touchHistory . numberActiveTouches ;
2017-06-09 02:01:23 +00:00
return ResponderEventPlugin . GlobalInteractionHandler && numberActiveTouches !== previousActiveTouches && ResponderEventPlugin . GlobalInteractionHandler . onChange ( numberActiveTouches ) ,
2017-05-26 17:51:06 +00:00
previousActiveTouches = numberActiveTouches , extracted ;
} ,
GlobalResponderHandler : null ,
GlobalInteractionHandler : null ,
injection : {
injectGlobalResponderHandler : function ( GlobalResponderHandler ) {
ResponderEventPlugin . GlobalResponderHandler = GlobalResponderHandler ;
} ,
injectGlobalInteractionHandler : function ( GlobalInteractionHandler ) {
ResponderEventPlugin . GlobalInteractionHandler = GlobalInteractionHandler ;
}
}
} , ResponderEventPlugin _1 = ResponderEventPlugin ;
function inject ( ) {
2017-06-09 02:01:23 +00:00
RCTEventEmitter . register ( ReactNativeEventEmitter _1 ) , EventPluginHub _1 . injection . injectEventPluginOrder ( ReactNativeEventPluginOrder _1 ) ,
EventPluginUtils _1 . injection . injectComponentTree ( ReactNativeComponentTree _1 ) , ResponderEventPlugin _1 . injection . injectGlobalResponderHandler ( ReactNativeGlobalResponderHandler _1 ) ,
2017-05-26 17:51:06 +00:00
EventPluginHub _1 . injection . injectEventPluginsByName ( {
ResponderEventPlugin : ResponderEventPlugin _1 ,
ReactNativeBridgeEventPlugin : ReactNativeBridgeEventPlugin _1
} ) ;
}
var ReactNativeInjection = {
inject : inject
} , REACT _PORTAL _TYPE = "function" == typeof Symbol && Symbol . for && Symbol . for ( "react.portal" ) || 60106 , createPortal = function ( children , containerInfo , implementation ) {
var key = arguments . length > 3 && void 0 !== arguments [ 3 ] ? arguments [ 3 ] : null ;
return {
$$typeof : REACT _PORTAL _TYPE ,
key : null == key ? null : "" + key ,
children : children ,
containerInfo : containerInfo ,
implementation : implementation
} ;
} , isPortal = function ( object ) {
return "object" == typeof object && null !== object && object . $$typeof === REACT _PORTAL _TYPE ;
} , REACT _PORTAL _TYPE _1 = REACT _PORTAL _TYPE , ReactPortal = {
createPortal : createPortal ,
isPortal : isPortal ,
REACT _PORTAL _TYPE : REACT _PORTAL _TYPE _1
} , commonjsGlobal = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : { } , ReactFeatureFlags = {
disableNewFiberFeatures : ! 1 ,
enableAsyncSubtreeAPI : ! 1
} , ReactFeatureFlags _1 = ReactFeatureFlags , ReactTypeOfSideEffect = {
NoEffect : 0 ,
2017-06-09 02:01:23 +00:00
PerformedWork : 1 ,
Placement : 2 ,
Update : 4 ,
PlacementAndUpdate : 6 ,
Deletion : 8 ,
ContentReset : 16 ,
Callback : 32 ,
Err : 64 ,
Ref : 128
2017-05-26 17:51:06 +00:00
} , ReactPriorityLevel = {
NoWork : 0 ,
SynchronousPriority : 1 ,
TaskPriority : 2 ,
AnimationPriority : 3 ,
HighPriority : 4 ,
LowPriority : 5 ,
OffscreenPriority : 6
} , CallbackEffect = ReactTypeOfSideEffect . Callback , NoWork = ReactPriorityLevel . NoWork , SynchronousPriority = ReactPriorityLevel . SynchronousPriority , TaskPriority = ReactPriorityLevel . TaskPriority , warning$3 = warning ;
function comparePriority ( a , b ) {
return a !== TaskPriority && a !== SynchronousPriority || b !== TaskPriority && b !== SynchronousPriority ? a === NoWork && b !== NoWork ? - 255 : a !== NoWork && b === NoWork ? 255 : a - b : 0 ;
}
function ensureUpdateQueue ( fiber ) {
if ( null !== fiber . updateQueue ) return fiber . updateQueue ;
var queue = void 0 ;
return queue = {
first : null ,
last : null ,
hasForceUpdate : ! 1 ,
callbackList : null ,
isProcessing : ! 1
} , fiber . updateQueue = queue , queue ;
}
function cloneUpdateQueue ( current , workInProgress ) {
var currentQueue = current . updateQueue ;
if ( null === currentQueue ) return workInProgress . updateQueue = null , null ;
var altQueue = null !== workInProgress . updateQueue ? workInProgress . updateQueue : { } ;
2017-06-09 02:01:23 +00:00
return altQueue . first = currentQueue . first , altQueue . last = currentQueue . last , altQueue . hasForceUpdate = ! 1 ,
altQueue . callbackList = null , altQueue . isProcessing = ! 1 , workInProgress . updateQueue = altQueue ,
2017-05-26 17:51:06 +00:00
altQueue ;
}
var cloneUpdateQueue _1 = cloneUpdateQueue ;
function cloneUpdate ( update ) {
return {
priorityLevel : update . priorityLevel ,
partialState : update . partialState ,
callback : update . callback ,
isReplace : update . isReplace ,
isForced : update . isForced ,
isTopLevelUnmount : update . isTopLevelUnmount ,
next : null
} ;
}
function insertUpdateIntoQueue ( queue , update , insertAfter , insertBefore ) {
2017-06-09 02:01:23 +00:00
null !== insertAfter ? insertAfter . next = update : ( update . next = queue . first , queue . first = update ) ,
2017-05-26 17:51:06 +00:00
null !== insertBefore ? update . next = insertBefore : queue . last = update ;
}
function findInsertionPosition ( queue , update ) {
var priorityLevel = update . priorityLevel , insertAfter = null , insertBefore = null ;
2017-06-09 02:01:23 +00:00
if ( null !== queue . last && comparePriority ( queue . last . priorityLevel , priorityLevel ) <= 0 ) insertAfter = queue . last ; else for ( insertBefore = queue . first ; null !== insertBefore && comparePriority ( insertBefore . priorityLevel , priorityLevel ) <= 0 ; ) insertAfter = insertBefore ,
2017-05-26 17:51:06 +00:00
insertBefore = insertBefore . next ;
return insertAfter ;
}
function insertUpdate ( fiber , update ) {
var queue1 = ensureUpdateQueue ( fiber ) , queue2 = null !== fiber . alternate ? ensureUpdateQueue ( fiber . alternate ) : null ;
( queue1 . isProcessing || null !== queue2 && queue2 . isProcessing ) && warning$3 ( ! 1 , "An update (setState, replaceState, or forceUpdate) was scheduled " + "from inside an update function. Update functions should be pure, " + "with zero side-effects. Consider using componentDidUpdate or a " + "callback." ) ;
var insertAfter1 = findInsertionPosition ( queue1 , update ) , insertBefore1 = null !== insertAfter1 ? insertAfter1 . next : queue1 . first ;
2017-06-09 02:01:23 +00:00
if ( null === queue2 ) return insertUpdateIntoQueue ( queue1 , update , insertAfter1 , insertBefore1 ) ,
2017-05-26 17:51:06 +00:00
null ;
var insertAfter2 = findInsertionPosition ( queue2 , update ) , insertBefore2 = null !== insertAfter2 ? insertAfter2 . next : queue2 . first ;
if ( insertUpdateIntoQueue ( queue1 , update , insertAfter1 , insertBefore1 ) , insertBefore1 !== insertBefore2 ) {
var update2 = cloneUpdate ( update ) ;
return insertUpdateIntoQueue ( queue2 , update2 , insertAfter2 , insertBefore2 ) , update2 ;
}
2017-06-09 02:01:23 +00:00
return null === insertAfter2 && ( queue2 . first = update ) , null === insertBefore2 && ( queue2 . last = null ) ,
2017-05-26 17:51:06 +00:00
null ;
}
function addUpdate ( fiber , partialState , callback , priorityLevel ) {
insertUpdate ( fiber , {
priorityLevel : priorityLevel ,
partialState : partialState ,
callback : callback ,
isReplace : ! 1 ,
isForced : ! 1 ,
isTopLevelUnmount : ! 1 ,
next : null
} ) ;
}
var addUpdate _1 = addUpdate ;
function addReplaceUpdate ( fiber , state , callback , priorityLevel ) {
insertUpdate ( fiber , {
priorityLevel : priorityLevel ,
partialState : state ,
callback : callback ,
isReplace : ! 0 ,
isForced : ! 1 ,
isTopLevelUnmount : ! 1 ,
next : null
} ) ;
}
var addReplaceUpdate _1 = addReplaceUpdate ;
function addForceUpdate ( fiber , callback , priorityLevel ) {
insertUpdate ( fiber , {
priorityLevel : priorityLevel ,
partialState : null ,
callback : callback ,
isReplace : ! 1 ,
isForced : ! 0 ,
isTopLevelUnmount : ! 1 ,
next : null
} ) ;
}
var addForceUpdate _1 = addForceUpdate ;
function getPendingPriority ( queue ) {
return null !== queue . first ? queue . first . priorityLevel : NoWork ;
}
var getPendingPriority _1 = getPendingPriority ;
function addTopLevelUpdate$1 ( fiber , partialState , callback , priorityLevel ) {
var isTopLevelUnmount = null === partialState . element , update = {
priorityLevel : priorityLevel ,
partialState : partialState ,
callback : callback ,
isReplace : ! 1 ,
isForced : ! 1 ,
isTopLevelUnmount : isTopLevelUnmount ,
next : null
} , update2 = insertUpdate ( fiber , update ) ;
if ( isTopLevelUnmount ) {
var queue1 = fiber . updateQueue , queue2 = null !== fiber . alternate ? fiber . alternate . updateQueue : null ;
2017-06-09 02:01:23 +00:00
null !== queue1 && null !== update . next && ( update . next = null , queue1 . last = update ) ,
null !== queue2 && null !== update2 && null !== update2 . next && ( update2 . next = null ,
2017-05-26 17:51:06 +00:00
queue2 . last = update ) ;
}
}
var addTopLevelUpdate _1 = addTopLevelUpdate$1 ;
function getStateFromUpdate ( update , instance , prevState , props ) {
var partialState = update . partialState ;
if ( "function" == typeof partialState ) {
return partialState . call ( instance , prevState , props ) ;
}
return partialState ;
}
function beginUpdateQueue ( workInProgress , queue , instance , prevState , props , priorityLevel ) {
queue . isProcessing = ! 0 , queue . hasForceUpdate = ! 1 ;
for ( var state = prevState , dontMutatePrevState = ! 0 , callbackList = queue . callbackList , update = queue . first ; null !== update && comparePriority ( update . priorityLevel , priorityLevel ) <= 0 ; ) {
queue . first = update . next , null === queue . first && ( queue . last = null ) ;
var _partialState = void 0 ;
2017-06-09 02:01:23 +00:00
update . isReplace ? ( state = getStateFromUpdate ( update , instance , state , props ) ,
dontMutatePrevState = ! 0 ) : ( _partialState = getStateFromUpdate ( update , instance , state , props ) ) && ( state = dontMutatePrevState ? Object . assign ( { } , state , _partialState ) : Object . assign ( state , _partialState ) ,
dontMutatePrevState = ! 1 ) , update . isForced && ( queue . hasForceUpdate = ! 0 ) , null === update . callback || update . isTopLevelUnmount && null !== update . next || ( callbackList = callbackList || [ ] ,
callbackList . push ( update . callback ) , workInProgress . effectTag |= CallbackEffect ) ,
2017-05-26 17:51:06 +00:00
update = update . next ;
}
2017-06-09 02:01:23 +00:00
return queue . callbackList = callbackList , null !== queue . first || null !== callbackList || queue . hasForceUpdate || ( workInProgress . updateQueue = null ) ,
2017-05-26 17:51:06 +00:00
queue . isProcessing = ! 1 , state ;
}
var beginUpdateQueue _1 = beginUpdateQueue ;
function commitCallbacks ( finishedWork , queue , context ) {
var callbackList = queue . callbackList ;
if ( null !== callbackList ) for ( var i = 0 ; i < callbackList . length ; i ++ ) {
var _callback = callbackList [ i ] ;
2017-06-09 02:01:23 +00:00
invariant ( "function" == typeof _callback , "Invalid argument passed as callback. Expected a function. Instead " + "received: %s" , _callback ) ,
2017-05-26 17:51:06 +00:00
_callback . call ( context ) ;
}
}
var commitCallbacks _1 = commitCallbacks , ReactFiberUpdateQueue = {
cloneUpdateQueue : cloneUpdateQueue _1 ,
addUpdate : addUpdate _1 ,
addReplaceUpdate : addReplaceUpdate _1 ,
addForceUpdate : addForceUpdate _1 ,
getPendingPriority : getPendingPriority _1 ,
addTopLevelUpdate : addTopLevelUpdate _1 ,
beginUpdateQueue : beginUpdateQueue _1 ,
commitCallbacks : commitCallbacks _1
} ;
function getComponentName$1 ( instanceOrFiber ) {
if ( "function" == typeof instanceOrFiber . getName ) {
return instanceOrFiber . getName ( ) ;
}
if ( "number" == typeof instanceOrFiber . tag ) {
var fiber = instanceOrFiber , type = fiber . type ;
if ( "string" == typeof type ) return type ;
if ( "function" == typeof type ) return type . displayName || type . name ;
}
return null ;
}
var getComponentName _1 = getComponentName$1 , ReactInstanceMap = {
remove : function ( key ) {
key . _reactInternalInstance = void 0 ;
} ,
get : function ( key ) {
return key . _reactInternalInstance ;
} ,
has : function ( key ) {
return void 0 !== key . _reactInternalInstance ;
} ,
set : function ( key , value ) {
key . _reactInternalInstance = value ;
}
} , ReactInstanceMap _1 = ReactInstanceMap , ReactInternals = react . _ _SECRET _INTERNALS _DO _NOT _USE _OR _YOU _WILL _BE _FIRED , ReactGlobalSharedState = {
ReactCurrentOwner : ReactInternals . ReactCurrentOwner
} ;
Object . assign ( ReactGlobalSharedState , {
ReactComponentTreeHook : ReactInternals . ReactComponentTreeHook ,
ReactDebugCurrentFrame : ReactInternals . ReactDebugCurrentFrame
} ) ;
2017-06-09 02:01:23 +00:00
var ReactGlobalSharedState _1 = ReactGlobalSharedState , ReactCurrentOwner = ReactGlobalSharedState _1 . ReactCurrentOwner , warning$4 = warning , HostRoot$1 = ReactTypeOfWork . HostRoot , HostComponent$2 = ReactTypeOfWork . HostComponent , HostText = ReactTypeOfWork . HostText , ClassComponent$1 = ReactTypeOfWork . ClassComponent , NoEffect = ReactTypeOfSideEffect . NoEffect , Placement = ReactTypeOfSideEffect . Placement , MOUNTING = 1 , MOUNTED = 2 , UNMOUNTED = 3 ;
2017-05-26 17:51:06 +00:00
function isFiberMountedImpl ( fiber ) {
var node = fiber ;
if ( fiber . alternate ) for ( ; node . return ; ) node = node . return ; else {
if ( ( node . effectTag & Placement ) !== NoEffect ) return MOUNTING ;
for ( ; node . return ; ) if ( node = node . return , ( node . effectTag & Placement ) !== NoEffect ) return MOUNTING ;
}
return node . tag === HostRoot$1 ? MOUNTED : UNMOUNTED ;
}
var isFiberMounted$1 = function ( fiber ) {
return isFiberMountedImpl ( fiber ) === MOUNTED ;
} , isMounted = function ( component ) {
var owner = ReactCurrentOwner . current ;
if ( null !== owner && owner . tag === ClassComponent$1 ) {
var ownerFiber = owner , instance = ownerFiber . stateNode ;
2017-06-09 02:01:23 +00:00
warning$4 ( instance . _warnedAboutRefsInRender , "%s is accessing isMounted inside its render() function. " + "render() should be a pure function of props and state. It should " + "never access something that requires stale data from the previous " + "render, such as refs. Move this logic to componentDidMount and " + "componentDidUpdate instead." , getComponentName _1 ( ownerFiber ) || "A component" ) ,
2017-05-26 17:51:06 +00:00
instance . _warnedAboutRefsInRender = ! 0 ;
}
var fiber = ReactInstanceMap _1 . get ( component ) ;
return ! ! fiber && isFiberMountedImpl ( fiber ) === MOUNTED ;
} ;
function assertIsMounted ( fiber ) {
invariant ( isFiberMountedImpl ( fiber ) === MOUNTED , "Unable to find node on an unmounted component." ) ;
}
function findCurrentFiberUsingSlowPath ( fiber ) {
var alternate = fiber . alternate ;
if ( ! alternate ) {
var state = isFiberMountedImpl ( fiber ) ;
2017-06-09 02:01:23 +00:00
return invariant ( state !== UNMOUNTED , "Unable to find node on an unmounted component." ) ,
2017-05-26 17:51:06 +00:00
state === MOUNTING ? null : fiber ;
}
for ( var a = fiber , b = alternate ; ! 0 ; ) {
var parentA = a . return , parentB = parentA ? parentA . alternate : null ;
if ( ! parentA || ! parentB ) break ;
if ( parentA . child === parentB . child ) {
for ( var child = parentA . child ; child ; ) {
if ( child === a ) return assertIsMounted ( parentA ) , fiber ;
if ( child === b ) return assertIsMounted ( parentA ) , alternate ;
child = child . sibling ;
}
invariant ( ! 1 , "Unable to find node on an unmounted component." ) ;
}
if ( a . return !== b . return ) a = parentA , b = parentB ; else {
for ( var didFindChild = ! 1 , _child = parentA . child ; _child ; ) {
if ( _child === a ) {
didFindChild = ! 0 , a = parentA , b = parentB ;
break ;
}
if ( _child === b ) {
didFindChild = ! 0 , b = parentA , a = parentB ;
break ;
}
_child = _child . sibling ;
}
if ( ! didFindChild ) {
for ( _child = parentB . child ; _child ; ) {
if ( _child === a ) {
didFindChild = ! 0 , a = parentB , b = parentA ;
break ;
}
if ( _child === b ) {
didFindChild = ! 0 , b = parentB , a = parentA ;
break ;
}
_child = _child . sibling ;
}
invariant ( didFindChild , "Child was not found in either parent set. This indicates a bug " + "related to the return pointer." ) ;
}
}
invariant ( a . alternate === b , "Return fibers should always be each others' alternates." ) ;
}
2017-06-09 02:01:23 +00:00
return invariant ( a . tag === HostRoot$1 , "Unable to find node on an unmounted component." ) ,
2017-05-26 17:51:06 +00:00
a . stateNode . current === a ? fiber : alternate ;
}
var findCurrentFiberUsingSlowPath _1 = findCurrentFiberUsingSlowPath , findCurrentHostFiber$1 = function ( parent ) {
var currentParent = findCurrentFiberUsingSlowPath ( parent ) ;
if ( ! currentParent ) return null ;
for ( var node = currentParent ; ! 0 ; ) {
2017-06-09 02:01:23 +00:00
if ( node . tag === HostComponent$2 || node . tag === HostText ) return node ;
2017-05-26 17:51:06 +00:00
if ( node . child ) node . child . return = node , node = node . child ; else {
if ( node === currentParent ) return null ;
for ( ; ! node . sibling ; ) {
if ( ! node . return || node . return === currentParent ) return null ;
node = node . return ;
}
node . sibling . return = node . return , node = node . sibling ;
}
}
return null ;
} , ReactFiberTreeReflection = {
isFiberMounted : isFiberMounted$1 ,
isMounted : isMounted ,
findCurrentFiberUsingSlowPath : findCurrentFiberUsingSlowPath _1 ,
findCurrentHostFiber : findCurrentHostFiber$1
} , valueStack = [ ] , fiberStack = [ ] , index = - 1 , createCursor$1 = function ( defaultValue ) {
return {
current : defaultValue
} ;
} , isEmpty = function ( ) {
return - 1 === index ;
} , pop$1 = function ( cursor , fiber ) {
if ( index < 0 ) return void warning ( ! 1 , "Unexpected pop." ) ;
2017-06-09 02:01:23 +00:00
fiber !== fiberStack [ index ] && warning ( ! 1 , "Unexpected Fiber popped." ) , cursor . current = valueStack [ index ] ,
2017-05-26 17:51:06 +00:00
valueStack [ index ] = null , fiberStack [ index ] = null , index -- ;
} , push$1 = function ( cursor , value , fiber ) {
index ++ , valueStack [ index ] = cursor . current , fiberStack [ index ] = fiber , cursor . current = value ;
} , reset = function ( ) {
for ( ; index > - 1 ; ) valueStack [ index ] = null , fiberStack [ index ] = null , index -- ;
} , ReactFiberStack = {
createCursor : createCursor$1 ,
isEmpty : isEmpty ,
pop : pop$1 ,
push : push$1 ,
reset : reset
2017-06-09 02:01:23 +00:00
} , IndeterminateComponent = ReactTypeOfWork . IndeterminateComponent , FunctionalComponent = ReactTypeOfWork . FunctionalComponent , ClassComponent$2 = ReactTypeOfWork . ClassComponent , HostComponent$3 = ReactTypeOfWork . HostComponent ;
2017-05-26 17:51:06 +00:00
function describeComponentFrame ( name , source , ownerName ) {
return "\n in " + ( name || "Unknown" ) + ( source ? " (at " + source . fileName . replace ( /^.*[\\\/]/ , "" ) + ":" + source . lineNumber + ")" : ownerName ? " (created by " + ownerName + ")" : "" ) ;
}
function describeFiber ( fiber ) {
switch ( fiber . tag ) {
case IndeterminateComponent :
case FunctionalComponent :
case ClassComponent$2 :
2017-06-09 02:01:23 +00:00
case HostComponent$3 :
2017-05-26 17:51:06 +00:00
var owner = fiber . _debugOwner , source = fiber . _debugSource , name = getComponentName _1 ( fiber ) , ownerName = null ;
return owner && ( ownerName = getComponentName _1 ( owner ) ) , describeComponentFrame ( name , source , ownerName ) ;
default :
return "" ;
}
}
function getStackAddendumByWorkInProgressFiber$1 ( workInProgress ) {
var info = "" , node = workInProgress ;
do {
info += describeFiber ( node ) , node = node . return ;
} while ( node ) ;
return info ;
}
var ReactFiberComponentTreeHook = {
getStackAddendumByWorkInProgressFiber : getStackAddendumByWorkInProgressFiber$1 ,
describeComponentFrame : describeComponentFrame
} , getComponentName$3 = getComponentName _1 , _require$1 = ReactFiberComponentTreeHook , getStackAddendumByWorkInProgressFiber = _require$1 . getStackAddendumByWorkInProgressFiber ;
function getCurrentFiberOwnerName ( ) {
var fiber = ReactDebugCurrentFiber$2 . current ;
return null === fiber ? null : null != fiber . _debugOwner ? getComponentName$3 ( fiber . _debugOwner ) : null ;
}
function getCurrentFiberStackAddendum ( ) {
var fiber = ReactDebugCurrentFiber$2 . current ;
return null === fiber ? null : getStackAddendumByWorkInProgressFiber ( fiber ) ;
}
var ReactDebugCurrentFiber$2 = {
current : null ,
phase : null ,
getCurrentFiberOwnerName : getCurrentFiberOwnerName ,
getCurrentFiberStackAddendum : getCurrentFiberStackAddendum
2017-06-09 02:01:23 +00:00
} , ReactDebugCurrentFiber _1 = ReactDebugCurrentFiber$2 , ReactDebugFiberPerf = null , _require$2 = ReactTypeOfWork , HostRoot$2 = _require$2 . HostRoot , HostComponent$4 = _require$2 . HostComponent , HostText$1 = _require$2 . HostText , HostPortal = _require$2 . HostPortal , YieldComponent = _require$2 . YieldComponent , Fragment = _require$2 . Fragment , getComponentName$4 = getComponentName _1 , reactEmoji = "⚛" , warningEmoji = "⛔" , supportsUserTiming = "undefined" != typeof performance && "function" == typeof performance . mark && "function" == typeof performance . clearMarks && "function" == typeof performance . measure && "function" == typeof performance . clearMeasures , currentFiber = null , currentPhase = null , currentPhaseFiber = null , isCommitting = ! 1 , hasScheduledUpdateInCurrentCommit = ! 1 , hasScheduledUpdateInCurrentPhase = ! 1 , commitCountInCurrentWorkLoop = 0 , effectCountInCurrentCommit = 0 , labelsInCurrentCommit = new Set ( ) , formatMarkName = function ( markName ) {
2017-05-26 17:51:06 +00:00
return reactEmoji + " " + markName ;
} , formatLabel = function ( label , warning$$1 ) {
return ( warning$$1 ? warningEmoji + " " : reactEmoji + " " ) + label + ( warning$$1 ? " Warning: " + warning$$1 : "" ) ;
} , beginMark = function ( markName ) {
performance . mark ( formatMarkName ( markName ) ) ;
} , clearMark = function ( markName ) {
performance . clearMarks ( formatMarkName ( markName ) ) ;
} , endMark = function ( label , markName , warning$$1 ) {
var formattedMarkName = formatMarkName ( markName ) , formattedLabel = formatLabel ( label , warning$$1 ) ;
try {
performance . measure ( formattedLabel , formattedMarkName ) ;
} catch ( err ) { }
performance . clearMarks ( formattedMarkName ) , performance . clearMeasures ( formattedLabel ) ;
} , getFiberMarkName = function ( label , debugID ) {
return label + " (#" + debugID + ")" ;
} , getFiberLabel = function ( componentName , isMounted , phase ) {
return null === phase ? componentName + " [" + ( isMounted ? "update" : "mount" ) + "]" : componentName + "." + phase ;
} , beginFiberMark = function ( fiber , phase ) {
var componentName = getComponentName$4 ( fiber ) || "Unknown" , debugID = fiber . _debugID , isMounted = null !== fiber . alternate , label = getFiberLabel ( componentName , isMounted , phase ) ;
if ( isCommitting && labelsInCurrentCommit . has ( label ) ) return ! 1 ;
labelsInCurrentCommit . add ( label ) ;
var markName = getFiberMarkName ( label , debugID ) ;
return beginMark ( markName ) , ! 0 ;
} , clearFiberMark = function ( fiber , phase ) {
var componentName = getComponentName$4 ( fiber ) || "Unknown" , debugID = fiber . _debugID , isMounted = null !== fiber . alternate , label = getFiberLabel ( componentName , isMounted , phase ) , markName = getFiberMarkName ( label , debugID ) ;
clearMark ( markName ) ;
} , endFiberMark = function ( fiber , phase , warning$$1 ) {
var componentName = getComponentName$4 ( fiber ) || "Unknown" , debugID = fiber . _debugID , isMounted = null !== fiber . alternate , label = getFiberLabel ( componentName , isMounted , phase ) , markName = getFiberMarkName ( label , debugID ) ;
endMark ( label , markName , warning$$1 ) ;
} , shouldIgnoreFiber = function ( fiber ) {
switch ( fiber . tag ) {
case HostRoot$2 :
2017-06-09 02:01:23 +00:00
case HostComponent$4 :
2017-05-26 17:51:06 +00:00
case HostText$1 :
case HostPortal :
case YieldComponent :
case Fragment :
return ! 0 ;
default :
return ! 1 ;
}
} , clearPendingPhaseMeasurement = function ( ) {
2017-06-09 02:01:23 +00:00
null !== currentPhase && null !== currentPhaseFiber && clearFiberMark ( currentPhaseFiber , currentPhase ) ,
2017-05-26 17:51:06 +00:00
currentPhaseFiber = null , currentPhase = null , hasScheduledUpdateInCurrentPhase = ! 1 ;
} , pauseTimers = function ( ) {
2017-06-09 02:01:23 +00:00
for ( var fiber = currentFiber ; fiber ; ) fiber . _debugIsCurrentlyTiming && endFiberMark ( fiber , null , null ) ,
2017-05-26 17:51:06 +00:00
fiber = fiber . return ;
} , resumeTimersRecursively = function ( fiber ) {
null !== fiber . return && resumeTimersRecursively ( fiber . return ) , fiber . _debugIsCurrentlyTiming && beginFiberMark ( fiber , null ) ;
} , resumeTimers = function ( ) {
null !== currentFiber && resumeTimersRecursively ( currentFiber ) ;
} ;
ReactDebugFiberPerf = {
recordEffect : function ( ) {
effectCountInCurrentCommit ++ ;
} ,
recordScheduleUpdate : function ( ) {
isCommitting && ( hasScheduledUpdateInCurrentCommit = ! 0 ) , null !== currentPhase && "componentWillMount" !== currentPhase && "componentWillReceiveProps" !== currentPhase && ( hasScheduledUpdateInCurrentPhase = ! 0 ) ;
} ,
startWorkTimer : function ( fiber ) {
supportsUserTiming && ! shouldIgnoreFiber ( fiber ) && ( currentFiber = fiber , beginFiberMark ( fiber , null ) && ( fiber . _debugIsCurrentlyTiming = ! 0 ) ) ;
} ,
cancelWorkTimer : function ( fiber ) {
2017-06-09 02:01:23 +00:00
supportsUserTiming && ! shouldIgnoreFiber ( fiber ) && ( fiber . _debugIsCurrentlyTiming = ! 1 ,
2017-05-26 17:51:06 +00:00
clearFiberMark ( fiber , null ) ) ;
} ,
stopWorkTimer : function ( fiber ) {
2017-06-09 02:01:23 +00:00
supportsUserTiming && ! shouldIgnoreFiber ( fiber ) && ( currentFiber = fiber . return ,
2017-05-26 17:51:06 +00:00
fiber . _debugIsCurrentlyTiming && ( fiber . _debugIsCurrentlyTiming = ! 1 , endFiberMark ( fiber , null , null ) ) ) ;
} ,
startPhaseTimer : function ( fiber , phase ) {
2017-06-09 02:01:23 +00:00
supportsUserTiming && ( clearPendingPhaseMeasurement ( ) , beginFiberMark ( fiber , phase ) && ( currentPhaseFiber = fiber ,
2017-05-26 17:51:06 +00:00
currentPhase = phase ) ) ;
} ,
stopPhaseTimer : function ( ) {
if ( supportsUserTiming ) {
if ( null !== currentPhase && null !== currentPhaseFiber ) {
endFiberMark ( currentPhaseFiber , currentPhase , hasScheduledUpdateInCurrentPhase ? "Scheduled a cascading update" : null ) ;
}
currentPhase = null , currentPhaseFiber = null ;
}
} ,
startWorkLoopTimer : function ( ) {
2017-06-09 02:01:23 +00:00
supportsUserTiming && ( commitCountInCurrentWorkLoop = 0 , beginMark ( "(React Tree Reconciliation)" ) ,
2017-05-26 17:51:06 +00:00
resumeTimers ( ) ) ;
} ,
stopWorkLoopTimer : function ( ) {
if ( supportsUserTiming ) {
var warning$$1 = commitCountInCurrentWorkLoop > 1 ? "There were cascading updates" : null ;
commitCountInCurrentWorkLoop = 0 , pauseTimers ( ) , endMark ( "(React Tree Reconciliation)" , "(React Tree Reconciliation)" , warning$$1 ) ;
}
} ,
startCommitTimer : function ( ) {
2017-06-09 02:01:23 +00:00
supportsUserTiming && ( isCommitting = ! 0 , hasScheduledUpdateInCurrentCommit = ! 1 ,
2017-05-26 17:51:06 +00:00
labelsInCurrentCommit . clear ( ) , beginMark ( "(Committing Changes)" ) ) ;
} ,
stopCommitTimer : function ( ) {
if ( supportsUserTiming ) {
var warning$$1 = null ;
2017-06-09 02:01:23 +00:00
hasScheduledUpdateInCurrentCommit ? warning$$1 = "Lifecycle hook scheduled a cascading update" : commitCountInCurrentWorkLoop > 0 && ( warning$$1 = "Caused by a cascading update in earlier commit" ) ,
hasScheduledUpdateInCurrentCommit = ! 1 , commitCountInCurrentWorkLoop ++ , isCommitting = ! 1 ,
2017-05-26 17:51:06 +00:00
labelsInCurrentCommit . clear ( ) , endMark ( "(Committing Changes)" , "(Committing Changes)" , warning$$1 ) ;
}
} ,
startCommitHostEffectsTimer : function ( ) {
supportsUserTiming && ( effectCountInCurrentCommit = 0 , beginMark ( "(Committing Host Effects)" ) ) ;
} ,
stopCommitHostEffectsTimer : function ( ) {
if ( supportsUserTiming ) {
var count = effectCountInCurrentCommit ;
effectCountInCurrentCommit = 0 , endMark ( "(Committing Host Effects: " + count + " Total)" , "(Committing Host Effects)" , null ) ;
}
} ,
startCommitLifeCyclesTimer : function ( ) {
supportsUserTiming && ( effectCountInCurrentCommit = 0 , beginMark ( "(Calling Lifecycle Methods)" ) ) ;
} ,
stopCommitLifeCyclesTimer : function ( ) {
if ( supportsUserTiming ) {
var count = effectCountInCurrentCommit ;
effectCountInCurrentCommit = 0 , endMark ( "(Calling Lifecycle Methods: " + count + " Total)" , "(Calling Lifecycle Methods)" , null ) ;
}
}
} ;
var ReactDebugFiberPerf _1 = ReactDebugFiberPerf , _extends$2 = Object . assign || function ( target ) {
for ( var i = 1 ; i < arguments . length ; i ++ ) {
var source = arguments [ i ] ;
for ( var key in source ) Object . prototype . hasOwnProperty . call ( source , key ) && ( target [ key ] = source [ key ] ) ;
}
return target ;
} , isFiberMounted = ReactFiberTreeReflection . isFiberMounted , ClassComponent = ReactTypeOfWork . ClassComponent , HostRoot = ReactTypeOfWork . HostRoot , createCursor = ReactFiberStack . createCursor , pop = ReactFiberStack . pop , push = ReactFiberStack . push , ReactDebugCurrentFiber$1 = ReactDebugCurrentFiber _1 , _require4$1 = ReactGlobalSharedState _1 , ReactDebugCurrentFrame = _require4$1 . ReactDebugCurrentFrame , _require5 = ReactDebugFiberPerf _1 , startPhaseTimer = _require5 . startPhaseTimer , stopPhaseTimer = _require5 . stopPhaseTimer , warnedAboutMissingGetChildContext = { } , contextStackCursor = createCursor ( emptyObject ) , didPerformWorkStackCursor = createCursor ( ! 1 ) , previousContext = emptyObject ;
function getUnmaskedContext ( workInProgress ) {
return isContextProvider$1 ( workInProgress ) ? previousContext : contextStackCursor . current ;
}
var getUnmaskedContext _1 = getUnmaskedContext ;
function cacheContext ( workInProgress , unmaskedContext , maskedContext ) {
var instance = workInProgress . stateNode ;
instance . _ _reactInternalMemoizedUnmaskedChildContext = unmaskedContext , instance . _ _reactInternalMemoizedMaskedChildContext = maskedContext ;
}
var cacheContext _1 = cacheContext , getMaskedContext = function ( workInProgress , unmaskedContext ) {
var type = workInProgress . type , contextTypes = type . contextTypes ;
if ( ! contextTypes ) return emptyObject ;
var instance = workInProgress . stateNode ;
if ( instance && instance . _ _reactInternalMemoizedUnmaskedChildContext === unmaskedContext ) return instance . _ _reactInternalMemoizedMaskedChildContext ;
var context = { } ;
for ( var key in contextTypes ) context [ key ] = unmaskedContext [ key ] ;
var name = getComponentName _1 ( workInProgress ) || "Unknown" ;
2017-06-09 02:01:23 +00:00
return ReactDebugCurrentFrame . current = workInProgress , checkPropTypes ( contextTypes , context , "context" , name , ReactDebugCurrentFrame . getStackAddendum ) ,
ReactDebugCurrentFrame . current = null , instance && cacheContext ( workInProgress , unmaskedContext , context ) ,
2017-05-26 17:51:06 +00:00
context ;
} , hasContextChanged = function ( ) {
return didPerformWorkStackCursor . current ;
} ;
function isContextConsumer ( fiber ) {
return fiber . tag === ClassComponent && null != fiber . type . contextTypes ;
}
var isContextConsumer _1 = isContextConsumer ;
function isContextProvider$1 ( fiber ) {
return fiber . tag === ClassComponent && null != fiber . type . childContextTypes ;
}
var isContextProvider _1 = isContextProvider$1 ;
function popContextProvider ( fiber ) {
isContextProvider$1 ( fiber ) && ( pop ( didPerformWorkStackCursor , fiber ) , pop ( contextStackCursor , fiber ) ) ;
}
var popContextProvider _1 = popContextProvider , pushTopLevelContextObject = function ( fiber , context , didChange ) {
2017-06-09 02:01:23 +00:00
invariant ( null == contextStackCursor . cursor , "Unexpected context found on stack" ) ,
2017-05-26 17:51:06 +00:00
push ( contextStackCursor , context , fiber ) , push ( didPerformWorkStackCursor , didChange , fiber ) ;
} ;
function processChildContext$1 ( fiber , parentContext , isReconciling ) {
var instance = fiber . stateNode , childContextTypes = fiber . type . childContextTypes ;
if ( "function" != typeof instance . getChildContext ) {
var componentName = getComponentName _1 ( fiber ) || "Unknown" ;
2017-06-09 02:01:23 +00:00
return warnedAboutMissingGetChildContext [ componentName ] || ( warnedAboutMissingGetChildContext [ componentName ] = ! 0 ,
warning ( ! 1 , "%s.childContextTypes is specified but there is no getChildContext() method " + "on the instance. You can either define getChildContext() on %s or remove " + "childContextTypes from it." , componentName , componentName ) ) ,
2017-05-26 17:51:06 +00:00
parentContext ;
}
var childContext = void 0 ;
2017-06-09 02:01:23 +00:00
ReactDebugCurrentFiber$1 . phase = "getChildContext" , startPhaseTimer ( fiber , "getChildContext" ) ,
2017-05-26 17:51:06 +00:00
childContext = instance . getChildContext ( ) , stopPhaseTimer ( ) , ReactDebugCurrentFiber$1 . phase = null ;
for ( var contextKey in childContext ) invariant ( contextKey in childContextTypes , '%s.getChildContext(): key "%s" is not defined in childContextTypes.' , getComponentName _1 ( fiber ) || "Unknown" , contextKey ) ;
var name = getComponentName _1 ( fiber ) || "Unknown" , workInProgress = isReconciling ? fiber : null ;
2017-06-09 02:01:23 +00:00
return ReactDebugCurrentFrame . current = workInProgress , checkPropTypes ( childContextTypes , childContext , "child context" , name , ReactDebugCurrentFrame . getStackAddendum ) ,
2017-05-26 17:51:06 +00:00
ReactDebugCurrentFrame . current = null , _extends$2 ( { } , parentContext , childContext ) ;
}
var processChildContext _1 = processChildContext$1 , pushContextProvider = function ( workInProgress ) {
if ( ! isContextProvider$1 ( workInProgress ) ) return ! 1 ;
var instance = workInProgress . stateNode , memoizedMergedChildContext = instance && instance . _ _reactInternalMemoizedMergedChildContext || emptyObject ;
2017-06-09 02:01:23 +00:00
return previousContext = contextStackCursor . current , push ( contextStackCursor , memoizedMergedChildContext , workInProgress ) ,
2017-05-26 17:51:06 +00:00
push ( didPerformWorkStackCursor , ! 1 , workInProgress ) , ! 0 ;
} , invalidateContextProvider = function ( workInProgress ) {
var instance = workInProgress . stateNode ;
invariant ( instance , "Expected to have an instance by this point." ) ;
var mergedContext = processChildContext$1 ( workInProgress , previousContext , ! 0 ) ;
2017-06-09 02:01:23 +00:00
instance . _ _reactInternalMemoizedMergedChildContext = mergedContext , pop ( didPerformWorkStackCursor , workInProgress ) ,
pop ( contextStackCursor , workInProgress ) , push ( contextStackCursor , mergedContext , workInProgress ) ,
2017-05-26 17:51:06 +00:00
push ( didPerformWorkStackCursor , ! 0 , workInProgress ) ;
} , resetContext = function ( ) {
previousContext = emptyObject , contextStackCursor . current = emptyObject , didPerformWorkStackCursor . current = ! 1 ;
} , findCurrentUnmaskedContext$1 = function ( fiber ) {
invariant ( isFiberMounted ( fiber ) && fiber . tag === ClassComponent , "Expected subtree parent to be a mounted class component" ) ;
for ( var node = fiber ; node . tag !== HostRoot ; ) {
if ( isContextProvider$1 ( node ) ) return node . stateNode . _ _reactInternalMemoizedMergedChildContext ;
var parent = node . return ;
invariant ( parent , "Found unexpected detached subtree parent" ) , node = parent ;
}
return node . stateNode . context ;
} , ReactFiberContext = {
getUnmaskedContext : getUnmaskedContext _1 ,
cacheContext : cacheContext _1 ,
getMaskedContext : getMaskedContext ,
hasContextChanged : hasContextChanged ,
isContextConsumer : isContextConsumer _1 ,
isContextProvider : isContextProvider _1 ,
popContextProvider : popContextProvider _1 ,
pushTopLevelContextObject : pushTopLevelContextObject ,
processChildContext : processChildContext _1 ,
pushContextProvider : pushContextProvider ,
invalidateContextProvider : invalidateContextProvider ,
resetContext : resetContext ,
findCurrentUnmaskedContext : findCurrentUnmaskedContext$1
} , ReactTypeOfInternalContext = {
NoContext : 0 ,
AsyncUpdates : 1
2017-06-09 02:01:23 +00:00
} , IndeterminateComponent$1 = ReactTypeOfWork . IndeterminateComponent , ClassComponent$3 = ReactTypeOfWork . ClassComponent , HostRoot$3 = ReactTypeOfWork . HostRoot , HostComponent$5 = ReactTypeOfWork . HostComponent , HostText$2 = ReactTypeOfWork . HostText , HostPortal$1 = ReactTypeOfWork . HostPortal , CoroutineComponent = ReactTypeOfWork . CoroutineComponent , YieldComponent$1 = ReactTypeOfWork . YieldComponent , Fragment$1 = ReactTypeOfWork . Fragment , NoWork$1 = ReactPriorityLevel . NoWork , NoContext = ReactTypeOfInternalContext . NoContext , NoEffect$1 = ReactTypeOfSideEffect . NoEffect , cloneUpdateQueue$1 = ReactFiberUpdateQueue . cloneUpdateQueue , getComponentName$5 = getComponentName _1 , hasBadMapPolyfill = ! 1 ;
2017-05-26 17:51:06 +00:00
try {
var nonExtensibleObject = Object . preventExtensions ( { } ) ;
new Map ( [ [ nonExtensibleObject , null ] ] ) , new Set ( [ nonExtensibleObject ] ) ;
} catch ( e ) {
hasBadMapPolyfill = ! 0 ;
}
var debugCounter = 1 , createFiber = function ( tag , key , internalContextTag ) {
var fiber = {
tag : tag ,
key : key ,
type : null ,
stateNode : null ,
return : null ,
child : null ,
sibling : null ,
index : 0 ,
ref : null ,
pendingProps : null ,
memoizedProps : null ,
updateQueue : null ,
memoizedState : null ,
internalContextTag : internalContextTag ,
effectTag : NoEffect$1 ,
nextEffect : null ,
firstEffect : null ,
lastEffect : null ,
pendingWorkPriority : NoWork$1 ,
progressedPriority : NoWork$1 ,
progressedChild : null ,
progressedFirstDeletion : null ,
progressedLastDeletion : null ,
alternate : null
} ;
2017-06-09 02:01:23 +00:00
return fiber . _debugID = debugCounter ++ , fiber . _debugSource = null , fiber . _debugOwner = null ,
fiber . _debugIsCurrentlyTiming = ! 1 , hasBadMapPolyfill || "function" != typeof Object . preventExtensions || Object . preventExtensions ( fiber ) ,
2017-05-26 17:51:06 +00:00
fiber ;
} ;
function shouldConstruct ( Component ) {
return ! ( ! Component . prototype || ! Component . prototype . isReactComponent ) ;
}
var cloneFiber = function ( fiber , priorityLevel ) {
var alt = fiber . alternate ;
2017-06-09 02:01:23 +00:00
return null !== alt ? ( alt . effectTag = NoEffect$1 , alt . nextEffect = null , alt . firstEffect = null ,
alt . lastEffect = null ) : ( alt = createFiber ( fiber . tag , fiber . key , fiber . internalContextTag ) ,
alt . type = fiber . type , alt . progressedChild = fiber . progressedChild , alt . progressedPriority = fiber . progressedPriority ,
alt . alternate = fiber , fiber . alternate = alt ) , alt . stateNode = fiber . stateNode ,
alt . child = fiber . child , alt . sibling = fiber . sibling , alt . index = fiber . index , alt . ref = fiber . ref ,
alt . pendingProps = fiber . pendingProps , cloneUpdateQueue$1 ( fiber , alt ) , alt . pendingWorkPriority = priorityLevel ,
alt . memoizedProps = fiber . memoizedProps , alt . memoizedState = fiber . memoizedState ,
alt . _debugID = fiber . _debugID , alt . _debugSource = fiber . _debugSource , alt . _debugOwner = fiber . _debugOwner ,
2017-05-26 17:51:06 +00:00
alt ;
} , createHostRootFiber$1 = function ( ) {
return createFiber ( HostRoot$3 , null , NoContext ) ;
} , createFiberFromElement = function ( element , internalContextTag , priorityLevel ) {
var owner = null ;
owner = element . _owner ;
var fiber = createFiberFromElementType ( element . type , element . key , internalContextTag , owner ) ;
2017-06-09 02:01:23 +00:00
return fiber . pendingProps = element . props , fiber . pendingWorkPriority = priorityLevel ,
2017-05-26 17:51:06 +00:00
fiber . _debugSource = element . _source , fiber . _debugOwner = element . _owner , fiber ;
} , createFiberFromFragment = function ( elements , internalContextTag , priorityLevel ) {
var fiber = createFiber ( Fragment$1 , null , internalContextTag ) ;
2017-06-09 02:01:23 +00:00
return fiber . pendingProps = elements , fiber . pendingWorkPriority = priorityLevel ,
2017-05-26 17:51:06 +00:00
fiber ;
} , createFiberFromText = function ( content , internalContextTag , priorityLevel ) {
var fiber = createFiber ( HostText$2 , null , internalContextTag ) ;
2017-06-09 02:01:23 +00:00
return fiber . pendingProps = content , fiber . pendingWorkPriority = priorityLevel ,
2017-05-26 17:51:06 +00:00
fiber ;
} ;
function createFiberFromElementType ( type , key , internalContextTag , debugOwner ) {
var fiber = void 0 ;
2017-06-09 02:01:23 +00:00
if ( "function" == typeof type ) fiber = shouldConstruct ( type ) ? createFiber ( ClassComponent$3 , key , internalContextTag ) : createFiber ( IndeterminateComponent$1 , key , internalContextTag ) ,
fiber . type = type ; else if ( "string" == typeof type ) fiber = createFiber ( HostComponent$5 , key , internalContextTag ) ,
2017-05-26 17:51:06 +00:00
fiber . type = type ; else if ( "object" == typeof type && null !== type && "number" == typeof type . tag ) fiber = type ; else {
var info = "" ;
( void 0 === type || "object" == typeof type && null !== type && 0 === Object . keys ( type ) . length ) && ( info += " You likely forgot to export your component from the file " + "it's defined in." ) ;
var ownerName = debugOwner ? getComponentName$5 ( debugOwner ) : null ;
ownerName && ( info += "\n\nCheck the render method of `" + ownerName + "`." ) , invariant ( ! 1 , "Element type is invalid: expected a string (for built-in components) " + "or a class/function (for composite components) but got: %s.%s" , null == type ? type : typeof type , info ) ;
}
return fiber ;
}
var createFiberFromElementType _1 = createFiberFromElementType , createFiberFromHostInstanceForDeletion = function ( ) {
2017-06-09 02:01:23 +00:00
var fiber = createFiber ( HostComponent$5 , null , NoContext ) ;
2017-05-26 17:51:06 +00:00
return fiber . type = "DELETED" , fiber ;
} , createFiberFromCoroutine = function ( coroutine , internalContextTag , priorityLevel ) {
var fiber = createFiber ( CoroutineComponent , coroutine . key , internalContextTag ) ;
2017-06-09 02:01:23 +00:00
return fiber . type = coroutine . handler , fiber . pendingProps = coroutine , fiber . pendingWorkPriority = priorityLevel ,
2017-05-26 17:51:06 +00:00
fiber ;
} , createFiberFromYield = function ( yieldNode , internalContextTag , priorityLevel ) {
return createFiber ( YieldComponent$1 , null , internalContextTag ) ;
} , createFiberFromPortal = function ( portal , internalContextTag , priorityLevel ) {
var fiber = createFiber ( HostPortal$1 , portal . key , internalContextTag ) ;
2017-06-09 02:01:23 +00:00
return fiber . pendingProps = portal . children || [ ] , fiber . pendingWorkPriority = priorityLevel ,
2017-05-26 17:51:06 +00:00
fiber . stateNode = {
containerInfo : portal . containerInfo ,
implementation : portal . implementation
} , fiber ;
} , ReactFiber = {
cloneFiber : cloneFiber ,
createHostRootFiber : createHostRootFiber$1 ,
createFiberFromElement : createFiberFromElement ,
createFiberFromFragment : createFiberFromFragment ,
createFiberFromText : createFiberFromText ,
createFiberFromElementType : createFiberFromElementType _1 ,
createFiberFromHostInstanceForDeletion : createFiberFromHostInstanceForDeletion ,
createFiberFromCoroutine : createFiberFromCoroutine ,
createFiberFromYield : createFiberFromYield ,
createFiberFromPortal : createFiberFromPortal
} , createHostRootFiber = ReactFiber . createHostRootFiber , createFiberRoot$1 = function ( containerInfo ) {
var uninitializedFiber = createHostRootFiber ( ) , root = {
current : uninitializedFiber ,
containerInfo : containerInfo ,
isScheduled : ! 1 ,
nextScheduledRoot : null ,
context : null ,
pendingContext : null
} ;
return uninitializedFiber . stateNode = root , root ;
} , ReactFiberRoot = {
createFiberRoot : createFiberRoot$1
2017-06-12 21:02:54 +00:00
} , REACT _COROUTINE _TYPE$1 , REACT _YIELD _TYPE$1 ;
2017-05-26 17:51:06 +00:00
2017-06-09 02:01:23 +00:00
"function" == typeof Symbol && Symbol . for ? ( REACT _COROUTINE _TYPE$1 = Symbol . for ( "react.coroutine" ) ,
REACT _YIELD _TYPE$1 = Symbol . for ( "react.yield" ) ) : ( REACT _COROUTINE _TYPE$1 = 60104 ,
2017-05-26 17:51:06 +00:00
REACT _YIELD _TYPE$1 = 60105 ) ;
var createCoroutine = function ( children , handler , props ) {
var key = arguments . length > 3 && void 0 !== arguments [ 3 ] ? arguments [ 3 ] : null , coroutine = {
$$typeof : REACT _COROUTINE _TYPE$1 ,
key : null == key ? null : "" + key ,
children : children ,
handler : handler ,
props : props
} ;
2017-06-09 02:01:23 +00:00
return Object . freeze && ( Object . freeze ( coroutine . props ) , Object . freeze ( coroutine ) ) ,
2017-05-26 17:51:06 +00:00
coroutine ;
} , createYield = function ( value ) {
var yieldNode = {
$$typeof : REACT _YIELD _TYPE$1 ,
value : value
} ;
return Object . freeze && Object . freeze ( yieldNode ) , yieldNode ;
} , isCoroutine = function ( object ) {
return "object" == typeof object && null !== object && object . $$typeof === REACT _COROUTINE _TYPE$1 ;
} , isYield = function ( object ) {
return "object" == typeof object && null !== object && object . $$typeof === REACT _YIELD _TYPE$1 ;
} , REACT _YIELD _TYPE _1 = REACT _YIELD _TYPE$1 , REACT _COROUTINE _TYPE _1 = REACT _COROUTINE _TYPE$1 , ReactCoroutine = {
createCoroutine : createCoroutine ,
createYield : createYield ,
isCoroutine : isCoroutine ,
isYield : isYield ,
REACT _YIELD _TYPE : REACT _YIELD _TYPE _1 ,
REACT _COROUTINE _TYPE : REACT _COROUTINE _TYPE _1
2017-06-12 21:02:54 +00:00
} , REACT _COROUTINE _TYPE = ReactCoroutine . REACT _COROUTINE _TYPE , REACT _YIELD _TYPE = ReactCoroutine . REACT _YIELD _TYPE , REACT _PORTAL _TYPE$1 = ReactPortal . REACT _PORTAL _TYPE , _require3$3 = ReactDebugCurrentFiber _1 , getCurrentFiberStackAddendum$1 = _require3$3 . getCurrentFiberStackAddendum , warning$7 = warning , didWarnAboutMaps = ! 1 , ownerHasKeyUseWarning = { } , warnForMissingKey = function ( child ) {
2017-05-26 17:51:06 +00:00
if ( null !== child && "object" == typeof child && child . _store && ! child . _store . validated && null == child . key ) {
2017-06-09 02:01:23 +00:00
invariant ( "object" == typeof child . _store , "React Component in warnForMissingKey should have a _store" ) ,
2017-05-26 17:51:06 +00:00
child . _store . validated = ! 0 ;
2017-06-09 02:01:23 +00:00
var currentComponentErrorInfo = "Each child in an array or iterator should have a unique " + '"key" prop. See https://fb.me/react-warning-keys for ' + "more information." + ( getCurrentFiberStackAddendum$1 ( ) || "" ) ;
ownerHasKeyUseWarning [ currentComponentErrorInfo ] || ( ownerHasKeyUseWarning [ currentComponentErrorInfo ] = ! 0 ,
warning$7 ( ! 1 , "Each child in an array or iterator should have a unique " + '"key" prop. See https://fb.me/react-warning-keys for ' + "more information.%s" , getCurrentFiberStackAddendum$1 ( ) ) ) ;
2017-05-26 17:51:06 +00:00
}
2017-06-12 21:02:54 +00:00
} , cloneFiber$2 = ReactFiber . cloneFiber , createFiberFromElement$1 = ReactFiber . createFiberFromElement , createFiberFromFragment$1 = ReactFiber . createFiberFromFragment , createFiberFromText$1 = ReactFiber . createFiberFromText , createFiberFromCoroutine$1 = ReactFiber . createFiberFromCoroutine , createFiberFromYield$1 = ReactFiber . createFiberFromYield , createFiberFromPortal$1 = ReactFiber . createFiberFromPortal , isArray = Array . isArray , FunctionalComponent$2 = ReactTypeOfWork . FunctionalComponent , ClassComponent$6 = ReactTypeOfWork . ClassComponent , HostText$4 = ReactTypeOfWork . HostText , HostPortal$4 = ReactTypeOfWork . HostPortal , CoroutineComponent$2 = ReactTypeOfWork . CoroutineComponent , YieldComponent$3 = ReactTypeOfWork . YieldComponent , Fragment$3 = ReactTypeOfWork . Fragment , NoEffect$2 = ReactTypeOfSideEffect . NoEffect , Placement$3 = ReactTypeOfSideEffect . Placement , Deletion$1 = ReactTypeOfSideEffect . Deletion , ITERATOR _SYMBOL = "function" == typeof Symbol && Symbol . iterator , FAUX _ITERATOR _SYMBOL = "@@iterator" , REACT _ELEMENT _TYPE = "function" == typeof Symbol && Symbol . for && Symbol . for ( "react.element" ) || 60103 ;
function getIteratorFn ( maybeIterable ) {
if ( null === maybeIterable || void 0 === maybeIterable ) return null ;
var iteratorFn = ITERATOR _SYMBOL && maybeIterable [ ITERATOR _SYMBOL ] || maybeIterable [ FAUX _ITERATOR _SYMBOL ] ;
return "function" == typeof iteratorFn ? iteratorFn : null ;
}
2017-05-26 17:51:06 +00:00
function coerceRef ( current , element ) {
var mixedRef = element . ref ;
if ( null !== mixedRef && "function" != typeof mixedRef && element . _owner ) {
var owner = element . _owner , inst = void 0 ;
if ( owner ) if ( "number" == typeof owner . tag ) {
var ownerFiber = owner ;
2017-06-09 02:01:23 +00:00
invariant ( ownerFiber . tag === ClassComponent$6 , "Stateless function components cannot have refs." ) ,
2017-05-26 17:51:06 +00:00
inst = ownerFiber . stateNode ;
} else inst = owner . getPublicInstance ( ) ;
invariant ( inst , "Missing owner for string ref %s. This error is likely caused by a " + "bug in React. Please file an issue." , mixedRef ) ;
var stringRef = "" + mixedRef ;
if ( null !== current && null !== current . ref && current . ref . _stringRef === stringRef ) return current . ref ;
var ref = function ( value ) {
var refs = inst . refs === emptyObject ? inst . refs = { } : inst . refs ;
null === value ? delete refs [ stringRef ] : refs [ stringRef ] = value ;
} ;
return ref . _stringRef = stringRef , ref ;
}
return mixedRef ;
}
function throwOnInvalidObjectType ( returnFiber , newChild ) {
if ( "textarea" !== returnFiber . type ) {
var addendum = "" ;
2017-06-09 02:01:23 +00:00
addendum = " If you meant to render a collection of children, use an array " + "instead." + ( getCurrentFiberStackAddendum$1 ( ) || "" ) ,
2017-05-26 17:51:06 +00:00
invariant ( ! 1 , "Objects are not valid as a React child (found: %s).%s" , "[object Object]" === Object . prototype . toString . call ( newChild ) ? "object with keys {" + Object . keys ( newChild ) . join ( ", " ) + "}" : newChild , addendum ) ;
}
}
function ChildReconciler ( shouldClone , shouldTrackSideEffects ) {
function deleteChild ( returnFiber , childToDelete ) {
if ( shouldTrackSideEffects ) {
if ( ! shouldClone ) {
if ( null === childToDelete . alternate ) return ;
childToDelete = childToDelete . alternate ;
}
var last = returnFiber . progressedLastDeletion ;
2017-06-09 02:01:23 +00:00
null !== last ? ( last . nextEffect = childToDelete , returnFiber . progressedLastDeletion = childToDelete ) : returnFiber . progressedFirstDeletion = returnFiber . progressedLastDeletion = childToDelete ,
2017-05-26 17:51:06 +00:00
childToDelete . nextEffect = null , childToDelete . effectTag = Deletion$1 ;
}
}
function deleteRemainingChildren ( returnFiber , currentFirstChild ) {
if ( ! shouldTrackSideEffects ) return null ;
2017-06-09 02:01:23 +00:00
for ( var childToDelete = currentFirstChild ; null !== childToDelete ; ) deleteChild ( returnFiber , childToDelete ) ,
2017-05-26 17:51:06 +00:00
childToDelete = childToDelete . sibling ;
return null ;
}
function mapRemainingChildren ( returnFiber , currentFirstChild ) {
2017-06-09 02:01:23 +00:00
for ( var existingChildren = new Map ( ) , existingChild = currentFirstChild ; null !== existingChild ; ) null !== existingChild . key ? existingChildren . set ( existingChild . key , existingChild ) : existingChildren . set ( existingChild . index , existingChild ) ,
2017-05-26 17:51:06 +00:00
existingChild = existingChild . sibling ;
return existingChildren ;
}
function useFiber ( fiber , priority ) {
if ( shouldClone ) {
var clone = cloneFiber$2 ( fiber , priority ) ;
return clone . index = 0 , clone . sibling = null , clone ;
}
2017-06-09 02:01:23 +00:00
return fiber . pendingWorkPriority = priority , fiber . effectTag = NoEffect$2 , fiber . index = 0 ,
2017-05-26 17:51:06 +00:00
fiber . sibling = null , fiber ;
}
function placeChild ( newFiber , lastPlacedIndex , newIndex ) {
if ( newFiber . index = newIndex , ! shouldTrackSideEffects ) return lastPlacedIndex ;
var current = newFiber . alternate ;
if ( null !== current ) {
var oldIndex = current . index ;
return oldIndex < lastPlacedIndex ? ( newFiber . effectTag = Placement$3 , lastPlacedIndex ) : oldIndex ;
}
return newFiber . effectTag = Placement$3 , lastPlacedIndex ;
}
function placeSingleChild ( newFiber ) {
2017-06-09 02:01:23 +00:00
return shouldTrackSideEffects && null === newFiber . alternate && ( newFiber . effectTag = Placement$3 ) ,
2017-05-26 17:51:06 +00:00
newFiber ;
}
function updateTextNode ( returnFiber , current , textContent , priority ) {
if ( null === current || current . tag !== HostText$4 ) {
var created = createFiberFromText$1 ( textContent , returnFiber . internalContextTag , priority ) ;
return created . return = returnFiber , created ;
}
var existing = useFiber ( current , priority ) ;
return existing . pendingProps = textContent , existing . return = returnFiber , existing ;
}
function updateElement ( returnFiber , current , element , priority ) {
if ( null === current || current . type !== element . type ) {
var created = createFiberFromElement$1 ( element , returnFiber . internalContextTag , priority ) ;
2017-06-09 02:01:23 +00:00
return created . ref = coerceRef ( current , element ) , created . return = returnFiber ,
2017-05-26 17:51:06 +00:00
created ;
}
var existing = useFiber ( current , priority ) ;
2017-06-09 02:01:23 +00:00
return existing . ref = coerceRef ( current , element ) , existing . pendingProps = element . props ,
existing . return = returnFiber , existing . _debugSource = element . _source , existing . _debugOwner = element . _owner ,
2017-05-26 17:51:06 +00:00
existing ;
}
function updateCoroutine ( returnFiber , current , coroutine , priority ) {
if ( null === current || current . tag !== CoroutineComponent$2 ) {
var created = createFiberFromCoroutine$1 ( coroutine , returnFiber . internalContextTag , priority ) ;
return created . return = returnFiber , created ;
}
var existing = useFiber ( current , priority ) ;
return existing . pendingProps = coroutine , existing . return = returnFiber , existing ;
}
function updateYield ( returnFiber , current , yieldNode , priority ) {
if ( null === current || current . tag !== YieldComponent$3 ) {
var created = createFiberFromYield$1 ( yieldNode , returnFiber . internalContextTag , priority ) ;
return created . type = yieldNode . value , created . return = returnFiber , created ;
}
var existing = useFiber ( current , priority ) ;
return existing . type = yieldNode . value , existing . return = returnFiber , existing ;
}
function updatePortal ( returnFiber , current , portal , priority ) {
if ( null === current || current . tag !== HostPortal$4 || current . stateNode . containerInfo !== portal . containerInfo || current . stateNode . implementation !== portal . implementation ) {
var created = createFiberFromPortal$1 ( portal , returnFiber . internalContextTag , priority ) ;
return created . return = returnFiber , created ;
}
var existing = useFiber ( current , priority ) ;
2017-06-09 02:01:23 +00:00
return existing . pendingProps = portal . children || [ ] , existing . return = returnFiber ,
2017-05-26 17:51:06 +00:00
existing ;
}
function updateFragment ( returnFiber , current , fragment , priority ) {
if ( null === current || current . tag !== Fragment$3 ) {
var created = createFiberFromFragment$1 ( fragment , returnFiber . internalContextTag , priority ) ;
return created . return = returnFiber , created ;
}
var existing = useFiber ( current , priority ) ;
return existing . pendingProps = fragment , existing . return = returnFiber , existing ;
}
function createChild ( returnFiber , newChild , priority ) {
if ( "string" == typeof newChild || "number" == typeof newChild ) {
var created = createFiberFromText$1 ( "" + newChild , returnFiber . internalContextTag , priority ) ;
return created . return = returnFiber , created ;
}
if ( "object" == typeof newChild && null !== newChild ) {
switch ( newChild . $$typeof ) {
2017-06-12 21:02:54 +00:00
case REACT _ELEMENT _TYPE :
2017-05-26 17:51:06 +00:00
var _created = createFiberFromElement$1 ( newChild , returnFiber . internalContextTag , priority ) ;
2017-06-09 02:01:23 +00:00
return _created . ref = coerceRef ( null , newChild ) , _created . return = returnFiber ,
2017-05-26 17:51:06 +00:00
_created ;
case REACT _COROUTINE _TYPE :
var _created2 = createFiberFromCoroutine$1 ( newChild , returnFiber . internalContextTag , priority ) ;
return _created2 . return = returnFiber , _created2 ;
case REACT _YIELD _TYPE :
var _created3 = createFiberFromYield$1 ( newChild , returnFiber . internalContextTag , priority ) ;
return _created3 . type = newChild . value , _created3 . return = returnFiber , _created3 ;
case REACT _PORTAL _TYPE$1 :
var _created4 = createFiberFromPortal$1 ( newChild , returnFiber . internalContextTag , priority ) ;
return _created4 . return = returnFiber , _created4 ;
}
2017-06-12 21:02:54 +00:00
if ( isArray ( newChild ) || getIteratorFn ( newChild ) ) {
2017-05-26 17:51:06 +00:00
var _created5 = createFiberFromFragment$1 ( newChild , returnFiber . internalContextTag , priority ) ;
return _created5 . return = returnFiber , _created5 ;
}
throwOnInvalidObjectType ( returnFiber , newChild ) ;
}
return null ;
}
function updateSlot ( returnFiber , oldFiber , newChild , priority ) {
var key = null !== oldFiber ? oldFiber . key : null ;
if ( "string" == typeof newChild || "number" == typeof newChild ) return null !== key ? null : updateTextNode ( returnFiber , oldFiber , "" + newChild , priority ) ;
if ( "object" == typeof newChild && null !== newChild ) {
switch ( newChild . $$typeof ) {
2017-06-12 21:02:54 +00:00
case REACT _ELEMENT _TYPE :
2017-05-26 17:51:06 +00:00
return newChild . key === key ? updateElement ( returnFiber , oldFiber , newChild , priority ) : null ;
case REACT _COROUTINE _TYPE :
return newChild . key === key ? updateCoroutine ( returnFiber , oldFiber , newChild , priority ) : null ;
case REACT _YIELD _TYPE :
return null === key ? updateYield ( returnFiber , oldFiber , newChild , priority ) : null ;
case REACT _PORTAL _TYPE$1 :
return newChild . key === key ? updatePortal ( returnFiber , oldFiber , newChild , priority ) : null ;
}
2017-06-12 21:02:54 +00:00
if ( isArray ( newChild ) || getIteratorFn ( newChild ) ) return null !== key ? null : updateFragment ( returnFiber , oldFiber , newChild , priority ) ;
2017-05-26 17:51:06 +00:00
throwOnInvalidObjectType ( returnFiber , newChild ) ;
}
return null ;
}
function updateFromMap ( existingChildren , returnFiber , newIdx , newChild , priority ) {
if ( "string" == typeof newChild || "number" == typeof newChild ) {
return updateTextNode ( returnFiber , existingChildren . get ( newIdx ) || null , "" + newChild , priority ) ;
}
if ( "object" == typeof newChild && null !== newChild ) {
switch ( newChild . $$typeof ) {
2017-06-12 21:02:54 +00:00
case REACT _ELEMENT _TYPE :
2017-05-26 17:51:06 +00:00
return updateElement ( returnFiber , existingChildren . get ( null === newChild . key ? newIdx : newChild . key ) || null , newChild , priority ) ;
case REACT _COROUTINE _TYPE :
return updateCoroutine ( returnFiber , existingChildren . get ( null === newChild . key ? newIdx : newChild . key ) || null , newChild , priority ) ;
case REACT _YIELD _TYPE :
return updateYield ( returnFiber , existingChildren . get ( newIdx ) || null , newChild , priority ) ;
case REACT _PORTAL _TYPE$1 :
return updatePortal ( returnFiber , existingChildren . get ( null === newChild . key ? newIdx : newChild . key ) || null , newChild , priority ) ;
}
2017-06-12 21:02:54 +00:00
if ( isArray ( newChild ) || getIteratorFn ( newChild ) ) {
2017-05-26 17:51:06 +00:00
return updateFragment ( returnFiber , existingChildren . get ( newIdx ) || null , newChild , priority ) ;
}
throwOnInvalidObjectType ( returnFiber , newChild ) ;
}
return null ;
}
function warnOnInvalidKey ( child , knownKeys ) {
if ( "object" != typeof child || null === child ) return knownKeys ;
switch ( child . $$typeof ) {
2017-06-12 21:02:54 +00:00
case REACT _ELEMENT _TYPE :
2017-05-26 17:51:06 +00:00
case REACT _COROUTINE _TYPE :
case REACT _PORTAL _TYPE$1 :
warnForMissingKey ( child ) ;
var key = child . key ;
if ( "string" != typeof key ) break ;
if ( null === knownKeys ) {
knownKeys = new Set ( ) , knownKeys . add ( key ) ;
break ;
}
if ( ! knownKeys . has ( key ) ) {
knownKeys . add ( key ) ;
break ;
}
warning$7 ( ! 1 , "Encountered two children with the same key, " + "`%s`. Child keys must be unique; when two children share a key, " + "only the first child will be used.%s" , key , getCurrentFiberStackAddendum$1 ( ) ) ;
}
return knownKeys ;
}
function reconcileChildrenArray ( returnFiber , currentFirstChild , newChildren , priority ) {
for ( var knownKeys = null , i = 0 ; i < newChildren . length ; i ++ ) {
knownKeys = warnOnInvalidKey ( newChildren [ i ] , knownKeys ) ;
}
for ( var resultingFirstChild = null , previousNewFiber = null , oldFiber = currentFirstChild , lastPlacedIndex = 0 , newIdx = 0 , nextOldFiber = null ; null !== oldFiber && newIdx < newChildren . length ; newIdx ++ ) {
oldFiber . index > newIdx ? ( nextOldFiber = oldFiber , oldFiber = null ) : nextOldFiber = oldFiber . sibling ;
var newFiber = updateSlot ( returnFiber , oldFiber , newChildren [ newIdx ] , priority ) ;
if ( null === newFiber ) {
null === oldFiber && ( oldFiber = nextOldFiber ) ;
break ;
}
2017-06-09 02:01:23 +00:00
shouldTrackSideEffects && oldFiber && null === newFiber . alternate && deleteChild ( returnFiber , oldFiber ) ,
lastPlacedIndex = placeChild ( newFiber , lastPlacedIndex , newIdx ) , null === previousNewFiber ? resultingFirstChild = newFiber : previousNewFiber . sibling = newFiber ,
2017-05-26 17:51:06 +00:00
previousNewFiber = newFiber , oldFiber = nextOldFiber ;
}
2017-06-09 02:01:23 +00:00
if ( newIdx === newChildren . length ) return deleteRemainingChildren ( returnFiber , oldFiber ) ,
2017-05-26 17:51:06 +00:00
resultingFirstChild ;
if ( null === oldFiber ) {
for ( ; newIdx < newChildren . length ; newIdx ++ ) {
var _newFiber = createChild ( returnFiber , newChildren [ newIdx ] , priority ) ;
2017-06-09 02:01:23 +00:00
_newFiber && ( lastPlacedIndex = placeChild ( _newFiber , lastPlacedIndex , newIdx ) ,
null === previousNewFiber ? resultingFirstChild = _newFiber : previousNewFiber . sibling = _newFiber ,
2017-05-26 17:51:06 +00:00
previousNewFiber = _newFiber ) ;
}
return resultingFirstChild ;
}
for ( var existingChildren = mapRemainingChildren ( returnFiber , oldFiber ) ; newIdx < newChildren . length ; newIdx ++ ) {
var _newFiber2 = updateFromMap ( existingChildren , returnFiber , newIdx , newChildren [ newIdx ] , priority ) ;
2017-06-09 02:01:23 +00:00
_newFiber2 && ( shouldTrackSideEffects && null !== _newFiber2 . alternate && existingChildren . delete ( null === _newFiber2 . key ? newIdx : _newFiber2 . key ) ,
lastPlacedIndex = placeChild ( _newFiber2 , lastPlacedIndex , newIdx ) , null === previousNewFiber ? resultingFirstChild = _newFiber2 : previousNewFiber . sibling = _newFiber2 ,
2017-05-26 17:51:06 +00:00
previousNewFiber = _newFiber2 ) ;
}
return shouldTrackSideEffects && existingChildren . forEach ( function ( child ) {
return deleteChild ( returnFiber , child ) ;
} ) , resultingFirstChild ;
}
function reconcileChildrenIterator ( returnFiber , currentFirstChild , newChildrenIterable , priority ) {
2017-06-12 21:02:54 +00:00
var iteratorFn = getIteratorFn ( newChildrenIterable ) ;
2017-06-09 02:01:23 +00:00
if ( invariant ( "function" == typeof iteratorFn , "An object is not an iterable. This error is likely caused by a bug in " + "React. Please file an issue." ) ,
2017-05-26 17:51:06 +00:00
"function" == typeof newChildrenIterable . entries ) {
2017-06-09 02:01:23 +00:00
newChildrenIterable . entries === iteratorFn && ( warning$7 ( didWarnAboutMaps , "Using Maps as children is unsupported and will likely yield " + "unexpected results. Convert it to a sequence/iterable of keyed " + "ReactElements instead.%s" , getCurrentFiberStackAddendum$1 ( ) ) ,
2017-05-26 17:51:06 +00:00
didWarnAboutMaps = ! 0 ) ;
}
var _newChildren = iteratorFn . call ( newChildrenIterable ) ;
if ( _newChildren ) for ( var knownKeys = null , _step = _newChildren . next ( ) ; ! _step . done ; _step = _newChildren . next ( ) ) {
var child = _step . value ;
knownKeys = warnOnInvalidKey ( child , knownKeys ) ;
}
var newChildren = iteratorFn . call ( newChildrenIterable ) ;
invariant ( null != newChildren , "An iterable object provided no iterator." ) ;
2017-06-09 02:01:23 +00:00
for ( var resultingFirstChild = null , previousNewFiber = null , oldFiber = currentFirstChild , lastPlacedIndex = 0 , newIdx = 0 , nextOldFiber = null , step = newChildren . next ( ) ; null !== oldFiber && ! step . done ; newIdx ++ ,
2017-05-26 17:51:06 +00:00
step = newChildren . next ( ) ) {
oldFiber . index > newIdx ? ( nextOldFiber = oldFiber , oldFiber = null ) : nextOldFiber = oldFiber . sibling ;
var newFiber = updateSlot ( returnFiber , oldFiber , step . value , priority ) ;
if ( null === newFiber ) {
oldFiber || ( oldFiber = nextOldFiber ) ;
break ;
}
2017-06-09 02:01:23 +00:00
shouldTrackSideEffects && oldFiber && null === newFiber . alternate && deleteChild ( returnFiber , oldFiber ) ,
lastPlacedIndex = placeChild ( newFiber , lastPlacedIndex , newIdx ) , null === previousNewFiber ? resultingFirstChild = newFiber : previousNewFiber . sibling = newFiber ,
2017-05-26 17:51:06 +00:00
previousNewFiber = newFiber , oldFiber = nextOldFiber ;
}
if ( step . done ) return deleteRemainingChildren ( returnFiber , oldFiber ) , resultingFirstChild ;
if ( null === oldFiber ) {
for ( ; ! step . done ; newIdx ++ , step = newChildren . next ( ) ) {
var _newFiber3 = createChild ( returnFiber , step . value , priority ) ;
2017-06-09 02:01:23 +00:00
null !== _newFiber3 && ( lastPlacedIndex = placeChild ( _newFiber3 , lastPlacedIndex , newIdx ) ,
null === previousNewFiber ? resultingFirstChild = _newFiber3 : previousNewFiber . sibling = _newFiber3 ,
2017-05-26 17:51:06 +00:00
previousNewFiber = _newFiber3 ) ;
}
return resultingFirstChild ;
}
2017-06-09 02:01:23 +00:00
for ( var existingChildren = mapRemainingChildren ( returnFiber , oldFiber ) ; ! step . done ; newIdx ++ ,
2017-05-26 17:51:06 +00:00
step = newChildren . next ( ) ) {
var _newFiber4 = updateFromMap ( existingChildren , returnFiber , newIdx , step . value , priority ) ;
2017-06-09 02:01:23 +00:00
null !== _newFiber4 && ( shouldTrackSideEffects && null !== _newFiber4 . alternate && existingChildren . delete ( null === _newFiber4 . key ? newIdx : _newFiber4 . key ) ,
lastPlacedIndex = placeChild ( _newFiber4 , lastPlacedIndex , newIdx ) , null === previousNewFiber ? resultingFirstChild = _newFiber4 : previousNewFiber . sibling = _newFiber4 ,
2017-05-26 17:51:06 +00:00
previousNewFiber = _newFiber4 ) ;
}
return shouldTrackSideEffects && existingChildren . forEach ( function ( child ) {
return deleteChild ( returnFiber , child ) ;
} ) , resultingFirstChild ;
}
function reconcileSingleTextNode ( returnFiber , currentFirstChild , textContent , priority ) {
if ( null !== currentFirstChild && currentFirstChild . tag === HostText$4 ) {
deleteRemainingChildren ( returnFiber , currentFirstChild . sibling ) ;
var existing = useFiber ( currentFirstChild , priority ) ;
return existing . pendingProps = textContent , existing . return = returnFiber , existing ;
}
deleteRemainingChildren ( returnFiber , currentFirstChild ) ;
var created = createFiberFromText$1 ( textContent , returnFiber . internalContextTag , priority ) ;
return created . return = returnFiber , created ;
}
function reconcileSingleElement ( returnFiber , currentFirstChild , element , priority ) {
for ( var key = element . key , child = currentFirstChild ; null !== child ; ) {
if ( child . key === key ) {
if ( child . type === element . type ) {
deleteRemainingChildren ( returnFiber , child . sibling ) ;
var existing = useFiber ( child , priority ) ;
2017-06-09 02:01:23 +00:00
return existing . ref = coerceRef ( child , element ) , existing . pendingProps = element . props ,
existing . return = returnFiber , existing . _debugSource = element . _source , existing . _debugOwner = element . _owner ,
2017-05-26 17:51:06 +00:00
existing ;
}
deleteRemainingChildren ( returnFiber , child ) ;
break ;
}
deleteChild ( returnFiber , child ) , child = child . sibling ;
}
var created = createFiberFromElement$1 ( element , returnFiber . internalContextTag , priority ) ;
2017-06-09 02:01:23 +00:00
return created . ref = coerceRef ( currentFirstChild , element ) , created . return = returnFiber ,
2017-05-26 17:51:06 +00:00
created ;
}
function reconcileSingleCoroutine ( returnFiber , currentFirstChild , coroutine , priority ) {
for ( var key = coroutine . key , child = currentFirstChild ; null !== child ; ) {
if ( child . key === key ) {
if ( child . tag === CoroutineComponent$2 ) {
deleteRemainingChildren ( returnFiber , child . sibling ) ;
var existing = useFiber ( child , priority ) ;
return existing . pendingProps = coroutine , existing . return = returnFiber , existing ;
}
deleteRemainingChildren ( returnFiber , child ) ;
break ;
}
deleteChild ( returnFiber , child ) , child = child . sibling ;
}
var created = createFiberFromCoroutine$1 ( coroutine , returnFiber . internalContextTag , priority ) ;
return created . return = returnFiber , created ;
}
function reconcileSingleYield ( returnFiber , currentFirstChild , yieldNode , priority ) {
var child = currentFirstChild ;
if ( null !== child ) {
if ( child . tag === YieldComponent$3 ) {
deleteRemainingChildren ( returnFiber , child . sibling ) ;
var existing = useFiber ( child , priority ) ;
return existing . type = yieldNode . value , existing . return = returnFiber , existing ;
}
deleteRemainingChildren ( returnFiber , child ) ;
}
var created = createFiberFromYield$1 ( yieldNode , returnFiber . internalContextTag , priority ) ;
return created . type = yieldNode . value , created . return = returnFiber , created ;
}
function reconcileSinglePortal ( returnFiber , currentFirstChild , portal , priority ) {
for ( var key = portal . key , child = currentFirstChild ; null !== child ; ) {
if ( child . key === key ) {
if ( child . tag === HostPortal$4 && child . stateNode . containerInfo === portal . containerInfo && child . stateNode . implementation === portal . implementation ) {
deleteRemainingChildren ( returnFiber , child . sibling ) ;
var existing = useFiber ( child , priority ) ;
2017-06-09 02:01:23 +00:00
return existing . pendingProps = portal . children || [ ] , existing . return = returnFiber ,
2017-05-26 17:51:06 +00:00
existing ;
}
deleteRemainingChildren ( returnFiber , child ) ;
break ;
}
deleteChild ( returnFiber , child ) , child = child . sibling ;
}
var created = createFiberFromPortal$1 ( portal , returnFiber . internalContextTag , priority ) ;
return created . return = returnFiber , created ;
}
function reconcileChildFibers ( returnFiber , currentFirstChild , newChild , priority ) {
var disableNewFiberFeatures = ReactFeatureFlags _1 . disableNewFiberFeatures , isObject = "object" == typeof newChild && null !== newChild ;
if ( isObject ) if ( disableNewFiberFeatures ) switch ( newChild . $$typeof ) {
2017-06-12 21:02:54 +00:00
case REACT _ELEMENT _TYPE :
2017-05-26 17:51:06 +00:00
return placeSingleChild ( reconcileSingleElement ( returnFiber , currentFirstChild , newChild , priority ) ) ;
case REACT _PORTAL _TYPE$1 :
return placeSingleChild ( reconcileSinglePortal ( returnFiber , currentFirstChild , newChild , priority ) ) ;
} else switch ( newChild . $$typeof ) {
2017-06-12 21:02:54 +00:00
case REACT _ELEMENT _TYPE :
2017-05-26 17:51:06 +00:00
return placeSingleChild ( reconcileSingleElement ( returnFiber , currentFirstChild , newChild , priority ) ) ;
case REACT _COROUTINE _TYPE :
return placeSingleChild ( reconcileSingleCoroutine ( returnFiber , currentFirstChild , newChild , priority ) ) ;
case REACT _YIELD _TYPE :
return placeSingleChild ( reconcileSingleYield ( returnFiber , currentFirstChild , newChild , priority ) ) ;
case REACT _PORTAL _TYPE$1 :
return placeSingleChild ( reconcileSinglePortal ( returnFiber , currentFirstChild , newChild , priority ) ) ;
}
if ( disableNewFiberFeatures ) switch ( returnFiber . tag ) {
case ClassComponent$6 :
if ( returnFiber . stateNode . render . _isMockFunction && void 0 === newChild ) break ;
var Component = returnFiber . type ;
invariant ( null === newChild || ! 1 === newChild , "%s.render(): A valid React element (or null) must be returned. " + "You may have returned undefined, an array or some other " + "invalid object." , Component . displayName || Component . name || "Component" ) ;
break ;
case FunctionalComponent$2 :
var _Component = returnFiber . type ;
invariant ( null === newChild || ! 1 === newChild , "%s(...): A valid React element (or null) must be returned. " + "You may have returned undefined, an array or some other " + "invalid object." , _Component . displayName || _Component . name || "Component" ) ;
}
if ( "string" == typeof newChild || "number" == typeof newChild ) return placeSingleChild ( reconcileSingleTextNode ( returnFiber , currentFirstChild , "" + newChild , priority ) ) ;
if ( isArray ( newChild ) ) return reconcileChildrenArray ( returnFiber , currentFirstChild , newChild , priority ) ;
2017-06-12 21:02:54 +00:00
if ( getIteratorFn ( newChild ) ) return reconcileChildrenIterator ( returnFiber , currentFirstChild , newChild , priority ) ;
2017-05-26 17:51:06 +00:00
if ( isObject && throwOnInvalidObjectType ( returnFiber , newChild ) , ! disableNewFiberFeatures && void 0 === newChild ) switch ( returnFiber . tag ) {
case ClassComponent$6 :
if ( returnFiber . stateNode . render . _isMockFunction ) break ;
case FunctionalComponent$2 :
var _Component2 = returnFiber . type ;
invariant ( ! 1 , "%s(...): Nothing was returned from render. This usually means a " + "return statement is missing. Or, to render nothing, " + "return null." , _Component2 . displayName || _Component2 . name || "Component" ) ;
}
return deleteRemainingChildren ( returnFiber , currentFirstChild ) ;
}
return reconcileChildFibers ;
}
var reconcileChildFibers$1 = ChildReconciler ( ! 0 , ! 0 ) , reconcileChildFibersInPlace$1 = ChildReconciler ( ! 1 , ! 0 ) , mountChildFibersInPlace$1 = ChildReconciler ( ! 1 , ! 1 ) , cloneChildFibers$1 = function ( current , workInProgress ) {
if ( workInProgress . child ) if ( null !== current && workInProgress . child === current . child ) {
var currentChild = workInProgress . child , newChild = cloneFiber$2 ( currentChild , currentChild . pendingWorkPriority ) ;
2017-06-09 02:01:23 +00:00
for ( workInProgress . child = newChild , newChild . return = workInProgress ; null !== currentChild . sibling ; ) currentChild = currentChild . sibling ,
newChild = newChild . sibling = cloneFiber$2 ( currentChild , currentChild . pendingWorkPriority ) ,
2017-05-26 17:51:06 +00:00
newChild . return = workInProgress ;
newChild . sibling = null ;
2017-06-09 02:01:23 +00:00
} else for ( var child = workInProgress . child ; null !== child ; ) child . return = workInProgress ,
2017-05-26 17:51:06 +00:00
child = child . sibling ;
} , ReactChildFiber = {
reconcileChildFibers : reconcileChildFibers$1 ,
reconcileChildFibersInPlace : reconcileChildFibersInPlace$1 ,
mountChildFibersInPlace : mountChildFibersInPlace$1 ,
cloneChildFibers : cloneChildFibers$1
} , Update$1 = ReactTypeOfSideEffect . Update , AsyncUpdates$1 = ReactTypeOfInternalContext . AsyncUpdates , cacheContext$1 = ReactFiberContext . cacheContext , getMaskedContext$2 = ReactFiberContext . getMaskedContext , getUnmaskedContext$2 = ReactFiberContext . getUnmaskedContext , isContextConsumer$1 = ReactFiberContext . isContextConsumer , addUpdate$1 = ReactFiberUpdateQueue . addUpdate , addReplaceUpdate$1 = ReactFiberUpdateQueue . addReplaceUpdate , addForceUpdate$1 = ReactFiberUpdateQueue . addForceUpdate , beginUpdateQueue$2 = ReactFiberUpdateQueue . beginUpdateQueue , _require5$1 = ReactFiberContext , hasContextChanged$2 = _require5$1 . hasContextChanged , isMounted$1 = ReactFiberTreeReflection . isMounted , isArray$1 = Array . isArray , _require7$1 = ReactDebugFiberPerf _1 , startPhaseTimer$1 = _require7$1 . startPhaseTimer , stopPhaseTimer$1 = _require7$1 . stopPhaseTimer , warning$8 = warning , warnOnInvalidCallback = function ( callback , callerName ) {
warning$8 ( null === callback || "function" == typeof callback , "%s(...): Expected the last optional `callback` argument to be a " + "function. Instead received: %s." , callerName , callback ) ;
} , ReactFiberClassComponent = function ( scheduleUpdate , getPriorityContext , memoizeProps , memoizeState ) {
var updater = {
isMounted : isMounted$1 ,
enqueueSetState : function ( instance , partialState , callback ) {
var fiber = ReactInstanceMap _1 . get ( instance ) , priorityLevel = getPriorityContext ( fiber , ! 1 ) ;
2017-06-09 02:01:23 +00:00
callback = void 0 === callback ? null : callback , warnOnInvalidCallback ( callback , "setState" ) ,
2017-05-26 17:51:06 +00:00
addUpdate$1 ( fiber , partialState , callback , priorityLevel ) , scheduleUpdate ( fiber , priorityLevel ) ;
} ,
enqueueReplaceState : function ( instance , state , callback ) {
var fiber = ReactInstanceMap _1 . get ( instance ) , priorityLevel = getPriorityContext ( fiber , ! 1 ) ;
2017-06-09 02:01:23 +00:00
callback = void 0 === callback ? null : callback , warnOnInvalidCallback ( callback , "replaceState" ) ,
2017-05-26 17:51:06 +00:00
addReplaceUpdate$1 ( fiber , state , callback , priorityLevel ) , scheduleUpdate ( fiber , priorityLevel ) ;
} ,
enqueueForceUpdate : function ( instance , callback ) {
var fiber = ReactInstanceMap _1 . get ( instance ) , priorityLevel = getPriorityContext ( fiber , ! 1 ) ;
2017-06-09 02:01:23 +00:00
callback = void 0 === callback ? null : callback , warnOnInvalidCallback ( callback , "forceUpdate" ) ,
2017-05-26 17:51:06 +00:00
addForceUpdate$1 ( fiber , callback , priorityLevel ) , scheduleUpdate ( fiber , priorityLevel ) ;
}
} ;
function checkShouldComponentUpdate ( workInProgress , oldProps , newProps , oldState , newState , newContext ) {
if ( null === oldProps || null !== workInProgress . updateQueue && workInProgress . updateQueue . hasForceUpdate ) return ! 0 ;
var instance = workInProgress . stateNode , type = workInProgress . type ;
if ( "function" == typeof instance . shouldComponentUpdate ) {
startPhaseTimer$1 ( workInProgress , "shouldComponentUpdate" ) ;
var shouldUpdate = instance . shouldComponentUpdate ( newProps , newState , newContext ) ;
2017-06-09 02:01:23 +00:00
return stopPhaseTimer$1 ( ) , warning$8 ( void 0 !== shouldUpdate , "%s.shouldComponentUpdate(): Returned undefined instead of a " + "boolean value. Make sure to return true or false." , getComponentName _1 ( workInProgress ) || "Unknown" ) ,
2017-05-26 17:51:06 +00:00
shouldUpdate ;
}
return ! type . prototype || ! type . prototype . isPureReactComponent || ( ! shallowEqual ( oldProps , newProps ) || ! shallowEqual ( oldState , newState ) ) ;
}
function checkClassInstance ( workInProgress ) {
var instance = workInProgress . stateNode , type = workInProgress . type , name = getComponentName _1 ( workInProgress ) , renderPresent = instance . render ;
warning$8 ( renderPresent , "%s(...): No `render` method found on the returned component " + "instance: you may have forgotten to define `render`." , name ) ;
var noGetInitialStateOnES6 = ! instance . getInitialState || instance . getInitialState . isReactClassApproved || instance . state ;
warning$8 ( noGetInitialStateOnES6 , "getInitialState was defined on %s, a plain JavaScript class. " + "This is only supported for classes created using React.createClass. " + "Did you mean to define a state property instead?" , name ) ;
var noGetDefaultPropsOnES6 = ! instance . getDefaultProps || instance . getDefaultProps . isReactClassApproved ;
warning$8 ( noGetDefaultPropsOnES6 , "getDefaultProps was defined on %s, a plain JavaScript class. " + "This is only supported for classes created using React.createClass. " + "Use a static property to define defaultProps instead." , name ) ;
var noInstancePropTypes = ! instance . propTypes ;
warning$8 ( noInstancePropTypes , "propTypes was defined as an instance property on %s. Use a static " + "property to define propTypes instead." , name ) ;
var noInstanceContextTypes = ! instance . contextTypes ;
warning$8 ( noInstanceContextTypes , "contextTypes was defined as an instance property on %s. Use a static " + "property to define contextTypes instead." , name ) ;
var noComponentShouldUpdate = "function" != typeof instance . componentShouldUpdate ;
2017-06-09 02:01:23 +00:00
warning$8 ( noComponentShouldUpdate , "%s has a method called " + "componentShouldUpdate(). Did you mean shouldComponentUpdate()? " + "The name is phrased as a question because the function is " + "expected to return a value." , name ) ,
2017-05-26 17:51:06 +00:00
type . prototype && type . prototype . isPureReactComponent && void 0 !== instance . shouldComponentUpdate && warning$8 ( ! 1 , "%s has a method called shouldComponentUpdate(). " + "shouldComponentUpdate should not be used when extending React.PureComponent. " + "Please extend React.Component if shouldComponentUpdate is used." , getComponentName _1 ( workInProgress ) || "A pure component" ) ;
var noComponentDidUnmount = "function" != typeof instance . componentDidUnmount ;
warning$8 ( noComponentDidUnmount , "%s has a method called " + "componentDidUnmount(). But there is no such lifecycle method. " + "Did you mean componentWillUnmount()?" , name ) ;
var noComponentWillRecieveProps = "function" != typeof instance . componentWillRecieveProps ;
warning$8 ( noComponentWillRecieveProps , "%s has a method called " + "componentWillRecieveProps(). Did you mean componentWillReceiveProps()?" , name ) ;
var hasMutatedProps = instance . props !== workInProgress . pendingProps ;
warning$8 ( void 0 === instance . props || ! hasMutatedProps , "%s(...): When calling super() in `%s`, make sure to pass " + "up the same props that your component's constructor was passed." , name , name ) ;
var noInstanceDefaultProps = ! instance . defaultProps ;
warning$8 ( noInstanceDefaultProps , "Setting defaultProps as an instance property on %s is not supported and will be ignored." + " Instead, define defaultProps as a static property on %s." , name , name ) ;
var state = instance . state ;
2017-06-09 02:01:23 +00:00
state && ( "object" != typeof state || isArray$1 ( state ) ) && invariant ( ! 1 , "%s.state: must be set to an object or null" , getComponentName _1 ( workInProgress ) ) ,
2017-05-26 17:51:06 +00:00
"function" == typeof instance . getChildContext && invariant ( "object" == typeof workInProgress . type . childContextTypes , "%s.getChildContext(): childContextTypes must be defined in order to " + "use getChildContext()." , getComponentName _1 ( workInProgress ) ) ;
}
function resetInputPointers ( workInProgress , instance ) {
instance . props = workInProgress . memoizedProps , instance . state = workInProgress . memoizedState ;
}
function adoptClassInstance ( workInProgress , instance ) {
instance . updater = updater , workInProgress . stateNode = instance , ReactInstanceMap _1 . set ( instance , workInProgress ) ;
}
function constructClassInstance ( workInProgress , props ) {
var ctor = workInProgress . type , unmaskedContext = getUnmaskedContext$2 ( workInProgress ) , needsContext = isContextConsumer$1 ( workInProgress ) , context = needsContext ? getMaskedContext$2 ( workInProgress , unmaskedContext ) : emptyObject , instance = new ctor ( props , context ) ;
2017-06-09 02:01:23 +00:00
return adoptClassInstance ( workInProgress , instance ) , needsContext && cacheContext$1 ( workInProgress , unmaskedContext , context ) ,
2017-05-26 17:51:06 +00:00
instance ;
}
function callComponentWillMount ( workInProgress , instance ) {
startPhaseTimer$1 ( workInProgress , "componentWillMount" ) ;
var oldState = instance . state ;
2017-06-09 02:01:23 +00:00
instance . componentWillMount ( ) , stopPhaseTimer$1 ( ) , oldState !== instance . state && ( warning$8 ( ! 1 , "%s.componentWillMount(): Assigning directly to this.state is " + "deprecated (except inside a component's " + "constructor). Use setState instead." , getComponentName _1 ( workInProgress ) ) ,
2017-05-26 17:51:06 +00:00
updater . enqueueReplaceState ( instance , instance . state , null ) ) ;
}
function callComponentWillReceiveProps ( workInProgress , instance , newProps , newContext ) {
startPhaseTimer$1 ( workInProgress , "componentWillReceiveProps" ) ;
var oldState = instance . state ;
2017-06-09 02:01:23 +00:00
instance . componentWillReceiveProps ( newProps , newContext ) , stopPhaseTimer$1 ( ) , instance . state !== oldState && ( warning$8 ( ! 1 , "%s.componentWillReceiveProps(): Assigning directly to " + "this.state is deprecated (except inside a component's " + "constructor). Use setState instead." , getComponentName _1 ( workInProgress ) ) ,
2017-05-26 17:51:06 +00:00
updater . enqueueReplaceState ( instance , instance . state , null ) ) ;
}
function mountClassInstance ( workInProgress , priorityLevel ) {
checkClassInstance ( workInProgress ) ;
var instance = workInProgress . stateNode , state = instance . state || null , props = workInProgress . pendingProps ;
invariant ( props , "There must be pending props for an initial mount. This error is " + "likely caused by a bug in React. Please file an issue." ) ;
var unmaskedContext = getUnmaskedContext$2 ( workInProgress ) ;
2017-06-09 02:01:23 +00:00
if ( instance . props = props , instance . state = state , instance . refs = emptyObject ,
instance . context = getMaskedContext$2 ( workInProgress , unmaskedContext ) , ReactFeatureFlags _1 . enableAsyncSubtreeAPI && null != workInProgress . type && ! 0 === workInProgress . type . unstable _asyncUpdates && ( workInProgress . internalContextTag |= AsyncUpdates$1 ) ,
2017-05-26 17:51:06 +00:00
"function" == typeof instance . componentWillMount ) {
callComponentWillMount ( workInProgress , instance ) ;
var updateQueue = workInProgress . updateQueue ;
null !== updateQueue && ( instance . state = beginUpdateQueue$2 ( workInProgress , updateQueue , instance , state , props , priorityLevel ) ) ;
}
"function" == typeof instance . componentDidMount && ( workInProgress . effectTag |= Update$1 ) ;
}
function resumeMountClassInstance ( workInProgress , priorityLevel ) {
var instance = workInProgress . stateNode ;
resetInputPointers ( workInProgress , instance ) ;
var newState = workInProgress . memoizedState , newProps = workInProgress . pendingProps ;
newProps || ( newProps = workInProgress . memoizedProps , invariant ( null != newProps , "There should always be pending or memoized props. This error is " + "likely caused by a bug in React. Please file an issue." ) ) ;
var newUnmaskedContext = getUnmaskedContext$2 ( workInProgress ) , newContext = getMaskedContext$2 ( workInProgress , newUnmaskedContext ) , oldContext = instance . context , oldProps = workInProgress . memoizedProps ;
"function" != typeof instance . componentWillReceiveProps || oldProps === newProps && oldContext === newContext || callComponentWillReceiveProps ( workInProgress , instance , newProps , newContext ) ;
var updateQueue = workInProgress . updateQueue ;
2017-06-09 02:01:23 +00:00
if ( null !== updateQueue && ( newState = beginUpdateQueue$2 ( workInProgress , updateQueue , instance , newState , newProps , priorityLevel ) ) ,
! checkShouldComponentUpdate ( workInProgress , workInProgress . memoizedProps , newProps , workInProgress . memoizedState , newState , newContext ) ) return instance . props = newProps ,
2017-05-26 17:51:06 +00:00
instance . state = newState , instance . context = newContext , ! 1 ;
2017-06-09 02:01:23 +00:00
if ( instance . props = newProps , instance . state = newState , instance . context = newContext ,
2017-05-26 17:51:06 +00:00
"function" == typeof instance . componentWillMount ) {
callComponentWillMount ( workInProgress , instance ) ;
var newUpdateQueue = workInProgress . updateQueue ;
null !== newUpdateQueue && ( newState = beginUpdateQueue$2 ( workInProgress , newUpdateQueue , instance , newState , newProps , priorityLevel ) ) ;
}
2017-06-09 02:01:23 +00:00
return "function" == typeof instance . componentDidMount && ( workInProgress . effectTag |= Update$1 ) ,
2017-05-26 17:51:06 +00:00
instance . state = newState , ! 0 ;
}
function updateClassInstance ( current , workInProgress , priorityLevel ) {
var instance = workInProgress . stateNode ;
resetInputPointers ( workInProgress , instance ) ;
var oldProps = workInProgress . memoizedProps , newProps = workInProgress . pendingProps ;
newProps || ( newProps = oldProps , invariant ( null != newProps , "There should always be pending or memoized props. This error is " + "likely caused by a bug in React. Please file an issue." ) ) ;
var oldContext = instance . context , newUnmaskedContext = getUnmaskedContext$2 ( workInProgress ) , newContext = getMaskedContext$2 ( workInProgress , newUnmaskedContext ) ;
"function" != typeof instance . componentWillReceiveProps || oldProps === newProps && oldContext === newContext || callComponentWillReceiveProps ( workInProgress , instance , newProps , newContext ) ;
var updateQueue = workInProgress . updateQueue , oldState = workInProgress . memoizedState , newState = void 0 ;
2017-06-09 02:01:23 +00:00
if ( newState = null !== updateQueue ? beginUpdateQueue$2 ( workInProgress , updateQueue , instance , oldState , newProps , priorityLevel ) : oldState ,
! ( oldProps !== newProps || oldState !== newState || hasContextChanged$2 ( ) || null !== updateQueue && updateQueue . hasForceUpdate ) ) return "function" == typeof instance . componentDidUpdate && ( oldProps === current . memoizedProps && oldState === current . memoizedState || ( workInProgress . effectTag |= Update$1 ) ) ,
2017-05-26 17:51:06 +00:00
! 1 ;
var shouldUpdate = checkShouldComponentUpdate ( workInProgress , oldProps , newProps , oldState , newState , newContext ) ;
2017-06-09 02:01:23 +00:00
return shouldUpdate ? ( "function" == typeof instance . componentWillUpdate && ( startPhaseTimer$1 ( workInProgress , "componentWillUpdate" ) ,
instance . componentWillUpdate ( newProps , newState , newContext ) , stopPhaseTimer$1 ( ) ) ,
"function" == typeof instance . componentDidUpdate && ( workInProgress . effectTag |= Update$1 ) ) : ( "function" == typeof instance . componentDidUpdate && ( oldProps === current . memoizedProps && oldState === current . memoizedState || ( workInProgress . effectTag |= Update$1 ) ) ,
memoizeProps ( workInProgress , newProps ) , memoizeState ( workInProgress , newState ) ) ,
instance . props = newProps , instance . state = newState , instance . context = newContext ,
2017-05-26 17:51:06 +00:00
shouldUpdate ;
}
return {
adoptClassInstance : adoptClassInstance ,
constructClassInstance : constructClassInstance ,
mountClassInstance : mountClassInstance ,
resumeMountClassInstance : resumeMountClassInstance ,
updateClassInstance : updateClassInstance
} ;
2017-06-09 02:01:23 +00:00
} , mountChildFibersInPlace = ReactChildFiber . mountChildFibersInPlace , reconcileChildFibers = ReactChildFiber . reconcileChildFibers , reconcileChildFibersInPlace = ReactChildFiber . reconcileChildFibersInPlace , cloneChildFibers = ReactChildFiber . cloneChildFibers , beginUpdateQueue$1 = ReactFiberUpdateQueue . beginUpdateQueue , getMaskedContext$1 = ReactFiberContext . getMaskedContext , getUnmaskedContext$1 = ReactFiberContext . getUnmaskedContext , hasContextChanged$1 = ReactFiberContext . hasContextChanged , pushContextProvider$1 = ReactFiberContext . pushContextProvider , pushTopLevelContextObject$1 = ReactFiberContext . pushTopLevelContextObject , invalidateContextProvider$1 = ReactFiberContext . invalidateContextProvider , IndeterminateComponent$2 = ReactTypeOfWork . IndeterminateComponent , FunctionalComponent$1 = ReactTypeOfWork . FunctionalComponent , ClassComponent$5 = ReactTypeOfWork . ClassComponent , HostRoot$5 = ReactTypeOfWork . HostRoot , HostComponent$7 = ReactTypeOfWork . HostComponent , HostText$3 = ReactTypeOfWork . HostText , HostPortal$3 = ReactTypeOfWork . HostPortal , CoroutineComponent$1 = ReactTypeOfWork . CoroutineComponent , CoroutineHandlerPhase = ReactTypeOfWork . CoroutineHandlerPhase , YieldComponent$2 = ReactTypeOfWork . YieldComponent , Fragment$2 = ReactTypeOfWork . Fragment , NoWork$3 = ReactPriorityLevel . NoWork , OffscreenPriority$1 = ReactPriorityLevel . OffscreenPriority , PerformedWork$1 = ReactTypeOfSideEffect . PerformedWork , Placement$2 = ReactTypeOfSideEffect . Placement , ContentReset$1 = ReactTypeOfSideEffect . ContentReset , Err$1 = ReactTypeOfSideEffect . Err , Ref$1 = ReactTypeOfSideEffect . Ref , ReactCurrentOwner$2 = ReactGlobalSharedState _1 . ReactCurrentOwner , ReactDebugCurrentFiber$4 = ReactDebugCurrentFiber _1 , _require7 = ReactDebugFiberPerf _1 , cancelWorkTimer = _require7 . cancelWorkTimer , warning$6 = warning , warnedAboutStatelessRefs = { } , ReactFiberBeginWork = function ( config , hostContext , hydrationContext , scheduleUpdate , getPriorityContext ) {
2017-05-26 17:51:06 +00:00
var shouldSetTextContent = config . shouldSetTextContent , useSyncScheduling = config . useSyncScheduling , shouldDeprioritizeSubtree = config . shouldDeprioritizeSubtree , pushHostContext = hostContext . pushHostContext , pushHostContainer = hostContext . pushHostContainer , enterHydrationState = hydrationContext . enterHydrationState , resetHydrationState = hydrationContext . resetHydrationState , tryToClaimNextHydratableInstance = hydrationContext . tryToClaimNextHydratableInstance , _ReactFiberClassCompo = ReactFiberClassComponent ( scheduleUpdate , getPriorityContext , memoizeProps , memoizeState ) , adoptClassInstance = _ReactFiberClassCompo . adoptClassInstance , constructClassInstance = _ReactFiberClassCompo . constructClassInstance , mountClassInstance = _ReactFiberClassCompo . mountClassInstance , resumeMountClassInstance = _ReactFiberClassCompo . resumeMountClassInstance , updateClassInstance = _ReactFiberClassCompo . updateClassInstance ;
function markChildAsProgressed ( current , workInProgress , priorityLevel ) {
2017-06-09 02:01:23 +00:00
workInProgress . progressedChild = workInProgress . child , workInProgress . progressedPriority = priorityLevel ,
2017-05-26 17:51:06 +00:00
null !== current && ( current . progressedChild = workInProgress . progressedChild , current . progressedPriority = workInProgress . progressedPriority ) ;
}
function clearDeletions ( workInProgress ) {
workInProgress . progressedFirstDeletion = workInProgress . progressedLastDeletion = null ;
}
function transferDeletions ( workInProgress ) {
workInProgress . firstEffect = workInProgress . progressedFirstDeletion , workInProgress . lastEffect = workInProgress . progressedLastDeletion ;
}
function reconcileChildren ( current , workInProgress , nextChildren ) {
reconcileChildrenAtPriority ( current , workInProgress , nextChildren , workInProgress . pendingWorkPriority ) ;
}
function reconcileChildrenAtPriority ( current , workInProgress , nextChildren , priorityLevel ) {
2017-06-09 02:01:23 +00:00
workInProgress . memoizedProps = null , null === current ? workInProgress . child = mountChildFibersInPlace ( workInProgress , workInProgress . child , nextChildren , priorityLevel ) : current . child === workInProgress . child ? ( clearDeletions ( workInProgress ) ,
workInProgress . child = reconcileChildFibers ( workInProgress , workInProgress . child , nextChildren , priorityLevel ) ,
transferDeletions ( workInProgress ) ) : ( workInProgress . child = reconcileChildFibersInPlace ( workInProgress , workInProgress . child , nextChildren , priorityLevel ) ,
2017-05-26 17:51:06 +00:00
transferDeletions ( workInProgress ) ) , markChildAsProgressed ( current , workInProgress , priorityLevel ) ;
}
function updateFragment ( current , workInProgress ) {
var nextChildren = workInProgress . pendingProps ;
if ( hasContextChanged$1 ( ) ) null === nextChildren && ( nextChildren = workInProgress . memoizedProps ) ; else if ( null === nextChildren || workInProgress . memoizedProps === nextChildren ) return bailoutOnAlreadyFinishedWork ( current , workInProgress ) ;
2017-06-09 02:01:23 +00:00
return reconcileChildren ( current , workInProgress , nextChildren ) , memoizeProps ( workInProgress , nextChildren ) ,
2017-05-26 17:51:06 +00:00
workInProgress . child ;
}
function markRef ( current , workInProgress ) {
var ref = workInProgress . ref ;
null === ref || current && current . ref === ref || ( workInProgress . effectTag |= Ref$1 ) ;
}
function updateFunctionalComponent ( current , workInProgress ) {
var fn = workInProgress . type , nextProps = workInProgress . pendingProps , memoizedProps = workInProgress . memoizedProps ;
if ( hasContextChanged$1 ( ) ) null === nextProps && ( nextProps = memoizedProps ) ; else {
if ( null === nextProps || memoizedProps === nextProps ) return bailoutOnAlreadyFinishedWork ( current , workInProgress ) ;
2017-06-09 02:01:23 +00:00
if ( "function" == typeof fn . shouldComponentUpdate && ! fn . shouldComponentUpdate ( memoizedProps , nextProps ) ) return memoizeProps ( workInProgress , nextProps ) ,
2017-05-26 17:51:06 +00:00
bailoutOnAlreadyFinishedWork ( current , workInProgress ) ;
}
var nextChildren , unmaskedContext = getUnmaskedContext$1 ( workInProgress ) , context = getMaskedContext$1 ( workInProgress , unmaskedContext ) ;
2017-06-09 02:01:23 +00:00
return ReactCurrentOwner$2 . current = workInProgress , ReactDebugCurrentFiber$4 . phase = "render" ,
nextChildren = fn ( nextProps , context ) , ReactDebugCurrentFiber$4 . phase = null , workInProgress . effectTag |= PerformedWork$1 ,
reconcileChildren ( current , workInProgress , nextChildren ) , memoizeProps ( workInProgress , nextProps ) ,
workInProgress . child ;
2017-05-26 17:51:06 +00:00
}
function updateClassComponent ( current , workInProgress , priorityLevel ) {
var hasContext = pushContextProvider$1 ( workInProgress ) , shouldUpdate = void 0 ;
2017-06-09 02:01:23 +00:00
return null === current ? workInProgress . stateNode ? shouldUpdate = resumeMountClassInstance ( workInProgress , priorityLevel ) : ( constructClassInstance ( workInProgress , workInProgress . pendingProps ) ,
mountClassInstance ( workInProgress , priorityLevel ) , shouldUpdate = ! 0 ) : shouldUpdate = updateClassInstance ( current , workInProgress , priorityLevel ) ,
2017-05-26 17:51:06 +00:00
finishClassComponent ( current , workInProgress , shouldUpdate , hasContext ) ;
}
function finishClassComponent ( current , workInProgress , shouldUpdate , hasContext ) {
if ( markRef ( current , workInProgress ) , ! shouldUpdate ) return bailoutOnAlreadyFinishedWork ( current , workInProgress ) ;
var instance = workInProgress . stateNode ;
ReactCurrentOwner$2 . current = workInProgress ;
var nextChildren = void 0 ;
2017-06-09 02:01:23 +00:00
return ReactDebugCurrentFiber$4 . phase = "render" , nextChildren = instance . render ( ) ,
ReactDebugCurrentFiber$4 . phase = null , workInProgress . effectTag |= PerformedWork$1 ,
reconcileChildren ( current , workInProgress , nextChildren ) , memoizeState ( workInProgress , instance . state ) ,
memoizeProps ( workInProgress , instance . props ) , hasContext && invalidateContextProvider$1 ( workInProgress ) ,
workInProgress . child ;
2017-05-26 17:51:06 +00:00
}
function updateHostRoot ( current , workInProgress , priorityLevel ) {
var root = workInProgress . stateNode ;
2017-06-09 02:01:23 +00:00
root . pendingContext ? pushTopLevelContextObject$1 ( workInProgress , root . pendingContext , root . pendingContext !== root . context ) : root . context && pushTopLevelContextObject$1 ( workInProgress , root . context , ! 1 ) ,
2017-05-26 17:51:06 +00:00
pushHostContainer ( workInProgress , root . containerInfo ) ;
var updateQueue = workInProgress . updateQueue ;
if ( null !== updateQueue ) {
var prevState = workInProgress . memoizedState , state = beginUpdateQueue$1 ( workInProgress , updateQueue , null , prevState , null , priorityLevel ) ;
if ( prevState === state ) return resetHydrationState ( ) , bailoutOnAlreadyFinishedWork ( current , workInProgress ) ;
var element = state . element ;
2017-06-09 02:01:23 +00:00
return null !== current && null !== current . child || ! enterHydrationState ( workInProgress ) ? ( resetHydrationState ( ) ,
reconcileChildren ( current , workInProgress , element ) ) : ( workInProgress . effectTag |= Placement$2 ,
workInProgress . child = mountChildFibersInPlace ( workInProgress , workInProgress . child , element , priorityLevel ) ,
markChildAsProgressed ( current , workInProgress , priorityLevel ) ) , memoizeState ( workInProgress , state ) ,
workInProgress . child ;
2017-05-26 17:51:06 +00:00
}
return resetHydrationState ( ) , bailoutOnAlreadyFinishedWork ( current , workInProgress ) ;
}
function updateHostComponent ( current , workInProgress ) {
pushHostContext ( workInProgress ) , null === current && tryToClaimNextHydratableInstance ( workInProgress ) ;
2017-06-09 02:01:23 +00:00
var nextProps = workInProgress . pendingProps , type = workInProgress . type , prevProps = null !== current ? current . memoizedProps : null , memoizedProps = workInProgress . memoizedProps ;
2017-05-26 17:51:06 +00:00
if ( hasContextChanged$1 ( ) ) null === nextProps && ( nextProps = memoizedProps , invariant ( null !== nextProps , "We should always have pending or current props. This error is " + "likely caused by a bug in React. Please file an issue." ) ) ; else if ( null === nextProps || memoizedProps === nextProps ) {
2017-06-09 02:01:23 +00:00
if ( ! useSyncScheduling && shouldDeprioritizeSubtree ( type , memoizedProps ) && workInProgress . pendingWorkPriority !== OffscreenPriority$1 ) {
for ( var child = workInProgress . progressedChild ; null !== child ; ) child . pendingWorkPriority = OffscreenPriority$1 ,
2017-05-26 17:51:06 +00:00
child = child . sibling ;
return null ;
}
return bailoutOnAlreadyFinishedWork ( current , workInProgress ) ;
}
var nextChildren = nextProps . children ;
2017-06-09 02:01:23 +00:00
if ( shouldSetTextContent ( type , nextProps ) ? nextChildren = null : prevProps && shouldSetTextContent ( type , prevProps ) && ( workInProgress . effectTag |= ContentReset$1 ) ,
2017-05-26 17:51:06 +00:00
markRef ( current , workInProgress ) , ! useSyncScheduling && shouldDeprioritizeSubtree ( workInProgress . type , nextProps ) && workInProgress . pendingWorkPriority !== OffscreenPriority$1 ) {
2017-06-09 02:01:23 +00:00
if ( workInProgress . progressedPriority === OffscreenPriority$1 && ( workInProgress . child = workInProgress . progressedChild ) ,
reconcileChildrenAtPriority ( current , workInProgress , nextChildren , OffscreenPriority$1 ) ,
memoizeProps ( workInProgress , nextProps ) , workInProgress . child = null !== current ? current . child : null ,
null === current ) for ( var _child = workInProgress . progressedChild ; null !== _child ; ) _child . effectTag = Placement$2 ,
2017-05-26 17:51:06 +00:00
_child = _child . sibling ;
return null ;
}
2017-06-09 02:01:23 +00:00
return reconcileChildren ( current , workInProgress , nextChildren ) , memoizeProps ( workInProgress , nextProps ) ,
2017-05-26 17:51:06 +00:00
workInProgress . child ;
}
function updateHostText ( current , workInProgress ) {
null === current && tryToClaimNextHydratableInstance ( workInProgress ) ;
var nextProps = workInProgress . pendingProps ;
2017-06-09 02:01:23 +00:00
return null === nextProps && ( nextProps = workInProgress . memoizedProps ) , memoizeProps ( workInProgress , nextProps ) ,
2017-05-26 17:51:06 +00:00
null ;
}
function mountIndeterminateComponent ( current , workInProgress , priorityLevel ) {
invariant ( null === current , "An indeterminate component should never have mounted. This error is " + "likely caused by a bug in React. Please file an issue." ) ;
var value , fn = workInProgress . type , props = workInProgress . pendingProps , unmaskedContext = getUnmaskedContext$1 ( workInProgress ) , context = getMaskedContext$1 ( workInProgress , unmaskedContext ) ;
2017-06-09 02:01:23 +00:00
if ( ReactCurrentOwner$2 . current = workInProgress , value = fn ( props , context ) , workInProgress . effectTag |= PerformedWork$1 ,
"object" == typeof value && null !== value && "function" == typeof value . render ) {
2017-05-26 17:51:06 +00:00
workInProgress . tag = ClassComponent$5 ;
var hasContext = pushContextProvider$1 ( workInProgress ) ;
2017-06-09 02:01:23 +00:00
return adoptClassInstance ( workInProgress , value ) , mountClassInstance ( workInProgress , priorityLevel ) ,
2017-05-26 17:51:06 +00:00
finishClassComponent ( current , workInProgress , ! 0 , hasContext ) ;
}
workInProgress . tag = FunctionalComponent$1 ;
var Component = workInProgress . type ;
2017-06-09 02:01:23 +00:00
if ( Component && warning$6 ( ! Component . childContextTypes , "%s(...): childContextTypes cannot be defined on a functional component." , Component . displayName || Component . name || "Component" ) ,
2017-05-26 17:51:06 +00:00
null !== workInProgress . ref ) {
var info = "" , ownerName = ReactDebugCurrentFiber$4 . getCurrentFiberOwnerName ( ) ;
ownerName && ( info += "\n\nCheck the render method of `" + ownerName + "`." ) ;
var warningKey = ownerName || workInProgress . _debugID || "" , debugSource = workInProgress . _debugSource ;
2017-06-09 02:01:23 +00:00
debugSource && ( warningKey = debugSource . fileName + ":" + debugSource . lineNumber ) ,
warnedAboutStatelessRefs [ warningKey ] || ( warnedAboutStatelessRefs [ warningKey ] = ! 0 ,
2017-05-26 17:51:06 +00:00
warning$6 ( ! 1 , "Stateless function components cannot be given refs. " + "Attempts to access this ref will fail.%s%s" , info , ReactDebugCurrentFiber$4 . getCurrentFiberStackAddendum ( ) ) ) ;
}
2017-06-09 02:01:23 +00:00
return reconcileChildren ( current , workInProgress , value ) , memoizeProps ( workInProgress , props ) ,
2017-05-26 17:51:06 +00:00
workInProgress . child ;
}
function updateCoroutineComponent ( current , workInProgress ) {
var nextCoroutine = workInProgress . pendingProps ;
2017-06-09 02:01:23 +00:00
hasContextChanged$1 ( ) ? null === nextCoroutine && ( nextCoroutine = current && current . memoizedProps ,
2017-05-26 17:51:06 +00:00
invariant ( null !== nextCoroutine , "We should always have pending or current props. This error is " + "likely caused by a bug in React. Please file an issue." ) ) : null !== nextCoroutine && workInProgress . memoizedProps !== nextCoroutine || ( nextCoroutine = workInProgress . memoizedProps ) ;
var nextChildren = nextCoroutine . children , priorityLevel = workInProgress . pendingWorkPriority ;
2017-06-09 02:01:23 +00:00
return workInProgress . memoizedProps = null , null === current ? workInProgress . stateNode = mountChildFibersInPlace ( workInProgress , workInProgress . stateNode , nextChildren , priorityLevel ) : current . child === workInProgress . child ? ( clearDeletions ( workInProgress ) ,
workInProgress . stateNode = reconcileChildFibers ( workInProgress , workInProgress . stateNode , nextChildren , priorityLevel ) ,
transferDeletions ( workInProgress ) ) : ( workInProgress . stateNode = reconcileChildFibersInPlace ( workInProgress , workInProgress . stateNode , nextChildren , priorityLevel ) ,
transferDeletions ( workInProgress ) ) , memoizeProps ( workInProgress , nextCoroutine ) ,
2017-05-26 17:51:06 +00:00
workInProgress . stateNode ;
}
function updatePortalComponent ( current , workInProgress ) {
pushHostContainer ( workInProgress , workInProgress . stateNode . containerInfo ) ;
var priorityLevel = workInProgress . pendingWorkPriority , nextChildren = workInProgress . pendingProps ;
2017-06-09 02:01:23 +00:00
if ( hasContextChanged$1 ( ) ) null === nextChildren && ( nextChildren = current && current . memoizedProps ,
2017-05-26 17:51:06 +00:00
invariant ( null != nextChildren , "We should always have pending or current props. This error is " + "likely caused by a bug in React. Please file an issue." ) ) ; else if ( null === nextChildren || workInProgress . memoizedProps === nextChildren ) return bailoutOnAlreadyFinishedWork ( current , workInProgress ) ;
2017-06-09 02:01:23 +00:00
return null === current ? ( workInProgress . child = reconcileChildFibersInPlace ( workInProgress , workInProgress . child , nextChildren , priorityLevel ) ,
memoizeProps ( workInProgress , nextChildren ) , markChildAsProgressed ( current , workInProgress , priorityLevel ) ) : ( reconcileChildren ( current , workInProgress , nextChildren ) ,
2017-05-26 17:51:06 +00:00
memoizeProps ( workInProgress , nextChildren ) ) , workInProgress . child ;
}
function bailoutOnAlreadyFinishedWork ( current , workInProgress ) {
cancelWorkTimer ( workInProgress ) ;
var priorityLevel = workInProgress . pendingWorkPriority ;
2017-06-09 02:01:23 +00:00
return current && workInProgress . child === current . child && clearDeletions ( workInProgress ) ,
cloneChildFibers ( current , workInProgress ) , markChildAsProgressed ( current , workInProgress , priorityLevel ) ,
2017-05-26 17:51:06 +00:00
workInProgress . child ;
}
function bailoutOnLowPriority ( current , workInProgress ) {
switch ( cancelWorkTimer ( workInProgress ) , workInProgress . tag ) {
case ClassComponent$5 :
pushContextProvider$1 ( workInProgress ) ;
break ;
case HostPortal$3 :
pushHostContainer ( workInProgress , workInProgress . stateNode . containerInfo ) ;
}
return null ;
}
function memoizeProps ( workInProgress , nextProps ) {
workInProgress . memoizedProps = nextProps , workInProgress . pendingProps = null ;
}
function memoizeState ( workInProgress , nextState ) {
workInProgress . memoizedState = nextState ;
}
function beginWork ( current , workInProgress , priorityLevel ) {
if ( workInProgress . pendingWorkPriority === NoWork$3 || workInProgress . pendingWorkPriority > priorityLevel ) return bailoutOnLowPriority ( current , workInProgress ) ;
2017-06-09 02:01:23 +00:00
switch ( ReactDebugCurrentFiber$4 . current = workInProgress , workInProgress . firstEffect = null ,
workInProgress . lastEffect = null , workInProgress . progressedPriority === priorityLevel && ( workInProgress . child = workInProgress . progressedChild ) ,
2017-05-26 17:51:06 +00:00
workInProgress . tag ) {
case IndeterminateComponent$2 :
return mountIndeterminateComponent ( current , workInProgress , priorityLevel ) ;
case FunctionalComponent$1 :
return updateFunctionalComponent ( current , workInProgress ) ;
case ClassComponent$5 :
return updateClassComponent ( current , workInProgress , priorityLevel ) ;
case HostRoot$5 :
return updateHostRoot ( current , workInProgress , priorityLevel ) ;
2017-06-09 02:01:23 +00:00
case HostComponent$7 :
2017-05-26 17:51:06 +00:00
return updateHostComponent ( current , workInProgress ) ;
case HostText$3 :
return updateHostText ( current , workInProgress ) ;
case CoroutineHandlerPhase :
workInProgress . tag = CoroutineComponent$1 ;
case CoroutineComponent$1 :
return updateCoroutineComponent ( current , workInProgress ) ;
case YieldComponent$2 :
return null ;
case HostPortal$3 :
return updatePortalComponent ( current , workInProgress ) ;
case Fragment$2 :
return updateFragment ( current , workInProgress ) ;
default :
invariant ( ! 1 , "Unknown unit of work tag. This error is likely caused by a bug in " + "React. Please file an issue." ) ;
}
}
function beginFailedWork ( current , workInProgress , priorityLevel ) {
2017-06-09 02:01:23 +00:00
if ( invariant ( workInProgress . tag === ClassComponent$5 || workInProgress . tag === HostRoot$5 , "Invalid type of work. This error is likely caused by a bug in React. " + "Please file an issue." ) ,
2017-05-26 17:51:06 +00:00
workInProgress . effectTag |= Err$1 , workInProgress . pendingWorkPriority === NoWork$3 || workInProgress . pendingWorkPriority > priorityLevel ) return bailoutOnLowPriority ( current , workInProgress ) ;
2017-06-09 02:01:23 +00:00
if ( workInProgress . firstEffect = null , workInProgress . lastEffect = null , reconcileChildren ( current , workInProgress , null ) ,
2017-05-26 17:51:06 +00:00
workInProgress . tag === ClassComponent$5 ) {
var instance = workInProgress . stateNode ;
2017-06-09 02:01:23 +00:00
workInProgress . memoizedProps = instance . props , workInProgress . memoizedState = instance . state ,
2017-05-26 17:51:06 +00:00
workInProgress . pendingProps = null ;
}
return workInProgress . child ;
}
return {
beginWork : beginWork ,
beginFailedWork : beginFailedWork
} ;
2017-06-09 02:01:23 +00:00
} , reconcileChildFibers$2 = ReactChildFiber . reconcileChildFibers , popContextProvider$2 = ReactFiberContext . popContextProvider , IndeterminateComponent$3 = ReactTypeOfWork . IndeterminateComponent , FunctionalComponent$3 = ReactTypeOfWork . FunctionalComponent , ClassComponent$7 = ReactTypeOfWork . ClassComponent , HostRoot$6 = ReactTypeOfWork . HostRoot , HostComponent$8 = ReactTypeOfWork . HostComponent , HostText$5 = ReactTypeOfWork . HostText , HostPortal$5 = ReactTypeOfWork . HostPortal , CoroutineComponent$3 = ReactTypeOfWork . CoroutineComponent , CoroutineHandlerPhase$1 = ReactTypeOfWork . CoroutineHandlerPhase , YieldComponent$4 = ReactTypeOfWork . YieldComponent , Fragment$4 = ReactTypeOfWork . Fragment , Placement$4 = ReactTypeOfSideEffect . Placement , Ref$2 = ReactTypeOfSideEffect . Ref , Update$2 = ReactTypeOfSideEffect . Update , ReactDebugCurrentFiber$5 = ReactDebugCurrentFiber _1 , ReactFiberCompleteWork = function ( config , hostContext , hydrationContext ) {
var createInstance = config . createInstance , createTextInstance = config . createTextInstance , appendInitialChild = config . appendInitialChild , finalizeInitialChildren = config . finalizeInitialChildren , prepareUpdate = config . prepareUpdate , getRootHostContainer = hostContext . getRootHostContainer , popHostContext = hostContext . popHostContext , getHostContext = hostContext . getHostContext , popHostContainer = hostContext . popHostContainer , prepareToHydrateHostInstance = hydrationContext . prepareToHydrateHostInstance , prepareToHydrateHostTextInstance = hydrationContext . prepareToHydrateHostTextInstance , popHydrationState = hydrationContext . popHydrationState ;
2017-05-26 17:51:06 +00:00
function markChildAsProgressed ( current , workInProgress , priorityLevel ) {
2017-06-09 02:01:23 +00:00
workInProgress . progressedChild = workInProgress . child , workInProgress . progressedPriority = priorityLevel ,
2017-05-26 17:51:06 +00:00
null !== current && ( current . progressedChild = workInProgress . progressedChild , current . progressedPriority = workInProgress . progressedPriority ) ;
}
function markUpdate ( workInProgress ) {
workInProgress . effectTag |= Update$2 ;
}
function markRef ( workInProgress ) {
workInProgress . effectTag |= Ref$2 ;
}
function appendAllYields ( yields , workInProgress ) {
var node = workInProgress . stateNode ;
for ( node && ( node . return = workInProgress ) ; null !== node ; ) {
2017-06-09 02:01:23 +00:00
if ( node . tag === HostComponent$8 || node . tag === HostText$5 || node . tag === HostPortal$5 ) invariant ( ! 1 , "A coroutine cannot have host component children." ) ; else if ( node . tag === YieldComponent$4 ) yields . push ( node . type ) ; else if ( null !== node . child ) {
2017-05-26 17:51:06 +00:00
node . child . return = node , node = node . child ;
continue ;
}
for ( ; null === node . sibling ; ) {
if ( null === node . return || node . return === workInProgress ) return ;
node = node . return ;
}
node . sibling . return = node . return , node = node . sibling ;
}
}
function moveCoroutineToHandlerPhase ( current , workInProgress ) {
var coroutine = workInProgress . memoizedProps ;
2017-06-09 02:01:23 +00:00
invariant ( coroutine , "Should be resolved by now. This error is likely caused by a bug in " + "React. Please file an issue." ) ,
2017-05-26 17:51:06 +00:00
workInProgress . tag = CoroutineHandlerPhase$1 ;
var yields = [ ] ;
appendAllYields ( yields , workInProgress ) ;
var fn = coroutine . handler , props = coroutine . props , nextChildren = fn ( props , yields ) , currentFirstChild = null !== current ? current . child : null , priority = workInProgress . pendingWorkPriority ;
2017-06-09 02:01:23 +00:00
return workInProgress . child = reconcileChildFibers$2 ( workInProgress , currentFirstChild , nextChildren , priority ) ,
2017-05-26 17:51:06 +00:00
markChildAsProgressed ( current , workInProgress , priority ) , workInProgress . child ;
}
function appendAllChildren ( parent , workInProgress ) {
for ( var node = workInProgress . child ; null !== node ; ) {
2017-06-09 02:01:23 +00:00
if ( node . tag === HostComponent$8 || node . tag === HostText$5 ) appendInitialChild ( parent , node . stateNode ) ; else if ( node . tag === HostPortal$5 ) ; else if ( null !== node . child ) {
2017-05-26 17:51:06 +00:00
node = node . child ;
continue ;
}
if ( node === workInProgress ) return ;
for ( ; null === node . sibling ; ) {
if ( null === node . return || node . return === workInProgress ) return ;
node = node . return ;
}
node = node . sibling ;
}
}
function completeWork ( current , workInProgress ) {
switch ( ReactDebugCurrentFiber$5 . current = workInProgress , workInProgress . tag ) {
case FunctionalComponent$3 :
return null ;
case ClassComponent$7 :
return popContextProvider$2 ( workInProgress ) , null ;
case HostRoot$6 :
var fiberRoot = workInProgress . stateNode ;
2017-06-09 02:01:23 +00:00
return fiberRoot . pendingContext && ( fiberRoot . context = fiberRoot . pendingContext ,
fiberRoot . pendingContext = null ) , null !== current && null !== current . child || ( popHydrationState ( workInProgress ) ,
2017-05-26 17:51:06 +00:00
workInProgress . effectTag &= ~ Placement$4 ) , null ;
2017-06-09 02:01:23 +00:00
case HostComponent$8 :
2017-05-26 17:51:06 +00:00
popHostContext ( workInProgress ) ;
var rootContainerInstance = getRootHostContainer ( ) , type = workInProgress . type , newProps = workInProgress . memoizedProps ;
if ( null !== current && null != workInProgress . stateNode ) {
var oldProps = current . memoizedProps , instance = workInProgress . stateNode , currentHostContext = getHostContext ( ) , updatePayload = prepareUpdate ( instance , type , oldProps , newProps , rootContainerInstance , currentHostContext ) ;
2017-06-09 02:01:23 +00:00
workInProgress . updateQueue = updatePayload , updatePayload && markUpdate ( workInProgress ) ,
2017-05-26 17:51:06 +00:00
current . ref !== workInProgress . ref && markRef ( workInProgress ) ;
} else {
2017-06-09 02:01:23 +00:00
if ( ! newProps ) return invariant ( null !== workInProgress . stateNode , "We must have new props for new mounts. This error is likely " + "caused by a bug in React. Please file an issue." ) ,
2017-05-26 17:51:06 +00:00
null ;
2017-06-09 02:01:23 +00:00
var _currentHostContext = getHostContext ( ) ;
if ( popHydrationState ( workInProgress ) ) prepareToHydrateHostInstance ( workInProgress , rootContainerInstance ) && markUpdate ( workInProgress ) ; else {
var _instance = createInstance ( type , newProps , rootContainerInstance , _currentHostContext , workInProgress ) ;
appendAllChildren ( _instance , workInProgress ) , finalizeInitialChildren ( _instance , type , newProps , rootContainerInstance ) && markUpdate ( workInProgress ) ,
workInProgress . stateNode = _instance ;
}
null !== workInProgress . ref && markRef ( workInProgress ) ;
2017-05-26 17:51:06 +00:00
}
return null ;
case HostText$5 :
var newText = workInProgress . memoizedProps ;
if ( current && null != workInProgress . stateNode ) {
current . memoizedProps !== newText && markUpdate ( workInProgress ) ;
} else {
2017-06-09 02:01:23 +00:00
if ( "string" != typeof newText ) return invariant ( null !== workInProgress . stateNode , "We must have new props for new mounts. This error is likely " + "caused by a bug in React. Please file an issue." ) ,
2017-05-26 17:51:06 +00:00
null ;
2017-06-09 02:01:23 +00:00
var _rootContainerInstance = getRootHostContainer ( ) , _currentHostContext2 = getHostContext ( ) ;
popHydrationState ( workInProgress ) ? prepareToHydrateHostTextInstance ( workInProgress ) && markUpdate ( workInProgress ) : workInProgress . stateNode = createTextInstance ( newText , _rootContainerInstance , _currentHostContext2 , workInProgress ) ;
2017-05-26 17:51:06 +00:00
}
return null ;
case CoroutineComponent$3 :
return moveCoroutineToHandlerPhase ( current , workInProgress ) ;
case CoroutineHandlerPhase$1 :
return workInProgress . tag = CoroutineComponent$3 , null ;
case YieldComponent$4 :
case Fragment$4 :
return null ;
case HostPortal$5 :
return markUpdate ( workInProgress ) , popHostContainer ( workInProgress ) , null ;
case IndeterminateComponent$3 :
invariant ( ! 1 , "An indeterminate component should have become determinate before " + "completing. This error is likely caused by a bug in React. Please " + "file an issue." ) ;
default :
invariant ( ! 1 , "Unknown unit of work tag. This error is likely caused by a bug in " + "React. Please file an issue." ) ;
}
}
return {
completeWork : completeWork
} ;
} , rendererID = null , injectInternals$1 = null , onCommitRoot$1 = null , onCommitUnmount$1 = null ;
if ( "undefined" != typeof _ _REACT _DEVTOOLS _GLOBAL _HOOK _ _ && _ _REACT _DEVTOOLS _GLOBAL _HOOK _ _ . supportsFiber ) {
var inject$1 = _ _REACT _DEVTOOLS _GLOBAL _HOOK _ _ . inject , onCommitFiberRoot = _ _REACT _DEVTOOLS _GLOBAL _HOOK _ _ . onCommitFiberRoot , onCommitFiberUnmount = _ _REACT _DEVTOOLS _GLOBAL _HOOK _ _ . onCommitFiberUnmount ;
injectInternals$1 = function ( internals ) {
warning ( null == rendererID , "Cannot inject into DevTools twice." ) , rendererID = inject$1 ( internals ) ;
} , onCommitRoot$1 = function ( root ) {
if ( null != rendererID ) try {
onCommitFiberRoot ( rendererID , root ) ;
} catch ( err ) {
warning ( ! 1 , "React DevTools encountered an error: %s" , err ) ;
}
} , onCommitUnmount$1 = function ( fiber ) {
if ( null != rendererID ) try {
onCommitFiberUnmount ( rendererID , fiber ) ;
} catch ( err ) {
warning ( ! 1 , "React DevTools encountered an error: %s" , err ) ;
}
} ;
}
var injectInternals _1 = injectInternals$1 , onCommitRoot _1 = onCommitRoot$1 , onCommitUnmount _1 = onCommitUnmount$1 , ReactFiberDevToolsHook = {
injectInternals : injectInternals _1 ,
onCommitRoot : onCommitRoot _1 ,
onCommitUnmount : onCommitUnmount _1
2017-06-09 02:01:23 +00:00
} , ClassComponent$8 = ReactTypeOfWork . ClassComponent , HostRoot$7 = ReactTypeOfWork . HostRoot , HostComponent$9 = ReactTypeOfWork . HostComponent , HostText$6 = ReactTypeOfWork . HostText , HostPortal$6 = ReactTypeOfWork . HostPortal , CoroutineComponent$4 = ReactTypeOfWork . CoroutineComponent , commitCallbacks$1 = ReactFiberUpdateQueue . commitCallbacks , onCommitUnmount = ReactFiberDevToolsHook . onCommitUnmount , invokeGuardedCallback$2 = ReactErrorUtils _1 . invokeGuardedCallback , Placement$5 = ReactTypeOfSideEffect . Placement , Update$3 = ReactTypeOfSideEffect . Update , Callback$1 = ReactTypeOfSideEffect . Callback , ContentReset$2 = ReactTypeOfSideEffect . ContentReset , _require5$2 = ReactDebugFiberPerf _1 , startPhaseTimer$2 = _require5$2 . startPhaseTimer , stopPhaseTimer$2 = _require5$2 . stopPhaseTimer , ReactFiberCommitWork = function ( config , captureError ) {
2017-05-26 17:51:06 +00:00
var commitMount = config . commitMount , commitUpdate = config . commitUpdate , resetTextContent = config . resetTextContent , commitTextUpdate = config . commitTextUpdate , appendChild = config . appendChild , insertBefore = config . insertBefore , removeChild = config . removeChild , getPublicInstance = config . getPublicInstance , callComponentWillUnmountWithTimerInDev = function ( current , instance ) {
2017-06-09 02:01:23 +00:00
startPhaseTimer$2 ( current , "componentWillUnmount" ) , instance . componentWillUnmount ( ) ,
2017-05-26 17:51:06 +00:00
stopPhaseTimer$2 ( ) ;
} ;
function safelyCallComponentWillUnmount ( current , instance ) {
var unmountError = invokeGuardedCallback$2 ( null , callComponentWillUnmountWithTimerInDev , null , current , instance ) ;
unmountError && captureError ( current , unmountError ) ;
}
function safelyDetachRef ( current ) {
var ref = current . ref ;
if ( null !== ref ) {
var refError = invokeGuardedCallback$2 ( null , ref , null , null ) ;
null !== refError && captureError ( current , refError ) ;
}
}
function getHostParent ( fiber ) {
for ( var parent = fiber . return ; null !== parent ; ) {
switch ( parent . tag ) {
2017-06-09 02:01:23 +00:00
case HostComponent$9 :
2017-05-26 17:51:06 +00:00
return parent . stateNode ;
case HostRoot$7 :
case HostPortal$6 :
return parent . stateNode . containerInfo ;
}
parent = parent . return ;
}
invariant ( ! 1 , "Expected to find a host parent. This error is likely caused by a bug " + "in React. Please file an issue." ) ;
}
function getHostParentFiber ( fiber ) {
for ( var parent = fiber . return ; null !== parent ; ) {
if ( isHostParent ( parent ) ) return parent ;
parent = parent . return ;
}
invariant ( ! 1 , "Expected to find a host parent. This error is likely caused by a bug " + "in React. Please file an issue." ) ;
}
function isHostParent ( fiber ) {
2017-06-09 02:01:23 +00:00
return fiber . tag === HostComponent$9 || fiber . tag === HostRoot$7 || fiber . tag === HostPortal$6 ;
2017-05-26 17:51:06 +00:00
}
function getHostSibling ( fiber ) {
var node = fiber ;
siblings : for ( ; ! 0 ; ) {
for ( ; null === node . sibling ; ) {
if ( null === node . return || isHostParent ( node . return ) ) return null ;
node = node . return ;
}
2017-06-09 02:01:23 +00:00
for ( node . sibling . return = node . return , node = node . sibling ; node . tag !== HostComponent$9 && node . tag !== HostText$6 ; ) {
2017-05-26 17:51:06 +00:00
if ( node . effectTag & Placement$5 ) continue siblings ;
if ( null === node . child || node . tag === HostPortal$6 ) continue siblings ;
node . child . return = node , node = node . child ;
}
if ( ! ( node . effectTag & Placement$5 ) ) return node . stateNode ;
}
}
function commitPlacement ( finishedWork ) {
var parentFiber = getHostParentFiber ( finishedWork ) , parent = void 0 ;
switch ( parentFiber . tag ) {
2017-06-09 02:01:23 +00:00
case HostComponent$9 :
2017-05-26 17:51:06 +00:00
parent = parentFiber . stateNode ;
break ;
case HostRoot$7 :
case HostPortal$6 :
parent = parentFiber . stateNode . containerInfo ;
break ;
default :
invariant ( ! 1 , "Invalid host parent fiber. This error is likely caused by a bug " + "in React. Please file an issue." ) ;
}
parentFiber . effectTag & ContentReset$2 && ( resetTextContent ( parent ) , parentFiber . effectTag &= ~ ContentReset$2 ) ;
for ( var before = getHostSibling ( finishedWork ) , node = finishedWork ; ! 0 ; ) {
2017-06-09 02:01:23 +00:00
if ( node . tag === HostComponent$9 || node . tag === HostText$6 ) before ? insertBefore ( parent , node . stateNode , before ) : appendChild ( parent , node . stateNode ) ; else if ( node . tag === HostPortal$6 ) ; else if ( null !== node . child ) {
2017-05-26 17:51:06 +00:00
node . child . return = node , node = node . child ;
continue ;
}
if ( node === finishedWork ) return ;
for ( ; null === node . sibling ; ) {
if ( null === node . return || node . return === finishedWork ) return ;
node = node . return ;
}
node . sibling . return = node . return , node = node . sibling ;
}
}
function commitNestedUnmounts ( root ) {
for ( var node = root ; ! 0 ; ) if ( commitUnmount ( node ) , null === node . child || node . tag === HostPortal$6 ) {
if ( node === root ) return ;
for ( ; null === node . sibling ; ) {
if ( null === node . return || node . return === root ) return ;
node = node . return ;
}
node . sibling . return = node . return , node = node . sibling ;
} else node . child . return = node , node = node . child ;
}
function unmountHostComponents ( parent , current ) {
for ( var node = current ; ! 0 ; ) {
2017-06-09 02:01:23 +00:00
if ( node . tag === HostComponent$9 || node . tag === HostText$6 ) commitNestedUnmounts ( node ) ,
2017-05-26 17:51:06 +00:00
removeChild ( parent , node . stateNode ) ; else if ( node . tag === HostPortal$6 ) {
if ( parent = node . stateNode . containerInfo , null !== node . child ) {
node . child . return = node , node = node . child ;
continue ;
}
} else if ( commitUnmount ( node ) , null !== node . child ) {
node . child . return = node , node = node . child ;
continue ;
}
if ( node === current ) return ;
for ( ; null === node . sibling ; ) {
if ( null === node . return || node . return === current ) return ;
node = node . return , node . tag === HostPortal$6 && ( parent = getHostParent ( node ) ) ;
}
node . sibling . return = node . return , node = node . sibling ;
}
}
function commitDeletion ( current ) {
2017-06-09 02:01:23 +00:00
unmountHostComponents ( getHostParent ( current ) , current ) , current . return = null , current . child = null ,
2017-05-26 17:51:06 +00:00
current . alternate && ( current . alternate . child = null , current . alternate . return = null ) ;
}
function commitUnmount ( current ) {
switch ( "function" == typeof onCommitUnmount && onCommitUnmount ( current ) , current . tag ) {
case ClassComponent$8 :
safelyDetachRef ( current ) ;
var instance = current . stateNode ;
return void ( "function" == typeof instance . componentWillUnmount && safelyCallComponentWillUnmount ( current , instance ) ) ;
2017-06-09 02:01:23 +00:00
case HostComponent$9 :
2017-05-26 17:51:06 +00:00
return void safelyDetachRef ( current ) ;
case CoroutineComponent$4 :
return void commitNestedUnmounts ( current . stateNode ) ;
case HostPortal$6 :
return void unmountHostComponents ( getHostParent ( current ) , current ) ;
}
}
function commitWork ( current , finishedWork ) {
switch ( finishedWork . tag ) {
case ClassComponent$8 :
return ;
2017-06-09 02:01:23 +00:00
case HostComponent$9 :
2017-05-26 17:51:06 +00:00
var instance = finishedWork . stateNode ;
2017-06-09 02:01:23 +00:00
if ( null != instance ) {
var newProps = finishedWork . memoizedProps , oldProps = null !== current ? current . memoizedProps : newProps , type = finishedWork . type , updatePayload = finishedWork . updateQueue ;
2017-05-26 17:51:06 +00:00
finishedWork . updateQueue = null , null !== updatePayload && commitUpdate ( instance , updatePayload , type , oldProps , newProps , finishedWork ) ;
}
return ;
case HostText$6 :
2017-06-09 02:01:23 +00:00
invariant ( null !== finishedWork . stateNode , "This should have a text node initialized. This error is likely " + "caused by a bug in React. Please file an issue." ) ;
var textInstance = finishedWork . stateNode , newText = finishedWork . memoizedProps , oldText = null !== current ? current . memoizedProps : newText ;
2017-05-26 17:51:06 +00:00
return void commitTextUpdate ( textInstance , oldText , newText ) ;
case HostRoot$7 :
case HostPortal$6 :
return ;
default :
invariant ( ! 1 , "This unit of work tag should not have side-effects. This error is " + "likely caused by a bug in React. Please file an issue." ) ;
}
}
function commitLifeCycles ( current , finishedWork ) {
switch ( finishedWork . tag ) {
case ClassComponent$8 :
var instance = finishedWork . stateNode ;
2017-06-09 02:01:23 +00:00
if ( finishedWork . effectTag & Update$3 ) if ( null === current ) startPhaseTimer$2 ( finishedWork , "componentDidMount" ) ,
2017-05-26 17:51:06 +00:00
instance . componentDidMount ( ) , stopPhaseTimer$2 ( ) ; else {
var prevProps = current . memoizedProps , prevState = current . memoizedState ;
2017-06-09 02:01:23 +00:00
startPhaseTimer$2 ( finishedWork , "componentDidUpdate" ) , instance . componentDidUpdate ( prevProps , prevState ) ,
2017-05-26 17:51:06 +00:00
stopPhaseTimer$2 ( ) ;
}
return void ( finishedWork . effectTag & Callback$1 && null !== finishedWork . updateQueue && commitCallbacks$1 ( finishedWork , finishedWork . updateQueue , instance ) ) ;
case HostRoot$7 :
var updateQueue = finishedWork . updateQueue ;
if ( null !== updateQueue ) {
var _instance = finishedWork . child && finishedWork . child . stateNode ;
commitCallbacks$1 ( finishedWork , updateQueue , _instance ) ;
}
return ;
2017-06-09 02:01:23 +00:00
case HostComponent$9 :
2017-05-26 17:51:06 +00:00
var _instance2 = finishedWork . stateNode ;
if ( null === current && finishedWork . effectTag & Update$3 ) {
var type = finishedWork . type , props = finishedWork . memoizedProps ;
commitMount ( _instance2 , type , props , finishedWork ) ;
}
return ;
case HostText$6 :
case HostPortal$6 :
return ;
default :
invariant ( ! 1 , "This unit of work tag should not have side-effects. This error is " + "likely caused by a bug in React. Please file an issue." ) ;
}
}
function commitAttachRef ( finishedWork ) {
var ref = finishedWork . ref ;
if ( null !== ref ) {
2017-06-09 02:01:23 +00:00
var instance = finishedWork . stateNode ;
switch ( finishedWork . tag ) {
case HostComponent$9 :
ref ( getPublicInstance ( instance ) ) ;
break ;
default :
ref ( instance ) ;
}
2017-05-26 17:51:06 +00:00
}
}
function commitDetachRef ( current ) {
var currentRef = current . ref ;
null !== currentRef && currentRef ( null ) ;
}
return {
commitPlacement : commitPlacement ,
commitDeletion : commitDeletion ,
commitWork : commitWork ,
commitLifeCycles : commitLifeCycles ,
commitAttachRef : commitAttachRef ,
commitDetachRef : commitDetachRef
} ;
} , createCursor$2 = ReactFiberStack . createCursor , pop$2 = ReactFiberStack . pop , push$2 = ReactFiberStack . push , NO _CONTEXT = { } , ReactFiberHostContext = function ( config ) {
var getChildHostContext = config . getChildHostContext , getRootHostContext = config . getRootHostContext , contextStackCursor = createCursor$2 ( NO _CONTEXT ) , contextFiberStackCursor = createCursor$2 ( NO _CONTEXT ) , rootInstanceStackCursor = createCursor$2 ( NO _CONTEXT ) ;
function requiredContext ( c ) {
2017-06-09 02:01:23 +00:00
return invariant ( c !== NO _CONTEXT , "Expected host context to exist. This error is likely caused by a bug " + "in React. Please file an issue." ) ,
2017-05-26 17:51:06 +00:00
c ;
}
function getRootHostContainer ( ) {
return requiredContext ( rootInstanceStackCursor . current ) ;
}
function pushHostContainer ( fiber , nextRootInstance ) {
push$2 ( rootInstanceStackCursor , nextRootInstance , fiber ) ;
var nextRootContext = getRootHostContext ( nextRootInstance ) ;
push$2 ( contextFiberStackCursor , fiber , fiber ) , push$2 ( contextStackCursor , nextRootContext , fiber ) ;
}
function popHostContainer ( fiber ) {
pop$2 ( contextStackCursor , fiber ) , pop$2 ( contextFiberStackCursor , fiber ) , pop$2 ( rootInstanceStackCursor , fiber ) ;
}
function getHostContext ( ) {
return requiredContext ( contextStackCursor . current ) ;
}
function pushHostContext ( fiber ) {
var rootInstance = requiredContext ( rootInstanceStackCursor . current ) , context = requiredContext ( contextStackCursor . current ) , nextContext = getChildHostContext ( context , fiber . type , rootInstance ) ;
context !== nextContext && ( push$2 ( contextFiberStackCursor , fiber , fiber ) , push$2 ( contextStackCursor , nextContext , fiber ) ) ;
}
function popHostContext ( fiber ) {
2017-06-09 02:01:23 +00:00
contextFiberStackCursor . current === fiber && ( pop$2 ( contextStackCursor , fiber ) ,
2017-05-26 17:51:06 +00:00
pop$2 ( contextFiberStackCursor , fiber ) ) ;
}
function resetHostContainer ( ) {
contextStackCursor . current = NO _CONTEXT , rootInstanceStackCursor . current = NO _CONTEXT ;
}
return {
getHostContext : getHostContext ,
getRootHostContainer : getRootHostContainer ,
popHostContainer : popHostContainer ,
popHostContext : popHostContext ,
pushHostContainer : pushHostContainer ,
pushHostContext : pushHostContext ,
resetHostContainer : resetHostContainer
} ;
2017-06-09 02:01:23 +00:00
} , HostComponent$10 = ReactTypeOfWork . HostComponent , HostText$7 = ReactTypeOfWork . HostText , HostRoot$8 = ReactTypeOfWork . HostRoot , Deletion$2 = ReactTypeOfSideEffect . Deletion , Placement$6 = ReactTypeOfSideEffect . Placement , createFiberFromHostInstanceForDeletion$1 = ReactFiber . createFiberFromHostInstanceForDeletion , ReactFiberHydrationContext = function ( config ) {
2017-05-26 17:51:06 +00:00
var shouldSetTextContent = config . shouldSetTextContent , canHydrateInstance = config . canHydrateInstance , canHydrateTextInstance = config . canHydrateTextInstance , getNextHydratableSibling = config . getNextHydratableSibling , getFirstHydratableChild = config . getFirstHydratableChild , hydrateInstance = config . hydrateInstance , hydrateTextInstance = config . hydrateTextInstance ;
if ( ! ( canHydrateInstance && canHydrateTextInstance && getNextHydratableSibling && getFirstHydratableChild && hydrateInstance && hydrateTextInstance ) ) return {
enterHydrationState : function ( ) {
return ! 1 ;
} ,
resetHydrationState : function ( ) { } ,
tryToClaimNextHydratableInstance : function ( ) { } ,
2017-06-09 02:01:23 +00:00
prepareToHydrateHostInstance : function ( ) {
2017-05-26 17:51:06 +00:00
invariant ( ! 1 , "React bug." ) ;
} ,
2017-06-09 02:01:23 +00:00
prepareToHydrateHostTextInstance : function ( ) {
2017-05-26 17:51:06 +00:00
invariant ( ! 1 , "React bug." ) ;
} ,
popHydrationState : function ( fiber ) {
return ! 1 ;
}
} ;
var hydrationParentFiber = null , nextHydratableInstance = null , isHydrating = ! 1 ;
function enterHydrationState ( fiber ) {
var parentInstance = fiber . stateNode . containerInfo ;
2017-06-09 02:01:23 +00:00
return nextHydratableInstance = getFirstHydratableChild ( parentInstance ) , hydrationParentFiber = fiber ,
2017-05-26 17:51:06 +00:00
isHydrating = ! 0 , ! 0 ;
}
function deleteHydratableInstance ( returnFiber , instance ) {
var childToDelete = createFiberFromHostInstanceForDeletion$1 ( ) ;
2017-06-09 02:01:23 +00:00
childToDelete . stateNode = instance , childToDelete . return = returnFiber , childToDelete . effectTag = Deletion$2 ,
null !== returnFiber . lastEffect ? ( returnFiber . lastEffect . nextEffect = childToDelete ,
2017-05-26 17:51:06 +00:00
returnFiber . lastEffect = childToDelete ) : returnFiber . firstEffect = returnFiber . lastEffect = childToDelete ;
}
2017-06-09 02:01:23 +00:00
function canHydrate ( fiber , nextInstance ) {
switch ( fiber . tag ) {
case HostComponent$10 :
var type = fiber . type , props = fiber . memoizedProps ;
return canHydrateInstance ( nextInstance , type , props ) ;
case HostText$7 :
return canHydrateTextInstance ( nextInstance ) ;
default :
return ! 1 ;
}
}
2017-05-26 17:51:06 +00:00
function tryToClaimNextHydratableInstance ( fiber ) {
if ( isHydrating ) {
var nextInstance = nextHydratableInstance ;
if ( ! nextInstance ) return fiber . effectTag |= Placement$6 , isHydrating = ! 1 , void ( hydrationParentFiber = fiber ) ;
2017-06-09 02:01:23 +00:00
if ( ! canHydrate ( fiber , nextInstance ) ) {
if ( ! ( nextInstance = getNextHydratableSibling ( nextInstance ) ) || ! canHydrate ( fiber , nextInstance ) ) return fiber . effectTag |= Placement$6 ,
2017-05-26 17:51:06 +00:00
isHydrating = ! 1 , void ( hydrationParentFiber = fiber ) ;
deleteHydratableInstance ( hydrationParentFiber , nextHydratableInstance ) ;
}
fiber . stateNode = nextInstance , hydrationParentFiber = fiber , nextHydratableInstance = getFirstHydratableChild ( nextInstance ) ;
}
}
2017-06-09 02:01:23 +00:00
function prepareToHydrateHostInstance ( fiber , rootContainerInstance ) {
var instance = fiber . stateNode , updatePayload = hydrateInstance ( instance , fiber . type , fiber . memoizedProps , rootContainerInstance , fiber ) ;
return fiber . updateQueue = updatePayload , null !== updatePayload ;
2017-05-26 17:51:06 +00:00
}
2017-06-09 02:01:23 +00:00
function prepareToHydrateHostTextInstance ( fiber ) {
2017-05-26 17:51:06 +00:00
var textInstance = fiber . stateNode ;
2017-06-09 02:01:23 +00:00
return hydrateTextInstance ( textInstance , fiber . memoizedProps , fiber ) ;
2017-05-26 17:51:06 +00:00
}
function popToNextHostParent ( fiber ) {
2017-06-09 02:01:23 +00:00
for ( var parent = fiber . return ; null !== parent && parent . tag !== HostComponent$10 && parent . tag !== HostRoot$8 ; ) parent = parent . return ;
2017-05-26 17:51:06 +00:00
hydrationParentFiber = parent ;
}
function popHydrationState ( fiber ) {
if ( fiber !== hydrationParentFiber ) return ! 1 ;
if ( ! isHydrating ) return popToNextHostParent ( fiber ) , isHydrating = ! 0 , ! 1 ;
2017-06-09 02:01:23 +00:00
var type = fiber . type ;
if ( fiber . tag !== HostComponent$10 || "head" !== type && "body" !== type && ! shouldSetTextContent ( type , fiber . memoizedProps ) ) for ( var nextInstance = nextHydratableInstance ; nextInstance ; ) deleteHydratableInstance ( fiber , nextInstance ) ,
2017-05-26 17:51:06 +00:00
nextInstance = getNextHydratableSibling ( nextInstance ) ;
2017-06-09 02:01:23 +00:00
return popToNextHostParent ( fiber ) , nextHydratableInstance = hydrationParentFiber ? getNextHydratableSibling ( fiber . stateNode ) : null ,
2017-05-26 17:51:06 +00:00
! 0 ;
}
function resetHydrationState ( ) {
hydrationParentFiber = null , nextHydratableInstance = null , isHydrating = ! 1 ;
}
return {
enterHydrationState : enterHydrationState ,
resetHydrationState : resetHydrationState ,
tryToClaimNextHydratableInstance : tryToClaimNextHydratableInstance ,
2017-06-09 02:01:23 +00:00
prepareToHydrateHostInstance : prepareToHydrateHostInstance ,
prepareToHydrateHostTextInstance : prepareToHydrateHostTextInstance ,
2017-05-26 17:51:06 +00:00
popHydrationState : popHydrationState
} ;
} , ReactFiberInstrumentation$2 = {
debugTool : null
2017-06-09 02:01:23 +00:00
} , ReactFiberInstrumentation _1 = ReactFiberInstrumentation$2 , popContextProvider$1 = ReactFiberContext . popContextProvider , reset$1 = ReactFiberStack . reset , getStackAddendumByWorkInProgressFiber$2 = ReactFiberComponentTreeHook . getStackAddendumByWorkInProgressFiber , logCapturedError$1 = ReactFiberErrorLogger . logCapturedError , invokeGuardedCallback$1 = ReactErrorUtils _1 . invokeGuardedCallback , ReactCurrentOwner$1 = ReactGlobalSharedState _1 . ReactCurrentOwner , cloneFiber$1 = ReactFiber . cloneFiber , onCommitRoot = ReactFiberDevToolsHook . onCommitRoot , NoWork$2 = ReactPriorityLevel . NoWork , SynchronousPriority$1 = ReactPriorityLevel . SynchronousPriority , TaskPriority$1 = ReactPriorityLevel . TaskPriority , AnimationPriority = ReactPriorityLevel . AnimationPriority , HighPriority = ReactPriorityLevel . HighPriority , LowPriority = ReactPriorityLevel . LowPriority , OffscreenPriority = ReactPriorityLevel . OffscreenPriority , AsyncUpdates = ReactTypeOfInternalContext . AsyncUpdates , PerformedWork = ReactTypeOfSideEffect . PerformedWork , Placement$1 = ReactTypeOfSideEffect . Placement , Update = ReactTypeOfSideEffect . Update , PlacementAndUpdate = ReactTypeOfSideEffect . PlacementAndUpdate , Deletion = ReactTypeOfSideEffect . Deletion , ContentReset = ReactTypeOfSideEffect . ContentReset , Callback = ReactTypeOfSideEffect . Callback , Err = ReactTypeOfSideEffect . Err , Ref = ReactTypeOfSideEffect . Ref , HostRoot$4 = ReactTypeOfWork . HostRoot , HostComponent$6 = ReactTypeOfWork . HostComponent , HostPortal$2 = ReactTypeOfWork . HostPortal , ClassComponent$4 = ReactTypeOfWork . ClassComponent , getPendingPriority$1 = ReactFiberUpdateQueue . getPendingPriority , _require14 = ReactFiberContext , resetContext$1 = _require14 . resetContext , warning$5 = warning , ReactFiberInstrumentation$1 = ReactFiberInstrumentation _1 , ReactDebugCurrentFiber$3 = ReactDebugCurrentFiber _1 , _require15 = ReactDebugFiberPerf _1 , recordEffect = _require15 . recordEffect , recordScheduleUpdate = _require15 . recordScheduleUpdate , startWorkTimer = _require15 . startWorkTimer , stopWorkTimer = _require15 . stopWorkTimer , startWorkLoopTimer = _require15 . startWorkLoopTimer , stopWorkLoopTimer = _require15 . stopWorkLoopTimer , startCommitTimer = _require15 . startCommitTimer , stopCommitTimer = _require15 . stopCommitTimer , startCommitHostEffectsTimer = _require15 . startCommitHostEffectsTimer , stopCommitHostEffectsTimer = _require15 . stopCommitHostEffectsTimer , startCommitLifeCyclesTimer = _require15 . startCommitLifeCyclesTimer , stopCommitLifeCyclesTimer = _require15 . stopCommitLifeCyclesTimer , warnAboutUpdateOnUnmounted = function ( instance ) {
2017-05-26 17:51:06 +00:00
var ctor = instance . constructor ;
warning$5 ( ! 1 , "Can only update a mounted or mounting component. This usually means " + "you called setState, replaceState, or forceUpdate on an unmounted " + "component. This is a no-op.\n\nPlease check the code for the " + "%s component." , ctor && ( ctor . displayName || ctor . name ) || "ReactClass" ) ;
} , warnAboutInvalidUpdates = function ( instance ) {
switch ( ReactDebugCurrentFiber$3 . phase ) {
case "getChildContext" :
warning$5 ( ! 1 , "setState(...): Cannot call setState() inside getChildContext()" ) ;
break ;
case "render" :
warning$5 ( ! 1 , "Cannot update during an existing state transition (such as within " + "`render` or another component's constructor). Render methods should " + "be a pure function of props and state; constructor side-effects are " + "an anti-pattern, but can be moved to `componentWillMount`." ) ;
}
} , timeHeuristicForUnitOfWork = 1 , ReactFiberScheduler = function ( config ) {
var hostContext = ReactFiberHostContext ( config ) , hydrationContext = ReactFiberHydrationContext ( config ) , popHostContainer = hostContext . popHostContainer , popHostContext = hostContext . popHostContext , resetHostContainer = hostContext . resetHostContainer , _ReactFiberBeginWork = ReactFiberBeginWork ( config , hostContext , hydrationContext , scheduleUpdate , getPriorityContext ) , beginWork = _ReactFiberBeginWork . beginWork , beginFailedWork = _ReactFiberBeginWork . beginFailedWork , _ReactFiberCompleteWo = ReactFiberCompleteWork ( config , hostContext , hydrationContext ) , completeWork = _ReactFiberCompleteWo . completeWork , _ReactFiberCommitWork = ReactFiberCommitWork ( config , captureError ) , commitPlacement = _ReactFiberCommitWork . commitPlacement , commitDeletion = _ReactFiberCommitWork . commitDeletion , commitWork = _ReactFiberCommitWork . commitWork , commitLifeCycles = _ReactFiberCommitWork . commitLifeCycles , commitAttachRef = _ReactFiberCommitWork . commitAttachRef , commitDetachRef = _ReactFiberCommitWork . commitDetachRef , hostScheduleAnimationCallback = config . scheduleAnimationCallback , hostScheduleDeferredCallback = config . scheduleDeferredCallback , useSyncScheduling = config . useSyncScheduling , prepareForCommit = config . prepareForCommit , resetAfterCommit = config . resetAfterCommit , priorityContext = NoWork$2 , priorityContextBeforeReconciliation = NoWork$2 , isPerformingWork = ! 1 , deadlineHasExpired = ! 1 , isBatchingUpdates = ! 1 , nextUnitOfWork = null , nextPriorityLevel = NoWork$2 , nextEffect = null , pendingCommit = null , nextScheduledRoot = null , lastScheduledRoot = null , isAnimationCallbackScheduled = ! 1 , isDeferredCallbackScheduled = ! 1 , capturedErrors = null , failedBoundaries = null , commitPhaseBoundaries = null , firstUncaughtError = null , fatalError = null , isCommitting = ! 1 , isUnmounting = ! 1 ;
function scheduleAnimationCallback ( callback ) {
isAnimationCallbackScheduled || ( isAnimationCallbackScheduled = ! 0 , hostScheduleAnimationCallback ( callback ) ) ;
}
function scheduleDeferredCallback ( callback ) {
isDeferredCallbackScheduled || ( isDeferredCallbackScheduled = ! 0 , hostScheduleDeferredCallback ( callback ) ) ;
}
function resetContextStack ( ) {
reset$1 ( ) , resetContext$1 ( ) , resetHostContainer ( ) ;
}
function findNextUnitOfWork ( ) {
for ( ; null !== nextScheduledRoot && nextScheduledRoot . current . pendingWorkPriority === NoWork$2 ; ) {
nextScheduledRoot . isScheduled = ! 1 ;
var next = nextScheduledRoot . nextScheduledRoot ;
2017-06-09 02:01:23 +00:00
if ( nextScheduledRoot . nextScheduledRoot = null , nextScheduledRoot === lastScheduledRoot ) return nextScheduledRoot = null ,
2017-05-26 17:51:06 +00:00
lastScheduledRoot = null , nextPriorityLevel = NoWork$2 , null ;
nextScheduledRoot = next ;
}
2017-06-09 02:01:23 +00:00
for ( var root = nextScheduledRoot , highestPriorityRoot = null , highestPriorityLevel = NoWork$2 ; null !== root ; ) root . current . pendingWorkPriority !== NoWork$2 && ( highestPriorityLevel === NoWork$2 || highestPriorityLevel > root . current . pendingWorkPriority ) && ( highestPriorityLevel = root . current . pendingWorkPriority ,
2017-05-26 17:51:06 +00:00
highestPriorityRoot = root ) , root = root . nextScheduledRoot ;
2017-06-09 02:01:23 +00:00
return null !== highestPriorityRoot ? ( nextPriorityLevel = highestPriorityLevel ,
priorityContext = nextPriorityLevel , resetContextStack ( ) , cloneFiber$1 ( highestPriorityRoot . current , highestPriorityLevel ) ) : ( nextPriorityLevel = NoWork$2 ,
2017-05-26 17:51:06 +00:00
null ) ;
}
function commitAllHostEffects ( ) {
for ( ; null !== nextEffect ; ) {
ReactDebugCurrentFiber$3 . current = nextEffect , recordEffect ( ) ;
var effectTag = nextEffect . effectTag ;
if ( effectTag & ContentReset && config . resetTextContent ( nextEffect . stateNode ) , effectTag & Ref ) {
var current = nextEffect . alternate ;
null !== current && commitDetachRef ( current ) ;
}
2017-06-09 02:01:23 +00:00
switch ( effectTag & ~ ( Callback | Err | ContentReset | Ref | PerformedWork ) ) {
2017-05-26 17:51:06 +00:00
case Placement$1 :
commitPlacement ( nextEffect ) , nextEffect . effectTag &= ~ Placement$1 ;
break ;
case PlacementAndUpdate :
commitPlacement ( nextEffect ) , nextEffect . effectTag &= ~ Placement$1 ;
var _current = nextEffect . alternate ;
commitWork ( _current , nextEffect ) ;
break ;
case Update :
var _current2 = nextEffect . alternate ;
commitWork ( _current2 , nextEffect ) ;
break ;
case Deletion :
isUnmounting = ! 0 , commitDeletion ( nextEffect ) , isUnmounting = ! 1 ;
}
nextEffect = nextEffect . nextEffect ;
}
ReactDebugCurrentFiber$3 . current = null ;
}
function commitAllLifeCycles ( ) {
for ( ; null !== nextEffect ; ) {
var effectTag = nextEffect . effectTag ;
if ( effectTag & ( Update | Callback ) ) {
recordEffect ( ) ;
var current = nextEffect . alternate ;
commitLifeCycles ( current , nextEffect ) ;
}
2017-06-09 02:01:23 +00:00
effectTag & Ref && ( recordEffect ( ) , commitAttachRef ( nextEffect ) ) , effectTag & Err && ( recordEffect ( ) ,
2017-05-26 17:51:06 +00:00
commitErrorHandling ( nextEffect ) ) ;
var next = nextEffect . nextEffect ;
nextEffect . nextEffect = null , nextEffect = next ;
}
}
function commitAllWork ( finishedWork ) {
isCommitting = ! 0 , startCommitTimer ( ) , pendingCommit = null ;
var root = finishedWork . stateNode ;
2017-06-09 02:01:23 +00:00
invariant ( root . current !== finishedWork , "Cannot commit the same tree as before. This is probably a bug " + "related to the return field. This error is likely caused by a bug " + "in React. Please file an issue." ) ,
2017-05-26 17:51:06 +00:00
ReactCurrentOwner$1 . current = null ;
var previousPriorityContext = priorityContext ;
priorityContext = TaskPriority$1 ;
var firstEffect = void 0 ;
2017-06-09 02:01:23 +00:00
for ( finishedWork . effectTag > PerformedWork ? null !== finishedWork . lastEffect ? ( finishedWork . lastEffect . nextEffect = finishedWork ,
firstEffect = finishedWork . firstEffect ) : firstEffect = finishedWork : firstEffect = finishedWork . firstEffect ,
prepareForCommit ( ) , nextEffect = firstEffect , startCommitHostEffectsTimer ( ) ; null !== nextEffect ; ) {
2017-05-26 17:51:06 +00:00
var _error = null ;
2017-06-09 02:01:23 +00:00
_error = invokeGuardedCallback$1 ( null , commitAllHostEffects , null ) , null !== _error && ( invariant ( null !== nextEffect , "Should have next effect. This error is likely caused by a bug " + "in React. Please file an issue." ) ,
2017-05-26 17:51:06 +00:00
captureError ( nextEffect , _error ) , null !== nextEffect && ( nextEffect = nextEffect . nextEffect ) ) ;
}
2017-06-09 02:01:23 +00:00
for ( stopCommitHostEffectsTimer ( ) , resetAfterCommit ( ) , root . current = finishedWork ,
2017-05-26 17:51:06 +00:00
nextEffect = firstEffect , startCommitLifeCyclesTimer ( ) ; null !== nextEffect ; ) {
var _error2 = null ;
2017-06-09 02:01:23 +00:00
_error2 = invokeGuardedCallback$1 ( null , commitAllLifeCycles , null ) , null !== _error2 && ( invariant ( null !== nextEffect , "Should have next effect. This error is likely caused by a bug " + "in React. Please file an issue." ) ,
2017-05-26 17:51:06 +00:00
captureError ( nextEffect , _error2 ) , null !== nextEffect && ( nextEffect = nextEffect . nextEffect ) ) ;
}
2017-06-09 02:01:23 +00:00
isCommitting = ! 1 , stopCommitLifeCyclesTimer ( ) , stopCommitTimer ( ) , "function" == typeof onCommitRoot && onCommitRoot ( finishedWork . stateNode ) ,
! 0 && ReactFiberInstrumentation$1 . debugTool && ReactFiberInstrumentation$1 . debugTool . onCommitWork ( finishedWork ) ,
commitPhaseBoundaries && ( commitPhaseBoundaries . forEach ( scheduleErrorRecovery ) ,
2017-05-26 17:51:06 +00:00
commitPhaseBoundaries = null ) , priorityContext = previousPriorityContext ;
}
function resetWorkPriority ( workInProgress ) {
var newPriority = NoWork$2 , queue = workInProgress . updateQueue , tag = workInProgress . tag ;
null === queue || tag !== ClassComponent$4 && tag !== HostRoot$4 || ( newPriority = getPendingPriority$1 ( queue ) ) ;
2017-06-09 02:01:23 +00:00
for ( var child = workInProgress . progressedChild ; null !== child ; ) child . pendingWorkPriority !== NoWork$2 && ( newPriority === NoWork$2 || newPriority > child . pendingWorkPriority ) && ( newPriority = child . pendingWorkPriority ) ,
2017-05-26 17:51:06 +00:00
child = child . sibling ;
workInProgress . pendingWorkPriority = newPriority ;
}
function completeUnitOfWork ( workInProgress ) {
for ( ; ! 0 ; ) {
var current = workInProgress . alternate , next = completeWork ( current , workInProgress ) , returnFiber = workInProgress . return , siblingFiber = workInProgress . sibling ;
2017-06-09 02:01:23 +00:00
if ( resetWorkPriority ( workInProgress ) , null !== next ) return stopWorkTimer ( workInProgress ) ,
! 0 && ReactFiberInstrumentation$1 . debugTool && ReactFiberInstrumentation$1 . debugTool . onCompleteWork ( workInProgress ) ,
2017-05-26 17:51:06 +00:00
next ;
2017-06-09 02:01:23 +00:00
if ( null !== returnFiber ) {
null === returnFiber . firstEffect && ( returnFiber . firstEffect = workInProgress . firstEffect ) ,
null !== workInProgress . lastEffect && ( null !== returnFiber . lastEffect && ( returnFiber . lastEffect . nextEffect = workInProgress . firstEffect ) ,
returnFiber . lastEffect = workInProgress . lastEffect ) ;
workInProgress . effectTag > PerformedWork && ( null !== returnFiber . lastEffect ? returnFiber . lastEffect . nextEffect = workInProgress : returnFiber . firstEffect = workInProgress ,
returnFiber . lastEffect = workInProgress ) ;
}
if ( stopWorkTimer ( workInProgress ) , ! 0 && ReactFiberInstrumentation$1 . debugTool && ReactFiberInstrumentation$1 . debugTool . onCompleteWork ( workInProgress ) ,
2017-05-26 17:51:06 +00:00
null !== siblingFiber ) return siblingFiber ;
2017-06-09 02:01:23 +00:00
if ( null === returnFiber ) return nextPriorityLevel < HighPriority ? commitAllWork ( workInProgress ) : pendingCommit = workInProgress ,
2017-05-26 17:51:06 +00:00
null ;
workInProgress = returnFiber ;
}
return null ;
}
function performUnitOfWork ( workInProgress ) {
var current = workInProgress . alternate ;
startWorkTimer ( workInProgress ) ;
var next = beginWork ( current , workInProgress , nextPriorityLevel ) ;
2017-06-09 02:01:23 +00:00
return ! 0 && ReactFiberInstrumentation$1 . debugTool && ReactFiberInstrumentation$1 . debugTool . onBeginWork ( workInProgress ) ,
null === next && ( next = completeUnitOfWork ( workInProgress ) ) , ReactCurrentOwner$1 . current = null ,
2017-05-26 17:51:06 +00:00
ReactDebugCurrentFiber$3 . current = null , next ;
}
function performFailedUnitOfWork ( workInProgress ) {
var current = workInProgress . alternate ;
startWorkTimer ( workInProgress ) ;
var next = beginFailedWork ( current , workInProgress , nextPriorityLevel ) ;
2017-06-09 02:01:23 +00:00
return ! 0 && ReactFiberInstrumentation$1 . debugTool && ReactFiberInstrumentation$1 . debugTool . onBeginWork ( workInProgress ) ,
null === next && ( next = completeUnitOfWork ( workInProgress ) ) , ReactCurrentOwner$1 . current = null ,
2017-05-26 17:51:06 +00:00
ReactDebugCurrentFiber$3 . current = null , next ;
}
function performDeferredWork ( deadline ) {
isDeferredCallbackScheduled = ! 1 , performWork ( OffscreenPriority , deadline ) ;
}
function performAnimationWork ( ) {
isAnimationCallbackScheduled = ! 1 , performWork ( AnimationPriority , null ) ;
}
function clearErrors ( ) {
for ( null === nextUnitOfWork && ( nextUnitOfWork = findNextUnitOfWork ( ) ) ; null !== capturedErrors && capturedErrors . size && null !== nextUnitOfWork && nextPriorityLevel !== NoWork$2 && nextPriorityLevel <= TaskPriority$1 ; ) null === ( nextUnitOfWork = hasCapturedError ( nextUnitOfWork ) ? performFailedUnitOfWork ( nextUnitOfWork ) : performUnitOfWork ( nextUnitOfWork ) ) && ( nextUnitOfWork = findNextUnitOfWork ( ) ) ;
}
function workLoop ( priorityLevel , deadline ) {
2017-06-09 02:01:23 +00:00
if ( clearErrors ( ) , null === nextUnitOfWork && ( nextUnitOfWork = findNextUnitOfWork ( ) ) ,
null !== deadline && priorityLevel > TaskPriority$1 ) for ( ; null !== nextUnitOfWork && ! deadlineHasExpired ; ) deadline . timeRemaining ( ) > timeHeuristicForUnitOfWork ? null === ( nextUnitOfWork = performUnitOfWork ( nextUnitOfWork ) ) && null !== pendingCommit && ( deadline . timeRemaining ( ) > timeHeuristicForUnitOfWork ? ( commitAllWork ( pendingCommit ) ,
nextUnitOfWork = findNextUnitOfWork ( ) , clearErrors ( ) ) : deadlineHasExpired = ! 0 ) : deadlineHasExpired = ! 0 ; else for ( ; null !== nextUnitOfWork && nextPriorityLevel !== NoWork$2 && nextPriorityLevel <= priorityLevel ; ) null === ( nextUnitOfWork = performUnitOfWork ( nextUnitOfWork ) ) && ( nextUnitOfWork = findNextUnitOfWork ( ) ,
2017-05-26 17:51:06 +00:00
clearErrors ( ) ) ;
}
function performWork ( priorityLevel , deadline ) {
2017-06-09 02:01:23 +00:00
startWorkLoopTimer ( ) , invariant ( ! isPerformingWork , "performWork was called recursively. This error is likely caused " + "by a bug in React. Please file an issue." ) ,
2017-05-26 17:51:06 +00:00
isPerformingWork = ! 0 ;
for ( var isPerformingDeferredWork = ! ! deadline ; priorityLevel !== NoWork$2 && ! fatalError ; ) {
2017-06-09 02:01:23 +00:00
invariant ( null !== deadline || priorityLevel < HighPriority , "Cannot perform deferred work without a deadline. This error is " + "likely caused by a bug in React. Please file an issue." ) ,
2017-05-26 17:51:06 +00:00
null === pendingCommit || deadlineHasExpired || commitAllWork ( pendingCommit ) , priorityContextBeforeReconciliation = priorityContext ;
var _error3 = null ;
2017-06-09 02:01:23 +00:00
if ( _error3 = invokeGuardedCallback$1 ( null , workLoop , null , priorityLevel , deadline ) ,
2017-05-26 17:51:06 +00:00
priorityContext = priorityContextBeforeReconciliation , null !== _error3 ) {
var failedWork = nextUnitOfWork ;
if ( null !== failedWork ) {
var maybeBoundary = captureError ( failedWork , _error3 ) ;
if ( null !== maybeBoundary ) {
var boundary = maybeBoundary ;
2017-06-09 02:01:23 +00:00
beginFailedWork ( boundary . alternate , boundary , priorityLevel ) , unwindContexts ( failedWork , boundary ) ,
2017-05-26 17:51:06 +00:00
nextUnitOfWork = completeUnitOfWork ( boundary ) ;
}
continue ;
}
null === fatalError && ( fatalError = _error3 ) ;
}
if ( priorityLevel = NoWork$2 , nextPriorityLevel === NoWork$2 || ! isPerformingDeferredWork || deadlineHasExpired ) switch ( nextPriorityLevel ) {
case SynchronousPriority$1 :
case TaskPriority$1 :
priorityLevel = nextPriorityLevel ;
break ;
case AnimationPriority :
scheduleAnimationCallback ( performAnimationWork ) , scheduleDeferredCallback ( performDeferredWork ) ;
break ;
case HighPriority :
case LowPriority :
case OffscreenPriority :
scheduleDeferredCallback ( performDeferredWork ) ;
} else priorityLevel = nextPriorityLevel ;
}
var errorToThrow = fatalError || firstUncaughtError ;
2017-06-09 02:01:23 +00:00
if ( isPerformingWork = ! 1 , deadlineHasExpired = ! 1 , fatalError = null , firstUncaughtError = null ,
2017-05-26 17:51:06 +00:00
capturedErrors = null , failedBoundaries = null , stopWorkLoopTimer ( ) , null !== errorToThrow ) throw errorToThrow ;
}
function captureError ( failedWork , error ) {
2017-06-09 02:01:23 +00:00
ReactCurrentOwner$1 . current = null , ReactDebugCurrentFiber$3 . current = null , ReactDebugCurrentFiber$3 . phase = null ,
2017-05-26 17:51:06 +00:00
nextUnitOfWork = null ;
var boundary = null , errorBoundaryFound = ! 1 , willRetry = ! 1 , errorBoundaryName = null ;
if ( failedWork . tag === HostRoot$4 ) boundary = failedWork , isFailedBoundary ( failedWork ) && ( fatalError = error ) ; else for ( var node = failedWork . return ; null !== node && null === boundary ; ) {
if ( node . tag === ClassComponent$4 ) {
var instance = node . stateNode ;
2017-06-09 02:01:23 +00:00
"function" == typeof instance . unstable _handleError && ( errorBoundaryFound = ! 0 ,
2017-05-26 17:51:06 +00:00
errorBoundaryName = getComponentName _1 ( node ) , boundary = node , willRetry = ! 0 ) ;
} else node . tag === HostRoot$4 && ( boundary = node ) ;
if ( isFailedBoundary ( node ) ) {
if ( isUnmounting ) return null ;
if ( null !== commitPhaseBoundaries && ( commitPhaseBoundaries . has ( node ) || null !== node . alternate && commitPhaseBoundaries . has ( node . alternate ) ) ) return null ;
boundary = null , willRetry = ! 1 ;
}
node = node . return ;
}
if ( null !== boundary ) {
null === failedBoundaries && ( failedBoundaries = new Set ( ) ) , failedBoundaries . add ( boundary ) ;
2017-06-09 02:01:23 +00:00
var _componentStack = getStackAddendumByWorkInProgressFiber$2 ( failedWork ) , _componentName = getComponentName _1 ( failedWork ) ;
2017-05-26 17:51:06 +00:00
return null === capturedErrors && ( capturedErrors = new Map ( ) ) , capturedErrors . set ( boundary , {
2017-06-09 02:01:23 +00:00
componentName : _componentName ,
2017-05-26 17:51:06 +00:00
componentStack : _componentStack ,
error : error ,
errorBoundary : errorBoundaryFound ? boundary . stateNode : null ,
errorBoundaryFound : errorBoundaryFound ,
errorBoundaryName : errorBoundaryName ,
willRetry : willRetry
2017-06-09 02:01:23 +00:00
} ) , isCommitting ? ( null === commitPhaseBoundaries && ( commitPhaseBoundaries = new Set ( ) ) ,
2017-05-26 17:51:06 +00:00
commitPhaseBoundaries . add ( boundary ) ) : scheduleErrorRecovery ( boundary ) , boundary ;
}
return null === firstUncaughtError && ( firstUncaughtError = error ) , null ;
}
function hasCapturedError ( fiber ) {
return null !== capturedErrors && ( capturedErrors . has ( fiber ) || null !== fiber . alternate && capturedErrors . has ( fiber . alternate ) ) ;
}
function isFailedBoundary ( fiber ) {
return null !== failedBoundaries && ( failedBoundaries . has ( fiber ) || null !== fiber . alternate && failedBoundaries . has ( fiber . alternate ) ) ;
}
function commitErrorHandling ( effectfulFiber ) {
var capturedError = void 0 ;
2017-06-09 02:01:23 +00:00
null !== capturedErrors && ( capturedError = capturedErrors . get ( effectfulFiber ) ,
capturedErrors . delete ( effectfulFiber ) , null == capturedError && null !== effectfulFiber . alternate && ( effectfulFiber = effectfulFiber . alternate ,
capturedError = capturedErrors . get ( effectfulFiber ) , capturedErrors . delete ( effectfulFiber ) ) ) ,
2017-05-26 17:51:06 +00:00
invariant ( null != capturedError , "No error for given unit of work. This error is likely caused by a " + "bug in React. Please file an issue." ) ;
var error = capturedError . error ;
try {
logCapturedError$1 ( capturedError ) ;
} catch ( e ) {
console . error ( e ) ;
}
switch ( effectfulFiber . tag ) {
case ClassComponent$4 :
var instance = effectfulFiber . stateNode , info = {
componentStack : capturedError . componentStack
} ;
return void instance . unstable _handleError ( error , info ) ;
case HostRoot$4 :
return void ( null === firstUncaughtError && ( firstUncaughtError = error ) ) ;
default :
invariant ( ! 1 , "Invalid type of work. This error is likely caused by a bug in " + "React. Please file an issue." ) ;
}
}
function unwindContexts ( from , to ) {
for ( var node = from ; null !== node && node !== to && node . alternate !== to ; ) {
switch ( node . tag ) {
case ClassComponent$4 :
popContextProvider$1 ( node ) ;
break ;
2017-06-09 02:01:23 +00:00
case HostComponent$6 :
2017-05-26 17:51:06 +00:00
popHostContext ( node ) ;
break ;
case HostRoot$4 :
case HostPortal$2 :
popHostContainer ( node ) ;
}
stopWorkTimer ( node ) , node = node . return ;
}
}
function scheduleRoot ( root , priorityLevel ) {
2017-06-09 02:01:23 +00:00
priorityLevel !== NoWork$2 && ( root . isScheduled || ( root . isScheduled = ! 0 , lastScheduledRoot ? ( lastScheduledRoot . nextScheduledRoot = root ,
2017-05-26 17:51:06 +00:00
lastScheduledRoot = root ) : ( nextScheduledRoot = root , lastScheduledRoot = root ) ) ) ;
}
function scheduleUpdate ( fiber , priorityLevel ) {
2017-06-09 02:01:23 +00:00
if ( recordScheduleUpdate ( ) , priorityLevel <= nextPriorityLevel && ( nextUnitOfWork = null ) ,
2017-05-26 17:51:06 +00:00
fiber . tag === ClassComponent$4 ) {
var instance = fiber . stateNode ;
warnAboutInvalidUpdates ( instance ) ;
}
for ( var node = fiber , shouldContinue = ! 0 ; null !== node && shouldContinue ; ) {
2017-06-09 02:01:23 +00:00
if ( shouldContinue = ! 1 , ( node . pendingWorkPriority === NoWork$2 || node . pendingWorkPriority > priorityLevel ) && ( shouldContinue = ! 0 ,
node . pendingWorkPriority = priorityLevel ) , null !== node . alternate && ( node . alternate . pendingWorkPriority === NoWork$2 || node . alternate . pendingWorkPriority > priorityLevel ) && ( shouldContinue = ! 0 ,
2017-05-26 17:51:06 +00:00
node . alternate . pendingWorkPriority = priorityLevel ) , null === node . return ) {
if ( node . tag !== HostRoot$4 ) return void ( fiber . tag === ClassComponent$4 && warnAboutUpdateOnUnmounted ( fiber . stateNode ) ) ;
switch ( scheduleRoot ( node . stateNode , priorityLevel ) , priorityLevel ) {
case SynchronousPriority$1 :
return void performWork ( SynchronousPriority$1 , null ) ;
case TaskPriority$1 :
return ;
case AnimationPriority :
return void scheduleAnimationCallback ( performAnimationWork ) ;
case HighPriority :
case LowPriority :
case OffscreenPriority :
return void scheduleDeferredCallback ( performDeferredWork ) ;
}
}
node = node . return ;
}
}
function getPriorityContext ( fiber , forceAsync ) {
var priorityLevel = priorityContext ;
2017-06-09 02:01:23 +00:00
return priorityLevel === NoWork$2 && ( priorityLevel = ! useSyncScheduling || fiber . internalContextTag & AsyncUpdates || forceAsync ? LowPriority : SynchronousPriority$1 ) ,
2017-05-26 17:51:06 +00:00
priorityLevel === SynchronousPriority$1 && ( isPerformingWork || isBatchingUpdates ) ? TaskPriority$1 : priorityLevel ;
}
function scheduleErrorRecovery ( fiber ) {
scheduleUpdate ( fiber , TaskPriority$1 ) ;
}
function performWithPriority ( priorityLevel , fn ) {
var previousPriorityContext = priorityContext ;
priorityContext = priorityLevel ;
try {
fn ( ) ;
} finally {
priorityContext = previousPriorityContext ;
}
}
function batchedUpdates ( fn , a ) {
var previousIsBatchingUpdates = isBatchingUpdates ;
isBatchingUpdates = ! 0 ;
try {
return fn ( a ) ;
} finally {
isBatchingUpdates = previousIsBatchingUpdates , isPerformingWork || isBatchingUpdates || performWork ( TaskPriority$1 , null ) ;
}
}
function unbatchedUpdates ( fn ) {
var previousIsBatchingUpdates = isBatchingUpdates ;
isBatchingUpdates = ! 1 ;
try {
return fn ( ) ;
} finally {
isBatchingUpdates = previousIsBatchingUpdates ;
}
}
function syncUpdates ( fn ) {
var previousPriorityContext = priorityContext ;
priorityContext = SynchronousPriority$1 ;
try {
return fn ( ) ;
} finally {
priorityContext = previousPriorityContext ;
}
}
function deferredUpdates ( fn ) {
var previousPriorityContext = priorityContext ;
priorityContext = LowPriority ;
try {
return fn ( ) ;
} finally {
priorityContext = previousPriorityContext ;
}
}
return {
scheduleUpdate : scheduleUpdate ,
getPriorityContext : getPriorityContext ,
performWithPriority : performWithPriority ,
batchedUpdates : batchedUpdates ,
unbatchedUpdates : unbatchedUpdates ,
syncUpdates : syncUpdates ,
deferredUpdates : deferredUpdates
} ;
} , getContextFiber = function ( arg ) {
invariant ( ! 1 , "Missing injection for fiber getContextForSubtree" ) ;
} ;
function getContextForSubtree ( parentComponent ) {
if ( ! parentComponent ) return emptyObject ;
var instance = ReactInstanceMap _1 . get ( parentComponent ) ;
return "number" == typeof instance . tag ? getContextFiber ( instance ) : instance . _processChildContext ( instance . _context ) ;
}
getContextForSubtree . _injectFiber = function ( fn ) {
getContextFiber = fn ;
} ;
2017-06-09 02:01:23 +00:00
var getContextForSubtree _1 = getContextForSubtree , addTopLevelUpdate = ReactFiberUpdateQueue . addTopLevelUpdate , findCurrentUnmaskedContext = ReactFiberContext . findCurrentUnmaskedContext , isContextProvider = ReactFiberContext . isContextProvider , processChildContext = ReactFiberContext . processChildContext , createFiberRoot = ReactFiberRoot . createFiberRoot , HostComponent$1 = ReactTypeOfWork . HostComponent , warning$2 = warning , ReactFiberInstrumentation = ReactFiberInstrumentation _1 , ReactDebugCurrentFiber = ReactDebugCurrentFiber _1 , getComponentName = getComponentName _1 , findCurrentHostFiber = ReactFiberTreeReflection . findCurrentHostFiber ;
2017-05-26 17:51:06 +00:00
getContextForSubtree _1 . _injectFiber ( function ( fiber ) {
var parentContext = findCurrentUnmaskedContext ( fiber ) ;
return isContextProvider ( fiber ) ? processChildContext ( fiber , parentContext , ! 1 ) : parentContext ;
} ) ;
var ReactFiberReconciler = function ( config ) {
2017-06-09 02:01:23 +00:00
var getPublicInstance = config . getPublicInstance , _ReactFiberScheduler = ReactFiberScheduler ( config ) , scheduleUpdate = _ReactFiberScheduler . scheduleUpdate , getPriorityContext = _ReactFiberScheduler . getPriorityContext , performWithPriority = _ReactFiberScheduler . performWithPriority , batchedUpdates = _ReactFiberScheduler . batchedUpdates , unbatchedUpdates = _ReactFiberScheduler . unbatchedUpdates , syncUpdates = _ReactFiberScheduler . syncUpdates , deferredUpdates = _ReactFiberScheduler . deferredUpdates ;
2017-05-26 17:51:06 +00:00
function scheduleTopLevelUpdate ( current , element , callback ) {
"render" === ReactDebugCurrentFiber . phase && null !== ReactDebugCurrentFiber . current && warning$2 ( ! 1 , "Render methods should be a pure function of props and state; " + "triggering nested component updates from render is not allowed. " + "If necessary, trigger nested updates in componentDidUpdate.\n\n" + "Check the render method of %s." , getComponentName ( ReactDebugCurrentFiber . current ) || "Unknown" ) ;
var forceAsync = ReactFeatureFlags _1 . enableAsyncSubtreeAPI && null != element && null != element . type && ! 0 === element . type . unstable _asyncUpdates , priorityLevel = getPriorityContext ( current , forceAsync ) , nextState = {
element : element
} ;
2017-06-09 02:01:23 +00:00
callback = void 0 === callback ? null : callback , warning$2 ( null === callback || "function" == typeof callback , "render(...): Expected the last optional `callback` argument to be a " + "function. Instead received: %s." , callback ) ,
2017-05-26 17:51:06 +00:00
addTopLevelUpdate ( current , nextState , callback , priorityLevel ) , scheduleUpdate ( current , priorityLevel ) ;
}
return {
createContainer : function ( containerInfo ) {
return createFiberRoot ( containerInfo ) ;
} ,
updateContainer : function ( element , container , parentComponent , callback ) {
var current = container . current ;
ReactFiberInstrumentation . debugTool && ( null === current . alternate ? ReactFiberInstrumentation . debugTool . onMountContainer ( container ) : null === element ? ReactFiberInstrumentation . debugTool . onUnmountContainer ( container ) : ReactFiberInstrumentation . debugTool . onUpdateContainer ( container ) ) ;
var context = getContextForSubtree _1 ( parentComponent ) ;
2017-06-09 02:01:23 +00:00
null === container . context ? container . context = context : container . pendingContext = context ,
2017-05-26 17:51:06 +00:00
scheduleTopLevelUpdate ( current , element , callback ) ;
} ,
performWithPriority : performWithPriority ,
batchedUpdates : batchedUpdates ,
unbatchedUpdates : unbatchedUpdates ,
syncUpdates : syncUpdates ,
deferredUpdates : deferredUpdates ,
getPublicRootInstance : function ( container ) {
var containerFiber = container . current ;
2017-06-09 02:01:23 +00:00
if ( ! containerFiber . child ) return null ;
switch ( containerFiber . child . tag ) {
case HostComponent$1 :
return getPublicInstance ( containerFiber . child . stateNode ) ;
default :
return containerFiber . child . stateNode ;
}
2017-05-26 17:51:06 +00:00
} ,
findHostInstance : function ( fiber ) {
var hostFiber = findCurrentHostFiber ( fiber ) ;
return null === hostFiber ? null : hostFiber . stateNode ;
}
} ;
} ;
function _classCallCheck ( instance , Constructor ) {
if ( ! ( instance instanceof Constructor ) ) throw new TypeError ( "Cannot call a class as a function" ) ;
}
var objects = { } , uniqueID = 1 , emptyObject$3 = { } , ReactNativePropRegistry = function ( ) {
function ReactNativePropRegistry ( ) {
_classCallCheck ( this , ReactNativePropRegistry ) ;
}
return ReactNativePropRegistry . register = function ( object ) {
var id = ++ uniqueID ;
return Object . freeze ( object ) , objects [ id ] = object , id ;
} , ReactNativePropRegistry . getByID = function ( id ) {
if ( ! id ) return emptyObject$3 ;
var object = objects [ id ] ;
2017-06-09 02:01:23 +00:00
return object || ( console . warn ( "Invalid style with id `" + id + "`. Skipping ..." ) ,
2017-05-26 17:51:06 +00:00
emptyObject$3 ) ;
} , ReactNativePropRegistry ;
} ( ) , ReactNativePropRegistry _1 = ReactNativePropRegistry , emptyObject$2 = { } , removedKeys = null , removedKeyCount = 0 ;
function defaultDiffer ( prevProp , nextProp ) {
return "object" != typeof nextProp || null === nextProp || deepDiffer ( prevProp , nextProp ) ;
}
function resolveObject ( idOrObject ) {
return "number" == typeof idOrObject ? ReactNativePropRegistry _1 . getByID ( idOrObject ) : idOrObject ;
}
function restoreDeletedValuesInNestedArray ( updatePayload , node , validAttributes ) {
if ( Array . isArray ( node ) ) for ( var i = node . length ; i -- && removedKeyCount > 0 ; ) restoreDeletedValuesInNestedArray ( updatePayload , node [ i ] , validAttributes ) ; else if ( node && removedKeyCount > 0 ) {
var obj = resolveObject ( node ) ;
for ( var propKey in removedKeys ) if ( removedKeys [ propKey ] ) {
var nextProp = obj [ propKey ] ;
if ( void 0 !== nextProp ) {
var attributeConfig = validAttributes [ propKey ] ;
if ( attributeConfig ) {
2017-06-09 02:01:23 +00:00
if ( "function" == typeof nextProp && ( nextProp = ! 0 ) , void 0 === nextProp && ( nextProp = null ) ,
2017-05-26 17:51:06 +00:00
"object" != typeof attributeConfig ) updatePayload [ propKey ] = nextProp ; else if ( "function" == typeof attributeConfig . diff || "function" == typeof attributeConfig . process ) {
var nextValue = "function" == typeof attributeConfig . process ? attributeConfig . process ( nextProp ) : nextProp ;
updatePayload [ propKey ] = nextValue ;
}
removedKeys [ propKey ] = ! 1 , removedKeyCount -- ;
}
}
}
}
}
function diffNestedArrayProperty ( updatePayload , prevArray , nextArray , validAttributes ) {
var i , minLength = prevArray . length < nextArray . length ? prevArray . length : nextArray . length ;
for ( i = 0 ; i < minLength ; i ++ ) updatePayload = diffNestedProperty ( updatePayload , prevArray [ i ] , nextArray [ i ] , validAttributes ) ;
for ( ; i < prevArray . length ; i ++ ) updatePayload = clearNestedProperty ( updatePayload , prevArray [ i ] , validAttributes ) ;
for ( ; i < nextArray . length ; i ++ ) updatePayload = addNestedProperty ( updatePayload , nextArray [ i ] , validAttributes ) ;
return updatePayload ;
}
function diffNestedProperty ( updatePayload , prevProp , nextProp , validAttributes ) {
return updatePayload || prevProp !== nextProp ? prevProp && nextProp ? Array . isArray ( prevProp ) || Array . isArray ( nextProp ) ? Array . isArray ( prevProp ) && Array . isArray ( nextProp ) ? diffNestedArrayProperty ( updatePayload , prevProp , nextProp , validAttributes ) : Array . isArray ( prevProp ) ? diffProperties ( updatePayload , flattenStyle ( prevProp ) , resolveObject ( nextProp ) , validAttributes ) : diffProperties ( updatePayload , resolveObject ( prevProp ) , flattenStyle ( nextProp ) , validAttributes ) : diffProperties ( updatePayload , resolveObject ( prevProp ) , resolveObject ( nextProp ) , validAttributes ) : nextProp ? addNestedProperty ( updatePayload , nextProp , validAttributes ) : prevProp ? clearNestedProperty ( updatePayload , prevProp , validAttributes ) : updatePayload : updatePayload ;
}
function addNestedProperty ( updatePayload , nextProp , validAttributes ) {
if ( ! nextProp ) return updatePayload ;
if ( ! Array . isArray ( nextProp ) ) return addProperties ( updatePayload , resolveObject ( nextProp ) , validAttributes ) ;
for ( var i = 0 ; i < nextProp . length ; i ++ ) updatePayload = addNestedProperty ( updatePayload , nextProp [ i ] , validAttributes ) ;
return updatePayload ;
}
function clearNestedProperty ( updatePayload , prevProp , validAttributes ) {
if ( ! prevProp ) return updatePayload ;
if ( ! Array . isArray ( prevProp ) ) return clearProperties ( updatePayload , resolveObject ( prevProp ) , validAttributes ) ;
for ( var i = 0 ; i < prevProp . length ; i ++ ) updatePayload = clearNestedProperty ( updatePayload , prevProp [ i ] , validAttributes ) ;
return updatePayload ;
}
function diffProperties ( updatePayload , prevProps , nextProps , validAttributes ) {
var attributeConfig , nextProp , prevProp ;
2017-06-09 02:01:23 +00:00
for ( var propKey in nextProps ) if ( attributeConfig = validAttributes [ propKey ] ) if ( prevProp = prevProps [ propKey ] ,
nextProp = nextProps [ propKey ] , "function" == typeof nextProp && ( nextProp = ! 0 ,
"function" == typeof prevProp && ( prevProp = ! 0 ) ) , void 0 === nextProp && ( nextProp = null ,
void 0 === prevProp && ( prevProp = null ) ) , removedKeys && ( removedKeys [ propKey ] = ! 1 ) ,
2017-05-26 17:51:06 +00:00
updatePayload && void 0 !== updatePayload [ propKey ] ) {
if ( "object" != typeof attributeConfig ) updatePayload [ propKey ] = nextProp ; else if ( "function" == typeof attributeConfig . diff || "function" == typeof attributeConfig . process ) {
var nextValue = "function" == typeof attributeConfig . process ? attributeConfig . process ( nextProp ) : nextProp ;
updatePayload [ propKey ] = nextValue ;
}
} else if ( prevProp !== nextProp ) if ( "object" != typeof attributeConfig ) defaultDiffer ( prevProp , nextProp ) && ( ( updatePayload || ( updatePayload = { } ) ) [ propKey ] = nextProp ) ; else if ( "function" == typeof attributeConfig . diff || "function" == typeof attributeConfig . process ) {
var shouldUpdate = void 0 === prevProp || ( "function" == typeof attributeConfig . diff ? attributeConfig . diff ( prevProp , nextProp ) : defaultDiffer ( prevProp , nextProp ) ) ;
2017-06-09 02:01:23 +00:00
shouldUpdate && ( nextValue = "function" == typeof attributeConfig . process ? attributeConfig . process ( nextProp ) : nextProp ,
2017-05-26 17:51:06 +00:00
( updatePayload || ( updatePayload = { } ) ) [ propKey ] = nextValue ) ;
2017-06-09 02:01:23 +00:00
} else removedKeys = null , removedKeyCount = 0 , updatePayload = diffNestedProperty ( updatePayload , prevProp , nextProp , attributeConfig ) ,
removedKeyCount > 0 && updatePayload && ( restoreDeletedValuesInNestedArray ( updatePayload , nextProp , attributeConfig ) ,
2017-05-26 17:51:06 +00:00
removedKeys = null ) ;
2017-06-09 02:01:23 +00:00
for ( propKey in prevProps ) void 0 === nextProps [ propKey ] && ( attributeConfig = validAttributes [ propKey ] ) && ( updatePayload && void 0 !== updatePayload [ propKey ] || void 0 !== ( prevProp = prevProps [ propKey ] ) && ( "object" != typeof attributeConfig || "function" == typeof attributeConfig . diff || "function" == typeof attributeConfig . process ? ( ( updatePayload || ( updatePayload = { } ) ) [ propKey ] = null ,
removedKeys || ( removedKeys = { } ) , removedKeys [ propKey ] || ( removedKeys [ propKey ] = ! 0 ,
2017-05-26 17:51:06 +00:00
removedKeyCount ++ ) ) : updatePayload = clearNestedProperty ( updatePayload , prevProp , attributeConfig ) ) ) ;
return updatePayload ;
}
function addProperties ( updatePayload , props , validAttributes ) {
return diffProperties ( updatePayload , emptyObject$2 , props , validAttributes ) ;
}
function clearProperties ( updatePayload , prevProps , validAttributes ) {
return diffProperties ( updatePayload , prevProps , emptyObject$2 , validAttributes ) ;
}
var ReactNativeAttributePayload = {
create : function ( props , validAttributes ) {
return addProperties ( null , props , validAttributes ) ;
} ,
diff : function ( prevProps , nextProps , validAttributes ) {
return diffProperties ( null , prevProps , nextProps , validAttributes ) ;
}
} , ReactNativeAttributePayload _1 = ReactNativeAttributePayload ;
function mountSafeCallback$1 ( context , callback ) {
return function ( ) {
if ( callback ) {
if ( "boolean" == typeof context . _ _isMounted ) {
if ( ! context . _ _isMounted ) return ;
} else if ( "function" == typeof context . isMounted && ! context . isMounted ( ) ) return ;
return callback . apply ( context , arguments ) ;
}
} ;
}
function throwOnStylesProp ( component , props ) {
if ( void 0 !== props . styles ) {
var owner = component . _owner || null , name = component . constructor . displayName , msg = "`styles` is not a supported property of `" + name + "`, did " + "you mean `style` (singular)?" ;
2017-06-09 02:01:23 +00:00
throw owner && owner . constructor && owner . constructor . displayName && ( msg += "\n\nCheck the `" + owner . constructor . displayName + "` parent " + " component." ) ,
2017-05-26 17:51:06 +00:00
new Error ( msg ) ;
}
}
function warnForStyleProps$1 ( props , validAttributes ) {
for ( var key in validAttributes . style ) validAttributes [ key ] || void 0 === props [ key ] || console . error ( "You are setting the style `{ " + key + ": ... }` as a prop. You " + "should nest it in a style object. " + "E.g. `{ style: { " + key + ": ... } }`" ) ;
}
var NativeMethodsMixinUtils = {
mountSafeCallback : mountSafeCallback$1 ,
throwOnStylesProp : throwOnStylesProp ,
warnForStyleProps : warnForStyleProps$1
} ;
function _classCallCheck$1 ( instance , Constructor ) {
if ( ! ( instance instanceof Constructor ) ) throw new TypeError ( "Cannot call a class as a function" ) ;
}
var mountSafeCallback = NativeMethodsMixinUtils . mountSafeCallback , warnForStyleProps = NativeMethodsMixinUtils . warnForStyleProps , ReactNativeFiberHostComponent = function ( ) {
function ReactNativeFiberHostComponent ( tag , viewConfig ) {
2017-06-09 02:01:23 +00:00
_classCallCheck$1 ( this , ReactNativeFiberHostComponent ) , this . _nativeTag = tag , this . _children = [ ] ,
2017-05-26 17:51:06 +00:00
this . viewConfig = viewConfig ;
}
return ReactNativeFiberHostComponent . prototype . blur = function ( ) {
TextInputState . blurTextInput ( this . _nativeTag ) ;
} , ReactNativeFiberHostComponent . prototype . focus = function ( ) {
TextInputState . focusTextInput ( this . _nativeTag ) ;
} , ReactNativeFiberHostComponent . prototype . measure = function ( callback ) {
UIManager . measure ( this . _nativeTag , mountSafeCallback ( this , callback ) ) ;
} , ReactNativeFiberHostComponent . prototype . measureInWindow = function ( callback ) {
UIManager . measureInWindow ( this . _nativeTag , mountSafeCallback ( this , callback ) ) ;
} , ReactNativeFiberHostComponent . prototype . measureLayout = function ( relativeToNativeNode , onSuccess , onFail ) {
UIManager . measureLayout ( this . _nativeTag , relativeToNativeNode , mountSafeCallback ( this , onFail ) , mountSafeCallback ( this , onSuccess ) ) ;
} , ReactNativeFiberHostComponent . prototype . setNativeProps = function ( nativeProps ) {
warnForStyleProps ( nativeProps , this . viewConfig . validAttributes ) ;
var updatePayload = ReactNativeAttributePayload _1 . create ( nativeProps , this . viewConfig . validAttributes ) ;
UIManager . updateView ( this . _nativeTag , this . viewConfig . uiViewClassName , updatePayload ) ;
} , ReactNativeFiberHostComponent ;
2017-06-09 02:01:23 +00:00
} ( ) , ReactNativeFiberHostComponent _1 = ReactNativeFiberHostComponent , viewConfigs = new Map ( ) , ReactNativeViewConfigRegistry = {
2017-05-26 17:51:06 +00:00
register : function ( viewConfig ) {
var name = viewConfig . uiViewClassName ;
2017-06-09 02:01:23 +00:00
return invariant ( ! viewConfigs . has ( name ) , "Tried to register two views with the same name %s" , name ) ,
viewConfigs . set ( name , viewConfig ) , name ;
2017-05-26 17:51:06 +00:00
} ,
2017-06-09 02:01:23 +00:00
get : function ( name ) {
var config = viewConfigs . get ( name ) ;
return invariant ( config , "View config not found for name %s" , name ) , config ;
2017-05-26 17:51:06 +00:00
}
} , ReactNativeViewConfigRegistry _1 = ReactNativeViewConfigRegistry , precacheFiberNode$1 = ReactNativeComponentTree _1 . precacheFiberNode , uncacheFiberNode$1 = ReactNativeComponentTree _1 . uncacheFiberNode , updateFiberProps$1 = ReactNativeComponentTree _1 . updateFiberProps ;
function recursivelyUncacheFiberNode ( node ) {
2017-06-09 02:01:23 +00:00
"number" == typeof node ? uncacheFiberNode$1 ( node ) : ( uncacheFiberNode$1 ( node . _nativeTag ) ,
2017-05-26 17:51:06 +00:00
node . _children . forEach ( recursivelyUncacheFiberNode ) ) ;
}
var NativeRenderer = ReactFiberReconciler ( {
appendChild : function ( parentInstance , child ) {
var childTag = "number" == typeof child ? child : child . _nativeTag ;
if ( "number" == typeof parentInstance ) UIManager . setChildren ( parentInstance , [ childTag ] ) ; else {
var children = parentInstance . _children , index = children . indexOf ( child ) ;
2017-06-09 02:01:23 +00:00
index >= 0 ? ( children . splice ( index , 1 ) , children . push ( child ) , UIManager . manageChildren ( parentInstance . _nativeTag , [ index ] , [ children . length - 1 ] , [ ] , [ ] , [ ] ) ) : ( children . push ( child ) ,
2017-05-26 17:51:06 +00:00
UIManager . manageChildren ( parentInstance . _nativeTag , [ ] , [ ] , [ childTag ] , [ children . length - 1 ] , [ ] ) ) ;
}
} ,
appendInitialChild : function ( parentInstance , child ) {
parentInstance . _children . push ( child ) ;
} ,
commitTextUpdate : function ( textInstance , oldText , newText ) {
UIManager . updateView ( textInstance , "RCTRawText" , {
text : newText
} ) ;
} ,
commitMount : function ( instance , type , newProps , internalInstanceHandle ) { } ,
commitUpdate : function ( instance , updatePayloadTODO , type , oldProps , newProps , internalInstanceHandle ) {
var viewConfig = instance . viewConfig ;
updateFiberProps$1 ( instance . _nativeTag , newProps ) ;
var updatePayload = ReactNativeAttributePayload _1 . diff ( oldProps , newProps , viewConfig . validAttributes ) ;
UIManager . updateView ( instance . _nativeTag , viewConfig . uiViewClassName , updatePayload ) ;
} ,
createInstance : function ( type , props , rootContainerInstance , hostContext , internalInstanceHandle ) {
var tag = ReactNativeTagHandles _1 . allocateTag ( ) , viewConfig = ReactNativeViewConfigRegistry _1 . get ( type ) ;
for ( var key in viewConfig . validAttributes ) props . hasOwnProperty ( key ) && deepFreezeAndThrowOnMutationInDev ( props [ key ] ) ;
var updatePayload = ReactNativeAttributePayload _1 . create ( props , viewConfig . validAttributes ) ;
UIManager . createView ( tag , viewConfig . uiViewClassName , rootContainerInstance , updatePayload ) ;
var component = new ReactNativeFiberHostComponent _1 ( tag , viewConfig ) ;
2017-06-09 02:01:23 +00:00
return precacheFiberNode$1 ( internalInstanceHandle , tag ) , updateFiberProps$1 ( tag , props ) ,
2017-05-26 17:51:06 +00:00
component ;
} ,
createTextInstance : function ( text , rootContainerInstance , hostContext , internalInstanceHandle ) {
var tag = ReactNativeTagHandles _1 . allocateTag ( ) ;
return UIManager . createView ( tag , "RCTRawText" , rootContainerInstance , {
text : text
} ) , precacheFiberNode$1 ( internalInstanceHandle , tag ) , tag ;
} ,
finalizeInitialChildren : function ( parentInstance , type , props , rootContainerInstance ) {
if ( 0 === parentInstance . _children . length ) return ! 1 ;
var nativeTags = parentInstance . _children . map ( function ( child ) {
return "number" == typeof child ? child : child . _nativeTag ;
} ) ;
return UIManager . setChildren ( parentInstance . _nativeTag , nativeTags ) , ! 1 ;
} ,
getRootHostContext : function ( ) {
return emptyObject ;
} ,
getChildHostContext : function ( ) {
return emptyObject ;
} ,
getPublicInstance : function ( instance ) {
return instance ;
} ,
insertBefore : function ( parentInstance , child , beforeChild ) {
invariant ( "number" != typeof parentInstance , "Container does not support insertBefore operation" ) ;
var children = parentInstance . _children , index = children . indexOf ( child ) ;
if ( index >= 0 ) {
children . splice ( index , 1 ) ;
var beforeChildIndex = children . indexOf ( beforeChild ) ;
children . splice ( beforeChildIndex , 0 , child ) , UIManager . manageChildren ( parentInstance . _nativeTag , [ index ] , [ beforeChildIndex ] , [ ] , [ ] , [ ] ) ;
} else {
var _beforeChildIndex = children . indexOf ( beforeChild ) ;
children . splice ( _beforeChildIndex , 0 , child ) ;
var childTag = "number" == typeof child ? child : child . _nativeTag ;
UIManager . manageChildren ( parentInstance . _nativeTag , [ ] , [ ] , [ childTag ] , [ _beforeChildIndex ] , [ ] ) ;
}
} ,
prepareForCommit : function ( ) { } ,
prepareUpdate : function ( instance , type , oldProps , newProps , rootContainerInstance , hostContext ) {
return emptyObject ;
} ,
removeChild : function ( parentInstance , child ) {
if ( recursivelyUncacheFiberNode ( child ) , "number" == typeof parentInstance ) UIManager . manageChildren ( parentInstance , [ ] , [ ] , [ ] , [ ] , [ 0 ] ) ; else {
var children = parentInstance . _children , index = children . indexOf ( child ) ;
children . splice ( index , 1 ) , UIManager . manageChildren ( parentInstance . _nativeTag , [ ] , [ ] , [ ] , [ ] , [ index ] ) ;
}
} ,
resetAfterCommit : function ( ) { } ,
resetTextContent : function ( instance ) { } ,
shouldDeprioritizeSubtree : function ( type , props ) {
return ! 1 ;
} ,
scheduleAnimationCallback : commonjsGlobal . requestAnimationFrame ,
scheduleDeferredCallback : commonjsGlobal . requestIdleCallback ,
2017-06-09 02:01:23 +00:00
shouldSetTextContent : function ( type , props ) {
2017-05-26 17:51:06 +00:00
return ! 1 ;
} ,
useSyncScheduling : ! 0
2017-06-09 02:01:23 +00:00
} ) , ReactNativeFiberRenderer = NativeRenderer , getClosestInstanceFromNode = ReactNativeComponentTree _1 . getClosestInstanceFromNode , findCurrentFiberUsingSlowPath$1 = ReactFiberTreeReflection . findCurrentFiberUsingSlowPath , HostComponent$11 = ReactTypeOfWork . HostComponent , getInspectorDataForViewTag = void 0 , traverseOwnerTreeUp = function ( hierarchy , instance ) {
2017-05-26 17:51:06 +00:00
instance && ( hierarchy . unshift ( instance ) , traverseOwnerTreeUp ( hierarchy , instance . _debugOwner ) ) ;
} , getOwnerHierarchy = function ( instance ) {
var hierarchy = [ ] ;
return traverseOwnerTreeUp ( hierarchy , instance ) , hierarchy ;
} , lastNonHostInstance = function ( hierarchy ) {
for ( var i = hierarchy . length - 1 ; i > 1 ; i -- ) {
var instance = hierarchy [ i ] ;
2017-06-09 02:01:23 +00:00
if ( instance . tag !== HostComponent$11 ) return instance ;
2017-05-26 17:51:06 +00:00
}
return hierarchy [ 0 ] ;
} , getHostProps = function ( fiber ) {
var host = ReactFiberTreeReflection . findCurrentHostFiber ( fiber ) ;
return host ? host . memoizedProps || emptyObject : emptyObject ;
} , getHostNode = function ( fiber , findNodeHandle ) {
for ( var hostNode = void 0 ; fiber ; ) {
2017-06-09 02:01:23 +00:00
if ( null !== fiber . stateNode && fiber . tag === HostComponent$11 && ( hostNode = findNodeHandle ( fiber . stateNode ) ) ,
2017-05-26 17:51:06 +00:00
hostNode ) return hostNode ;
fiber = fiber . child ;
}
return null ;
} , createHierarchy = function ( fiberHierarchy ) {
return fiberHierarchy . map ( function ( fiber ) {
return {
2017-06-09 02:01:23 +00:00
name : getComponentName _1 ( fiber ) ,
2017-05-26 17:51:06 +00:00
getInspectorData : function ( findNodeHandle ) {
return {
measure : function ( callback ) {
return UIManager . measure ( getHostNode ( fiber , findNodeHandle ) , callback ) ;
} ,
props : getHostProps ( fiber ) ,
source : fiber . _debugSource
} ;
}
} ;
} ) ;
} ;
getInspectorDataForViewTag = function ( viewTag ) {
2017-06-12 21:02:54 +00:00
var closestInstance = getClosestInstanceFromNode ( viewTag ) ;
if ( ! closestInstance ) return {
hierarchy : [ ] ,
props : emptyObject ,
selection : null ,
source : null
} ;
var fiber = findCurrentFiberUsingSlowPath$1 ( closestInstance ) , fiberHierarchy = getOwnerHierarchy ( fiber ) , instance = lastNonHostInstance ( fiberHierarchy ) , hierarchy = createHierarchy ( fiberHierarchy ) , props = getHostProps ( instance ) , source = instance . _debugSource ;
2017-05-26 17:51:06 +00:00
return {
hierarchy : hierarchy ,
props : props ,
selection : fiberHierarchy . indexOf ( instance ) ,
source : source
} ;
} ;
var ReactNativeFiberInspector = {
getInspectorDataForViewTag : getInspectorDataForViewTag
2017-06-12 21:02:54 +00:00
} , ReactVersion = "16.0.0-alpha.13" , ReactNativeFeatureFlags$2 = {
2017-05-26 17:51:06 +00:00
useFiber : ! 0
} , ReactNativeFeatureFlags _1 = ReactNativeFeatureFlags$2 , ReactNativeFeatureFlags$3 = Object . freeze ( {
default : ReactNativeFeatureFlags _1 ,
_ _moduleExports : ReactNativeFeatureFlags _1
} ) , ReactNativeFeatureFlags$1 = ReactNativeFeatureFlags$3 && ReactNativeFeatureFlags _1 || ReactNativeFeatureFlags$3 , ReactCurrentOwner$3 = ReactGlobalSharedState _1 . ReactCurrentOwner , injectedFindNode = ReactNativeFeatureFlags$1 . useFiber ? function ( fiber ) {
return ReactNativeFiberRenderer . findHostInstance ( fiber ) ;
} : function ( instance ) {
return instance ;
} ;
function findNodeHandle ( componentOrHandle ) {
var owner = ReactCurrentOwner$3 . current ;
2017-06-09 02:01:23 +00:00
if ( null !== owner && ( warning ( owner . _warnedAboutRefsInRender , "%s is accessing findNodeHandle inside its render(). " + "render() should be a pure function of props and state. It should " + "never access something that requires stale data from the previous " + "render, such as refs. Move this logic to componentDidMount and " + "componentDidUpdate instead." , owner . getName ( ) || "A component" ) ,
2017-05-26 17:51:06 +00:00
owner . _warnedAboutRefsInRender = ! 0 ) , null == componentOrHandle ) return null ;
if ( "number" == typeof componentOrHandle ) return componentOrHandle ;
var component = componentOrHandle , internalInstance = ReactInstanceMap _1 . get ( component ) ;
2017-06-09 02:01:23 +00:00
return internalInstance ? injectedFindNode ( internalInstance ) : component || ( invariant ( "object" == typeof component && ( "_rootNodeID" in component || "_nativeTag" in component ) || null != component . render && "function" == typeof component . render , "findNodeHandle(...): Argument is not a component " + "(type: %s, keys: %s)" , typeof component , Object . keys ( component ) ) ,
2017-05-26 17:51:06 +00:00
void invariant ( ! 1 , "findNodeHandle(...): Unable to find node handle for unmounted " + "component." ) ) ;
}
var findNodeHandle _1 = findNodeHandle , findNumericNodeHandleFiber = function ( componentOrHandle ) {
var instance = findNodeHandle _1 ( componentOrHandle ) ;
return null == instance || "number" == typeof instance ? instance : instance . _nativeTag ;
2017-06-09 02:01:23 +00:00
} , DevOnlyStubShim = null ;
function _classCallCheck$2 ( instance , Constructor ) {
if ( ! ( instance instanceof Constructor ) ) throw new TypeError ( "Cannot call a class as a function" ) ;
}
function _possibleConstructorReturn ( self , call ) {
if ( ! self ) throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ;
return ! call || "object" != typeof call && "function" != typeof call ? self : call ;
}
function _inherits ( subClass , superClass ) {
if ( "function" != typeof superClass && null !== superClass ) throw new TypeError ( "Super expression must either be null or a function, not " + typeof superClass ) ;
subClass . prototype = Object . create ( superClass && superClass . prototype , {
constructor : {
value : subClass ,
enumerable : ! 1 ,
writable : ! 0 ,
configurable : ! 0
}
} ) , superClass && ( Object . setPrototypeOf ? Object . setPrototypeOf ( subClass , superClass ) : subClass . _ _proto _ _ = superClass ) ;
}
var mountSafeCallback$2 = NativeMethodsMixinUtils . mountSafeCallback , findNumericNodeHandle = ReactNativeFeatureFlags$1 . useFiber ? findNumericNodeHandleFiber : DevOnlyStubShim , ReactNativeComponent = function ( _React$Component ) {
_inherits ( ReactNativeComponent , _React$Component ) ;
function ReactNativeComponent ( ) {
return _classCallCheck$2 ( this , ReactNativeComponent ) , _possibleConstructorReturn ( this , _React$Component . apply ( this , arguments ) ) ;
}
return ReactNativeComponent . prototype . blur = function ( ) {
TextInputState . blurTextInput ( findNumericNodeHandle ( this ) ) ;
} , ReactNativeComponent . prototype . focus = function ( ) {
TextInputState . focusTextInput ( findNumericNodeHandle ( this ) ) ;
} , ReactNativeComponent . prototype . measure = function ( callback ) {
2017-05-26 17:51:06 +00:00
UIManager . measure ( findNumericNodeHandle ( this ) , mountSafeCallback$2 ( this , callback ) ) ;
2017-06-09 02:01:23 +00:00
} , ReactNativeComponent . prototype . measureInWindow = function ( callback ) {
UIManager . measureInWindow ( findNumericNodeHandle ( this ) , mountSafeCallback$2 ( this , callback ) ) ;
} , ReactNativeComponent . prototype . measureLayout = function ( relativeToNativeNode , onSuccess , onFail ) {
UIManager . measureLayout ( findNumericNodeHandle ( this ) , relativeToNativeNode , mountSafeCallback$2 ( this , onFail ) , mountSafeCallback$2 ( this , onSuccess ) ) ;
} , ReactNativeComponent . prototype . setNativeProps = function ( nativeProps ) {
injectedSetNativeProps ( this , nativeProps ) ;
} , ReactNativeComponent ;
} ( react . Component ) ;
function setNativePropsFiber ( componentOrHandle , nativeProps ) {
var maybeInstance = void 0 ;
try {
maybeInstance = findNodeHandle _1 ( componentOrHandle ) ;
} catch ( error ) { }
if ( null != maybeInstance ) {
var viewConfig = maybeInstance . viewConfig , updatePayload = ReactNativeAttributePayload _1 . create ( nativeProps , viewConfig . validAttributes ) ;
UIManager . updateView ( maybeInstance . _nativeTag , viewConfig . uiViewClassName , updatePayload ) ;
}
}
function setNativePropsStack ( componentOrHandle , nativeProps ) {
var maybeInstance = findNodeHandle _1 ( componentOrHandle ) ;
if ( null != maybeInstance ) {
var viewConfig = void 0 ;
if ( void 0 !== maybeInstance . viewConfig ) viewConfig = maybeInstance . viewConfig ; else if ( void 0 !== maybeInstance . _instance && void 0 !== maybeInstance . _instance . viewConfig ) viewConfig = maybeInstance . _instance . viewConfig ; else {
for ( ; void 0 !== maybeInstance . _renderedComponent ; ) maybeInstance = maybeInstance . _renderedComponent ;
viewConfig = maybeInstance . viewConfig ;
}
var tag = "function" == typeof maybeInstance . getHostNode ? maybeInstance . getHostNode ( ) : maybeInstance . _rootNodeID , updatePayload = ReactNativeAttributePayload _1 . create ( nativeProps , viewConfig . validAttributes ) ;
UIManager . updateView ( tag , viewConfig . uiViewClassName , updatePayload ) ;
}
}
var injectedSetNativeProps = void 0 ;
injectedSetNativeProps = ReactNativeFeatureFlags$1 . useFiber ? setNativePropsFiber : setNativePropsStack ;
var ReactNativeComponent _1 = ReactNativeComponent , mountSafeCallback$3 = NativeMethodsMixinUtils . mountSafeCallback , throwOnStylesProp$1 = NativeMethodsMixinUtils . throwOnStylesProp , warnForStyleProps$2 = NativeMethodsMixinUtils . warnForStyleProps , findNumericNodeHandle$1 = ReactNativeFeatureFlags$1 . useFiber ? findNumericNodeHandleFiber : DevOnlyStubShim , NativeMethodsMixin = {
measure : function ( callback ) {
UIManager . measure ( findNumericNodeHandle$1 ( this ) , mountSafeCallback$3 ( this , callback ) ) ;
2017-05-26 17:51:06 +00:00
} ,
measureInWindow : function ( callback ) {
2017-06-09 02:01:23 +00:00
UIManager . measureInWindow ( findNumericNodeHandle$1 ( this ) , mountSafeCallback$3 ( this , callback ) ) ;
2017-05-26 17:51:06 +00:00
} ,
measureLayout : function ( relativeToNativeNode , onSuccess , onFail ) {
2017-06-09 02:01:23 +00:00
UIManager . measureLayout ( findNumericNodeHandle$1 ( this ) , relativeToNativeNode , mountSafeCallback$3 ( this , onFail ) , mountSafeCallback$3 ( this , onSuccess ) ) ;
2017-05-26 17:51:06 +00:00
} ,
setNativeProps : function ( nativeProps ) {
2017-06-09 02:01:23 +00:00
injectedSetNativeProps$1 ( this , nativeProps ) ;
2017-05-26 17:51:06 +00:00
} ,
focus : function ( ) {
2017-06-09 02:01:23 +00:00
TextInputState . focusTextInput ( findNumericNodeHandle$1 ( this ) ) ;
2017-05-26 17:51:06 +00:00
} ,
blur : function ( ) {
2017-06-09 02:01:23 +00:00
TextInputState . blurTextInput ( findNumericNodeHandle$1 ( this ) ) ;
2017-05-26 17:51:06 +00:00
}
} ;
2017-06-09 02:01:23 +00:00
function setNativePropsFiber$1 ( componentOrHandle , nativeProps ) {
2017-05-26 17:51:06 +00:00
var maybeInstance = void 0 ;
try {
maybeInstance = findNodeHandle _1 ( componentOrHandle ) ;
} catch ( error ) { }
if ( null != maybeInstance ) {
var viewConfig = maybeInstance . viewConfig ;
warnForStyleProps$2 ( nativeProps , viewConfig . validAttributes ) ;
var updatePayload = ReactNativeAttributePayload _1 . create ( nativeProps , viewConfig . validAttributes ) ;
UIManager . updateView ( maybeInstance . _nativeTag , viewConfig . uiViewClassName , updatePayload ) ;
}
}
2017-06-09 02:01:23 +00:00
function setNativePropsStack$1 ( componentOrHandle , nativeProps ) {
2017-05-26 17:51:06 +00:00
var maybeInstance = findNodeHandle _1 ( componentOrHandle ) ;
if ( null != maybeInstance ) {
var viewConfig = void 0 ;
if ( void 0 !== maybeInstance . viewConfig ) viewConfig = maybeInstance . viewConfig ; else if ( void 0 !== maybeInstance . _instance && void 0 !== maybeInstance . _instance . viewConfig ) viewConfig = maybeInstance . _instance . viewConfig ; else {
for ( ; void 0 !== maybeInstance . _renderedComponent ; ) maybeInstance = maybeInstance . _renderedComponent ;
viewConfig = maybeInstance . viewConfig ;
}
var tag = "function" == typeof maybeInstance . getHostNode ? maybeInstance . getHostNode ( ) : maybeInstance . _rootNodeID ;
warnForStyleProps$2 ( nativeProps , viewConfig . validAttributes ) ;
var updatePayload = ReactNativeAttributePayload _1 . create ( nativeProps , viewConfig . validAttributes ) ;
UIManager . updateView ( tag , viewConfig . uiViewClassName , updatePayload ) ;
}
}
2017-06-09 02:01:23 +00:00
var injectedSetNativeProps$1 = void 0 ;
2017-05-26 17:51:06 +00:00
2017-06-09 02:01:23 +00:00
injectedSetNativeProps$1 = ReactNativeFeatureFlags$1 . useFiber ? setNativePropsFiber$1 : setNativePropsStack$1 ;
2017-05-26 17:51:06 +00:00
var NativeMethodsMixin _DEV = NativeMethodsMixin ;
2017-06-09 02:01:23 +00:00
invariant ( ! NativeMethodsMixin _DEV . componentWillMount && ! NativeMethodsMixin _DEV . componentWillReceiveProps , "Do not override existing functions." ) ,
2017-05-26 17:51:06 +00:00
NativeMethodsMixin _DEV . componentWillMount = function ( ) {
throwOnStylesProp$1 ( this , this . props ) ;
} , NativeMethodsMixin _DEV . componentWillReceiveProps = function ( newProps ) {
throwOnStylesProp$1 ( this , newProps ) ;
} ;
var NativeMethodsMixin _1 = NativeMethodsMixin , TouchHistoryMath = {
centroidDimension : function ( touchHistory , touchesChangedAfter , isXAxis , ofCurrent ) {
var touchBank = touchHistory . touchBank , total = 0 , count = 0 , oneTouchData = 1 === touchHistory . numberActiveTouches ? touchHistory . touchBank [ touchHistory . indexOfSingleActiveTouch ] : null ;
2017-06-09 02:01:23 +00:00
if ( null !== oneTouchData ) oneTouchData . touchActive && oneTouchData . currentTimeStamp > touchesChangedAfter && ( total += ofCurrent && isXAxis ? oneTouchData . currentPageX : ofCurrent && ! isXAxis ? oneTouchData . currentPageY : ! ofCurrent && isXAxis ? oneTouchData . previousPageX : oneTouchData . previousPageY ,
2017-05-26 17:51:06 +00:00
count = 1 ) ; else for ( var i = 0 ; i < touchBank . length ; i ++ ) {
var touchTrack = touchBank [ i ] ;
if ( null !== touchTrack && void 0 !== touchTrack && touchTrack . touchActive && touchTrack . currentTimeStamp >= touchesChangedAfter ) {
var toAdd ;
2017-06-09 02:01:23 +00:00
toAdd = ofCurrent && isXAxis ? touchTrack . currentPageX : ofCurrent && ! isXAxis ? touchTrack . currentPageY : ! ofCurrent && isXAxis ? touchTrack . previousPageX : touchTrack . previousPageY ,
2017-05-26 17:51:06 +00:00
total += toAdd , count ++ ;
}
}
return count > 0 ? total / count : TouchHistoryMath . noCentroid ;
} ,
currentCentroidXOfTouchesChangedAfter : function ( touchHistory , touchesChangedAfter ) {
return TouchHistoryMath . centroidDimension ( touchHistory , touchesChangedAfter , ! 0 , ! 0 ) ;
} ,
currentCentroidYOfTouchesChangedAfter : function ( touchHistory , touchesChangedAfter ) {
return TouchHistoryMath . centroidDimension ( touchHistory , touchesChangedAfter , ! 1 , ! 0 ) ;
} ,
previousCentroidXOfTouchesChangedAfter : function ( touchHistory , touchesChangedAfter ) {
return TouchHistoryMath . centroidDimension ( touchHistory , touchesChangedAfter , ! 0 , ! 1 ) ;
} ,
previousCentroidYOfTouchesChangedAfter : function ( touchHistory , touchesChangedAfter ) {
return TouchHistoryMath . centroidDimension ( touchHistory , touchesChangedAfter , ! 1 , ! 1 ) ;
} ,
currentCentroidX : function ( touchHistory ) {
return TouchHistoryMath . centroidDimension ( touchHistory , 0 , ! 0 , ! 0 ) ;
} ,
currentCentroidY : function ( touchHistory ) {
return TouchHistoryMath . centroidDimension ( touchHistory , 0 , ! 1 , ! 0 ) ;
} ,
noCentroid : - 1
} , TouchHistoryMath _1 = TouchHistoryMath , createReactNativeComponentClassFiber = function ( viewConfig ) {
return ReactNativeViewConfigRegistry _1 . register ( viewConfig ) ;
2017-06-09 02:01:23 +00:00
} , createReactNativeComponentClassFiber _1 = createReactNativeComponentClassFiber , createReactNativeComponentClass = ReactNativeFeatureFlags$1 . useFiber ? createReactNativeComponentClassFiber _1 : DevOnlyStubShim , findNumericNodeHandle$2 = ReactNativeFeatureFlags$1 . useFiber ? findNumericNodeHandleFiber : DevOnlyStubShim ;
2017-05-26 17:51:06 +00:00
function takeSnapshot ( view , options ) {
2017-06-09 02:01:23 +00:00
return "number" != typeof view && "window" !== view && ( view = findNumericNodeHandle$2 ( view ) || "window" ) ,
2017-05-26 17:51:06 +00:00
UIManager . _ _takeSnapshot ( view , options ) ;
}
var takeSnapshot _1 = takeSnapshot , ReactInvalidSetStateWarningHook = { } , processingChildContext = ! 1 , warnInvalidSetState = function ( ) {
warning ( ! processingChildContext , "setState(...): Cannot call setState() inside getChildContext()" ) ;
} ;
ReactInvalidSetStateWarningHook = {
onBeginProcessingChildContext : function ( ) {
processingChildContext = ! 0 ;
} ,
onEndProcessingChildContext : function ( ) {
processingChildContext = ! 1 ;
} ,
onSetState : function ( ) {
warnInvalidSetState ( ) ;
}
} ;
var ReactInvalidSetStateWarningHook _1 = ReactInvalidSetStateWarningHook , ReactHostOperationHistoryHook = null , history = [ ] ;
ReactHostOperationHistoryHook = {
onHostOperation : function ( operation ) {
history . push ( operation ) ;
} ,
clearHistory : function ( ) {
ReactHostOperationHistoryHook . _preventClearing || ( history = [ ] ) ;
} ,
getHistory : function ( ) {
return history ;
}
} ;
var ReactHostOperationHistoryHook _1 = ReactHostOperationHistoryHook , ReactComponentTreeHook = ReactGlobalSharedState _1 . ReactComponentTreeHook , ReactDebugTool = null , hooks = [ ] , didHookThrowForEvent = { } , callHook = function ( event , fn , context , arg1 , arg2 , arg3 , arg4 , arg5 ) {
try {
fn . call ( context , arg1 , arg2 , arg3 , arg4 , arg5 ) ;
} catch ( e ) {
2017-06-09 02:01:23 +00:00
warning ( didHookThrowForEvent [ event ] , "Exception thrown by hook while handling %s: %s" , event , e + "\n" + e . stack ) ,
2017-05-26 17:51:06 +00:00
didHookThrowForEvent [ event ] = ! 0 ;
}
} , emitEvent = function ( event , arg1 , arg2 , arg3 , arg4 , arg5 ) {
for ( var i = 0 ; i < hooks . length ; i ++ ) {
var hook = hooks [ i ] , fn = hook [ event ] ;
fn && callHook ( event , fn , hook , arg1 , arg2 , arg3 , arg4 , arg5 ) ;
}
} , isProfiling = ! 1 , flushHistory = [ ] , lifeCycleTimerStack = [ ] , currentFlushNesting = 0 , currentFlushMeasurements = [ ] , currentFlushStartTime = 0 , currentTimerDebugID = null , currentTimerStartTime = 0 , currentTimerNestedFlushDuration = 0 , currentTimerType = null , lifeCycleTimerHasWarned = ! 1 , clearHistory = function ( ) {
ReactComponentTreeHook . purgeUnmountedComponents ( ) , ReactHostOperationHistoryHook _1 . clearHistory ( ) ;
} , getTreeSnapshot = function ( registeredIDs ) {
return registeredIDs . reduce ( function ( tree , id ) {
var ownerID = ReactComponentTreeHook . getOwnerID ( id ) , parentID = ReactComponentTreeHook . getParentID ( id ) ;
return tree [ id ] = {
displayName : ReactComponentTreeHook . getDisplayName ( id ) ,
text : ReactComponentTreeHook . getText ( id ) ,
updateCount : ReactComponentTreeHook . getUpdateCount ( id ) ,
childIDs : ReactComponentTreeHook . getChildIDs ( id ) ,
ownerID : ownerID || parentID && ReactComponentTreeHook . getOwnerID ( parentID ) || 0 ,
parentID : parentID
} , tree ;
} , { } ) ;
} , resetMeasurements = function ( ) {
var previousStartTime = currentFlushStartTime , previousMeasurements = currentFlushMeasurements , previousOperations = ReactHostOperationHistoryHook _1 . getHistory ( ) ;
2017-06-09 02:01:23 +00:00
if ( 0 === currentFlushNesting ) return currentFlushStartTime = 0 , currentFlushMeasurements = [ ] ,
2017-05-26 17:51:06 +00:00
void clearHistory ( ) ;
if ( previousMeasurements . length || previousOperations . length ) {
var registeredIDs = ReactComponentTreeHook . getRegisteredIDs ( ) ;
flushHistory . push ( {
duration : performanceNow ( ) - previousStartTime ,
measurements : previousMeasurements || [ ] ,
operations : previousOperations || [ ] ,
treeSnapshot : getTreeSnapshot ( registeredIDs )
} ) ;
}
clearHistory ( ) , currentFlushStartTime = performanceNow ( ) , currentFlushMeasurements = [ ] ;
} , checkDebugID = function ( debugID ) {
arguments . length > 1 && void 0 !== arguments [ 1 ] && arguments [ 1 ] && 0 === debugID || debugID || warning ( ! 1 , "ReactDebugTool: debugID may not be empty." ) ;
} , beginLifeCycleTimer = function ( debugID , timerType ) {
2017-06-09 02:01:23 +00:00
0 !== currentFlushNesting && ( currentTimerType && ! lifeCycleTimerHasWarned && ( warning ( ! 1 , "There is an internal error in the React performance measurement code." + "\n\nDid not expect %s timer to start while %s timer is still in " + "progress for %s instance." , timerType , currentTimerType || "no" , debugID === currentTimerDebugID ? "the same" : "another" ) ,
lifeCycleTimerHasWarned = ! 0 ) , currentTimerStartTime = performanceNow ( ) , currentTimerNestedFlushDuration = 0 ,
2017-05-26 17:51:06 +00:00
currentTimerDebugID = debugID , currentTimerType = timerType ) ;
} , endLifeCycleTimer = function ( debugID , timerType ) {
2017-06-09 02:01:23 +00:00
0 !== currentFlushNesting && ( currentTimerType === timerType || lifeCycleTimerHasWarned || ( warning ( ! 1 , "There is an internal error in the React performance measurement code. " + "We did not expect %s timer to stop while %s timer is still in " + "progress for %s instance. Please report this as a bug in React." , timerType , currentTimerType || "no" , debugID === currentTimerDebugID ? "the same" : "another" ) ,
2017-05-26 17:51:06 +00:00
lifeCycleTimerHasWarned = ! 0 ) , isProfiling && currentFlushMeasurements . push ( {
timerType : timerType ,
instanceID : debugID ,
duration : performanceNow ( ) - currentTimerStartTime - currentTimerNestedFlushDuration
2017-06-09 02:01:23 +00:00
} ) , currentTimerStartTime = 0 , currentTimerNestedFlushDuration = 0 , currentTimerDebugID = null ,
2017-05-26 17:51:06 +00:00
currentTimerType = null ) ;
} , pauseCurrentLifeCycleTimer = function ( ) {
var currentTimer = {
startTime : currentTimerStartTime ,
nestedFlushStartTime : performanceNow ( ) ,
debugID : currentTimerDebugID ,
timerType : currentTimerType
} ;
2017-06-09 02:01:23 +00:00
lifeCycleTimerStack . push ( currentTimer ) , currentTimerStartTime = 0 , currentTimerNestedFlushDuration = 0 ,
2017-05-26 17:51:06 +00:00
currentTimerDebugID = null , currentTimerType = null ;
} , resumeCurrentLifeCycleTimer = function ( ) {
var _lifeCycleTimerStack$ = lifeCycleTimerStack . pop ( ) , startTime = _lifeCycleTimerStack$ . startTime , nestedFlushStartTime = _lifeCycleTimerStack$ . nestedFlushStartTime , debugID = _lifeCycleTimerStack$ . debugID , timerType = _lifeCycleTimerStack$ . timerType , nestedFlushDuration = performanceNow ( ) - nestedFlushStartTime ;
2017-06-09 02:01:23 +00:00
currentTimerStartTime = startTime , currentTimerNestedFlushDuration += nestedFlushDuration ,
2017-05-26 17:51:06 +00:00
currentTimerDebugID = debugID , currentTimerType = timerType ;
} , lastMarkTimeStamp = 0 , canUsePerformanceMeasure = "undefined" != typeof performance && "function" == typeof performance . mark && "function" == typeof performance . clearMarks && "function" == typeof performance . measure && "function" == typeof performance . clearMeasures , shouldMark = function ( debugID ) {
if ( ! isProfiling || ! canUsePerformanceMeasure ) return ! 1 ;
var element = ReactComponentTreeHook . getElement ( debugID ) ;
return null != element && "object" == typeof element && ! ( "string" == typeof element . type ) ;
} , markBegin = function ( debugID , markType ) {
if ( shouldMark ( debugID ) ) {
var markName = debugID + "::" + markType ;
lastMarkTimeStamp = performanceNow ( ) , performance . mark ( markName ) ;
}
} , markEnd = function ( debugID , markType ) {
if ( shouldMark ( debugID ) ) {
var markName = debugID + "::" + markType , displayName = ReactComponentTreeHook . getDisplayName ( debugID ) || "Unknown" ;
if ( performanceNow ( ) - lastMarkTimeStamp > . 1 ) {
var measurementName = displayName + " [" + markType + "]" ;
performance . measure ( measurementName , markName ) ;
}
performance . clearMarks ( markName ) , measurementName && performance . clearMeasures ( measurementName ) ;
}
} ;
ReactDebugTool = {
addHook : function ( hook ) {
hooks . push ( hook ) ;
} ,
removeHook : function ( hook ) {
2017-06-09 02:01:23 +00:00
for ( var i = 0 ; i < hooks . length ; i ++ ) hooks [ i ] === hook && ( hooks . splice ( i , 1 ) ,
2017-05-26 17:51:06 +00:00
i -- ) ;
} ,
isProfiling : function ( ) {
return isProfiling ;
} ,
beginProfiling : function ( ) {
2017-06-09 02:01:23 +00:00
isProfiling || ( isProfiling = ! 0 , flushHistory . length = 0 , resetMeasurements ( ) ,
2017-05-26 17:51:06 +00:00
ReactDebugTool . addHook ( ReactHostOperationHistoryHook _1 ) ) ;
} ,
endProfiling : function ( ) {
isProfiling && ( isProfiling = ! 1 , resetMeasurements ( ) , ReactDebugTool . removeHook ( ReactHostOperationHistoryHook _1 ) ) ;
} ,
getFlushHistory : function ( ) {
return flushHistory ;
} ,
onBeginFlush : function ( ) {
currentFlushNesting ++ , resetMeasurements ( ) , pauseCurrentLifeCycleTimer ( ) , emitEvent ( "onBeginFlush" ) ;
} ,
onEndFlush : function ( ) {
resetMeasurements ( ) , currentFlushNesting -- , resumeCurrentLifeCycleTimer ( ) , emitEvent ( "onEndFlush" ) ;
} ,
onBeginLifeCycleTimer : function ( debugID , timerType ) {
2017-06-09 02:01:23 +00:00
checkDebugID ( debugID ) , emitEvent ( "onBeginLifeCycleTimer" , debugID , timerType ) , markBegin ( debugID , timerType ) ,
2017-05-26 17:51:06 +00:00
beginLifeCycleTimer ( debugID , timerType ) ;
} ,
onEndLifeCycleTimer : function ( debugID , timerType ) {
2017-06-09 02:01:23 +00:00
checkDebugID ( debugID ) , endLifeCycleTimer ( debugID , timerType ) , markEnd ( debugID , timerType ) ,
2017-05-26 17:51:06 +00:00
emitEvent ( "onEndLifeCycleTimer" , debugID , timerType ) ;
} ,
onBeginProcessingChildContext : function ( ) {
emitEvent ( "onBeginProcessingChildContext" ) ;
} ,
onEndProcessingChildContext : function ( ) {
emitEvent ( "onEndProcessingChildContext" ) ;
} ,
onHostOperation : function ( operation ) {
checkDebugID ( operation . instanceID ) , emitEvent ( "onHostOperation" , operation ) ;
} ,
onSetState : function ( ) {
emitEvent ( "onSetState" ) ;
} ,
onSetChildren : function ( debugID , childDebugIDs ) {
checkDebugID ( debugID ) , childDebugIDs . forEach ( checkDebugID ) , emitEvent ( "onSetChildren" , debugID , childDebugIDs ) ;
} ,
onBeforeMountComponent : function ( debugID , element , parentDebugID ) {
2017-06-09 02:01:23 +00:00
checkDebugID ( debugID ) , checkDebugID ( parentDebugID , ! 0 ) , emitEvent ( "onBeforeMountComponent" , debugID , element , parentDebugID ) ,
2017-05-26 17:51:06 +00:00
markBegin ( debugID , "mount" ) ;
} ,
onMountComponent : function ( debugID ) {
checkDebugID ( debugID ) , markEnd ( debugID , "mount" ) , emitEvent ( "onMountComponent" , debugID ) ;
} ,
onBeforeUpdateComponent : function ( debugID , element ) {
checkDebugID ( debugID ) , emitEvent ( "onBeforeUpdateComponent" , debugID , element ) , markBegin ( debugID , "update" ) ;
} ,
onUpdateComponent : function ( debugID ) {
checkDebugID ( debugID ) , markEnd ( debugID , "update" ) , emitEvent ( "onUpdateComponent" , debugID ) ;
} ,
onBeforeUnmountComponent : function ( debugID ) {
checkDebugID ( debugID ) , emitEvent ( "onBeforeUnmountComponent" , debugID ) , markBegin ( debugID , "unmount" ) ;
} ,
onUnmountComponent : function ( debugID ) {
checkDebugID ( debugID ) , markEnd ( debugID , "unmount" ) , emitEvent ( "onUnmountComponent" , debugID ) ;
} ,
onTestEvent : function ( ) {
emitEvent ( "onTestEvent" ) ;
}
} , ReactDebugTool . addHook ( ReactInvalidSetStateWarningHook _1 ) , ReactDebugTool . addHook ( ReactComponentTreeHook ) ;
var url = ExecutionEnvironment . canUseDOM && window . location . href || "" ;
/[?&]react_perf\b/ . test ( url ) && ReactDebugTool . beginProfiling ( ) ;
var ReactDebugTool _1 = ReactDebugTool , lowPriorityWarning = function ( ) { } , printWarning = function ( format ) {
for ( var _len = arguments . length , args = Array ( _len > 1 ? _len - 1 : 0 ) , _key = 1 ; _key < _len ; _key ++ ) args [ _key - 1 ] = arguments [ _key ] ;
var argIndex = 0 , message = "Warning: " + format . replace ( /%s/g , function ( ) {
return args [ argIndex ++ ] ;
} ) ;
"undefined" != typeof console && console . warn ( message ) ;
try {
throw new Error ( message ) ;
} catch ( x ) { }
} ;
lowPriorityWarning = function ( condition , format ) {
if ( void 0 === format ) throw new Error ( "`warning(condition, format, ...args)` requires a warning " + "message argument" ) ;
if ( ! condition ) {
for ( var _len2 = arguments . length , args = Array ( _len2 > 2 ? _len2 - 2 : 0 ) , _key2 = 2 ; _key2 < _len2 ; _key2 ++ ) args [ _key2 - 2 ] = arguments [ _key2 ] ;
printWarning . apply ( void 0 , [ format ] . concat ( args ) ) ;
}
} ;
var lowPriorityWarning _1 = lowPriorityWarning , _extends$3 = Object . assign || function ( target ) {
for ( var i = 1 ; i < arguments . length ; i ++ ) {
var source = arguments [ i ] ;
for ( var key in source ) Object . prototype . hasOwnProperty . call ( source , key ) && ( target [ key ] = source [ key ] ) ;
}
return target ;
} ;
function roundFloat ( val ) {
var base = arguments . length > 1 && void 0 !== arguments [ 1 ] ? arguments [ 1 ] : 2 , n = Math . pow ( 10 , base ) ;
return Math . floor ( val * n ) / n ;
}
function consoleTable ( table ) {
console . table ( table ) ;
}
function getLastMeasurements ( ) {
return ReactDebugTool _1 . getFlushHistory ( ) ;
}
function getExclusive ( ) {
var flushHistory = arguments . length > 0 && void 0 !== arguments [ 0 ] ? arguments [ 0 ] : getLastMeasurements ( ) , aggregatedStats = { } , affectedIDs = { } ;
function updateAggregatedStats ( treeSnapshot , instanceID , timerType , applyUpdate ) {
var displayName = treeSnapshot [ instanceID ] . displayName , key = displayName , stats = aggregatedStats [ key ] ;
stats || ( affectedIDs [ key ] = { } , stats = aggregatedStats [ key ] = {
key : key ,
instanceCount : 0 ,
counts : { } ,
durations : { } ,
totalDuration : 0
2017-06-09 02:01:23 +00:00
} ) , stats . durations [ timerType ] || ( stats . durations [ timerType ] = 0 ) , stats . counts [ timerType ] || ( stats . counts [ timerType ] = 0 ) ,
2017-05-26 17:51:06 +00:00
affectedIDs [ key ] [ instanceID ] = ! 0 , applyUpdate ( stats ) ;
}
return flushHistory . forEach ( function ( flush ) {
var measurements = flush . measurements , treeSnapshot = flush . treeSnapshot ;
measurements . forEach ( function ( measurement ) {
var duration = measurement . duration , instanceID = measurement . instanceID , timerType = measurement . timerType ;
updateAggregatedStats ( treeSnapshot , instanceID , timerType , function ( stats ) {
stats . totalDuration += duration , stats . durations [ timerType ] += duration , stats . counts [ timerType ] ++ ;
} ) ;
} ) ;
} ) , Object . keys ( aggregatedStats ) . map ( function ( key ) {
return _extends$3 ( { } , aggregatedStats [ key ] , {
instanceCount : Object . keys ( affectedIDs [ key ] ) . length
} ) ;
} ) . sort ( function ( a , b ) {
return b . totalDuration - a . totalDuration ;
} ) ;
}
function getInclusive ( ) {
var flushHistory = arguments . length > 0 && void 0 !== arguments [ 0 ] ? arguments [ 0 ] : getLastMeasurements ( ) , aggregatedStats = { } , affectedIDs = { } ;
function updateAggregatedStats ( treeSnapshot , instanceID , applyUpdate ) {
var _treeSnapshot$instanc = treeSnapshot [ instanceID ] , displayName = _treeSnapshot$instanc . displayName , ownerID = _treeSnapshot$instanc . ownerID , owner = treeSnapshot [ ownerID ] , key = ( owner ? owner . displayName + " > " : "" ) + displayName , stats = aggregatedStats [ key ] ;
stats || ( affectedIDs [ key ] = { } , stats = aggregatedStats [ key ] = {
key : key ,
instanceCount : 0 ,
inclusiveRenderDuration : 0 ,
renderCount : 0
} ) , affectedIDs [ key ] [ instanceID ] = ! 0 , applyUpdate ( stats ) ;
}
var isCompositeByID = { } ;
return flushHistory . forEach ( function ( flush ) {
flush . measurements . forEach ( function ( measurement ) {
var instanceID = measurement . instanceID ;
"render" === measurement . timerType && ( isCompositeByID [ instanceID ] = ! 0 ) ;
} ) ;
} ) , flushHistory . forEach ( function ( flush ) {
var measurements = flush . measurements , treeSnapshot = flush . treeSnapshot ;
measurements . forEach ( function ( measurement ) {
var duration = measurement . duration , instanceID = measurement . instanceID ;
if ( "render" === measurement . timerType ) {
updateAggregatedStats ( treeSnapshot , instanceID , function ( stats ) {
stats . renderCount ++ ;
} ) ;
for ( var nextParentID = instanceID ; nextParentID ; ) isCompositeByID [ nextParentID ] && updateAggregatedStats ( treeSnapshot , nextParentID , function ( stats ) {
stats . inclusiveRenderDuration += duration ;
} ) , nextParentID = treeSnapshot [ nextParentID ] . parentID ;
}
} ) ;
} ) , Object . keys ( aggregatedStats ) . map ( function ( key ) {
return _extends$3 ( { } , aggregatedStats [ key ] , {
instanceCount : Object . keys ( affectedIDs [ key ] ) . length
} ) ;
} ) . sort ( function ( a , b ) {
return b . inclusiveRenderDuration - a . inclusiveRenderDuration ;
} ) ;
}
function getWasted ( ) {
var flushHistory = arguments . length > 0 && void 0 !== arguments [ 0 ] ? arguments [ 0 ] : getLastMeasurements ( ) , aggregatedStats = { } , affectedIDs = { } ;
function updateAggregatedStats ( treeSnapshot , instanceID , applyUpdate ) {
var _treeSnapshot$instanc2 = treeSnapshot [ instanceID ] , displayName = _treeSnapshot$instanc2 . displayName , ownerID = _treeSnapshot$instanc2 . ownerID , owner = treeSnapshot [ ownerID ] , key = ( owner ? owner . displayName + " > " : "" ) + displayName , stats = aggregatedStats [ key ] ;
stats || ( affectedIDs [ key ] = { } , stats = aggregatedStats [ key ] = {
key : key ,
instanceCount : 0 ,
inclusiveRenderDuration : 0 ,
renderCount : 0
} ) , affectedIDs [ key ] [ instanceID ] = ! 0 , applyUpdate ( stats ) ;
}
return flushHistory . forEach ( function ( flush ) {
var measurements = flush . measurements , treeSnapshot = flush . treeSnapshot , operations = flush . operations , isDefinitelyNotWastedByID = { } ;
operations . forEach ( function ( operation ) {
2017-06-09 02:01:23 +00:00
for ( var instanceID = operation . instanceID , nextParentID = instanceID ; nextParentID ; ) isDefinitelyNotWastedByID [ nextParentID ] = ! 0 ,
2017-05-26 17:51:06 +00:00
nextParentID = treeSnapshot [ nextParentID ] . parentID ;
} ) ;
var renderedCompositeIDs = { } ;
measurements . forEach ( function ( measurement ) {
var instanceID = measurement . instanceID ;
"render" === measurement . timerType && ( renderedCompositeIDs [ instanceID ] = ! 0 ) ;
} ) , measurements . forEach ( function ( measurement ) {
var duration = measurement . duration , instanceID = measurement . instanceID ;
if ( "render" === measurement . timerType ) {
var updateCount = treeSnapshot [ instanceID ] . updateCount ;
if ( ! isDefinitelyNotWastedByID [ instanceID ] && 0 !== updateCount ) {
updateAggregatedStats ( treeSnapshot , instanceID , function ( stats ) {
stats . renderCount ++ ;
} ) ;
for ( var nextParentID = instanceID ; nextParentID ; ) renderedCompositeIDs [ nextParentID ] && ! isDefinitelyNotWastedByID [ nextParentID ] && updateAggregatedStats ( treeSnapshot , nextParentID , function ( stats ) {
stats . inclusiveRenderDuration += duration ;
} ) , nextParentID = treeSnapshot [ nextParentID ] . parentID ;
}
}
} ) ;
} ) , Object . keys ( aggregatedStats ) . map ( function ( key ) {
return _extends$3 ( { } , aggregatedStats [ key ] , {
instanceCount : Object . keys ( affectedIDs [ key ] ) . length
} ) ;
} ) . sort ( function ( a , b ) {
return b . inclusiveRenderDuration - a . inclusiveRenderDuration ;
} ) ;
}
function getOperations ( ) {
var flushHistory = arguments . length > 0 && void 0 !== arguments [ 0 ] ? arguments [ 0 ] : getLastMeasurements ( ) , stats = [ ] ;
return flushHistory . forEach ( function ( flush , flushIndex ) {
var operations = flush . operations , treeSnapshot = flush . treeSnapshot ;
operations . forEach ( function ( operation ) {
var instanceID = operation . instanceID , type = operation . type , payload = operation . payload , _treeSnapshot$instanc3 = treeSnapshot [ instanceID ] , displayName = _treeSnapshot$instanc3 . displayName , ownerID = _treeSnapshot$instanc3 . ownerID , owner = treeSnapshot [ ownerID ] , key = ( owner ? owner . displayName + " > " : "" ) + displayName ;
stats . push ( {
flushIndex : flushIndex ,
instanceID : instanceID ,
key : key ,
type : type ,
ownerID : ownerID ,
payload : payload
} ) ;
} ) ;
} ) , stats ;
}
function printExclusive ( flushHistory ) {
consoleTable ( getExclusive ( flushHistory ) . map ( function ( item ) {
var key = item . key , instanceCount = item . instanceCount , totalDuration = item . totalDuration , renderCount = item . counts . render || 0 , renderDuration = item . durations . render || 0 ;
return {
Component : key ,
"Total time (ms)" : roundFloat ( totalDuration ) ,
"Instance count" : instanceCount ,
"Total render time (ms)" : roundFloat ( renderDuration ) ,
"Average render time (ms)" : renderCount ? roundFloat ( renderDuration / renderCount ) : void 0 ,
"Render count" : renderCount ,
"Total lifecycle time (ms)" : roundFloat ( totalDuration - renderDuration )
} ;
} ) ) ;
}
function printInclusive ( flushHistory ) {
consoleTable ( getInclusive ( flushHistory ) . map ( function ( item ) {
var key = item . key , instanceCount = item . instanceCount , inclusiveRenderDuration = item . inclusiveRenderDuration , renderCount = item . renderCount ;
return {
"Owner > Component" : key ,
"Inclusive render time (ms)" : roundFloat ( inclusiveRenderDuration ) ,
"Instance count" : instanceCount ,
"Render count" : renderCount
} ;
} ) ) ;
}
function printWasted ( flushHistory ) {
consoleTable ( getWasted ( flushHistory ) . map ( function ( item ) {
var key = item . key , instanceCount = item . instanceCount , inclusiveRenderDuration = item . inclusiveRenderDuration , renderCount = item . renderCount ;
return {
"Owner > Component" : key ,
"Inclusive wasted time (ms)" : roundFloat ( inclusiveRenderDuration ) ,
"Instance count" : instanceCount ,
"Render count" : renderCount
} ;
} ) ) ;
}
function printOperations ( flushHistory ) {
consoleTable ( getOperations ( flushHistory ) . map ( function ( stat ) {
return {
"Owner > Node" : stat . key ,
Operation : stat . type ,
Payload : "object" == typeof stat . payload ? JSON . stringify ( stat . payload ) : stat . payload ,
"Flush index" : stat . flushIndex ,
"Owner Component ID" : stat . ownerID ,
"DOM Component ID" : stat . instanceID
} ;
} ) ) ;
}
var warnedAboutPrintDOM = ! 1 ;
function printDOM ( measurements ) {
2017-06-09 02:01:23 +00:00
return lowPriorityWarning _1 ( warnedAboutPrintDOM , "`ReactPerf.printDOM(...)` is deprecated. Use " + "`ReactPerf.printOperations(...)` instead." ) ,
2017-05-26 17:51:06 +00:00
warnedAboutPrintDOM = ! 0 , printOperations ( measurements ) ;
}
var warnedAboutGetMeasurementsSummaryMap = ! 1 ;
function getMeasurementsSummaryMap ( measurements ) {
2017-06-09 02:01:23 +00:00
return lowPriorityWarning _1 ( warnedAboutGetMeasurementsSummaryMap , "`ReactPerf.getMeasurementsSummaryMap(...)` is deprecated. Use " + "`ReactPerf.getWasted(...)` instead." ) ,
2017-05-26 17:51:06 +00:00
warnedAboutGetMeasurementsSummaryMap = ! 0 , getWasted ( measurements ) ;
}
function start ( ) {
ReactDebugTool _1 . beginProfiling ( ) ;
}
function stop ( ) {
ReactDebugTool _1 . endProfiling ( ) ;
}
function isRunning ( ) {
return ReactDebugTool _1 . isProfiling ( ) ;
}
var ReactPerfAnalysis = {
getLastMeasurements : getLastMeasurements ,
getExclusive : getExclusive ,
getInclusive : getInclusive ,
getWasted : getWasted ,
getOperations : getOperations ,
printExclusive : printExclusive ,
printInclusive : printInclusive ,
printWasted : printWasted ,
printOperations : printOperations ,
start : start ,
stop : stop ,
isRunning : isRunning ,
printDOM : printDOM ,
getMeasurementsSummaryMap : getMeasurementsSummaryMap
} , ReactPerf = ReactPerfAnalysis , injectInternals = ReactFiberDevToolsHook . injectInternals ;
ReactNativeInjection . inject ( ) , ReactGenericBatching _1 . injection . injectFiberBatchedUpdates ( ReactNativeFiberRenderer . batchedUpdates ) ;
var roots = new Map ( ) ;
ReactFiberErrorLogger . injection . injectDialog ( ReactNativeFiberErrorDialog _1 . showDialog ) ;
var ReactNative = {
2017-06-09 02:01:23 +00:00
NativeComponent : ReactNativeComponent _1 ,
2017-05-26 17:51:06 +00:00
findNodeHandle : findNumericNodeHandleFiber ,
render : function ( element , containerTag , callback ) {
var root = roots . get ( containerTag ) ;
2017-06-09 02:01:23 +00:00
return root || ( root = ReactNativeFiberRenderer . createContainer ( containerTag ) , roots . set ( containerTag , root ) ) ,
2017-05-26 17:51:06 +00:00
ReactNativeFiberRenderer . updateContainer ( element , root , null , callback ) , ReactNativeFiberRenderer . getPublicRootInstance ( root ) ;
} ,
unmountComponentAtNode : function ( containerTag ) {
var root = roots . get ( containerTag ) ;
root && ReactNativeFiberRenderer . updateContainer ( null , root , null , function ( ) {
roots . delete ( containerTag ) ;
} ) ;
} ,
unmountComponentAtNodeAndRemoveContainer : function ( containerTag ) {
ReactNative . unmountComponentAtNode ( containerTag ) , UIManager . removeRootView ( containerTag ) ;
} ,
unstable _createPortal : function ( children , containerTag ) {
var key = arguments . length > 2 && void 0 !== arguments [ 2 ] ? arguments [ 2 ] : null ;
return ReactPortal . createPortal ( children , containerTag , null , key ) ;
} ,
unstable _batchedUpdates : ReactGenericBatching _1 . batchedUpdates ,
_ _SECRET _INTERNALS _DO _NOT _USE _OR _YOU _WILL _BE _FIRED : {
NativeMethodsMixin : NativeMethodsMixin _1 ,
ReactGlobalSharedState : ReactGlobalSharedState _1 ,
ReactNativeComponentTree : ReactNativeComponentTree _1 ,
ReactNativePropRegistry : ReactNativePropRegistry _1 ,
TouchHistoryMath : TouchHistoryMath _1 ,
createReactNativeComponentClass : createReactNativeComponentClass ,
takeSnapshot : takeSnapshot _1
}
} ;
Object . assign ( ReactNative . _ _SECRET _INTERNALS _DO _NOT _USE _OR _YOU _WILL _BE _FIRED , {
ReactDebugTool : ReactDebugTool _1 ,
ReactPerf : ReactPerf
} ) , "function" == typeof injectInternals && injectInternals ( {
findFiberByHostInstance : ReactNativeComponentTree _1 . getClosestInstanceFromNode ,
findHostInstanceByFiber : ReactNativeFiberRenderer . findHostInstance ,
getInspectorDataForViewTag : ReactNativeFiberInspector . getInspectorDataForViewTag ,
bundleType : 1 ,
version : ReactVersion
} ) ;
var ReactNativeFiber = ReactNative ;
module . exports = ReactNativeFiber ;