define( [

	"../core",

	"../var/documentElement",

	"../selector" // jQuery.contains

], function( jQuery, documentElement ) {

	"use strict";



	var isAttached = function( elem ) {

			return jQuery.contains( elem.ownerDocument, elem );

		},

		composed = { composed: true };



	// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only

	// Check attachment across shadow DOM boundaries when possible (gh-3504)

	// Support: iOS 10.0-10.2 only

	// Early iOS 10 versions support `attachShadow` but not `getRootNode`,

	// leading to errors. We need to check for `getRootNode`.

	if ( documentElement.getRootNode ) {

		isAttached = function( elem ) {

			return jQuery.contains( elem.ownerDocument, elem ) ||

				elem.getRootNode( composed ) === elem.ownerDocument;

		};

	}



	return isAttached;

} );

