{"version":3,"sources":["node_modules\\react-dom\\lib\\ReactUpdates.js"],"names":["_prodInvariant","require","_assign","CallbackQueue","PooledClass","ReactFeatureFlags","ReactReconciler","Transaction","invariant","dirtyComponents","updateBatchNumber","asapCallbackQueue","getPooled","asapEnqueued","batchingStrategy","ensureInjected","ReactUpdates","ReactReconcileTransaction","process","env","NODE_ENV","NESTED_UPDATES","initialize","dirtyComponentsLength","length","close","splice","flushBatchedUpdates","UPDATE_QUEUEING","callbackQueue","reset","notifyAll","TRANSACTION_WRAPPERS","ReactUpdatesFlushTransaction","reinitializeTransaction","reconcileTransaction","prototype","getTransactionWrappers","destructor","release","perform","method","scope","a","call","addPoolingTo","batchedUpdates","callback","b","c","d","e","mountOrderComparator","c1","c2","_mountOrder","runBatchedUpdates","transaction","len","sort","i","component","callbacks","_pendingCallbacks","markerName","logTopLevelRenders","namedComponent","_currentElement","type","isReactTopLevelWrapper","_renderedComponent","getName","console","time","performUpdateIfNecessary","timeEnd","j","enqueue","getPublicInstance","queue","enqueueUpdate","isBatchingUpdates","push","_updateBatchNumber","asap","context","ReactUpdatesInjection","injectReconcileTransaction","ReconcileTransaction","injectBatchingStrategy","_batchingStrategy","injection","module","exports"],"mappings":"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","file":"ReactUpdates.js","sourceRoot":"D:/Work/Office/react-native-on-web/cli/tmpl/project","sourcesContent":["/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n    _assign = require('object-assign');\n\nvar CallbackQueue = require('./CallbackQueue');\nvar PooledClass = require('./PooledClass');\nvar ReactFeatureFlags = require('./ReactFeatureFlags');\nvar ReactReconciler = require('./ReactReconciler');\nvar Transaction = require('./Transaction');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar dirtyComponents = [];\nvar updateBatchNumber = 0;\nvar asapCallbackQueue = CallbackQueue.getPooled();\nvar asapEnqueued = false;\n\nvar batchingStrategy = null;\n\nfunction ensureInjected() {\n  !(ReactUpdates.ReactReconcileTransaction && batchingStrategy) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must inject a reconcile transaction class and batching strategy') : _prodInvariant('123') : void 0;\n}\n\nvar NESTED_UPDATES = {\n  initialize: function () {\n    this.dirtyComponentsLength = dirtyComponents.length;\n  },\n  close: function () {\n    if (this.dirtyComponentsLength !== dirtyComponents.length) {\n      // Additional updates were enqueued by componentDidUpdate handlers or\n      // similar; before our own UPDATE_QUEUEING wrapper closes, we want to run\n      // these new updates so that if A's componentDidUpdate calls setState on\n      // B, B will update before the callback A's updater provided when calling\n      // setState.\n      dirtyComponents.splice(0, this.dirtyComponentsLength);\n      flushBatchedUpdates();\n    } else {\n      dirtyComponents.length = 0;\n    }\n  }\n};\n\nvar UPDATE_QUEUEING = {\n  initialize: function () {\n    this.callbackQueue.reset();\n  },\n  close: function () {\n    this.callbackQueue.notifyAll();\n  }\n};\n\nvar TRANSACTION_WRAPPERS = [NESTED_UPDATES, UPDATE_QUEUEING];\n\nfunction ReactUpdatesFlushTransaction() {\n  this.reinitializeTransaction();\n  this.dirtyComponentsLength = null;\n  this.callbackQueue = CallbackQueue.getPooled();\n  this.reconcileTransaction = ReactUpdates.ReactReconcileTransaction.getPooled(\n  /* useCreateElement */true);\n}\n\n_assign(ReactUpdatesFlushTransaction.prototype, Transaction, {\n  getTransactionWrappers: function () {\n    return TRANSACTION_WRAPPERS;\n  },\n\n  destructor: function () {\n    this.dirtyComponentsLength = null;\n    CallbackQueue.release(this.callbackQueue);\n    this.callbackQueue = null;\n    ReactUpdates.ReactReconcileTransaction.release(this.reconcileTransaction);\n    this.reconcileTransaction = null;\n  },\n\n  perform: function (method, scope, a) {\n    // Essentially calls `this.reconcileTransaction.perform(method, scope, a)`\n    // with this transaction's wrappers around it.\n    return Transaction.perform.call(this, this.reconcileTransaction.perform, this.reconcileTransaction, method, scope, a);\n  }\n});\n\nPooledClass.addPoolingTo(ReactUpdatesFlushTransaction);\n\nfunction batchedUpdates(callback, a, b, c, d, e) {\n  ensureInjected();\n  return batchingStrategy.batchedUpdates(callback, a, b, c, d, e);\n}\n\n/**\n * Array comparator for ReactComponents by mount ordering.\n *\n * @param {ReactComponent} c1 first component you're comparing\n * @param {ReactComponent} c2 second component you're comparing\n * @return {number} Return value usable by Array.prototype.sort().\n */\nfunction mountOrderComparator(c1, c2) {\n  return c1._mountOrder - c2._mountOrder;\n}\n\nfunction runBatchedUpdates(transaction) {\n  var len = transaction.dirtyComponentsLength;\n  !(len === dirtyComponents.length) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected flush transaction\\'s stored dirty-components length (%s) to match dirty-components array length (%s).', len, dirtyComponents.length) : _prodInvariant('124', len, dirtyComponents.length) : void 0;\n\n  // Since reconciling a component higher in the owner hierarchy usually (not\n  // always -- see shouldComponentUpdate()) will reconcile children, reconcile\n  // them before their children by sorting the array.\n  dirtyComponents.sort(mountOrderComparator);\n\n  // Any updates enqueued while reconciling must be performed after this entire\n  // batch. Otherwise, if dirtyComponents is [A, B] where A has children B and\n  // C, B could update twice in a single batch if C's render enqueues an update\n  // to B (since B would have already updated, we should skip it, and the only\n  // way we can know to do so is by checking the batch counter).\n  updateBatchNumber++;\n\n  for (var i = 0; i < len; i++) {\n    // If a component is unmounted before pending changes apply, it will still\n    // be here, but we assume that it has cleared its _pendingCallbacks and\n    // that performUpdateIfNecessary is a noop.\n    var component = dirtyComponents[i];\n\n    // If performUpdateIfNecessary happens to enqueue any new updates, we\n    // shouldn't execute the callbacks until the next render happens, so\n    // stash the callbacks first\n    var callbacks = component._pendingCallbacks;\n    component._pendingCallbacks = null;\n\n    var markerName;\n    if (ReactFeatureFlags.logTopLevelRenders) {\n      var namedComponent = component;\n      // Duck type TopLevelWrapper. This is probably always true.\n      if (component._currentElement.type.isReactTopLevelWrapper) {\n        namedComponent = component._renderedComponent;\n      }\n      markerName = 'React update: ' + namedComponent.getName();\n      console.time(markerName);\n    }\n\n    ReactReconciler.performUpdateIfNecessary(component, transaction.reconcileTransaction, updateBatchNumber);\n\n    if (markerName) {\n      console.timeEnd(markerName);\n    }\n\n    if (callbacks) {\n      for (var j = 0; j < callbacks.length; j++) {\n        transaction.callbackQueue.enqueue(callbacks[j], component.getPublicInstance());\n      }\n    }\n  }\n}\n\nvar flushBatchedUpdates = function () {\n  // ReactUpdatesFlushTransaction's wrappers will clear the dirtyComponents\n  // array and perform any updates enqueued by mount-ready handlers (i.e.,\n  // componentDidUpdate) but we need to check here too in order to catch\n  // updates enqueued by setState callbacks and asap calls.\n  while (dirtyComponents.length || asapEnqueued) {\n    if (dirtyComponents.length) {\n      var transaction = ReactUpdatesFlushTransaction.getPooled();\n      transaction.perform(runBatchedUpdates, null, transaction);\n      ReactUpdatesFlushTransaction.release(transaction);\n    }\n\n    if (asapEnqueued) {\n      asapEnqueued = false;\n      var queue = asapCallbackQueue;\n      asapCallbackQueue = CallbackQueue.getPooled();\n      queue.notifyAll();\n      CallbackQueue.release(queue);\n    }\n  }\n};\n\n/**\n * Mark a component as needing a rerender, adding an optional callback to a\n * list of functions which will be executed once the rerender occurs.\n */\nfunction enqueueUpdate(component) {\n  ensureInjected();\n\n  // Various parts of our code (such as ReactCompositeComponent's\n  // _renderValidatedComponent) assume that calls to render aren't nested;\n  // verify that that's the case. (This is called by each top-level update\n  // function, like setState, forceUpdate, etc.; creation and\n  // destruction of top-level components is guarded in ReactMount.)\n\n  if (!batchingStrategy.isBatchingUpdates) {\n    batchingStrategy.batchedUpdates(enqueueUpdate, component);\n    return;\n  }\n\n  dirtyComponents.push(component);\n  if (component._updateBatchNumber == null) {\n    component._updateBatchNumber = updateBatchNumber + 1;\n  }\n}\n\n/**\n * Enqueue a callback to be run at the end of the current batching cycle. Throws\n * if no updates are currently being performed.\n */\nfunction asap(callback, context) {\n  !batchingStrategy.isBatchingUpdates ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates.asap: Can\\'t enqueue an asap callback in a context whereupdates are not being batched.') : _prodInvariant('125') : void 0;\n  asapCallbackQueue.enqueue(callback, context);\n  asapEnqueued = true;\n}\n\nvar ReactUpdatesInjection = {\n  injectReconcileTransaction: function (ReconcileTransaction) {\n    !ReconcileTransaction ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide a reconcile transaction class') : _prodInvariant('126') : void 0;\n    ReactUpdates.ReactReconcileTransaction = ReconcileTransaction;\n  },\n\n  injectBatchingStrategy: function (_batchingStrategy) {\n    !_batchingStrategy ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide a batching strategy') : _prodInvariant('127') : void 0;\n    !(typeof _batchingStrategy.batchedUpdates === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide a batchedUpdates() function') : _prodInvariant('128') : void 0;\n    !(typeof _batchingStrategy.isBatchingUpdates === 'boolean') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide an isBatchingUpdates boolean attribute') : _prodInvariant('129') : void 0;\n    batchingStrategy = _batchingStrategy;\n  }\n};\n\nvar ReactUpdates = {\n  /**\n   * React references `ReactReconcileTransaction` using this property in order\n   * to allow dependency injection.\n   *\n   * @internal\n   */\n  ReactReconcileTransaction: null,\n\n  batchedUpdates: batchedUpdates,\n  enqueueUpdate: enqueueUpdate,\n  flushBatchedUpdates: flushBatchedUpdates,\n  injection: ReactUpdatesInjection,\n  asap: asap\n};\n\nmodule.exports = ReactUpdates;"]}