{"version":3,"sources":["node_modules\\react-dom\\lib\\ReactMultiChild.js"],"names":["_prodInvariant","require","ReactComponentEnvironment","ReactInstanceMap","ReactInstrumentation","ReactCurrentOwner","ReactReconciler","ReactChildReconciler","emptyFunction","flattenChildren","invariant","makeInsertMarkup","markup","afterNode","toIndex","type","content","fromIndex","fromNode","makeMove","child","_mountIndex","getHostNode","makeRemove","node","makeSetMarkup","makeTextContent","textContent","enqueue","queue","update","push","processQueue","inst","updateQueue","processChildrenUpdates","setChildrenForInstrumentation","process","env","NODE_ENV","getDebugID","_debugID","internal","get","children","debugID","debugTool","onSetChildren","Object","keys","map","key","ReactMultiChild","Mixin","_reconcilerInstantiateChildren","nestedChildren","transaction","context","selfDebugID","_currentElement","current","_owner","instantiateChildren","_reconcilerUpdateChildren","prevChildren","nextNestedChildrenElements","mountImages","removedNodes","nextChildren","updateChildren","_hostContainerInfo","mountChildren","_renderedChildren","index","name","hasOwnProperty","mountImage","mountComponent","call","updateTextContent","nextContent","unmountChildren","updates","updateMarkup","nextMarkup","_updateChildren","nextIndex","lastIndex","nextMountIndex","lastPlacedNode","prevChild","nextChild","moveChild","Math","max","_mountChildAtIndex","_unmountChild","safely","renderedChildren","createChild","removeChild","module","exports"],"mappings":"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","file":"ReactMultiChild.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\nvar ReactComponentEnvironment = require('./ReactComponentEnvironment');\nvar ReactInstanceMap = require('./ReactInstanceMap');\nvar ReactInstrumentation = require('./ReactInstrumentation');\n\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar ReactReconciler = require('./ReactReconciler');\nvar ReactChildReconciler = require('./ReactChildReconciler');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar flattenChildren = require('./flattenChildren');\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Make an update for markup to be rendered and inserted at a supplied index.\n *\n * @param {string} markup Markup that renders into an element.\n * @param {number} toIndex Destination index.\n * @private\n */\nfunction makeInsertMarkup(markup, afterNode, toIndex) {\n  // NOTE: Null values reduce hidden classes.\n  return {\n    type: 'INSERT_MARKUP',\n    content: markup,\n    fromIndex: null,\n    fromNode: null,\n    toIndex: toIndex,\n    afterNode: afterNode\n  };\n}\n\n/**\n * Make an update for moving an existing element to another index.\n *\n * @param {number} fromIndex Source index of the existing element.\n * @param {number} toIndex Destination index of the element.\n * @private\n */\nfunction makeMove(child, afterNode, toIndex) {\n  // NOTE: Null values reduce hidden classes.\n  return {\n    type: 'MOVE_EXISTING',\n    content: null,\n    fromIndex: child._mountIndex,\n    fromNode: ReactReconciler.getHostNode(child),\n    toIndex: toIndex,\n    afterNode: afterNode\n  };\n}\n\n/**\n * Make an update for removing an element at an index.\n *\n * @param {number} fromIndex Index of the element to remove.\n * @private\n */\nfunction makeRemove(child, node) {\n  // NOTE: Null values reduce hidden classes.\n  return {\n    type: 'REMOVE_NODE',\n    content: null,\n    fromIndex: child._mountIndex,\n    fromNode: node,\n    toIndex: null,\n    afterNode: null\n  };\n}\n\n/**\n * Make an update for setting the markup of a node.\n *\n * @param {string} markup Markup that renders into an element.\n * @private\n */\nfunction makeSetMarkup(markup) {\n  // NOTE: Null values reduce hidden classes.\n  return {\n    type: 'SET_MARKUP',\n    content: markup,\n    fromIndex: null,\n    fromNode: null,\n    toIndex: null,\n    afterNode: null\n  };\n}\n\n/**\n * Make an update for setting the text content.\n *\n * @param {string} textContent Text content to set.\n * @private\n */\nfunction makeTextContent(textContent) {\n  // NOTE: Null values reduce hidden classes.\n  return {\n    type: 'TEXT_CONTENT',\n    content: textContent,\n    fromIndex: null,\n    fromNode: null,\n    toIndex: null,\n    afterNode: null\n  };\n}\n\n/**\n * Push an update, if any, onto the queue. Creates a new queue if none is\n * passed and always returns the queue. Mutative.\n */\nfunction enqueue(queue, update) {\n  if (update) {\n    queue = queue || [];\n    queue.push(update);\n  }\n  return queue;\n}\n\n/**\n * Processes any enqueued updates.\n *\n * @private\n */\nfunction processQueue(inst, updateQueue) {\n  ReactComponentEnvironment.processChildrenUpdates(inst, updateQueue);\n}\n\nvar setChildrenForInstrumentation = emptyFunction;\nif (process.env.NODE_ENV !== 'production') {\n  var getDebugID = function (inst) {\n    if (!inst._debugID) {\n      // Check for ART-like instances. TODO: This is silly/gross.\n      var internal;\n      if (internal = ReactInstanceMap.get(inst)) {\n        inst = internal;\n      }\n    }\n    return inst._debugID;\n  };\n  setChildrenForInstrumentation = function (children) {\n    var debugID = getDebugID(this);\n    // TODO: React Native empty components are also multichild.\n    // This means they still get into this method but don't have _debugID.\n    if (debugID !== 0) {\n      ReactInstrumentation.debugTool.onSetChildren(debugID, children ? Object.keys(children).map(function (key) {\n        return children[key]._debugID;\n      }) : []);\n    }\n  };\n}\n\n/**\n * ReactMultiChild are capable of reconciling multiple children.\n *\n * @class ReactMultiChild\n * @internal\n */\nvar ReactMultiChild = {\n  /**\n   * Provides common functionality for components that must reconcile multiple\n   * children. This is used by `ReactDOMComponent` to mount, update, and\n   * unmount child components.\n   *\n   * @lends {ReactMultiChild.prototype}\n   */\n  Mixin: {\n    _reconcilerInstantiateChildren: function (nestedChildren, transaction, context) {\n      if (process.env.NODE_ENV !== 'production') {\n        var selfDebugID = getDebugID(this);\n        if (this._currentElement) {\n          try {\n            ReactCurrentOwner.current = this._currentElement._owner;\n            return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context, selfDebugID);\n          } finally {\n            ReactCurrentOwner.current = null;\n          }\n        }\n      }\n      return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context);\n    },\n\n    _reconcilerUpdateChildren: function (prevChildren, nextNestedChildrenElements, mountImages, removedNodes, transaction, context) {\n      var nextChildren;\n      var selfDebugID = 0;\n      if (process.env.NODE_ENV !== 'production') {\n        selfDebugID = getDebugID(this);\n        if (this._currentElement) {\n          try {\n            ReactCurrentOwner.current = this._currentElement._owner;\n            nextChildren = flattenChildren(nextNestedChildrenElements, selfDebugID);\n          } finally {\n            ReactCurrentOwner.current = null;\n          }\n          ReactChildReconciler.updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, this, this._hostContainerInfo, context, selfDebugID);\n          return nextChildren;\n        }\n      }\n      nextChildren = flattenChildren(nextNestedChildrenElements, selfDebugID);\n      ReactChildReconciler.updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, this, this._hostContainerInfo, context, selfDebugID);\n      return nextChildren;\n    },\n\n    /**\n     * Generates a \"mount image\" for each of the supplied children. In the case\n     * of `ReactDOMComponent`, a mount image is a string of markup.\n     *\n     * @param {?object} nestedChildren Nested child maps.\n     * @return {array} An array of mounted representations.\n     * @internal\n     */\n    mountChildren: function (nestedChildren, transaction, context) {\n      var children = this._reconcilerInstantiateChildren(nestedChildren, transaction, context);\n      this._renderedChildren = children;\n\n      var mountImages = [];\n      var index = 0;\n      for (var name in children) {\n        if (children.hasOwnProperty(name)) {\n          var child = children[name];\n          var selfDebugID = 0;\n          if (process.env.NODE_ENV !== 'production') {\n            selfDebugID = getDebugID(this);\n          }\n          var mountImage = ReactReconciler.mountComponent(child, transaction, this, this._hostContainerInfo, context, selfDebugID);\n          child._mountIndex = index++;\n          mountImages.push(mountImage);\n        }\n      }\n\n      if (process.env.NODE_ENV !== 'production') {\n        setChildrenForInstrumentation.call(this, children);\n      }\n\n      return mountImages;\n    },\n\n    /**\n     * Replaces any rendered children with a text content string.\n     *\n     * @param {string} nextContent String of content.\n     * @internal\n     */\n    updateTextContent: function (nextContent) {\n      var prevChildren = this._renderedChildren;\n      // Remove any rendered children.\n      ReactChildReconciler.unmountChildren(prevChildren, false);\n      for (var name in prevChildren) {\n        if (prevChildren.hasOwnProperty(name)) {\n          !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'updateTextContent called on non-empty component.') : _prodInvariant('118') : void 0;\n        }\n      }\n      // Set new text content.\n      var updates = [makeTextContent(nextContent)];\n      processQueue(this, updates);\n    },\n\n    /**\n     * Replaces any rendered children with a markup string.\n     *\n     * @param {string} nextMarkup String of markup.\n     * @internal\n     */\n    updateMarkup: function (nextMarkup) {\n      var prevChildren = this._renderedChildren;\n      // Remove any rendered children.\n      ReactChildReconciler.unmountChildren(prevChildren, false);\n      for (var name in prevChildren) {\n        if (prevChildren.hasOwnProperty(name)) {\n          !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'updateTextContent called on non-empty component.') : _prodInvariant('118') : void 0;\n        }\n      }\n      var updates = [makeSetMarkup(nextMarkup)];\n      processQueue(this, updates);\n    },\n\n    /**\n     * Updates the rendered children with new children.\n     *\n     * @param {?object} nextNestedChildrenElements Nested child element maps.\n     * @param {ReactReconcileTransaction} transaction\n     * @internal\n     */\n    updateChildren: function (nextNestedChildrenElements, transaction, context) {\n      // Hook used by React ART\n      this._updateChildren(nextNestedChildrenElements, transaction, context);\n    },\n\n    /**\n     * @param {?object} nextNestedChildrenElements Nested child element maps.\n     * @param {ReactReconcileTransaction} transaction\n     * @final\n     * @protected\n     */\n    _updateChildren: function (nextNestedChildrenElements, transaction, context) {\n      var prevChildren = this._renderedChildren;\n      var removedNodes = {};\n      var mountImages = [];\n      var nextChildren = this._reconcilerUpdateChildren(prevChildren, nextNestedChildrenElements, mountImages, removedNodes, transaction, context);\n      if (!nextChildren && !prevChildren) {\n        return;\n      }\n      var updates = null;\n      var name;\n      // `nextIndex` will increment for each child in `nextChildren`, but\n      // `lastIndex` will be the last index visited in `prevChildren`.\n      var nextIndex = 0;\n      var lastIndex = 0;\n      // `nextMountIndex` will increment for each newly mounted child.\n      var nextMountIndex = 0;\n      var lastPlacedNode = null;\n      for (name in nextChildren) {\n        if (!nextChildren.hasOwnProperty(name)) {\n          continue;\n        }\n        var prevChild = prevChildren && prevChildren[name];\n        var nextChild = nextChildren[name];\n        if (prevChild === nextChild) {\n          updates = enqueue(updates, this.moveChild(prevChild, lastPlacedNode, nextIndex, lastIndex));\n          lastIndex = Math.max(prevChild._mountIndex, lastIndex);\n          prevChild._mountIndex = nextIndex;\n        } else {\n          if (prevChild) {\n            // Update `lastIndex` before `_mountIndex` gets unset by unmounting.\n            lastIndex = Math.max(prevChild._mountIndex, lastIndex);\n            // The `removedNodes` loop below will actually remove the child.\n          }\n          // The child must be instantiated before it's mounted.\n          updates = enqueue(updates, this._mountChildAtIndex(nextChild, mountImages[nextMountIndex], lastPlacedNode, nextIndex, transaction, context));\n          nextMountIndex++;\n        }\n        nextIndex++;\n        lastPlacedNode = ReactReconciler.getHostNode(nextChild);\n      }\n      // Remove children that are no longer present.\n      for (name in removedNodes) {\n        if (removedNodes.hasOwnProperty(name)) {\n          updates = enqueue(updates, this._unmountChild(prevChildren[name], removedNodes[name]));\n        }\n      }\n      if (updates) {\n        processQueue(this, updates);\n      }\n      this._renderedChildren = nextChildren;\n\n      if (process.env.NODE_ENV !== 'production') {\n        setChildrenForInstrumentation.call(this, nextChildren);\n      }\n    },\n\n    /**\n     * Unmounts all rendered children. This should be used to clean up children\n     * when this component is unmounted. It does not actually perform any\n     * backend operations.\n     *\n     * @internal\n     */\n    unmountChildren: function (safely) {\n      var renderedChildren = this._renderedChildren;\n      ReactChildReconciler.unmountChildren(renderedChildren, safely);\n      this._renderedChildren = null;\n    },\n\n    /**\n     * Moves a child component to the supplied index.\n     *\n     * @param {ReactComponent} child Component to move.\n     * @param {number} toIndex Destination index of the element.\n     * @param {number} lastIndex Last index visited of the siblings of `child`.\n     * @protected\n     */\n    moveChild: function (child, afterNode, toIndex, lastIndex) {\n      // If the index of `child` is less than `lastIndex`, then it needs to\n      // be moved. Otherwise, we do not need to move it because a child will be\n      // inserted or moved before `child`.\n      if (child._mountIndex < lastIndex) {\n        return makeMove(child, afterNode, toIndex);\n      }\n    },\n\n    /**\n     * Creates a child component.\n     *\n     * @param {ReactComponent} child Component to create.\n     * @param {string} mountImage Markup to insert.\n     * @protected\n     */\n    createChild: function (child, afterNode, mountImage) {\n      return makeInsertMarkup(mountImage, afterNode, child._mountIndex);\n    },\n\n    /**\n     * Removes a child component.\n     *\n     * @param {ReactComponent} child Child to remove.\n     * @protected\n     */\n    removeChild: function (child, node) {\n      return makeRemove(child, node);\n    },\n\n    /**\n     * Mounts a child with the supplied name.\n     *\n     * NOTE: This is part of `updateChildren` and is here for readability.\n     *\n     * @param {ReactComponent} child Component to mount.\n     * @param {string} name Name of the child.\n     * @param {number} index Index at which to insert the child.\n     * @param {ReactReconcileTransaction} transaction\n     * @private\n     */\n    _mountChildAtIndex: function (child, mountImage, afterNode, index, transaction, context) {\n      child._mountIndex = index;\n      return this.createChild(child, afterNode, mountImage);\n    },\n\n    /**\n     * Unmounts a rendered child.\n     *\n     * NOTE: This is part of `updateChildren` and is here for readability.\n     *\n     * @param {ReactComponent} child Component to unmount.\n     * @private\n     */\n    _unmountChild: function (child, node) {\n      var update = this.removeChild(child, node);\n      child._mountIndex = null;\n      return update;\n    }\n  }\n};\n\nmodule.exports = ReactMultiChild;"]}