Files
react/src/utils/onlyChild.js
T
Paul O’Shannessy dcf415c2b9 BSD + PATENTS
2014-10-10 13:34:07 -07:00

37 lines
1.1 KiB
JavaScript

/**
* Copyright 2013-2014, 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 onlyChild
*/
"use strict";
var ReactElement = require('ReactElement');
var invariant = require('invariant');
/**
* Returns the first child in a collection of children and verifies that there
* is only one child in the collection. The current implementation of this
* function assumes that a single child gets passed without a wrapper, but the
* purpose of this helper function is to abstract away the particular structure
* of children.
*
* @param {?object} children Child collection structure.
* @return {ReactComponent} The first and only `ReactComponent` contained in the
* structure.
*/
function onlyChild(children) {
invariant(
ReactElement.isValidElement(children),
'onlyChild must be passed a children with exactly one child.'
);
return children;
}
module.exports = onlyChild;