adoption to design of sp-magic
This commit is contained in:
parent
bc6fa550f9
commit
f65d081896
143 changed files with 13685 additions and 2590 deletions
|
@ -3,6 +3,7 @@
|
|||
"dependencies": {
|
||||
"foundation-sites": "*",
|
||||
"jquery": "*",
|
||||
"components-font-awesome": "*"
|
||||
"components-font-awesome": "*",
|
||||
"flip": "*"
|
||||
}
|
||||
}
|
25
bower_components/flip/.bower.json
vendored
Normal file
25
bower_components/flip/.bower.json
vendored
Normal file
|
@ -0,0 +1,25 @@
|
|||
{
|
||||
"name": "flip",
|
||||
"version": "1.1.2",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"jquery": "~2.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"jquery": "~2.0"
|
||||
},
|
||||
"main": [
|
||||
"dist/jquery.flip.js"
|
||||
],
|
||||
"ignore": [],
|
||||
"homepage": "https://github.com/nnattawat/flip",
|
||||
"_release": "1.1.2",
|
||||
"_resolution": {
|
||||
"type": "version",
|
||||
"tag": "v1.1.2",
|
||||
"commit": "e5155d6e29b349205216846822eac8fe9b6426d0"
|
||||
},
|
||||
"_source": "https://github.com/nnattawat/flip.git",
|
||||
"_target": "*",
|
||||
"_originalSource": "flip"
|
||||
}
|
3
bower_components/flip/.bowerrc
vendored
Normal file
3
bower_components/flip/.bowerrc
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"directory": "bower_components"
|
||||
}
|
4
bower_components/flip/.gitignore
vendored
Normal file
4
bower_components/flip/.gitignore
vendored
Normal file
|
@ -0,0 +1,4 @@
|
|||
/node_modules/
|
||||
/bower_components/
|
||||
npm-debug.log
|
||||
*.swp
|
25
bower_components/flip/.jshintrc
vendored
Normal file
25
bower_components/flip/.jshintrc
vendored
Normal file
|
@ -0,0 +1,25 @@
|
|||
{
|
||||
"boss": true,
|
||||
"browser": true,
|
||||
"curly": true,
|
||||
"devel": true,
|
||||
"eqeqeq": true,
|
||||
"eqnull": true,
|
||||
"esversion": 5,
|
||||
"expr": true,
|
||||
"immed": true,
|
||||
"newcap": false,
|
||||
"noarg": true,
|
||||
"onevar": true,
|
||||
"quotmark": false,
|
||||
"shadow": true,
|
||||
"trailing": true,
|
||||
"undef": true,
|
||||
"unused": true,
|
||||
"freeze": true,
|
||||
"maxstatements": 30,
|
||||
|
||||
"globals": {
|
||||
"jQuery": false
|
||||
}
|
||||
}
|
8
bower_components/flip/.travis.yml
vendored
Normal file
8
bower_components/flip/.travis.yml
vendored
Normal file
|
@ -0,0 +1,8 @@
|
|||
language: node_js
|
||||
node_js:
|
||||
- '0.10'
|
||||
before_install:
|
||||
- npm install -g grunt-cli bower
|
||||
install:
|
||||
- npm install
|
||||
- bower install
|
15
bower_components/flip/CONTRIBUTING.md
vendored
Normal file
15
bower_components/flip/CONTRIBUTING.md
vendored
Normal file
|
@ -0,0 +1,15 @@
|
|||
# Issue and Pull Request Guidlines
|
||||
|
||||
##
|
||||
|
||||
##### Be clear
|
||||
* Just because you have an understanding of what you would like to address, doesnt mean its obvious. Please be clear and consise.
|
||||
|
||||
##### Examples are your friend
|
||||
* Probably the best way for us to get a handle on what's going on is you providing us with a short example using something like a [JSFiddle](http://jsfiddle.net/).
|
||||
|
||||
##### Stick around
|
||||
* If you're interested in getting your changes in and/or issue resolved, it's extremely likely you're going to have to have some discussion about it before that happens. So don't just drop something on us and leave and expect that something will come of it.
|
||||
|
||||
##### Discussion before code
|
||||
* If you don't want to waste your time writing code that might not be used, it's probably best to make an issue and discuss it with us first before you start writing.
|
61
bower_components/flip/Gruntfile.js
vendored
Normal file
61
bower_components/flip/Gruntfile.js
vendored
Normal file
|
@ -0,0 +1,61 @@
|
|||
'use strict';
|
||||
|
||||
module.exports = function (grunt) {
|
||||
// Load all grunt tasks
|
||||
require('load-grunt-tasks')(grunt);
|
||||
// Show elapsed time at the end
|
||||
require('time-grunt')(grunt);
|
||||
|
||||
// Project configuration.
|
||||
grunt.initConfig({
|
||||
// Metadata.
|
||||
pkg: grunt.file.readJSON('package.json'),
|
||||
banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - ' +
|
||||
'<%= grunt.template.today("yyyy-mm-dd") %>\n' +
|
||||
'<%= pkg.homepage ? "* " + pkg.homepage + "\\n" : "" %>' +
|
||||
'* Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>;' +
|
||||
' Licensed MIT */\n',
|
||||
// Task configuration.
|
||||
clean: {
|
||||
files: ['dist']
|
||||
},
|
||||
jshint: {
|
||||
options : {
|
||||
jshintrc : '.jshintrc'
|
||||
},
|
||||
all: [ 'src/<%= pkg.name %>.js' ]
|
||||
},
|
||||
concat: {
|
||||
options: {
|
||||
banner: '<%= banner %>',
|
||||
stripBanners: true
|
||||
},
|
||||
dist: {
|
||||
src: ['src/<%= pkg.name %>.js'],
|
||||
dest: 'dist/jquery.<%= pkg.name %>.js'
|
||||
}
|
||||
},
|
||||
uglify: {
|
||||
options: {
|
||||
sourceMap: 'dist/jquery.<%= pkg.name %>.min.js.map',
|
||||
sourceMappingURL : 'jquery.<%= pkg.name %>.min.js.map',
|
||||
banner: '<%= banner %>'
|
||||
},
|
||||
dist: {
|
||||
src: '<%= concat.dist.src %>',
|
||||
dest: 'dist/jquery.<%= pkg.name %>.min.js'
|
||||
}
|
||||
},
|
||||
connect: {
|
||||
server: {
|
||||
options: {
|
||||
hostname: '*',
|
||||
port: 9000
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Default task.
|
||||
grunt.registerTask('default', ['connect', 'clean', 'jshint', 'concat', 'uglify']);
|
||||
};
|
21
bower_components/flip/LICENSE
vendored
Normal file
21
bower_components/flip/LICENSE
vendored
Normal file
|
@ -0,0 +1,21 @@
|
|||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2014 Nattawat Nonsung (author) and Carlos Fagiani Junior
|
||||
2015 Jemar Jones, Nattawat Nonsung, Razvan Popa and Stijn de Witt
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
65
bower_components/flip/README.md
vendored
Normal file
65
bower_components/flip/README.md
vendored
Normal file
|
@ -0,0 +1,65 @@
|
|||
[![Build Status](https://travis-ci.org/nnattawat/flip.svg?branch=master)](https://travis-ci.org/nnattawat/flip)
|
||||
# jQuery Flip
|
||||
|
||||
**A lightweight jQuery plugin to create 3d flip animation.**
|
||||
See the [project page](http://nnattawat.github.io/flip/)
|
||||
|
||||
## Getting Started
|
||||
|
||||
### CDN
|
||||
https://cdn.rawgit.com/nnattawat/flip/master/dist/jquery.flip.min.js
|
||||
|
||||
### Download
|
||||
* [jquery.flip.js][max] (development version, commented ~9kB)
|
||||
* [jquery.flip.min.js][min] (production version, minified ~4kB, gzipped ~2kB)
|
||||
* [jquery.flip.min.js.map][map] (source map, ~5kB)
|
||||
[max]: https://cdn.rawgit.com/nnattawat/flip/master/dist/jquery.flip.js
|
||||
[min]: https://cdn.rawgit.com/nnattawat/flip/master/dist/jquery.flip.min.js
|
||||
[map]: https://cdn.rawgit.com/nnattawat/flip/master/dist/jquery.flip.min.js.map
|
||||
|
||||
### Bower
|
||||
<pre>bower install flip</pre>
|
||||
|
||||
### Usage
|
||||
In your web page:
|
||||
|
||||
```html
|
||||
|
||||
<div id="card">
|
||||
<div class="front">
|
||||
Front content
|
||||
</div>
|
||||
<div class="back">
|
||||
Back content
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="jquery.js"></script>
|
||||
<script src="jquery.flip.js"></script>
|
||||
<script>
|
||||
$(function($) {
|
||||
$("#card").flip();
|
||||
});
|
||||
</script>
|
||||
```
|
||||
|
||||
## Documentation and Example
|
||||
|
||||
Please refer to [the project website](http://nnattawat.github.io/flip/)
|
||||
|
||||
## Development
|
||||
Ensure that you have the latest [Node.js](http://nodejs.org/) and [npm](http://npmjs.org/) installed.
|
||||
|
||||
Test that Grunt's CLI and Bower are installed by running `grunt --version` and `bower --version`. If the commands aren't found, run `npm install -g grunt-cli bower`. For more information about installing the tools, see the [getting started with Grunt guide](http://gruntjs.com/getting-started) or [bower.io](http://bower.io/) respectively.
|
||||
|
||||
To run the demo locally, do the following.
|
||||
<pre>
|
||||
npm install
|
||||
bower install
|
||||
</pre>
|
||||
|
||||
And run grunt command to create files in /dist folder.
|
||||
<pre>grunt</pre>
|
||||
|
||||
## What's new
|
||||
Please refer to [the release page](https://github.com/nnattawat/flip/releases)
|
15
bower_components/flip/bower.json
vendored
Normal file
15
bower_components/flip/bower.json
vendored
Normal file
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"name": "flip",
|
||||
"version": "1.1.2",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"jquery": "~2.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"jquery": "~2.0"
|
||||
},
|
||||
"main": [
|
||||
"dist/jquery.flip.js"
|
||||
],
|
||||
"ignore": []
|
||||
}
|
56
bower_components/flip/demo/flip-with-swipebox/index.html
vendored
Normal file
56
bower_components/flip/demo/flip-with-swipebox/index.html
vendored
Normal file
|
@ -0,0 +1,56 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/jquery.swipebox/1.3.0.2/css/swipebox.min.css">
|
||||
<link rel="stylesheet" href="style.css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="card">
|
||||
<div class="front">
|
||||
<h2>Flip with Swipebox</h2>
|
||||
<section>
|
||||
<a class="thumb" rel="gallery-1" href="http://swipebox.csag.co/images/image-1.jpg" title="Fog">
|
||||
<img src="http://swipebox.csag.co/images/image-1.jpg" alt="image">
|
||||
</a>
|
||||
<a class="thumb" rel="gallery-1" href="http://swipebox.csag.co/images/image-2.jpg" title="City">
|
||||
<img src="http://swipebox.csag.co/images/image-2.jpg" alt="image">
|
||||
</a>
|
||||
<a class="thumb" rel="gallery-1" href="http://swipebox.csag.co/images/image-3.jpg" title="Street">
|
||||
<img src="http://swipebox.csag.co/images/image-3.jpg" alt="image">
|
||||
</a>
|
||||
<a class="thumb" rel="gallery-1" href="http://swipebox.csag.co/images/image-4.jpg" title="Mustache Guy">
|
||||
<img src="http://swipebox.csag.co/images/image-4.jpg" alt="image">
|
||||
</a>
|
||||
</section>
|
||||
<p>When a <a href="http://brutaldesign.github.io/swipebox/">Swipebox</a> is used on
|
||||
a card animated with Flip, the Swipebox fails, as can be seen in this demo when
|
||||
we use version 1.0.1 of Flip. If we apply the patch the issue is fixed.</p>
|
||||
<p>Click on the thumbnails. A Swipebox <i>should</i> open.</p>
|
||||
|
||||
</div>
|
||||
<div class="back">
|
||||
<h2>Flip with Swipebox</h2>
|
||||
<p>The problem is caused by Flip disabling the bubbling of click
|
||||
events on any links that are contained inside the element to be flipped,
|
||||
as can be seen in lines 80-82 of the
|
||||
<a href="https://github.com/nnattawat/flip/blob/v1.0.1/src/flip.js">source code</a>.</p>
|
||||
<p>This code was written to prevent the card from flipping when buttons and
|
||||
links on the card are pressed. However, preventing event bubling is
|
||||
<a href="https://css-tricks.com/dangers-stopping-event-propagation/">dangerous</a>.</p>
|
||||
<p>The better solution is to ignore those events that you are not interested in.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery.swipebox/1.3.0.2/js/jquery.swipebox.min.js"></script>
|
||||
<script src="../../dist/jquery.flip.min.js"></script>
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
$('.card a').swipebox();
|
||||
$('.card').flip();
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
36
bower_components/flip/demo/flip-with-swipebox/style.css
vendored
Normal file
36
bower_components/flip/demo/flip-with-swipebox/style.css
vendored
Normal file
|
@ -0,0 +1,36 @@
|
|||
html, body, div, ul {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
html, body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.card {
|
||||
width: 320px;
|
||||
height: 460px;
|
||||
padding: 30px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.card a.thumb {
|
||||
float: left;
|
||||
width: 100px;
|
||||
height: 60px;
|
||||
margin: 0 5px 10px 0;
|
||||
}
|
||||
|
||||
.card a.thumb img {
|
||||
max-width: 100%;
|
||||
max-height: 100%;
|
||||
}
|
||||
|
||||
.front, .back {
|
||||
width: 100%;
|
||||
height: 80%;
|
||||
padding: 15px;
|
||||
background-color: white;
|
||||
border-radius: 5px;
|
||||
box-shadow: 0px 1px 6px rgba(0,0,0, 0.4);
|
||||
}
|
68
bower_components/flip/demo/index.html
vendored
Normal file
68
bower_components/flip/demo/index.html
vendored
Normal file
|
@ -0,0 +1,68 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<script src="../bower_components/jquery/dist/jquery.js"></script>
|
||||
<script src="../src/flip.js"></script>
|
||||
<title>jQuery plugin</title>
|
||||
<style type="text/css">
|
||||
.card {
|
||||
width: 600px;
|
||||
height: 400px;
|
||||
margin: 20px;
|
||||
}
|
||||
.front, .back, .other-front, .other-back {
|
||||
border: 2px gray solid;
|
||||
padding: 10px;
|
||||
}
|
||||
.front, .other-front {
|
||||
background-color: #ccc;
|
||||
}
|
||||
.back, .other-back {
|
||||
background-color: red;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="card-1" class="card">
|
||||
<div class="other-front">
|
||||
Front: Cursus aliquet mus et sociis, placerat adipiscing a placerat magnis integer nisi lacus in, turpis porttitor? Lectus nunc dis in porta, montes lacus. Tortor. Pid sit nisi eu nec aenean.
|
||||
</div>
|
||||
<div class="other-back">
|
||||
<a href="http://google.com">link</a>
|
||||
Back: Dolor scelerisque ridiculus! Mus? Augue, montes, montes proin rhoncus vel a parturient dapibus eros? Penatibus nascetur. In turpis nisi elementum nascetur habitasse augue egestas, in ac rhoncus odio porttitor turpis.
|
||||
Back: Dolor scelerisque ridiculus! Mus? Augue, montes, montes proin rhoncus vel a parturient dapibus eros? Penatibus nascetur. In turpis nisi elementum nascetur habitasse augue egestas, in ac rhoncus odio porttitor turpis.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="card-2" class="card">
|
||||
<div class="front">
|
||||
Front: Cursus aliquet mus et sociis, placerat adipiscing a placerat magnis integer nisi lacus in, turpis porttitor? Lectus nunc dis in porta, montes lacus. Tortor. Pid sit nisi eu nec aenean.
|
||||
</div>
|
||||
<div class="back">
|
||||
<a href="http://google.com">link</a>
|
||||
Back: Dolor scelerisque ridiculus! Mus? Augue, montes, montes proin rhoncus vel a parturient dapibus eros? Penatibus nascetur. In turpis nisi elementum nascetur habitasse augue egestas, in ac rhoncus odio porttitor turpis.
|
||||
<button>button</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
$(function(){
|
||||
$("#card-1").flip({
|
||||
axis: "y", // y or x
|
||||
reverse: false, // true and false
|
||||
trigger: "hover", // click or hover
|
||||
speed: '250',
|
||||
front: $('.other-front'),
|
||||
back: $('.other-back'),
|
||||
autoSize: false
|
||||
});
|
||||
$("#card-2").flip({
|
||||
axis: "x",
|
||||
reverse: true,
|
||||
trigger: "click"
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
157
bower_components/flip/demo/index2.html
vendored
Normal file
157
bower_components/flip/demo/index2.html
vendored
Normal file
|
@ -0,0 +1,157 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<!--script src="../jquery-1.10.2.min.js"></script-->
|
||||
<script src="../bower_components/jquery/dist/jquery.js"></script>
|
||||
<script src="../src/flip.js"></script>
|
||||
<title>jQuery plugin</title>
|
||||
<style type="text/css">
|
||||
body {
|
||||
margin: 0 100px;
|
||||
}
|
||||
.card {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
margin: 20px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.front, .back {
|
||||
border: 2px gray solid;
|
||||
padding: 10px;
|
||||
}
|
||||
.front {
|
||||
background-color: #ccc;
|
||||
}
|
||||
.back {
|
||||
background-color: red;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="card-1" class="card">
|
||||
<div class="front">
|
||||
Front
|
||||
</div>
|
||||
<div class="back">
|
||||
Back
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="card-2" class="card">
|
||||
<div class="front">
|
||||
Front
|
||||
</div>
|
||||
<div class="back">
|
||||
Back
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="front">
|
||||
Front
|
||||
</div>
|
||||
<div class="back">
|
||||
Back
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="front">
|
||||
Front
|
||||
</div>
|
||||
<div class="back">
|
||||
Back
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="front">
|
||||
Front
|
||||
</div>
|
||||
<div class="back">
|
||||
Back
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="front">
|
||||
Front
|
||||
</div>
|
||||
<div class="back">
|
||||
Back
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="front">
|
||||
Front
|
||||
</div>
|
||||
<div class="back">
|
||||
Back
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="front">
|
||||
Front
|
||||
</div>
|
||||
<div class="back">
|
||||
Back
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="front">
|
||||
Front
|
||||
</div>
|
||||
<div class="back">
|
||||
Back
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="front">
|
||||
Front
|
||||
</div>
|
||||
<div class="back">
|
||||
Back
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="front">
|
||||
Front
|
||||
</div>
|
||||
<div class="back">
|
||||
Back
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="front">
|
||||
Front
|
||||
</div>
|
||||
<div class="back">
|
||||
Back
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="front">
|
||||
Front
|
||||
</div>
|
||||
<div class="back">
|
||||
Back
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(function(){
|
||||
$(".card").flip({
|
||||
trigger: "hover"
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
369
bower_components/flip/dist/jquery.flip.js
vendored
Normal file
369
bower_components/flip/dist/jquery.flip.js
vendored
Normal file
|
@ -0,0 +1,369 @@
|
|||
/*! flip - v1.1.2 - 2016-10-20
|
||||
* https://github.com/nnattawat/flip
|
||||
* Copyright (c) 2016 Nattawat Nonsung; Licensed MIT */
|
||||
(function( $ ) {
|
||||
/*
|
||||
* Private attributes and method
|
||||
*/
|
||||
|
||||
// Function from David Walsh: http://davidwalsh.name/css-animation-callback licensed with http://opensource.org/licenses/MIT
|
||||
var whichTransitionEvent = function() {
|
||||
var t, el = document.createElement("fakeelement"),
|
||||
transitions = {
|
||||
"transition" : "transitionend",
|
||||
"OTransition" : "oTransitionEnd",
|
||||
"MozTransition" : "transitionend",
|
||||
"WebkitTransition": "webkitTransitionEnd"
|
||||
};
|
||||
|
||||
for (t in transitions) {
|
||||
if (el.style[t] !== undefined) {
|
||||
return transitions[t];
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/*
|
||||
* Model declaration
|
||||
*/
|
||||
var Flip = function($el, options, callback) {
|
||||
// Define default setting
|
||||
this.setting = {
|
||||
axis: "y",
|
||||
reverse: false,
|
||||
trigger: "click",
|
||||
speed: 500,
|
||||
forceHeight: false,
|
||||
forceWidth: false,
|
||||
autoSize: true,
|
||||
front: '.front',
|
||||
back: '.back'
|
||||
};
|
||||
|
||||
this.setting = $.extend(this.setting, options);
|
||||
|
||||
if (typeof options.axis === 'string' && (options.axis.toLowerCase() === 'x' || options.axis.toLowerCase() === 'y')) {
|
||||
this.setting.axis = options.axis.toLowerCase();
|
||||
}
|
||||
|
||||
if (typeof options.reverse === "boolean") {
|
||||
this.setting.reverse = options.reverse;
|
||||
}
|
||||
|
||||
if (typeof options.trigger === 'string') {
|
||||
this.setting.trigger = options.trigger.toLowerCase();
|
||||
}
|
||||
|
||||
var speed = parseInt(options.speed);
|
||||
if (!isNaN(speed)) {
|
||||
this.setting.speed = speed;
|
||||
}
|
||||
|
||||
if (typeof options.forceHeight === "boolean") {
|
||||
this.setting.forceHeight = options.forceHeight;
|
||||
}
|
||||
|
||||
if (typeof options.forceWidth === "boolean") {
|
||||
this.setting.forceWidth = options.forceWidth;
|
||||
}
|
||||
|
||||
if (typeof options.autoSize === "boolean") {
|
||||
this.setting.autoSize = options.autoSize;
|
||||
}
|
||||
|
||||
if (typeof options.front === 'string' || options.front instanceof $) {
|
||||
this.setting.front = options.front;
|
||||
}
|
||||
|
||||
if (typeof options.back === 'string' || options.back instanceof $) {
|
||||
this.setting.back = options.back;
|
||||
}
|
||||
|
||||
// Other attributes
|
||||
this.element = $el;
|
||||
this.frontElement = this.getFrontElement();
|
||||
this.backElement = this.getBackElement();
|
||||
this.isFlipped = false;
|
||||
|
||||
this.init(callback);
|
||||
};
|
||||
|
||||
/*
|
||||
* Public methods
|
||||
*/
|
||||
$.extend(Flip.prototype, {
|
||||
|
||||
flipDone: function(callback) {
|
||||
var self = this;
|
||||
// Providing a nicely wrapped up callback because transform is essentially async
|
||||
self.element.one(whichTransitionEvent(), function() {
|
||||
self.element.trigger('flip:done');
|
||||
if (typeof callback === 'function') {
|
||||
callback.call(self.element);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
flip: function(callback) {
|
||||
if (this.isFlipped) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.isFlipped = true;
|
||||
|
||||
var rotateAxis = "rotate" + this.setting.axis;
|
||||
this.frontElement.css({
|
||||
transform: rotateAxis + (this.setting.reverse ? "(-180deg)" : "(180deg)"),
|
||||
"z-index": "0"
|
||||
});
|
||||
|
||||
this.backElement.css({
|
||||
transform: rotateAxis + "(0deg)",
|
||||
"z-index": "1"
|
||||
});
|
||||
this.flipDone(callback);
|
||||
},
|
||||
|
||||
unflip: function(callback) {
|
||||
if (!this.isFlipped) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.isFlipped = false;
|
||||
|
||||
var rotateAxis = "rotate" + this.setting.axis;
|
||||
this.frontElement.css({
|
||||
transform: rotateAxis + "(0deg)",
|
||||
"z-index": "1"
|
||||
});
|
||||
|
||||
this.backElement.css({
|
||||
transform: rotateAxis + (this.setting.reverse ? "(180deg)" : "(-180deg)"),
|
||||
"z-index": "0"
|
||||
});
|
||||
this.flipDone(callback);
|
||||
},
|
||||
|
||||
getFrontElement: function() {
|
||||
if (this.setting.front instanceof $) {
|
||||
return this.setting.front;
|
||||
} else {
|
||||
return this.element.find(this.setting.front);
|
||||
}
|
||||
},
|
||||
|
||||
getBackElement: function() {
|
||||
if (this.setting.back instanceof $) {
|
||||
return this.setting.back;
|
||||
} else {
|
||||
return this.element.find(this.setting.back);
|
||||
}
|
||||
},
|
||||
|
||||
init: function(callback) {
|
||||
var self = this;
|
||||
|
||||
var faces = self.frontElement.add(self.backElement);
|
||||
var rotateAxis = "rotate" + self.setting.axis;
|
||||
var perspective = self.element["outer" + (rotateAxis === "rotatex" ? "Height" : "Width")]() * 2;
|
||||
var elementCss = {
|
||||
'perspective': perspective,
|
||||
'position': 'relative'
|
||||
};
|
||||
var backElementCss = {
|
||||
"transform": rotateAxis + "(" + (self.setting.reverse ? "180deg" : "-180deg") + ")",
|
||||
"z-index": "0",
|
||||
"position": "relative"
|
||||
};
|
||||
var faceElementCss = {
|
||||
"backface-visibility": "hidden",
|
||||
"transform-style": "preserve-3d",
|
||||
"position": "absolute",
|
||||
"z-index": "1"
|
||||
};
|
||||
|
||||
if (self.setting.forceHeight) {
|
||||
faces.outerHeight(self.element.height());
|
||||
} else if (self.setting.autoSize) {
|
||||
faceElementCss.height = '100%';
|
||||
}
|
||||
|
||||
if (self.setting.forceWidth) {
|
||||
faces.outerWidth(self.element.width());
|
||||
} else if (self.setting.autoSize) {
|
||||
faceElementCss.width = '100%';
|
||||
}
|
||||
|
||||
// Back face always visible on Chrome #39
|
||||
if ((window.chrome || (window.Intl && Intl.v8BreakIterator)) && 'CSS' in window) {
|
||||
//Blink Engine, add preserve-3d to self.element
|
||||
elementCss["-webkit-transform-style"] = "preserve-3d";
|
||||
}
|
||||
|
||||
|
||||
faces.css(faceElementCss).find('*').css({
|
||||
"backface-visibility": "hidden"
|
||||
});
|
||||
|
||||
self.element.css(elementCss);
|
||||
self.backElement.css(backElementCss);
|
||||
|
||||
// #39
|
||||
// not forcing width/height may cause an initial flip to show up on
|
||||
// page load when we apply the style to reverse the backface...
|
||||
// To prevent self we first apply the basic styles and then give the
|
||||
// browser a moment to apply them. Only afterwards do we add the transition.
|
||||
setTimeout(function() {
|
||||
// By now the browser should have applied the styles, so the transition
|
||||
// will only affect subsequent flips.
|
||||
var speedInSec = self.setting.speed / 1000 || 0.5;
|
||||
faces.css({
|
||||
"transition": "all " + speedInSec + "s ease-out"
|
||||
});
|
||||
|
||||
// This allows flip to be called for setup with only a callback (default settings)
|
||||
if (typeof callback === 'function') {
|
||||
callback.call(self.element);
|
||||
}
|
||||
|
||||
// While this used to work with a setTimeout of zero, at some point that became
|
||||
// unstable and the initial flip returned. The reason for this is unknown but we
|
||||
// will temporarily use a short delay of 20 to mitigate this issue.
|
||||
}, 20);
|
||||
|
||||
self.attachEvents();
|
||||
},
|
||||
|
||||
clickHandler: function(event) {
|
||||
if (!event) { event = window.event; }
|
||||
if (this.element.find($(event.target).closest('button, a, input[type="submit"]')).length) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (this.isFlipped) {
|
||||
this.unflip();
|
||||
} else {
|
||||
this.flip();
|
||||
}
|
||||
},
|
||||
|
||||
hoverHandler: function() {
|
||||
var self = this;
|
||||
self.element.off('mouseleave.flip');
|
||||
|
||||
self.flip();
|
||||
|
||||
setTimeout(function() {
|
||||
self.element.on('mouseleave.flip', $.proxy(self.unflip, self));
|
||||
if (!self.element.is(":hover")) {
|
||||
self.unflip();
|
||||
}
|
||||
}, (self.setting.speed + 150));
|
||||
},
|
||||
|
||||
attachEvents: function() {
|
||||
var self = this;
|
||||
if (self.setting.trigger === "click") {
|
||||
self.element.on($.fn.tap ? "tap.flip" : "click.flip", $.proxy(self.clickHandler, self));
|
||||
} else if (self.setting.trigger === "hover") {
|
||||
self.element.on('mouseenter.flip', $.proxy(self.hoverHandler, self));
|
||||
self.element.on('mouseleave.flip', $.proxy(self.unflip, self));
|
||||
}
|
||||
},
|
||||
|
||||
flipChanged: function(callback) {
|
||||
this.element.trigger('flip:change');
|
||||
if (typeof callback === 'function') {
|
||||
callback.call(this.element);
|
||||
}
|
||||
},
|
||||
|
||||
changeSettings: function(options, callback) {
|
||||
var self = this;
|
||||
var changeNeeded = false;
|
||||
|
||||
if (options.axis !== undefined && self.setting.axis !== options.axis.toLowerCase()) {
|
||||
self.setting.axis = options.axis.toLowerCase();
|
||||
changeNeeded = true;
|
||||
}
|
||||
|
||||
if (options.reverse !== undefined && self.setting.reverse !== options.reverse) {
|
||||
self.setting.reverse = options.reverse;
|
||||
changeNeeded = true;
|
||||
}
|
||||
|
||||
if (changeNeeded) {
|
||||
var faces = self.frontElement.add(self.backElement);
|
||||
var savedTrans = faces.css(["transition-property", "transition-timing-function", "transition-duration", "transition-delay"]);
|
||||
|
||||
faces.css({
|
||||
transition: "none"
|
||||
});
|
||||
|
||||
// This sets up the first flip in the new direction automatically
|
||||
var rotateAxis = "rotate" + self.setting.axis;
|
||||
|
||||
if (self.isFlipped) {
|
||||
self.frontElement.css({
|
||||
transform: rotateAxis + (self.setting.reverse ? "(-180deg)" : "(180deg)"),
|
||||
"z-index": "0"
|
||||
});
|
||||
} else {
|
||||
self.backElement.css({
|
||||
transform: rotateAxis + (self.setting.reverse ? "(180deg)" : "(-180deg)"),
|
||||
"z-index": "0"
|
||||
});
|
||||
}
|
||||
// Providing a nicely wrapped up callback because transform is essentially async
|
||||
setTimeout(function() {
|
||||
faces.css(savedTrans);
|
||||
self.flipChanged(callback);
|
||||
}, 0);
|
||||
} else {
|
||||
// If we didnt have to set the axis we can just call back.
|
||||
self.flipChanged(callback);
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
/*
|
||||
* jQuery collection methods
|
||||
*/
|
||||
$.fn.flip = function (options, callback) {
|
||||
if (typeof options === 'function') {
|
||||
callback = options;
|
||||
}
|
||||
|
||||
if (typeof options === "string" || typeof options === "boolean") {
|
||||
this.each(function() {
|
||||
var flip = $(this).data('flip-model');
|
||||
|
||||
if (options === "toggle") {
|
||||
options = !flip.isFlipped;
|
||||
}
|
||||
|
||||
if (options) {
|
||||
flip.flip(callback);
|
||||
} else {
|
||||
flip.unflip(callback);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
this.each(function() {
|
||||
if ($(this).data('flip-model')) { // The element has been initiated, all we have to do is change applicable settings
|
||||
var flip = $(this).data('flip-model');
|
||||
|
||||
if (options && (options.axis !== undefined || options.reverse !== undefined)) {
|
||||
flip.changeSettings(options, callback);
|
||||
}
|
||||
} else { // Init
|
||||
$(this).data('flip-model', new Flip($(this), (options || {}), callback));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return this;
|
||||
};
|
||||
|
||||
}( jQuery ));
|
6
bower_components/flip/dist/jquery.flip.min.js
vendored
Normal file
6
bower_components/flip/dist/jquery.flip.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
bower_components/flip/dist/jquery.flip.min.js.map
vendored
Normal file
1
bower_components/flip/dist/jquery.flip.min.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
64
bower_components/flip/package.json
vendored
Normal file
64
bower_components/flip/package.json
vendored
Normal file
|
@ -0,0 +1,64 @@
|
|||
{
|
||||
"name": "flip",
|
||||
"version": "1.1.2",
|
||||
"description": "jQuery Plugin - 3d Flip Content",
|
||||
"keywords": [
|
||||
"jquery-plugin"
|
||||
],
|
||||
"main": "dist/jquery.flip.js",
|
||||
"homepage": "https://github.com/nnattawat/flip",
|
||||
"bugs": "https://github.com/nnattawat/flip/issues",
|
||||
"author": {
|
||||
"name": "Nattawat Nonsung",
|
||||
"email": "armmer1@gmail.com",
|
||||
"url": "https://github.com/nnattawat"
|
||||
},
|
||||
"contributors": [
|
||||
{
|
||||
"name": "Carlos Fagiani Junior",
|
||||
"email": "fagianijunior@gmail.com",
|
||||
"url": "https://github.com/fagianijunior"
|
||||
},
|
||||
{
|
||||
"name": "Zlatko Fedor",
|
||||
"email": "zfedor@gmail.com",
|
||||
"url": "https://github.com/seeden"
|
||||
},
|
||||
{
|
||||
"name": "Jemar Jones",
|
||||
"email": "jemarkjones@gmail.com",
|
||||
"url": "http://JKJones.me/"
|
||||
},
|
||||
{
|
||||
"name": "Razvan Popa",
|
||||
"url": "https://github.com/VholtWCP"
|
||||
},
|
||||
{
|
||||
"name": "Stijn de Witt",
|
||||
"email": "StijnDeWitt@hotmail.com",
|
||||
"url": "http://StijnDeWitt.com"
|
||||
}
|
||||
],
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/nnattawat/flip.git"
|
||||
},
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"grunt-contrib-concat": "~0.3.0",
|
||||
"grunt-contrib-uglify": "~0.2.7",
|
||||
"grunt-contrib-watch": "~0.5.3",
|
||||
"grunt-contrib-clean": "~0.5.0",
|
||||
"grunt-contrib-connect": "~0.5.0",
|
||||
"time-grunt": "~0.2.3",
|
||||
"load-grunt-tasks": "~0.2.0",
|
||||
"grunt": "~0.4.2",
|
||||
"grunt-contrib-jshint": "~1.0.0",
|
||||
"grunt-cli": "~0.1.13",
|
||||
"bower": "~1.7.6"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "grunt jshint",
|
||||
"grunt": "grunt"
|
||||
}
|
||||
}
|
366
bower_components/flip/src/flip.js
vendored
Normal file
366
bower_components/flip/src/flip.js
vendored
Normal file
|
@ -0,0 +1,366 @@
|
|||
(function( $ ) {
|
||||
/*
|
||||
* Private attributes and method
|
||||
*/
|
||||
|
||||
// Function from David Walsh: http://davidwalsh.name/css-animation-callback licensed with http://opensource.org/licenses/MIT
|
||||
var whichTransitionEvent = function() {
|
||||
var t, el = document.createElement("fakeelement"),
|
||||
transitions = {
|
||||
"transition" : "transitionend",
|
||||
"OTransition" : "oTransitionEnd",
|
||||
"MozTransition" : "transitionend",
|
||||
"WebkitTransition": "webkitTransitionEnd"
|
||||
};
|
||||
|
||||
for (t in transitions) {
|
||||
if (el.style[t] !== undefined) {
|
||||
return transitions[t];
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/*
|
||||
* Model declaration
|
||||
*/
|
||||
var Flip = function($el, options, callback) {
|
||||
// Define default setting
|
||||
this.setting = {
|
||||
axis: "y",
|
||||
reverse: false,
|
||||
trigger: "click",
|
||||
speed: 500,
|
||||
forceHeight: false,
|
||||
forceWidth: false,
|
||||
autoSize: true,
|
||||
front: '.front',
|
||||
back: '.back'
|
||||
};
|
||||
|
||||
this.setting = $.extend(this.setting, options);
|
||||
|
||||
if (typeof options.axis === 'string' && (options.axis.toLowerCase() === 'x' || options.axis.toLowerCase() === 'y')) {
|
||||
this.setting.axis = options.axis.toLowerCase();
|
||||
}
|
||||
|
||||
if (typeof options.reverse === "boolean") {
|
||||
this.setting.reverse = options.reverse;
|
||||
}
|
||||
|
||||
if (typeof options.trigger === 'string') {
|
||||
this.setting.trigger = options.trigger.toLowerCase();
|
||||
}
|
||||
|
||||
var speed = parseInt(options.speed);
|
||||
if (!isNaN(speed)) {
|
||||
this.setting.speed = speed;
|
||||
}
|
||||
|
||||
if (typeof options.forceHeight === "boolean") {
|
||||
this.setting.forceHeight = options.forceHeight;
|
||||
}
|
||||
|
||||
if (typeof options.forceWidth === "boolean") {
|
||||
this.setting.forceWidth = options.forceWidth;
|
||||
}
|
||||
|
||||
if (typeof options.autoSize === "boolean") {
|
||||
this.setting.autoSize = options.autoSize;
|
||||
}
|
||||
|
||||
if (typeof options.front === 'string' || options.front instanceof $) {
|
||||
this.setting.front = options.front;
|
||||
}
|
||||
|
||||
if (typeof options.back === 'string' || options.back instanceof $) {
|
||||
this.setting.back = options.back;
|
||||
}
|
||||
|
||||
// Other attributes
|
||||
this.element = $el;
|
||||
this.frontElement = this.getFrontElement();
|
||||
this.backElement = this.getBackElement();
|
||||
this.isFlipped = false;
|
||||
|
||||
this.init(callback);
|
||||
};
|
||||
|
||||
/*
|
||||
* Public methods
|
||||
*/
|
||||
$.extend(Flip.prototype, {
|
||||
|
||||
flipDone: function(callback) {
|
||||
var self = this;
|
||||
// Providing a nicely wrapped up callback because transform is essentially async
|
||||
self.element.one(whichTransitionEvent(), function() {
|
||||
self.element.trigger('flip:done');
|
||||
if (typeof callback === 'function') {
|
||||
callback.call(self.element);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
flip: function(callback) {
|
||||
if (this.isFlipped) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.isFlipped = true;
|
||||
|
||||
var rotateAxis = "rotate" + this.setting.axis;
|
||||
this.frontElement.css({
|
||||
transform: rotateAxis + (this.setting.reverse ? "(-180deg)" : "(180deg)"),
|
||||
"z-index": "0"
|
||||
});
|
||||
|
||||
this.backElement.css({
|
||||
transform: rotateAxis + "(0deg)",
|
||||
"z-index": "1"
|
||||
});
|
||||
this.flipDone(callback);
|
||||
},
|
||||
|
||||
unflip: function(callback) {
|
||||
if (!this.isFlipped) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.isFlipped = false;
|
||||
|
||||
var rotateAxis = "rotate" + this.setting.axis;
|
||||
this.frontElement.css({
|
||||
transform: rotateAxis + "(0deg)",
|
||||
"z-index": "1"
|
||||
});
|
||||
|
||||
this.backElement.css({
|
||||
transform: rotateAxis + (this.setting.reverse ? "(180deg)" : "(-180deg)"),
|
||||
"z-index": "0"
|
||||
});
|
||||
this.flipDone(callback);
|
||||
},
|
||||
|
||||
getFrontElement: function() {
|
||||
if (this.setting.front instanceof $) {
|
||||
return this.setting.front;
|
||||
} else {
|
||||
return this.element.find(this.setting.front);
|
||||
}
|
||||
},
|
||||
|
||||
getBackElement: function() {
|
||||
if (this.setting.back instanceof $) {
|
||||
return this.setting.back;
|
||||
} else {
|
||||
return this.element.find(this.setting.back);
|
||||
}
|
||||
},
|
||||
|
||||
init: function(callback) {
|
||||
var self = this;
|
||||
|
||||
var faces = self.frontElement.add(self.backElement);
|
||||
var rotateAxis = "rotate" + self.setting.axis;
|
||||
var perspective = self.element["outer" + (rotateAxis === "rotatex" ? "Height" : "Width")]() * 2;
|
||||
var elementCss = {
|
||||
'perspective': perspective,
|
||||
'position': 'relative'
|
||||
};
|
||||
var backElementCss = {
|
||||
"transform": rotateAxis + "(" + (self.setting.reverse ? "180deg" : "-180deg") + ")",
|
||||
"z-index": "0",
|
||||
"position": "relative"
|
||||
};
|
||||
var faceElementCss = {
|
||||
"backface-visibility": "hidden",
|
||||
"transform-style": "preserve-3d",
|
||||
"position": "absolute",
|
||||
"z-index": "1"
|
||||
};
|
||||
|
||||
if (self.setting.forceHeight) {
|
||||
faces.outerHeight(self.element.height());
|
||||
} else if (self.setting.autoSize) {
|
||||
faceElementCss.height = '100%';
|
||||
}
|
||||
|
||||
if (self.setting.forceWidth) {
|
||||
faces.outerWidth(self.element.width());
|
||||
} else if (self.setting.autoSize) {
|
||||
faceElementCss.width = '100%';
|
||||
}
|
||||
|
||||
// Back face always visible on Chrome #39
|
||||
if ((window.chrome || (window.Intl && Intl.v8BreakIterator)) && 'CSS' in window) {
|
||||
//Blink Engine, add preserve-3d to self.element
|
||||
elementCss["-webkit-transform-style"] = "preserve-3d";
|
||||
}
|
||||
|
||||
|
||||
faces.css(faceElementCss).find('*').css({
|
||||
"backface-visibility": "hidden"
|
||||
});
|
||||
|
||||
self.element.css(elementCss);
|
||||
self.backElement.css(backElementCss);
|
||||
|
||||
// #39
|
||||
// not forcing width/height may cause an initial flip to show up on
|
||||
// page load when we apply the style to reverse the backface...
|
||||
// To prevent self we first apply the basic styles and then give the
|
||||
// browser a moment to apply them. Only afterwards do we add the transition.
|
||||
setTimeout(function() {
|
||||
// By now the browser should have applied the styles, so the transition
|
||||
// will only affect subsequent flips.
|
||||
var speedInSec = self.setting.speed / 1000 || 0.5;
|
||||
faces.css({
|
||||
"transition": "all " + speedInSec + "s ease-out"
|
||||
});
|
||||
|
||||
// This allows flip to be called for setup with only a callback (default settings)
|
||||
if (typeof callback === 'function') {
|
||||
callback.call(self.element);
|
||||
}
|
||||
|
||||
// While this used to work with a setTimeout of zero, at some point that became
|
||||
// unstable and the initial flip returned. The reason for this is unknown but we
|
||||
// will temporarily use a short delay of 20 to mitigate this issue.
|
||||
}, 20);
|
||||
|
||||
self.attachEvents();
|
||||
},
|
||||
|
||||
clickHandler: function(event) {
|
||||
if (!event) { event = window.event; }
|
||||
if (this.element.find($(event.target).closest('button, a, input[type="submit"]')).length) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (this.isFlipped) {
|
||||
this.unflip();
|
||||
} else {
|
||||
this.flip();
|
||||
}
|
||||
},
|
||||
|
||||
hoverHandler: function() {
|
||||
var self = this;
|
||||
self.element.off('mouseleave.flip');
|
||||
|
||||
self.flip();
|
||||
|
||||
setTimeout(function() {
|
||||
self.element.on('mouseleave.flip', $.proxy(self.unflip, self));
|
||||
if (!self.element.is(":hover")) {
|
||||
self.unflip();
|
||||
}
|
||||
}, (self.setting.speed + 150));
|
||||
},
|
||||
|
||||
attachEvents: function() {
|
||||
var self = this;
|
||||
if (self.setting.trigger === "click") {
|
||||
self.element.on($.fn.tap ? "tap.flip" : "click.flip", $.proxy(self.clickHandler, self));
|
||||
} else if (self.setting.trigger === "hover") {
|
||||
self.element.on('mouseenter.flip', $.proxy(self.hoverHandler, self));
|
||||
self.element.on('mouseleave.flip', $.proxy(self.unflip, self));
|
||||
}
|
||||
},
|
||||
|
||||
flipChanged: function(callback) {
|
||||
this.element.trigger('flip:change');
|
||||
if (typeof callback === 'function') {
|
||||
callback.call(this.element);
|
||||
}
|
||||
},
|
||||
|
||||
changeSettings: function(options, callback) {
|
||||
var self = this;
|
||||
var changeNeeded = false;
|
||||
|
||||
if (options.axis !== undefined && self.setting.axis !== options.axis.toLowerCase()) {
|
||||
self.setting.axis = options.axis.toLowerCase();
|
||||
changeNeeded = true;
|
||||
}
|
||||
|
||||
if (options.reverse !== undefined && self.setting.reverse !== options.reverse) {
|
||||
self.setting.reverse = options.reverse;
|
||||
changeNeeded = true;
|
||||
}
|
||||
|
||||
if (changeNeeded) {
|
||||
var faces = self.frontElement.add(self.backElement);
|
||||
var savedTrans = faces.css(["transition-property", "transition-timing-function", "transition-duration", "transition-delay"]);
|
||||
|
||||
faces.css({
|
||||
transition: "none"
|
||||
});
|
||||
|
||||
// This sets up the first flip in the new direction automatically
|
||||
var rotateAxis = "rotate" + self.setting.axis;
|
||||
|
||||
if (self.isFlipped) {
|
||||
self.frontElement.css({
|
||||
transform: rotateAxis + (self.setting.reverse ? "(-180deg)" : "(180deg)"),
|
||||
"z-index": "0"
|
||||
});
|
||||
} else {
|
||||
self.backElement.css({
|
||||
transform: rotateAxis + (self.setting.reverse ? "(180deg)" : "(-180deg)"),
|
||||
"z-index": "0"
|
||||
});
|
||||
}
|
||||
// Providing a nicely wrapped up callback because transform is essentially async
|
||||
setTimeout(function() {
|
||||
faces.css(savedTrans);
|
||||
self.flipChanged(callback);
|
||||
}, 0);
|
||||
} else {
|
||||
// If we didnt have to set the axis we can just call back.
|
||||
self.flipChanged(callback);
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
/*
|
||||
* jQuery collection methods
|
||||
*/
|
||||
$.fn.flip = function (options, callback) {
|
||||
if (typeof options === 'function') {
|
||||
callback = options;
|
||||
}
|
||||
|
||||
if (typeof options === "string" || typeof options === "boolean") {
|
||||
this.each(function() {
|
||||
var flip = $(this).data('flip-model');
|
||||
|
||||
if (options === "toggle") {
|
||||
options = !flip.isFlipped;
|
||||
}
|
||||
|
||||
if (options) {
|
||||
flip.flip(callback);
|
||||
} else {
|
||||
flip.unflip(callback);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
this.each(function() {
|
||||
if ($(this).data('flip-model')) { // The element has been initiated, all we have to do is change applicable settings
|
||||
var flip = $(this).data('flip-model');
|
||||
|
||||
if (options && (options.axis !== undefined || options.reverse !== undefined)) {
|
||||
flip.changeSettings(options, callback);
|
||||
}
|
||||
} else { // Init
|
||||
$(this).data('flip-model', new Flip($(this), (options || {}), callback));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return this;
|
||||
};
|
||||
|
||||
}( jQuery ));
|
10
bower_components/jquery/.bower.json
vendored
10
bower_components/jquery/.bower.json
vendored
|
@ -12,14 +12,14 @@
|
|||
"library"
|
||||
],
|
||||
"homepage": "https://github.com/jquery/jquery-dist",
|
||||
"version": "2.2.4",
|
||||
"_release": "2.2.4",
|
||||
"version": "3.1.1",
|
||||
"_release": "3.1.1",
|
||||
"_resolution": {
|
||||
"type": "version",
|
||||
"tag": "2.2.4",
|
||||
"commit": "c0185ab7c75aab88762c5aae780b9d83b80eda72"
|
||||
"tag": "3.1.1",
|
||||
"commit": "1b30f3ad466ebf2714d47eda34dbd7fdf6849fe3"
|
||||
},
|
||||
"_source": "https://github.com/jquery/jquery-dist.git",
|
||||
"_target": "~2.2.0",
|
||||
"_target": "*",
|
||||
"_originalSource": "jquery"
|
||||
}
|
21
bower_components/jquery/AUTHORS.txt
vendored
21
bower_components/jquery/AUTHORS.txt
vendored
|
@ -77,7 +77,7 @@ Jared Grippe <jared@deadlyicon.com>
|
|||
Sylvester Keil <sylvester@keil.or.at>
|
||||
Brandon Sterne <bsterne@mozilla.com>
|
||||
Mathias Bynens <mathias@qiwi.be>
|
||||
Timmy Willison <timmywillisn@gmail.com>
|
||||
Timmy Willison <4timmywil@gmail.com>
|
||||
Corey Frang <gnarf37@gmail.com>
|
||||
Digitalxero <digitalxero>
|
||||
Anton Kovalyov <anton@kovalyov.net>
|
||||
|
@ -272,7 +272,24 @@ Christian Grete <webmaster@christiangrete.com>
|
|||
Liza Ramo <liza.h.ramo@gmail.com>
|
||||
Julian Alexander Murillo <julian.alexander.murillo@gmail.com>
|
||||
Joelle Fleurantin <joasqueeniebee@gmail.com>
|
||||
Jae Sung Park <alberto.park@gmail.com>
|
||||
Jun Sun <klsforever@gmail.com>
|
||||
Josh Soref <apache@soref.com>
|
||||
Henry Wong <henryw4k@gmail.com>
|
||||
Jon Dufresne <jon.dufresne@gmail.com>
|
||||
Martijn W. van der Lee <martijn@vanderlee.com>
|
||||
Devin Wilson <dwilson6.github@gmail.com>
|
||||
Todor Prikumov <tono_pr@abv.bg>
|
||||
Steve Mao <maochenyan@gmail.com>
|
||||
Zack Hall <zackhall@outlook.com>
|
||||
Bernhard M. Wiedemann <jquerybmw@lsmod.de>
|
||||
Todor Prikumov <tono_pr@abv.bg>
|
||||
Jha Naman <createnaman@gmail.com>
|
||||
William Robinet <william.robinet@conostix.com>
|
||||
Alexander Lisianoi <all3fox@gmail.com>
|
||||
Vitaliy Terziev <vitaliyterziev@gmail.com>
|
||||
Joe Trumbull <trumbull.j@gmail.com>
|
||||
Alexander K <xpyro@ya.ru>
|
||||
Damian Senn <jquery@topaxi.codes>
|
||||
Ralin Chimev <ralin.chimev@gmail.com>
|
||||
Felipe Sateler <fsateler@gmail.com>
|
||||
Christophe Tafani-Dereeper <christophetd@hotmail.fr>
|
||||
|
|
482
bower_components/jquery/dist/core.js
vendored
Normal file
482
bower_components/jquery/dist/core.js
vendored
Normal file
|
@ -0,0 +1,482 @@
|
|||
/* global Symbol */
|
||||
// Defining this global in .eslintrc.json would create a danger of using the global
|
||||
// unguarded in another place, it seems safer to define global only for this module
|
||||
|
||||
define( [
|
||||
"./var/arr",
|
||||
"./var/document",
|
||||
"./var/getProto",
|
||||
"./var/slice",
|
||||
"./var/concat",
|
||||
"./var/push",
|
||||
"./var/indexOf",
|
||||
"./var/class2type",
|
||||
"./var/toString",
|
||||
"./var/hasOwn",
|
||||
"./var/fnToString",
|
||||
"./var/ObjectFunctionString",
|
||||
"./var/support",
|
||||
"./core/DOMEval"
|
||||
], function( arr, document, getProto, slice, concat, push, indexOf,
|
||||
class2type, toString, hasOwn, fnToString, ObjectFunctionString,
|
||||
support, DOMEval ) {
|
||||
|
||||
"use strict";
|
||||
|
||||
var
|
||||
version = "3.1.1",
|
||||
|
||||
// Define a local copy of jQuery
|
||||
jQuery = function( selector, context ) {
|
||||
|
||||
// The jQuery object is actually just the init constructor 'enhanced'
|
||||
// Need init if jQuery is called (just allow error to be thrown if not included)
|
||||
return new jQuery.fn.init( selector, context );
|
||||
},
|
||||
|
||||
// Support: Android <=4.0 only
|
||||
// Make sure we trim BOM and NBSP
|
||||
rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
|
||||
|
||||
// Matches dashed string for camelizing
|
||||
rmsPrefix = /^-ms-/,
|
||||
rdashAlpha = /-([a-z])/g,
|
||||
|
||||
// Used by jQuery.camelCase as callback to replace()
|
||||
fcamelCase = function( all, letter ) {
|
||||
return letter.toUpperCase();
|
||||
};
|
||||
|
||||
jQuery.fn = jQuery.prototype = {
|
||||
|
||||
// The current version of jQuery being used
|
||||
jquery: version,
|
||||
|
||||
constructor: jQuery,
|
||||
|
||||
// The default length of a jQuery object is 0
|
||||
length: 0,
|
||||
|
||||
toArray: function() {
|
||||
return slice.call( this );
|
||||
},
|
||||
|
||||
// Get the Nth element in the matched element set OR
|
||||
// Get the whole matched element set as a clean array
|
||||
get: function( num ) {
|
||||
|
||||
// Return all the elements in a clean array
|
||||
if ( num == null ) {
|
||||
return slice.call( this );
|
||||
}
|
||||
|
||||
// Return just the one element from the set
|
||||
return num < 0 ? this[ num + this.length ] : this[ num ];
|
||||
},
|
||||
|
||||
// Take an array of elements and push it onto the stack
|
||||
// (returning the new matched element set)
|
||||
pushStack: function( elems ) {
|
||||
|
||||
// Build a new jQuery matched element set
|
||||
var ret = jQuery.merge( this.constructor(), elems );
|
||||
|
||||
// Add the old object onto the stack (as a reference)
|
||||
ret.prevObject = this;
|
||||
|
||||
// Return the newly-formed element set
|
||||
return ret;
|
||||
},
|
||||
|
||||
// Execute a callback for every element in the matched set.
|
||||
each: function( callback ) {
|
||||
return jQuery.each( this, callback );
|
||||
},
|
||||
|
||||
map: function( callback ) {
|
||||
return this.pushStack( jQuery.map( this, function( elem, i ) {
|
||||
return callback.call( elem, i, elem );
|
||||
} ) );
|
||||
},
|
||||
|
||||
slice: function() {
|
||||
return this.pushStack( slice.apply( this, arguments ) );
|
||||
},
|
||||
|
||||
first: function() {
|
||||
return this.eq( 0 );
|
||||
},
|
||||
|
||||
last: function() {
|
||||
return this.eq( -1 );
|
||||
},
|
||||
|
||||
eq: function( i ) {
|
||||
var len = this.length,
|
||||
j = +i + ( i < 0 ? len : 0 );
|
||||
return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
|
||||
},
|
||||
|
||||
end: function() {
|
||||
return this.prevObject || this.constructor();
|
||||
},
|
||||
|
||||
// For internal use only.
|
||||
// Behaves like an Array's method, not like a jQuery method.
|
||||
push: push,
|
||||
sort: arr.sort,
|
||||
splice: arr.splice
|
||||
};
|
||||
|
||||
jQuery.extend = jQuery.fn.extend = function() {
|
||||
var options, name, src, copy, copyIsArray, clone,
|
||||
target = arguments[ 0 ] || {},
|
||||
i = 1,
|
||||
length = arguments.length,
|
||||
deep = false;
|
||||
|
||||
// Handle a deep copy situation
|
||||
if ( typeof target === "boolean" ) {
|
||||
deep = target;
|
||||
|
||||
// Skip the boolean and the target
|
||||
target = arguments[ i ] || {};
|
||||
i++;
|
||||
}
|
||||
|
||||
// Handle case when target is a string or something (possible in deep copy)
|
||||
if ( typeof target !== "object" && !jQuery.isFunction( target ) ) {
|
||||
target = {};
|
||||
}
|
||||
|
||||
// Extend jQuery itself if only one argument is passed
|
||||
if ( i === length ) {
|
||||
target = this;
|
||||
i--;
|
||||
}
|
||||
|
||||
for ( ; i < length; i++ ) {
|
||||
|
||||
// Only deal with non-null/undefined values
|
||||
if ( ( options = arguments[ i ] ) != null ) {
|
||||
|
||||
// Extend the base object
|
||||
for ( name in options ) {
|
||||
src = target[ name ];
|
||||
copy = options[ name ];
|
||||
|
||||
// Prevent never-ending loop
|
||||
if ( target === copy ) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Recurse if we're merging plain objects or arrays
|
||||
if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
|
||||
( copyIsArray = jQuery.isArray( copy ) ) ) ) {
|
||||
|
||||
if ( copyIsArray ) {
|
||||
copyIsArray = false;
|
||||
clone = src && jQuery.isArray( src ) ? src : [];
|
||||
|
||||
} else {
|
||||
clone = src && jQuery.isPlainObject( src ) ? src : {};
|
||||
}
|
||||
|
||||
// Never move original objects, clone them
|
||||
target[ name ] = jQuery.extend( deep, clone, copy );
|
||||
|
||||
// Don't bring in undefined values
|
||||
} else if ( copy !== undefined ) {
|
||||
target[ name ] = copy;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Return the modified object
|
||||
return target;
|
||||
};
|
||||
|
||||
jQuery.extend( {
|
||||
|
||||
// Unique for each copy of jQuery on the page
|
||||
expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
|
||||
|
||||
// Assume jQuery is ready without the ready module
|
||||
isReady: true,
|
||||
|
||||
error: function( msg ) {
|
||||
throw new Error( msg );
|
||||
},
|
||||
|
||||
noop: function() {},
|
||||
|
||||
isFunction: function( obj ) {
|
||||
return jQuery.type( obj ) === "function";
|
||||
},
|
||||
|
||||
isArray: Array.isArray,
|
||||
|
||||
isWindow: function( obj ) {
|
||||
return obj != null && obj === obj.window;
|
||||
},
|
||||
|
||||
isNumeric: function( obj ) {
|
||||
|
||||
// As of jQuery 3.0, isNumeric is limited to
|
||||
// strings and numbers (primitives or objects)
|
||||
// that can be coerced to finite numbers (gh-2662)
|
||||
var type = jQuery.type( obj );
|
||||
return ( type === "number" || type === "string" ) &&
|
||||
|
||||
// parseFloat NaNs numeric-cast false positives ("")
|
||||
// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
|
||||
// subtraction forces infinities to NaN
|
||||
!isNaN( obj - parseFloat( obj ) );
|
||||
},
|
||||
|
||||
isPlainObject: function( obj ) {
|
||||
var proto, Ctor;
|
||||
|
||||
// Detect obvious negatives
|
||||
// Use toString instead of jQuery.type to catch host objects
|
||||
if ( !obj || toString.call( obj ) !== "[object Object]" ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
proto = getProto( obj );
|
||||
|
||||
// Objects with no prototype (e.g., `Object.create( null )`) are plain
|
||||
if ( !proto ) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// Objects with prototype are plain iff they were constructed by a global Object function
|
||||
Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor;
|
||||
return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;
|
||||
},
|
||||
|
||||
isEmptyObject: function( obj ) {
|
||||
|
||||
/* eslint-disable no-unused-vars */
|
||||
// See https://github.com/eslint/eslint/issues/6125
|
||||
var name;
|
||||
|
||||
for ( name in obj ) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
|
||||
type: function( obj ) {
|
||||
if ( obj == null ) {
|
||||
return obj + "";
|
||||
}
|
||||
|
||||
// Support: Android <=2.3 only (functionish RegExp)
|
||||
return typeof obj === "object" || typeof obj === "function" ?
|
||||
class2type[ toString.call( obj ) ] || "object" :
|
||||
typeof obj;
|
||||
},
|
||||
|
||||
// Evaluates a script in a global context
|
||||
globalEval: function( code ) {
|
||||
DOMEval( code );
|
||||
},
|
||||
|
||||
// Convert dashed to camelCase; used by the css and data modules
|
||||
// Support: IE <=9 - 11, Edge 12 - 13
|
||||
// Microsoft forgot to hump their vendor prefix (#9572)
|
||||
camelCase: function( string ) {
|
||||
return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
|
||||
},
|
||||
|
||||
nodeName: function( elem, name ) {
|
||||
return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
|
||||
},
|
||||
|
||||
each: function( obj, callback ) {
|
||||
var length, i = 0;
|
||||
|
||||
if ( isArrayLike( obj ) ) {
|
||||
length = obj.length;
|
||||
for ( ; i < length; i++ ) {
|
||||
if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for ( i in obj ) {
|
||||
if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return obj;
|
||||
},
|
||||
|
||||
// Support: Android <=4.0 only
|
||||
trim: function( text ) {
|
||||
return text == null ?
|
||||
"" :
|
||||
( text + "" ).replace( rtrim, "" );
|
||||
},
|
||||
|
||||
// results is for internal usage only
|
||||
makeArray: function( arr, results ) {
|
||||
var ret = results || [];
|
||||
|
||||
if ( arr != null ) {
|
||||
if ( isArrayLike( Object( arr ) ) ) {
|
||||
jQuery.merge( ret,
|
||||
typeof arr === "string" ?
|
||||
[ arr ] : arr
|
||||
);
|
||||
} else {
|
||||
push.call( ret, arr );
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
},
|
||||
|
||||
inArray: function( elem, arr, i ) {
|
||||
return arr == null ? -1 : indexOf.call( arr, elem, i );
|
||||
},
|
||||
|
||||
// Support: Android <=4.0 only, PhantomJS 1 only
|
||||
// push.apply(_, arraylike) throws on ancient WebKit
|
||||
merge: function( first, second ) {
|
||||
var len = +second.length,
|
||||
j = 0,
|
||||
i = first.length;
|
||||
|
||||
for ( ; j < len; j++ ) {
|
||||
first[ i++ ] = second[ j ];
|
||||
}
|
||||
|
||||
first.length = i;
|
||||
|
||||
return first;
|
||||
},
|
||||
|
||||
grep: function( elems, callback, invert ) {
|
||||
var callbackInverse,
|
||||
matches = [],
|
||||
i = 0,
|
||||
length = elems.length,
|
||||
callbackExpect = !invert;
|
||||
|
||||
// Go through the array, only saving the items
|
||||
// that pass the validator function
|
||||
for ( ; i < length; i++ ) {
|
||||
callbackInverse = !callback( elems[ i ], i );
|
||||
if ( callbackInverse !== callbackExpect ) {
|
||||
matches.push( elems[ i ] );
|
||||
}
|
||||
}
|
||||
|
||||
return matches;
|
||||
},
|
||||
|
||||
// arg is for internal usage only
|
||||
map: function( elems, callback, arg ) {
|
||||
var length, value,
|
||||
i = 0,
|
||||
ret = [];
|
||||
|
||||
// Go through the array, translating each of the items to their new values
|
||||
if ( isArrayLike( elems ) ) {
|
||||
length = elems.length;
|
||||
for ( ; i < length; i++ ) {
|
||||
value = callback( elems[ i ], i, arg );
|
||||
|
||||
if ( value != null ) {
|
||||
ret.push( value );
|
||||
}
|
||||
}
|
||||
|
||||
// Go through every key on the object,
|
||||
} else {
|
||||
for ( i in elems ) {
|
||||
value = callback( elems[ i ], i, arg );
|
||||
|
||||
if ( value != null ) {
|
||||
ret.push( value );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Flatten any nested arrays
|
||||
return concat.apply( [], ret );
|
||||
},
|
||||
|
||||
// A global GUID counter for objects
|
||||
guid: 1,
|
||||
|
||||
// Bind a function to a context, optionally partially applying any
|
||||
// arguments.
|
||||
proxy: function( fn, context ) {
|
||||
var tmp, args, proxy;
|
||||
|
||||
if ( typeof context === "string" ) {
|
||||
tmp = fn[ context ];
|
||||
context = fn;
|
||||
fn = tmp;
|
||||
}
|
||||
|
||||
// Quick check to determine if target is callable, in the spec
|
||||
// this throws a TypeError, but we will just return undefined.
|
||||
if ( !jQuery.isFunction( fn ) ) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
// Simulated bind
|
||||
args = slice.call( arguments, 2 );
|
||||
proxy = function() {
|
||||
return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
|
||||
};
|
||||
|
||||
// Set the guid of unique handler to the same of original handler, so it can be removed
|
||||
proxy.guid = fn.guid = fn.guid || jQuery.guid++;
|
||||
|
||||
return proxy;
|
||||
},
|
||||
|
||||
now: Date.now,
|
||||
|
||||
// jQuery.support is not used in Core but other projects attach their
|
||||
// properties to it so it needs to exist.
|
||||
support: support
|
||||
} );
|
||||
|
||||
if ( typeof Symbol === "function" ) {
|
||||
jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
|
||||
}
|
||||
|
||||
// Populate the class2type map
|
||||
jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
|
||||
function( i, name ) {
|
||||
class2type[ "[object " + name + "]" ] = name.toLowerCase();
|
||||
} );
|
||||
|
||||
function isArrayLike( obj ) {
|
||||
|
||||
// Support: real iOS 8.2 only (not reproducible in simulator)
|
||||
// `in` check used to prevent JIT error (gh-2145)
|
||||
// hasOwn isn't used here due to false negatives
|
||||
// regarding Nodelist length in IE
|
||||
var length = !!obj && "length" in obj && obj.length,
|
||||
type = jQuery.type( obj );
|
||||
|
||||
if ( type === "function" || jQuery.isWindow( obj ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return type === "array" || length === 0 ||
|
||||
typeof length === "number" && length > 0 && ( length - 1 ) in obj;
|
||||
}
|
||||
|
||||
return jQuery;
|
||||
} );
|
2938
bower_components/jquery/dist/jquery.js
vendored
2938
bower_components/jquery/dist/jquery.js
vendored
File diff suppressed because it is too large
Load diff
8
bower_components/jquery/dist/jquery.min.js
vendored
8
bower_components/jquery/dist/jquery.min.js
vendored
File diff suppressed because one or more lines are too long
2
bower_components/jquery/dist/jquery.min.map
vendored
2
bower_components/jquery/dist/jquery.min.map
vendored
File diff suppressed because one or more lines are too long
8107
bower_components/jquery/dist/jquery.slim.js
vendored
Normal file
8107
bower_components/jquery/dist/jquery.slim.js
vendored
Normal file
File diff suppressed because it is too large
Load diff
4
bower_components/jquery/dist/jquery.slim.min.js
vendored
Normal file
4
bower_components/jquery/dist/jquery.slim.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
bower_components/jquery/dist/jquery.slim.min.map
vendored
Normal file
1
bower_components/jquery/dist/jquery.slim.min.map
vendored
Normal file
File diff suppressed because one or more lines are too long
|
@ -1,12 +1,12 @@
|
|||
/*!
|
||||
* Sizzle CSS Selector Engine v2.2.1
|
||||
* http://sizzlejs.com/
|
||||
* Sizzle CSS Selector Engine v2.3.3
|
||||
* https://sizzlejs.com/
|
||||
*
|
||||
* Copyright jQuery Foundation and other contributors
|
||||
* Released under the MIT license
|
||||
* http://jquery.org/license
|
||||
*
|
||||
* Date: 2015-10-17
|
||||
* Date: 2016-08-08
|
||||
*/
|
||||
(function( window ) {
|
||||
|
||||
|
@ -47,9 +47,6 @@ var i,
|
|||
return 0;
|
||||
},
|
||||
|
||||
// General-purpose constants
|
||||
MAX_NEGATIVE = 1 << 31,
|
||||
|
||||
// Instance methods
|
||||
hasOwn = ({}).hasOwnProperty,
|
||||
arr = [],
|
||||
|
@ -58,7 +55,7 @@ var i,
|
|||
push = arr.push,
|
||||
slice = arr.slice,
|
||||
// Use a stripped-down indexOf as it's faster than native
|
||||
// http://jsperf.com/thor-indexof-vs-for/5
|
||||
// https://jsperf.com/thor-indexof-vs-for/5
|
||||
indexOf = function( list, elem ) {
|
||||
var i = 0,
|
||||
len = list.length;
|
||||
|
@ -78,7 +75,7 @@ var i,
|
|||
whitespace = "[\\x20\\t\\r\\n\\f]",
|
||||
|
||||
// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
|
||||
identifier = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
|
||||
identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+",
|
||||
|
||||
// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
|
||||
attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
|
||||
|
@ -135,9 +132,9 @@ var i,
|
|||
rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
|
||||
|
||||
rsibling = /[+~]/,
|
||||
rescape = /'|\\/g,
|
||||
|
||||
// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
|
||||
// CSS escapes
|
||||
// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
|
||||
runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
|
||||
funescape = function( _, escaped, escapedWhitespace ) {
|
||||
var high = "0x" + escaped - 0x10000;
|
||||
|
@ -153,13 +150,39 @@ var i,
|
|||
String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
|
||||
},
|
||||
|
||||
// CSS string/identifier serialization
|
||||
// https://drafts.csswg.org/cssom/#common-serializing-idioms
|
||||
rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
|
||||
fcssescape = function( ch, asCodePoint ) {
|
||||
if ( asCodePoint ) {
|
||||
|
||||
// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
|
||||
if ( ch === "\0" ) {
|
||||
return "\uFFFD";
|
||||
}
|
||||
|
||||
// Control characters and (dependent upon position) numbers get escaped as code points
|
||||
return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
|
||||
}
|
||||
|
||||
// Other potentially-special ASCII characters get backslash-escaped
|
||||
return "\\" + ch;
|
||||
},
|
||||
|
||||
// Used for iframes
|
||||
// See setDocument()
|
||||
// Removing the function wrapper causes a "Permission Denied"
|
||||
// error in IE
|
||||
unloadHandler = function() {
|
||||
setDocument();
|
||||
};
|
||||
},
|
||||
|
||||
disabledAncestor = addCombinator(
|
||||
function( elem ) {
|
||||
return elem.disabled === true && ("form" in elem || "label" in elem);
|
||||
},
|
||||
{ dir: "parentNode", next: "legend" }
|
||||
);
|
||||
|
||||
// Optimize for push.apply( _, NodeList )
|
||||
try {
|
||||
|
@ -191,7 +214,7 @@ try {
|
|||
}
|
||||
|
||||
function Sizzle( selector, context, results, seed ) {
|
||||
var m, i, elem, nid, nidselect, match, groups, newSelector,
|
||||
var m, i, elem, nid, match, groups, newSelector,
|
||||
newContext = context && context.ownerDocument,
|
||||
|
||||
// nodeType defaults to 9, since context defaults to document
|
||||
|
@ -284,7 +307,7 @@ function Sizzle( selector, context, results, seed ) {
|
|||
|
||||
// Capture the context ID, setting it first if necessary
|
||||
if ( (nid = context.getAttribute( "id" )) ) {
|
||||
nid = nid.replace( rescape, "\\$&" );
|
||||
nid = nid.replace( rcssescape, fcssescape );
|
||||
} else {
|
||||
context.setAttribute( "id", (nid = expando) );
|
||||
}
|
||||
|
@ -292,9 +315,8 @@ function Sizzle( selector, context, results, seed ) {
|
|||
// Prefix every selector in the list
|
||||
groups = tokenize( selector );
|
||||
i = groups.length;
|
||||
nidselect = ridentifier.test( nid ) ? "#" + nid : "[id='" + nid + "']";
|
||||
while ( i-- ) {
|
||||
groups[i] = nidselect + " " + toSelector( groups[i] );
|
||||
groups[i] = "#" + nid + " " + toSelector( groups[i] );
|
||||
}
|
||||
newSelector = groups.join( "," );
|
||||
|
||||
|
@ -355,22 +377,22 @@ function markFunction( fn ) {
|
|||
|
||||
/**
|
||||
* Support testing using an element
|
||||
* @param {Function} fn Passed the created div and expects a boolean result
|
||||
* @param {Function} fn Passed the created element and returns a boolean result
|
||||
*/
|
||||
function assert( fn ) {
|
||||
var div = document.createElement("div");
|
||||
var el = document.createElement("fieldset");
|
||||
|
||||
try {
|
||||
return !!fn( div );
|
||||
return !!fn( el );
|
||||
} catch (e) {
|
||||
return false;
|
||||
} finally {
|
||||
// Remove from its parent by default
|
||||
if ( div.parentNode ) {
|
||||
div.parentNode.removeChild( div );
|
||||
if ( el.parentNode ) {
|
||||
el.parentNode.removeChild( el );
|
||||
}
|
||||
// release memory in IE
|
||||
div = null;
|
||||
el = null;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -397,8 +419,7 @@ function addHandle( attrs, handler ) {
|
|||
function siblingCheck( a, b ) {
|
||||
var cur = b && a,
|
||||
diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
|
||||
( ~b.sourceIndex || MAX_NEGATIVE ) -
|
||||
( ~a.sourceIndex || MAX_NEGATIVE );
|
||||
a.sourceIndex - b.sourceIndex;
|
||||
|
||||
// Use IE sourceIndex if available on both nodes
|
||||
if ( diff ) {
|
||||
|
@ -439,6 +460,62 @@ function createButtonPseudo( type ) {
|
|||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a function to use in pseudos for :enabled/:disabled
|
||||
* @param {Boolean} disabled true for :disabled; false for :enabled
|
||||
*/
|
||||
function createDisabledPseudo( disabled ) {
|
||||
|
||||
// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
|
||||
return function( elem ) {
|
||||
|
||||
// Only certain elements can match :enabled or :disabled
|
||||
// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled
|
||||
// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled
|
||||
if ( "form" in elem ) {
|
||||
|
||||
// Check for inherited disabledness on relevant non-disabled elements:
|
||||
// * listed form-associated elements in a disabled fieldset
|
||||
// https://html.spec.whatwg.org/multipage/forms.html#category-listed
|
||||
// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled
|
||||
// * option elements in a disabled optgroup
|
||||
// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled
|
||||
// All such elements have a "form" property.
|
||||
if ( elem.parentNode && elem.disabled === false ) {
|
||||
|
||||
// Option elements defer to a parent optgroup if present
|
||||
if ( "label" in elem ) {
|
||||
if ( "label" in elem.parentNode ) {
|
||||
return elem.parentNode.disabled === disabled;
|
||||
} else {
|
||||
return elem.disabled === disabled;
|
||||
}
|
||||
}
|
||||
|
||||
// Support: IE 6 - 11
|
||||
// Use the isDisabled shortcut property to check for disabled fieldset ancestors
|
||||
return elem.isDisabled === disabled ||
|
||||
|
||||
// Where there is no isDisabled, check manually
|
||||
/* jshint -W018 */
|
||||
elem.isDisabled !== !disabled &&
|
||||
disabledAncestor( elem ) === disabled;
|
||||
}
|
||||
|
||||
return elem.disabled === disabled;
|
||||
|
||||
// Try to winnow out elements that can't be disabled before trusting the disabled property.
|
||||
// Some victims get caught in our net (label, legend, menu, track), but it shouldn't
|
||||
// even exist on them, let alone have a boolean value.
|
||||
} else if ( "label" in elem ) {
|
||||
return elem.disabled === disabled;
|
||||
}
|
||||
|
||||
// Remaining elements are neither :enabled nor :disabled
|
||||
return false;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a function to use in pseudos for positionals
|
||||
* @param {Function} fn
|
||||
|
@ -491,7 +568,7 @@ isXML = Sizzle.isXML = function( elem ) {
|
|||
* @returns {Object} Returns the current document
|
||||
*/
|
||||
setDocument = Sizzle.setDocument = function( node ) {
|
||||
var hasCompare, parent,
|
||||
var hasCompare, subWindow,
|
||||
doc = node ? node.ownerDocument || node : preferredDoc;
|
||||
|
||||
// Return early if doc is invalid or already selected
|
||||
|
@ -506,14 +583,16 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|||
|
||||
// Support: IE 9-11, Edge
|
||||
// Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
|
||||
if ( (parent = document.defaultView) && parent.top !== parent ) {
|
||||
// Support: IE 11
|
||||
if ( parent.addEventListener ) {
|
||||
parent.addEventListener( "unload", unloadHandler, false );
|
||||
if ( preferredDoc !== document &&
|
||||
(subWindow = document.defaultView) && subWindow.top !== subWindow ) {
|
||||
|
||||
// Support: IE 11, Edge
|
||||
if ( subWindow.addEventListener ) {
|
||||
subWindow.addEventListener( "unload", unloadHandler, false );
|
||||
|
||||
// Support: IE 9 - 10 only
|
||||
} else if ( parent.attachEvent ) {
|
||||
parent.attachEvent( "onunload", unloadHandler );
|
||||
} else if ( subWindow.attachEvent ) {
|
||||
subWindow.attachEvent( "onunload", unloadHandler );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -523,18 +602,18 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|||
// Support: IE<8
|
||||
// Verify that getAttribute really returns attributes and not properties
|
||||
// (excepting IE8 booleans)
|
||||
support.attributes = assert(function( div ) {
|
||||
div.className = "i";
|
||||
return !div.getAttribute("className");
|
||||
support.attributes = assert(function( el ) {
|
||||
el.className = "i";
|
||||
return !el.getAttribute("className");
|
||||
});
|
||||
|
||||
/* getElement(s)By*
|
||||
---------------------------------------------------------------------- */
|
||||
|
||||
// Check if getElementsByTagName("*") returns only elements
|
||||
support.getElementsByTagName = assert(function( div ) {
|
||||
div.appendChild( document.createComment("") );
|
||||
return !div.getElementsByTagName("*").length;
|
||||
support.getElementsByTagName = assert(function( el ) {
|
||||
el.appendChild( document.createComment("") );
|
||||
return !el.getElementsByTagName("*").length;
|
||||
});
|
||||
|
||||
// Support: IE<9
|
||||
|
@ -542,32 +621,28 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|||
|
||||
// Support: IE<10
|
||||
// Check if getElementById returns elements by name
|
||||
// The broken getElementById methods don't pick up programatically-set names,
|
||||
// The broken getElementById methods don't pick up programmatically-set names,
|
||||
// so use a roundabout getElementsByName test
|
||||
support.getById = assert(function( div ) {
|
||||
docElem.appendChild( div ).id = expando;
|
||||
support.getById = assert(function( el ) {
|
||||
docElem.appendChild( el ).id = expando;
|
||||
return !document.getElementsByName || !document.getElementsByName( expando ).length;
|
||||
});
|
||||
|
||||
// ID find and filter
|
||||
// ID filter and find
|
||||
if ( support.getById ) {
|
||||
Expr.find["ID"] = function( id, context ) {
|
||||
if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
|
||||
var m = context.getElementById( id );
|
||||
return m ? [ m ] : [];
|
||||
}
|
||||
};
|
||||
Expr.filter["ID"] = function( id ) {
|
||||
var attrId = id.replace( runescape, funescape );
|
||||
return function( elem ) {
|
||||
return elem.getAttribute("id") === attrId;
|
||||
};
|
||||
};
|
||||
Expr.find["ID"] = function( id, context ) {
|
||||
if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
|
||||
var elem = context.getElementById( id );
|
||||
return elem ? [ elem ] : [];
|
||||
}
|
||||
};
|
||||
} else {
|
||||
// Support: IE6/7
|
||||
// getElementById is not reliable as a find shortcut
|
||||
delete Expr.find["ID"];
|
||||
|
||||
Expr.filter["ID"] = function( id ) {
|
||||
var attrId = id.replace( runescape, funescape );
|
||||
return function( elem ) {
|
||||
|
@ -576,6 +651,36 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|||
return node && node.value === attrId;
|
||||
};
|
||||
};
|
||||
|
||||
// Support: IE 6 - 7 only
|
||||
// getElementById is not reliable as a find shortcut
|
||||
Expr.find["ID"] = function( id, context ) {
|
||||
if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
|
||||
var node, i, elems,
|
||||
elem = context.getElementById( id );
|
||||
|
||||
if ( elem ) {
|
||||
|
||||
// Verify the id attribute
|
||||
node = elem.getAttributeNode("id");
|
||||
if ( node && node.value === id ) {
|
||||
return [ elem ];
|
||||
}
|
||||
|
||||
// Fall back on getElementsByName
|
||||
elems = context.getElementsByName( id );
|
||||
i = 0;
|
||||
while ( (elem = elems[i++]) ) {
|
||||
node = elem.getAttributeNode("id");
|
||||
if ( node && node.value === id ) {
|
||||
return [ elem ];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return [];
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
// Tag
|
||||
|
@ -629,77 +734,87 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|||
// We allow this because of a bug in IE8/9 that throws an error
|
||||
// whenever `document.activeElement` is accessed on an iframe
|
||||
// So, we allow :focus to pass through QSA all the time to avoid the IE error
|
||||
// See http://bugs.jquery.com/ticket/13378
|
||||
// See https://bugs.jquery.com/ticket/13378
|
||||
rbuggyQSA = [];
|
||||
|
||||
if ( (support.qsa = rnative.test( document.querySelectorAll )) ) {
|
||||
// Build QSA regex
|
||||
// Regex strategy adopted from Diego Perini
|
||||
assert(function( div ) {
|
||||
assert(function( el ) {
|
||||
// Select is set to empty string on purpose
|
||||
// This is to test IE's treatment of not explicitly
|
||||
// setting a boolean content attribute,
|
||||
// since its presence should be enough
|
||||
// http://bugs.jquery.com/ticket/12359
|
||||
docElem.appendChild( div ).innerHTML = "<a id='" + expando + "'></a>" +
|
||||
// https://bugs.jquery.com/ticket/12359
|
||||
docElem.appendChild( el ).innerHTML = "<a id='" + expando + "'></a>" +
|
||||
"<select id='" + expando + "-\r\\' msallowcapture=''>" +
|
||||
"<option selected=''></option></select>";
|
||||
|
||||
// Support: IE8, Opera 11-12.16
|
||||
// Nothing should be selected when empty strings follow ^= or $= or *=
|
||||
// The test attribute must be unknown in Opera but "safe" for WinRT
|
||||
// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
|
||||
if ( div.querySelectorAll("[msallowcapture^='']").length ) {
|
||||
// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
|
||||
if ( el.querySelectorAll("[msallowcapture^='']").length ) {
|
||||
rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
|
||||
}
|
||||
|
||||
// Support: IE8
|
||||
// Boolean attributes and "value" are not treated correctly
|
||||
if ( !div.querySelectorAll("[selected]").length ) {
|
||||
if ( !el.querySelectorAll("[selected]").length ) {
|
||||
rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
|
||||
}
|
||||
|
||||
// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
|
||||
if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
|
||||
if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
|
||||
rbuggyQSA.push("~=");
|
||||
}
|
||||
|
||||
// Webkit/Opera - :checked should return selected option elements
|
||||
// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
|
||||
// IE8 throws error here and will not see later tests
|
||||
if ( !div.querySelectorAll(":checked").length ) {
|
||||
if ( !el.querySelectorAll(":checked").length ) {
|
||||
rbuggyQSA.push(":checked");
|
||||
}
|
||||
|
||||
// Support: Safari 8+, iOS 8+
|
||||
// https://bugs.webkit.org/show_bug.cgi?id=136851
|
||||
// In-page `selector#id sibing-combinator selector` fails
|
||||
if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) {
|
||||
// In-page `selector#id sibling-combinator selector` fails
|
||||
if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
|
||||
rbuggyQSA.push(".#.+[+~]");
|
||||
}
|
||||
});
|
||||
|
||||
assert(function( div ) {
|
||||
assert(function( el ) {
|
||||
el.innerHTML = "<a href='' disabled='disabled'></a>" +
|
||||
"<select disabled='disabled'><option/></select>";
|
||||
|
||||
// Support: Windows 8 Native Apps
|
||||
// The type and name attributes are restricted during .innerHTML assignment
|
||||
var input = document.createElement("input");
|
||||
input.setAttribute( "type", "hidden" );
|
||||
div.appendChild( input ).setAttribute( "name", "D" );
|
||||
el.appendChild( input ).setAttribute( "name", "D" );
|
||||
|
||||
// Support: IE8
|
||||
// Enforce case-sensitivity of name attribute
|
||||
if ( div.querySelectorAll("[name=d]").length ) {
|
||||
if ( el.querySelectorAll("[name=d]").length ) {
|
||||
rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
|
||||
}
|
||||
|
||||
// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
|
||||
// IE8 throws error here and will not see later tests
|
||||
if ( !div.querySelectorAll(":enabled").length ) {
|
||||
if ( el.querySelectorAll(":enabled").length !== 2 ) {
|
||||
rbuggyQSA.push( ":enabled", ":disabled" );
|
||||
}
|
||||
|
||||
// Support: IE9-11+
|
||||
// IE's :disabled selector does not pick up the children of disabled fieldsets
|
||||
docElem.appendChild( el ).disabled = true;
|
||||
if ( el.querySelectorAll(":disabled").length !== 2 ) {
|
||||
rbuggyQSA.push( ":enabled", ":disabled" );
|
||||
}
|
||||
|
||||
// Opera 10-11 does not throw on post-comma invalid pseudos
|
||||
div.querySelectorAll("*,:x");
|
||||
el.querySelectorAll("*,:x");
|
||||
rbuggyQSA.push(",.*:");
|
||||
});
|
||||
}
|
||||
|
@ -710,14 +825,14 @@ setDocument = Sizzle.setDocument = function( node ) {
|
|||
docElem.oMatchesSelector ||
|
||||
docElem.msMatchesSelector) )) ) {
|
||||
|
||||
assert(function( div ) {
|
||||
assert(function( el ) {
|
||||
// Check to see if it's possible to do matchesSelector
|
||||
// on a disconnected node (IE 9)
|
||||
support.disconnectedMatch = matches.call( div, "div" );
|
||||
support.disconnectedMatch = matches.call( el, "*" );
|
||||
|
||||
// This should fail with an exception
|
||||
// Gecko does not error, returns false instead
|
||||
matches.call( div, "[s!='']:x" );
|
||||
matches.call( el, "[s!='']:x" );
|
||||
rbuggyMatches.push( "!=", pseudos );
|
||||
});
|
||||
}
|
||||
|
@ -919,6 +1034,10 @@ Sizzle.attr = function( elem, name ) {
|
|||
null;
|
||||
};
|
||||
|
||||
Sizzle.escape = function( sel ) {
|
||||
return (sel + "").replace( rcssescape, fcssescape );
|
||||
};
|
||||
|
||||
Sizzle.error = function( msg ) {
|
||||
throw new Error( "Syntax error, unrecognized expression: " + msg );
|
||||
};
|
||||
|
@ -1386,13 +1505,8 @@ Expr = Sizzle.selectors = {
|
|||
},
|
||||
|
||||
// Boolean properties
|
||||
"enabled": function( elem ) {
|
||||
return elem.disabled === false;
|
||||
},
|
||||
|
||||
"disabled": function( elem ) {
|
||||
return elem.disabled === true;
|
||||
},
|
||||
"enabled": createDisabledPseudo( false ),
|
||||
"disabled": createDisabledPseudo( true ),
|
||||
|
||||
"checked": function( elem ) {
|
||||
// In CSS3, :checked should return both checked and selected elements
|
||||
|
@ -1594,7 +1708,9 @@ function toSelector( tokens ) {
|
|||
|
||||
function addCombinator( matcher, combinator, base ) {
|
||||
var dir = combinator.dir,
|
||||
checkNonElements = base && dir === "parentNode",
|
||||
skip = combinator.next,
|
||||
key = skip || dir,
|
||||
checkNonElements = base && key === "parentNode",
|
||||
doneName = done++;
|
||||
|
||||
return combinator.first ?
|
||||
|
@ -1605,6 +1721,7 @@ function addCombinator( matcher, combinator, base ) {
|
|||
return matcher( elem, context, xml );
|
||||
}
|
||||
}
|
||||
return false;
|
||||
} :
|
||||
|
||||
// Check against all ancestor/preceding elements
|
||||
|
@ -1630,14 +1747,16 @@ function addCombinator( matcher, combinator, base ) {
|
|||
// Defend against cloned attroperties (jQuery gh-1709)
|
||||
uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});
|
||||
|
||||
if ( (oldCache = uniqueCache[ dir ]) &&
|
||||
if ( skip && skip === elem.nodeName.toLowerCase() ) {
|
||||
elem = elem[ dir ] || elem;
|
||||
} else if ( (oldCache = uniqueCache[ key ]) &&
|
||||
oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
|
||||
|
||||
// Assign to newCache so results back-propagate to previous elements
|
||||
return (newCache[ 2 ] = oldCache[ 2 ]);
|
||||
} else {
|
||||
// Reuse newcache so results back-propagate to previous elements
|
||||
uniqueCache[ dir ] = newCache;
|
||||
uniqueCache[ key ] = newCache;
|
||||
|
||||
// A match means we're done; a fail means we have to keep checking
|
||||
if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
|
||||
|
@ -1647,6 +1766,7 @@ function addCombinator( matcher, combinator, base ) {
|
|||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -2009,8 +2129,7 @@ select = Sizzle.select = function( selector, context, results, seed ) {
|
|||
// Reduce context if the leading compound selector is an ID
|
||||
tokens = match[0] = match[0].slice( 0 );
|
||||
if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
|
||||
support.getById && context.nodeType === 9 && documentIsHTML &&
|
||||
Expr.relative[ tokens[1].type ] ) {
|
||||
context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {
|
||||
|
||||
context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
|
||||
if ( !context ) {
|
||||
|
@ -2080,17 +2199,17 @@ setDocument();
|
|||
|
||||
// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
|
||||
// Detached nodes confoundingly follow *each other*
|
||||
support.sortDetached = assert(function( div1 ) {
|
||||
support.sortDetached = assert(function( el ) {
|
||||
// Should return 1, but returns 4 (following)
|
||||
return div1.compareDocumentPosition( document.createElement("div") ) & 1;
|
||||
return el.compareDocumentPosition( document.createElement("fieldset") ) & 1;
|
||||
});
|
||||
|
||||
// Support: IE<8
|
||||
// Prevent attribute/property "interpolation"
|
||||
// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
|
||||
if ( !assert(function( div ) {
|
||||
div.innerHTML = "<a href='#'></a>";
|
||||
return div.firstChild.getAttribute("href") === "#" ;
|
||||
// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
|
||||
if ( !assert(function( el ) {
|
||||
el.innerHTML = "<a href='#'></a>";
|
||||
return el.firstChild.getAttribute("href") === "#" ;
|
||||
}) ) {
|
||||
addHandle( "type|href|height|width", function( elem, name, isXML ) {
|
||||
if ( !isXML ) {
|
||||
|
@ -2101,10 +2220,10 @@ if ( !assert(function( div ) {
|
|||
|
||||
// Support: IE<9
|
||||
// Use defaultValue in place of getAttribute("value")
|
||||
if ( !support.attributes || !assert(function( div ) {
|
||||
div.innerHTML = "<input/>";
|
||||
div.firstChild.setAttribute( "value", "" );
|
||||
return div.firstChild.getAttribute( "value" ) === "";
|
||||
if ( !support.attributes || !assert(function( el ) {
|
||||
el.innerHTML = "<input/>";
|
||||
el.firstChild.setAttribute( "value", "" );
|
||||
return el.firstChild.getAttribute( "value" ) === "";
|
||||
}) ) {
|
||||
addHandle( "value", function( elem, name, isXML ) {
|
||||
if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
|
||||
|
@ -2115,8 +2234,8 @@ if ( !support.attributes || !assert(function( div ) {
|
|||
|
||||
// Support: IE<9
|
||||
// Use getAttributeNode to fetch booleans when getAttribute lies
|
||||
if ( !assert(function( div ) {
|
||||
return div.getAttribute("disabled") == null;
|
||||
if ( !assert(function( el ) {
|
||||
return el.getAttribute("disabled") == null;
|
||||
}) ) {
|
||||
addHandle( booleans, function( elem, name, isXML ) {
|
||||
var val;
|
||||
|
@ -2130,6 +2249,16 @@ if ( !assert(function( div ) {
|
|||
}
|
||||
|
||||
// EXPOSE
|
||||
var _sizzle = window.Sizzle;
|
||||
|
||||
Sizzle.noConflict = function() {
|
||||
if ( window.Sizzle === Sizzle ) {
|
||||
window.Sizzle = _sizzle;
|
||||
}
|
||||
|
||||
return Sizzle;
|
||||
};
|
||||
|
||||
if ( typeof define === "function" && define.amd ) {
|
||||
define(function() { return Sizzle; });
|
||||
// Sizzle requires that there be a global window in Common-JS like environments
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
18
bower_components/jquery/src/.eslintrc.json
vendored
Normal file
18
bower_components/jquery/src/.eslintrc.json
vendored
Normal file
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
// Support: IE <=9 only, Android <=4.0 only
|
||||
// The above browsers are failing a lot of tests in the ES5
|
||||
// test suite at http://test262.ecmascript.org.
|
||||
"parserOptions": {
|
||||
"ecmaVersion": 3
|
||||
},
|
||||
"globals": {
|
||||
"window": true,
|
||||
"jQuery": true,
|
||||
"define": true,
|
||||
"module": true,
|
||||
"noGlobal": true
|
||||
},
|
||||
"rules": {
|
||||
"strict": ["error", "function"]
|
||||
}
|
||||
}
|
29
bower_components/jquery/src/.jshintrc
vendored
29
bower_components/jquery/src/.jshintrc
vendored
|
@ -1,29 +0,0 @@
|
|||
{
|
||||
"boss": true,
|
||||
"curly": true,
|
||||
"eqeqeq": true,
|
||||
"eqnull": true,
|
||||
"expr": true,
|
||||
"immed": true,
|
||||
"noarg": true,
|
||||
"quotmark": "double",
|
||||
"undef": true,
|
||||
"unused": true,
|
||||
|
||||
"sub": true,
|
||||
|
||||
// Support: IE < 10, Android < 4.1
|
||||
// The above browsers are failing a lot of tests in the ES5
|
||||
// test suite at http://test262.ecmascript.org.
|
||||
"es3": true,
|
||||
|
||||
"globals": {
|
||||
"window": true,
|
||||
"JSON": false,
|
||||
|
||||
"jQuery": true,
|
||||
"define": true,
|
||||
"module": true,
|
||||
"noGlobal": true
|
||||
}
|
||||
}
|
130
bower_components/jquery/src/ajax.js
vendored
130
bower_components/jquery/src/ajax.js
vendored
|
@ -1,21 +1,24 @@
|
|||
define( [
|
||||
"./core",
|
||||
"./var/document",
|
||||
"./var/rnotwhite",
|
||||
"./var/rnothtmlwhite",
|
||||
"./ajax/var/location",
|
||||
"./ajax/var/nonce",
|
||||
"./ajax/var/rquery",
|
||||
|
||||
"./core/init",
|
||||
"./ajax/parseJSON",
|
||||
"./ajax/parseXML",
|
||||
"./event/trigger",
|
||||
"./deferred"
|
||||
], function( jQuery, document, rnotwhite, location, nonce, rquery ) {
|
||||
"./deferred",
|
||||
"./serialize" // jQuery.param
|
||||
], function( jQuery, document, rnothtmlwhite, location, nonce, rquery ) {
|
||||
|
||||
"use strict";
|
||||
|
||||
var
|
||||
r20 = /%20/g,
|
||||
rhash = /#.*$/,
|
||||
rts = /([?&])_=[^&]*/,
|
||||
rantiCache = /([?&])_=[^&]*/,
|
||||
rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
|
||||
|
||||
// #7653, #8125, #8152: local protocol detection
|
||||
|
@ -61,7 +64,7 @@ function addToPrefiltersOrTransports( structure ) {
|
|||
|
||||
var dataType,
|
||||
i = 0,
|
||||
dataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || [];
|
||||
dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];
|
||||
|
||||
if ( jQuery.isFunction( func ) ) {
|
||||
|
||||
|
@ -223,7 +226,7 @@ function ajaxConvert( s, response, jqXHR, isSuccess ) {
|
|||
|
||||
if ( current ) {
|
||||
|
||||
// There's only work to do if current dataType is non-auto
|
||||
// There's only work to do if current dataType is non-auto
|
||||
if ( current === "*" ) {
|
||||
|
||||
current = prev;
|
||||
|
@ -303,6 +306,7 @@ jQuery.extend( {
|
|||
processData: true,
|
||||
async: true,
|
||||
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
|
||||
|
||||
/*
|
||||
timeout: 0,
|
||||
data: null,
|
||||
|
@ -346,7 +350,7 @@ jQuery.extend( {
|
|||
"text html": true,
|
||||
|
||||
// Evaluate text as a json expression
|
||||
"text json": jQuery.parseJSON,
|
||||
"text json": JSON.parse,
|
||||
|
||||
// Parse text as xml
|
||||
"text xml": jQuery.parseXML
|
||||
|
@ -405,12 +409,18 @@ jQuery.extend( {
|
|||
// Url cleanup var
|
||||
urlAnchor,
|
||||
|
||||
// Request state (becomes false upon send and true upon completion)
|
||||
completed,
|
||||
|
||||
// To know if global events are to be dispatched
|
||||
fireGlobals,
|
||||
|
||||
// Loop variable
|
||||
i,
|
||||
|
||||
// uncached part of the url
|
||||
uncached,
|
||||
|
||||
// Create the final options object
|
||||
s = jQuery.ajaxSetup( {}, options ),
|
||||
|
||||
|
@ -434,9 +444,6 @@ jQuery.extend( {
|
|||
requestHeaders = {},
|
||||
requestHeadersNames = {},
|
||||
|
||||
// The jqXHR state
|
||||
state = 0,
|
||||
|
||||
// Default abort message
|
||||
strAbort = "canceled",
|
||||
|
||||
|
@ -447,7 +454,7 @@ jQuery.extend( {
|
|||
// Builds headers hashtable if needed
|
||||
getResponseHeader: function( key ) {
|
||||
var match;
|
||||
if ( state === 2 ) {
|
||||
if ( completed ) {
|
||||
if ( !responseHeaders ) {
|
||||
responseHeaders = {};
|
||||
while ( ( match = rheaders.exec( responseHeadersString ) ) ) {
|
||||
|
@ -461,14 +468,14 @@ jQuery.extend( {
|
|||
|
||||
// Raw string
|
||||
getAllResponseHeaders: function() {
|
||||
return state === 2 ? responseHeadersString : null;
|
||||
return completed ? responseHeadersString : null;
|
||||
},
|
||||
|
||||
// Caches the header
|
||||
setRequestHeader: function( name, value ) {
|
||||
var lname = name.toLowerCase();
|
||||
if ( !state ) {
|
||||
name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
|
||||
if ( completed == null ) {
|
||||
name = requestHeadersNames[ name.toLowerCase() ] =
|
||||
requestHeadersNames[ name.toLowerCase() ] || name;
|
||||
requestHeaders[ name ] = value;
|
||||
}
|
||||
return this;
|
||||
|
@ -476,7 +483,7 @@ jQuery.extend( {
|
|||
|
||||
// Overrides response content-type header
|
||||
overrideMimeType: function( type ) {
|
||||
if ( !state ) {
|
||||
if ( completed == null ) {
|
||||
s.mimeType = type;
|
||||
}
|
||||
return this;
|
||||
|
@ -486,16 +493,16 @@ jQuery.extend( {
|
|||
statusCode: function( map ) {
|
||||
var code;
|
||||
if ( map ) {
|
||||
if ( state < 2 ) {
|
||||
for ( code in map ) {
|
||||
|
||||
// Lazy-add the new callback in a way that preserves old ones
|
||||
statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
|
||||
}
|
||||
} else {
|
||||
if ( completed ) {
|
||||
|
||||
// Execute the appropriate callbacks
|
||||
jqXHR.always( map[ jqXHR.status ] );
|
||||
} else {
|
||||
|
||||
// Lazy-add the new callbacks in a way that preserves old ones
|
||||
for ( code in map ) {
|
||||
statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
|
||||
}
|
||||
}
|
||||
}
|
||||
return this;
|
||||
|
@ -513,33 +520,31 @@ jQuery.extend( {
|
|||
};
|
||||
|
||||
// Attach deferreds
|
||||
deferred.promise( jqXHR ).complete = completeDeferred.add;
|
||||
jqXHR.success = jqXHR.done;
|
||||
jqXHR.error = jqXHR.fail;
|
||||
deferred.promise( jqXHR );
|
||||
|
||||
// Remove hash character (#7531: and string promotion)
|
||||
// Add protocol if not provided (prefilters might expect it)
|
||||
// Handle falsy url in the settings object (#10093: consistency with old signature)
|
||||
// We also use the url parameter if available
|
||||
s.url = ( ( url || s.url || location.href ) + "" ).replace( rhash, "" )
|
||||
s.url = ( ( url || s.url || location.href ) + "" )
|
||||
.replace( rprotocol, location.protocol + "//" );
|
||||
|
||||
// Alias method option to type as per ticket #12004
|
||||
s.type = options.method || options.type || s.method || s.type;
|
||||
|
||||
// Extract dataTypes list
|
||||
s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( rnotwhite ) || [ "" ];
|
||||
s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ];
|
||||
|
||||
// A cross-domain request is in order when the origin doesn't match the current origin.
|
||||
if ( s.crossDomain == null ) {
|
||||
urlAnchor = document.createElement( "a" );
|
||||
|
||||
// Support: IE8-11+
|
||||
// IE throws exception if url is malformed, e.g. http://example.com:80x/
|
||||
// Support: IE <=8 - 11, Edge 12 - 13
|
||||
// IE throws exception on accessing the href property if url is malformed,
|
||||
// e.g. http://example.com:80x/
|
||||
try {
|
||||
urlAnchor.href = s.url;
|
||||
|
||||
// Support: IE8-11+
|
||||
// Support: IE <=8 - 11 only
|
||||
// Anchor's host property isn't correctly set when s.url is relative
|
||||
urlAnchor.href = urlAnchor.href;
|
||||
s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !==
|
||||
|
@ -561,7 +566,7 @@ jQuery.extend( {
|
|||
inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
|
||||
|
||||
// If request was aborted inside a prefilter, stop there
|
||||
if ( state === 2 ) {
|
||||
if ( completed ) {
|
||||
return jqXHR;
|
||||
}
|
||||
|
||||
|
@ -582,29 +587,36 @@ jQuery.extend( {
|
|||
|
||||
// Save the URL in case we're toying with the If-Modified-Since
|
||||
// and/or If-None-Match header later on
|
||||
cacheURL = s.url;
|
||||
// Remove hash to simplify url manipulation
|
||||
cacheURL = s.url.replace( rhash, "" );
|
||||
|
||||
// More options handling for requests with no content
|
||||
if ( !s.hasContent ) {
|
||||
|
||||
// Remember the hash so we can put it back
|
||||
uncached = s.url.slice( cacheURL.length );
|
||||
|
||||
// If data is available, append data to url
|
||||
if ( s.data ) {
|
||||
cacheURL = ( s.url += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data );
|
||||
cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data;
|
||||
|
||||
// #9682: remove data so that it's not used in an eventual retry
|
||||
delete s.data;
|
||||
}
|
||||
|
||||
// Add anti-cache in url if needed
|
||||
// Add or update anti-cache param if needed
|
||||
if ( s.cache === false ) {
|
||||
s.url = rts.test( cacheURL ) ?
|
||||
|
||||
// If there is already a '_' parameter, set its value
|
||||
cacheURL.replace( rts, "$1_=" + nonce++ ) :
|
||||
|
||||
// Otherwise add one to the end
|
||||
cacheURL + ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + nonce++;
|
||||
cacheURL = cacheURL.replace( rantiCache, "$1" );
|
||||
uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached;
|
||||
}
|
||||
|
||||
// Put hash and anti-cache on the URL that will be requested (gh-1732)
|
||||
s.url = cacheURL + uncached;
|
||||
|
||||
// Change '%20' to '+' if this is encoded form body content (gh-2658)
|
||||
} else if ( s.data && s.processData &&
|
||||
( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) {
|
||||
s.data = s.data.replace( r20, "+" );
|
||||
}
|
||||
|
||||
// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
|
||||
|
@ -638,7 +650,7 @@ jQuery.extend( {
|
|||
|
||||
// Allow custom headers/mimetypes and early abort
|
||||
if ( s.beforeSend &&
|
||||
( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
|
||||
( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {
|
||||
|
||||
// Abort if not done already and return
|
||||
return jqXHR.abort();
|
||||
|
@ -648,9 +660,9 @@ jQuery.extend( {
|
|||
strAbort = "abort";
|
||||
|
||||
// Install callbacks on deferreds
|
||||
for ( i in { success: 1, error: 1, complete: 1 } ) {
|
||||
jqXHR[ i ]( s[ i ] );
|
||||
}
|
||||
completeDeferred.add( s.complete );
|
||||
jqXHR.done( s.success );
|
||||
jqXHR.fail( s.error );
|
||||
|
||||
// Get transport
|
||||
transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
|
||||
|
@ -667,7 +679,7 @@ jQuery.extend( {
|
|||
}
|
||||
|
||||
// If request was aborted inside ajaxSend, stop there
|
||||
if ( state === 2 ) {
|
||||
if ( completed ) {
|
||||
return jqXHR;
|
||||
}
|
||||
|
||||
|
@ -679,18 +691,17 @@ jQuery.extend( {
|
|||
}
|
||||
|
||||
try {
|
||||
state = 1;
|
||||
completed = false;
|
||||
transport.send( requestHeaders, done );
|
||||
} catch ( e ) {
|
||||
|
||||
// Propagate exception as error if not done
|
||||
if ( state < 2 ) {
|
||||
done( -1, e );
|
||||
|
||||
// Simply rethrow otherwise
|
||||
} else {
|
||||
// Rethrow post-completion exceptions
|
||||
if ( completed ) {
|
||||
throw e;
|
||||
}
|
||||
|
||||
// Propagate others as results
|
||||
done( -1, e );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -699,13 +710,12 @@ jQuery.extend( {
|
|||
var isSuccess, success, error, response, modified,
|
||||
statusText = nativeStatusText;
|
||||
|
||||
// Called once
|
||||
if ( state === 2 ) {
|
||||
// Ignore repeat invocations
|
||||
if ( completed ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// State is "done" now
|
||||
state = 2;
|
||||
completed = true;
|
||||
|
||||
// Clear timeout if it exists
|
||||
if ( timeoutTimer ) {
|
||||
|
|
2
bower_components/jquery/src/ajax/jsonp.js
vendored
2
bower_components/jquery/src/ajax/jsonp.js
vendored
|
@ -5,6 +5,8 @@ define( [
|
|||
"../ajax"
|
||||
], function( jQuery, nonce, rquery ) {
|
||||
|
||||
"use strict";
|
||||
|
||||
var oldCallbacks = [],
|
||||
rjsonp = /(=)\?(?=&|$)|\?\?/;
|
||||
|
||||
|
|
17
bower_components/jquery/src/ajax/load.js
vendored
17
bower_components/jquery/src/ajax/load.js
vendored
|
@ -1,32 +1,25 @@
|
|||
define( [
|
||||
"../core",
|
||||
"../core/stripAndCollapse",
|
||||
"../core/parseHTML",
|
||||
"../ajax",
|
||||
"../traversing",
|
||||
"../manipulation",
|
||||
"../selector",
|
||||
"../selector"
|
||||
], function( jQuery, stripAndCollapse ) {
|
||||
|
||||
// Optional event/alias dependency
|
||||
"../event/alias"
|
||||
], function( jQuery ) {
|
||||
|
||||
// Keep a copy of the old load method
|
||||
var _load = jQuery.fn.load;
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
* Load a url into a page
|
||||
*/
|
||||
jQuery.fn.load = function( url, params, callback ) {
|
||||
if ( typeof url !== "string" && _load ) {
|
||||
return _load.apply( this, arguments );
|
||||
}
|
||||
|
||||
var selector, type, response,
|
||||
self = this,
|
||||
off = url.indexOf( " " );
|
||||
|
||||
if ( off > -1 ) {
|
||||
selector = jQuery.trim( url.slice( off ) );
|
||||
selector = stripAndCollapse( url.slice( off ) );
|
||||
url = url.slice( 0, off );
|
||||
}
|
||||
|
||||
|
|
13
bower_components/jquery/src/ajax/parseJSON.js
vendored
13
bower_components/jquery/src/ajax/parseJSON.js
vendored
|
@ -1,13 +0,0 @@
|
|||
define( [
|
||||
"../core"
|
||||
], function( jQuery ) {
|
||||
|
||||
// Support: Android 2.3
|
||||
// Workaround failure to string-cast null input
|
||||
jQuery.parseJSON = function( data ) {
|
||||
return JSON.parse( data + "" );
|
||||
};
|
||||
|
||||
return jQuery.parseJSON;
|
||||
|
||||
} );
|
5
bower_components/jquery/src/ajax/parseXML.js
vendored
5
bower_components/jquery/src/ajax/parseXML.js
vendored
|
@ -2,6 +2,8 @@ define( [
|
|||
"../core"
|
||||
], function( jQuery ) {
|
||||
|
||||
"use strict";
|
||||
|
||||
// Cross-browser xml parsing
|
||||
jQuery.parseXML = function( data ) {
|
||||
var xml;
|
||||
|
@ -9,7 +11,8 @@ jQuery.parseXML = function( data ) {
|
|||
return null;
|
||||
}
|
||||
|
||||
// Support: IE9
|
||||
// Support: IE 9 - 11 only
|
||||
// IE throws on parseFromString with invalid input.
|
||||
try {
|
||||
xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
|
||||
} catch ( e ) {
|
||||
|
|
9
bower_components/jquery/src/ajax/script.js
vendored
9
bower_components/jquery/src/ajax/script.js
vendored
|
@ -4,6 +4,15 @@ define( [
|
|||
"../ajax"
|
||||
], function( jQuery, document ) {
|
||||
|
||||
"use strict";
|
||||
|
||||
// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)
|
||||
jQuery.ajaxPrefilter( function( s ) {
|
||||
if ( s.crossDomain ) {
|
||||
s.contents.script = false;
|
||||
}
|
||||
} );
|
||||
|
||||
// Install script dataType
|
||||
jQuery.ajaxSetup( {
|
||||
accepts: {
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
define( function() {
|
||||
"use strict";
|
||||
|
||||
return window.location;
|
||||
} );
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
define( [
|
||||
"../../core"
|
||||
], function( jQuery ) {
|
||||
"use strict";
|
||||
|
||||
return jQuery.now();
|
||||
} );
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
define( function() {
|
||||
"use strict";
|
||||
|
||||
return ( /\?/ );
|
||||
} );
|
||||
|
|
10
bower_components/jquery/src/ajax/xhr.js
vendored
10
bower_components/jquery/src/ajax/xhr.js
vendored
|
@ -4,6 +4,8 @@ define( [
|
|||
"../ajax"
|
||||
], function( jQuery, support ) {
|
||||
|
||||
"use strict";
|
||||
|
||||
jQuery.ajaxSettings.xhr = function() {
|
||||
try {
|
||||
return new window.XMLHttpRequest();
|
||||
|
@ -15,7 +17,7 @@ var xhrSuccessStatus = {
|
|||
// File protocol always yields status code 0, assume 200
|
||||
0: 200,
|
||||
|
||||
// Support: IE9
|
||||
// Support: IE <=9 only
|
||||
// #1450: sometimes IE returns 1223 when it should be 204
|
||||
1223: 204
|
||||
},
|
||||
|
@ -79,7 +81,7 @@ jQuery.ajaxTransport( function( options ) {
|
|||
xhr.abort();
|
||||
} else if ( type === "error" ) {
|
||||
|
||||
// Support: IE9
|
||||
// Support: IE <=9 only
|
||||
// On a manual native abort, IE9 throws
|
||||
// errors on any property access that is not readyState
|
||||
if ( typeof xhr.status !== "number" ) {
|
||||
|
@ -97,7 +99,7 @@ jQuery.ajaxTransport( function( options ) {
|
|||
xhrSuccessStatus[ xhr.status ] || xhr.status,
|
||||
xhr.statusText,
|
||||
|
||||
// Support: IE9 only
|
||||
// Support: IE <=9 only
|
||||
// IE9 has no XHR2 but throws on binary (trac-11426)
|
||||
// For XHR2 non-text, let the caller handle it (gh-2498)
|
||||
( xhr.responseType || "text" ) !== "text" ||
|
||||
|
@ -115,7 +117,7 @@ jQuery.ajaxTransport( function( options ) {
|
|||
xhr.onload = callback();
|
||||
errorCallback = xhr.onerror = callback( "error" );
|
||||
|
||||
// Support: IE9
|
||||
// Support: IE 9 only
|
||||
// Use onreadystatechange to replace onabort
|
||||
// to handle uncaught aborts
|
||||
if ( xhr.onabort !== undefined ) {
|
||||
|
|
2
bower_components/jquery/src/attributes.js
vendored
2
bower_components/jquery/src/attributes.js
vendored
|
@ -6,6 +6,8 @@ define( [
|
|||
"./attributes/val"
|
||||
], function( jQuery ) {
|
||||
|
||||
"use strict";
|
||||
|
||||
// Return jQuery for attributes-only inclusion
|
||||
return jQuery;
|
||||
} );
|
||||
|
|
40
bower_components/jquery/src/attributes/attr.js
vendored
40
bower_components/jquery/src/attributes/attr.js
vendored
|
@ -2,9 +2,11 @@ define( [
|
|||
"../core",
|
||||
"../core/access",
|
||||
"./support",
|
||||
"../var/rnotwhite",
|
||||
"../var/rnothtmlwhite",
|
||||
"../selector"
|
||||
], function( jQuery, access, support, rnotwhite ) {
|
||||
], function( jQuery, access, support, rnothtmlwhite ) {
|
||||
|
||||
"use strict";
|
||||
|
||||
var boolHook,
|
||||
attrHandle = jQuery.expr.attrHandle;
|
||||
|
@ -36,11 +38,10 @@ jQuery.extend( {
|
|||
return jQuery.prop( elem, name, value );
|
||||
}
|
||||
|
||||
// All attributes are lowercase
|
||||
// Attribute hooks are determined by the lowercase version
|
||||
// Grab necessary hook if one is defined
|
||||
if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
|
||||
name = name.toLowerCase();
|
||||
hooks = jQuery.attrHooks[ name ] ||
|
||||
hooks = jQuery.attrHooks[ name.toLowerCase() ] ||
|
||||
( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );
|
||||
}
|
||||
|
||||
|
@ -86,21 +87,15 @@ jQuery.extend( {
|
|||
},
|
||||
|
||||
removeAttr: function( elem, value ) {
|
||||
var name, propName,
|
||||
var name,
|
||||
i = 0,
|
||||
attrNames = value && value.match( rnotwhite );
|
||||
|
||||
// Attribute names can contain non-HTML whitespace characters
|
||||
// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2
|
||||
attrNames = value && value.match( rnothtmlwhite );
|
||||
|
||||
if ( attrNames && elem.nodeType === 1 ) {
|
||||
while ( ( name = attrNames[ i++ ] ) ) {
|
||||
propName = jQuery.propFix[ name ] || name;
|
||||
|
||||
// Boolean attributes get special treatment (#10870)
|
||||
if ( jQuery.expr.match.bool.test( name ) ) {
|
||||
|
||||
// Set corresponding property to false
|
||||
elem[ propName ] = false;
|
||||
}
|
||||
|
||||
elem.removeAttribute( name );
|
||||
}
|
||||
}
|
||||
|
@ -120,20 +115,23 @@ boolHook = {
|
|||
return name;
|
||||
}
|
||||
};
|
||||
|
||||
jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
|
||||
var getter = attrHandle[ name ] || jQuery.find.attr;
|
||||
|
||||
attrHandle[ name ] = function( elem, name, isXML ) {
|
||||
var ret, handle;
|
||||
var ret, handle,
|
||||
lowercaseName = name.toLowerCase();
|
||||
|
||||
if ( !isXML ) {
|
||||
|
||||
// Avoid an infinite loop by temporarily removing this function from the getter
|
||||
handle = attrHandle[ name ];
|
||||
attrHandle[ name ] = ret;
|
||||
handle = attrHandle[ lowercaseName ];
|
||||
attrHandle[ lowercaseName ] = ret;
|
||||
ret = getter( elem, name, isXML ) != null ?
|
||||
name.toLowerCase() :
|
||||
lowercaseName :
|
||||
null;
|
||||
attrHandle[ name ] = handle;
|
||||
attrHandle[ lowercaseName ] = handle;
|
||||
}
|
||||
return ret;
|
||||
};
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
define( [
|
||||
"../core",
|
||||
"../var/rnotwhite",
|
||||
"../core/stripAndCollapse",
|
||||
"../var/rnothtmlwhite",
|
||||
"../data/var/dataPriv",
|
||||
"../core/init"
|
||||
], function( jQuery, rnotwhite, dataPriv ) {
|
||||
], function( jQuery, stripAndCollapse, rnothtmlwhite, dataPriv ) {
|
||||
|
||||
var rclass = /[\t\r\n\f]/g;
|
||||
"use strict";
|
||||
|
||||
function getClass( elem ) {
|
||||
return elem.getAttribute && elem.getAttribute( "class" ) || "";
|
||||
|
@ -23,12 +24,11 @@ jQuery.fn.extend( {
|
|||
}
|
||||
|
||||
if ( typeof value === "string" && value ) {
|
||||
classes = value.match( rnotwhite ) || [];
|
||||
classes = value.match( rnothtmlwhite ) || [];
|
||||
|
||||
while ( ( elem = this[ i++ ] ) ) {
|
||||
curValue = getClass( elem );
|
||||
cur = elem.nodeType === 1 &&
|
||||
( " " + curValue + " " ).replace( rclass, " " );
|
||||
cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
|
||||
|
||||
if ( cur ) {
|
||||
j = 0;
|
||||
|
@ -39,7 +39,7 @@ jQuery.fn.extend( {
|
|||
}
|
||||
|
||||
// Only assign if different to avoid unneeded rendering.
|
||||
finalValue = jQuery.trim( cur );
|
||||
finalValue = stripAndCollapse( cur );
|
||||
if ( curValue !== finalValue ) {
|
||||
elem.setAttribute( "class", finalValue );
|
||||
}
|
||||
|
@ -65,14 +65,13 @@ jQuery.fn.extend( {
|
|||
}
|
||||
|
||||
if ( typeof value === "string" && value ) {
|
||||
classes = value.match( rnotwhite ) || [];
|
||||
classes = value.match( rnothtmlwhite ) || [];
|
||||
|
||||
while ( ( elem = this[ i++ ] ) ) {
|
||||
curValue = getClass( elem );
|
||||
|
||||
// This expression is here for better compressibility (see addClass)
|
||||
cur = elem.nodeType === 1 &&
|
||||
( " " + curValue + " " ).replace( rclass, " " );
|
||||
cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
|
||||
|
||||
if ( cur ) {
|
||||
j = 0;
|
||||
|
@ -85,7 +84,7 @@ jQuery.fn.extend( {
|
|||
}
|
||||
|
||||
// Only assign if different to avoid unneeded rendering.
|
||||
finalValue = jQuery.trim( cur );
|
||||
finalValue = stripAndCollapse( cur );
|
||||
if ( curValue !== finalValue ) {
|
||||
elem.setAttribute( "class", finalValue );
|
||||
}
|
||||
|
@ -120,7 +119,7 @@ jQuery.fn.extend( {
|
|||
// Toggle individual class names
|
||||
i = 0;
|
||||
self = jQuery( this );
|
||||
classNames = value.match( rnotwhite ) || [];
|
||||
classNames = value.match( rnothtmlwhite ) || [];
|
||||
|
||||
while ( ( className = classNames[ i++ ] ) ) {
|
||||
|
||||
|
@ -163,10 +162,8 @@ jQuery.fn.extend( {
|
|||
className = " " + selector + " ";
|
||||
while ( ( elem = this[ i++ ] ) ) {
|
||||
if ( elem.nodeType === 1 &&
|
||||
( " " + getClass( elem ) + " " ).replace( rclass, " " )
|
||||
.indexOf( className ) > -1
|
||||
) {
|
||||
return true;
|
||||
( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
30
bower_components/jquery/src/attributes/prop.js
vendored
30
bower_components/jquery/src/attributes/prop.js
vendored
|
@ -5,6 +5,8 @@ define( [
|
|||
"../selector"
|
||||
], function( jQuery, access, support ) {
|
||||
|
||||
"use strict";
|
||||
|
||||
var rfocusable = /^(?:input|select|textarea|button)$/i,
|
||||
rclickable = /^(?:a|area)$/i;
|
||||
|
||||
|
@ -57,18 +59,26 @@ jQuery.extend( {
|
|||
tabIndex: {
|
||||
get: function( elem ) {
|
||||
|
||||
// Support: IE <=9 - 11 only
|
||||
// elem.tabIndex doesn't always return the
|
||||
// correct value when it hasn't been explicitly set
|
||||
// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
|
||||
// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
|
||||
// Use proper attribute retrieval(#12072)
|
||||
var tabindex = jQuery.find.attr( elem, "tabindex" );
|
||||
|
||||
return tabindex ?
|
||||
parseInt( tabindex, 10 ) :
|
||||
if ( tabindex ) {
|
||||
return parseInt( tabindex, 10 );
|
||||
}
|
||||
|
||||
if (
|
||||
rfocusable.test( elem.nodeName ) ||
|
||||
rclickable.test( elem.nodeName ) && elem.href ?
|
||||
0 :
|
||||
-1;
|
||||
rclickable.test( elem.nodeName ) &&
|
||||
elem.href
|
||||
) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -85,9 +95,14 @@ jQuery.extend( {
|
|||
// on the option
|
||||
// The getter ensures a default option is selected
|
||||
// when in an optgroup
|
||||
// eslint rule "no-unused-expressions" is disabled for this code
|
||||
// since it considers such accessions noop
|
||||
if ( !support.optSelected ) {
|
||||
jQuery.propHooks.selected = {
|
||||
get: function( elem ) {
|
||||
|
||||
/* eslint no-unused-expressions: "off" */
|
||||
|
||||
var parent = elem.parentNode;
|
||||
if ( parent && parent.parentNode ) {
|
||||
parent.parentNode.selectedIndex;
|
||||
|
@ -95,6 +110,9 @@ if ( !support.optSelected ) {
|
|||
return null;
|
||||
},
|
||||
set: function( elem ) {
|
||||
|
||||
/* eslint no-unused-expressions: "off" */
|
||||
|
||||
var parent = elem.parentNode;
|
||||
if ( parent ) {
|
||||
parent.selectedIndex;
|
||||
|
|
|
@ -3,6 +3,8 @@ define( [
|
|||
"../var/support"
|
||||
], function( document, support ) {
|
||||
|
||||
"use strict";
|
||||
|
||||
( function() {
|
||||
var input = document.createElement( "input" ),
|
||||
select = document.createElement( "select" ),
|
||||
|
@ -10,20 +12,15 @@ define( [
|
|||
|
||||
input.type = "checkbox";
|
||||
|
||||
// Support: iOS<=5.1, Android<=4.2+
|
||||
// Support: Android <=4.3 only
|
||||
// Default value for a checkbox should be "on"
|
||||
support.checkOn = input.value !== "";
|
||||
|
||||
// Support: IE<=11+
|
||||
// Support: IE <=11 only
|
||||
// Must access selectedIndex to make default options select
|
||||
support.optSelected = opt.selected;
|
||||
|
||||
// Support: Android<=2.3
|
||||
// Options inside disabled selects are incorrectly marked as disabled
|
||||
select.disabled = true;
|
||||
support.optDisabled = !opt.disabled;
|
||||
|
||||
// Support: IE<=11+
|
||||
// Support: IE <=11 only
|
||||
// An input loses its value after becoming a radio
|
||||
input = document.createElement( "input" );
|
||||
input.value = "t";
|
||||
|
|
49
bower_components/jquery/src/attributes/val.js
vendored
49
bower_components/jquery/src/attributes/val.js
vendored
|
@ -1,11 +1,13 @@
|
|||
define( [
|
||||
"../core",
|
||||
"../core/stripAndCollapse",
|
||||
"./support",
|
||||
"../core/init"
|
||||
], function( jQuery, support ) {
|
||||
], function( jQuery, stripAndCollapse, support ) {
|
||||
|
||||
var rreturn = /\r/g,
|
||||
rspaces = /[\x20\t\r\n\f]+/g;
|
||||
"use strict";
|
||||
|
||||
var rreturn = /\r/g;
|
||||
|
||||
jQuery.fn.extend( {
|
||||
val: function( value ) {
|
||||
|
@ -26,13 +28,13 @@ jQuery.fn.extend( {
|
|||
|
||||
ret = elem.value;
|
||||
|
||||
return typeof ret === "string" ?
|
||||
// Handle most common string cases
|
||||
if ( typeof ret === "string" ) {
|
||||
return ret.replace( rreturn, "" );
|
||||
}
|
||||
|
||||
// Handle most common string cases
|
||||
ret.replace( rreturn, "" ) :
|
||||
|
||||
// Handle cases where value is null/undef or number
|
||||
ret == null ? "" : ret;
|
||||
// Handle cases where value is null/undef or number
|
||||
return ret == null ? "" : ret;
|
||||
}
|
||||
|
||||
return;
|
||||
|
@ -85,35 +87,39 @@ jQuery.extend( {
|
|||
return val != null ?
|
||||
val :
|
||||
|
||||
// Support: IE10-11+
|
||||
// Support: IE <=10 - 11 only
|
||||
// option.text throws exceptions (#14686, #14858)
|
||||
// Strip and collapse whitespace
|
||||
// https://html.spec.whatwg.org/#strip-and-collapse-whitespace
|
||||
jQuery.trim( jQuery.text( elem ) ).replace( rspaces, " " );
|
||||
stripAndCollapse( jQuery.text( elem ) );
|
||||
}
|
||||
},
|
||||
select: {
|
||||
get: function( elem ) {
|
||||
var value, option,
|
||||
var value, option, i,
|
||||
options = elem.options,
|
||||
index = elem.selectedIndex,
|
||||
one = elem.type === "select-one" || index < 0,
|
||||
one = elem.type === "select-one",
|
||||
values = one ? null : [],
|
||||
max = one ? index + 1 : options.length,
|
||||
i = index < 0 ?
|
||||
max :
|
||||
one ? index : 0;
|
||||
max = one ? index + 1 : options.length;
|
||||
|
||||
if ( index < 0 ) {
|
||||
i = max;
|
||||
|
||||
} else {
|
||||
i = one ? index : 0;
|
||||
}
|
||||
|
||||
// Loop through all the selected options
|
||||
for ( ; i < max; i++ ) {
|
||||
option = options[ i ];
|
||||
|
||||
// Support: IE <=9 only
|
||||
// IE8-9 doesn't update selected after form reset (#2551)
|
||||
if ( ( option.selected || i === index ) &&
|
||||
|
||||
// Don't return options that are disabled or in a disabled optgroup
|
||||
( support.optDisabled ?
|
||||
!option.disabled : option.getAttribute( "disabled" ) === null ) &&
|
||||
!option.disabled &&
|
||||
( !option.parentNode.disabled ||
|
||||
!jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
|
||||
|
||||
|
@ -141,11 +147,16 @@ jQuery.extend( {
|
|||
|
||||
while ( i-- ) {
|
||||
option = options[ i ];
|
||||
|
||||
/* eslint-disable no-cond-assign */
|
||||
|
||||
if ( option.selected =
|
||||
jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1
|
||||
) {
|
||||
optionSet = true;
|
||||
}
|
||||
|
||||
/* eslint-enable no-cond-assign */
|
||||
}
|
||||
|
||||
// Force browsers to behave consistently when non-matching value is set
|
||||
|
|
10
bower_components/jquery/src/callbacks.js
vendored
10
bower_components/jquery/src/callbacks.js
vendored
|
@ -1,12 +1,14 @@
|
|||
define( [
|
||||
"./core",
|
||||
"./var/rnotwhite"
|
||||
], function( jQuery, rnotwhite ) {
|
||||
"./var/rnothtmlwhite"
|
||||
], function( jQuery, rnothtmlwhite ) {
|
||||
|
||||
"use strict";
|
||||
|
||||
// Convert String-formatted options into Object-formatted ones
|
||||
function createOptions( options ) {
|
||||
var object = {};
|
||||
jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {
|
||||
jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {
|
||||
object[ flag ] = true;
|
||||
} );
|
||||
return object;
|
||||
|
@ -191,7 +193,7 @@ jQuery.Callbacks = function( options ) {
|
|||
// Abort any pending executions
|
||||
lock: function() {
|
||||
locked = queue = [];
|
||||
if ( !memory ) {
|
||||
if ( !memory && !firing ) {
|
||||
list = memory = "";
|
||||
}
|
||||
return this;
|
||||
|
|
124
bower_components/jquery/src/core.js
vendored
124
bower_components/jquery/src/core.js
vendored
|
@ -1,6 +1,11 @@
|
|||
/* global Symbol */
|
||||
// Defining this global in .eslintrc.json would create a danger of using the global
|
||||
// unguarded in another place, it seems safer to define global only for this module
|
||||
|
||||
define( [
|
||||
"./var/arr",
|
||||
"./var/document",
|
||||
"./var/getProto",
|
||||
"./var/slice",
|
||||
"./var/concat",
|
||||
"./var/push",
|
||||
|
@ -8,11 +13,18 @@ define( [
|
|||
"./var/class2type",
|
||||
"./var/toString",
|
||||
"./var/hasOwn",
|
||||
"./var/support"
|
||||
], function( arr, document, slice, concat, push, indexOf, class2type, toString, hasOwn, support ) {
|
||||
"./var/fnToString",
|
||||
"./var/ObjectFunctionString",
|
||||
"./var/support",
|
||||
"./core/DOMEval"
|
||||
], function( arr, document, getProto, slice, concat, push, indexOf,
|
||||
class2type, toString, hasOwn, fnToString, ObjectFunctionString,
|
||||
support, DOMEval ) {
|
||||
|
||||
"use strict";
|
||||
|
||||
var
|
||||
version = "@VERSION",
|
||||
version = "3.1.1",
|
||||
|
||||
// Define a local copy of jQuery
|
||||
jQuery = function( selector, context ) {
|
||||
|
@ -22,13 +34,13 @@ var
|
|||
return new jQuery.fn.init( selector, context );
|
||||
},
|
||||
|
||||
// Support: Android<4.1
|
||||
// Support: Android <=4.0 only
|
||||
// Make sure we trim BOM and NBSP
|
||||
rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
|
||||
|
||||
// Matches dashed string for camelizing
|
||||
rmsPrefix = /^-ms-/,
|
||||
rdashAlpha = /-([\da-z])/gi,
|
||||
rdashAlpha = /-([a-z])/g,
|
||||
|
||||
// Used by jQuery.camelCase as callback to replace()
|
||||
fcamelCase = function( all, letter ) {
|
||||
|
@ -42,9 +54,6 @@ jQuery.fn = jQuery.prototype = {
|
|||
|
||||
constructor: jQuery,
|
||||
|
||||
// Start with an empty selector
|
||||
selector: "",
|
||||
|
||||
// The default length of a jQuery object is 0
|
||||
length: 0,
|
||||
|
||||
|
@ -55,13 +64,14 @@ jQuery.fn = jQuery.prototype = {
|
|||
// Get the Nth element in the matched element set OR
|
||||
// Get the whole matched element set as a clean array
|
||||
get: function( num ) {
|
||||
return num != null ?
|
||||
|
||||
// Return just the one element from the set
|
||||
( num < 0 ? this[ num + this.length ] : this[ num ] ) :
|
||||
// Return all the elements in a clean array
|
||||
if ( num == null ) {
|
||||
return slice.call( this );
|
||||
}
|
||||
|
||||
// Return all the elements in a clean array
|
||||
slice.call( this );
|
||||
// Return just the one element from the set
|
||||
return num < 0 ? this[ num + this.length ] : this[ num ];
|
||||
},
|
||||
|
||||
// Take an array of elements and push it onto the stack
|
||||
|
@ -73,7 +83,6 @@ jQuery.fn = jQuery.prototype = {
|
|||
|
||||
// Add the old object onto the stack (as a reference)
|
||||
ret.prevObject = this;
|
||||
ret.context = this.context;
|
||||
|
||||
// Return the newly-formed element set
|
||||
return ret;
|
||||
|
@ -214,41 +223,45 @@ jQuery.extend( {
|
|||
|
||||
isNumeric: function( obj ) {
|
||||
|
||||
// parseFloat NaNs numeric-cast false positives (null|true|false|"")
|
||||
// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
|
||||
// subtraction forces infinities to NaN
|
||||
// adding 1 corrects loss of precision from parseFloat (#15100)
|
||||
var realStringObj = obj && obj.toString();
|
||||
return !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0;
|
||||
// As of jQuery 3.0, isNumeric is limited to
|
||||
// strings and numbers (primitives or objects)
|
||||
// that can be coerced to finite numbers (gh-2662)
|
||||
var type = jQuery.type( obj );
|
||||
return ( type === "number" || type === "string" ) &&
|
||||
|
||||
// parseFloat NaNs numeric-cast false positives ("")
|
||||
// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
|
||||
// subtraction forces infinities to NaN
|
||||
!isNaN( obj - parseFloat( obj ) );
|
||||
},
|
||||
|
||||
isPlainObject: function( obj ) {
|
||||
var key;
|
||||
var proto, Ctor;
|
||||
|
||||
// Not plain objects:
|
||||
// - Any object or value whose internal [[Class]] property is not "[object Object]"
|
||||
// - DOM nodes
|
||||
// - window
|
||||
if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
|
||||
// Detect obvious negatives
|
||||
// Use toString instead of jQuery.type to catch host objects
|
||||
if ( !obj || toString.call( obj ) !== "[object Object]" ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Not own constructor property must be Object
|
||||
if ( obj.constructor &&
|
||||
!hasOwn.call( obj, "constructor" ) &&
|
||||
!hasOwn.call( obj.constructor.prototype || {}, "isPrototypeOf" ) ) {
|
||||
return false;
|
||||
proto = getProto( obj );
|
||||
|
||||
// Objects with no prototype (e.g., `Object.create( null )`) are plain
|
||||
if ( !proto ) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// Own properties are enumerated firstly, so to speed up,
|
||||
// if last one is own, then all properties are own
|
||||
for ( key in obj ) {}
|
||||
|
||||
return key === undefined || hasOwn.call( obj, key );
|
||||
// Objects with prototype are plain iff they were constructed by a global Object function
|
||||
Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor;
|
||||
return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;
|
||||
},
|
||||
|
||||
isEmptyObject: function( obj ) {
|
||||
|
||||
/* eslint-disable no-unused-vars */
|
||||
// See https://github.com/eslint/eslint/issues/6125
|
||||
var name;
|
||||
|
||||
for ( name in obj ) {
|
||||
return false;
|
||||
}
|
||||
|
@ -260,7 +273,7 @@ jQuery.extend( {
|
|||
return obj + "";
|
||||
}
|
||||
|
||||
// Support: Android<4.0, iOS<6 (functionish RegExp)
|
||||
// Support: Android <=2.3 only (functionish RegExp)
|
||||
return typeof obj === "object" || typeof obj === "function" ?
|
||||
class2type[ toString.call( obj ) ] || "object" :
|
||||
typeof obj;
|
||||
|
@ -268,32 +281,11 @@ jQuery.extend( {
|
|||
|
||||
// Evaluates a script in a global context
|
||||
globalEval: function( code ) {
|
||||
var script,
|
||||
indirect = eval;
|
||||
|
||||
code = jQuery.trim( code );
|
||||
|
||||
if ( code ) {
|
||||
|
||||
// If the code includes a valid, prologue position
|
||||
// strict mode pragma, execute code by injecting a
|
||||
// script tag into the document.
|
||||
if ( code.indexOf( "use strict" ) === 1 ) {
|
||||
script = document.createElement( "script" );
|
||||
script.text = code;
|
||||
document.head.appendChild( script ).parentNode.removeChild( script );
|
||||
} else {
|
||||
|
||||
// Otherwise, avoid the DOM node creation, insertion
|
||||
// and removal by using an indirect global eval
|
||||
|
||||
indirect( code );
|
||||
}
|
||||
}
|
||||
DOMEval( code );
|
||||
},
|
||||
|
||||
// Convert dashed to camelCase; used by the css and data modules
|
||||
// Support: IE9-11+
|
||||
// Support: IE <=9 - 11, Edge 12 - 13
|
||||
// Microsoft forgot to hump their vendor prefix (#9572)
|
||||
camelCase: function( string ) {
|
||||
return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
|
||||
|
@ -324,7 +316,7 @@ jQuery.extend( {
|
|||
return obj;
|
||||
},
|
||||
|
||||
// Support: Android<4.1
|
||||
// Support: Android <=4.0 only
|
||||
trim: function( text ) {
|
||||
return text == null ?
|
||||
"" :
|
||||
|
@ -353,6 +345,8 @@ jQuery.extend( {
|
|||
return arr == null ? -1 : indexOf.call( arr, elem, i );
|
||||
},
|
||||
|
||||
// Support: Android <=4.0 only, PhantomJS 1 only
|
||||
// push.apply(_, arraylike) throws on ancient WebKit
|
||||
merge: function( first, second ) {
|
||||
var len = +second.length,
|
||||
j = 0,
|
||||
|
@ -457,15 +451,9 @@ jQuery.extend( {
|
|||
support: support
|
||||
} );
|
||||
|
||||
// JSHint would error on this code due to the Symbol not being defined in ES5.
|
||||
// Defining this global in .jshintrc would create a danger of using the global
|
||||
// unguarded in another place, it seems safer to just disable JSHint for these
|
||||
// three lines.
|
||||
/* jshint ignore: start */
|
||||
if ( typeof Symbol === "function" ) {
|
||||
jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
|
||||
}
|
||||
/* jshint ignore: end */
|
||||
|
||||
// Populate the class2type map
|
||||
jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
|
||||
|
@ -475,7 +463,7 @@ function( i, name ) {
|
|||
|
||||
function isArrayLike( obj ) {
|
||||
|
||||
// Support: iOS 8.2 (not reproducible in simulator)
|
||||
// Support: real iOS 8.2 only (not reproducible in simulator)
|
||||
// `in` check used to prevent JIT error (gh-2145)
|
||||
// hasOwn isn't used here due to false negatives
|
||||
// regarding Nodelist length in IE
|
||||
|
|
16
bower_components/jquery/src/core/DOMEval.js
vendored
Normal file
16
bower_components/jquery/src/core/DOMEval.js
vendored
Normal file
|
@ -0,0 +1,16 @@
|
|||
define( [
|
||||
"../var/document"
|
||||
], function( document ) {
|
||||
"use strict";
|
||||
|
||||
function DOMEval( code, doc ) {
|
||||
doc = doc || document;
|
||||
|
||||
var script = doc.createElement( "script" );
|
||||
|
||||
script.text = code;
|
||||
doc.head.appendChild( script ).parentNode.removeChild( script );
|
||||
}
|
||||
|
||||
return DOMEval;
|
||||
} );
|
17
bower_components/jquery/src/core/access.js
vendored
17
bower_components/jquery/src/core/access.js
vendored
|
@ -2,6 +2,8 @@ define( [
|
|||
"../core"
|
||||
], function( jQuery ) {
|
||||
|
||||
"use strict";
|
||||
|
||||
// Multifunctional method to get and set values of a collection
|
||||
// The value/s can optionally be executed if it's a function
|
||||
var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
|
||||
|
@ -51,13 +53,16 @@ var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
|
|||
}
|
||||
}
|
||||
|
||||
return chainable ?
|
||||
elems :
|
||||
if ( chainable ) {
|
||||
return elems;
|
||||
}
|
||||
|
||||
// Gets
|
||||
bulk ?
|
||||
fn.call( elems ) :
|
||||
len ? fn( elems[ 0 ], key ) : emptyGet;
|
||||
// Gets
|
||||
if ( bulk ) {
|
||||
return fn.call( elems );
|
||||
}
|
||||
|
||||
return len ? fn( elems[ 0 ], key ) : emptyGet;
|
||||
};
|
||||
|
||||
return access;
|
||||
|
|
21
bower_components/jquery/src/core/init.js
vendored
21
bower_components/jquery/src/core/init.js
vendored
|
@ -6,13 +6,16 @@ define( [
|
|||
"../traversing/findFilter"
|
||||
], function( jQuery, document, rsingleTag ) {
|
||||
|
||||
"use strict";
|
||||
|
||||
// A central reference to the root jQuery(document)
|
||||
var rootjQuery,
|
||||
|
||||
// A simple way to check for HTML strings
|
||||
// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
|
||||
// Strict HTML recognition (#11290: must start with <)
|
||||
rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
|
||||
// Shortcut simple #id case for speed
|
||||
rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
|
||||
|
||||
init = jQuery.fn.init = function( selector, context, root ) {
|
||||
var match, elem;
|
||||
|
@ -75,17 +78,12 @@ var rootjQuery,
|
|||
} else {
|
||||
elem = document.getElementById( match[ 2 ] );
|
||||
|
||||
// Support: Blackberry 4.6
|
||||
// gEBID returns nodes no longer in the document (#6963)
|
||||
if ( elem && elem.parentNode ) {
|
||||
if ( elem ) {
|
||||
|
||||
// Inject the element directly into the jQuery object
|
||||
this.length = 1;
|
||||
this[ 0 ] = elem;
|
||||
this.length = 1;
|
||||
}
|
||||
|
||||
this.context = document;
|
||||
this.selector = selector;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
@ -101,7 +99,7 @@ var rootjQuery,
|
|||
|
||||
// HANDLE: $(DOMElement)
|
||||
} else if ( selector.nodeType ) {
|
||||
this.context = this[ 0 ] = selector;
|
||||
this[ 0 ] = selector;
|
||||
this.length = 1;
|
||||
return this;
|
||||
|
||||
|
@ -115,11 +113,6 @@ var rootjQuery,
|
|||
selector( jQuery );
|
||||
}
|
||||
|
||||
if ( selector.selector !== undefined ) {
|
||||
this.selector = selector.selector;
|
||||
this.context = selector.context;
|
||||
}
|
||||
|
||||
return jQuery.makeArray( selector, this );
|
||||
};
|
||||
|
||||
|
|
38
bower_components/jquery/src/core/parseHTML.js
vendored
38
bower_components/jquery/src/core/parseHTML.js
vendored
|
@ -2,25 +2,49 @@ define( [
|
|||
"../core",
|
||||
"../var/document",
|
||||
"./var/rsingleTag",
|
||||
"../manipulation/buildFragment"
|
||||
], function( jQuery, document, rsingleTag, buildFragment ) {
|
||||
"../manipulation/buildFragment",
|
||||
|
||||
// This is the only module that needs core/support
|
||||
"./support"
|
||||
], function( jQuery, document, rsingleTag, buildFragment, support ) {
|
||||
|
||||
"use strict";
|
||||
|
||||
// Argument "data" should be string of html
|
||||
// context (optional): If specified, the fragment will be created in this context,
|
||||
// defaults to document
|
||||
// keepScripts (optional): If true, will include scripts passed in the html string
|
||||
jQuery.parseHTML = function( data, context, keepScripts ) {
|
||||
if ( !data || typeof data !== "string" ) {
|
||||
return null;
|
||||
if ( typeof data !== "string" ) {
|
||||
return [];
|
||||
}
|
||||
if ( typeof context === "boolean" ) {
|
||||
keepScripts = context;
|
||||
context = false;
|
||||
}
|
||||
context = context || document;
|
||||
|
||||
var parsed = rsingleTag.exec( data ),
|
||||
scripts = !keepScripts && [];
|
||||
var base, parsed, scripts;
|
||||
|
||||
if ( !context ) {
|
||||
|
||||
// Stop scripts or inline event handlers from being executed immediately
|
||||
// by using document.implementation
|
||||
if ( support.createHTMLDocument ) {
|
||||
context = document.implementation.createHTMLDocument( "" );
|
||||
|
||||
// Set the base href for the created document
|
||||
// so any parsed elements with URLs
|
||||
// are based on the document's URL (gh-2965)
|
||||
base = context.createElement( "base" );
|
||||
base.href = document.location.href;
|
||||
context.head.appendChild( base );
|
||||
} else {
|
||||
context = document;
|
||||
}
|
||||
}
|
||||
|
||||
parsed = rsingleTag.exec( data );
|
||||
scripts = !keepScripts && [];
|
||||
|
||||
// Single tag
|
||||
if ( parsed ) {
|
||||
|
|
105
bower_components/jquery/src/core/ready-no-deferred.js
vendored
Normal file
105
bower_components/jquery/src/core/ready-no-deferred.js
vendored
Normal file
|
@ -0,0 +1,105 @@
|
|||
define( [
|
||||
"../core",
|
||||
"../var/document"
|
||||
], function( jQuery, document ) {
|
||||
|
||||
"use strict";
|
||||
|
||||
var readyCallbacks = [],
|
||||
whenReady = function( fn ) {
|
||||
readyCallbacks.push( fn );
|
||||
},
|
||||
executeReady = function( fn ) {
|
||||
|
||||
// Prevent errors from freezing future callback execution (gh-1823)
|
||||
// Not backwards-compatible as this does not execute sync
|
||||
window.setTimeout( function() {
|
||||
fn.call( document, jQuery );
|
||||
} );
|
||||
};
|
||||
|
||||
jQuery.fn.ready = function( fn ) {
|
||||
whenReady( fn );
|
||||
return this;
|
||||
};
|
||||
|
||||
jQuery.extend( {
|
||||
|
||||
// Is the DOM ready to be used? Set to true once it occurs.
|
||||
isReady: false,
|
||||
|
||||
// A counter to track how many items to wait for before
|
||||
// the ready event fires. See #6781
|
||||
readyWait: 1,
|
||||
|
||||
// Hold (or release) the ready event
|
||||
holdReady: function( hold ) {
|
||||
if ( hold ) {
|
||||
jQuery.readyWait++;
|
||||
} else {
|
||||
jQuery.ready( true );
|
||||
}
|
||||
},
|
||||
|
||||
ready: function( wait ) {
|
||||
|
||||
// Abort if there are pending holds or we're already ready
|
||||
if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Remember that the DOM is ready
|
||||
jQuery.isReady = true;
|
||||
|
||||
// If a normal DOM Ready event fired, decrement, and wait if need be
|
||||
if ( wait !== true && --jQuery.readyWait > 0 ) {
|
||||
return;
|
||||
}
|
||||
|
||||
whenReady = function( fn ) {
|
||||
readyCallbacks.push( fn );
|
||||
|
||||
while ( readyCallbacks.length ) {
|
||||
fn = readyCallbacks.shift();
|
||||
if ( jQuery.isFunction( fn ) ) {
|
||||
executeReady( fn );
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
whenReady();
|
||||
}
|
||||
} );
|
||||
|
||||
// Make jQuery.ready Promise consumable (gh-1778)
|
||||
jQuery.ready.then = jQuery.fn.ready;
|
||||
|
||||
/**
|
||||
* The ready event handler and self cleanup method
|
||||
*/
|
||||
function completed() {
|
||||
document.removeEventListener( "DOMContentLoaded", completed );
|
||||
window.removeEventListener( "load", completed );
|
||||
jQuery.ready();
|
||||
}
|
||||
|
||||
// Catch cases where $(document).ready() is called
|
||||
// after the browser event has already occurred.
|
||||
// Support: IE9-10 only
|
||||
// Older IE sometimes signals "interactive" too soon
|
||||
if ( document.readyState === "complete" ||
|
||||
( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
|
||||
|
||||
// Handle it asynchronously to allow scripts the opportunity to delay ready
|
||||
window.setTimeout( jQuery.ready );
|
||||
|
||||
} else {
|
||||
|
||||
// Use the handy event callback
|
||||
document.addEventListener( "DOMContentLoaded", completed );
|
||||
|
||||
// A fallback to window.onload, that will always work
|
||||
window.addEventListener( "load", completed );
|
||||
}
|
||||
|
||||
} );
|
68
bower_components/jquery/src/core/ready.js
vendored
68
bower_components/jquery/src/core/ready.js
vendored
|
@ -1,17 +1,26 @@
|
|||
define( [
|
||||
"../core",
|
||||
"../var/document",
|
||||
"../core/init",
|
||||
"../core/readyException",
|
||||
"../deferred"
|
||||
], function( jQuery, document ) {
|
||||
|
||||
"use strict";
|
||||
|
||||
// The deferred used on DOM ready
|
||||
var readyList;
|
||||
var readyList = jQuery.Deferred();
|
||||
|
||||
jQuery.fn.ready = function( fn ) {
|
||||
|
||||
// Add the callback
|
||||
jQuery.ready.promise().done( fn );
|
||||
readyList
|
||||
.then( fn )
|
||||
|
||||
// Wrap jQuery.readyException in a function so that the lookup
|
||||
// happens at the time of error handling instead of callback
|
||||
// registration.
|
||||
.catch( function( error ) {
|
||||
jQuery.readyException( error );
|
||||
} );
|
||||
|
||||
return this;
|
||||
};
|
||||
|
@ -52,52 +61,35 @@ jQuery.extend( {
|
|||
|
||||
// If there are functions bound, to execute
|
||||
readyList.resolveWith( document, [ jQuery ] );
|
||||
|
||||
// Trigger any bound ready events
|
||||
if ( jQuery.fn.triggerHandler ) {
|
||||
jQuery( document ).triggerHandler( "ready" );
|
||||
jQuery( document ).off( "ready" );
|
||||
}
|
||||
}
|
||||
} );
|
||||
|
||||
/**
|
||||
* The ready event handler and self cleanup method
|
||||
*/
|
||||
jQuery.ready.then = readyList.then;
|
||||
|
||||
// The ready event handler and self cleanup method
|
||||
function completed() {
|
||||
document.removeEventListener( "DOMContentLoaded", completed );
|
||||
window.removeEventListener( "load", completed );
|
||||
jQuery.ready();
|
||||
}
|
||||
|
||||
jQuery.ready.promise = function( obj ) {
|
||||
if ( !readyList ) {
|
||||
// Catch cases where $(document).ready() is called
|
||||
// after the browser event has already occurred.
|
||||
// Support: IE <=9 - 10 only
|
||||
// Older IE sometimes signals "interactive" too soon
|
||||
if ( document.readyState === "complete" ||
|
||||
( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
|
||||
|
||||
readyList = jQuery.Deferred();
|
||||
// Handle it asynchronously to allow scripts the opportunity to delay ready
|
||||
window.setTimeout( jQuery.ready );
|
||||
|
||||
// Catch cases where $(document).ready() is called
|
||||
// after the browser event has already occurred.
|
||||
// Support: IE9-10 only
|
||||
// Older IE sometimes signals "interactive" too soon
|
||||
if ( document.readyState === "complete" ||
|
||||
( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
|
||||
} else {
|
||||
|
||||
// Handle it asynchronously to allow scripts the opportunity to delay ready
|
||||
window.setTimeout( jQuery.ready );
|
||||
// Use the handy event callback
|
||||
document.addEventListener( "DOMContentLoaded", completed );
|
||||
|
||||
} else {
|
||||
|
||||
// Use the handy event callback
|
||||
document.addEventListener( "DOMContentLoaded", completed );
|
||||
|
||||
// A fallback to window.onload, that will always work
|
||||
window.addEventListener( "load", completed );
|
||||
}
|
||||
}
|
||||
return readyList.promise( obj );
|
||||
};
|
||||
|
||||
// Kick off the DOM ready check even if the user does not
|
||||
jQuery.ready.promise();
|
||||
// A fallback to window.onload, that will always work
|
||||
window.addEventListener( "load", completed );
|
||||
}
|
||||
|
||||
} );
|
||||
|
|
13
bower_components/jquery/src/core/readyException.js
vendored
Normal file
13
bower_components/jquery/src/core/readyException.js
vendored
Normal file
|
@ -0,0 +1,13 @@
|
|||
define( [
|
||||
"../core"
|
||||
], function( jQuery ) {
|
||||
|
||||
"use strict";
|
||||
|
||||
jQuery.readyException = function( error ) {
|
||||
window.setTimeout( function() {
|
||||
throw error;
|
||||
} );
|
||||
};
|
||||
|
||||
} );
|
14
bower_components/jquery/src/core/stripAndCollapse.js
vendored
Normal file
14
bower_components/jquery/src/core/stripAndCollapse.js
vendored
Normal file
|
@ -0,0 +1,14 @@
|
|||
define( [
|
||||
"../var/rnothtmlwhite"
|
||||
], function( rnothtmlwhite ) {
|
||||
"use strict";
|
||||
|
||||
// Strip and collapse whitespace according to HTML spec
|
||||
// https://html.spec.whatwg.org/multipage/infrastructure.html#strip-and-collapse-whitespace
|
||||
function stripAndCollapse( value ) {
|
||||
var tokens = value.match( rnothtmlwhite ) || [];
|
||||
return tokens.join( " " );
|
||||
}
|
||||
|
||||
return stripAndCollapse;
|
||||
} );
|
20
bower_components/jquery/src/core/support.js
vendored
Normal file
20
bower_components/jquery/src/core/support.js
vendored
Normal file
|
@ -0,0 +1,20 @@
|
|||
define( [
|
||||
"../var/document",
|
||||
"../var/support"
|
||||
], function( document, support ) {
|
||||
|
||||
"use strict";
|
||||
|
||||
// Support: Safari 8 only
|
||||
// In Safari 8 documents created via document.implementation.createHTMLDocument
|
||||
// collapse sibling forms: the second one becomes a child of the first one.
|
||||
// Because of that, this security measure has to be disabled in Safari 8.
|
||||
// https://bugs.webkit.org/show_bug.cgi?id=137337
|
||||
support.createHTMLDocument = ( function() {
|
||||
var body = document.implementation.createHTMLDocument( "" ).body;
|
||||
body.innerHTML = "<form></form><form></form>";
|
||||
return body.childNodes.length === 2;
|
||||
} )();
|
||||
|
||||
return support;
|
||||
} );
|
|
@ -1,5 +1,6 @@
|
|||
define( function() {
|
||||
"use strict";
|
||||
|
||||
// Match a standalone tag
|
||||
return ( /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/ );
|
||||
return ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );
|
||||
} );
|
||||
|
|
140
bower_components/jquery/src/css.js
vendored
140
bower_components/jquery/src/css.js
vendored
|
@ -7,21 +7,20 @@ define( [
|
|||
"./var/rcssNum",
|
||||
"./css/var/rnumnonpx",
|
||||
"./css/var/cssExpand",
|
||||
"./css/var/isHidden",
|
||||
"./css/var/getStyles",
|
||||
"./css/var/swap",
|
||||
"./css/curCSS",
|
||||
"./css/adjustCSS",
|
||||
"./css/defaultDisplay",
|
||||
"./css/addGetHookIf",
|
||||
"./css/support",
|
||||
"./data/var/dataPriv",
|
||||
|
||||
"./core/init",
|
||||
"./core/ready",
|
||||
"./selector" // contains
|
||||
], function( jQuery, pnum, access, rmargin, document, rcssNum, rnumnonpx, cssExpand, isHidden,
|
||||
getStyles, swap, curCSS, adjustCSS, defaultDisplay, addGetHookIf, support, dataPriv ) {
|
||||
], function( jQuery, pnum, access, rmargin, document, rcssNum, rnumnonpx, cssExpand,
|
||||
getStyles, swap, curCSS, adjustCSS, addGetHookIf, support ) {
|
||||
|
||||
"use strict";
|
||||
|
||||
var
|
||||
|
||||
|
@ -29,14 +28,13 @@ var
|
|||
// except "table", "table-cell", or "table-caption"
|
||||
// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
|
||||
rdisplayswap = /^(none|table(?!-c[ea]).+)/,
|
||||
|
||||
cssShow = { position: "absolute", visibility: "hidden", display: "block" },
|
||||
cssNormalTransform = {
|
||||
letterSpacing: "0",
|
||||
fontWeight: "400"
|
||||
},
|
||||
|
||||
cssPrefixes = [ "Webkit", "O", "Moz", "ms" ],
|
||||
cssPrefixes = [ "Webkit", "Moz", "ms" ],
|
||||
emptyStyle = document.createElement( "div" ).style;
|
||||
|
||||
// Return a css property mapped to a potentially vendor prefixed property
|
||||
|
@ -72,16 +70,18 @@ function setPositiveNumber( elem, value, subtract ) {
|
|||
}
|
||||
|
||||
function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
|
||||
var i = extra === ( isBorderBox ? "border" : "content" ) ?
|
||||
|
||||
// If we already have the right measurement, avoid augmentation
|
||||
4 :
|
||||
|
||||
// Otherwise initialize for horizontal or vertical properties
|
||||
name === "width" ? 1 : 0,
|
||||
|
||||
var i,
|
||||
val = 0;
|
||||
|
||||
// If we already have the right measurement, avoid augmentation
|
||||
if ( extra === ( isBorderBox ? "border" : "content" ) ) {
|
||||
i = 4;
|
||||
|
||||
// Otherwise initialize for horizontal or vertical properties
|
||||
} else {
|
||||
i = name === "width" ? 1 : 0;
|
||||
}
|
||||
|
||||
for ( ; i < 4; i += 2 ) {
|
||||
|
||||
// Both box models exclude margin, so add it if we want it
|
||||
|
@ -118,11 +118,18 @@ function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
|
|||
function getWidthOrHeight( elem, name, extra ) {
|
||||
|
||||
// Start with offset property, which is equivalent to the border-box value
|
||||
var valueIsBorderBox = true,
|
||||
val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
|
||||
var val,
|
||||
valueIsBorderBox = true,
|
||||
styles = getStyles( elem ),
|
||||
isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
|
||||
|
||||
// Support: IE <=11 only
|
||||
// Running getBoundingClientRect on a disconnected node
|
||||
// in IE throws an error.
|
||||
if ( elem.getClientRects().length ) {
|
||||
val = elem.getBoundingClientRect()[ name ];
|
||||
}
|
||||
|
||||
// Some non-html elements return undefined for offsetWidth, so check for null/undefined
|
||||
// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
|
||||
// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
|
||||
|
@ -160,66 +167,6 @@ function getWidthOrHeight( elem, name, extra ) {
|
|||
) + "px";
|
||||
}
|
||||
|
||||
function showHide( elements, show ) {
|
||||
var display, elem, hidden,
|
||||
values = [],
|
||||
index = 0,
|
||||
length = elements.length;
|
||||
|
||||
for ( ; index < length; index++ ) {
|
||||
elem = elements[ index ];
|
||||
if ( !elem.style ) {
|
||||
continue;
|
||||
}
|
||||
|
||||
values[ index ] = dataPriv.get( elem, "olddisplay" );
|
||||
display = elem.style.display;
|
||||
if ( show ) {
|
||||
|
||||
// Reset the inline display of this element to learn if it is
|
||||
// being hidden by cascaded rules or not
|
||||
if ( !values[ index ] && display === "none" ) {
|
||||
elem.style.display = "";
|
||||
}
|
||||
|
||||
// Set elements which have been overridden with display: none
|
||||
// in a stylesheet to whatever the default browser style is
|
||||
// for such an element
|
||||
if ( elem.style.display === "" && isHidden( elem ) ) {
|
||||
values[ index ] = dataPriv.access(
|
||||
elem,
|
||||
"olddisplay",
|
||||
defaultDisplay( elem.nodeName )
|
||||
);
|
||||
}
|
||||
} else {
|
||||
hidden = isHidden( elem );
|
||||
|
||||
if ( display !== "none" || !hidden ) {
|
||||
dataPriv.set(
|
||||
elem,
|
||||
"olddisplay",
|
||||
hidden ? display : jQuery.css( elem, "display" )
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Set the display of most of the elements in a second loop
|
||||
// to avoid the constant reflow
|
||||
for ( index = 0; index < length; index++ ) {
|
||||
elem = elements[ index ];
|
||||
if ( !elem.style ) {
|
||||
continue;
|
||||
}
|
||||
if ( !show || elem.style.display === "none" || elem.style.display === "" ) {
|
||||
elem.style.display = show ? values[ index ] || "" : "none";
|
||||
}
|
||||
}
|
||||
|
||||
return elements;
|
||||
}
|
||||
|
||||
jQuery.extend( {
|
||||
|
||||
// Add in style property hooks for overriding the default
|
||||
|
@ -301,7 +248,6 @@ jQuery.extend( {
|
|||
value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" );
|
||||
}
|
||||
|
||||
// Support: IE9-11+
|
||||
// background-* props affect original clone's values
|
||||
if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
|
||||
style[ name ] = "inherit";
|
||||
|
@ -371,7 +317,14 @@ jQuery.each( [ "height", "width" ], function( i, name ) {
|
|||
// Certain elements can have dimension info if we invisibly show them
|
||||
// but it must have a current display style that would benefit
|
||||
return rdisplayswap.test( jQuery.css( elem, "display" ) ) &&
|
||||
elem.offsetWidth === 0 ?
|
||||
|
||||
// Support: Safari 8+
|
||||
// Table columns in Safari have non-zero offsetWidth & zero
|
||||
// getBoundingClientRect().width unless display is changed.
|
||||
// Support: IE <=11 only
|
||||
// Running getBoundingClientRect on a disconnected node
|
||||
// in IE throws an error.
|
||||
( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?
|
||||
swap( elem, cssShow, function() {
|
||||
return getWidthOrHeight( elem, name, extra );
|
||||
} ) :
|
||||
|
@ -416,16 +369,6 @@ jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,
|
|||
}
|
||||
);
|
||||
|
||||
// Support: Android 2.3
|
||||
jQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight,
|
||||
function( elem, computed ) {
|
||||
if ( computed ) {
|
||||
return swap( elem, { "display": "inline-block" },
|
||||
curCSS, [ elem, "marginRight" ] );
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
// These hooks are used by animate to expand properties
|
||||
jQuery.each( {
|
||||
margin: "",
|
||||
|
@ -476,25 +419,6 @@ jQuery.fn.extend( {
|
|||
jQuery.style( elem, name, value ) :
|
||||
jQuery.css( elem, name );
|
||||
}, name, value, arguments.length > 1 );
|
||||
},
|
||||
show: function() {
|
||||
return showHide( this, true );
|
||||
},
|
||||
hide: function() {
|
||||
return showHide( this );
|
||||
},
|
||||
toggle: function( state ) {
|
||||
if ( typeof state === "boolean" ) {
|
||||
return state ? this.show() : this.hide();
|
||||
}
|
||||
|
||||
return this.each( function() {
|
||||
if ( isHidden( this ) ) {
|
||||
jQuery( this ).show();
|
||||
} else {
|
||||
jQuery( this ).hide();
|
||||
}
|
||||
} );
|
||||
}
|
||||
} );
|
||||
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
define( function() {
|
||||
|
||||
"use strict";
|
||||
|
||||
function addGetHookIf( conditionFn, hookFn ) {
|
||||
|
||||
// Define the hook, we'll check on the first run if it's really needed.
|
||||
|
|
10
bower_components/jquery/src/css/adjustCSS.js
vendored
10
bower_components/jquery/src/css/adjustCSS.js
vendored
|
@ -3,13 +3,19 @@ define( [
|
|||
"../var/rcssNum"
|
||||
], function( jQuery, rcssNum ) {
|
||||
|
||||
"use strict";
|
||||
|
||||
function adjustCSS( elem, prop, valueParts, tween ) {
|
||||
var adjusted,
|
||||
scale = 1,
|
||||
maxIterations = 20,
|
||||
currentValue = tween ?
|
||||
function() { return tween.cur(); } :
|
||||
function() { return jQuery.css( elem, prop, "" ); },
|
||||
function() {
|
||||
return tween.cur();
|
||||
} :
|
||||
function() {
|
||||
return jQuery.css( elem, prop, "" );
|
||||
},
|
||||
initial = currentValue(),
|
||||
unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
|
||||
|
||||
|
|
21
bower_components/jquery/src/css/curCSS.js
vendored
21
bower_components/jquery/src/css/curCSS.js
vendored
|
@ -7,29 +7,28 @@ define( [
|
|||
"../selector" // Get jQuery.contains
|
||||
], function( jQuery, rnumnonpx, rmargin, getStyles, support ) {
|
||||
|
||||
"use strict";
|
||||
|
||||
function curCSS( elem, name, computed ) {
|
||||
var width, minWidth, maxWidth, ret,
|
||||
style = elem.style;
|
||||
|
||||
computed = computed || getStyles( elem );
|
||||
ret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined;
|
||||
|
||||
// Support: Opera 12.1x only
|
||||
// Fall back to style even without computed
|
||||
// computed is undefined for elems on document fragments
|
||||
if ( ( ret === "" || ret === undefined ) && !jQuery.contains( elem.ownerDocument, elem ) ) {
|
||||
ret = jQuery.style( elem, name );
|
||||
}
|
||||
|
||||
// Support: IE9
|
||||
// Support: IE <=9 only
|
||||
// getPropertyValue is only needed for .css('filter') (#12537)
|
||||
if ( computed ) {
|
||||
ret = computed.getPropertyValue( name ) || computed[ name ];
|
||||
|
||||
if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
|
||||
ret = jQuery.style( elem, name );
|
||||
}
|
||||
|
||||
// A tribute to the "awesome hack by Dean Edwards"
|
||||
// Android Browser returns percentage for some values,
|
||||
// but width seems to be reliably pixels.
|
||||
// This is against the CSSOM draft spec:
|
||||
// http://dev.w3.org/csswg/cssom/#resolved-values
|
||||
// https://drafts.csswg.org/cssom/#resolved-values
|
||||
if ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.test( name ) ) {
|
||||
|
||||
// Remember the original values
|
||||
|
@ -50,7 +49,7 @@ function curCSS( elem, name, computed ) {
|
|||
|
||||
return ret !== undefined ?
|
||||
|
||||
// Support: IE9-11+
|
||||
// Support: IE <=9 - 11 only
|
||||
// IE returns zIndex value as an integer.
|
||||
ret + "" :
|
||||
ret;
|
||||
|
|
|
@ -1,72 +0,0 @@
|
|||
define( [
|
||||
"../core",
|
||||
"../var/document",
|
||||
"../manipulation" // appendTo
|
||||
], function( jQuery, document ) {
|
||||
|
||||
var iframe,
|
||||
elemdisplay = {
|
||||
|
||||
// Support: Firefox
|
||||
// We have to pre-define these values for FF (#10227)
|
||||
HTML: "block",
|
||||
BODY: "block"
|
||||
};
|
||||
|
||||
/**
|
||||
* Retrieve the actual display of a element
|
||||
* @param {String} name nodeName of the element
|
||||
* @param {Object} doc Document object
|
||||
*/
|
||||
|
||||
// Called only from within defaultDisplay
|
||||
function actualDisplay( name, doc ) {
|
||||
var elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),
|
||||
|
||||
display = jQuery.css( elem[ 0 ], "display" );
|
||||
|
||||
// We don't have any data stored on the element,
|
||||
// so use "detach" method as fast way to get rid of the element
|
||||
elem.detach();
|
||||
|
||||
return display;
|
||||
}
|
||||
|
||||
/**
|
||||
* Try to determine the default display value of an element
|
||||
* @param {String} nodeName
|
||||
*/
|
||||
function defaultDisplay( nodeName ) {
|
||||
var doc = document,
|
||||
display = elemdisplay[ nodeName ];
|
||||
|
||||
if ( !display ) {
|
||||
display = actualDisplay( nodeName, doc );
|
||||
|
||||
// If the simple way fails, read from inside an iframe
|
||||
if ( display === "none" || !display ) {
|
||||
|
||||
// Use the already-created iframe if possible
|
||||
iframe = ( iframe || jQuery( "<iframe frameborder='0' width='0' height='0'/>" ) )
|
||||
.appendTo( doc.documentElement );
|
||||
|
||||
// Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse
|
||||
doc = iframe[ 0 ].contentDocument;
|
||||
|
||||
// Support: IE
|
||||
doc.write();
|
||||
doc.close();
|
||||
|
||||
display = actualDisplay( nodeName, doc );
|
||||
iframe.detach();
|
||||
}
|
||||
|
||||
// Store the correct default display
|
||||
elemdisplay[ nodeName ] = display;
|
||||
}
|
||||
|
||||
return display;
|
||||
}
|
||||
|
||||
return defaultDisplay;
|
||||
} );
|
|
@ -3,16 +3,13 @@ define( [
|
|||
"../selector"
|
||||
], function( jQuery ) {
|
||||
|
||||
jQuery.expr.filters.hidden = function( elem ) {
|
||||
return !jQuery.expr.filters.visible( elem );
|
||||
};
|
||||
jQuery.expr.filters.visible = function( elem ) {
|
||||
"use strict";
|
||||
|
||||
// Support: Opera <= 12.12
|
||||
// Opera reports offsetWidths and offsetHeights less than zero on some elements
|
||||
// Use OR instead of AND as the element is not visible if either is true
|
||||
// See tickets #10406 and #13132
|
||||
return elem.offsetWidth > 0 || elem.offsetHeight > 0 || elem.getClientRects().length > 0;
|
||||
jQuery.expr.pseudos.hidden = function( elem ) {
|
||||
return !jQuery.expr.pseudos.visible( elem );
|
||||
};
|
||||
jQuery.expr.pseudos.visible = function( elem ) {
|
||||
return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );
|
||||
};
|
||||
|
||||
} );
|
||||
|
|
75
bower_components/jquery/src/css/showHide.js
vendored
75
bower_components/jquery/src/css/showHide.js
vendored
|
@ -1,6 +1,35 @@
|
|||
define( [
|
||||
"../data/var/dataPriv"
|
||||
], function( dataPriv ) {
|
||||
"../core",
|
||||
"../data/var/dataPriv",
|
||||
"../css/var/isHiddenWithinTree"
|
||||
], function( jQuery, dataPriv, isHiddenWithinTree ) {
|
||||
|
||||
"use strict";
|
||||
|
||||
var defaultDisplayMap = {};
|
||||
|
||||
function getDefaultDisplay( elem ) {
|
||||
var temp,
|
||||
doc = elem.ownerDocument,
|
||||
nodeName = elem.nodeName,
|
||||
display = defaultDisplayMap[ nodeName ];
|
||||
|
||||
if ( display ) {
|
||||
return display;
|
||||
}
|
||||
|
||||
temp = doc.body.appendChild( doc.createElement( nodeName ) );
|
||||
display = jQuery.css( temp, "display" );
|
||||
|
||||
temp.parentNode.removeChild( temp );
|
||||
|
||||
if ( display === "none" ) {
|
||||
display = "block";
|
||||
}
|
||||
defaultDisplayMap[ nodeName ] = display;
|
||||
|
||||
return display;
|
||||
}
|
||||
|
||||
function showHide( elements, show ) {
|
||||
var display, elem,
|
||||
|
@ -17,23 +46,30 @@ function showHide( elements, show ) {
|
|||
|
||||
display = elem.style.display;
|
||||
if ( show ) {
|
||||
if ( display === "none" ) {
|
||||
|
||||
// Restore a pre-hide() value if we have one
|
||||
values[ index ] = dataPriv.get( elem, "display" ) || "";
|
||||
// Since we force visibility upon cascade-hidden elements, an immediate (and slow)
|
||||
// check is required in this first loop unless we have a nonempty display value (either
|
||||
// inline or about-to-be-restored)
|
||||
if ( display === "none" ) {
|
||||
values[ index ] = dataPriv.get( elem, "display" ) || null;
|
||||
if ( !values[ index ] ) {
|
||||
elem.style.display = "";
|
||||
}
|
||||
}
|
||||
if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) {
|
||||
values[ index ] = getDefaultDisplay( elem );
|
||||
}
|
||||
} else {
|
||||
if ( display !== "none" ) {
|
||||
values[ index ] = "none";
|
||||
|
||||
// Remember the value we're replacing
|
||||
// Remember what we're overwriting
|
||||
dataPriv.set( elem, "display", display );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Set the display of the elements in a second loop
|
||||
// to avoid the constant reflow
|
||||
// Set the display of the elements in a second loop to avoid constant reflow
|
||||
for ( index = 0; index < length; index++ ) {
|
||||
if ( values[ index ] != null ) {
|
||||
elements[ index ].style.display = values[ index ];
|
||||
|
@ -43,6 +79,27 @@ function showHide( elements, show ) {
|
|||
return elements;
|
||||
}
|
||||
|
||||
return showHide;
|
||||
jQuery.fn.extend( {
|
||||
show: function() {
|
||||
return showHide( this, true );
|
||||
},
|
||||
hide: function() {
|
||||
return showHide( this );
|
||||
},
|
||||
toggle: function( state ) {
|
||||
if ( typeof state === "boolean" ) {
|
||||
return state ? this.show() : this.hide();
|
||||
}
|
||||
|
||||
return this.each( function() {
|
||||
if ( isHiddenWithinTree( this ) ) {
|
||||
jQuery( this ).show();
|
||||
} else {
|
||||
jQuery( this ).hide();
|
||||
}
|
||||
} );
|
||||
}
|
||||
} );
|
||||
|
||||
return showHide;
|
||||
} );
|
||||
|
|
106
bower_components/jquery/src/css/support.js
vendored
106
bower_components/jquery/src/css/support.js
vendored
|
@ -5,34 +5,21 @@ define( [
|
|||
"../var/support"
|
||||
], function( jQuery, document, documentElement, support ) {
|
||||
|
||||
"use strict";
|
||||
|
||||
( function() {
|
||||
var pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal,
|
||||
container = document.createElement( "div" ),
|
||||
div = document.createElement( "div" );
|
||||
|
||||
// Finish early in limited (non-browser) environments
|
||||
if ( !div.style ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Support: IE9-11+
|
||||
// Style of cloned element affects source element cloned (#8908)
|
||||
div.style.backgroundClip = "content-box";
|
||||
div.cloneNode( true ).style.backgroundClip = "";
|
||||
support.clearCloneStyle = div.style.backgroundClip === "content-box";
|
||||
|
||||
container.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;" +
|
||||
"padding:0;margin-top:1px;position:absolute";
|
||||
container.appendChild( div );
|
||||
|
||||
// Executing both pixelPosition & boxSizingReliable tests require only one layout
|
||||
// so they're executed at the same time to save the second computation.
|
||||
function computeStyleTests() {
|
||||
div.style.cssText =
|
||||
|
||||
// Support: Firefox<29, Android 2.3
|
||||
// Vendor-prefix box-sizing
|
||||
"-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;" +
|
||||
// This is a singleton, we need to execute it only once
|
||||
if ( !div ) {
|
||||
return;
|
||||
}
|
||||
|
||||
div.style.cssText =
|
||||
"box-sizing:border-box;" +
|
||||
"position:relative;display:block;" +
|
||||
"margin:auto;border:1px;padding:1px;" +
|
||||
"top:1%;width:50%";
|
||||
|
@ -41,6 +28,8 @@ define( [
|
|||
|
||||
var divStyle = window.getComputedStyle( div );
|
||||
pixelPositionVal = divStyle.top !== "1%";
|
||||
|
||||
// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44
|
||||
reliableMarginLeftVal = divStyle.marginLeft === "2px";
|
||||
boxSizingReliableVal = divStyle.width === "4px";
|
||||
|
||||
|
@ -50,68 +39,47 @@ define( [
|
|||
pixelMarginRightVal = divStyle.marginRight === "4px";
|
||||
|
||||
documentElement.removeChild( container );
|
||||
|
||||
// Nullify the div so it wouldn't be stored in the memory and
|
||||
// it will also be a sign that checks already performed
|
||||
div = null;
|
||||
}
|
||||
|
||||
var pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal,
|
||||
container = document.createElement( "div" ),
|
||||
div = document.createElement( "div" );
|
||||
|
||||
// Finish early in limited (non-browser) environments
|
||||
if ( !div.style ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Support: IE <=9 - 11 only
|
||||
// Style of cloned element affects source element cloned (#8908)
|
||||
div.style.backgroundClip = "content-box";
|
||||
div.cloneNode( true ).style.backgroundClip = "";
|
||||
support.clearCloneStyle = div.style.backgroundClip === "content-box";
|
||||
|
||||
container.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;" +
|
||||
"padding:0;margin-top:1px;position:absolute";
|
||||
container.appendChild( div );
|
||||
|
||||
jQuery.extend( support, {
|
||||
pixelPosition: function() {
|
||||
|
||||
// This test is executed only once but we still do memoizing
|
||||
// since we can use the boxSizingReliable pre-computing.
|
||||
// No need to check if the test was already performed, though.
|
||||
computeStyleTests();
|
||||
return pixelPositionVal;
|
||||
},
|
||||
boxSizingReliable: function() {
|
||||
if ( boxSizingReliableVal == null ) {
|
||||
computeStyleTests();
|
||||
}
|
||||
computeStyleTests();
|
||||
return boxSizingReliableVal;
|
||||
},
|
||||
pixelMarginRight: function() {
|
||||
|
||||
// Support: Android 4.0-4.3
|
||||
// We're checking for boxSizingReliableVal here instead of pixelMarginRightVal
|
||||
// since that compresses better and they're computed together anyway.
|
||||
if ( boxSizingReliableVal == null ) {
|
||||
computeStyleTests();
|
||||
}
|
||||
computeStyleTests();
|
||||
return pixelMarginRightVal;
|
||||
},
|
||||
reliableMarginLeft: function() {
|
||||
|
||||
// Support: IE <=8 only, Android 4.0 - 4.3 only, Firefox <=3 - 37
|
||||
if ( boxSizingReliableVal == null ) {
|
||||
computeStyleTests();
|
||||
}
|
||||
computeStyleTests();
|
||||
return reliableMarginLeftVal;
|
||||
},
|
||||
reliableMarginRight: function() {
|
||||
|
||||
// Support: Android 2.3
|
||||
// Check if div with explicit width and no margin-right incorrectly
|
||||
// gets computed margin-right based on width of container. (#3333)
|
||||
// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
|
||||
// This support function is only executed once so no memoizing is needed.
|
||||
var ret,
|
||||
marginDiv = div.appendChild( document.createElement( "div" ) );
|
||||
|
||||
// Reset CSS: box-sizing; display; margin; border; padding
|
||||
marginDiv.style.cssText = div.style.cssText =
|
||||
|
||||
// Support: Android 2.3
|
||||
// Vendor-prefix box-sizing
|
||||
"-webkit-box-sizing:content-box;box-sizing:content-box;" +
|
||||
"display:block;margin:0;border:0;padding:0";
|
||||
marginDiv.style.marginRight = marginDiv.style.width = "0";
|
||||
div.style.width = "1px";
|
||||
documentElement.appendChild( container );
|
||||
|
||||
ret = !parseFloat( window.getComputedStyle( marginDiv ).marginRight );
|
||||
|
||||
documentElement.removeChild( container );
|
||||
div.removeChild( marginDiv );
|
||||
|
||||
return ret;
|
||||
}
|
||||
} );
|
||||
} )();
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
define( function() {
|
||||
"use strict";
|
||||
|
||||
return [ "Top", "Right", "Bottom", "Left" ];
|
||||
} );
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
define( function() {
|
||||
"use strict";
|
||||
|
||||
return function( elem ) {
|
||||
|
||||
// Support: IE<=11+, Firefox<=30+ (#15098, #14150)
|
||||
// Support: IE <=11 only, Firefox <=30 (#15098, #14150)
|
||||
// IE throws on elements created in popups
|
||||
// FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
|
||||
var view = elem.ownerDocument.defaultView;
|
||||
|
|
16
bower_components/jquery/src/css/var/isHidden.js
vendored
16
bower_components/jquery/src/css/var/isHidden.js
vendored
|
@ -1,16 +0,0 @@
|
|||
define( [
|
||||
"../../core",
|
||||
"../../selector"
|
||||
|
||||
// css is assumed
|
||||
], function( jQuery ) {
|
||||
|
||||
return function( elem, el ) {
|
||||
|
||||
// isHidden might be called from jQuery#filter function;
|
||||
// in that case, element will be second argument
|
||||
elem = el || elem;
|
||||
return jQuery.css( elem, "display" ) === "none" ||
|
||||
!jQuery.contains( elem.ownerDocument, elem );
|
||||
};
|
||||
} );
|
34
bower_components/jquery/src/css/var/isHiddenWithinTree.js
vendored
Normal file
34
bower_components/jquery/src/css/var/isHiddenWithinTree.js
vendored
Normal file
|
@ -0,0 +1,34 @@
|
|||
define( [
|
||||
"../../core",
|
||||
"../../selector"
|
||||
|
||||
// css is assumed
|
||||
], function( jQuery ) {
|
||||
"use strict";
|
||||
|
||||
// isHiddenWithinTree reports if an element has a non-"none" display style (inline and/or
|
||||
// through the CSS cascade), which is useful in deciding whether or not to make it visible.
|
||||
// It differs from the :hidden selector (jQuery.expr.pseudos.hidden) in two important ways:
|
||||
// * A hidden ancestor does not force an element to be classified as hidden.
|
||||
// * Being disconnected from the document does not force an element to be classified as hidden.
|
||||
// These differences improve the behavior of .toggle() et al. when applied to elements that are
|
||||
// detached or contained within hidden ancestors (gh-2404, gh-2863).
|
||||
return function( elem, el ) {
|
||||
|
||||
// isHiddenWithinTree might be called from jQuery#filter function;
|
||||
// in that case, element will be second argument
|
||||
elem = el || elem;
|
||||
|
||||
// Inline style trumps all
|
||||
return elem.style.display === "none" ||
|
||||
elem.style.display === "" &&
|
||||
|
||||
// Otherwise, check computed style
|
||||
// Support: Firefox <=43 - 45
|
||||
// Disconnected elements can have computed display: none, so first confirm that elem is
|
||||
// in the document.
|
||||
jQuery.contains( elem.ownerDocument, elem ) &&
|
||||
|
||||
jQuery.css( elem, "display" ) === "none";
|
||||
};
|
||||
} );
|
|
@ -1,3 +1,5 @@
|
|||
define( function() {
|
||||
"use strict";
|
||||
|
||||
return ( /^margin/ );
|
||||
} );
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
define( [
|
||||
"../../var/pnum"
|
||||
], function( pnum ) {
|
||||
"use strict";
|
||||
|
||||
return new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
|
||||
} );
|
||||
|
|
2
bower_components/jquery/src/css/var/swap.js
vendored
2
bower_components/jquery/src/css/var/swap.js
vendored
|
@ -1,5 +1,7 @@
|
|||
define( function() {
|
||||
|
||||
"use strict";
|
||||
|
||||
// A method for quickly swapping in/out CSS properties to get correct calculations.
|
||||
return function( elem, options, callback, args ) {
|
||||
var ret, name,
|
||||
|
|
78
bower_components/jquery/src/data.js
vendored
78
bower_components/jquery/src/data.js
vendored
|
@ -5,6 +5,8 @@ define( [
|
|||
"./data/var/dataUser"
|
||||
], function( jQuery, access, dataPriv, dataUser ) {
|
||||
|
||||
"use strict";
|
||||
|
||||
// Implementation Summary
|
||||
//
|
||||
// 1. Enforce API surface and semantic compatibility with 1.9.x branch
|
||||
|
@ -18,6 +20,31 @@ define( [
|
|||
var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
|
||||
rmultiDash = /[A-Z]/g;
|
||||
|
||||
function getData( data ) {
|
||||
if ( data === "true" ) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if ( data === "false" ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( data === "null" ) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// Only convert to a number if it doesn't change the string
|
||||
if ( data === +data + "" ) {
|
||||
return +data;
|
||||
}
|
||||
|
||||
if ( rbrace.test( data ) ) {
|
||||
return JSON.parse( data );
|
||||
}
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
function dataAttr( elem, key, data ) {
|
||||
var name;
|
||||
|
||||
|
@ -29,14 +56,7 @@ function dataAttr( elem, key, data ) {
|
|||
|
||||
if ( typeof data === "string" ) {
|
||||
try {
|
||||
data = data === "true" ? true :
|
||||
data === "false" ? false :
|
||||
data === "null" ? null :
|
||||
|
||||
// Only convert to a number if it doesn't change the string
|
||||
+data + "" === data ? +data :
|
||||
rbrace.test( data ) ? jQuery.parseJSON( data ) :
|
||||
data;
|
||||
data = getData( data );
|
||||
} catch ( e ) {}
|
||||
|
||||
// Make sure we set the data so it isn't changed later
|
||||
|
@ -87,7 +107,7 @@ jQuery.fn.extend( {
|
|||
i = attrs.length;
|
||||
while ( i-- ) {
|
||||
|
||||
// Support: IE11+
|
||||
// Support: IE 11 only
|
||||
// The attrs elements can be null (#14894)
|
||||
if ( attrs[ i ] ) {
|
||||
name = attrs[ i ].name;
|
||||
|
@ -112,7 +132,7 @@ jQuery.fn.extend( {
|
|||
}
|
||||
|
||||
return access( this, function( value ) {
|
||||
var data, camelKey;
|
||||
var data;
|
||||
|
||||
// The calling jQuery object (element matches) is not empty
|
||||
// (and therefore has an element appears at this[ 0 ]) and the
|
||||
|
@ -122,29 +142,15 @@ jQuery.fn.extend( {
|
|||
if ( elem && value === undefined ) {
|
||||
|
||||
// Attempt to get data from the cache
|
||||
// with the key as-is
|
||||
data = dataUser.get( elem, key ) ||
|
||||
|
||||
// Try to find dashed key if it exists (gh-2779)
|
||||
// This is for 2.2.x only
|
||||
dataUser.get( elem, key.replace( rmultiDash, "-$&" ).toLowerCase() );
|
||||
|
||||
if ( data !== undefined ) {
|
||||
return data;
|
||||
}
|
||||
|
||||
camelKey = jQuery.camelCase( key );
|
||||
|
||||
// Attempt to get data from the cache
|
||||
// with the key camelized
|
||||
data = dataUser.get( elem, camelKey );
|
||||
// The key will always be camelCased in Data
|
||||
data = dataUser.get( elem, key );
|
||||
if ( data !== undefined ) {
|
||||
return data;
|
||||
}
|
||||
|
||||
// Attempt to "discover" the data in
|
||||
// HTML5 custom data-* attrs
|
||||
data = dataAttr( elem, camelKey, undefined );
|
||||
data = dataAttr( elem, key );
|
||||
if ( data !== undefined ) {
|
||||
return data;
|
||||
}
|
||||
|
@ -154,24 +160,10 @@ jQuery.fn.extend( {
|
|||
}
|
||||
|
||||
// Set the data...
|
||||
camelKey = jQuery.camelCase( key );
|
||||
this.each( function() {
|
||||
|
||||
// First, attempt to store a copy or reference of any
|
||||
// data that might've been store with a camelCased key.
|
||||
var data = dataUser.get( this, camelKey );
|
||||
|
||||
// For HTML5 data-* attribute interop, we have to
|
||||
// store property names with dashes in a camelCase form.
|
||||
// This might not apply to all properties...*
|
||||
dataUser.set( this, camelKey, value );
|
||||
|
||||
// *... In the case of properties that might _actually_
|
||||
// have dashes, we need to also store a copy of that
|
||||
// unchanged property.
|
||||
if ( key.indexOf( "-" ) > -1 && data !== undefined ) {
|
||||
dataUser.set( this, key, value );
|
||||
}
|
||||
// We always store the camelCased key
|
||||
dataUser.set( this, key, value );
|
||||
} );
|
||||
}, null, value, arguments.length > 1, null, true );
|
||||
},
|
||||
|
|
91
bower_components/jquery/src/data/Data.js
vendored
91
bower_components/jquery/src/data/Data.js
vendored
|
@ -1,8 +1,10 @@
|
|||
define( [
|
||||
"../core",
|
||||
"../var/rnotwhite",
|
||||
"../var/rnothtmlwhite",
|
||||
"./var/acceptData"
|
||||
], function( jQuery, rnotwhite, acceptData ) {
|
||||
], function( jQuery, rnothtmlwhite, acceptData ) {
|
||||
|
||||
"use strict";
|
||||
|
||||
function Data() {
|
||||
this.expando = jQuery.expando + Data.uid++;
|
||||
|
@ -12,35 +14,8 @@ Data.uid = 1;
|
|||
|
||||
Data.prototype = {
|
||||
|
||||
register: function( owner, initial ) {
|
||||
var value = initial || {};
|
||||
|
||||
// If it is a node unlikely to be stringify-ed or looped over
|
||||
// use plain assignment
|
||||
if ( owner.nodeType ) {
|
||||
owner[ this.expando ] = value;
|
||||
|
||||
// Otherwise secure it in a non-enumerable, non-writable property
|
||||
// configurability must be true to allow the property to be
|
||||
// deleted with the delete operator
|
||||
} else {
|
||||
Object.defineProperty( owner, this.expando, {
|
||||
value: value,
|
||||
writable: true,
|
||||
configurable: true
|
||||
} );
|
||||
}
|
||||
return owner[ this.expando ];
|
||||
},
|
||||
cache: function( owner ) {
|
||||
|
||||
// We can accept data for non-element nodes in modern browsers,
|
||||
// but we should not, see #8335.
|
||||
// Always return an empty object.
|
||||
if ( !acceptData( owner ) ) {
|
||||
return {};
|
||||
}
|
||||
|
||||
// Check if the owner object already has a cache
|
||||
var value = owner[ this.expando ];
|
||||
|
||||
|
@ -77,15 +52,16 @@ Data.prototype = {
|
|||
cache = this.cache( owner );
|
||||
|
||||
// Handle: [ owner, key, value ] args
|
||||
// Always use camelCase key (gh-2257)
|
||||
if ( typeof data === "string" ) {
|
||||
cache[ data ] = value;
|
||||
cache[ jQuery.camelCase( data ) ] = value;
|
||||
|
||||
// Handle: [ owner, { properties } ] args
|
||||
} else {
|
||||
|
||||
// Copy the properties one-by-one to the cache object
|
||||
for ( prop in data ) {
|
||||
cache[ prop ] = data[ prop ];
|
||||
cache[ jQuery.camelCase( prop ) ] = data[ prop ];
|
||||
}
|
||||
}
|
||||
return cache;
|
||||
|
@ -93,10 +69,11 @@ Data.prototype = {
|
|||
get: function( owner, key ) {
|
||||
return key === undefined ?
|
||||
this.cache( owner ) :
|
||||
owner[ this.expando ] && owner[ this.expando ][ key ];
|
||||
|
||||
// Always use camelCase key (gh-2257)
|
||||
owner[ this.expando ] && owner[ this.expando ][ jQuery.camelCase( key ) ];
|
||||
},
|
||||
access: function( owner, key, value ) {
|
||||
var stored;
|
||||
|
||||
// In cases where either:
|
||||
//
|
||||
|
@ -112,10 +89,7 @@ Data.prototype = {
|
|||
if ( key === undefined ||
|
||||
( ( key && typeof key === "string" ) && value === undefined ) ) {
|
||||
|
||||
stored = this.get( owner, key );
|
||||
|
||||
return stored !== undefined ?
|
||||
stored : this.get( owner, jQuery.camelCase( key ) );
|
||||
return this.get( owner, key );
|
||||
}
|
||||
|
||||
// When the key is not a string, or both a key and value
|
||||
|
@ -131,58 +105,45 @@ Data.prototype = {
|
|||
return value !== undefined ? value : key;
|
||||
},
|
||||
remove: function( owner, key ) {
|
||||
var i, name, camel,
|
||||
var i,
|
||||
cache = owner[ this.expando ];
|
||||
|
||||
if ( cache === undefined ) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ( key === undefined ) {
|
||||
this.register( owner );
|
||||
|
||||
} else {
|
||||
if ( key !== undefined ) {
|
||||
|
||||
// Support array or space separated string of keys
|
||||
if ( jQuery.isArray( key ) ) {
|
||||
|
||||
// If "name" is an array of keys...
|
||||
// When data is initially created, via ("key", "val") signature,
|
||||
// keys will be converted to camelCase.
|
||||
// Since there is no way to tell _how_ a key was added, remove
|
||||
// both plain key and camelCase key. #12786
|
||||
// This will only penalize the array argument path.
|
||||
name = key.concat( key.map( jQuery.camelCase ) );
|
||||
// If key is an array of keys...
|
||||
// We always set camelCase keys, so remove that.
|
||||
key = key.map( jQuery.camelCase );
|
||||
} else {
|
||||
camel = jQuery.camelCase( key );
|
||||
key = jQuery.camelCase( key );
|
||||
|
||||
// Try the string as a key before any manipulation
|
||||
if ( key in cache ) {
|
||||
name = [ key, camel ];
|
||||
} else {
|
||||
|
||||
// If a key with the spaces exists, use it.
|
||||
// Otherwise, create an array by matching non-whitespace
|
||||
name = camel;
|
||||
name = name in cache ?
|
||||
[ name ] : ( name.match( rnotwhite ) || [] );
|
||||
}
|
||||
// If a key with the spaces exists, use it.
|
||||
// Otherwise, create an array by matching non-whitespace
|
||||
key = key in cache ?
|
||||
[ key ] :
|
||||
( key.match( rnothtmlwhite ) || [] );
|
||||
}
|
||||
|
||||
i = name.length;
|
||||
i = key.length;
|
||||
|
||||
while ( i-- ) {
|
||||
delete cache[ name[ i ] ];
|
||||
delete cache[ key[ i ] ];
|
||||
}
|
||||
}
|
||||
|
||||
// Remove the expando if there's no more data
|
||||
if ( key === undefined || jQuery.isEmptyObject( cache ) ) {
|
||||
|
||||
// Support: Chrome <= 35-45+
|
||||
// Support: Chrome <=35 - 45
|
||||
// Webkit & Blink performance suffers when deleting properties
|
||||
// from DOM nodes, so set to undefined instead
|
||||
// https://code.google.com/p/chromium/issues/detail?id=378607
|
||||
// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)
|
||||
if ( owner.nodeType ) {
|
||||
owner[ this.expando ] = undefined;
|
||||
} else {
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
define( function() {
|
||||
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
* Determines whether an object can have data
|
||||
*/
|
||||
|
@ -11,7 +13,6 @@ return function( owner ) {
|
|||
// - Node.DOCUMENT_NODE
|
||||
// - Object
|
||||
// - Any
|
||||
/* jshint -W018 */
|
||||
return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
|
||||
};
|
||||
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
define( [
|
||||
"../Data"
|
||||
], function( Data ) {
|
||||
"use strict";
|
||||
|
||||
return new Data();
|
||||
} );
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
define( [
|
||||
"../Data"
|
||||
], function( Data ) {
|
||||
"use strict";
|
||||
|
||||
return new Data();
|
||||
} );
|
||||
|
|
347
bower_components/jquery/src/deferred.js
vendored
347
bower_components/jquery/src/deferred.js
vendored
|
@ -4,15 +4,60 @@ define( [
|
|||
"./callbacks"
|
||||
], function( jQuery, slice ) {
|
||||
|
||||
"use strict";
|
||||
|
||||
function Identity( v ) {
|
||||
return v;
|
||||
}
|
||||
function Thrower( ex ) {
|
||||
throw ex;
|
||||
}
|
||||
|
||||
function adoptValue( value, resolve, reject ) {
|
||||
var method;
|
||||
|
||||
try {
|
||||
|
||||
// Check for promise aspect first to privilege synchronous behavior
|
||||
if ( value && jQuery.isFunction( ( method = value.promise ) ) ) {
|
||||
method.call( value ).done( resolve ).fail( reject );
|
||||
|
||||
// Other thenables
|
||||
} else if ( value && jQuery.isFunction( ( method = value.then ) ) ) {
|
||||
method.call( value, resolve, reject );
|
||||
|
||||
// Other non-thenables
|
||||
} else {
|
||||
|
||||
// Support: Android 4.0 only
|
||||
// Strict mode functions invoked without .call/.apply get global-object context
|
||||
resolve.call( undefined, value );
|
||||
}
|
||||
|
||||
// For Promises/A+, convert exceptions into rejections
|
||||
// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in
|
||||
// Deferred#then to conditionally suppress rejection.
|
||||
} catch ( value ) {
|
||||
|
||||
// Support: Android 4.0 only
|
||||
// Strict mode functions invoked without .call/.apply get global-object context
|
||||
reject.call( undefined, value );
|
||||
}
|
||||
}
|
||||
|
||||
jQuery.extend( {
|
||||
|
||||
Deferred: function( func ) {
|
||||
var tuples = [
|
||||
|
||||
// action, add listener, listener list, final state
|
||||
[ "resolve", "done", jQuery.Callbacks( "once memory" ), "resolved" ],
|
||||
[ "reject", "fail", jQuery.Callbacks( "once memory" ), "rejected" ],
|
||||
[ "notify", "progress", jQuery.Callbacks( "memory" ) ]
|
||||
// action, add listener, callbacks,
|
||||
// ... .then handlers, argument index, [final state]
|
||||
[ "notify", "progress", jQuery.Callbacks( "memory" ),
|
||||
jQuery.Callbacks( "memory" ), 2 ],
|
||||
[ "resolve", "done", jQuery.Callbacks( "once memory" ),
|
||||
jQuery.Callbacks( "once memory" ), 0, "resolved" ],
|
||||
[ "reject", "fail", jQuery.Callbacks( "once memory" ),
|
||||
jQuery.Callbacks( "once memory" ), 1, "rejected" ]
|
||||
],
|
||||
state = "pending",
|
||||
promise = {
|
||||
|
@ -23,13 +68,23 @@ jQuery.extend( {
|
|||
deferred.done( arguments ).fail( arguments );
|
||||
return this;
|
||||
},
|
||||
then: function( /* fnDone, fnFail, fnProgress */ ) {
|
||||
"catch": function( fn ) {
|
||||
return promise.then( null, fn );
|
||||
},
|
||||
|
||||
// Keep pipe for back-compat
|
||||
pipe: function( /* fnDone, fnFail, fnProgress */ ) {
|
||||
var fns = arguments;
|
||||
|
||||
return jQuery.Deferred( function( newDefer ) {
|
||||
jQuery.each( tuples, function( i, tuple ) {
|
||||
var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];
|
||||
|
||||
// deferred[ done | fail | progress ] for forwarding actions to newDefer
|
||||
// Map tuples (progress, done, fail) to arguments (done, fail, progress)
|
||||
var fn = jQuery.isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];
|
||||
|
||||
// deferred.progress(function() { bind to newDefer or newDefer.notify })
|
||||
// deferred.done(function() { bind to newDefer or newDefer.resolve })
|
||||
// deferred.fail(function() { bind to newDefer or newDefer.reject })
|
||||
deferred[ tuple[ 1 ] ]( function() {
|
||||
var returned = fn && fn.apply( this, arguments );
|
||||
if ( returned && jQuery.isFunction( returned.promise ) ) {
|
||||
|
@ -39,7 +94,7 @@ jQuery.extend( {
|
|||
.fail( newDefer.reject );
|
||||
} else {
|
||||
newDefer[ tuple[ 0 ] + "With" ](
|
||||
this === promise ? newDefer.promise() : this,
|
||||
this,
|
||||
fn ? [ returned ] : arguments
|
||||
);
|
||||
}
|
||||
|
@ -48,6 +103,170 @@ jQuery.extend( {
|
|||
fns = null;
|
||||
} ).promise();
|
||||
},
|
||||
then: function( onFulfilled, onRejected, onProgress ) {
|
||||
var maxDepth = 0;
|
||||
function resolve( depth, deferred, handler, special ) {
|
||||
return function() {
|
||||
var that = this,
|
||||
args = arguments,
|
||||
mightThrow = function() {
|
||||
var returned, then;
|
||||
|
||||
// Support: Promises/A+ section 2.3.3.3.3
|
||||
// https://promisesaplus.com/#point-59
|
||||
// Ignore double-resolution attempts
|
||||
if ( depth < maxDepth ) {
|
||||
return;
|
||||
}
|
||||
|
||||
returned = handler.apply( that, args );
|
||||
|
||||
// Support: Promises/A+ section 2.3.1
|
||||
// https://promisesaplus.com/#point-48
|
||||
if ( returned === deferred.promise() ) {
|
||||
throw new TypeError( "Thenable self-resolution" );
|
||||
}
|
||||
|
||||
// Support: Promises/A+ sections 2.3.3.1, 3.5
|
||||
// https://promisesaplus.com/#point-54
|
||||
// https://promisesaplus.com/#point-75
|
||||
// Retrieve `then` only once
|
||||
then = returned &&
|
||||
|
||||
// Support: Promises/A+ section 2.3.4
|
||||
// https://promisesaplus.com/#point-64
|
||||
// Only check objects and functions for thenability
|
||||
( typeof returned === "object" ||
|
||||
typeof returned === "function" ) &&
|
||||
returned.then;
|
||||
|
||||
// Handle a returned thenable
|
||||
if ( jQuery.isFunction( then ) ) {
|
||||
|
||||
// Special processors (notify) just wait for resolution
|
||||
if ( special ) {
|
||||
then.call(
|
||||
returned,
|
||||
resolve( maxDepth, deferred, Identity, special ),
|
||||
resolve( maxDepth, deferred, Thrower, special )
|
||||
);
|
||||
|
||||
// Normal processors (resolve) also hook into progress
|
||||
} else {
|
||||
|
||||
// ...and disregard older resolution values
|
||||
maxDepth++;
|
||||
|
||||
then.call(
|
||||
returned,
|
||||
resolve( maxDepth, deferred, Identity, special ),
|
||||
resolve( maxDepth, deferred, Thrower, special ),
|
||||
resolve( maxDepth, deferred, Identity,
|
||||
deferred.notifyWith )
|
||||
);
|
||||
}
|
||||
|
||||
// Handle all other returned values
|
||||
} else {
|
||||
|
||||
// Only substitute handlers pass on context
|
||||
// and multiple values (non-spec behavior)
|
||||
if ( handler !== Identity ) {
|
||||
that = undefined;
|
||||
args = [ returned ];
|
||||
}
|
||||
|
||||
// Process the value(s)
|
||||
// Default process is resolve
|
||||
( special || deferred.resolveWith )( that, args );
|
||||
}
|
||||
},
|
||||
|
||||
// Only normal processors (resolve) catch and reject exceptions
|
||||
process = special ?
|
||||
mightThrow :
|
||||
function() {
|
||||
try {
|
||||
mightThrow();
|
||||
} catch ( e ) {
|
||||
|
||||
if ( jQuery.Deferred.exceptionHook ) {
|
||||
jQuery.Deferred.exceptionHook( e,
|
||||
process.stackTrace );
|
||||
}
|
||||
|
||||
// Support: Promises/A+ section 2.3.3.3.4.1
|
||||
// https://promisesaplus.com/#point-61
|
||||
// Ignore post-resolution exceptions
|
||||
if ( depth + 1 >= maxDepth ) {
|
||||
|
||||
// Only substitute handlers pass on context
|
||||
// and multiple values (non-spec behavior)
|
||||
if ( handler !== Thrower ) {
|
||||
that = undefined;
|
||||
args = [ e ];
|
||||
}
|
||||
|
||||
deferred.rejectWith( that, args );
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// Support: Promises/A+ section 2.3.3.3.1
|
||||
// https://promisesaplus.com/#point-57
|
||||
// Re-resolve promises immediately to dodge false rejection from
|
||||
// subsequent errors
|
||||
if ( depth ) {
|
||||
process();
|
||||
} else {
|
||||
|
||||
// Call an optional hook to record the stack, in case of exception
|
||||
// since it's otherwise lost when execution goes async
|
||||
if ( jQuery.Deferred.getStackHook ) {
|
||||
process.stackTrace = jQuery.Deferred.getStackHook();
|
||||
}
|
||||
window.setTimeout( process );
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
return jQuery.Deferred( function( newDefer ) {
|
||||
|
||||
// progress_handlers.add( ... )
|
||||
tuples[ 0 ][ 3 ].add(
|
||||
resolve(
|
||||
0,
|
||||
newDefer,
|
||||
jQuery.isFunction( onProgress ) ?
|
||||
onProgress :
|
||||
Identity,
|
||||
newDefer.notifyWith
|
||||
)
|
||||
);
|
||||
|
||||
// fulfilled_handlers.add( ... )
|
||||
tuples[ 1 ][ 3 ].add(
|
||||
resolve(
|
||||
0,
|
||||
newDefer,
|
||||
jQuery.isFunction( onFulfilled ) ?
|
||||
onFulfilled :
|
||||
Identity
|
||||
)
|
||||
);
|
||||
|
||||
// rejected_handlers.add( ... )
|
||||
tuples[ 2 ][ 3 ].add(
|
||||
resolve(
|
||||
0,
|
||||
newDefer,
|
||||
jQuery.isFunction( onRejected ) ?
|
||||
onRejected :
|
||||
Thrower
|
||||
)
|
||||
);
|
||||
} ).promise();
|
||||
},
|
||||
|
||||
// Get a promise for this deferred
|
||||
// If obj is provided, the promise aspect is added to the object
|
||||
|
@ -57,33 +276,51 @@ jQuery.extend( {
|
|||
},
|
||||
deferred = {};
|
||||
|
||||
// Keep pipe for back-compat
|
||||
promise.pipe = promise.then;
|
||||
|
||||
// Add list-specific methods
|
||||
jQuery.each( tuples, function( i, tuple ) {
|
||||
var list = tuple[ 2 ],
|
||||
stateString = tuple[ 3 ];
|
||||
stateString = tuple[ 5 ];
|
||||
|
||||
// promise[ done | fail | progress ] = list.add
|
||||
// promise.progress = list.add
|
||||
// promise.done = list.add
|
||||
// promise.fail = list.add
|
||||
promise[ tuple[ 1 ] ] = list.add;
|
||||
|
||||
// Handle state
|
||||
if ( stateString ) {
|
||||
list.add( function() {
|
||||
list.add(
|
||||
function() {
|
||||
|
||||
// state = [ resolved | rejected ]
|
||||
state = stateString;
|
||||
// state = "resolved" (i.e., fulfilled)
|
||||
// state = "rejected"
|
||||
state = stateString;
|
||||
},
|
||||
|
||||
// [ reject_list | resolve_list ].disable; progress_list.lock
|
||||
}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
|
||||
// rejected_callbacks.disable
|
||||
// fulfilled_callbacks.disable
|
||||
tuples[ 3 - i ][ 2 ].disable,
|
||||
|
||||
// progress_callbacks.lock
|
||||
tuples[ 0 ][ 2 ].lock
|
||||
);
|
||||
}
|
||||
|
||||
// deferred[ resolve | reject | notify ]
|
||||
// progress_handlers.fire
|
||||
// fulfilled_handlers.fire
|
||||
// rejected_handlers.fire
|
||||
list.add( tuple[ 3 ].fire );
|
||||
|
||||
// deferred.notify = function() { deferred.notifyWith(...) }
|
||||
// deferred.resolve = function() { deferred.resolveWith(...) }
|
||||
// deferred.reject = function() { deferred.rejectWith(...) }
|
||||
deferred[ tuple[ 0 ] ] = function() {
|
||||
deferred[ tuple[ 0 ] + "With" ]( this === deferred ? promise : this, arguments );
|
||||
deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments );
|
||||
return this;
|
||||
};
|
||||
|
||||
// deferred.notifyWith = list.fireWith
|
||||
// deferred.resolveWith = list.fireWith
|
||||
// deferred.rejectWith = list.fireWith
|
||||
deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
|
||||
} );
|
||||
|
||||
|
@ -100,57 +337,51 @@ jQuery.extend( {
|
|||
},
|
||||
|
||||
// Deferred helper
|
||||
when: function( subordinate /* , ..., subordinateN */ ) {
|
||||
var i = 0,
|
||||
when: function( singleValue ) {
|
||||
var
|
||||
|
||||
// count of uncompleted subordinates
|
||||
remaining = arguments.length,
|
||||
|
||||
// count of unprocessed arguments
|
||||
i = remaining,
|
||||
|
||||
// subordinate fulfillment data
|
||||
resolveContexts = Array( i ),
|
||||
resolveValues = slice.call( arguments ),
|
||||
length = resolveValues.length,
|
||||
|
||||
// the count of uncompleted subordinates
|
||||
remaining = length !== 1 ||
|
||||
( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,
|
||||
// the master Deferred
|
||||
master = jQuery.Deferred(),
|
||||
|
||||
// the master Deferred.
|
||||
// If resolveValues consist of only a single Deferred, just use that.
|
||||
deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
|
||||
|
||||
// Update function for both resolve and progress values
|
||||
updateFunc = function( i, contexts, values ) {
|
||||
// subordinate callback factory
|
||||
updateFunc = function( i ) {
|
||||
return function( value ) {
|
||||
contexts[ i ] = this;
|
||||
values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
|
||||
if ( values === progressValues ) {
|
||||
deferred.notifyWith( contexts, values );
|
||||
} else if ( !( --remaining ) ) {
|
||||
deferred.resolveWith( contexts, values );
|
||||
resolveContexts[ i ] = this;
|
||||
resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
|
||||
if ( !( --remaining ) ) {
|
||||
master.resolveWith( resolveContexts, resolveValues );
|
||||
}
|
||||
};
|
||||
},
|
||||
};
|
||||
|
||||
progressValues, progressContexts, resolveContexts;
|
||||
// Single- and empty arguments are adopted like Promise.resolve
|
||||
if ( remaining <= 1 ) {
|
||||
adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject );
|
||||
|
||||
// Add listeners to Deferred subordinates; treat others as resolved
|
||||
if ( length > 1 ) {
|
||||
progressValues = new Array( length );
|
||||
progressContexts = new Array( length );
|
||||
resolveContexts = new Array( length );
|
||||
for ( ; i < length; i++ ) {
|
||||
if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {
|
||||
resolveValues[ i ].promise()
|
||||
.progress( updateFunc( i, progressContexts, progressValues ) )
|
||||
.done( updateFunc( i, resolveContexts, resolveValues ) )
|
||||
.fail( deferred.reject );
|
||||
} else {
|
||||
--remaining;
|
||||
}
|
||||
// Use .then() to unwrap secondary thenables (cf. gh-3000)
|
||||
if ( master.state() === "pending" ||
|
||||
jQuery.isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {
|
||||
|
||||
return master.then();
|
||||
}
|
||||
}
|
||||
|
||||
// If we're not waiting on anything, resolve the master
|
||||
if ( !remaining ) {
|
||||
deferred.resolveWith( resolveContexts, resolveValues );
|
||||
// Multiple arguments are aggregated like Promise.all array elements
|
||||
while ( i-- ) {
|
||||
adoptValue( resolveValues[ i ], updateFunc( i ), master.reject );
|
||||
}
|
||||
|
||||
return deferred.promise();
|
||||
return master.promise();
|
||||
}
|
||||
} );
|
||||
|
||||
|
|
21
bower_components/jquery/src/deferred/exceptionHook.js
vendored
Normal file
21
bower_components/jquery/src/deferred/exceptionHook.js
vendored
Normal file
|
@ -0,0 +1,21 @@
|
|||
define( [
|
||||
"../core",
|
||||
"../deferred"
|
||||
], function( jQuery ) {
|
||||
|
||||
"use strict";
|
||||
|
||||
// These usually indicate a programmer mistake during development,
|
||||
// warn about them ASAP rather than swallowing them by default.
|
||||
var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
|
||||
|
||||
jQuery.Deferred.exceptionHook = function( error, stack ) {
|
||||
|
||||
// Support: IE 8 - 9 only
|
||||
// Console exists when dev tools are open, which can happen at any time
|
||||
if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {
|
||||
window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack );
|
||||
}
|
||||
};
|
||||
|
||||
} );
|
8
bower_components/jquery/src/deprecated.js
vendored
8
bower_components/jquery/src/deprecated.js
vendored
|
@ -2,6 +2,8 @@ define( [
|
|||
"./core"
|
||||
], function( jQuery ) {
|
||||
|
||||
"use strict";
|
||||
|
||||
jQuery.fn.extend( {
|
||||
|
||||
bind: function( types, data, fn ) {
|
||||
|
@ -20,13 +22,9 @@ jQuery.fn.extend( {
|
|||
return arguments.length === 1 ?
|
||||
this.off( selector, "**" ) :
|
||||
this.off( types, selector || "**", fn );
|
||||
},
|
||||
size: function() {
|
||||
return this.length;
|
||||
}
|
||||
} );
|
||||
|
||||
jQuery.fn.andSelf = jQuery.fn.addBack;
|
||||
jQuery.parseJSON = JSON.parse;
|
||||
|
||||
} );
|
||||
|
||||
|
|
12
bower_components/jquery/src/dimensions.js
vendored
12
bower_components/jquery/src/dimensions.js
vendored
|
@ -4,6 +4,8 @@ define( [
|
|||
"./css"
|
||||
], function( jQuery, access ) {
|
||||
|
||||
"use strict";
|
||||
|
||||
// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
|
||||
jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
|
||||
jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name },
|
||||
|
@ -19,10 +21,10 @@ jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
|
|||
|
||||
if ( jQuery.isWindow( elem ) ) {
|
||||
|
||||
// As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there
|
||||
// isn't a whole lot we can do. See pull request at this URL for discussion:
|
||||
// https://github.com/jquery/jquery/pull/764
|
||||
return elem.document.documentElement[ "client" + name ];
|
||||
// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)
|
||||
return funcName.indexOf( "outer" ) === 0 ?
|
||||
elem[ "inner" + name ] :
|
||||
elem.document.documentElement[ "client" + name ];
|
||||
}
|
||||
|
||||
// Get document width or height
|
||||
|
@ -45,7 +47,7 @@ jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
|
|||
|
||||
// Set width or height on the element
|
||||
jQuery.style( elem, type, value, extra );
|
||||
}, type, chainable ? margin : undefined, chainable, null );
|
||||
}, type, chainable ? margin : undefined, chainable );
|
||||
};
|
||||
} );
|
||||
} );
|
||||
|
|
250
bower_components/jquery/src/effects.js
vendored
250
bower_components/jquery/src/effects.js
vendored
|
@ -2,27 +2,38 @@ define( [
|
|||
"./core",
|
||||
"./var/document",
|
||||
"./var/rcssNum",
|
||||
"./var/rnothtmlwhite",
|
||||
"./css/var/cssExpand",
|
||||
"./var/rnotwhite",
|
||||
"./css/var/isHidden",
|
||||
"./css/var/isHiddenWithinTree",
|
||||
"./css/var/swap",
|
||||
"./css/adjustCSS",
|
||||
"./css/defaultDisplay",
|
||||
"./data/var/dataPriv",
|
||||
"./css/showHide",
|
||||
|
||||
"./core/init",
|
||||
"./effects/Tween",
|
||||
"./queue",
|
||||
"./css",
|
||||
"./deferred",
|
||||
"./traversing"
|
||||
], function( jQuery, document, rcssNum, cssExpand, rnotwhite,
|
||||
isHidden, adjustCSS, defaultDisplay, dataPriv ) {
|
||||
"./traversing",
|
||||
"./manipulation",
|
||||
"./css",
|
||||
"./effects/Tween"
|
||||
], function( jQuery, document, rcssNum, rnothtmlwhite, cssExpand, isHiddenWithinTree, swap,
|
||||
adjustCSS, dataPriv, showHide ) {
|
||||
|
||||
"use strict";
|
||||
|
||||
var
|
||||
fxNow, timerId,
|
||||
rfxtypes = /^(?:toggle|show|hide)$/,
|
||||
rrun = /queueHooks$/;
|
||||
|
||||
function raf() {
|
||||
if ( timerId ) {
|
||||
window.requestAnimationFrame( raf );
|
||||
jQuery.fx.tick();
|
||||
}
|
||||
}
|
||||
|
||||
// Animations created synchronously will run synchronously
|
||||
function createFxNow() {
|
||||
window.setTimeout( function() {
|
||||
|
@ -40,7 +51,7 @@ function genFx( type, includeWidth ) {
|
|||
// If we include width, step value is 1 to do all cssExpand values,
|
||||
// otherwise step value is 2 to skip over Left and Right
|
||||
includeWidth = includeWidth ? 1 : 0;
|
||||
for ( ; i < 4 ; i += 2 - includeWidth ) {
|
||||
for ( ; i < 4; i += 2 - includeWidth ) {
|
||||
which = cssExpand[ i ];
|
||||
attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
|
||||
}
|
||||
|
@ -67,15 +78,15 @@ function createTween( value, prop, animation ) {
|
|||
}
|
||||
|
||||
function defaultPrefilter( elem, props, opts ) {
|
||||
/* jshint validthis: true */
|
||||
var prop, value, toggle, tween, hooks, oldfire, display, checkDisplay,
|
||||
var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,
|
||||
isBox = "width" in props || "height" in props,
|
||||
anim = this,
|
||||
orig = {},
|
||||
style = elem.style,
|
||||
hidden = elem.nodeType && isHidden( elem ),
|
||||
hidden = elem.nodeType && isHiddenWithinTree( elem ),
|
||||
dataShow = dataPriv.get( elem, "fxshow" );
|
||||
|
||||
// Handle queue: false promises
|
||||
// Queue-skipping animations hijack the fx hooks
|
||||
if ( !opts.queue ) {
|
||||
hooks = jQuery._queueHooks( elem, "fx" );
|
||||
if ( hooks.unqueued == null ) {
|
||||
|
@ -101,25 +112,77 @@ function defaultPrefilter( elem, props, opts ) {
|
|||
} );
|
||||
}
|
||||
|
||||
// Height/width overflow pass
|
||||
if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) {
|
||||
// Detect show/hide animations
|
||||
for ( prop in props ) {
|
||||
value = props[ prop ];
|
||||
if ( rfxtypes.test( value ) ) {
|
||||
delete props[ prop ];
|
||||
toggle = toggle || value === "toggle";
|
||||
if ( value === ( hidden ? "hide" : "show" ) ) {
|
||||
|
||||
// Make sure that nothing sneaks out
|
||||
// Record all 3 overflow attributes because IE9-10 do not
|
||||
// change the overflow attribute when overflowX and
|
||||
// overflowY are set to the same value
|
||||
// Pretend to be hidden if this is a "show" and
|
||||
// there is still data from a stopped show/hide
|
||||
if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
|
||||
hidden = true;
|
||||
|
||||
// Ignore all other no-op show/hide data
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
|
||||
}
|
||||
}
|
||||
|
||||
// Bail out if this is a no-op like .hide().hide()
|
||||
propTween = !jQuery.isEmptyObject( props );
|
||||
if ( !propTween && jQuery.isEmptyObject( orig ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Restrict "overflow" and "display" styles during box animations
|
||||
if ( isBox && elem.nodeType === 1 ) {
|
||||
|
||||
// Support: IE <=9 - 11, Edge 12 - 13
|
||||
// Record all 3 overflow attributes because IE does not infer the shorthand
|
||||
// from identically-valued overflowX and overflowY
|
||||
opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
|
||||
|
||||
// Set display property to inline-block for height/width
|
||||
// animations on inline elements that are having width/height animated
|
||||
// Identify a display type, preferring old show/hide data over the CSS cascade
|
||||
restoreDisplay = dataShow && dataShow.display;
|
||||
if ( restoreDisplay == null ) {
|
||||
restoreDisplay = dataPriv.get( elem, "display" );
|
||||
}
|
||||
display = jQuery.css( elem, "display" );
|
||||
if ( display === "none" ) {
|
||||
if ( restoreDisplay ) {
|
||||
display = restoreDisplay;
|
||||
} else {
|
||||
|
||||
// Test default display if display is currently "none"
|
||||
checkDisplay = display === "none" ?
|
||||
dataPriv.get( elem, "olddisplay" ) || defaultDisplay( elem.nodeName ) : display;
|
||||
// Get nonempty value(s) by temporarily forcing visibility
|
||||
showHide( [ elem ], true );
|
||||
restoreDisplay = elem.style.display || restoreDisplay;
|
||||
display = jQuery.css( elem, "display" );
|
||||
showHide( [ elem ] );
|
||||
}
|
||||
}
|
||||
|
||||
if ( checkDisplay === "inline" && jQuery.css( elem, "float" ) === "none" ) {
|
||||
style.display = "inline-block";
|
||||
// Animate inline elements as inline-block
|
||||
if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) {
|
||||
if ( jQuery.css( elem, "float" ) === "none" ) {
|
||||
|
||||
// Restore the original display value at the end of pure show/hide animations
|
||||
if ( !propTween ) {
|
||||
anim.done( function() {
|
||||
style.display = restoreDisplay;
|
||||
} );
|
||||
if ( restoreDisplay == null ) {
|
||||
display = style.display;
|
||||
restoreDisplay = display === "none" ? "" : display;
|
||||
}
|
||||
}
|
||||
style.display = "inline-block";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -132,73 +195,56 @@ function defaultPrefilter( elem, props, opts ) {
|
|||
} );
|
||||
}
|
||||
|
||||
// show/hide pass
|
||||
for ( prop in props ) {
|
||||
value = props[ prop ];
|
||||
if ( rfxtypes.exec( value ) ) {
|
||||
delete props[ prop ];
|
||||
toggle = toggle || value === "toggle";
|
||||
if ( value === ( hidden ? "hide" : "show" ) ) {
|
||||
// Implement show/hide animations
|
||||
propTween = false;
|
||||
for ( prop in orig ) {
|
||||
|
||||
// If there is dataShow left over from a stopped hide or show
|
||||
// and we are going to proceed with show, we should pretend to be hidden
|
||||
if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
|
||||
hidden = true;
|
||||
} else {
|
||||
continue;
|
||||
// General show/hide setup for this element animation
|
||||
if ( !propTween ) {
|
||||
if ( dataShow ) {
|
||||
if ( "hidden" in dataShow ) {
|
||||
hidden = dataShow.hidden;
|
||||
}
|
||||
} else {
|
||||
dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } );
|
||||
}
|
||||
orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
|
||||
|
||||
// Any non-fx value stops us from restoring the original display value
|
||||
} else {
|
||||
display = undefined;
|
||||
}
|
||||
}
|
||||
|
||||
if ( !jQuery.isEmptyObject( orig ) ) {
|
||||
if ( dataShow ) {
|
||||
if ( "hidden" in dataShow ) {
|
||||
hidden = dataShow.hidden;
|
||||
// Store hidden/visible for toggle so `.stop().toggle()` "reverses"
|
||||
if ( toggle ) {
|
||||
dataShow.hidden = !hidden;
|
||||
}
|
||||
} else {
|
||||
dataShow = dataPriv.access( elem, "fxshow", {} );
|
||||
}
|
||||
|
||||
// Store state if its toggle - enables .stop().toggle() to "reverse"
|
||||
if ( toggle ) {
|
||||
dataShow.hidden = !hidden;
|
||||
}
|
||||
if ( hidden ) {
|
||||
jQuery( elem ).show();
|
||||
} else {
|
||||
// Show elements before animating them
|
||||
if ( hidden ) {
|
||||
showHide( [ elem ], true );
|
||||
}
|
||||
|
||||
/* eslint-disable no-loop-func */
|
||||
|
||||
anim.done( function() {
|
||||
jQuery( elem ).hide();
|
||||
|
||||
/* eslint-enable no-loop-func */
|
||||
|
||||
// The final step of a "hide" animation is actually hiding the element
|
||||
if ( !hidden ) {
|
||||
showHide( [ elem ] );
|
||||
}
|
||||
dataPriv.remove( elem, "fxshow" );
|
||||
for ( prop in orig ) {
|
||||
jQuery.style( elem, prop, orig[ prop ] );
|
||||
}
|
||||
} );
|
||||
}
|
||||
anim.done( function() {
|
||||
var prop;
|
||||
|
||||
dataPriv.remove( elem, "fxshow" );
|
||||
for ( prop in orig ) {
|
||||
jQuery.style( elem, prop, orig[ prop ] );
|
||||
}
|
||||
} );
|
||||
for ( prop in orig ) {
|
||||
tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
|
||||
|
||||
if ( !( prop in dataShow ) ) {
|
||||
dataShow[ prop ] = tween.start;
|
||||
if ( hidden ) {
|
||||
tween.end = tween.start;
|
||||
tween.start = prop === "width" || prop === "height" ? 1 : 0;
|
||||
}
|
||||
// Per-property setup
|
||||
propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
|
||||
if ( !( prop in dataShow ) ) {
|
||||
dataShow[ prop ] = propTween.start;
|
||||
if ( hidden ) {
|
||||
propTween.end = propTween.start;
|
||||
propTween.start = 0;
|
||||
}
|
||||
}
|
||||
|
||||
// If this is a noop like .hide().hide(), restore an overwritten display value
|
||||
} else if ( ( display === "none" ? defaultDisplay( elem.nodeName ) : display ) === "inline" ) {
|
||||
style.display = display;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -256,14 +302,14 @@ function Animation( elem, properties, options ) {
|
|||
var currentTime = fxNow || createFxNow(),
|
||||
remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
|
||||
|
||||
// Support: Android 2.3
|
||||
// Support: Android 2.3 only
|
||||
// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
|
||||
temp = remaining / animation.duration || 0,
|
||||
percent = 1 - temp,
|
||||
index = 0,
|
||||
length = animation.tweens.length;
|
||||
|
||||
for ( ; index < length ; index++ ) {
|
||||
for ( ; index < length; index++ ) {
|
||||
animation.tweens[ index ].run( percent );
|
||||
}
|
||||
|
||||
|
@ -304,7 +350,7 @@ function Animation( elem, properties, options ) {
|
|||
return this;
|
||||
}
|
||||
stopped = true;
|
||||
for ( ; index < length ; index++ ) {
|
||||
for ( ; index < length; index++ ) {
|
||||
animation.tweens[ index ].run( 1 );
|
||||
}
|
||||
|
||||
|
@ -322,7 +368,7 @@ function Animation( elem, properties, options ) {
|
|||
|
||||
propFilter( props, animation.opts.specialEasing );
|
||||
|
||||
for ( ; index < length ; index++ ) {
|
||||
for ( ; index < length; index++ ) {
|
||||
result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );
|
||||
if ( result ) {
|
||||
if ( jQuery.isFunction( result.stop ) ) {
|
||||
|
@ -355,6 +401,7 @@ function Animation( elem, properties, options ) {
|
|||
}
|
||||
|
||||
jQuery.Animation = jQuery.extend( Animation, {
|
||||
|
||||
tweeners: {
|
||||
"*": [ function( prop, value ) {
|
||||
var tween = this.createTween( prop, value );
|
||||
|
@ -368,14 +415,14 @@ jQuery.Animation = jQuery.extend( Animation, {
|
|||
callback = props;
|
||||
props = [ "*" ];
|
||||
} else {
|
||||
props = props.match( rnotwhite );
|
||||
props = props.match( rnothtmlwhite );
|
||||
}
|
||||
|
||||
var prop,
|
||||
index = 0,
|
||||
length = props.length;
|
||||
|
||||
for ( ; index < length ; index++ ) {
|
||||
for ( ; index < length; index++ ) {
|
||||
prop = props[ index ];
|
||||
Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];
|
||||
Animation.tweeners[ prop ].unshift( callback );
|
||||
|
@ -401,9 +448,20 @@ jQuery.speed = function( speed, easing, fn ) {
|
|||
easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
|
||||
};
|
||||
|
||||
opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ?
|
||||
opt.duration : opt.duration in jQuery.fx.speeds ?
|
||||
jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
|
||||
// Go to the end state if fx are off or if document is hidden
|
||||
if ( jQuery.fx.off || document.hidden ) {
|
||||
opt.duration = 0;
|
||||
|
||||
} else {
|
||||
if ( typeof opt.duration !== "number" ) {
|
||||
if ( opt.duration in jQuery.fx.speeds ) {
|
||||
opt.duration = jQuery.fx.speeds[ opt.duration ];
|
||||
|
||||
} else {
|
||||
opt.duration = jQuery.fx.speeds._default;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Normalize opt.queue - true/undefined/null -> "fx"
|
||||
if ( opt.queue == null || opt.queue === true ) {
|
||||
|
@ -430,7 +488,7 @@ jQuery.fn.extend( {
|
|||
fadeTo: function( speed, to, easing, callback ) {
|
||||
|
||||
// Show any hidden elements after setting opacity to 0
|
||||
return this.filter( isHidden ).css( "opacity", 0 ).show()
|
||||
return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show()
|
||||
|
||||
// Animate to the value specified
|
||||
.end().animate( { opacity: to }, speed, easing, callback );
|
||||
|
@ -607,12 +665,18 @@ jQuery.fx.timer = function( timer ) {
|
|||
jQuery.fx.interval = 13;
|
||||
jQuery.fx.start = function() {
|
||||
if ( !timerId ) {
|
||||
timerId = window.setInterval( jQuery.fx.tick, jQuery.fx.interval );
|
||||
timerId = window.requestAnimationFrame ?
|
||||
window.requestAnimationFrame( raf ) :
|
||||
window.setInterval( jQuery.fx.tick, jQuery.fx.interval );
|
||||
}
|
||||
};
|
||||
|
||||
jQuery.fx.stop = function() {
|
||||
window.clearInterval( timerId );
|
||||
if ( window.cancelAnimationFrame ) {
|
||||
window.cancelAnimationFrame( timerId );
|
||||
} else {
|
||||
window.clearInterval( timerId );
|
||||
}
|
||||
|
||||
timerId = null;
|
||||
};
|
||||
|
|
6
bower_components/jquery/src/effects/Tween.js
vendored
6
bower_components/jquery/src/effects/Tween.js
vendored
|
@ -3,6 +3,8 @@ define( [
|
|||
"../css"
|
||||
], function( jQuery ) {
|
||||
|
||||
"use strict";
|
||||
|
||||
function Tween( elem, options, prop, end, easing ) {
|
||||
return new Tween.prototype.init( elem, options, prop, end, easing );
|
||||
}
|
||||
|
@ -93,7 +95,7 @@ Tween.propHooks = {
|
|||
}
|
||||
};
|
||||
|
||||
// Support: IE9
|
||||
// Support: IE <=9 only
|
||||
// Panic based approach to setting things on disconnected nodes
|
||||
Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
|
||||
set: function( tween ) {
|
||||
|
@ -115,7 +117,7 @@ jQuery.easing = {
|
|||
|
||||
jQuery.fx = Tween.prototype.init;
|
||||
|
||||
// Back Compat <1.8 extension point
|
||||
// Back compat <1.8 extension point
|
||||
jQuery.fx.step = {};
|
||||
|
||||
} );
|
||||
|
|
|
@ -4,7 +4,9 @@ define( [
|
|||
"../effects"
|
||||
], function( jQuery ) {
|
||||
|
||||
jQuery.expr.filters.animated = function( elem ) {
|
||||
"use strict";
|
||||
|
||||
jQuery.expr.pseudos.animated = function( elem ) {
|
||||
return jQuery.grep( jQuery.timers, function( fn ) {
|
||||
return elem === fn.elem;
|
||||
} ).length;
|
||||
|
|
264
bower_components/jquery/src/event.js
vendored
264
bower_components/jquery/src/event.js
vendored
|
@ -1,13 +1,16 @@
|
|||
define( [
|
||||
"./core",
|
||||
"./var/document",
|
||||
"./var/rnotwhite",
|
||||
"./var/documentElement",
|
||||
"./var/rnothtmlwhite",
|
||||
"./var/slice",
|
||||
"./data/var/dataPriv",
|
||||
|
||||
"./core/init",
|
||||
"./selector"
|
||||
], function( jQuery, document, rnotwhite, slice, dataPriv ) {
|
||||
], function( jQuery, document, documentElement, rnothtmlwhite, slice, dataPriv ) {
|
||||
|
||||
"use strict";
|
||||
|
||||
var
|
||||
rkeyEvent = /^key/,
|
||||
|
@ -22,7 +25,7 @@ function returnFalse() {
|
|||
return false;
|
||||
}
|
||||
|
||||
// Support: IE9
|
||||
// Support: IE <=9 only
|
||||
// See #13393 for more info
|
||||
function safeActiveElement() {
|
||||
try {
|
||||
|
@ -118,6 +121,12 @@ jQuery.event = {
|
|||
selector = handleObjIn.selector;
|
||||
}
|
||||
|
||||
// Ensure that invalid selectors throw exceptions at attach time
|
||||
// Evaluate against documentElement in case elem is a non-element node (e.g., document)
|
||||
if ( selector ) {
|
||||
jQuery.find.matchesSelector( documentElement, selector );
|
||||
}
|
||||
|
||||
// Make sure that the handler has a unique ID, used to find/remove it later
|
||||
if ( !handler.guid ) {
|
||||
handler.guid = jQuery.guid++;
|
||||
|
@ -138,7 +147,7 @@ jQuery.event = {
|
|||
}
|
||||
|
||||
// Handle multiple events separated by a space
|
||||
types = ( types || "" ).match( rnotwhite ) || [ "" ];
|
||||
types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
|
||||
t = types.length;
|
||||
while ( t-- ) {
|
||||
tmp = rtypenamespace.exec( types[ t ] ) || [];
|
||||
|
@ -220,7 +229,7 @@ jQuery.event = {
|
|||
}
|
||||
|
||||
// Once for each type.namespace in types; type may be omitted
|
||||
types = ( types || "" ).match( rnotwhite ) || [ "" ];
|
||||
types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
|
||||
t = types.length;
|
||||
while ( t-- ) {
|
||||
tmp = rtypenamespace.exec( types[ t ] ) || [];
|
||||
|
@ -281,19 +290,23 @@ jQuery.event = {
|
|||
}
|
||||
},
|
||||
|
||||
dispatch: function( event ) {
|
||||
dispatch: function( nativeEvent ) {
|
||||
|
||||
// Make a writable jQuery.Event from the native event object
|
||||
event = jQuery.event.fix( event );
|
||||
var event = jQuery.event.fix( nativeEvent );
|
||||
|
||||
var i, j, ret, matched, handleObj,
|
||||
handlerQueue = [],
|
||||
args = slice.call( arguments ),
|
||||
var i, j, ret, matched, handleObj, handlerQueue,
|
||||
args = new Array( arguments.length ),
|
||||
handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [],
|
||||
special = jQuery.event.special[ event.type ] || {};
|
||||
|
||||
// Use the fix-ed jQuery.Event rather than the (read-only) native event
|
||||
args[ 0 ] = event;
|
||||
|
||||
for ( i = 1; i < arguments.length; i++ ) {
|
||||
args[ i ] = arguments[ i ];
|
||||
}
|
||||
|
||||
event.delegateTarget = this;
|
||||
|
||||
// Call the preDispatch hook for the mapped type, and let it bail if desired
|
||||
|
@ -342,146 +355,95 @@ jQuery.event = {
|
|||
},
|
||||
|
||||
handlers: function( event, handlers ) {
|
||||
var i, matches, sel, handleObj,
|
||||
var i, handleObj, sel, matchedHandlers, matchedSelectors,
|
||||
handlerQueue = [],
|
||||
delegateCount = handlers.delegateCount,
|
||||
cur = event.target;
|
||||
|
||||
// Support (at least): Chrome, IE9
|
||||
// Find delegate handlers
|
||||
// Black-hole SVG <use> instance trees (#13180)
|
||||
//
|
||||
// Support: Firefox<=42+
|
||||
// Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343)
|
||||
if ( delegateCount && cur.nodeType &&
|
||||
( event.type !== "click" || isNaN( event.button ) || event.button < 1 ) ) {
|
||||
if ( delegateCount &&
|
||||
|
||||
// Support: IE <=9
|
||||
// Black-hole SVG <use> instance trees (trac-13180)
|
||||
cur.nodeType &&
|
||||
|
||||
// Support: Firefox <=42
|
||||
// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)
|
||||
// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click
|
||||
// Support: IE 11 only
|
||||
// ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343)
|
||||
!( event.type === "click" && event.button >= 1 ) ) {
|
||||
|
||||
for ( ; cur !== this; cur = cur.parentNode || this ) {
|
||||
|
||||
// Don't check non-elements (#13208)
|
||||
// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
|
||||
if ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== "click" ) ) {
|
||||
matches = [];
|
||||
if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) {
|
||||
matchedHandlers = [];
|
||||
matchedSelectors = {};
|
||||
for ( i = 0; i < delegateCount; i++ ) {
|
||||
handleObj = handlers[ i ];
|
||||
|
||||
// Don't conflict with Object.prototype properties (#13203)
|
||||
sel = handleObj.selector + " ";
|
||||
|
||||
if ( matches[ sel ] === undefined ) {
|
||||
matches[ sel ] = handleObj.needsContext ?
|
||||
if ( matchedSelectors[ sel ] === undefined ) {
|
||||
matchedSelectors[ sel ] = handleObj.needsContext ?
|
||||
jQuery( sel, this ).index( cur ) > -1 :
|
||||
jQuery.find( sel, this, null, [ cur ] ).length;
|
||||
}
|
||||
if ( matches[ sel ] ) {
|
||||
matches.push( handleObj );
|
||||
if ( matchedSelectors[ sel ] ) {
|
||||
matchedHandlers.push( handleObj );
|
||||
}
|
||||
}
|
||||
if ( matches.length ) {
|
||||
handlerQueue.push( { elem: cur, handlers: matches } );
|
||||
if ( matchedHandlers.length ) {
|
||||
handlerQueue.push( { elem: cur, handlers: matchedHandlers } );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Add the remaining (directly-bound) handlers
|
||||
cur = this;
|
||||
if ( delegateCount < handlers.length ) {
|
||||
handlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } );
|
||||
handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );
|
||||
}
|
||||
|
||||
return handlerQueue;
|
||||
},
|
||||
|
||||
// Includes some event props shared by KeyEvent and MouseEvent
|
||||
props: ( "altKey bubbles cancelable ctrlKey currentTarget detail eventPhase " +
|
||||
"metaKey relatedTarget shiftKey target timeStamp view which" ).split( " " ),
|
||||
addProp: function( name, hook ) {
|
||||
Object.defineProperty( jQuery.Event.prototype, name, {
|
||||
enumerable: true,
|
||||
configurable: true,
|
||||
|
||||
fixHooks: {},
|
||||
get: jQuery.isFunction( hook ) ?
|
||||
function() {
|
||||
if ( this.originalEvent ) {
|
||||
return hook( this.originalEvent );
|
||||
}
|
||||
} :
|
||||
function() {
|
||||
if ( this.originalEvent ) {
|
||||
return this.originalEvent[ name ];
|
||||
}
|
||||
},
|
||||
|
||||
keyHooks: {
|
||||
props: "char charCode key keyCode".split( " " ),
|
||||
filter: function( event, original ) {
|
||||
|
||||
// Add which for key events
|
||||
if ( event.which == null ) {
|
||||
event.which = original.charCode != null ? original.charCode : original.keyCode;
|
||||
set: function( value ) {
|
||||
Object.defineProperty( this, name, {
|
||||
enumerable: true,
|
||||
configurable: true,
|
||||
writable: true,
|
||||
value: value
|
||||
} );
|
||||
}
|
||||
|
||||
return event;
|
||||
}
|
||||
} );
|
||||
},
|
||||
|
||||
mouseHooks: {
|
||||
props: ( "button buttons clientX clientY offsetX offsetY pageX pageY " +
|
||||
"screenX screenY toElement" ).split( " " ),
|
||||
filter: function( event, original ) {
|
||||
var eventDoc, doc, body,
|
||||
button = original.button;
|
||||
|
||||
// Calculate pageX/Y if missing and clientX/Y available
|
||||
if ( event.pageX == null && original.clientX != null ) {
|
||||
eventDoc = event.target.ownerDocument || document;
|
||||
doc = eventDoc.documentElement;
|
||||
body = eventDoc.body;
|
||||
|
||||
event.pageX = original.clientX +
|
||||
( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) -
|
||||
( doc && doc.clientLeft || body && body.clientLeft || 0 );
|
||||
event.pageY = original.clientY +
|
||||
( doc && doc.scrollTop || body && body.scrollTop || 0 ) -
|
||||
( doc && doc.clientTop || body && body.clientTop || 0 );
|
||||
}
|
||||
|
||||
// Add which for click: 1 === left; 2 === middle; 3 === right
|
||||
// Note: button is not normalized, so don't use it
|
||||
if ( !event.which && button !== undefined ) {
|
||||
event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
|
||||
}
|
||||
|
||||
return event;
|
||||
}
|
||||
},
|
||||
|
||||
fix: function( event ) {
|
||||
if ( event[ jQuery.expando ] ) {
|
||||
return event;
|
||||
}
|
||||
|
||||
// Create a writable copy of the event object and normalize some properties
|
||||
var i, prop, copy,
|
||||
type = event.type,
|
||||
originalEvent = event,
|
||||
fixHook = this.fixHooks[ type ];
|
||||
|
||||
if ( !fixHook ) {
|
||||
this.fixHooks[ type ] = fixHook =
|
||||
rmouseEvent.test( type ) ? this.mouseHooks :
|
||||
rkeyEvent.test( type ) ? this.keyHooks :
|
||||
{};
|
||||
}
|
||||
copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
|
||||
|
||||
event = new jQuery.Event( originalEvent );
|
||||
|
||||
i = copy.length;
|
||||
while ( i-- ) {
|
||||
prop = copy[ i ];
|
||||
event[ prop ] = originalEvent[ prop ];
|
||||
}
|
||||
|
||||
// Support: Cordova 2.5 (WebKit) (#13255)
|
||||
// All events should have a target; Cordova deviceready doesn't
|
||||
if ( !event.target ) {
|
||||
event.target = document;
|
||||
}
|
||||
|
||||
// Support: Safari 6.0+, Chrome<28
|
||||
// Target should not be a text node (#504, #13143)
|
||||
if ( event.target.nodeType === 3 ) {
|
||||
event.target = event.target.parentNode;
|
||||
}
|
||||
|
||||
return fixHook.filter ? fixHook.filter( event, originalEvent ) : event;
|
||||
fix: function( originalEvent ) {
|
||||
return originalEvent[ jQuery.expando ] ?
|
||||
originalEvent :
|
||||
new jQuery.Event( originalEvent );
|
||||
},
|
||||
|
||||
special: {
|
||||
|
@ -564,11 +526,21 @@ jQuery.Event = function( src, props ) {
|
|||
this.isDefaultPrevented = src.defaultPrevented ||
|
||||
src.defaultPrevented === undefined &&
|
||||
|
||||
// Support: Android<4.0
|
||||
// Support: Android <=2.3 only
|
||||
src.returnValue === false ?
|
||||
returnTrue :
|
||||
returnFalse;
|
||||
|
||||
// Create target properties
|
||||
// Support: Safari <=6 - 7 only
|
||||
// Target should not be a text node (#504, #13143)
|
||||
this.target = ( src.target && src.target.nodeType === 3 ) ?
|
||||
src.target.parentNode :
|
||||
src.target;
|
||||
|
||||
this.currentTarget = src.currentTarget;
|
||||
this.relatedTarget = src.relatedTarget;
|
||||
|
||||
// Event type
|
||||
} else {
|
||||
this.type = src;
|
||||
|
@ -587,7 +559,7 @@ jQuery.Event = function( src, props ) {
|
|||
};
|
||||
|
||||
// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
|
||||
// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
|
||||
// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
|
||||
jQuery.Event.prototype = {
|
||||
constructor: jQuery.Event,
|
||||
isDefaultPrevented: returnFalse,
|
||||
|
@ -626,13 +598,74 @@ jQuery.Event.prototype = {
|
|||
}
|
||||
};
|
||||
|
||||
// Includes all common event props including KeyEvent and MouseEvent specific props
|
||||
jQuery.each( {
|
||||
altKey: true,
|
||||
bubbles: true,
|
||||
cancelable: true,
|
||||
changedTouches: true,
|
||||
ctrlKey: true,
|
||||
detail: true,
|
||||
eventPhase: true,
|
||||
metaKey: true,
|
||||
pageX: true,
|
||||
pageY: true,
|
||||
shiftKey: true,
|
||||
view: true,
|
||||
"char": true,
|
||||
charCode: true,
|
||||
key: true,
|
||||
keyCode: true,
|
||||
button: true,
|
||||
buttons: true,
|
||||
clientX: true,
|
||||
clientY: true,
|
||||
offsetX: true,
|
||||
offsetY: true,
|
||||
pointerId: true,
|
||||
pointerType: true,
|
||||
screenX: true,
|
||||
screenY: true,
|
||||
targetTouches: true,
|
||||
toElement: true,
|
||||
touches: true,
|
||||
|
||||
which: function( event ) {
|
||||
var button = event.button;
|
||||
|
||||
// Add which for key events
|
||||
if ( event.which == null && rkeyEvent.test( event.type ) ) {
|
||||
return event.charCode != null ? event.charCode : event.keyCode;
|
||||
}
|
||||
|
||||
// Add which for click: 1 === left; 2 === middle; 3 === right
|
||||
if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {
|
||||
if ( button & 1 ) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
if ( button & 2 ) {
|
||||
return 3;
|
||||
}
|
||||
|
||||
if ( button & 4 ) {
|
||||
return 2;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
return event.which;
|
||||
}
|
||||
}, jQuery.event.addProp );
|
||||
|
||||
// Create mouseenter/leave events using mouseover/out and event-time checks
|
||||
// so that event delegation works in jQuery.
|
||||
// Do the same for pointerenter/pointerleave and pointerover/pointerout
|
||||
//
|
||||
// Support: Safari 7 only
|
||||
// Safari sends mouseenter too often; see:
|
||||
// https://code.google.com/p/chromium/issues/detail?id=470258
|
||||
// https://bugs.chromium.org/p/chromium/issues/detail?id=470258
|
||||
// for the description of the bug (it existed in older Chrome versions as well).
|
||||
jQuery.each( {
|
||||
mouseenter: "mouseover",
|
||||
|
@ -663,6 +696,7 @@ jQuery.each( {
|
|||
} );
|
||||
|
||||
jQuery.fn.extend( {
|
||||
|
||||
on: function( types, selector, data, fn ) {
|
||||
return on( this, types, selector, data, fn );
|
||||
},
|
||||
|
|
2
bower_components/jquery/src/event/ajax.js
vendored
2
bower_components/jquery/src/event/ajax.js
vendored
|
@ -3,6 +3,8 @@ define( [
|
|||
"../event"
|
||||
], function( jQuery ) {
|
||||
|
||||
"use strict";
|
||||
|
||||
// Attach a bunch of functions for handling common AJAX events
|
||||
jQuery.each( [
|
||||
"ajaxStart",
|
||||
|
|
6
bower_components/jquery/src/event/alias.js
vendored
6
bower_components/jquery/src/event/alias.js
vendored
|
@ -5,9 +5,11 @@ define( [
|
|||
"./trigger"
|
||||
], function( jQuery ) {
|
||||
|
||||
jQuery.each( ( "blur focus focusin focusout load resize scroll unload click dblclick " +
|
||||
"use strict";
|
||||
|
||||
jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " +
|
||||
"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
|
||||
"change select submit keydown keypress keyup error contextmenu" ).split( " " ),
|
||||
"change select submit keydown keypress keyup contextmenu" ).split( " " ),
|
||||
function( i, name ) {
|
||||
|
||||
// Handle event binding
|
||||
|
|
8
bower_components/jquery/src/event/focusin.js
vendored
8
bower_components/jquery/src/event/focusin.js
vendored
|
@ -7,14 +7,16 @@ define( [
|
|||
"./trigger"
|
||||
], function( jQuery, dataPriv, support ) {
|
||||
|
||||
// Support: Firefox
|
||||
"use strict";
|
||||
|
||||
// Support: Firefox <=44
|
||||
// Firefox doesn't have focus(in | out) events
|
||||
// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
|
||||
//
|
||||
// Support: Chrome, Safari
|
||||
// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1
|
||||
// focus(in | out) events fire after focus & blur events,
|
||||
// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
|
||||
// Related ticket - https://code.google.com/p/chromium/issues/detail?id=449857
|
||||
// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857
|
||||
if ( !support.focusin ) {
|
||||
jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) {
|
||||
|
||||
|
|
2
bower_components/jquery/src/event/support.js
vendored
2
bower_components/jquery/src/event/support.js
vendored
|
@ -2,6 +2,8 @@ define( [
|
|||
"../var/support"
|
||||
], function( support ) {
|
||||
|
||||
"use strict";
|
||||
|
||||
support.focusin = "onfocusin" in window;
|
||||
|
||||
return support;
|
||||
|
|
4
bower_components/jquery/src/event/trigger.js
vendored
4
bower_components/jquery/src/event/trigger.js
vendored
|
@ -8,6 +8,8 @@ define( [
|
|||
"../event"
|
||||
], function( jQuery, document, dataPriv, acceptData, hasOwn ) {
|
||||
|
||||
"use strict";
|
||||
|
||||
var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/;
|
||||
|
||||
jQuery.extend( jQuery.event, {
|
||||
|
@ -121,7 +123,7 @@ jQuery.extend( jQuery.event, {
|
|||
special._default.apply( eventPath.pop(), data ) === false ) &&
|
||||
acceptData( elem ) ) {
|
||||
|
||||
// Call a native DOM method on the target with the same name name as the event.
|
||||
// Call a native DOM method on the target with the same name as the event.
|
||||
// Don't do default actions on window, that's where global variables be (#6170)
|
||||
if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {
|
||||
|
||||
|
|
2
bower_components/jquery/src/exports/amd.js
vendored
2
bower_components/jquery/src/exports/amd.js
vendored
|
@ -2,6 +2,8 @@ define( [
|
|||
"../core"
|
||||
], function( jQuery ) {
|
||||
|
||||
"use strict";
|
||||
|
||||
// Register as a named AMD module, since jQuery can be concatenated with other
|
||||
// files that may use define, but not via a proper concatenation script that
|
||||
// understands anonymous AMD modules. A named AMD is safest and most robust
|
||||
|
|
|
@ -1,3 +1,9 @@
|
|||
define( [
|
||||
"../core"
|
||||
], function( jQuery, noGlobal ) {
|
||||
|
||||
"use strict";
|
||||
|
||||
var
|
||||
|
||||
// Map over jQuery in case of overwrite
|
||||
|
@ -24,3 +30,5 @@ jQuery.noConflict = function( deep ) {
|
|||
if ( !noGlobal ) {
|
||||
window.jQuery = window.$ = jQuery;
|
||||
}
|
||||
|
||||
} );
|
||||
|
|
44
bower_components/jquery/src/intro.js
vendored
44
bower_components/jquery/src/intro.js
vendored
|
@ -1,44 +0,0 @@
|
|||
/*!
|
||||
* jQuery JavaScript Library v@VERSION
|
||||
* http://jquery.com/
|
||||
*
|
||||
* Includes Sizzle.js
|
||||
* http://sizzlejs.com/
|
||||
*
|
||||
* Copyright jQuery Foundation and other contributors
|
||||
* Released under the MIT license
|
||||
* http://jquery.org/license
|
||||
*
|
||||
* Date: @DATE
|
||||
*/
|
||||
|
||||
(function( global, factory ) {
|
||||
|
||||
if ( typeof module === "object" && typeof module.exports === "object" ) {
|
||||
// For CommonJS and CommonJS-like environments where a proper `window`
|
||||
// is present, execute the factory and get jQuery.
|
||||
// For environments that do not have a `window` with a `document`
|
||||
// (such as Node.js), expose a factory as module.exports.
|
||||
// This accentuates the need for the creation of a real `window`.
|
||||
// e.g. var jQuery = require("jquery")(window);
|
||||
// See ticket #14549 for more info.
|
||||
module.exports = global.document ?
|
||||
factory( global, true ) :
|
||||
function( w ) {
|
||||
if ( !w.document ) {
|
||||
throw new Error( "jQuery requires a window with a document" );
|
||||
}
|
||||
return factory( w );
|
||||
};
|
||||
} else {
|
||||
factory( global );
|
||||
}
|
||||
|
||||
// Pass this if window is not defined yet
|
||||
}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
|
||||
|
||||
// Support: Firefox 18+
|
||||
// Can't be in strict mode, several libs including ASP.NET trace
|
||||
// the stack via arguments.caller.callee and Firefox dies if
|
||||
// you try to trace through "use strict" call chains. (#13335)
|
||||
//"use strict";
|
8
bower_components/jquery/src/jquery.js
vendored
8
bower_components/jquery/src/jquery.js
vendored
|
@ -4,6 +4,7 @@ define( [
|
|||
"./traversing",
|
||||
"./callbacks",
|
||||
"./deferred",
|
||||
"./deferred/exceptionHook",
|
||||
"./core/ready",
|
||||
"./data",
|
||||
"./queue",
|
||||
|
@ -29,9 +30,12 @@ define( [
|
|||
"./offset",
|
||||
"./dimensions",
|
||||
"./deprecated",
|
||||
"./exports/amd"
|
||||
"./exports/amd",
|
||||
"./exports/global"
|
||||
], function( jQuery ) {
|
||||
|
||||
return ( window.jQuery = window.$ = jQuery );
|
||||
"use strict";
|
||||
|
||||
return jQuery;
|
||||
|
||||
} );
|
||||
|
|
45
bower_components/jquery/src/manipulation.js
vendored
45
bower_components/jquery/src/manipulation.js
vendored
|
@ -15,6 +15,7 @@ define( [
|
|||
"./data/var/dataPriv",
|
||||
"./data/var/dataUser",
|
||||
"./data/var/acceptData",
|
||||
"./core/DOMEval",
|
||||
|
||||
"./core/init",
|
||||
"./traversing",
|
||||
|
@ -23,12 +24,20 @@ define( [
|
|||
], function( jQuery, concat, push, access,
|
||||
rcheckableType, rtagName, rscriptType,
|
||||
wrapMap, getAll, setGlobalEval, buildFragment, support,
|
||||
dataPriv, dataUser, acceptData ) {
|
||||
dataPriv, dataUser, acceptData, DOMEval ) {
|
||||
|
||||
"use strict";
|
||||
|
||||
var
|
||||
rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,
|
||||
|
||||
// Support: IE 10-11, Edge 10240+
|
||||
/* eslint-disable max-len */
|
||||
|
||||
// See https://github.com/eslint/eslint/issues/3229
|
||||
rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,
|
||||
|
||||
/* eslint-enable */
|
||||
|
||||
// Support: IE <=10 - 11, Edge 12 - 13
|
||||
// In IE/Edge using regex groups here causes severe slowdowns.
|
||||
// See https://connect.microsoft.com/IE/feedback/details/1736512/
|
||||
rnoInnerhtml = /<script|<style|<link/i,
|
||||
|
@ -38,14 +47,14 @@ var
|
|||
rscriptTypeMasked = /^true\/(.*)/,
|
||||
rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
|
||||
|
||||
// Manipulating tables requires a tbody
|
||||
function manipulationTarget( elem, content ) {
|
||||
return jQuery.nodeName( elem, "table" ) &&
|
||||
jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ?
|
||||
if ( jQuery.nodeName( elem, "table" ) &&
|
||||
jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) {
|
||||
|
||||
elem.getElementsByTagName( "tbody" )[ 0 ] ||
|
||||
elem.appendChild( elem.ownerDocument.createElement( "tbody" ) ) :
|
||||
elem;
|
||||
return elem.getElementsByTagName( "tbody" )[ 0 ] || elem;
|
||||
}
|
||||
|
||||
return elem;
|
||||
}
|
||||
|
||||
// Replace/restore the type attribute of script elements for safe DOM manipulation
|
||||
|
@ -163,7 +172,7 @@ function domManip( collection, args, callback, ignored ) {
|
|||
// Keep references to cloned scripts for later restoration
|
||||
if ( hasScripts ) {
|
||||
|
||||
// Support: Android<4.1, PhantomJS<2
|
||||
// Support: Android <=4.0 only, PhantomJS 1 only
|
||||
// push.apply(_, arraylike) throws on ancient WebKit
|
||||
jQuery.merge( scripts, getAll( node, "script" ) );
|
||||
}
|
||||
|
@ -192,7 +201,7 @@ function domManip( collection, args, callback, ignored ) {
|
|||
jQuery._evalUrl( node.src );
|
||||
}
|
||||
} else {
|
||||
jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) );
|
||||
DOMEval( node.textContent.replace( rcleanScript, "" ), doc );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -238,7 +247,7 @@ jQuery.extend( {
|
|||
if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
|
||||
!jQuery.isXMLDoc( elem ) ) {
|
||||
|
||||
// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2
|
||||
// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2
|
||||
destElements = getAll( clone );
|
||||
srcElements = getAll( elem );
|
||||
|
||||
|
@ -291,13 +300,13 @@ jQuery.extend( {
|
|||
}
|
||||
}
|
||||
|
||||
// Support: Chrome <= 35-45+
|
||||
// Support: Chrome <=35 - 45+
|
||||
// Assign undefined instead of using delete, see Data#remove
|
||||
elem[ dataPriv.expando ] = undefined;
|
||||
}
|
||||
if ( elem[ dataUser.expando ] ) {
|
||||
|
||||
// Support: Chrome <= 35-45+
|
||||
// Support: Chrome <=35 - 45+
|
||||
// Assign undefined instead of using delete, see Data#remove
|
||||
elem[ dataUser.expando ] = undefined;
|
||||
}
|
||||
|
@ -307,10 +316,6 @@ jQuery.extend( {
|
|||
} );
|
||||
|
||||
jQuery.fn.extend( {
|
||||
|
||||
// Keep domManip exposed until 3.0 (gh-2225)
|
||||
domManip: domManip,
|
||||
|
||||
detach: function( selector ) {
|
||||
return remove( this, selector, true );
|
||||
},
|
||||
|
@ -468,8 +473,8 @@ jQuery.each( {
|
|||
elems = i === last ? this : this.clone( true );
|
||||
jQuery( insert[ i ] )[ original ]( elems );
|
||||
|
||||
// Support: QtWebKit
|
||||
// .get() because push.apply(_, arraylike) throws
|
||||
// Support: Android <=4.0 only, PhantomJS 1 only
|
||||
// .get() because push.apply(_, arraylike) throws on ancient WebKit
|
||||
push.apply( ret, elems.get() );
|
||||
}
|
||||
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue