jekyll-chalk 0.1.0 → 0.1.1
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
- data/LICENSE.txt +21 -0
- data/README.md +89 -0
- data/_includes/footer.html +7 -0
- data/_includes/head.html +33 -0
- data/_includes/image.html +3 -0
- data/_includes/javascripts.html +21 -0
- data/_includes/navigation.html +75 -0
- data/_layouts/articles_by_tag.html +38 -0
- data/_layouts/default.html +16 -0
- data/_layouts/page.html +5 -0
- data/_layouts/post.html +71 -0
- data/assets/bower/fluidbox/.bower.json +44 -0
- data/assets/bower/fluidbox/Gruntfile.js +8 -0
- data/assets/bower/fluidbox/LICENSE.md +23 -0
- data/assets/bower/fluidbox/README.md +396 -0
- data/assets/bower/fluidbox/bower.json +35 -0
- data/assets/bower/fluidbox/demo/css/styles.min.css +2 -0
- data/assets/bower/fluidbox/demo/css/styles.min.css.map +1 -0
- data/assets/bower/fluidbox/demo/fonts/BLOKKRegular.eot +0 -0
- data/assets/bower/fluidbox/demo/fonts/BLOKKRegular.svg +233 -0
- data/assets/bower/fluidbox/demo/fonts/BLOKKRegular.ttf +0 -0
- data/assets/bower/fluidbox/demo/fonts/BLOKKRegular.woff +0 -0
- data/assets/bower/fluidbox/demo/fonts/fontello.eot +0 -0
- data/assets/bower/fluidbox/demo/fonts/fontello.svg +13 -0
- data/assets/bower/fluidbox/demo/fonts/fontello.ttf +0 -0
- data/assets/bower/fluidbox/demo/fonts/fontello.woff +0 -0
- data/assets/bower/fluidbox/demo/index.html +758 -0
- data/assets/bower/fluidbox/demo/src/css/styles.scss +1131 -0
- data/assets/bower/fluidbox/dist/css/fluidbox.min.css +2 -0
- data/assets/bower/fluidbox/dist/css/fluidbox.min.css.map +1 -0
- data/assets/bower/fluidbox/dist/js/jquery.fluidbox.min.js +1 -0
- data/assets/bower/fluidbox/grunt/aliases.yaml +20 -0
- data/assets/bower/fluidbox/grunt/clean.js +5 -0
- data/assets/bower/fluidbox/grunt/concurrent.js +33 -0
- data/assets/bower/fluidbox/grunt/jshint.js +10 -0
- data/assets/bower/fluidbox/grunt/postcss.js +47 -0
- data/assets/bower/fluidbox/grunt/sass.js +42 -0
- data/assets/bower/fluidbox/grunt/uglify.js +7 -0
- data/assets/bower/fluidbox/grunt/watch.js +28 -0
- data/assets/bower/fluidbox/index.html +8 -0
- data/assets/bower/fluidbox/license.txt +21 -0
- data/assets/bower/fluidbox/src/css/_fluidbox.scss +95 -0
- data/assets/bower/fluidbox/src/css/fluidbox.scss +2 -0
- data/assets/bower/fluidbox/src/js/jquery.fluidbox.js +722 -0
- data/assets/bower/jquery/.bower.json +25 -0
- data/assets/bower/jquery/AUTHORS.txt +295 -0
- data/assets/bower/jquery/LICENSE.txt +36 -0
- data/assets/bower/jquery/README.md +65 -0
- data/assets/bower/jquery/bower.json +14 -0
- data/assets/bower/jquery/dist/core.js +482 -0
- data/assets/bower/jquery/dist/jquery.js +10220 -0
- data/assets/bower/jquery/dist/jquery.min.js +4 -0
- data/assets/bower/jquery/dist/jquery.min.map +1 -0
- data/assets/bower/jquery/dist/jquery.slim.js +8107 -0
- data/assets/bower/jquery/dist/jquery.slim.min.js +4 -0
- data/assets/bower/jquery/dist/jquery.slim.min.map +1 -0
- data/assets/bower/jquery/external/sizzle/LICENSE.txt +36 -0
- data/assets/bower/jquery/external/sizzle/dist/sizzle.js +2272 -0
- data/assets/bower/jquery/external/sizzle/dist/sizzle.min.js +3 -0
- data/assets/bower/jquery/external/sizzle/dist/sizzle.min.map +1 -0
- data/assets/bower/jquery/src/.eslintrc.json +18 -0
- data/assets/bower/jquery/src/ajax.js +855 -0
- data/assets/bower/jquery/src/ajax/jsonp.js +102 -0
- data/assets/bower/jquery/src/ajax/load.js +76 -0
- data/assets/bower/jquery/src/ajax/parseXML.js +30 -0
- data/assets/bower/jquery/src/ajax/script.js +77 -0
- data/assets/bower/jquery/src/ajax/var/location.js +5 -0
- data/assets/bower/jquery/src/ajax/var/nonce.js +7 -0
- data/assets/bower/jquery/src/ajax/var/rquery.js +5 -0
- data/assets/bower/jquery/src/ajax/xhr.js +169 -0
- data/assets/bower/jquery/src/attributes.js +13 -0
- data/assets/bower/jquery/src/attributes/attr.js +140 -0
- data/assets/bower/jquery/src/attributes/classes.js +174 -0
- data/assets/bower/jquery/src/attributes/prop.js +143 -0
- data/assets/bower/jquery/src/attributes/support.js +33 -0
- data/assets/bower/jquery/src/attributes/val.js +188 -0
- data/assets/bower/jquery/src/callbacks.js +234 -0
- data/assets/bower/jquery/src/core.js +482 -0
- data/assets/bower/jquery/src/core/DOMEval.js +16 -0
- data/assets/bower/jquery/src/core/access.js +70 -0
- data/assets/bower/jquery/src/core/init.js +127 -0
- data/assets/bower/jquery/src/core/parseHTML.js +65 -0
- data/assets/bower/jquery/src/core/ready-no-deferred.js +105 -0
- data/assets/bower/jquery/src/core/ready.js +95 -0
- data/assets/bower/jquery/src/core/readyException.js +13 -0
- data/assets/bower/jquery/src/core/stripAndCollapse.js +14 -0
- data/assets/bower/jquery/src/core/support.js +20 -0
- data/assets/bower/jquery/src/core/var/rsingleTag.js +6 -0
- data/assets/bower/jquery/src/css.js +426 -0
- data/assets/bower/jquery/src/css/addGetHookIf.js +26 -0
- data/assets/bower/jquery/src/css/adjustCSS.js +71 -0
- data/assets/bower/jquery/src/css/curCSS.js +59 -0
- data/assets/bower/jquery/src/css/hiddenVisibleSelectors.js +15 -0
- data/assets/bower/jquery/src/css/showHide.js +105 -0
- data/assets/bower/jquery/src/css/support.js +89 -0
- data/assets/bower/jquery/src/css/var/cssExpand.js +5 -0
- data/assets/bower/jquery/src/css/var/getStyles.js +17 -0
- data/assets/bower/jquery/src/css/var/isHiddenWithinTree.js +34 -0
- data/assets/bower/jquery/src/css/var/rmargin.js +5 -0
- data/assets/bower/jquery/src/css/var/rnumnonpx.js +7 -0
- data/assets/bower/jquery/src/css/var/swap.js +26 -0
- data/assets/bower/jquery/src/data.js +179 -0
- data/assets/bower/jquery/src/data/Data.js +161 -0
- data/assets/bower/jquery/src/data/var/acceptData.js +19 -0
- data/assets/bower/jquery/src/data/var/dataPriv.js +7 -0
- data/assets/bower/jquery/src/data/var/dataUser.js +7 -0
- data/assets/bower/jquery/src/deferred.js +389 -0
- data/assets/bower/jquery/src/deferred/exceptionHook.js +21 -0
- data/assets/bower/jquery/src/deprecated.js +30 -0
- data/assets/bower/jquery/src/dimensions.js +56 -0
- data/assets/bower/jquery/src/effects.js +693 -0
- data/assets/bower/jquery/src/effects/Tween.js +123 -0
- data/assets/bower/jquery/src/effects/animatedSelector.js +15 -0
- data/assets/bower/jquery/src/event.js +745 -0
- data/assets/bower/jquery/src/event/ajax.js +22 -0
- data/assets/bower/jquery/src/event/alias.js +29 -0
- data/assets/bower/jquery/src/event/focusin.js +55 -0
- data/assets/bower/jquery/src/event/support.js +11 -0
- data/assets/bower/jquery/src/event/trigger.js +185 -0
- data/assets/bower/jquery/src/exports/amd.js +26 -0
- data/assets/bower/jquery/src/exports/global.js +34 -0
- data/assets/bower/jquery/src/jquery.js +41 -0
- data/assets/bower/jquery/src/manipulation.js +486 -0
- data/assets/bower/jquery/src/manipulation/_evalUrl.js +23 -0
- data/assets/bower/jquery/src/manipulation/buildFragment.js +104 -0
- data/assets/bower/jquery/src/manipulation/getAll.js +31 -0
- data/assets/bower/jquery/src/manipulation/setGlobalEval.js +22 -0
- data/assets/bower/jquery/src/manipulation/support.js +35 -0
- data/assets/bower/jquery/src/manipulation/var/rcheckableType.js +5 -0
- data/assets/bower/jquery/src/manipulation/var/rscriptType.js +5 -0
- data/assets/bower/jquery/src/manipulation/var/rtagName.js +5 -0
- data/assets/bower/jquery/src/manipulation/wrapMap.js +29 -0
- data/assets/bower/jquery/src/offset.js +232 -0
- data/assets/bower/jquery/src/queue.js +145 -0
- data/assets/bower/jquery/src/queue/delay.js +24 -0
- data/assets/bower/jquery/src/selector-native.js +237 -0
- data/assets/bower/jquery/src/selector-sizzle.js +19 -0
- data/assets/bower/jquery/src/selector.js +3 -0
- data/assets/bower/jquery/src/serialize.js +130 -0
- data/assets/bower/jquery/src/traversing.js +178 -0
- data/assets/bower/jquery/src/traversing/findFilter.js +106 -0
- data/assets/bower/jquery/src/traversing/var/dir.js +22 -0
- data/assets/bower/jquery/src/traversing/var/rneedsContext.js +8 -0
- data/assets/bower/jquery/src/traversing/var/siblings.js +17 -0
- data/assets/bower/jquery/src/var/ObjectFunctionString.js +7 -0
- data/assets/bower/jquery/src/var/arr.js +5 -0
- data/assets/bower/jquery/src/var/class2type.js +6 -0
- data/assets/bower/jquery/src/var/concat.js +7 -0
- data/assets/bower/jquery/src/var/document.js +5 -0
- data/assets/bower/jquery/src/var/documentElement.js +7 -0
- data/assets/bower/jquery/src/var/fnToString.js +7 -0
- data/assets/bower/jquery/src/var/getProto.js +5 -0
- data/assets/bower/jquery/src/var/hasOwn.js +7 -0
- data/assets/bower/jquery/src/var/indexOf.js +7 -0
- data/assets/bower/jquery/src/var/pnum.js +5 -0
- data/assets/bower/jquery/src/var/push.js +7 -0
- data/assets/bower/jquery/src/var/rcssNum.js +9 -0
- data/assets/bower/jquery/src/var/rnothtmlwhite.js +8 -0
- data/assets/bower/jquery/src/var/slice.js +7 -0
- data/assets/bower/jquery/src/var/support.js +6 -0
- data/assets/bower/jquery/src/var/toString.js +7 -0
- data/assets/bower/jquery/src/wrap.js +77 -0
- data/assets/bower/scrollreveal/.bower.json +36 -0
- data/assets/bower/scrollreveal/CHANGELOG.md +268 -0
- data/assets/bower/scrollreveal/LICENSE.md +12 -0
- data/assets/bower/scrollreveal/README.md +413 -0
- data/assets/bower/scrollreveal/bower.json +24 -0
- data/assets/bower/scrollreveal/dist/scrollreveal.js +860 -0
- data/assets/bower/scrollreveal/dist/scrollreveal.min.js +1 -0
- data/assets/bower/turbolinks5/.blade.yml +15 -0
- data/assets/bower/turbolinks5/.bower.json +14 -0
- data/assets/bower/turbolinks5/.gitignore +2 -0
- data/assets/bower/turbolinks5/CONDUCT.md +79 -0
- data/assets/bower/turbolinks5/Gemfile +9 -0
- data/assets/bower/turbolinks5/LICENSE +20 -0
- data/assets/bower/turbolinks5/README.md +435 -0
- data/assets/bower/turbolinks5/bin/blade +16 -0
- data/assets/bower/turbolinks5/bin/rackup +16 -0
- data/assets/bower/turbolinks5/config.ru +8 -0
- data/assets/bower/turbolinks5/dist/turbolinks.js +6 -0
- data/assets/bower/turbolinks5/package.json +31 -0
- data/assets/bower/turbolinks5/src/turbolinks/BANNER.js.erb +4 -0
- data/assets/bower/turbolinks5/src/turbolinks/VERSION +1 -0
- data/assets/bower/turbolinks5/src/turbolinks/browser_adapter.coffee +61 -0
- data/assets/bower/turbolinks5/src/turbolinks/compatibility.coffee +30 -0
- data/assets/bower/turbolinks5/src/turbolinks/controller.coffee +239 -0
- data/assets/bower/turbolinks5/src/turbolinks/error_renderer.coffee +21 -0
- data/assets/bower/turbolinks5/src/turbolinks/head_details.coffee +51 -0
- data/assets/bower/turbolinks5/src/turbolinks/helpers.coffee +51 -0
- data/assets/bower/turbolinks5/src/turbolinks/history.coffee +46 -0
- data/assets/bower/turbolinks5/src/turbolinks/http_request.coffee +88 -0
- data/assets/bower/turbolinks5/src/turbolinks/index.coffee +16 -0
- data/assets/bower/turbolinks5/src/turbolinks/location.coffee +70 -0
- data/assets/bower/turbolinks5/src/turbolinks/progress_bar.coffee +83 -0
- data/assets/bower/turbolinks5/src/turbolinks/renderer.coffee +27 -0
- data/assets/bower/turbolinks5/src/turbolinks/scroll_manager.coffee +27 -0
- data/assets/bower/turbolinks5/src/turbolinks/snapshot.coffee +47 -0
- data/assets/bower/turbolinks5/src/turbolinks/snapshot_cache.coffee +43 -0
- data/assets/bower/turbolinks5/src/turbolinks/snapshot_renderer.coffee +88 -0
- data/assets/bower/turbolinks5/src/turbolinks/start.coffee +18 -0
- data/assets/bower/turbolinks5/src/turbolinks/view.coffee +34 -0
- data/assets/bower/turbolinks5/src/turbolinks/visit.coffee +162 -0
- data/assets/bower/turbolinks5/test/src/fixtures/additional_assets.html +12 -0
- data/assets/bower/turbolinks5/test/src/fixtures/body_script.html +18 -0
- data/assets/bower/turbolinks5/test/src/fixtures/eval_false_script.html +18 -0
- data/assets/bower/turbolinks5/test/src/fixtures/head_script.html +18 -0
- data/assets/bower/turbolinks5/test/src/fixtures/navigation.html +21 -0
- data/assets/bower/turbolinks5/test/src/fixtures/one.html +12 -0
- data/assets/bower/turbolinks5/test/src/fixtures/rendering.html +20 -0
- data/assets/bower/turbolinks5/test/src/fixtures/tracked_asset_change.html +11 -0
- data/assets/bower/turbolinks5/test/src/fixtures/visit.html +14 -0
- data/assets/bower/turbolinks5/test/src/head.html.erb +1 -0
- data/assets/bower/turbolinks5/test/src/helpers/replicant_helpers.coffee +18 -0
- data/assets/bower/turbolinks5/test/src/modules/navigation_tests.coffee +75 -0
- data/assets/bower/turbolinks5/test/src/modules/rendering_tests.coffee +123 -0
- data/assets/bower/turbolinks5/test/src/modules/visit_tests.coffee +49 -0
- data/assets/bower/turbolinks5/test/src/test.coffee +4 -0
- data/assets/bower/turbolinks5/test/src/test.css +20 -0
- data/assets/bower/turbolinks5/test/vendor/replicant.js +10 -0
- data/assets/fonts/cormorant-garamond/Cormorant-Garamond-700.eot +0 -0
- data/assets/fonts/cormorant-garamond/Cormorant-Garamond-700.ttf +0 -0
- data/assets/fonts/cormorant-garamond/Cormorant-Garamond-700.woff +0 -0
- data/assets/fonts/cormorant-garamond/Cormorant-Garamond-700.woff2 +0 -0
- data/assets/fonts/ionicons/ionicons.eot +0 -0
- data/assets/fonts/ionicons/ionicons.svg +2232 -0
- data/assets/fonts/ionicons/ionicons.ttf +0 -0
- data/assets/fonts/ionicons/ionicons.woff +0 -0
- data/assets/fonts/lato/Lato-300.eot +0 -0
- data/assets/fonts/lato/Lato-300.ttf +0 -0
- data/assets/fonts/lato/Lato-300.woff +0 -0
- data/assets/fonts/lato/Lato-300.woff2 +0 -0
- data/assets/fonts/lato/Lato-700.eot +0 -0
- data/assets/fonts/lato/Lato-700.ttf +0 -0
- data/assets/fonts/lato/Lato-700.woff +0 -0
- data/assets/fonts/lato/Lato-700.woff2 +0 -0
- data/assets/fonts/lato/Lato-regular.eot +0 -0
- data/assets/fonts/lato/Lato-regular.ttf +0 -0
- data/assets/fonts/lato/Lato-regular.woff +0 -0
- data/assets/fonts/lato/Lato-regular.woff2 +0 -0
- data/assets/images/about.jpg +0 -0
- data/assets/images/about@2x.jpg +0 -0
- data/assets/images/apple-touch-icon.png +0 -0
- data/assets/images/documentation/chalk-intro.png +0 -0
- data/assets/images/documentation/chalk-intro@2x.png +0 -0
- data/assets/images/documentation/enlarge.gif +0 -0
- data/assets/images/documentation/enlarge@2x.gif +0 -0
- data/assets/images/documentation/sample-image.jpg +0 -0
- data/assets/images/documentation/sample-image@2x.jpg +0 -0
- data/assets/images/og-image.jpg +0 -0
- data/assets/javascripts/application.js +24 -0
- data/assets/javascripts/vendor.js +6 -0
- data/assets/javascripts/vendor/jquery-throttle-debounce.js +9 -0
- data/assets/javascripts/vendor/retina.js +182 -0
- data/assets/stylesheets/.csscomb.json +197 -0
- data/assets/stylesheets/.scss-lint.yml +33 -0
- data/assets/stylesheets/_base.scss +151 -0
- data/assets/stylesheets/_mixins.scss +28 -0
- data/assets/stylesheets/_variables.scss +47 -0
- data/assets/stylesheets/dark.scss +70 -0
- data/assets/stylesheets/fonts.scss +63 -0
- data/assets/stylesheets/layouts/_footer.scss +17 -0
- data/assets/stylesheets/layouts/_grid.scss +102 -0
- data/assets/stylesheets/light.scss +70 -0
- data/assets/stylesheets/modules/_about.scss +10 -0
- data/assets/stylesheets/modules/_articles.scss +211 -0
- data/assets/stylesheets/modules/_embed.scss +31 -0
- data/assets/stylesheets/modules/_header.scss +57 -0
- data/assets/stylesheets/modules/_highlights-dark.scss +415 -0
- data/assets/stylesheets/modules/_highlights-light.scss +409 -0
- data/assets/stylesheets/modules/_icons.scss +2967 -0
- data/assets/stylesheets/notfound-dark.scss +90 -0
- data/assets/stylesheets/notfound-light.scss +90 -0
- data/assets/stylesheets/vendor/_normalize.scss +461 -0
- metadata +276 -3
@@ -0,0 +1,26 @@
|
|
1
|
+
define( function() {
|
2
|
+
|
3
|
+
"use strict";
|
4
|
+
|
5
|
+
// A method for quickly swapping in/out CSS properties to get correct calculations.
|
6
|
+
return function( elem, options, callback, args ) {
|
7
|
+
var ret, name,
|
8
|
+
old = {};
|
9
|
+
|
10
|
+
// Remember the old values, and insert the new ones
|
11
|
+
for ( name in options ) {
|
12
|
+
old[ name ] = elem.style[ name ];
|
13
|
+
elem.style[ name ] = options[ name ];
|
14
|
+
}
|
15
|
+
|
16
|
+
ret = callback.apply( elem, args || [] );
|
17
|
+
|
18
|
+
// Revert the old values
|
19
|
+
for ( name in options ) {
|
20
|
+
elem.style[ name ] = old[ name ];
|
21
|
+
}
|
22
|
+
|
23
|
+
return ret;
|
24
|
+
};
|
25
|
+
|
26
|
+
} );
|
@@ -0,0 +1,179 @@
|
|
1
|
+
define( [
|
2
|
+
"./core",
|
3
|
+
"./core/access",
|
4
|
+
"./data/var/dataPriv",
|
5
|
+
"./data/var/dataUser"
|
6
|
+
], function( jQuery, access, dataPriv, dataUser ) {
|
7
|
+
|
8
|
+
"use strict";
|
9
|
+
|
10
|
+
// Implementation Summary
|
11
|
+
//
|
12
|
+
// 1. Enforce API surface and semantic compatibility with 1.9.x branch
|
13
|
+
// 2. Improve the module's maintainability by reducing the storage
|
14
|
+
// paths to a single mechanism.
|
15
|
+
// 3. Use the same single mechanism to support "private" and "user" data.
|
16
|
+
// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
|
17
|
+
// 5. Avoid exposing implementation details on user objects (eg. expando properties)
|
18
|
+
// 6. Provide a clear path for implementation upgrade to WeakMap in 2014
|
19
|
+
|
20
|
+
var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
|
21
|
+
rmultiDash = /[A-Z]/g;
|
22
|
+
|
23
|
+
function getData( data ) {
|
24
|
+
if ( data === "true" ) {
|
25
|
+
return true;
|
26
|
+
}
|
27
|
+
|
28
|
+
if ( data === "false" ) {
|
29
|
+
return false;
|
30
|
+
}
|
31
|
+
|
32
|
+
if ( data === "null" ) {
|
33
|
+
return null;
|
34
|
+
}
|
35
|
+
|
36
|
+
// Only convert to a number if it doesn't change the string
|
37
|
+
if ( data === +data + "" ) {
|
38
|
+
return +data;
|
39
|
+
}
|
40
|
+
|
41
|
+
if ( rbrace.test( data ) ) {
|
42
|
+
return JSON.parse( data );
|
43
|
+
}
|
44
|
+
|
45
|
+
return data;
|
46
|
+
}
|
47
|
+
|
48
|
+
function dataAttr( elem, key, data ) {
|
49
|
+
var name;
|
50
|
+
|
51
|
+
// If nothing was found internally, try to fetch any
|
52
|
+
// data from the HTML5 data-* attribute
|
53
|
+
if ( data === undefined && elem.nodeType === 1 ) {
|
54
|
+
name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase();
|
55
|
+
data = elem.getAttribute( name );
|
56
|
+
|
57
|
+
if ( typeof data === "string" ) {
|
58
|
+
try {
|
59
|
+
data = getData( data );
|
60
|
+
} catch ( e ) {}
|
61
|
+
|
62
|
+
// Make sure we set the data so it isn't changed later
|
63
|
+
dataUser.set( elem, key, data );
|
64
|
+
} else {
|
65
|
+
data = undefined;
|
66
|
+
}
|
67
|
+
}
|
68
|
+
return data;
|
69
|
+
}
|
70
|
+
|
71
|
+
jQuery.extend( {
|
72
|
+
hasData: function( elem ) {
|
73
|
+
return dataUser.hasData( elem ) || dataPriv.hasData( elem );
|
74
|
+
},
|
75
|
+
|
76
|
+
data: function( elem, name, data ) {
|
77
|
+
return dataUser.access( elem, name, data );
|
78
|
+
},
|
79
|
+
|
80
|
+
removeData: function( elem, name ) {
|
81
|
+
dataUser.remove( elem, name );
|
82
|
+
},
|
83
|
+
|
84
|
+
// TODO: Now that all calls to _data and _removeData have been replaced
|
85
|
+
// with direct calls to dataPriv methods, these can be deprecated.
|
86
|
+
_data: function( elem, name, data ) {
|
87
|
+
return dataPriv.access( elem, name, data );
|
88
|
+
},
|
89
|
+
|
90
|
+
_removeData: function( elem, name ) {
|
91
|
+
dataPriv.remove( elem, name );
|
92
|
+
}
|
93
|
+
} );
|
94
|
+
|
95
|
+
jQuery.fn.extend( {
|
96
|
+
data: function( key, value ) {
|
97
|
+
var i, name, data,
|
98
|
+
elem = this[ 0 ],
|
99
|
+
attrs = elem && elem.attributes;
|
100
|
+
|
101
|
+
// Gets all values
|
102
|
+
if ( key === undefined ) {
|
103
|
+
if ( this.length ) {
|
104
|
+
data = dataUser.get( elem );
|
105
|
+
|
106
|
+
if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) {
|
107
|
+
i = attrs.length;
|
108
|
+
while ( i-- ) {
|
109
|
+
|
110
|
+
// Support: IE 11 only
|
111
|
+
// The attrs elements can be null (#14894)
|
112
|
+
if ( attrs[ i ] ) {
|
113
|
+
name = attrs[ i ].name;
|
114
|
+
if ( name.indexOf( "data-" ) === 0 ) {
|
115
|
+
name = jQuery.camelCase( name.slice( 5 ) );
|
116
|
+
dataAttr( elem, name, data[ name ] );
|
117
|
+
}
|
118
|
+
}
|
119
|
+
}
|
120
|
+
dataPriv.set( elem, "hasDataAttrs", true );
|
121
|
+
}
|
122
|
+
}
|
123
|
+
|
124
|
+
return data;
|
125
|
+
}
|
126
|
+
|
127
|
+
// Sets multiple values
|
128
|
+
if ( typeof key === "object" ) {
|
129
|
+
return this.each( function() {
|
130
|
+
dataUser.set( this, key );
|
131
|
+
} );
|
132
|
+
}
|
133
|
+
|
134
|
+
return access( this, function( value ) {
|
135
|
+
var data;
|
136
|
+
|
137
|
+
// The calling jQuery object (element matches) is not empty
|
138
|
+
// (and therefore has an element appears at this[ 0 ]) and the
|
139
|
+
// `value` parameter was not undefined. An empty jQuery object
|
140
|
+
// will result in `undefined` for elem = this[ 0 ] which will
|
141
|
+
// throw an exception if an attempt to read a data cache is made.
|
142
|
+
if ( elem && value === undefined ) {
|
143
|
+
|
144
|
+
// Attempt to get data from the cache
|
145
|
+
// The key will always be camelCased in Data
|
146
|
+
data = dataUser.get( elem, key );
|
147
|
+
if ( data !== undefined ) {
|
148
|
+
return data;
|
149
|
+
}
|
150
|
+
|
151
|
+
// Attempt to "discover" the data in
|
152
|
+
// HTML5 custom data-* attrs
|
153
|
+
data = dataAttr( elem, key );
|
154
|
+
if ( data !== undefined ) {
|
155
|
+
return data;
|
156
|
+
}
|
157
|
+
|
158
|
+
// We tried really hard, but the data doesn't exist.
|
159
|
+
return;
|
160
|
+
}
|
161
|
+
|
162
|
+
// Set the data...
|
163
|
+
this.each( function() {
|
164
|
+
|
165
|
+
// We always store the camelCased key
|
166
|
+
dataUser.set( this, key, value );
|
167
|
+
} );
|
168
|
+
}, null, value, arguments.length > 1, null, true );
|
169
|
+
},
|
170
|
+
|
171
|
+
removeData: function( key ) {
|
172
|
+
return this.each( function() {
|
173
|
+
dataUser.remove( this, key );
|
174
|
+
} );
|
175
|
+
}
|
176
|
+
} );
|
177
|
+
|
178
|
+
return jQuery;
|
179
|
+
} );
|
@@ -0,0 +1,161 @@
|
|
1
|
+
define( [
|
2
|
+
"../core",
|
3
|
+
"../var/rnothtmlwhite",
|
4
|
+
"./var/acceptData"
|
5
|
+
], function( jQuery, rnothtmlwhite, acceptData ) {
|
6
|
+
|
7
|
+
"use strict";
|
8
|
+
|
9
|
+
function Data() {
|
10
|
+
this.expando = jQuery.expando + Data.uid++;
|
11
|
+
}
|
12
|
+
|
13
|
+
Data.uid = 1;
|
14
|
+
|
15
|
+
Data.prototype = {
|
16
|
+
|
17
|
+
cache: function( owner ) {
|
18
|
+
|
19
|
+
// Check if the owner object already has a cache
|
20
|
+
var value = owner[ this.expando ];
|
21
|
+
|
22
|
+
// If not, create one
|
23
|
+
if ( !value ) {
|
24
|
+
value = {};
|
25
|
+
|
26
|
+
// We can accept data for non-element nodes in modern browsers,
|
27
|
+
// but we should not, see #8335.
|
28
|
+
// Always return an empty object.
|
29
|
+
if ( acceptData( owner ) ) {
|
30
|
+
|
31
|
+
// If it is a node unlikely to be stringify-ed or looped over
|
32
|
+
// use plain assignment
|
33
|
+
if ( owner.nodeType ) {
|
34
|
+
owner[ this.expando ] = value;
|
35
|
+
|
36
|
+
// Otherwise secure it in a non-enumerable property
|
37
|
+
// configurable must be true to allow the property to be
|
38
|
+
// deleted when data is removed
|
39
|
+
} else {
|
40
|
+
Object.defineProperty( owner, this.expando, {
|
41
|
+
value: value,
|
42
|
+
configurable: true
|
43
|
+
} );
|
44
|
+
}
|
45
|
+
}
|
46
|
+
}
|
47
|
+
|
48
|
+
return value;
|
49
|
+
},
|
50
|
+
set: function( owner, data, value ) {
|
51
|
+
var prop,
|
52
|
+
cache = this.cache( owner );
|
53
|
+
|
54
|
+
// Handle: [ owner, key, value ] args
|
55
|
+
// Always use camelCase key (gh-2257)
|
56
|
+
if ( typeof data === "string" ) {
|
57
|
+
cache[ jQuery.camelCase( data ) ] = value;
|
58
|
+
|
59
|
+
// Handle: [ owner, { properties } ] args
|
60
|
+
} else {
|
61
|
+
|
62
|
+
// Copy the properties one-by-one to the cache object
|
63
|
+
for ( prop in data ) {
|
64
|
+
cache[ jQuery.camelCase( prop ) ] = data[ prop ];
|
65
|
+
}
|
66
|
+
}
|
67
|
+
return cache;
|
68
|
+
},
|
69
|
+
get: function( owner, key ) {
|
70
|
+
return key === undefined ?
|
71
|
+
this.cache( owner ) :
|
72
|
+
|
73
|
+
// Always use camelCase key (gh-2257)
|
74
|
+
owner[ this.expando ] && owner[ this.expando ][ jQuery.camelCase( key ) ];
|
75
|
+
},
|
76
|
+
access: function( owner, key, value ) {
|
77
|
+
|
78
|
+
// In cases where either:
|
79
|
+
//
|
80
|
+
// 1. No key was specified
|
81
|
+
// 2. A string key was specified, but no value provided
|
82
|
+
//
|
83
|
+
// Take the "read" path and allow the get method to determine
|
84
|
+
// which value to return, respectively either:
|
85
|
+
//
|
86
|
+
// 1. The entire cache object
|
87
|
+
// 2. The data stored at the key
|
88
|
+
//
|
89
|
+
if ( key === undefined ||
|
90
|
+
( ( key && typeof key === "string" ) && value === undefined ) ) {
|
91
|
+
|
92
|
+
return this.get( owner, key );
|
93
|
+
}
|
94
|
+
|
95
|
+
// When the key is not a string, or both a key and value
|
96
|
+
// are specified, set or extend (existing objects) with either:
|
97
|
+
//
|
98
|
+
// 1. An object of properties
|
99
|
+
// 2. A key and value
|
100
|
+
//
|
101
|
+
this.set( owner, key, value );
|
102
|
+
|
103
|
+
// Since the "set" path can have two possible entry points
|
104
|
+
// return the expected data based on which path was taken[*]
|
105
|
+
return value !== undefined ? value : key;
|
106
|
+
},
|
107
|
+
remove: function( owner, key ) {
|
108
|
+
var i,
|
109
|
+
cache = owner[ this.expando ];
|
110
|
+
|
111
|
+
if ( cache === undefined ) {
|
112
|
+
return;
|
113
|
+
}
|
114
|
+
|
115
|
+
if ( key !== undefined ) {
|
116
|
+
|
117
|
+
// Support array or space separated string of keys
|
118
|
+
if ( jQuery.isArray( key ) ) {
|
119
|
+
|
120
|
+
// If key is an array of keys...
|
121
|
+
// We always set camelCase keys, so remove that.
|
122
|
+
key = key.map( jQuery.camelCase );
|
123
|
+
} else {
|
124
|
+
key = jQuery.camelCase( key );
|
125
|
+
|
126
|
+
// If a key with the spaces exists, use it.
|
127
|
+
// Otherwise, create an array by matching non-whitespace
|
128
|
+
key = key in cache ?
|
129
|
+
[ key ] :
|
130
|
+
( key.match( rnothtmlwhite ) || [] );
|
131
|
+
}
|
132
|
+
|
133
|
+
i = key.length;
|
134
|
+
|
135
|
+
while ( i-- ) {
|
136
|
+
delete cache[ key[ i ] ];
|
137
|
+
}
|
138
|
+
}
|
139
|
+
|
140
|
+
// Remove the expando if there's no more data
|
141
|
+
if ( key === undefined || jQuery.isEmptyObject( cache ) ) {
|
142
|
+
|
143
|
+
// Support: Chrome <=35 - 45
|
144
|
+
// Webkit & Blink performance suffers when deleting properties
|
145
|
+
// from DOM nodes, so set to undefined instead
|
146
|
+
// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)
|
147
|
+
if ( owner.nodeType ) {
|
148
|
+
owner[ this.expando ] = undefined;
|
149
|
+
} else {
|
150
|
+
delete owner[ this.expando ];
|
151
|
+
}
|
152
|
+
}
|
153
|
+
},
|
154
|
+
hasData: function( owner ) {
|
155
|
+
var cache = owner[ this.expando ];
|
156
|
+
return cache !== undefined && !jQuery.isEmptyObject( cache );
|
157
|
+
}
|
158
|
+
};
|
159
|
+
|
160
|
+
return Data;
|
161
|
+
} );
|
@@ -0,0 +1,19 @@
|
|
1
|
+
define( function() {
|
2
|
+
|
3
|
+
"use strict";
|
4
|
+
|
5
|
+
/**
|
6
|
+
* Determines whether an object can have data
|
7
|
+
*/
|
8
|
+
return function( owner ) {
|
9
|
+
|
10
|
+
// Accepts only:
|
11
|
+
// - Node
|
12
|
+
// - Node.ELEMENT_NODE
|
13
|
+
// - Node.DOCUMENT_NODE
|
14
|
+
// - Object
|
15
|
+
// - Any
|
16
|
+
return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
|
17
|
+
};
|
18
|
+
|
19
|
+
} );
|
@@ -0,0 +1,389 @@
|
|
1
|
+
define( [
|
2
|
+
"./core",
|
3
|
+
"./var/slice",
|
4
|
+
"./callbacks"
|
5
|
+
], function( jQuery, slice ) {
|
6
|
+
|
7
|
+
"use strict";
|
8
|
+
|
9
|
+
function Identity( v ) {
|
10
|
+
return v;
|
11
|
+
}
|
12
|
+
function Thrower( ex ) {
|
13
|
+
throw ex;
|
14
|
+
}
|
15
|
+
|
16
|
+
function adoptValue( value, resolve, reject ) {
|
17
|
+
var method;
|
18
|
+
|
19
|
+
try {
|
20
|
+
|
21
|
+
// Check for promise aspect first to privilege synchronous behavior
|
22
|
+
if ( value && jQuery.isFunction( ( method = value.promise ) ) ) {
|
23
|
+
method.call( value ).done( resolve ).fail( reject );
|
24
|
+
|
25
|
+
// Other thenables
|
26
|
+
} else if ( value && jQuery.isFunction( ( method = value.then ) ) ) {
|
27
|
+
method.call( value, resolve, reject );
|
28
|
+
|
29
|
+
// Other non-thenables
|
30
|
+
} else {
|
31
|
+
|
32
|
+
// Support: Android 4.0 only
|
33
|
+
// Strict mode functions invoked without .call/.apply get global-object context
|
34
|
+
resolve.call( undefined, value );
|
35
|
+
}
|
36
|
+
|
37
|
+
// For Promises/A+, convert exceptions into rejections
|
38
|
+
// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in
|
39
|
+
// Deferred#then to conditionally suppress rejection.
|
40
|
+
} catch ( value ) {
|
41
|
+
|
42
|
+
// Support: Android 4.0 only
|
43
|
+
// Strict mode functions invoked without .call/.apply get global-object context
|
44
|
+
reject.call( undefined, value );
|
45
|
+
}
|
46
|
+
}
|
47
|
+
|
48
|
+
jQuery.extend( {
|
49
|
+
|
50
|
+
Deferred: function( func ) {
|
51
|
+
var tuples = [
|
52
|
+
|
53
|
+
// action, add listener, callbacks,
|
54
|
+
// ... .then handlers, argument index, [final state]
|
55
|
+
[ "notify", "progress", jQuery.Callbacks( "memory" ),
|
56
|
+
jQuery.Callbacks( "memory" ), 2 ],
|
57
|
+
[ "resolve", "done", jQuery.Callbacks( "once memory" ),
|
58
|
+
jQuery.Callbacks( "once memory" ), 0, "resolved" ],
|
59
|
+
[ "reject", "fail", jQuery.Callbacks( "once memory" ),
|
60
|
+
jQuery.Callbacks( "once memory" ), 1, "rejected" ]
|
61
|
+
],
|
62
|
+
state = "pending",
|
63
|
+
promise = {
|
64
|
+
state: function() {
|
65
|
+
return state;
|
66
|
+
},
|
67
|
+
always: function() {
|
68
|
+
deferred.done( arguments ).fail( arguments );
|
69
|
+
return this;
|
70
|
+
},
|
71
|
+
"catch": function( fn ) {
|
72
|
+
return promise.then( null, fn );
|
73
|
+
},
|
74
|
+
|
75
|
+
// Keep pipe for back-compat
|
76
|
+
pipe: function( /* fnDone, fnFail, fnProgress */ ) {
|
77
|
+
var fns = arguments;
|
78
|
+
|
79
|
+
return jQuery.Deferred( function( newDefer ) {
|
80
|
+
jQuery.each( tuples, function( i, tuple ) {
|
81
|
+
|
82
|
+
// Map tuples (progress, done, fail) to arguments (done, fail, progress)
|
83
|
+
var fn = jQuery.isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];
|
84
|
+
|
85
|
+
// deferred.progress(function() { bind to newDefer or newDefer.notify })
|
86
|
+
// deferred.done(function() { bind to newDefer or newDefer.resolve })
|
87
|
+
// deferred.fail(function() { bind to newDefer or newDefer.reject })
|
88
|
+
deferred[ tuple[ 1 ] ]( function() {
|
89
|
+
var returned = fn && fn.apply( this, arguments );
|
90
|
+
if ( returned && jQuery.isFunction( returned.promise ) ) {
|
91
|
+
returned.promise()
|
92
|
+
.progress( newDefer.notify )
|
93
|
+
.done( newDefer.resolve )
|
94
|
+
.fail( newDefer.reject );
|
95
|
+
} else {
|
96
|
+
newDefer[ tuple[ 0 ] + "With" ](
|
97
|
+
this,
|
98
|
+
fn ? [ returned ] : arguments
|
99
|
+
);
|
100
|
+
}
|
101
|
+
} );
|
102
|
+
} );
|
103
|
+
fns = null;
|
104
|
+
} ).promise();
|
105
|
+
},
|
106
|
+
then: function( onFulfilled, onRejected, onProgress ) {
|
107
|
+
var maxDepth = 0;
|
108
|
+
function resolve( depth, deferred, handler, special ) {
|
109
|
+
return function() {
|
110
|
+
var that = this,
|
111
|
+
args = arguments,
|
112
|
+
mightThrow = function() {
|
113
|
+
var returned, then;
|
114
|
+
|
115
|
+
// Support: Promises/A+ section 2.3.3.3.3
|
116
|
+
// https://promisesaplus.com/#point-59
|
117
|
+
// Ignore double-resolution attempts
|
118
|
+
if ( depth < maxDepth ) {
|
119
|
+
return;
|
120
|
+
}
|
121
|
+
|
122
|
+
returned = handler.apply( that, args );
|
123
|
+
|
124
|
+
// Support: Promises/A+ section 2.3.1
|
125
|
+
// https://promisesaplus.com/#point-48
|
126
|
+
if ( returned === deferred.promise() ) {
|
127
|
+
throw new TypeError( "Thenable self-resolution" );
|
128
|
+
}
|
129
|
+
|
130
|
+
// Support: Promises/A+ sections 2.3.3.1, 3.5
|
131
|
+
// https://promisesaplus.com/#point-54
|
132
|
+
// https://promisesaplus.com/#point-75
|
133
|
+
// Retrieve `then` only once
|
134
|
+
then = returned &&
|
135
|
+
|
136
|
+
// Support: Promises/A+ section 2.3.4
|
137
|
+
// https://promisesaplus.com/#point-64
|
138
|
+
// Only check objects and functions for thenability
|
139
|
+
( typeof returned === "object" ||
|
140
|
+
typeof returned === "function" ) &&
|
141
|
+
returned.then;
|
142
|
+
|
143
|
+
// Handle a returned thenable
|
144
|
+
if ( jQuery.isFunction( then ) ) {
|
145
|
+
|
146
|
+
// Special processors (notify) just wait for resolution
|
147
|
+
if ( special ) {
|
148
|
+
then.call(
|
149
|
+
returned,
|
150
|
+
resolve( maxDepth, deferred, Identity, special ),
|
151
|
+
resolve( maxDepth, deferred, Thrower, special )
|
152
|
+
);
|
153
|
+
|
154
|
+
// Normal processors (resolve) also hook into progress
|
155
|
+
} else {
|
156
|
+
|
157
|
+
// ...and disregard older resolution values
|
158
|
+
maxDepth++;
|
159
|
+
|
160
|
+
then.call(
|
161
|
+
returned,
|
162
|
+
resolve( maxDepth, deferred, Identity, special ),
|
163
|
+
resolve( maxDepth, deferred, Thrower, special ),
|
164
|
+
resolve( maxDepth, deferred, Identity,
|
165
|
+
deferred.notifyWith )
|
166
|
+
);
|
167
|
+
}
|
168
|
+
|
169
|
+
// Handle all other returned values
|
170
|
+
} else {
|
171
|
+
|
172
|
+
// Only substitute handlers pass on context
|
173
|
+
// and multiple values (non-spec behavior)
|
174
|
+
if ( handler !== Identity ) {
|
175
|
+
that = undefined;
|
176
|
+
args = [ returned ];
|
177
|
+
}
|
178
|
+
|
179
|
+
// Process the value(s)
|
180
|
+
// Default process is resolve
|
181
|
+
( special || deferred.resolveWith )( that, args );
|
182
|
+
}
|
183
|
+
},
|
184
|
+
|
185
|
+
// Only normal processors (resolve) catch and reject exceptions
|
186
|
+
process = special ?
|
187
|
+
mightThrow :
|
188
|
+
function() {
|
189
|
+
try {
|
190
|
+
mightThrow();
|
191
|
+
} catch ( e ) {
|
192
|
+
|
193
|
+
if ( jQuery.Deferred.exceptionHook ) {
|
194
|
+
jQuery.Deferred.exceptionHook( e,
|
195
|
+
process.stackTrace );
|
196
|
+
}
|
197
|
+
|
198
|
+
// Support: Promises/A+ section 2.3.3.3.4.1
|
199
|
+
// https://promisesaplus.com/#point-61
|
200
|
+
// Ignore post-resolution exceptions
|
201
|
+
if ( depth + 1 >= maxDepth ) {
|
202
|
+
|
203
|
+
// Only substitute handlers pass on context
|
204
|
+
// and multiple values (non-spec behavior)
|
205
|
+
if ( handler !== Thrower ) {
|
206
|
+
that = undefined;
|
207
|
+
args = [ e ];
|
208
|
+
}
|
209
|
+
|
210
|
+
deferred.rejectWith( that, args );
|
211
|
+
}
|
212
|
+
}
|
213
|
+
};
|
214
|
+
|
215
|
+
// Support: Promises/A+ section 2.3.3.3.1
|
216
|
+
// https://promisesaplus.com/#point-57
|
217
|
+
// Re-resolve promises immediately to dodge false rejection from
|
218
|
+
// subsequent errors
|
219
|
+
if ( depth ) {
|
220
|
+
process();
|
221
|
+
} else {
|
222
|
+
|
223
|
+
// Call an optional hook to record the stack, in case of exception
|
224
|
+
// since it's otherwise lost when execution goes async
|
225
|
+
if ( jQuery.Deferred.getStackHook ) {
|
226
|
+
process.stackTrace = jQuery.Deferred.getStackHook();
|
227
|
+
}
|
228
|
+
window.setTimeout( process );
|
229
|
+
}
|
230
|
+
};
|
231
|
+
}
|
232
|
+
|
233
|
+
return jQuery.Deferred( function( newDefer ) {
|
234
|
+
|
235
|
+
// progress_handlers.add( ... )
|
236
|
+
tuples[ 0 ][ 3 ].add(
|
237
|
+
resolve(
|
238
|
+
0,
|
239
|
+
newDefer,
|
240
|
+
jQuery.isFunction( onProgress ) ?
|
241
|
+
onProgress :
|
242
|
+
Identity,
|
243
|
+
newDefer.notifyWith
|
244
|
+
)
|
245
|
+
);
|
246
|
+
|
247
|
+
// fulfilled_handlers.add( ... )
|
248
|
+
tuples[ 1 ][ 3 ].add(
|
249
|
+
resolve(
|
250
|
+
0,
|
251
|
+
newDefer,
|
252
|
+
jQuery.isFunction( onFulfilled ) ?
|
253
|
+
onFulfilled :
|
254
|
+
Identity
|
255
|
+
)
|
256
|
+
);
|
257
|
+
|
258
|
+
// rejected_handlers.add( ... )
|
259
|
+
tuples[ 2 ][ 3 ].add(
|
260
|
+
resolve(
|
261
|
+
0,
|
262
|
+
newDefer,
|
263
|
+
jQuery.isFunction( onRejected ) ?
|
264
|
+
onRejected :
|
265
|
+
Thrower
|
266
|
+
)
|
267
|
+
);
|
268
|
+
} ).promise();
|
269
|
+
},
|
270
|
+
|
271
|
+
// Get a promise for this deferred
|
272
|
+
// If obj is provided, the promise aspect is added to the object
|
273
|
+
promise: function( obj ) {
|
274
|
+
return obj != null ? jQuery.extend( obj, promise ) : promise;
|
275
|
+
}
|
276
|
+
},
|
277
|
+
deferred = {};
|
278
|
+
|
279
|
+
// Add list-specific methods
|
280
|
+
jQuery.each( tuples, function( i, tuple ) {
|
281
|
+
var list = tuple[ 2 ],
|
282
|
+
stateString = tuple[ 5 ];
|
283
|
+
|
284
|
+
// promise.progress = list.add
|
285
|
+
// promise.done = list.add
|
286
|
+
// promise.fail = list.add
|
287
|
+
promise[ tuple[ 1 ] ] = list.add;
|
288
|
+
|
289
|
+
// Handle state
|
290
|
+
if ( stateString ) {
|
291
|
+
list.add(
|
292
|
+
function() {
|
293
|
+
|
294
|
+
// state = "resolved" (i.e., fulfilled)
|
295
|
+
// state = "rejected"
|
296
|
+
state = stateString;
|
297
|
+
},
|
298
|
+
|
299
|
+
// rejected_callbacks.disable
|
300
|
+
// fulfilled_callbacks.disable
|
301
|
+
tuples[ 3 - i ][ 2 ].disable,
|
302
|
+
|
303
|
+
// progress_callbacks.lock
|
304
|
+
tuples[ 0 ][ 2 ].lock
|
305
|
+
);
|
306
|
+
}
|
307
|
+
|
308
|
+
// progress_handlers.fire
|
309
|
+
// fulfilled_handlers.fire
|
310
|
+
// rejected_handlers.fire
|
311
|
+
list.add( tuple[ 3 ].fire );
|
312
|
+
|
313
|
+
// deferred.notify = function() { deferred.notifyWith(...) }
|
314
|
+
// deferred.resolve = function() { deferred.resolveWith(...) }
|
315
|
+
// deferred.reject = function() { deferred.rejectWith(...) }
|
316
|
+
deferred[ tuple[ 0 ] ] = function() {
|
317
|
+
deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments );
|
318
|
+
return this;
|
319
|
+
};
|
320
|
+
|
321
|
+
// deferred.notifyWith = list.fireWith
|
322
|
+
// deferred.resolveWith = list.fireWith
|
323
|
+
// deferred.rejectWith = list.fireWith
|
324
|
+
deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
|
325
|
+
} );
|
326
|
+
|
327
|
+
// Make the deferred a promise
|
328
|
+
promise.promise( deferred );
|
329
|
+
|
330
|
+
// Call given func if any
|
331
|
+
if ( func ) {
|
332
|
+
func.call( deferred, deferred );
|
333
|
+
}
|
334
|
+
|
335
|
+
// All done!
|
336
|
+
return deferred;
|
337
|
+
},
|
338
|
+
|
339
|
+
// Deferred helper
|
340
|
+
when: function( singleValue ) {
|
341
|
+
var
|
342
|
+
|
343
|
+
// count of uncompleted subordinates
|
344
|
+
remaining = arguments.length,
|
345
|
+
|
346
|
+
// count of unprocessed arguments
|
347
|
+
i = remaining,
|
348
|
+
|
349
|
+
// subordinate fulfillment data
|
350
|
+
resolveContexts = Array( i ),
|
351
|
+
resolveValues = slice.call( arguments ),
|
352
|
+
|
353
|
+
// the master Deferred
|
354
|
+
master = jQuery.Deferred(),
|
355
|
+
|
356
|
+
// subordinate callback factory
|
357
|
+
updateFunc = function( i ) {
|
358
|
+
return function( value ) {
|
359
|
+
resolveContexts[ i ] = this;
|
360
|
+
resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
|
361
|
+
if ( !( --remaining ) ) {
|
362
|
+
master.resolveWith( resolveContexts, resolveValues );
|
363
|
+
}
|
364
|
+
};
|
365
|
+
};
|
366
|
+
|
367
|
+
// Single- and empty arguments are adopted like Promise.resolve
|
368
|
+
if ( remaining <= 1 ) {
|
369
|
+
adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject );
|
370
|
+
|
371
|
+
// Use .then() to unwrap secondary thenables (cf. gh-3000)
|
372
|
+
if ( master.state() === "pending" ||
|
373
|
+
jQuery.isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {
|
374
|
+
|
375
|
+
return master.then();
|
376
|
+
}
|
377
|
+
}
|
378
|
+
|
379
|
+
// Multiple arguments are aggregated like Promise.all array elements
|
380
|
+
while ( i-- ) {
|
381
|
+
adoptValue( resolveValues[ i ], updateFunc( i ), master.reject );
|
382
|
+
}
|
383
|
+
|
384
|
+
return master.promise();
|
385
|
+
}
|
386
|
+
} );
|
387
|
+
|
388
|
+
return jQuery;
|
389
|
+
} );
|