nl_tokens: Clone and return a new ReactElement using element as the starting point . See https : // reactjs . org / docs / react - api . html#cloneelement
pl_tokens: function cloneElement ( element , config , children ) { var propName ; // Original props are copied var props = _assign ( { } , element . props ) ; // Reserved names are extracted var key = element . key ; var ref = element . ref ; // Self is preserved since the owner is preserved. var self = element . _self ; // Source is preserved since cloneElement is unlikely to be targeted by a // transpiler, and the original source is probably a better indicator of the // true owner. var source = element . _source ; // Owner will be preserved, unless ref is overridden var owner = element . _owner ; if ( config != null ) { if ( hasValidRef ( config ) ) { // Silently steal the ref from the parent. <mask> = config . ref ; owner = ReactCurrentOwner . current ; } if ( hasValidKey ( config ) ) { key = '' + config . key ; } // Remaining properties override existing props var defaultProps ; if ( element . type && element . type . defaultProps ) { defaultProps = element . type . defaultProps ; } for ( propName in config ) { if ( hasOwnProperty . call ( config , propName ) && ! RESERVED_PROPS . hasOwnProperty ( propName ) ) { if ( config [ propName ] === undefined && defaultProps !== undefined ) { // Resolve default props props [ propName ] = defaultProps [ propName ] ; } else { props [ propName ] = config [ propName ] ; } } } } // Children can be more than one argument, and those are transferred onto // the newly allocated props object. var childrenLength = arguments . length - 2 ; if ( childrenLength === 1 ) { props . children = children ; } else if ( childrenLength > 1 ) { var childArray = Array ( childrenLength ) ; for ( var i = 0 ; i < childrenLength ; i ++ ) { childArray [ i ] = arguments [ i + 2 ] ; } props . children = childArray ; } return ReactElement ( element . type , key , ref , self , source , owner , props ) ; }