| define( [ | 
 | 	"./core", | 
 | 	"./var/isFunction", | 
 | 	"./core/init", | 
 | 	"./manipulation", // clone | 
 | 	"./traversing" // parent, contents | 
 | ], function( jQuery, isFunction ) { | 
 |  | 
 | "use strict"; | 
 |  | 
 | jQuery.fn.extend( { | 
 | 	wrapAll: function( html ) { | 
 | 		var wrap; | 
 |  | 
 | 		if ( this[ 0 ] ) { | 
 | 			if ( isFunction( html ) ) { | 
 | 				html = html.call( this[ 0 ] ); | 
 | 			} | 
 |  | 
 | 			// The elements to wrap the target around | 
 | 			wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); | 
 |  | 
 | 			if ( this[ 0 ].parentNode ) { | 
 | 				wrap.insertBefore( this[ 0 ] ); | 
 | 			} | 
 |  | 
 | 			wrap.map( function() { | 
 | 				var elem = this; | 
 |  | 
 | 				while ( elem.firstElementChild ) { | 
 | 					elem = elem.firstElementChild; | 
 | 				} | 
 |  | 
 | 				return elem; | 
 | 			} ).append( this ); | 
 | 		} | 
 |  | 
 | 		return this; | 
 | 	}, | 
 |  | 
 | 	wrapInner: function( html ) { | 
 | 		if ( isFunction( html ) ) { | 
 | 			return this.each( function( i ) { | 
 | 				jQuery( this ).wrapInner( html.call( this, i ) ); | 
 | 			} ); | 
 | 		} | 
 |  | 
 | 		return this.each( function() { | 
 | 			var self = jQuery( this ), | 
 | 				contents = self.contents(); | 
 |  | 
 | 			if ( contents.length ) { | 
 | 				contents.wrapAll( html ); | 
 |  | 
 | 			} else { | 
 | 				self.append( html ); | 
 | 			} | 
 | 		} ); | 
 | 	}, | 
 |  | 
 | 	wrap: function( html ) { | 
 | 		var htmlIsFunction = isFunction( html ); | 
 |  | 
 | 		return this.each( function( i ) { | 
 | 			jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); | 
 | 		} ); | 
 | 	}, | 
 |  | 
 | 	unwrap: function( selector ) { | 
 | 		this.parent( selector ).not( "body" ).each( function() { | 
 | 			jQuery( this ).replaceWith( this.childNodes ); | 
 | 		} ); | 
 | 		return this; | 
 | 	} | 
 | } ); | 
 |  | 
 | return jQuery; | 
 | } ); |