govuk_publishing_components 18.1.1 → 18.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (112) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/stylesheets/govuk_publishing_components/components/_share-links.scss +11 -5
  3. data/app/views/govuk_publishing_components/components/docs/share_links.yml +10 -7
  4. data/lib/govuk_publishing_components/version.rb +1 -1
  5. data/node_modules/jquery/AUTHORS.txt +266 -0
  6. data/node_modules/jquery/LICENSE.txt +36 -0
  7. data/node_modules/jquery/README.md +65 -0
  8. data/node_modules/jquery/bower.json +14 -0
  9. data/node_modules/jquery/dist/jquery.js +11008 -0
  10. data/node_modules/jquery/dist/jquery.min.js +5 -0
  11. data/node_modules/jquery/dist/jquery.min.map +1 -0
  12. data/node_modules/jquery/external/sizzle/LICENSE.txt +36 -0
  13. data/node_modules/jquery/external/sizzle/dist/sizzle.js +2143 -0
  14. data/node_modules/jquery/external/sizzle/dist/sizzle.min.js +3 -0
  15. data/node_modules/jquery/external/sizzle/dist/sizzle.min.map +1 -0
  16. data/node_modules/jquery/package.json +157 -0
  17. data/node_modules/jquery/src/ajax.js +842 -0
  18. data/node_modules/jquery/src/ajax/jsonp.js +100 -0
  19. data/node_modules/jquery/src/ajax/load.js +83 -0
  20. data/node_modules/jquery/src/ajax/parseJSON.js +53 -0
  21. data/node_modules/jquery/src/ajax/parseXML.js +31 -0
  22. data/node_modules/jquery/src/ajax/script.js +95 -0
  23. data/node_modules/jquery/src/ajax/var/location.js +3 -0
  24. data/node_modules/jquery/src/ajax/var/nonce.js +5 -0
  25. data/node_modules/jquery/src/ajax/var/rquery.js +3 -0
  26. data/node_modules/jquery/src/ajax/xhr.js +229 -0
  27. data/node_modules/jquery/src/attributes.js +11 -0
  28. data/node_modules/jquery/src/attributes/attr.js +281 -0
  29. data/node_modules/jquery/src/attributes/classes.js +174 -0
  30. data/node_modules/jquery/src/attributes/prop.js +156 -0
  31. data/node_modules/jquery/src/attributes/support.js +70 -0
  32. data/node_modules/jquery/src/attributes/val.js +191 -0
  33. data/node_modules/jquery/src/callbacks.js +232 -0
  34. data/node_modules/jquery/src/core.js +529 -0
  35. data/node_modules/jquery/src/core/access.js +65 -0
  36. data/node_modules/jquery/src/core/init.js +140 -0
  37. data/node_modules/jquery/src/core/parseHTML.js +41 -0
  38. data/node_modules/jquery/src/core/ready.js +163 -0
  39. data/node_modules/jquery/src/core/var/rsingleTag.js +5 -0
  40. data/node_modules/jquery/src/css.js +563 -0
  41. data/node_modules/jquery/src/css/addGetHookIf.js +24 -0
  42. data/node_modules/jquery/src/css/adjustCSS.js +65 -0
  43. data/node_modules/jquery/src/css/curCSS.js +137 -0
  44. data/node_modules/jquery/src/css/defaultDisplay.js +72 -0
  45. data/node_modules/jquery/src/css/hiddenVisibleSelectors.js +42 -0
  46. data/node_modules/jquery/src/css/showHide.js +45 -0
  47. data/node_modules/jquery/src/css/support.js +184 -0
  48. data/node_modules/jquery/src/css/var/cssExpand.js +3 -0
  49. data/node_modules/jquery/src/css/var/isHidden.js +16 -0
  50. data/node_modules/jquery/src/css/var/rmargin.js +3 -0
  51. data/node_modules/jquery/src/css/var/rnumnonpx.js +5 -0
  52. data/node_modules/jquery/src/css/var/swap.js +24 -0
  53. data/node_modules/jquery/src/data.js +342 -0
  54. data/node_modules/jquery/src/data/support.js +23 -0
  55. data/node_modules/jquery/src/data/var/acceptData.js +20 -0
  56. data/node_modules/jquery/src/deferred.js +159 -0
  57. data/node_modules/jquery/src/deprecated.js +34 -0
  58. data/node_modules/jquery/src/dimensions.js +56 -0
  59. data/node_modules/jquery/src/effects.js +640 -0
  60. data/node_modules/jquery/src/effects/Tween.js +121 -0
  61. data/node_modules/jquery/src/effects/animatedSelector.js +13 -0
  62. data/node_modules/jquery/src/effects/support.js +58 -0
  63. data/node_modules/jquery/src/event.js +1134 -0
  64. data/node_modules/jquery/src/event/ajax.js +20 -0
  65. data/node_modules/jquery/src/event/alias.js +25 -0
  66. data/node_modules/jquery/src/event/support.js +28 -0
  67. data/node_modules/jquery/src/exports/amd.js +24 -0
  68. data/node_modules/jquery/src/exports/global.js +26 -0
  69. data/node_modules/jquery/src/intro.js +44 -0
  70. data/node_modules/jquery/src/jquery.js +37 -0
  71. data/node_modules/jquery/src/manipulation.js +585 -0
  72. data/node_modules/jquery/src/manipulation/_evalUrl.js +21 -0
  73. data/node_modules/jquery/src/manipulation/buildFragment.js +157 -0
  74. data/node_modules/jquery/src/manipulation/createSafeFragment.js +20 -0
  75. data/node_modules/jquery/src/manipulation/getAll.js +33 -0
  76. data/node_modules/jquery/src/manipulation/setGlobalEval.js +19 -0
  77. data/node_modules/jquery/src/manipulation/support.js +72 -0
  78. data/node_modules/jquery/src/manipulation/var/nodeNames.js +5 -0
  79. data/node_modules/jquery/src/manipulation/var/rcheckableType.js +3 -0
  80. data/node_modules/jquery/src/manipulation/var/rleadingWhitespace.js +3 -0
  81. data/node_modules/jquery/src/manipulation/var/rscriptType.js +3 -0
  82. data/node_modules/jquery/src/manipulation/var/rtagName.js +3 -0
  83. data/node_modules/jquery/src/manipulation/wrapMap.js +30 -0
  84. data/node_modules/jquery/src/offset.js +219 -0
  85. data/node_modules/jquery/src/outro.js +2 -0
  86. data/node_modules/jquery/src/queue.js +144 -0
  87. data/node_modules/jquery/src/queue/delay.js +22 -0
  88. data/node_modules/jquery/src/selector-sizzle.js +14 -0
  89. data/node_modules/jquery/src/selector.js +1 -0
  90. data/node_modules/jquery/src/serialize.js +125 -0
  91. data/node_modules/jquery/src/support.js +63 -0
  92. data/node_modules/jquery/src/traversing.js +179 -0
  93. data/node_modules/jquery/src/traversing/findFilter.js +100 -0
  94. data/node_modules/jquery/src/traversing/var/dir.js +20 -0
  95. data/node_modules/jquery/src/traversing/var/rneedsContext.js +6 -0
  96. data/node_modules/jquery/src/traversing/var/siblings.js +15 -0
  97. data/node_modules/jquery/src/var/class2type.js +5 -0
  98. data/node_modules/jquery/src/var/concat.js +5 -0
  99. data/node_modules/jquery/src/var/deletedIds.js +3 -0
  100. data/node_modules/jquery/src/var/document.js +3 -0
  101. data/node_modules/jquery/src/var/documentElement.js +5 -0
  102. data/node_modules/jquery/src/var/hasOwn.js +5 -0
  103. data/node_modules/jquery/src/var/indexOf.js +5 -0
  104. data/node_modules/jquery/src/var/pnum.js +3 -0
  105. data/node_modules/jquery/src/var/push.js +5 -0
  106. data/node_modules/jquery/src/var/rcssNum.js +7 -0
  107. data/node_modules/jquery/src/var/rnotwhite.js +3 -0
  108. data/node_modules/jquery/src/var/slice.js +5 -0
  109. data/node_modules/jquery/src/var/support.js +5 -0
  110. data/node_modules/jquery/src/var/toString.js +5 -0
  111. data/node_modules/jquery/src/wrap.js +77 -0
  112. metadata +109 -2
