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 - prod
* /
"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" ) ;
require ( "prop-types/checkPropTypes" ) ;
var emptyObject = require ( "fbjs/lib/emptyObject" ) , react = require ( "react" ) , shallowEqual = require ( "fbjs/lib/shallowEqual" ) , deepDiffer = require ( "deepDiffer" ) , flattenStyle = require ( "flattenStyle" ) , TextInputState = require ( "TextInputState" ) ;
2017-06-26 22:12:46 +00:00
require ( "deepFreezeAndThrowOnMutationInDev" ) ;
2017-05-26 17:51:06 +00:00
2017-06-09 02:01:23 +00:00
var defaultShowDialog = function ( capturedError ) {
2017-05-26 17:51:06 +00:00
return ! 0 ;
} , showDialog = defaultShowDialog ;
function logCapturedError ( capturedError ) {
if ( ! 1 !== showDialog ( capturedError ) ) {
var _error = capturedError . error ;
console . error ( "React caught an error thrown by one of your components.\n\n" + _error . stack ) ;
}
}
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 ;
} , 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 ;
}
} ;
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 ;
}
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 ( 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 ( 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 ) {
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 ) {
2017-06-26 22:12:46 +00:00
var componentStack = capturedError . componentStack , error = capturedError . error , errorToHandle = void 0 ;
if ( error instanceof Error ) {
var message = error . message , name = error . name , summary = message ? name + ": " + message : name ;
errorToHandle = error ;
try {
errorToHandle . message = summary + "\n\nThis error is located at:" + componentStack ;
} catch ( e ) { }
} else errorToHandle = "string" == typeof error ? new Error ( error + "\n\nThis error is located at:" + componentStack ) : new Error ( "Unspecified error at:" + componentStack ) ;
return ExceptionsManager . handleException ( errorToHandle , ! 1 ) , ! 1 ;
2017-05-26 17:51:06 +00:00
}
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 EventPluginRegistry = {
plugins : [ ] ,
eventNameDispatchConfigs : { } ,
registrationNameModules : { } ,
registrationNameDependencies : { } ,
possibleRegistrationNames : null ,
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 ) {
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 , 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 ) {
this . dispatchConfig = dispatchConfig , this . _targetInst = targetInst , this . nativeEvent = nativeEvent ;
var Interface = this . constructor . Interface ;
for ( var propName in Interface ) if ( Interface . hasOwnProperty ( 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 ) this [ propName ] = null ;
for ( var i = 0 ; i < shouldBeReleasedProperties . length ; i ++ ) this [ shouldBeReleasedProperties [ i ] ] = null ;
}
} ) , SyntheticEvent . Interface = EventInterface , 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 , _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 || ( 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 ;
}
}
} ,
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 ,
2017-06-26 22:12:46 +00:00
HighPriority : 3 ,
LowPriority : 4 ,
OffscreenPriority : 5
2017-05-26 17:51:06 +00:00
} , CallbackEffect = ReactTypeOfSideEffect . Callback , NoWork = ReactPriorityLevel . NoWork , SynchronousPriority = ReactPriorityLevel . SynchronousPriority , TaskPriority = ReactPriorityLevel . TaskPriority ;
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
} , 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 , 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 . 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
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
2017-06-09 02:01:23 +00:00
} , ReactGlobalSharedState _1 = ReactGlobalSharedState , HostRoot$1 = ReactTypeOfWork . HostRoot , HostComponent$2 = ReactTypeOfWork . HostComponent , HostText = ReactTypeOfWork . HostText , 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 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 = [ ] , index = - 1 , createCursor$1 = function ( defaultValue ) {
return {
current : defaultValue
} ;
} , isEmpty = function ( ) {
return - 1 === index ;
} , pop$1 = function ( cursor , fiber ) {
index < 0 || ( cursor . current = valueStack [ index ] , valueStack [ index ] = null , index -- ) ;
} , push$1 = function ( cursor , value , fiber ) {
index ++ , valueStack [ index ] = cursor . current , cursor . current = value ;
} , reset = function ( ) {
for ( ; index > - 1 ; ) valueStack [ index ] = null , index -- ;
} , ReactFiberStack = {
createCursor : createCursor$1 ,
isEmpty : isEmpty ,
pop : pop$1 ,
push : push$1 ,
reset : reset
} , _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 , 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 ] ;
return instance && cacheContext ( workInProgress , unmaskedContext , context ) , 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 ) return parentContext ;
var childContext = void 0 ;
childContext = instance . getChildContext ( ) ;
for ( var contextKey in childContext ) invariant ( contextKey in childContextTypes , '%s.getChildContext(): key "%s" is not defined in childContextTypes.' , getComponentName _1 ( fiber ) || "Unknown" , contextKey ) ;
return _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 = ReactTypeOfWork . IndeterminateComponent , ClassComponent$2 = ReactTypeOfWork . ClassComponent , HostRoot$2 = ReactTypeOfWork . HostRoot , HostComponent$3 = ReactTypeOfWork . HostComponent , HostText$1 = ReactTypeOfWork . HostText , HostPortal = ReactTypeOfWork . HostPortal , CoroutineComponent = ReactTypeOfWork . CoroutineComponent , YieldComponent = ReactTypeOfWork . YieldComponent , Fragment = ReactTypeOfWork . Fragment , NoWork$1 = ReactPriorityLevel . NoWork , NoContext = ReactTypeOfInternalContext . NoContext , NoEffect$1 = ReactTypeOfSideEffect . NoEffect , cloneUpdateQueue$1 = ReactFiberUpdateQueue . cloneUpdateQueue , createFiber = function ( tag , key , internalContextTag ) {
2017-05-26 17:51:06 +00:00
return {
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
} ;
} ;
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 ,
2017-05-26 17:51:06 +00:00
alt ;
} , createHostRootFiber$1 = function ( ) {
return createFiber ( HostRoot$2 , null , NoContext ) ;
} , createFiberFromElement = function ( element , internalContextTag , priorityLevel ) {
var owner = null , 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 ;
} , createFiberFromFragment = function ( elements , internalContextTag , priorityLevel ) {
var fiber = createFiber ( Fragment , 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$1 , 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$2 , key , internalContextTag ) : createFiber ( IndeterminateComponent , key , internalContextTag ) ,
fiber . type = type ; else if ( "string" == typeof type ) fiber = createFiber ( HostComponent$3 , 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 = "" ;
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$3 , 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 , null , internalContextTag ) ;
} , createFiberFromPortal = function ( portal , internalContextTag , priorityLevel ) {
var fiber = createFiber ( HostPortal , 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-09 02:01:23 +00:00
} , IndeterminateComponent$1 = ReactTypeOfWork . IndeterminateComponent , FunctionalComponent = ReactTypeOfWork . FunctionalComponent , ClassComponent$4 = ReactTypeOfWork . ClassComponent , HostComponent$5 = 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$1 :
case FunctionalComponent :
case ClassComponent$4 :
2017-06-09 02:01:23 +00:00
case HostComponent$5 :
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
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 ;
return {
$$typeof : REACT _COROUTINE _TYPE$1 ,
key : null == key ? null : "" + key ,
children : children ,
handler : handler ,
props : props
} ;
} , createYield = function ( value ) {
return {
$$typeof : REACT _YIELD _TYPE$1 ,
value : value
} ;
} , 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 , 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$3 = ReactTypeOfWork . HostText , HostPortal$3 = ReactTypeOfWork . HostPortal , CoroutineComponent$2 = ReactTypeOfWork . CoroutineComponent , YieldComponent$2 = ReactTypeOfWork . YieldComponent , Fragment$2 = 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 ;
2017-05-26 17:51:06 +00:00
function getIteratorFn ( maybeIterable ) {
2017-06-12 21:02:54 +00:00
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 ) {
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 , "" ) ;
}
}
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$3 ) {
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 ,
2017-05-26 17:51:06 +00:00
existing . return = returnFiber , 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$2 ) {
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$3 || 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$2 ) {
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 reconcileChildrenArray ( returnFiber , currentFirstChild , newChildren , priority ) {
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-05-26 17:51:06 +00:00
invariant ( "function" == typeof iteratorFn , "An object is not an iterable. This error is likely caused by a bug in " + "React. Please file an issue." ) ;
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$3 ) {
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 ,
2017-05-26 17:51:06 +00:00
existing . return = returnFiber , 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$2 ) {
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$3 && 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 :
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 :
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 , 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 , addUpdate$1 ( fiber , partialState , callback , priorityLevel ) ,
2017-05-26 17:51:06 +00:00
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 , addReplaceUpdate$1 ( fiber , state , callback , priorityLevel ) ,
2017-05-26 17:51:06 +00:00
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 , addForceUpdate$1 ( fiber , callback , priorityLevel ) ,
2017-05-26 17:51:06 +00:00
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 ) {
return instance . shouldComponentUpdate ( newProps , newState , newContext ) ;
}
return ! type . prototype || ! type . prototype . isPureReactComponent || ( ! shallowEqual ( oldProps , newProps ) || ! shallowEqual ( oldState , newState ) ) ;
}
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 ) {
var oldState = instance . state ;
instance . componentWillMount ( ) , oldState !== instance . state && updater . enqueueReplaceState ( instance , instance . state , null ) ;
}
function callComponentWillReceiveProps ( workInProgress , instance , newProps , newContext ) {
var oldState = instance . state ;
instance . componentWillReceiveProps ( newProps , newContext ) , instance . state !== oldState && updater . enqueueReplaceState ( instance , instance . state , null ) ;
}
function mountClassInstance ( workInProgress , priorityLevel ) {
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 && instance . componentWillUpdate ( newProps , newState , newContext ) ,
"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$4 = ReactTypeOfWork . HostRoot , HostComponent$6 = ReactTypeOfWork . HostComponent , HostText$2 = ReactTypeOfWork . HostText , HostPortal$2 = ReactTypeOfWork . HostPortal , CoroutineComponent$1 = ReactTypeOfWork . CoroutineComponent , CoroutineHandlerPhase = ReactTypeOfWork . CoroutineHandlerPhase , YieldComponent$1 = ReactTypeOfWork . YieldComponent , Fragment$1 = 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 , 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 nextChildren = fn ( nextProps , context ) , 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 nextChildren = instance . render ( ) , 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 ( 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 ) ;
}
2017-06-09 02:01:23 +00:00
return workInProgress . tag = FunctionalComponent$1 , reconcileChildren ( current , workInProgress , value ) ,
2017-05-26 17:51:06 +00:00
memoizeProps ( workInProgress , props ) , 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 ) {
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 ( workInProgress . tag ) {
case ClassComponent$5 :
pushContextProvider$1 ( workInProgress ) ;
break ;
case HostPortal$2 :
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 ( 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$4 :
return updateHostRoot ( current , workInProgress , priorityLevel ) ;
2017-06-09 02:01:23 +00:00
case HostComponent$6 :
2017-05-26 17:51:06 +00:00
return updateHostComponent ( current , workInProgress ) ;
case HostText$2 :
return updateHostText ( current , workInProgress ) ;
case CoroutineHandlerPhase :
workInProgress . tag = CoroutineComponent$1 ;
case CoroutineComponent$1 :
return updateCoroutineComponent ( current , workInProgress ) ;
case YieldComponent$1 :
return null ;
case HostPortal$2 :
return updatePortalComponent ( current , workInProgress ) ;
case Fragment$1 :
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$4 , "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$5 = ReactTypeOfWork . HostRoot , HostComponent$7 = ReactTypeOfWork . HostComponent , HostText$4 = ReactTypeOfWork . HostText , HostPortal$4 = ReactTypeOfWork . HostPortal , CoroutineComponent$3 = ReactTypeOfWork . CoroutineComponent , CoroutineHandlerPhase$1 = ReactTypeOfWork . CoroutineHandlerPhase , YieldComponent$3 = ReactTypeOfWork . YieldComponent , Fragment$3 = ReactTypeOfWork . Fragment , Placement$4 = ReactTypeOfSideEffect . Placement , Ref$2 = ReactTypeOfSideEffect . Ref , Update$2 = ReactTypeOfSideEffect . Update , 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$7 || node . tag === HostText$4 || node . tag === HostPortal$4 ) invariant ( ! 1 , "A coroutine cannot have host component children." ) ; else if ( node . tag === YieldComponent$3 ) 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$7 || node . tag === HostText$4 ) appendInitialChild ( parent , node . stateNode ) ; else if ( node . tag === HostPortal$4 ) ; 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 ( workInProgress . tag ) {
case FunctionalComponent$3 :
return null ;
case ClassComponent$7 :
return popContextProvider$2 ( workInProgress ) , null ;
case HostRoot$5 :
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$7 :
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$4 :
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$3 :
case Fragment$3 :
return null ;
case HostPortal$4 :
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 ) { }
} , onCommitUnmount$1 = function ( fiber ) {
if ( null != rendererID ) try {
onCommitFiberUnmount ( rendererID , fiber ) ;
} catch ( 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$6 = ReactTypeOfWork . HostRoot , HostComponent$8 = ReactTypeOfWork . HostComponent , HostText$5 = ReactTypeOfWork . HostText , HostPortal$5 = ReactTypeOfWork . HostPortal , CoroutineComponent$4 = ReactTypeOfWork . CoroutineComponent , commitCallbacks$1 = ReactFiberUpdateQueue . commitCallbacks , onCommitUnmount = ReactFiberDevToolsHook . onCommitUnmount , Placement$5 = ReactTypeOfSideEffect . Placement , Update$3 = ReactTypeOfSideEffect . Update , Callback$1 = ReactTypeOfSideEffect . Callback , ContentReset$2 = ReactTypeOfSideEffect . ContentReset , ReactFiberCommitWork = function ( config , captureError ) {
2017-06-26 22:12:46 +00:00
var commitMount = config . commitMount , commitUpdate = config . commitUpdate , resetTextContent = config . resetTextContent , commitTextUpdate = config . commitTextUpdate , appendChild = config . appendChild , appendChildToContainer = config . appendChildToContainer , insertBefore = config . insertBefore , insertInContainerBefore = config . insertInContainerBefore , removeChild = config . removeChild , removeChildFromContainer = config . removeChildFromContainer , getPublicInstance = config . getPublicInstance ;
2017-05-26 17:51:06 +00:00
function safelyCallComponentWillUnmount ( current , instance ) {
try {
instance . componentWillUnmount ( ) ;
} catch ( unmountError ) {
captureError ( current , unmountError ) ;
}
}
function safelyDetachRef ( current ) {
var ref = current . ref ;
if ( null !== ref ) {
try {
ref ( null ) ;
} catch ( refError ) {
captureError ( current , refError ) ;
}
}
}
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$8 || fiber . tag === HostRoot$6 || fiber . tag === HostPortal$5 ;
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$8 && node . tag !== HostText$5 ; ) {
2017-05-26 17:51:06 +00:00
if ( node . effectTag & Placement$5 ) continue siblings ;
if ( null === node . child || node . tag === HostPortal$5 ) continue siblings ;
node . child . return = node , node = node . child ;
}
if ( ! ( node . effectTag & Placement$5 ) ) return node . stateNode ;
}
}
function commitPlacement ( finishedWork ) {
2017-06-26 22:12:46 +00:00
var parentFiber = getHostParentFiber ( finishedWork ) , parent = void 0 , isContainer = void 0 ;
2017-05-26 17:51:06 +00:00
switch ( parentFiber . tag ) {
2017-06-09 02:01:23 +00:00
case HostComponent$8 :
2017-06-26 22:12:46 +00:00
parent = parentFiber . stateNode , isContainer = ! 1 ;
2017-05-26 17:51:06 +00:00
break ;
case HostRoot$6 :
case HostPortal$5 :
2017-06-26 22:12:46 +00:00
parent = parentFiber . stateNode . containerInfo , isContainer = ! 0 ;
2017-05-26 17:51:06 +00:00
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-26 22:12:46 +00:00
if ( node . tag === HostComponent$8 || node . tag === HostText$5 ) before ? isContainer ? insertInContainerBefore ( parent , node . stateNode , before ) : insertBefore ( parent , node . stateNode , before ) : isContainer ? appendChildToContainer ( parent , node . stateNode ) : appendChild ( parent , node . stateNode ) ; else if ( node . tag === HostPortal$5 ) ; 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$5 ) {
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 ;
}
2017-06-26 22:12:46 +00:00
function unmountHostComponents ( current ) {
for ( var node = current , currentParentIsValid = ! 1 , currentParent = void 0 , currentParentIsContainer = void 0 ; ! 0 ; ) {
if ( ! currentParentIsValid ) {
var parent = node . return ;
findParent : for ( ; ! 0 ; ) {
switch ( invariant ( null !== parent , "Expected to find a host parent. This error is likely caused by " + "a bug in React. Please file an issue." ) ,
parent . tag ) {
case HostComponent$8 :
currentParent = parent . stateNode , currentParentIsContainer = ! 1 ;
break findParent ;
case HostRoot$6 :
case HostPortal$5 :
currentParent = parent . stateNode . containerInfo , currentParentIsContainer = ! 0 ;
break findParent ;
}
parent = parent . return ;
}
currentParentIsValid = ! 0 ;
}
2017-06-09 02:01:23 +00:00
if ( node . tag === HostComponent$8 || node . tag === HostText$5 ) commitNestedUnmounts ( node ) ,
2017-06-26 22:12:46 +00:00
currentParentIsContainer ? removeChildFromContainer ( currentParent , node . stateNode ) : removeChild ( currentParent , node . stateNode ) ; else if ( node . tag === HostPortal$5 ) {
if ( currentParent = node . stateNode . containerInfo , null !== node . child ) {
2017-05-26 17:51:06 +00:00
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 ;
2017-06-26 22:12:46 +00:00
node = node . return , node . tag === HostPortal$5 && ( currentParentIsValid = ! 1 ) ;
2017-05-26 17:51:06 +00:00
}
node . sibling . return = node . return , node = node . sibling ;
}
}
function commitDeletion ( current ) {
2017-06-26 22:12:46 +00:00
unmountHostComponents ( current ) , current . return = null , current . child = null , current . alternate && ( current . alternate . child = null ,
current . alternate . return = null ) ;
2017-05-26 17:51:06 +00:00
}
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$8 :
2017-05-26 17:51:06 +00:00
return void safelyDetachRef ( current ) ;
case CoroutineComponent$4 :
return void commitNestedUnmounts ( current . stateNode ) ;
case HostPortal$5 :
2017-06-26 22:12:46 +00:00
return void unmountHostComponents ( current ) ;
2017-05-26 17:51:06 +00:00
}
}
function commitWork ( current , finishedWork ) {
switch ( finishedWork . tag ) {
case ClassComponent$8 :
return ;
2017-06-09 02:01:23 +00:00
case HostComponent$8 :
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$5 :
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$6 :
case HostPortal$5 :
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 ;
if ( finishedWork . effectTag & Update$3 ) if ( null === current ) instance . componentDidMount ( ) ; else {
var prevProps = current . memoizedProps , prevState = current . memoizedState ;
instance . componentDidUpdate ( prevProps , prevState ) ;
}
return void ( finishedWork . effectTag & Callback$1 && null !== finishedWork . updateQueue && commitCallbacks$1 ( finishedWork , finishedWork . updateQueue , instance ) ) ;
case HostRoot$6 :
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$8 :
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$5 :
case HostPortal$5 :
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$8 :
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$9 = ReactTypeOfWork . HostComponent , HostText$6 = ReactTypeOfWork . HostText , HostRoot$7 = 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$9 :
var type = fiber . type , props = fiber . memoizedProps ;
return canHydrateInstance ( nextInstance , type , props ) ;
case HostText$6 :
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$9 && parent . tag !== HostRoot$7 ; ) 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$9 || "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
} ;
2017-06-26 22:12:46 +00:00
} , popContextProvider$1 = ReactFiberContext . popContextProvider , reset$1 = ReactFiberStack . reset , getStackAddendumByWorkInProgressFiber = ReactFiberComponentTreeHook . getStackAddendumByWorkInProgressFiber , logCapturedError$1 = ReactFiberErrorLogger . logCapturedError , ReactCurrentOwner$1 = ReactGlobalSharedState _1 . ReactCurrentOwner , cloneFiber$1 = ReactFiber . cloneFiber , onCommitRoot = ReactFiberDevToolsHook . onCommitRoot , NoWork$2 = ReactPriorityLevel . NoWork , SynchronousPriority$1 = ReactPriorityLevel . SynchronousPriority , TaskPriority$1 = ReactPriorityLevel . TaskPriority , 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$3 = ReactTypeOfWork . HostRoot , HostComponent$4 = ReactTypeOfWork . HostComponent , HostPortal$1 = ReactTypeOfWork . HostPortal , ClassComponent$3 = ReactTypeOfWork . ClassComponent , getPendingPriority$1 = ReactFiberUpdateQueue . getPendingPriority , _require14 = ReactFiberContext , resetContext$1 = _require14 . resetContext , ReactFiberInstrumentation$1 , 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 , scheduleDeferredCallback = config . scheduleDeferredCallback , useSyncScheduling = config . useSyncScheduling , prepareForCommit = config . prepareForCommit , resetAfterCommit = config . resetAfterCommit , priorityContext = NoWork$2 , priorityContextBeforeReconciliation = NoWork$2 , isPerformingWork = ! 1 , deadlineHasExpired = ! 1 , isBatchingUpdates = ! 1 , isUnbatchingUpdates = ! 1 , nextUnitOfWork = null , nextPriorityLevel = NoWork$2 , nextEffect = null , pendingCommit = null , nextScheduledRoot = null , lastScheduledRoot = null , isCallbackScheduled = ! 1 , capturedErrors = null , failedBoundaries = null , commitPhaseBoundaries = null , firstUncaughtError = null , fatalError = null , isCommitting = ! 1 , isUnmounting = ! 1 ;
2017-05-26 17:51:06 +00:00
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 ; ) {
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 ;
}
}
function commitAllLifeCycles ( ) {
for ( ; null !== nextEffect ; ) {
var effectTag = nextEffect . effectTag ;
if ( effectTag & ( Update | Callback ) ) {
var current = nextEffect . alternate ;
commitLifeCycles ( current , nextEffect ) ;
}
effectTag & Ref && commitAttachRef ( nextEffect ) , effectTag & Err && commitErrorHandling ( nextEffect ) ;
var next = nextEffect . nextEffect ;
nextEffect . nextEffect = null , nextEffect = next ;
}
}
function commitAllWork ( finishedWork ) {
isCommitting = ! 0 , 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 ; null !== nextEffect ; ) {
2017-05-26 17:51:06 +00:00
var _error = null ;
try {
2017-06-09 02:01:23 +00:00
commitAllHostEffects ( ) ;
2017-05-26 17:51:06 +00:00
} catch ( e ) {
_error = e ;
}
2017-06-09 02:01:23 +00:00
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 ( resetAfterCommit ( ) , root . current = finishedWork , nextEffect = firstEffect ; null !== nextEffect ; ) {
2017-05-26 17:51:06 +00:00
var _error2 = null ;
try {
2017-06-09 02:01:23 +00:00
commitAllLifeCycles ( ) ;
2017-05-26 17:51:06 +00:00
} catch ( e ) {
_error2 = e ;
}
2017-06-09 02:01:23 +00:00
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 , "function" == typeof onCommitRoot && onCommitRoot ( finishedWork . stateNode ) ,
! 1 && 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$3 && tag !== HostRoot$3 || ( 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 ! 1 && 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 ( ! 1 && 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 , next = beginWork ( current , workInProgress , nextPriorityLevel ) ;
2017-06-09 02:01:23 +00:00
return ! 1 && 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
next ;
}
function performFailedUnitOfWork ( workInProgress ) {
var current = workInProgress . alternate , next = beginFailedWork ( current , workInProgress , nextPriorityLevel ) ;
2017-06-09 02:01:23 +00:00
return ! 1 && 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
next ;
}
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 ( ) ) ;
}
2017-06-26 22:12:46 +00:00
function workLoopAsync ( minPriorityLevel , deadline ) {
for ( ; null !== nextUnitOfWork && ! deadlineHasExpired ; ) if ( deadline . timeRemaining ( ) > timeHeuristicForUnitOfWork ) {
if ( null === ( nextUnitOfWork = performUnitOfWork ( nextUnitOfWork ) ) && null !== pendingCommit ) if ( deadline . timeRemaining ( ) > timeHeuristicForUnitOfWork ) {
if ( commitAllWork ( pendingCommit ) , nextUnitOfWork = findNextUnitOfWork ( ) , clearErrors ( ) ,
nextPriorityLevel === NoWork$2 || nextPriorityLevel > minPriorityLevel || nextPriorityLevel < HighPriority ) break ;
} else deadlineHasExpired = ! 0 ;
} else deadlineHasExpired = ! 0 ;
}
function workLoopSync ( minPriorityLevel ) {
for ( ; null !== nextUnitOfWork && ! ( null === ( nextUnitOfWork = performUnitOfWork ( nextUnitOfWork ) ) && ( nextUnitOfWork = findNextUnitOfWork ( ) ,
clearErrors ( ) , nextPriorityLevel === NoWork$2 || nextPriorityLevel > minPriorityLevel || nextPriorityLevel > TaskPriority$1 ) ) ; ) ;
}
function workLoop ( minPriorityLevel , deadline ) {
clearErrors ( ) , null === nextUnitOfWork && ( nextUnitOfWork = findNextUnitOfWork ( ) ) ,
nextPriorityLevel !== NoWork$2 && nextPriorityLevel <= minPriorityLevel && ( nextPriorityLevel <= TaskPriority$1 ? workLoopSync ( minPriorityLevel ) : null !== deadline && workLoopAsync ( minPriorityLevel , deadline ) ) ;
}
function performDeferredWork ( deadline ) {
performWork ( OffscreenPriority , deadline ) ;
2017-05-26 17:51:06 +00:00
}
2017-06-26 22:12:46 +00:00
function performWork ( minPriorityLevel , deadline ) {
2017-06-09 02:01:23 +00:00
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 ;
2017-06-26 22:12:46 +00:00
for ( var hasRemainingAsyncWork = ! 1 ; null === fatalError ; ) {
2017-05-26 17:51:06 +00:00
null === pendingCommit || deadlineHasExpired || commitAllWork ( pendingCommit ) , priorityContextBeforeReconciliation = priorityContext ;
var _error3 = null ;
try {
2017-06-26 22:12:46 +00:00
workLoop ( minPriorityLevel , deadline ) ;
2017-05-26 17:51:06 +00:00
} catch ( e ) {
_error3 = e ;
}
2017-06-26 22:12:46 +00:00
if ( priorityContext = priorityContextBeforeReconciliation , null === _error3 ) {
switch ( nextPriorityLevel ) {
case SynchronousPriority$1 :
case TaskPriority$1 :
if ( nextPriorityLevel <= minPriorityLevel ) continue ;
break ;
case HighPriority :
case LowPriority :
case OffscreenPriority :
if ( null === deadline ) hasRemainingAsyncWork = ! 0 ; else {
if ( ! deadlineHasExpired && nextPriorityLevel <= minPriorityLevel ) continue ;
hasRemainingAsyncWork = ! 0 ;
2017-05-26 17:51:06 +00:00
}
2017-06-26 22:12:46 +00:00
break ;
2017-05-26 17:51:06 +00:00
2017-06-26 22:12:46 +00:00
case NoWork$2 :
break ;
2017-05-26 17:51:06 +00:00
2017-06-26 22:12:46 +00:00
default :
invariant ( ! 1 , "Switch statement should be exhuastive." ) ;
}
break ;
}
var failedWork = nextUnitOfWork ;
if ( null === failedWork ) null === fatalError && ( fatalError = _error3 ) ; else {
var maybeBoundary = captureError ( failedWork , _error3 ) ;
if ( null !== maybeBoundary ) {
var boundary = maybeBoundary ;
beginFailedWork ( boundary . alternate , boundary , nextPriorityLevel ) , unwindContexts ( failedWork , boundary ) ,
nextUnitOfWork = completeUnitOfWork ( boundary ) ;
}
}
2017-05-26 17:51:06 +00:00
}
2017-06-26 22:12:46 +00:00
null !== deadline && ( isCallbackScheduled = ! 1 ) , hasRemainingAsyncWork && ! isCallbackScheduled && ( scheduleDeferredCallback ( performDeferredWork ) ,
isCallbackScheduled = ! 0 ) ;
var errorToThrow = null !== fatalError ? 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 , null !== errorToThrow ) throw errorToThrow ;
}
function captureError ( failedWork , error ) {
ReactCurrentOwner$1 . current = null , nextUnitOfWork = null ;
var boundary = null , errorBoundaryFound = ! 1 , willRetry = ! 1 , errorBoundaryName = null ;
if ( failedWork . tag === HostRoot$3 ) boundary = failedWork , isFailedBoundary ( failedWork ) && ( fatalError = error ) ; else for ( var node = failedWork . return ; null !== node && null === boundary ; ) {
if ( node . tag === ClassComponent$3 ) {
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$3 && ( 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 ( 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$3 :
var instance = effectfulFiber . stateNode , info = {
componentStack : capturedError . componentStack
} ;
return void instance . unstable _handleError ( error , info ) ;
case HostRoot$3 :
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$3 :
popContextProvider$1 ( node ) ;
break ;
2017-06-09 02:01:23 +00:00
case HostComponent$4 :
2017-05-26 17:51:06 +00:00
popHostContext ( node ) ;
break ;
case HostRoot$3 :
case HostPortal$1 :
popHostContainer ( 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 ) {
priorityLevel <= nextPriorityLevel && ( nextUnitOfWork = null ) ;
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$3 ) return ;
2017-06-26 22:12:46 +00:00
if ( scheduleRoot ( node . stateNode , priorityLevel ) , ! isPerformingWork ) switch ( priorityLevel ) {
2017-05-26 17:51:06 +00:00
case SynchronousPriority$1 :
2017-06-26 22:12:46 +00:00
isUnbatchingUpdates ? performWork ( SynchronousPriority$1 , null ) : performWork ( TaskPriority$1 , null ) ;
break ;
2017-05-26 17:51:06 +00:00
case TaskPriority$1 :
2017-06-26 22:12:46 +00:00
invariant ( isBatchingUpdates , "Task updates can only be scheduled as a nested update or " + "inside batchedUpdates." ) ;
break ;
2017-05-26 17:51:06 +00:00
2017-06-26 22:12:46 +00:00
default :
isCallbackScheduled || ( scheduleDeferredCallback ( performDeferredWork ) , isCallbackScheduled = ! 0 ) ;
2017-05-26 17:51:06 +00:00
}
}
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 ) {
2017-06-26 22:12:46 +00:00
var previousIsUnbatchingUpdates = isUnbatchingUpdates , previousIsBatchingUpdates = isBatchingUpdates ;
isUnbatchingUpdates = isBatchingUpdates , isBatchingUpdates = ! 1 ;
2017-05-26 17:51:06 +00:00
try {
return fn ( ) ;
} finally {
2017-06-26 22:12:46 +00:00
isBatchingUpdates = previousIsBatchingUpdates , isUnbatchingUpdates = previousIsUnbatchingUpdates ;
2017-05-26 17:51:06 +00:00
}
}
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 , 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 ) {
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 , addTopLevelUpdate ( current , nextState , callback , priorityLevel ) ,
2017-05-26 17:51:06 +00:00
scheduleUpdate ( current , priorityLevel ) ;
}
return {
createContainer : function ( containerInfo ) {
return createFiberRoot ( containerInfo ) ;
} ,
updateContainer : function ( element , container , parentComponent , callback ) {
var current = container . current , 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 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 , 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 ) {
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 ) {
2017-06-26 22:12:46 +00:00
var childTag = "number" == typeof child ? child : child . _nativeTag , children = parentInstance . _children , index = children . indexOf ( child ) ;
index >= 0 ? ( children . splice ( index , 1 ) , children . push ( child ) , UIManager . manageChildren ( parentInstance . _nativeTag , [ index ] , [ children . length - 1 ] , [ ] , [ ] , [ ] ) ) : ( children . push ( child ) ,
UIManager . manageChildren ( parentInstance . _nativeTag , [ ] , [ ] , [ childTag ] , [ children . length - 1 ] , [ ] ) ) ;
} ,
appendChildToContainer : function ( parentInstance , child ) {
2017-05-26 17:51:06 +00:00
var childTag = "number" == typeof child ? child : child . _nativeTag ;
2017-06-26 22:12:46 +00:00
UIManager . setChildren ( parentInstance , [ childTag ] ) ;
2017-05-26 17:51:06 +00:00
} ,
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 ) , 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 ) {
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 ] , [ ] ) ;
}
} ,
2017-06-26 22:12:46 +00:00
insertInContainerBefore : function ( parentInstance , child , beforeChild ) {
invariant ( "number" != typeof parentInstance , "Container does not support insertBefore operation" ) ;
} ,
2017-05-26 17:51:06 +00:00
prepareForCommit : function ( ) { } ,
prepareUpdate : function ( instance , type , oldProps , newProps , rootContainerInstance , hostContext ) {
return emptyObject ;
} ,
removeChild : function ( parentInstance , child ) {
2017-06-26 22:12:46 +00:00
recursivelyUncacheFiberNode ( child ) ;
var children = parentInstance . _children , index = children . indexOf ( child ) ;
children . splice ( index , 1 ) , UIManager . manageChildren ( parentInstance . _nativeTag , [ ] , [ ] , [ ] , [ ] , [ index ] ) ;
} ,
removeChildFromContainer : function ( parentInstance , child ) {
recursivelyUncacheFiberNode ( child ) , UIManager . manageChildren ( parentInstance , [ ] , [ ] , [ ] , [ ] , [ 0 ] ) ;
2017-05-26 17:51:06 +00:00
} ,
resetAfterCommit : function ( ) { } ,
resetTextContent : function ( instance ) { } ,
shouldDeprioritizeSubtree : function ( type , props ) {
return ! 1 ;
} ,
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
} ) , ReactNativeFiberRenderer = NativeRenderer , getInspectorDataForViewTag = void 0 ;
getInspectorDataForViewTag = function ( ) {
invariant ( ! 1 , "getInspectorDataForViewTag() is not available in production" ) ;
} ;
var ReactNativeFiberInspector = {
getInspectorDataForViewTag : getInspectorDataForViewTag
2017-06-26 22:12:46 +00:00
} , ReactVersion = "16.0.0-alpha.13" , ReactNativeFeatureFlags = require ( "ReactNativeFeatureFlags" ) , injectedFindNode = ReactNativeFeatureFlags . useFiber ? function ( fiber ) {
2017-05-26 17:51:06 +00:00
return ReactNativeFiberRenderer . findHostInstance ( fiber ) ;
} : function ( instance ) {
return instance ;
} ;
function findNodeHandle ( componentOrHandle ) {
if ( 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 ) ;
}
2017-06-26 22:12:46 +00:00
var ReactNativeFeatureFlags$1 = require ( "ReactNativeFeatureFlags" ) , mountSafeCallback$2 = NativeMethodsMixinUtils . mountSafeCallback , findNumericNodeHandle = ReactNativeFeatureFlags$1 . useFiber ? findNumericNodeHandleFiber : DevOnlyStubShim , ReactNativeComponent = function ( _React$Component ) {
2017-06-09 02:01:23 +00:00
_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 ;
2017-06-26 22:12:46 +00:00
var ReactNativeComponent _1 = ReactNativeComponent , ReactNativeFeatureFlags$2 = require ( "ReactNativeFeatureFlags" ) , mountSafeCallback$3 = NativeMethodsMixinUtils . mountSafeCallback , findNumericNodeHandle$1 = ReactNativeFeatureFlags$2 . useFiber ? findNumericNodeHandleFiber : DevOnlyStubShim , NativeMethodsMixin = {
2017-06-09 02:01:23 +00:00
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 , 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 , 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-26 22:12:46 +00:00
injectedSetNativeProps$1 = ReactNativeFeatureFlags$2 . useFiber ? setNativePropsFiber$1 : setNativePropsStack$1 ;
2017-05-26 17:51:06 +00:00
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-26 22:12:46 +00:00
} , createReactNativeComponentClassFiber _1 = createReactNativeComponentClassFiber , ReactNativeFeatureFlags$3 = require ( "ReactNativeFeatureFlags" ) , createReactNativeComponentClass = ReactNativeFeatureFlags$3 . useFiber ? createReactNativeComponentClassFiber _1 : DevOnlyStubShim , ReactNativeFeatureFlags$4 = require ( "ReactNativeFeatureFlags" ) , findNumericNodeHandle$2 = ReactNativeFeatureFlags$4 . 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 , injectInternals = ReactFiberDevToolsHook . injectInternals ;
ReactNativeInjection . inject ( ) , ReactGenericBatching _1 . injection . injectFiberBatchedUpdates ( ReactNativeFiberRenderer . batchedUpdates ) ;
var roots = new Map ( ) ;
ReactFiberErrorLogger . injection . injectDialog ( ReactNativeFiberErrorDialog _1 . showDialog ) ;
2017-06-26 22:12:46 +00:00
var ReactNativeFiber = {
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 ) {
2017-06-26 22:12:46 +00:00
ReactNativeFiber . unmountComponentAtNode ( containerTag ) , UIManager . removeRootView ( containerTag ) ;
2017-05-26 17:51:06 +00:00
} ,
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
}
} ;
"function" == typeof injectInternals && injectInternals ( {
findFiberByHostInstance : ReactNativeComponentTree _1 . getClosestInstanceFromNode ,
findHostInstanceByFiber : ReactNativeFiberRenderer . findHostInstance ,
getInspectorDataForViewTag : ReactNativeFiberInspector . getInspectorDataForViewTag ,
bundleType : 0 ,
version : ReactVersion
} ) ;
2017-06-26 22:12:46 +00:00
var ReactNativeFiberEntry = ReactNativeFiber ;
2017-05-26 17:51:06 +00:00
2017-06-26 22:12:46 +00:00
module . exports = ReactNativeFiberEntry ;