text: /**
   * Copyright 2013-2015, 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.
   *
   * @providesModule flattenChildren
   */
  
  'use strict';
  
  var traverseAllChildren = require("./traverseAllChildren");
  var warning = require("./warning");
  
  /**
   * @param {function} traverseContext Context passed through traversal.
   * @param {?ReactComponent} child React child component.
   * @param {!string} name String name of key path to child.
   */
  function flattenSingleChildIntoContext(traverseContext, child, name) {
    // We found a component instance.
    var result = traverseContext;
    var keyUnique = !result.hasOwnProperty(name);
    if ("production" !== process.env.NODE_ENV) {
      ("production" !== process.env.NODE_ENV ? warning(
        keyUnique,
        'flattenChildren(...): Encountered two children with the same key, ' +
        '`%s`. Child keys must be unique; when two children share a key, only ' +
        'the first child will be used.',
        name
      ) : null);
    }
    if (keyUnique && child != null) {
      result[name] = child;
    }
  }
  
  /**
   * Flattens children that are typically specified as `props.children`. Any null
   * children will not be included in the resulting object.
   * @return {!object} flattened children keyed by name.
   */
  function flattenChildren(children) {
    if (children == null) {
      return children;
    }
    var result = {};
    traverseAllChildren(children, flattenSingleChildIntoContext, result);
    return result;
  }
  
  module.exports = flattenChildren;
  