utopia-project 0.20.2 → 0.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/bake/utopia/project.rb +4 -0
- data/lib/utopia/project/base.rb +13 -20
- data/lib/utopia/project/document.rb +10 -19
- data/lib/utopia/project/guide.rb +5 -22
- data/lib/utopia/project/linkify.rb +2 -19
- data/lib/utopia/project/renderer.rb +2 -19
- data/lib/utopia/project/version.rb +3 -20
- data/lib/utopia/project.rb +2 -19
- data/license.md +23 -0
- data/pages/_header.xnode +5 -1
- data/pages/controller.rb +5 -2
- data/pages/guides/controller.rb +4 -0
- data/pages/index.xnode +1 -1
- data/pages/links.yaml +1 -0
- data/pages/source/controller.rb +4 -0
- data/public/_components/jquery/jquery.js +209 -97
- data/public/_components/jquery/jquery.min.js +2 -2
- data/public/_components/jquery/jquery.min.map +1 -1
- data/public/_components/jquery/jquery.slim.js +197 -85
- data/public/_components/jquery/jquery.slim.min.js +2 -2
- data/public/_components/jquery/jquery.slim.min.map +1 -1
- data/public/_components/mermaid/mermaid.min.js +1589 -3
- data/public/_components/mermaid/mermaid.min.js.map +1 -0
- data/readme.md +32 -0
- data/template/preload.rb +4 -0
- data.tar.gz.sig +0 -0
- metadata +34 -44
- metadata.gz.sig +0 -0
- data/public/_components/mermaid/mermaid.min.js.LICENSE.txt +0 -32
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
|
-
* jQuery JavaScript Library v3.6.
|
2
|
+
* jQuery JavaScript Library v3.6.3 -ajax,-ajax/jsonp,-ajax/load,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-deprecated/ajax-event-alias,-effects,-effects/Tween,-effects/animatedSelector
|
3
3
|
* https://jquery.com/
|
4
4
|
*
|
5
5
|
* Includes Sizzle.js
|
@@ -9,7 +9,7 @@
|
|
9
9
|
* Released under the MIT license
|
10
10
|
* https://jquery.org/license
|
11
11
|
*
|
12
|
-
* Date:
|
12
|
+
* Date: 2022-12-20T21:28Z
|
13
13
|
*/
|
14
14
|
( function( global, factory ) {
|
15
15
|
|
@@ -23,7 +23,7 @@
|
|
23
23
|
// (such as Node.js), expose a factory as module.exports.
|
24
24
|
// This accentuates the need for the creation of a real `window`.
|
25
25
|
// e.g. var jQuery = require("jquery")(window);
|
26
|
-
// See ticket
|
26
|
+
// See ticket trac-14549 for more info.
|
27
27
|
module.exports = global.document ?
|
28
28
|
factory( global, true ) :
|
29
29
|
function( w ) {
|
@@ -151,7 +151,7 @@ function toType( obj ) {
|
|
151
151
|
|
152
152
|
|
153
153
|
var
|
154
|
-
version = "3.6.
|
154
|
+
version = "3.6.3 -ajax,-ajax/jsonp,-ajax/load,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-deprecated/ajax-event-alias,-effects,-effects/Tween,-effects/animatedSelector",
|
155
155
|
|
156
156
|
// Define a local copy of jQuery
|
157
157
|
jQuery = function( selector, context ) {
|
@@ -522,14 +522,14 @@ function isArrayLike( obj ) {
|
|
522
522
|
}
|
523
523
|
var Sizzle =
|
524
524
|
/*!
|
525
|
-
* Sizzle CSS Selector Engine v2.3.
|
525
|
+
* Sizzle CSS Selector Engine v2.3.9
|
526
526
|
* https://sizzlejs.com/
|
527
527
|
*
|
528
528
|
* Copyright JS Foundation and other contributors
|
529
529
|
* Released under the MIT license
|
530
530
|
* https://js.foundation/
|
531
531
|
*
|
532
|
-
* Date:
|
532
|
+
* Date: 2022-12-19
|
533
533
|
*/
|
534
534
|
( function( window ) {
|
535
535
|
var i,
|
@@ -879,6 +879,27 @@ function Sizzle( selector, context, results, seed ) {
|
|
879
879
|
}
|
880
880
|
|
881
881
|
try {
|
882
|
+
|
883
|
+
// `qSA` may not throw for unrecognized parts using forgiving parsing:
|
884
|
+
// https://drafts.csswg.org/selectors/#forgiving-selector
|
885
|
+
// like the `:has()` pseudo-class:
|
886
|
+
// https://drafts.csswg.org/selectors/#relational
|
887
|
+
// `CSS.supports` is still expected to return `false` then:
|
888
|
+
// https://drafts.csswg.org/css-conditional-4/#typedef-supports-selector-fn
|
889
|
+
// https://drafts.csswg.org/css-conditional-4/#dfn-support-selector
|
890
|
+
if ( support.cssSupportsSelector &&
|
891
|
+
|
892
|
+
// eslint-disable-next-line no-undef
|
893
|
+
!CSS.supports( "selector(:is(" + newSelector + "))" ) ) {
|
894
|
+
|
895
|
+
// Support: IE 11+
|
896
|
+
// Throw to get to the same code path as an error directly in qSA.
|
897
|
+
// Note: once we only support browser supporting
|
898
|
+
// `CSS.supports('selector(...)')`, we can most likely drop
|
899
|
+
// the `try-catch`. IE doesn't implement the API.
|
900
|
+
throw new Error();
|
901
|
+
}
|
902
|
+
|
882
903
|
push.apply( results,
|
883
904
|
newContext.querySelectorAll( newSelector )
|
884
905
|
);
|
@@ -1174,6 +1195,31 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|
1174
1195
|
!el.querySelectorAll( ":scope fieldset div" ).length;
|
1175
1196
|
} );
|
1176
1197
|
|
1198
|
+
// Support: Chrome 105+, Firefox 104+, Safari 15.4+
|
1199
|
+
// Make sure forgiving mode is not used in `CSS.supports( "selector(...)" )`.
|
1200
|
+
//
|
1201
|
+
// `:is()` uses a forgiving selector list as an argument and is widely
|
1202
|
+
// implemented, so it's a good one to test against.
|
1203
|
+
support.cssSupportsSelector = assert( function() {
|
1204
|
+
/* eslint-disable no-undef */
|
1205
|
+
|
1206
|
+
return CSS.supports( "selector(*)" ) &&
|
1207
|
+
|
1208
|
+
// Support: Firefox 78-81 only
|
1209
|
+
// In old Firefox, `:is()` didn't use forgiving parsing. In that case,
|
1210
|
+
// fail this test as there's no selector to test against that.
|
1211
|
+
// `CSS.supports` uses unforgiving parsing
|
1212
|
+
document.querySelectorAll( ":is(:jqfake)" ) &&
|
1213
|
+
|
1214
|
+
// `*` is needed as Safari & newer Chrome implemented something in between
|
1215
|
+
// for `:has()` - it throws in `qSA` if it only contains an unsupported
|
1216
|
+
// argument but multiple ones, one of which is supported, are fine.
|
1217
|
+
// We want to play safe in case `:is()` gets the same treatment.
|
1218
|
+
!CSS.supports( "selector(:is(*,:jqfake))" );
|
1219
|
+
|
1220
|
+
/* eslint-enable */
|
1221
|
+
} );
|
1222
|
+
|
1177
1223
|
/* Attributes
|
1178
1224
|
---------------------------------------------------------------------- */
|
1179
1225
|
|
@@ -1440,6 +1486,17 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|
1440
1486
|
} );
|
1441
1487
|
}
|
1442
1488
|
|
1489
|
+
if ( !support.cssSupportsSelector ) {
|
1490
|
+
|
1491
|
+
// Support: Chrome 105+, Safari 15.4+
|
1492
|
+
// `:has()` uses a forgiving selector list as an argument so our regular
|
1493
|
+
// `try-catch` mechanism fails to catch `:has()` with arguments not supported
|
1494
|
+
// natively like `:has(:contains("Foo"))`. Where supported & spec-compliant,
|
1495
|
+
// we now use `CSS.supports("selector(:is(SELECTOR_TO_BE_TESTED))")`, but
|
1496
|
+
// outside that we mark `:has` as buggy.
|
1497
|
+
rbuggyQSA.push( ":has" );
|
1498
|
+
}
|
1499
|
+
|
1443
1500
|
rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) );
|
1444
1501
|
rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( "|" ) );
|
1445
1502
|
|
@@ -1452,7 +1509,14 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|
1452
1509
|
// As in, an element does not contain itself
|
1453
1510
|
contains = hasCompare || rnative.test( docElem.contains ) ?
|
1454
1511
|
function( a, b ) {
|
1455
|
-
|
1512
|
+
|
1513
|
+
// Support: IE <9 only
|
1514
|
+
// IE doesn't have `contains` on `document` so we need to check for
|
1515
|
+
// `documentElement` presence.
|
1516
|
+
// We need to fall back to `a` when `documentElement` is missing
|
1517
|
+
// as `ownerDocument` of elements within `<template/>` may have
|
1518
|
+
// a null one - a default behavior of all modern browsers.
|
1519
|
+
var adown = a.nodeType === 9 && a.documentElement || a,
|
1456
1520
|
bup = b && b.parentNode;
|
1457
1521
|
return a === bup || !!( bup && bup.nodeType === 1 && (
|
1458
1522
|
adown.contains ?
|
@@ -2242,7 +2306,7 @@ Expr = Sizzle.selectors = {
|
|
2242
2306
|
return elem.nodeName.toLowerCase() === "input" &&
|
2243
2307
|
elem.type === "text" &&
|
2244
2308
|
|
2245
|
-
// Support: IE<
|
2309
|
+
// Support: IE <10 only
|
2246
2310
|
// New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
|
2247
2311
|
( ( attr = elem.getAttribute( "type" ) ) == null ||
|
2248
2312
|
attr.toLowerCase() === "text" );
|
@@ -3129,8 +3193,8 @@ jQuery.fn.extend( {
|
|
3129
3193
|
var rootjQuery,
|
3130
3194
|
|
3131
3195
|
// A simple way to check for HTML strings
|
3132
|
-
// Prioritize #id over <tag> to avoid XSS via location.hash (
|
3133
|
-
// Strict HTML recognition (
|
3196
|
+
// Prioritize #id over <tag> to avoid XSS via location.hash (trac-9521)
|
3197
|
+
// Strict HTML recognition (trac-11290: must start with <)
|
3134
3198
|
// Shortcut simple #id case for speed
|
3135
3199
|
rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
|
3136
3200
|
|
@@ -4087,7 +4151,7 @@ jQuery.extend( {
|
|
4087
4151
|
isReady: false,
|
4088
4152
|
|
4089
4153
|
// A counter to track how many items to wait for before
|
4090
|
-
// the ready event fires. See
|
4154
|
+
// the ready event fires. See trac-6781
|
4091
4155
|
readyWait: 1,
|
4092
4156
|
|
4093
4157
|
// Handle when the DOM is ready
|
@@ -4215,7 +4279,7 @@ function fcamelCase( _all, letter ) {
|
|
4215
4279
|
|
4216
4280
|
// Convert dashed to camelCase; used by the css and data modules
|
4217
4281
|
// Support: IE <=9 - 11, Edge 12 - 15
|
4218
|
-
// Microsoft forgot to hump their vendor prefix (
|
4282
|
+
// Microsoft forgot to hump their vendor prefix (trac-9572)
|
4219
4283
|
function camelCase( string ) {
|
4220
4284
|
return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
|
4221
4285
|
}
|
@@ -4251,7 +4315,7 @@ Data.prototype = {
|
|
4251
4315
|
value = {};
|
4252
4316
|
|
4253
4317
|
// We can accept data for non-element nodes in modern browsers,
|
4254
|
-
// but we should not, see
|
4318
|
+
// but we should not, see trac-8335.
|
4255
4319
|
// Always return an empty object.
|
4256
4320
|
if ( acceptData( owner ) ) {
|
4257
4321
|
|
@@ -4490,7 +4554,7 @@ jQuery.fn.extend( {
|
|
4490
4554
|
while ( i-- ) {
|
4491
4555
|
|
4492
4556
|
// Support: IE 11 only
|
4493
|
-
// The attrs elements can be null (
|
4557
|
+
// The attrs elements can be null (trac-14894)
|
4494
4558
|
if ( attrs[ i ] ) {
|
4495
4559
|
name = attrs[ i ].name;
|
4496
4560
|
if ( name.indexOf( "data-" ) === 0 ) {
|
@@ -4913,9 +4977,9 @@ var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i );
|
|
4913
4977
|
input = document.createElement( "input" );
|
4914
4978
|
|
4915
4979
|
// Support: Android 4.0 - 4.3 only
|
4916
|
-
// Check state lost if the name is set (
|
4980
|
+
// Check state lost if the name is set (trac-11217)
|
4917
4981
|
// Support: Windows Web Apps (WWA)
|
4918
|
-
// `name` and `type` must use .setAttribute for WWA (
|
4982
|
+
// `name` and `type` must use .setAttribute for WWA (trac-14901)
|
4919
4983
|
input.setAttribute( "type", "radio" );
|
4920
4984
|
input.setAttribute( "checked", "checked" );
|
4921
4985
|
input.setAttribute( "name", "t" );
|
@@ -4939,7 +5003,7 @@ var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i );
|
|
4939
5003
|
} )();
|
4940
5004
|
|
4941
5005
|
|
4942
|
-
// We have to close these tags to support XHTML (
|
5006
|
+
// We have to close these tags to support XHTML (trac-13200)
|
4943
5007
|
var wrapMap = {
|
4944
5008
|
|
4945
5009
|
// XHTML parsers do not magically insert elements in the
|
@@ -4965,7 +5029,7 @@ if ( !support.option ) {
|
|
4965
5029
|
function getAll( context, tag ) {
|
4966
5030
|
|
4967
5031
|
// Support: IE <=9 - 11 only
|
4968
|
-
// Use typeof to avoid zero-argument method invocation on host objects (
|
5032
|
+
// Use typeof to avoid zero-argument method invocation on host objects (trac-15151)
|
4969
5033
|
var ret;
|
4970
5034
|
|
4971
5035
|
if ( typeof context.getElementsByTagName !== "undefined" ) {
|
@@ -5048,7 +5112,7 @@ function buildFragment( elems, context, scripts, selection, ignored ) {
|
|
5048
5112
|
// Remember the top-level container
|
5049
5113
|
tmp = fragment.firstChild;
|
5050
5114
|
|
5051
|
-
// Ensure the created nodes are orphaned (
|
5115
|
+
// Ensure the created nodes are orphaned (trac-12392)
|
5052
5116
|
tmp.textContent = "";
|
5053
5117
|
}
|
5054
5118
|
}
|
@@ -5469,15 +5533,15 @@ jQuery.event = {
|
|
5469
5533
|
|
5470
5534
|
for ( ; cur !== this; cur = cur.parentNode || this ) {
|
5471
5535
|
|
5472
|
-
// Don't check non-elements (
|
5473
|
-
// Don't process clicks on disabled elements (
|
5536
|
+
// Don't check non-elements (trac-13208)
|
5537
|
+
// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)
|
5474
5538
|
if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) {
|
5475
5539
|
matchedHandlers = [];
|
5476
5540
|
matchedSelectors = {};
|
5477
5541
|
for ( i = 0; i < delegateCount; i++ ) {
|
5478
5542
|
handleObj = handlers[ i ];
|
5479
5543
|
|
5480
|
-
// Don't conflict with Object.prototype properties (
|
5544
|
+
// Don't conflict with Object.prototype properties (trac-13203)
|
5481
5545
|
sel = handleObj.selector + " ";
|
5482
5546
|
|
5483
5547
|
if ( matchedSelectors[ sel ] === undefined ) {
|
@@ -5731,7 +5795,7 @@ jQuery.Event = function( src, props ) {
|
|
5731
5795
|
|
5732
5796
|
// Create target properties
|
5733
5797
|
// Support: Safari <=6 - 7 only
|
5734
|
-
// Target should not be a text node (
|
5798
|
+
// Target should not be a text node (trac-504, trac-13143)
|
5735
5799
|
this.target = ( src.target && src.target.nodeType === 3 ) ?
|
5736
5800
|
src.target.parentNode :
|
5737
5801
|
src.target;
|
@@ -5854,10 +5918,10 @@ jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateTyp
|
|
5854
5918
|
return true;
|
5855
5919
|
},
|
5856
5920
|
|
5857
|
-
// Suppress native focus or blur
|
5858
|
-
//
|
5859
|
-
_default: function() {
|
5860
|
-
return
|
5921
|
+
// Suppress native focus or blur if we're currently inside
|
5922
|
+
// a leveraged native-event stack
|
5923
|
+
_default: function( event ) {
|
5924
|
+
return dataPriv.get( event.target, type );
|
5861
5925
|
},
|
5862
5926
|
|
5863
5927
|
delegateType: delegateType
|
@@ -5956,7 +6020,8 @@ var
|
|
5956
6020
|
|
5957
6021
|
// checked="checked" or checked
|
5958
6022
|
rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
|
5959
|
-
|
6023
|
+
|
6024
|
+
rcleanScript = /^\s*<!\[CDATA\[|\]\]>\s*$/g;
|
5960
6025
|
|
5961
6026
|
// Prefer a tbody over its parent table for containing new rows
|
5962
6027
|
function manipulationTarget( elem, content ) {
|
@@ -6070,7 +6135,7 @@ function domManip( collection, args, callback, ignored ) {
|
|
6070
6135
|
|
6071
6136
|
// Use the original fragment for the last item
|
6072
6137
|
// instead of the first because it can end up
|
6073
|
-
// being emptied incorrectly in certain situations (
|
6138
|
+
// being emptied incorrectly in certain situations (trac-8070).
|
6074
6139
|
for ( ; i < l; i++ ) {
|
6075
6140
|
node = fragment;
|
6076
6141
|
|
@@ -6111,6 +6176,12 @@ function domManip( collection, args, callback, ignored ) {
|
|
6111
6176
|
}, doc );
|
6112
6177
|
}
|
6113
6178
|
} else {
|
6179
|
+
|
6180
|
+
// Unwrap a CDATA section containing script contents. This shouldn't be
|
6181
|
+
// needed as in XML documents they're already not visible when
|
6182
|
+
// inspecting element contents and in HTML documents they have no
|
6183
|
+
// meaning but we're preserving that logic for backwards compatibility.
|
6184
|
+
// This will be removed completely in 4.0. See gh-4904.
|
6114
6185
|
DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc );
|
6115
6186
|
}
|
6116
6187
|
}
|
@@ -6393,9 +6464,12 @@ jQuery.each( {
|
|
6393
6464
|
} );
|
6394
6465
|
var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
|
6395
6466
|
|
6467
|
+
var rcustomProp = /^--/;
|
6468
|
+
|
6469
|
+
|
6396
6470
|
var getStyles = function( elem ) {
|
6397
6471
|
|
6398
|
-
// Support: IE <=11 only, Firefox <=30 (
|
6472
|
+
// Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)
|
6399
6473
|
// IE throws on elements created in popups
|
6400
6474
|
// FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
|
6401
6475
|
var view = elem.ownerDocument.defaultView;
|
@@ -6430,6 +6504,15 @@ var swap = function( elem, options, callback ) {
|
|
6430
6504
|
|
6431
6505
|
var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
|
6432
6506
|
|
6507
|
+
var whitespace = "[\\x20\\t\\r\\n\\f]";
|
6508
|
+
|
6509
|
+
|
6510
|
+
var rtrimCSS = new RegExp(
|
6511
|
+
"^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$",
|
6512
|
+
"g"
|
6513
|
+
);
|
6514
|
+
|
6515
|
+
|
6433
6516
|
|
6434
6517
|
|
6435
6518
|
( function() {
|
@@ -6495,7 +6578,7 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
|
|
6495
6578
|
}
|
6496
6579
|
|
6497
6580
|
// Support: IE <=9 - 11 only
|
6498
|
-
// Style of cloned element affects source element cloned (
|
6581
|
+
// Style of cloned element affects source element cloned (trac-8908)
|
6499
6582
|
div.style.backgroundClip = "content-box";
|
6500
6583
|
div.cloneNode( true ).style.backgroundClip = "";
|
6501
6584
|
support.clearCloneStyle = div.style.backgroundClip === "content-box";
|
@@ -6575,6 +6658,7 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
|
|
6575
6658
|
|
6576
6659
|
function curCSS( elem, name, computed ) {
|
6577
6660
|
var width, minWidth, maxWidth, ret,
|
6661
|
+
isCustomProp = rcustomProp.test( name ),
|
6578
6662
|
|
6579
6663
|
// Support: Firefox 51+
|
6580
6664
|
// Retrieving style before computed somehow
|
@@ -6585,11 +6669,42 @@ function curCSS( elem, name, computed ) {
|
|
6585
6669
|
computed = computed || getStyles( elem );
|
6586
6670
|
|
6587
6671
|
// getPropertyValue is needed for:
|
6588
|
-
// .css('filter') (IE 9 only,
|
6589
|
-
// .css('--customProperty) (
|
6672
|
+
// .css('filter') (IE 9 only, trac-12537)
|
6673
|
+
// .css('--customProperty) (gh-3144)
|
6590
6674
|
if ( computed ) {
|
6675
|
+
|
6676
|
+
// Support: IE <=9 - 11+
|
6677
|
+
// IE only supports `"float"` in `getPropertyValue`; in computed styles
|
6678
|
+
// it's only available as `"cssFloat"`. We no longer modify properties
|
6679
|
+
// sent to `.css()` apart from camelCasing, so we need to check both.
|
6680
|
+
// Normally, this would create difference in behavior: if
|
6681
|
+
// `getPropertyValue` returns an empty string, the value returned
|
6682
|
+
// by `.css()` would be `undefined`. This is usually the case for
|
6683
|
+
// disconnected elements. However, in IE even disconnected elements
|
6684
|
+
// with no styles return `"none"` for `getPropertyValue( "float" )`
|
6591
6685
|
ret = computed.getPropertyValue( name ) || computed[ name ];
|
6592
6686
|
|
6687
|
+
if ( isCustomProp && ret ) {
|
6688
|
+
|
6689
|
+
// Support: Firefox 105+, Chrome <=105+
|
6690
|
+
// Spec requires trimming whitespace for custom properties (gh-4926).
|
6691
|
+
// Firefox only trims leading whitespace. Chrome just collapses
|
6692
|
+
// both leading & trailing whitespace to a single space.
|
6693
|
+
//
|
6694
|
+
// Fall back to `undefined` if empty string returned.
|
6695
|
+
// This collapses a missing definition with property defined
|
6696
|
+
// and set to an empty string but there's no standard API
|
6697
|
+
// allowing us to differentiate them without a performance penalty
|
6698
|
+
// and returning `undefined` aligns with older jQuery.
|
6699
|
+
//
|
6700
|
+
// rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED
|
6701
|
+
// as whitespace while CSS does not, but this is not a problem
|
6702
|
+
// because CSS preprocessing replaces them with U+000A LINE FEED
|
6703
|
+
// (which *is* CSS whitespace)
|
6704
|
+
// https://www.w3.org/TR/css-syntax-3/#input-preprocessing
|
6705
|
+
ret = ret.replace( rtrimCSS, "$1" ) || undefined;
|
6706
|
+
}
|
6707
|
+
|
6593
6708
|
if ( ret === "" && !isAttached( elem ) ) {
|
6594
6709
|
ret = jQuery.style( elem, name );
|
6595
6710
|
}
|
@@ -6685,7 +6800,6 @@ var
|
|
6685
6800
|
// except "table", "table-cell", or "table-caption"
|
6686
6801
|
// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
|
6687
6802
|
rdisplayswap = /^(none|table(?!-c[ea]).+)/,
|
6688
|
-
rcustomProp = /^--/,
|
6689
6803
|
cssShow = { position: "absolute", visibility: "hidden", display: "block" },
|
6690
6804
|
cssNormalTransform = {
|
6691
6805
|
letterSpacing: "0",
|
@@ -6921,15 +7035,15 @@ jQuery.extend( {
|
|
6921
7035
|
if ( value !== undefined ) {
|
6922
7036
|
type = typeof value;
|
6923
7037
|
|
6924
|
-
// Convert "+=" or "-=" to relative numbers (
|
7038
|
+
// Convert "+=" or "-=" to relative numbers (trac-7345)
|
6925
7039
|
if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {
|
6926
7040
|
value = adjustCSS( elem, name, ret );
|
6927
7041
|
|
6928
|
-
// Fixes bug
|
7042
|
+
// Fixes bug trac-9237
|
6929
7043
|
type = "number";
|
6930
7044
|
}
|
6931
7045
|
|
6932
|
-
// Make sure that null and NaN values aren't set (
|
7046
|
+
// Make sure that null and NaN values aren't set (trac-7116)
|
6933
7047
|
if ( value == null || value !== value ) {
|
6934
7048
|
return;
|
6935
7049
|
}
|
@@ -7149,7 +7263,6 @@ jQuery.fn.extend( {
|
|
7149
7263
|
|
7150
7264
|
|
7151
7265
|
// Based off of the plugin by Clint Helfers, with permission.
|
7152
|
-
// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/
|
7153
7266
|
jQuery.fn.delay = function( time, type ) {
|
7154
7267
|
time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
|
7155
7268
|
type = type || "fx";
|
@@ -7374,8 +7487,7 @@ jQuery.extend( {
|
|
7374
7487
|
// Support: IE <=9 - 11 only
|
7375
7488
|
// elem.tabIndex doesn't always return the
|
7376
7489
|
// correct value when it hasn't been explicitly set
|
7377
|
-
//
|
7378
|
-
// Use proper attribute retrieval(#12072)
|
7490
|
+
// Use proper attribute retrieval (trac-12072)
|
7379
7491
|
var tabindex = jQuery.find.attr( elem, "tabindex" );
|
7380
7492
|
|
7381
7493
|
if ( tabindex ) {
|
@@ -7479,8 +7591,7 @@ function classesToArray( value ) {
|
|
7479
7591
|
|
7480
7592
|
jQuery.fn.extend( {
|
7481
7593
|
addClass: function( value ) {
|
7482
|
-
var
|
7483
|
-
i = 0;
|
7594
|
+
var classNames, cur, curValue, className, i, finalValue;
|
7484
7595
|
|
7485
7596
|
if ( isFunction( value ) ) {
|
7486
7597
|
return this.each( function( j ) {
|
@@ -7488,36 +7599,35 @@ jQuery.fn.extend( {
|
|
7488
7599
|
} );
|
7489
7600
|
}
|
7490
7601
|
|
7491
|
-
|
7602
|
+
classNames = classesToArray( value );
|
7492
7603
|
|
7493
|
-
if (
|
7494
|
-
|
7495
|
-
curValue = getClass(
|
7496
|
-
cur =
|
7604
|
+
if ( classNames.length ) {
|
7605
|
+
return this.each( function() {
|
7606
|
+
curValue = getClass( this );
|
7607
|
+
cur = this.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
|
7497
7608
|
|
7498
7609
|
if ( cur ) {
|
7499
|
-
|
7500
|
-
|
7501
|
-
if ( cur.indexOf( " " +
|
7502
|
-
cur +=
|
7610
|
+
for ( i = 0; i < classNames.length; i++ ) {
|
7611
|
+
className = classNames[ i ];
|
7612
|
+
if ( cur.indexOf( " " + className + " " ) < 0 ) {
|
7613
|
+
cur += className + " ";
|
7503
7614
|
}
|
7504
7615
|
}
|
7505
7616
|
|
7506
7617
|
// Only assign if different to avoid unneeded rendering.
|
7507
7618
|
finalValue = stripAndCollapse( cur );
|
7508
7619
|
if ( curValue !== finalValue ) {
|
7509
|
-
|
7620
|
+
this.setAttribute( "class", finalValue );
|
7510
7621
|
}
|
7511
7622
|
}
|
7512
|
-
}
|
7623
|
+
} );
|
7513
7624
|
}
|
7514
7625
|
|
7515
7626
|
return this;
|
7516
7627
|
},
|
7517
7628
|
|
7518
7629
|
removeClass: function( value ) {
|
7519
|
-
var
|
7520
|
-
i = 0;
|
7630
|
+
var classNames, cur, curValue, className, i, finalValue;
|
7521
7631
|
|
7522
7632
|
if ( isFunction( value ) ) {
|
7523
7633
|
return this.each( function( j ) {
|
@@ -7529,45 +7639,42 @@ jQuery.fn.extend( {
|
|
7529
7639
|
return this.attr( "class", "" );
|
7530
7640
|
}
|
7531
7641
|
|
7532
|
-
|
7642
|
+
classNames = classesToArray( value );
|
7533
7643
|
|
7534
|
-
if (
|
7535
|
-
|
7536
|
-
curValue = getClass(
|
7644
|
+
if ( classNames.length ) {
|
7645
|
+
return this.each( function() {
|
7646
|
+
curValue = getClass( this );
|
7537
7647
|
|
7538
7648
|
// This expression is here for better compressibility (see addClass)
|
7539
|
-
cur =
|
7649
|
+
cur = this.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
|
7540
7650
|
|
7541
7651
|
if ( cur ) {
|
7542
|
-
|
7543
|
-
|
7652
|
+
for ( i = 0; i < classNames.length; i++ ) {
|
7653
|
+
className = classNames[ i ];
|
7544
7654
|
|
7545
7655
|
// Remove *all* instances
|
7546
|
-
while ( cur.indexOf( " " +
|
7547
|
-
cur = cur.replace( " " +
|
7656
|
+
while ( cur.indexOf( " " + className + " " ) > -1 ) {
|
7657
|
+
cur = cur.replace( " " + className + " ", " " );
|
7548
7658
|
}
|
7549
7659
|
}
|
7550
7660
|
|
7551
7661
|
// Only assign if different to avoid unneeded rendering.
|
7552
7662
|
finalValue = stripAndCollapse( cur );
|
7553
7663
|
if ( curValue !== finalValue ) {
|
7554
|
-
|
7664
|
+
this.setAttribute( "class", finalValue );
|
7555
7665
|
}
|
7556
7666
|
}
|
7557
|
-
}
|
7667
|
+
} );
|
7558
7668
|
}
|
7559
7669
|
|
7560
7670
|
return this;
|
7561
7671
|
},
|
7562
7672
|
|
7563
7673
|
toggleClass: function( value, stateVal ) {
|
7564
|
-
var
|
7674
|
+
var classNames, className, i, self,
|
7675
|
+
type = typeof value,
|
7565
7676
|
isValidValue = type === "string" || Array.isArray( value );
|
7566
7677
|
|
7567
|
-
if ( typeof stateVal === "boolean" && isValidValue ) {
|
7568
|
-
return stateVal ? this.addClass( value ) : this.removeClass( value );
|
7569
|
-
}
|
7570
|
-
|
7571
7678
|
if ( isFunction( value ) ) {
|
7572
7679
|
return this.each( function( i ) {
|
7573
7680
|
jQuery( this ).toggleClass(
|
@@ -7577,17 +7684,20 @@ jQuery.fn.extend( {
|
|
7577
7684
|
} );
|
7578
7685
|
}
|
7579
7686
|
|
7580
|
-
|
7581
|
-
|
7687
|
+
if ( typeof stateVal === "boolean" && isValidValue ) {
|
7688
|
+
return stateVal ? this.addClass( value ) : this.removeClass( value );
|
7689
|
+
}
|
7690
|
+
|
7691
|
+
classNames = classesToArray( value );
|
7582
7692
|
|
7693
|
+
return this.each( function() {
|
7583
7694
|
if ( isValidValue ) {
|
7584
7695
|
|
7585
7696
|
// Toggle individual class names
|
7586
|
-
i = 0;
|
7587
7697
|
self = jQuery( this );
|
7588
|
-
classNames = classesToArray( value );
|
7589
7698
|
|
7590
|
-
|
7699
|
+
for ( i = 0; i < classNames.length; i++ ) {
|
7700
|
+
className = classNames[ i ];
|
7591
7701
|
|
7592
7702
|
// Check each className given, space separated list
|
7593
7703
|
if ( self.hasClass( className ) ) {
|
@@ -7721,7 +7831,7 @@ jQuery.extend( {
|
|
7721
7831
|
val :
|
7722
7832
|
|
7723
7833
|
// Support: IE <=10 - 11 only
|
7724
|
-
// option.text throws exceptions (
|
7834
|
+
// option.text throws exceptions (trac-14686, trac-14858)
|
7725
7835
|
// Strip and collapse whitespace
|
7726
7836
|
// https://html.spec.whatwg.org/#strip-and-collapse-whitespace
|
7727
7837
|
stripAndCollapse( jQuery.text( elem ) );
|
@@ -7748,7 +7858,7 @@ jQuery.extend( {
|
|
7748
7858
|
option = options[ i ];
|
7749
7859
|
|
7750
7860
|
// Support: IE <=9 only
|
7751
|
-
// IE8-9 doesn't update selected after form reset (
|
7861
|
+
// IE8-9 doesn't update selected after form reset (trac-2551)
|
7752
7862
|
if ( ( option.selected || i === index ) &&
|
7753
7863
|
|
7754
7864
|
// Don't return options that are disabled or in a disabled optgroup
|
@@ -7891,8 +8001,8 @@ jQuery.extend( jQuery.event, {
|
|
7891
8001
|
return;
|
7892
8002
|
}
|
7893
8003
|
|
7894
|
-
// Determine event propagation path in advance, per W3C events spec (
|
7895
|
-
// Bubble up to document, then to window; watch for a global ownerDocument var (
|
8004
|
+
// Determine event propagation path in advance, per W3C events spec (trac-9951)
|
8005
|
+
// Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)
|
7896
8006
|
if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {
|
7897
8007
|
|
7898
8008
|
bubbleType = special.delegateType || type;
|
@@ -7944,7 +8054,7 @@ jQuery.extend( jQuery.event, {
|
|
7944
8054
|
acceptData( elem ) ) {
|
7945
8055
|
|
7946
8056
|
// Call a native DOM method on the target with the same name as the event.
|
7947
|
-
// Don't do default actions on window, that's where global variables be (
|
8057
|
+
// Don't do default actions on window, that's where global variables be (trac-6170)
|
7948
8058
|
if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {
|
7949
8059
|
|
7950
8060
|
// Don't re-trigger an onFOO event when we call its FOO() method
|
@@ -8654,7 +8764,9 @@ jQuery.each(
|
|
8654
8764
|
|
8655
8765
|
// Support: Android <=4.0 only
|
8656
8766
|
// Make sure we trim BOM and NBSP
|
8657
|
-
|
8767
|
+
// Require that the "whitespace run" starts from a non-whitespace
|
8768
|
+
// to avoid O(N^2) behavior when the engine would try matching "\s+$" at each space position.
|
8769
|
+
var rtrim = /^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g;
|
8658
8770
|
|
8659
8771
|
// Bind a function to a context, optionally partially applying any
|
8660
8772
|
// arguments.
|
@@ -8721,7 +8833,7 @@ jQuery.isNumeric = function( obj ) {
|
|
8721
8833
|
jQuery.trim = function( text ) {
|
8722
8834
|
return text == null ?
|
8723
8835
|
"" :
|
8724
|
-
( text + "" ).replace( rtrim, "" );
|
8836
|
+
( text + "" ).replace( rtrim, "$1" );
|
8725
8837
|
};
|
8726
8838
|
|
8727
8839
|
|
@@ -8769,8 +8881,8 @@ jQuery.noConflict = function( deep ) {
|
|
8769
8881
|
};
|
8770
8882
|
|
8771
8883
|
// Expose jQuery and $ identifiers, even in AMD
|
8772
|
-
// (
|
8773
|
-
// and CommonJS for browser emulators (
|
8884
|
+
// (trac-7102#comment:10, https://github.com/jquery/jquery/pull/557)
|
8885
|
+
// and CommonJS for browser emulators (trac-13566)
|
8774
8886
|
if ( typeof noGlobal === "undefined" ) {
|
8775
8887
|
window.jQuery = window.$ = jQuery;
|
8776
8888
|
}
|