49 lines
		
	
	
		
			1014 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1014 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
import baseLodash from './_baseLodash.js';
 | 
						|
import wrapperClone from './_wrapperClone.js';
 | 
						|
 | 
						|
/**
 | 
						|
 * Creates a clone of the chain sequence planting `value` as the wrapped value.
 | 
						|
 *
 | 
						|
 * @name plant
 | 
						|
 * @memberOf _
 | 
						|
 * @since 3.2.0
 | 
						|
 * @category Seq
 | 
						|
 * @param {*} value The value to plant.
 | 
						|
 * @returns {Object} Returns the new `lodash` wrapper instance.
 | 
						|
 * @example
 | 
						|
 *
 | 
						|
 * function square(n) {
 | 
						|
 *   return n * n;
 | 
						|
 * }
 | 
						|
 *
 | 
						|
 * var wrapped = _([1, 2]).map(square);
 | 
						|
 * var other = wrapped.plant([3, 4]);
 | 
						|
 *
 | 
						|
 * other.value();
 | 
						|
 * // => [9, 16]
 | 
						|
 *
 | 
						|
 * wrapped.value();
 | 
						|
 * // => [1, 4]
 | 
						|
 */
 | 
						|
function wrapperPlant(value) {
 | 
						|
  var result,
 | 
						|
      parent = this;
 | 
						|
 | 
						|
  while (parent instanceof baseLodash) {
 | 
						|
    var clone = wrapperClone(parent);
 | 
						|
    clone.__index__ = 0;
 | 
						|
    clone.__values__ = undefined;
 | 
						|
    if (result) {
 | 
						|
      previous.__wrapped__ = clone;
 | 
						|
    } else {
 | 
						|
      result = clone;
 | 
						|
    }
 | 
						|
    var previous = clone;
 | 
						|
    parent = parent.__wrapped__;
 | 
						|
  }
 | 
						|
  previous.__wrapped__ = value;
 | 
						|
  return result;
 | 
						|
}
 | 
						|
 | 
						|
export default wrapperPlant;
 |