@@ -0,0 +1,2 @@
1
+ return jQuery;
2
+ }));
@@ -0,0 +1,144 @@
1
+ define( [
2
+ "./core",
3
+ "./deferred",
4
+ "./callbacks"
5
+ ], function( jQuery ) {
6
+
7
+ jQuery.extend( {
8
+ queue: function( elem, type, data ) {
9
+ var queue;
10
+
11
+ if ( elem ) {
12
+ type = ( type || "fx" ) + "queue";
13
+ queue = jQuery._data( elem, type );
14
+
15
+ // Speed up dequeue by getting out quickly if this is just a lookup
16
+ if ( data ) {
17
+ if ( !queue || jQuery.isArray( data ) ) {
18
+ queue = jQuery._data( elem, type, jQuery.makeArray( data ) );
19
+ } else {
20
+ queue.push( data );
21
+ }
22
+ }
23
+ return queue || [];
24
+ }
25
+ },
26
+
27
+ dequeue: function( elem, type ) {
28
+ type = type || "fx";
29
+
30
+ var queue = jQuery.queue( elem, type ),
31
+ startLength = queue.length,
32
+ fn = queue.shift(),
33
+ hooks = jQuery._queueHooks( elem, type ),
34
+ next = function() {
35
+ jQuery.dequeue( elem, type );
36
+ };
37
+
38
+ // If the fx queue is dequeued, always remove the progress sentinel
39
+ if ( fn === "inprogress" ) {
40
+ fn = queue.shift();
41
+ startLength--;
42
+ }
43
+
44
+ if ( fn ) {
45
+
46
+ // Add a progress sentinel to prevent the fx queue from being
47
+ // automatically dequeued
48
+ if ( type === "fx" ) {
49
+ queue.unshift( "inprogress" );
50
+ }
51
+
52
+ // clear up the last queue stop function
53
+ delete hooks.stop;
54
+ fn.call( elem, next, hooks );
55
+ }
56
+
57
+ if ( !startLength && hooks ) {
58
+ hooks.empty.fire();
59
+ }
60
+ },
61
+
62
+ // not intended for public consumption - generates a queueHooks object,
63
+ // or returns the current one
64
+ _queueHooks: function( elem, type ) {
65
+ var key = type + "queueHooks";
66
+ return jQuery._data( elem, key ) || jQuery._data( elem, key, {
67
+ empty: jQuery.Callbacks( "once memory" ).add( function() {
68
+ jQuery._removeData( elem, type + "queue" );
69
+ jQuery._removeData( elem, key );
70
+ } )
71
+ } );
72
+ }
73
+ } );
74
+
75
+ jQuery.fn.extend( {
76
+ queue: function( type, data ) {
77
+ var setter = 2;
78
+
79
+ if ( typeof type !== "string" ) {
80
+ data = type;
81
+ type = "fx";
82
+ setter--;
83
+ }
84
+
85
+ if ( arguments.length < setter ) {
86
+ return jQuery.queue( this[ 0 ], type );
87
+ }
88
+
89
+ return data === undefined ?
90
+ this :
91
+ this.each( function() {
92
+ var queue = jQuery.queue( this, type, data );
93
+
94
+ // ensure a hooks for this queue
95
+ jQuery._queueHooks( this, type );
96
+
97
+ if ( type === "fx" && queue[ 0 ] !== "inprogress" ) {
98
+ jQuery.dequeue( this, type );
99
+ }
100
+ } );
101
+ },
102
+ dequeue: function( type ) {
103
+ return this.each( function() {
104
+ jQuery.dequeue( this, type );
105
+ } );
106
+ },
107
+ clearQueue: function( type ) {
108
+ return this.queue( type || "fx", [] );
109
+ },
110
+
111
+ // Get a promise resolved when queues of a certain type
112
+ // are emptied (fx is the type by default)
113
+ promise: function( type, obj ) {
114
+ var tmp,
115
+ count = 1,
116
+ defer = jQuery.Deferred(),
117
+ elements = this,
118
+ i = this.length,
119
+ resolve = function() {
120
+ if ( !( --count ) ) {
121
+ defer.resolveWith( elements, [ elements ] );
122
+ }
123
+ };
124
+
125
+ if ( typeof type !== "string" ) {
126
+ obj = type;
127
+ type = undefined;
128
+ }
129
+ type = type || "fx";
130
+
131
+ while ( i-- ) {
132
+ tmp = jQuery._data( elements[ i ], type + "queueHooks" );
133
+ if ( tmp && tmp.empty ) {
134
+ count++;
135
+ tmp.empty.add( resolve );
136
+ }
137
+ }
138
+ resolve();
139
+ return defer.promise( obj );
140
+ }
141
+ } );
142
+
143
+ return jQuery;
144
+ } );
@@ -0,0 +1,22 @@
1
+ define( [
2
+ "../core",
3
+ "../queue",
4
+ "../effects" // Delay is optional because of this dependency
5
+ ], function( jQuery ) {
6
+
7
+ // Based off of the plugin by Clint Helfers, with permission.
8
+ // http://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/
9
+ jQuery.fn.delay = function( time, type ) {
10
+ time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
11
+ type = type || "fx";
12
+
13
+ return this.queue( type, function( next, hooks ) {
14
+ var timeout = window.setTimeout( next, time );
15
+ hooks.stop = function() {
16
+ window.clearTimeout( timeout );
17
+ };
18
+ } );
19
+ };
20
+
21
+ return jQuery.fn.delay;
22
+ } );
@@ -0,0 +1,14 @@
1
+ define( [
2
+ "./core",
3
+ "../external/sizzle/dist/sizzle"
4
+ ], function( jQuery, Sizzle ) {
5
+
6
+ jQuery.find = Sizzle;
7
+ jQuery.expr = Sizzle.selectors;
8
+ jQuery.expr[ ":" ] = jQuery.expr.pseudos;
9
+ jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
10
+ jQuery.text = Sizzle.getText;
11
+ jQuery.isXMLDoc = Sizzle.isXML;
12
+ jQuery.contains = Sizzle.contains;
13
+
14
+ } );
@@ -0,0 +1 @@
1
+ define( [ "./selector-sizzle" ], function() {} );
@@ -0,0 +1,125 @@
1
+ define( [
2
+ "./core",
3
+ "./manipulation/var/rcheckableType",
4
+ "./core/init",
5
+ "./traversing", // filter
6
+ "./attributes/prop"
7
+ ], function( jQuery, rcheckableType ) {
8
+
9
+ var r20 = /%20/g,
10
+ rbracket = /\[\]$/,
11
+ rCRLF = /\r?\n/g,
12
+ rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
13
+ rsubmittable = /^(?:input|select|textarea|keygen)/i;
14
+
15
+ function buildParams( prefix, obj, traditional, add ) {
16
+ var name;
17
+
18
+ if ( jQuery.isArray( obj ) ) {
19
+
20
+ // Serialize array item.
21
+ jQuery.each( obj, function( i, v ) {
22
+ if ( traditional || rbracket.test( prefix ) ) {
23
+
24
+ // Treat each array item as a scalar.
25
+ add( prefix, v );
26
+
27
+ } else {
28
+
29
+ // Item is non-scalar (array or object), encode its numeric index.
30
+ buildParams(
31
+ prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]",
32
+ v,
33
+ traditional,
34
+ add
35
+ );
36
+ }
37
+ } );
38
+
39
+ } else if ( !traditional && jQuery.type( obj ) === "object" ) {
40
+
41
+ // Serialize object item.
42
+ for ( name in obj ) {
43
+ buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
44
+ }
45
+
46
+ } else {
47
+
48
+ // Serialize scalar item.
49
+ add( prefix, obj );
50
+ }
51
+ }
52
+
53
+ // Serialize an array of form elements or a set of
54
+ // key/values into a query string
55
+ jQuery.param = function( a, traditional ) {
56
+ var prefix,
57
+ s = [],
58
+ add = function( key, value ) {
59
+
60
+ // If value is a function, invoke it and return its value
61
+ value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );
62
+ s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
63
+ };
64
+
65
+ // Set traditional to true for jQuery <= 1.3.2 behavior.
66
+ if ( traditional === undefined ) {
67
+ traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;
68
+ }
69
+
70
+ // If an array was passed in, assume that it is an array of form elements.
71
+ if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
72
+
73
+ // Serialize the form elements
74
+ jQuery.each( a, function() {
75
+ add( this.name, this.value );
76
+ } );
77
+
78
+ } else {
79
+
80
+ // If traditional, encode the "old" way (the way 1.3.2 or older
81
+ // did it), otherwise encode params recursively.
82
+ for ( prefix in a ) {
83
+ buildParams( prefix, a[ prefix ], traditional, add );
84
+ }
85
+ }
86
+
87
+ // Return the resulting serialization
88
+ return s.join( "&" ).replace( r20, "+" );
89
+ };
90
+
91
+ jQuery.fn.extend( {
92
+ serialize: function() {
93
+ return jQuery.param( this.serializeArray() );
94
+ },
95
+ serializeArray: function() {
96
+ return this.map( function() {
97
+
98
+ // Can add propHook for "elements" to filter or add form elements
99
+ var elements = jQuery.prop( this, "elements" );
100
+ return elements ? jQuery.makeArray( elements ) : this;
101
+ } )
102
+ .filter( function() {
103
+ var type = this.type;
104
+
105
+ // Use .is(":disabled") so that fieldset[disabled] works
106
+ return this.name && !jQuery( this ).is( ":disabled" ) &&
107
+ rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
108
+ ( this.checked || !rcheckableType.test( type ) );
109
+ } )
110
+ .map( function( i, elem ) {
111
+ var val = jQuery( this ).val();
112
+
113
+ return val == null ?
114
+ null :
115
+ jQuery.isArray( val ) ?
116
+ jQuery.map( val, function( val ) {
117
+ return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
118
+ } ) :
119
+ { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
120
+ } ).get();
121
+ }
122
+ } );
123
+
124
+ return jQuery;
125
+ } );
@@ -0,0 +1,63 @@
1
+ define( [
2
+ "./core",
3
+ "./var/support",
4
+ "./var/document",
5
+ "./core/init", // Needed for hasOwn support test
6
+ // This is listed as a dependency for build order, but it's still optional in builds
7
+ "./core/ready"
8
+ ], function( jQuery, support, document ) {
9
+
10
+ // Support: IE<9
11
+ // Iteration over object's inherited properties before its own
12
+ var i;
13
+ for ( i in jQuery( support ) ) {
14
+ break;
15
+ }
16
+ support.ownFirst = i === "0";
17
+
18
+ // Note: most support tests are defined in their respective modules.
19
+ // false until the test is run
20
+ support.inlineBlockNeedsLayout = false;
21
+
22
+ // Execute ASAP in case we need to set body.style.zoom
23
+ jQuery( function() {
24
+
25
+ // Minified: var a,b,c,d
26
+ var val, div, body, container;
27
+
28
+ body = document.getElementsByTagName( "body" )[ 0 ];
29
+ if ( !body || !body.style ) {
30
+
31
+ // Return for frameset docs that don't have a body
32
+ return;
33
+ }
34
+
35
+ // Setup
36
+ div = document.createElement( "div" );
37
+ container = document.createElement( "div" );
38
+ container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px";
39
+ body.appendChild( container ).appendChild( div );
40
+
41
+ if ( typeof div.style.zoom !== "undefined" ) {
42
+
43
+ // Support: IE<8
44
+ // Check if natively block-level elements act like inline-block
45
+ // elements when setting their display to 'inline' and giving
46
+ // them layout
47
+ div.style.cssText = "display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1";
48
+
49
+ support.inlineBlockNeedsLayout = val = div.offsetWidth === 3;
50
+ if ( val ) {
51
+
52
+ // Prevent IE 6 from affecting layout for positioned elements #11048
53
+ // Prevent IE from shrinking the body in IE 7 mode #12869
54
+ // Support: IE<8
55
+ body.style.zoom = 1;
56
+ }
57
+ }
58
+
59
+ body.removeChild( container );
60
+ } );
61
+
62
+ return support;
63
+ } );
@@ -0,0 +1,179 @@
1
+ define( [
2
+ "./core",
3
+ "./traversing/var/dir",
4
+ "./traversing/var/siblings",
5
+ "./traversing/var/rneedsContext",
6
+ "./core/init",
7
+ "./traversing/findFilter",
8
+ "./selector"
9
+ ], function( jQuery, dir, siblings, rneedsContext ) {
10
+
11
+ var rparentsprev = /^(?:parents|prev(?:Until|All))/,
12
+
13
+ // methods guaranteed to produce a unique set when starting from a unique set
14
+ guaranteedUnique = {
15
+ children: true,
16
+ contents: true,
17
+ next: true,
18
+ prev: true
19
+ };
20
+
21
+ jQuery.fn.extend( {
22
+ has: function( target ) {
23
+ var i,
24
+ targets = jQuery( target, this ),
25
+ len = targets.length;
26
+
27
+ return this.filter( function() {
28
+ for ( i = 0; i < len; i++ ) {
29
+ if ( jQuery.contains( this, targets[ i ] ) ) {
30
+ return true;
31
+ }
32
+ }
33
+ } );
34
+ },
35
+
36
+ closest: function( selectors, context ) {
37
+ var cur,
38
+ i = 0,
39
+ l = this.length,
40
+ matched = [],
41
+ pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?
42
+ jQuery( selectors, context || this.context ) :
43
+ 0;
44
+
45
+ for ( ; i < l; i++ ) {
46
+ for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {
47
+
48
+ // Always skip document fragments
49
+ if ( cur.nodeType < 11 && ( pos ?
50
+ pos.index( cur ) > -1 :
51
+
52
+ // Don't pass non-elements to Sizzle
53
+ cur.nodeType === 1 &&
54
+ jQuery.find.matchesSelector( cur, selectors ) ) ) {
55
+
56
+ matched.push( cur );
57
+ break;
58
+ }
59
+ }
60
+ }
61
+
62
+ return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );
63
+ },
64
+
65
+ // Determine the position of an element within
66
+ // the matched set of elements
67
+ index: function( elem ) {
68
+
69
+ // No argument, return index in parent
70
+ if ( !elem ) {
71
+ return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
72
+ }
73
+
74
+ // index in selector
75
+ if ( typeof elem === "string" ) {
76
+ return jQuery.inArray( this[ 0 ], jQuery( elem ) );
77
+ }
78
+
79
+ // Locate the position of the desired element
80
+ return jQuery.inArray(
81
+
82
+ // If it receives a jQuery object, the first element is used
83
+ elem.jquery ? elem[ 0 ] : elem, this );
84
+ },
85
+
86
+ add: function( selector, context ) {
87
+ return this.pushStack(
88
+ jQuery.uniqueSort(
89
+ jQuery.merge( this.get(), jQuery( selector, context ) )
90
+ )
91
+ );
92
+ },
93
+
94
+ addBack: function( selector ) {
95
+ return this.add( selector == null ?
96
+ this.prevObject : this.prevObject.filter( selector )
97
+ );
98
+ }
99
+ } );
100
+
101
+ function sibling( cur, dir ) {
102
+ do {
103
+ cur = cur[ dir ];
104
+ } while ( cur && cur.nodeType !== 1 );
105
+
106
+ return cur;
107
+ }
108
+
109
+ jQuery.each( {
110
+ parent: function( elem ) {
111
+ var parent = elem.parentNode;
112
+ return parent && parent.nodeType !== 11 ? parent : null;
113
+ },
114
+ parents: function( elem ) {
115
+ return dir( elem, "parentNode" );
116
+ },
117
+ parentsUntil: function( elem, i, until ) {
118
+ return dir( elem, "parentNode", until );
119
+ },
120
+ next: function( elem ) {
121
+ return sibling( elem, "nextSibling" );
122
+ },
123
+ prev: function( elem ) {
124
+ return sibling( elem, "previousSibling" );
125
+ },
126
+ nextAll: function( elem ) {
127
+ return dir( elem, "nextSibling" );
128
+ },
129
+ prevAll: function( elem ) {
130
+ return dir( elem, "previousSibling" );
131
+ },
132
+ nextUntil: function( elem, i, until ) {
133
+ return dir( elem, "nextSibling", until );
134
+ },
135
+ prevUntil: function( elem, i, until ) {
136
+ return dir( elem, "previousSibling", until );
137
+ },
138
+ siblings: function( elem ) {
139
+ return siblings( ( elem.parentNode || {} ).firstChild, elem );
140
+ },
141
+ children: function( elem ) {
142
+ return siblings( elem.firstChild );
143
+ },
144
+ contents: function( elem ) {
145
+ return jQuery.nodeName( elem, "iframe" ) ?
146
+ elem.contentDocument || elem.contentWindow.document :
147
+ jQuery.merge( [], elem.childNodes );
148
+ }
149
+ }, function( name, fn ) {
150
+ jQuery.fn[ name ] = function( until, selector ) {
151
+ var ret = jQuery.map( this, fn, until );
152
+
153
+ if ( name.slice( -5 ) !== "Until" ) {
154
+ selector = until;
155
+ }
156
+
157
+ if ( selector && typeof selector === "string" ) {
158
+ ret = jQuery.filter( selector, ret );
159
+ }
160
+
161
+ if ( this.length > 1 ) {
162
+
163
+ // Remove duplicates
164
+ if ( !guaranteedUnique[ name ] ) {
165
+ ret = jQuery.uniqueSort( ret );
166
+ }
167
+
168
+ // Reverse order for parents* and prev-derivatives
169
+ if ( rparentsprev.test( name ) ) {
170
+ ret = ret.reverse();
171
+ }
172
+ }
173
+
174
+ return this.pushStack( ret );
175
+ };
176
+ } );
177
+
178
+ return jQuery;
179
+ } );