|  | 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; | 
|  | } ); |