mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
update components
This commit is contained in:
parent
84945cabc4
commit
ab2d2eaf94
111 changed files with 4302 additions and 3100 deletions
|
@ -15,12 +15,12 @@
|
||||||
},
|
},
|
||||||
"devDependencies": {},
|
"devDependencies": {},
|
||||||
"ignore": [],
|
"ignore": [],
|
||||||
"version": "1.4.42",
|
"version": "1.4.45",
|
||||||
"_release": "1.4.42",
|
"_release": "1.4.45",
|
||||||
"_resolution": {
|
"_resolution": {
|
||||||
"type": "version",
|
"type": "version",
|
||||||
"tag": "1.4.42",
|
"tag": "1.4.45",
|
||||||
"commit": "8a273500a1a3fa8e197800ba75da1377dbff0def"
|
"commit": "4cefbfaedea068552e25c904340e675e66de4964"
|
||||||
},
|
},
|
||||||
"_source": "https://github.com/MediaBrowser/emby-webcomponents.git",
|
"_source": "https://github.com/MediaBrowser/emby-webcomponents.git",
|
||||||
"_target": "^1.2.0",
|
"_target": "^1.2.0",
|
||||||
|
|
|
@ -64,6 +64,8 @@ button.actionSheetMenuItem {
|
||||||
|
|
||||||
.layout-tv .actionSheetScroller {
|
.layout-tv .actionSheetScroller {
|
||||||
max-height: 60%;
|
max-height: 60%;
|
||||||
|
max-width: 60%;
|
||||||
|
width: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
h1.actionSheetTitle {
|
h1.actionSheetTitle {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
define(['shell', 'dialogHelper', 'loading', 'layoutManager', 'connectionManager', 'scrollHelper', 'embyRouter', 'globalize', 'paper-checkbox', 'emby-input', 'paper-icon-button-light', 'emby-select', 'material-icons', 'css!./../formdialog', 'emby-button'], function (shell, dialogHelper, loading, layoutManager, connectionManager, scrollHelper, embyRouter, globalize) {
|
define(['shell', 'dialogHelper', 'loading', 'layoutManager', 'connectionManager', 'scrollHelper', 'embyRouter', 'globalize', 'emby-checkbox', 'emby-input', 'paper-icon-button-light', 'emby-select', 'material-icons', 'css!./../formdialog', 'emby-button'], function (shell, dialogHelper, loading, layoutManager, connectionManager, scrollHelper, embyRouter, globalize) {
|
||||||
|
|
||||||
var currentServerId;
|
var currentServerId;
|
||||||
|
|
||||||
|
@ -160,15 +160,14 @@
|
||||||
|
|
||||||
html += '<br />';
|
html += '<br />';
|
||||||
|
|
||||||
html += '<div>';
|
html += '<label class="checkboxContainer">';
|
||||||
html += '<paper-checkbox id="chkEnableInternetMetadata">' + globalize.translate('sharedcomponents#SearchForCollectionInternetMetadata') + '</paper-checkbox>';
|
html += '<input is="emby-checkbox" type="checkbox" id="chkEnableInternetMetadata" />';
|
||||||
html += '</div>';
|
html += '<span>' + globalize.translate('sharedcomponents#SearchForCollectionInternetMetadata') + '</span>';
|
||||||
|
html += '</label>';
|
||||||
|
|
||||||
// newCollectionInfo
|
// newCollectionInfo
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
|
|
||||||
html += '<br />';
|
|
||||||
html += '<br />';
|
|
||||||
html += '<div>';
|
html += '<div>';
|
||||||
html += '<button is="emby-button" type="submit" class="raised btnSubmit block">' + globalize.translate('sharedcomponents#ButtonOk') + '</button>';
|
html += '<button is="emby-button" type="submit" class="raised btnSubmit block">' + globalize.translate('sharedcomponents#ButtonOk') + '</button>';
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
|
|
|
@ -24,7 +24,6 @@
|
||||||
max-height: none !important;
|
max-height: none !important;
|
||||||
max-width: none !important;
|
max-width: none !important;
|
||||||
width: auto;
|
width: auto;
|
||||||
contain: strict;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.dialog.centeredDialog {
|
.dialog.centeredDialog {
|
||||||
|
|
|
@ -54,7 +54,6 @@
|
||||||
[is="emby-button"].fab i {
|
[is="emby-button"].fab i {
|
||||||
height: 4.4vh;
|
height: 4.4vh;
|
||||||
width: 4.4vh;
|
width: 4.4vh;
|
||||||
font-size: 4.4vh;
|
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -63,17 +62,16 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
[is="emby-button"].fab.mini {
|
[is="emby-button"].fab.mini {
|
||||||
padding: .4em;
|
|
||||||
min-width: 40px !important;
|
min-width: 40px !important;
|
||||||
min-height: 40px !important;
|
min-height: 40px !important;
|
||||||
height: 3.3vh !important;
|
height: 3.3vh !important;
|
||||||
width: 3.3vh !important;
|
width: 3.3vh !important;
|
||||||
|
padding: .4em;
|
||||||
}
|
}
|
||||||
|
|
||||||
[is="emby-button"].fab.mini i {
|
[is="emby-button"].fab.mini i {
|
||||||
height: 2.6vh !important;
|
height: 2.6vh !important;
|
||||||
width: 2.6vh !important;
|
width: 2.6vh !important;
|
||||||
font-size: 2.6vh !important;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[is="emby-button"].fab iron-icon {
|
[is="emby-button"].fab iron-icon {
|
||||||
|
@ -82,6 +80,10 @@
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[is="emby-button"].fab i {
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
[is="emby-button"].block {
|
[is="emby-button"].block {
|
||||||
display: block;
|
display: block;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
@ -103,7 +105,7 @@
|
||||||
margin-left: .5em;
|
margin-left: .5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
[is=emby-button].autoSize, [is=emby-button].autoSize.fab {
|
[is=emby-button].autoSize {
|
||||||
width: auto !important;
|
width: auto !important;
|
||||||
height: auto !important;
|
height: auto !important;
|
||||||
}
|
}
|
||||||
|
|
139
dashboard-ui/bower_components/emby-webcomponents/emby-checkbox/emby-checkbox.css
vendored
Normal file
139
dashboard-ui/bower_components/emby-webcomponents/emby-checkbox/emby-checkbox.css
vendored
Normal file
|
@ -0,0 +1,139 @@
|
||||||
|
.mdl-checkbox {
|
||||||
|
position: relative;
|
||||||
|
z-index: 1;
|
||||||
|
vertical-align: middle;
|
||||||
|
display: inline-flex;
|
||||||
|
box-sizing: border-box;
|
||||||
|
width: 100%;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
padding-left: 36px;
|
||||||
|
align-items: center;
|
||||||
|
height: 32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.checkboxFieldDescription {
|
||||||
|
padding-left: 36px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.checkboxContainer {
|
||||||
|
margin-bottom: 2em;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.checkboxContainer {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mdl-checkbox__input {
|
||||||
|
position: absolute;
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
opacity: 0;
|
||||||
|
-ms-appearance: none;
|
||||||
|
-moz-appearance: none;
|
||||||
|
-webkit-appearance: none;
|
||||||
|
appearance: none;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.checkboxOutline {
|
||||||
|
position: absolute;
|
||||||
|
top: 3px;
|
||||||
|
left: 0;
|
||||||
|
display: inline-block;
|
||||||
|
box-sizing: border-box;
|
||||||
|
width: 24px;
|
||||||
|
height: 24px;
|
||||||
|
margin: 0;
|
||||||
|
cursor: pointer;
|
||||||
|
overflow: hidden;
|
||||||
|
border: 2px solid currentcolor;
|
||||||
|
border-radius: 2px;
|
||||||
|
z-index: 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mdl-checkbox__input:checked + span + span + .checkboxOutline {
|
||||||
|
border: 2px solid #52B54B;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mdl-checkbox__input[disabled] + span + span + .checkboxOutline {
|
||||||
|
border: 2px solid rgba(0, 0, 0, 0.26);
|
||||||
|
cursor: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mdl-checkbox__focus-helper {
|
||||||
|
position: absolute;
|
||||||
|
top: -12px;
|
||||||
|
left:-12px;
|
||||||
|
width: 48px;
|
||||||
|
height: 48px;
|
||||||
|
display: inline-block;
|
||||||
|
box-sizing: border-box;
|
||||||
|
margin: 3px 0 0 0;
|
||||||
|
border-radius: 50%;
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mdl-checkbox__input:focus + span + .mdl-checkbox__focus-helper {
|
||||||
|
background-color: rgba(82, 181, 75, 0.26);
|
||||||
|
}
|
||||||
|
|
||||||
|
.mdl-checkbox__tick-outline {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
height: 100%;
|
||||||
|
width: 100%;
|
||||||
|
background: transparent;
|
||||||
|
transition-duration: 0.28s;
|
||||||
|
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
|
transition-property: background;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mdl-checkbox__input:checked + span + span + .checkboxOutline .mdl-checkbox__tick-outline {
|
||||||
|
background: #52B54B url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgdmVyc2lvbj0iMS4xIgogICB2aWV3Qm94PSIwIDAgMSAxIgogICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWluWU1pbiBtZWV0Ij4KICA8cGF0aAogICAgIGQ9Ik0gMC4wNDAzODA1OSwwLjYyNjc3NjcgMC4xNDY0NDY2MSwwLjUyMDcxMDY4IDAuNDI5Mjg5MzIsMC44MDM1NTMzOSAwLjMyMzIyMzMsMC45MDk2MTk0MSB6IE0gMC4yMTcxNTcyOSwwLjgwMzU1MzM5IDAuODUzNTUzMzksMC4xNjcxNTcyOSAwLjk1OTYxOTQxLDAuMjczMjIzMyAwLjMyMzIyMzMsMC45MDk2MTk0MSB6IgogICAgIGlkPSJyZWN0Mzc4MCIKICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIiAvPgo8L3N2Zz4K");
|
||||||
|
}
|
||||||
|
|
||||||
|
.mdl-checkbox__input:checked[disabled] + span + span + .checkboxOutline .mdl-checkbox__tick-outline {
|
||||||
|
background: rgba(0, 0, 0, 0.26) url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgdmVyc2lvbj0iMS4xIgogICB2aWV3Qm94PSIwIDAgMSAxIgogICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWluWU1pbiBtZWV0Ij4KICA8cGF0aAogICAgIGQ9Ik0gMC4wNDAzODA1OSwwLjYyNjc3NjcgMC4xNDY0NDY2MSwwLjUyMDcxMDY4IDAuNDI5Mjg5MzIsMC44MDM1NTMzOSAwLjMyMzIyMzMsMC45MDk2MTk0MSB6IE0gMC4yMTcxNTcyOSwwLjgwMzU1MzM5IDAuODUzNTUzMzksMC4xNjcxNTcyOSAwLjk1OTYxOTQxLDAuMjczMjIzMyAwLjMyMzIyMzMsMC45MDk2MTk0MSB6IgogICAgIGlkPSJyZWN0Mzc4MCIKICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIiAvPgo8L3N2Zz4K");
|
||||||
|
}
|
||||||
|
|
||||||
|
.checkboxLabel {
|
||||||
|
position: relative;
|
||||||
|
cursor: pointer;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mdl-checkbox__input[disabled] + .checkboxLabel {
|
||||||
|
color: rgba(0, 0, 0, 0.26);
|
||||||
|
cursor: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.checkboxList .mdl-checkbox {
|
||||||
|
display: flex;
|
||||||
|
margin: .5em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layout-tv .mdl-checkbox {
|
||||||
|
height: 4.6vh;
|
||||||
|
padding-left: 6vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layout-tv .checkboxFieldDescription {
|
||||||
|
padding-left: 6vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layout-tv .checkboxOutline {
|
||||||
|
width: 4.6vh;
|
||||||
|
height: 4.6vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layout-tv .mdl-checkbox__focus-helper {
|
||||||
|
top: -3.7vh;
|
||||||
|
left: -3.7vh;
|
||||||
|
width: 12vh;
|
||||||
|
height: 12vh;
|
||||||
|
}
|
45
dashboard-ui/bower_components/emby-webcomponents/emby-checkbox/emby-checkbox.js
vendored
Normal file
45
dashboard-ui/bower_components/emby-webcomponents/emby-checkbox/emby-checkbox.js
vendored
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
define(['css!./emby-checkbox', 'registerElement'], function () {
|
||||||
|
|
||||||
|
var EmbyCheckboxPrototype = Object.create(HTMLInputElement.prototype);
|
||||||
|
|
||||||
|
function onKeyDown(e) {
|
||||||
|
|
||||||
|
// Don't submit form on enter
|
||||||
|
if (e.keyCode == 13) {
|
||||||
|
e.preventDefault();
|
||||||
|
|
||||||
|
this.checked = !this.checked;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
EmbyCheckboxPrototype.attachedCallback = function () {
|
||||||
|
|
||||||
|
if (this.getAttribute('data-embycheckbox') == 'true') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.setAttribute('data-embycheckbox', 'true');
|
||||||
|
|
||||||
|
this.classList.add('mdl-checkbox__input');
|
||||||
|
|
||||||
|
var labelElement = this.parentNode;
|
||||||
|
//labelElement.classList.add('mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect mdl-js-ripple-effect--ignore-events');
|
||||||
|
labelElement.classList.add('mdl-checkbox');
|
||||||
|
labelElement.classList.add('mdl-js-checkbox');
|
||||||
|
labelElement.classList.add('mdl-js-ripple-effect');
|
||||||
|
|
||||||
|
var labelTextElement = labelElement.querySelector('span');
|
||||||
|
labelElement.insertAdjacentHTML('beforeend', '<span class="mdl-checkbox__focus-helper"></span><span class="checkboxOutline"><span class="mdl-checkbox__tick-outline"></span></span>');
|
||||||
|
|
||||||
|
labelTextElement.classList.add('checkboxLabel');
|
||||||
|
|
||||||
|
this.addEventListener('keydown', onKeyDown);
|
||||||
|
};
|
||||||
|
|
||||||
|
document.registerElement('emby-checkbox', {
|
||||||
|
prototype: EmbyCheckboxPrototype,
|
||||||
|
extends: 'input'
|
||||||
|
});
|
||||||
|
});
|
|
@ -45,7 +45,7 @@
|
||||||
label.innerHTML = this.getAttribute('label') || '';
|
label.innerHTML = this.getAttribute('label') || '';
|
||||||
label.classList.add('inputLabel');
|
label.classList.add('inputLabel');
|
||||||
|
|
||||||
if (!supportsFloatingLabel) {
|
if (!supportsFloatingLabel || this.type == 'date') {
|
||||||
label.classList.add('nofloat');
|
label.classList.add('nofloat');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -78,6 +78,10 @@
|
||||||
this.addEventListener('valueset', onChange);
|
this.addEventListener('valueset', onChange);
|
||||||
|
|
||||||
onChange.call(this);
|
onChange.call(this);
|
||||||
|
|
||||||
|
this.label = function (text) {
|
||||||
|
label.innerHTML = text;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
document.registerElement('emby-input', {
|
document.registerElement('emby-input', {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
define(['shell', 'dialogHelper', 'loading', 'layoutManager', 'connectionManager', 'scrollHelper', 'embyRouter', 'globalize', 'paper-checkbox', 'emby-input', 'paper-icon-button-light', 'emby-select', 'material-icons', 'css!./../formdialog', 'emby-button'], function (shell, dialogHelper, loading, layoutManager, connectionManager, scrollHelper, embyRouter, globalize) {
|
define(['shell', 'dialogHelper', 'loading', 'layoutManager', 'connectionManager', 'scrollHelper', 'embyRouter', 'globalize', 'emby-input', 'paper-icon-button-light', 'emby-select', 'material-icons', 'css!./../formdialog', 'emby-button'], function (shell, dialogHelper, loading, layoutManager, connectionManager, scrollHelper, embyRouter, globalize) {
|
||||||
|
|
||||||
var lastPlaylistId = '';
|
var lastPlaylistId = '';
|
||||||
var currentServerId;
|
var currentServerId;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'connectionManager', 'require', 'loading', 'scrollHelper', 'paper-checkbox', 'emby-button', 'emby-collapsible', 'emby-input', 'paper-icon-button-light', 'css!./../formdialog', 'css!./recordingcreator', 'material-icons'], function (dialogHelper, globalize, layoutManager, mediaInfo, appHost, connectionManager, require, loading, scrollHelper) {
|
define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'connectionManager', 'require', 'loading', 'scrollHelper', 'emby-checkbox', 'emby-button', 'emby-collapsible', 'emby-input', 'paper-icon-button-light', 'css!./../formdialog', 'css!./recordingcreator', 'material-icons'], function (dialogHelper, globalize, layoutManager, mediaInfo, appHost, connectionManager, require, loading, scrollHelper) {
|
||||||
|
|
||||||
var currentProgramId;
|
var currentProgramId;
|
||||||
var currentServerId;
|
var currentServerId;
|
||||||
|
|
|
@ -14,25 +14,36 @@
|
||||||
|
|
||||||
<div id="eligibleForSeriesFields" class="hide">
|
<div id="eligibleForSeriesFields" class="hide">
|
||||||
<br />
|
<br />
|
||||||
<div>
|
<label class="checkboxContainer">
|
||||||
<paper-checkbox id="chkRecordSeries">${RecordSeries}</paper-checkbox>
|
<input type="checkbox" is="emby-checkbox" id="chkRecordSeries"/>
|
||||||
</div>
|
<span>${RecordSeries}</span>
|
||||||
|
</label>
|
||||||
|
|
||||||
<div class="seriesFields hide">
|
<div class="seriesFields hide">
|
||||||
<br />
|
<div class="checkboxList">
|
||||||
<div class="paperCheckboxList">
|
<label>
|
||||||
<paper-checkbox id="chkNewOnly">${RecordOnlyNewEpisodes}</paper-checkbox>
|
<input type="checkbox" is="emby-checkbox" id="chkNewOnly" />
|
||||||
<paper-checkbox id="chkAnyTime">${RecordAnytime}</paper-checkbox>
|
<span>${RecordOnlyNewEpisodes}</span>
|
||||||
<paper-checkbox id="chkAllChannels">${RecordOnAllChannels}</paper-checkbox>
|
</label>
|
||||||
|
<label>
|
||||||
|
<input type="checkbox" is="emby-checkbox" id="chkAnyTime" />
|
||||||
|
<span>${RecordAnytime}</span>
|
||||||
|
</label>
|
||||||
|
<label>
|
||||||
|
<input type="checkbox" is="emby-checkbox" id="chkAllChannels" />
|
||||||
|
<span>${RecordOnAllChannels}</span>
|
||||||
|
</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<br />
|
<br />
|
||||||
</div>
|
</div>
|
||||||
<div class="convertRecordingsContainer hide">
|
<div class="convertRecordingsContainer hide checkboxContainer">
|
||||||
<br />
|
<label>
|
||||||
<paper-checkbox id="chkConvertRecordings">${OptionConvertRecordingsToStreamingFormat}</paper-checkbox>
|
<input type="checkbox" is="emby-checkbox" id="chkConvertRecordings" />
|
||||||
<div class="fieldDescription paperCheckboxFieldDescription">${OptionConvertRecordingsToStreamingFormatHelp}</div>
|
<span>${OptionConvertRecordingsToStreamingFormat}</span>
|
||||||
<div class="fieldDescription paperCheckboxFieldDescription btnSupporterForConverting hide">
|
</label>
|
||||||
|
<div class="fieldDescription checkboxFieldDescription">${OptionConvertRecordingsToStreamingFormatHelp}</div>
|
||||||
|
<div class="fieldDescription checkboxFieldDescription btnSupporterForConverting hide">
|
||||||
<a href="#" class="accent lnkPremiere">${FeatureRequiresEmbyPremiere}</a>
|
<a href="#" class="accent lnkPremiere">${FeatureRequiresEmbyPremiere}</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -44,14 +55,35 @@
|
||||||
<div>
|
<div>
|
||||||
<h1>${Days}</h1>
|
<h1>${Days}</h1>
|
||||||
</div>
|
</div>
|
||||||
<div class="paperCheckboxList">
|
<div class="checkboxList">
|
||||||
<paper-checkbox id="chkSunday">${Sunday}</paper-checkbox>
|
<label>
|
||||||
<paper-checkbox id="chkMonday">${Monday}</paper-checkbox>
|
<input type="checkbox" is="emby-checkbox" id="chkSunday" />
|
||||||
<paper-checkbox id="chkTuesday">${Tuesday}</paper-checkbox>
|
<span>${Sunday}</span>
|
||||||
<paper-checkbox id="chkWednesday">${Wednesday}</paper-checkbox>
|
</label>
|
||||||
<paper-checkbox id="chkThursday">${Thursday}</paper-checkbox>
|
<label>
|
||||||
<paper-checkbox id="chkFriday">${Friday}</paper-checkbox>
|
<input type="checkbox" is="emby-checkbox" id="chkMonday" />
|
||||||
<paper-checkbox id="chkSaturday">${Saturday}</paper-checkbox>
|
<span>${Monday}</span>
|
||||||
|
</label>
|
||||||
|
<label>
|
||||||
|
<input type="checkbox" is="emby-checkbox" id="chkTuesday" />
|
||||||
|
<span>${Tuesday}</span>
|
||||||
|
</label>
|
||||||
|
<label>
|
||||||
|
<input type="checkbox" is="emby-checkbox" id="chkWednesday" />
|
||||||
|
<span>${Wednesday}</span>
|
||||||
|
</label>
|
||||||
|
<label>
|
||||||
|
<input type="checkbox" is="emby-checkbox" id="chkThursday" />
|
||||||
|
<span>${Thursday}</span>
|
||||||
|
</label>
|
||||||
|
<label>
|
||||||
|
<input type="checkbox" is="emby-checkbox" id="chkFriday" />
|
||||||
|
<span>${Friday}</span>
|
||||||
|
</label>
|
||||||
|
<label>
|
||||||
|
<input type="checkbox" is="emby-checkbox" id="chkSaturday" />
|
||||||
|
<span>${Saturday}</span>
|
||||||
|
</label>
|
||||||
</div>
|
</div>
|
||||||
<br />
|
<br />
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'connectionManager', 'require', 'loading', 'scrollHelper', 'scrollStyles', 'paper-checkbox', 'emby-button', 'emby-collapsible', 'emby-input', 'paper-icon-button-light', 'css!./../formdialog', 'css!./recordingcreator', 'material-icons'], function (dialogHelper, globalize, layoutManager, mediaInfo, appHost, connectionManager, require, loading, scrollHelper) {
|
define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'connectionManager', 'require', 'loading', 'scrollHelper', 'scrollStyles', 'emby-button', 'emby-collapsible', 'emby-input', 'paper-icon-button-light', 'css!./../formdialog', 'css!./recordingcreator', 'material-icons'], function (dialogHelper, globalize, layoutManager, mediaInfo, appHost, connectionManager, require, loading, scrollHelper) {
|
||||||
|
|
||||||
var currentDialog;
|
var currentDialog;
|
||||||
var recordingUpdated = false;
|
var recordingUpdated = false;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "hls.js",
|
"name": "hls.js",
|
||||||
"version": "0.5.35",
|
"version": "0.5.36",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"description": "Media Source Extension - HLS library, by/for Dailymotion",
|
"description": "Media Source Extension - HLS library, by/for Dailymotion",
|
||||||
"homepage": "https://github.com/dailymotion/hls.js",
|
"homepage": "https://github.com/dailymotion/hls.js",
|
||||||
|
@ -16,11 +16,11 @@
|
||||||
"test",
|
"test",
|
||||||
"tests"
|
"tests"
|
||||||
],
|
],
|
||||||
"_release": "0.5.35",
|
"_release": "0.5.36",
|
||||||
"_resolution": {
|
"_resolution": {
|
||||||
"type": "version",
|
"type": "version",
|
||||||
"tag": "v0.5.35",
|
"tag": "v0.5.36",
|
||||||
"commit": "ae83fd3b6f87c2b62dd4ca7419589cefbfafc394"
|
"commit": "a39814dc1e5be2516518a30edf9f1629e05dea27"
|
||||||
},
|
},
|
||||||
"_source": "git://github.com/dailymotion/hls.js.git",
|
"_source": "git://github.com/dailymotion/hls.js.git",
|
||||||
"_target": "~0.5.7",
|
"_target": "~0.5.7",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "hls.js",
|
"name": "hls.js",
|
||||||
"version": "0.5.35",
|
"version": "0.5.36",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"description": "Media Source Extension - HLS library, by/for Dailymotion",
|
"description": "Media Source Extension - HLS library, by/for Dailymotion",
|
||||||
"homepage": "https://github.com/dailymotion/hls.js",
|
"homepage": "https://github.com/dailymotion/hls.js",
|
||||||
|
|
|
@ -535,7 +535,7 @@
|
||||||
ctx.fillStyle = "black";
|
ctx.fillStyle = "black";
|
||||||
ctx.font = "15px Arial";
|
ctx.font = "15px Arial";
|
||||||
legend = event.type;
|
legend = event.type;
|
||||||
if (event.name) legend+= ':' + event.name;
|
if (event.name !== undefined) legend+= ':' + event.name;
|
||||||
ctx.fillText(legend,5,yoffset+15);
|
ctx.fillText(legend,5,yoffset+15);
|
||||||
|
|
||||||
|
|
||||||
|
|
148
dashboard-ui/bower_components/hls.js/dist/hls.js
vendored
148
dashboard-ui/bower_components/hls.js/dist/hls.js
vendored
|
@ -646,10 +646,16 @@ var BufferController = function (_EventHandler) {
|
||||||
function BufferController(hls) {
|
function BufferController(hls) {
|
||||||
_classCallCheck(this, BufferController);
|
_classCallCheck(this, BufferController);
|
||||||
|
|
||||||
|
// the value that we have set mediasource.duration to
|
||||||
|
// (the actual duration may be tweaked slighly by the browser)
|
||||||
|
|
||||||
|
var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(BufferController).call(this, hls, _events2.default.MEDIA_ATTACHING, _events2.default.MEDIA_DETACHING, _events2.default.BUFFER_RESET, _events2.default.BUFFER_APPENDING, _events2.default.BUFFER_CODECS, _events2.default.BUFFER_EOS, _events2.default.BUFFER_FLUSHING, _events2.default.LEVEL_UPDATED));
|
||||||
|
|
||||||
|
_this._msDuration = null;
|
||||||
|
// the value that we want to set mediaSource.duration to
|
||||||
|
_this._levelDuration = null;
|
||||||
|
|
||||||
// Source Buffer listeners
|
// Source Buffer listeners
|
||||||
|
|
||||||
var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(BufferController).call(this, hls, _events2.default.MEDIA_ATTACHING, _events2.default.MEDIA_DETACHING, _events2.default.BUFFER_RESET, _events2.default.BUFFER_APPENDING, _events2.default.BUFFER_CODECS, _events2.default.BUFFER_EOS, _events2.default.BUFFER_FLUSHING));
|
|
||||||
|
|
||||||
_this.onsbue = _this.onSBUpdateEnd.bind(_this);
|
_this.onsbue = _this.onSBUpdateEnd.bind(_this);
|
||||||
_this.onsbe = _this.onSBUpdateError.bind(_this);
|
_this.onsbe = _this.onSBUpdateError.bind(_this);
|
||||||
return _this;
|
return _this;
|
||||||
|
@ -852,6 +858,50 @@ var BufferController = function (_EventHandler) {
|
||||||
this.flushBufferCounter = 0;
|
this.flushBufferCounter = 0;
|
||||||
this.doFlush();
|
this.doFlush();
|
||||||
}
|
}
|
||||||
|
}, {
|
||||||
|
key: 'onLevelUpdated',
|
||||||
|
value: function onLevelUpdated(event) {
|
||||||
|
var details = event.details;
|
||||||
|
if (details.fragments.length === 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this._levelDuration = details.totalduration + details.fragments[0].start;
|
||||||
|
this.updateMediaElementDuration();
|
||||||
|
}
|
||||||
|
|
||||||
|
// https://github.com/dailymotion/hls.js/issues/355
|
||||||
|
|
||||||
|
}, {
|
||||||
|
key: 'updateMediaElementDuration',
|
||||||
|
value: function updateMediaElementDuration() {
|
||||||
|
if (this._levelDuration === null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var media = this.media;
|
||||||
|
var mediaSource = this.mediaSource;
|
||||||
|
if (!media || !mediaSource || media.readyState === 0 || mediaSource.readyState !== 'open') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for (var type in mediaSource.sourceBuffers) {
|
||||||
|
if (mediaSource.sourceBuffers[type].updating) {
|
||||||
|
// can't set duration whilst a buffer is updating
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (this._msDuration === null) {
|
||||||
|
// initialise to the value that the media source is reporting
|
||||||
|
this._msDuration = mediaSource.duration;
|
||||||
|
}
|
||||||
|
// this._levelDuration was the last value we set.
|
||||||
|
// not using mediaSource.duration as the browser may tweak this value
|
||||||
|
// only update mediasource duration if its value increase, this is to avoid
|
||||||
|
// flushing already buffered portion when switching between quality level, as they
|
||||||
|
if (this._levelDuration > this._msDuration) {
|
||||||
|
_logger.logger.log('Updating mediasource duration to ' + this._levelDuration);
|
||||||
|
mediaSource.duration = this._levelDuration;
|
||||||
|
this._msDuration = this._levelDuration;
|
||||||
|
}
|
||||||
|
}
|
||||||
}, {
|
}, {
|
||||||
key: 'doFlush',
|
key: 'doFlush',
|
||||||
value: function doFlush() {
|
value: function doFlush() {
|
||||||
|
@ -1183,8 +1233,6 @@ var EwmaBandWidthEstimator = function () {
|
||||||
this.defaultEstimate_ = 5e5; // 500kbps
|
this.defaultEstimate_ = 5e5; // 500kbps
|
||||||
this.minWeight_ = 0.001;
|
this.minWeight_ = 0.001;
|
||||||
this.minDelayMs_ = 50;
|
this.minDelayMs_ = 50;
|
||||||
this.fast_ = new _ewma2.default(hls.config.abrEwmaFast);
|
|
||||||
this.slow_ = new _ewma2.default(hls.config.abrEwmaSlow);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_createClass(EwmaBandWidthEstimator, [{
|
_createClass(EwmaBandWidthEstimator, [{
|
||||||
|
@ -1195,6 +1243,14 @@ var EwmaBandWidthEstimator = function () {
|
||||||
//console.log('instant bw:'+ Math.round(bandwidth));
|
//console.log('instant bw:'+ Math.round(bandwidth));
|
||||||
// we weight sample using loading duration....
|
// we weight sample using loading duration....
|
||||||
var weigth = durationMs / 1000;
|
var weigth = durationMs / 1000;
|
||||||
|
|
||||||
|
// lazy initialization. this allows to take into account config param changes that could happen after Hls instantiation,
|
||||||
|
// but before first fragment loading. this is useful to A/B tests those params
|
||||||
|
if (!this.fast_) {
|
||||||
|
var config = this.hls.config;
|
||||||
|
this.fast_ = new _ewma2.default(config.abrEwmaFast);
|
||||||
|
this.slow_ = new _ewma2.default(config.abrEwmaSlow);
|
||||||
|
}
|
||||||
this.fast_.sample(weigth, bandwidth);
|
this.fast_.sample(weigth, bandwidth);
|
||||||
this.slow_.sample(weigth, bandwidth);
|
this.slow_.sample(weigth, bandwidth);
|
||||||
}
|
}
|
||||||
|
@ -1726,13 +1782,13 @@ var StreamController = function (_EventHandler) {
|
||||||
}, {
|
}, {
|
||||||
key: 'doTick',
|
key: 'doTick',
|
||||||
value: function doTick() {
|
value: function doTick() {
|
||||||
var _this2 = this;
|
|
||||||
|
|
||||||
var pos,
|
var pos,
|
||||||
level,
|
level,
|
||||||
levelDetails,
|
levelDetails,
|
||||||
hls = this.hls,
|
hls = this.hls,
|
||||||
config = hls.config;
|
config = hls.config,
|
||||||
|
media = this.media,
|
||||||
|
isSeeking = media && media.seeking;
|
||||||
//logger.log(this.state);
|
//logger.log(this.state);
|
||||||
switch (this.state) {
|
switch (this.state) {
|
||||||
case State.ERROR:
|
case State.ERROR:
|
||||||
|
@ -1759,7 +1815,7 @@ var StreamController = function (_EventHandler) {
|
||||||
// start fragment already requested OR start frag prefetch disable
|
// start fragment already requested OR start frag prefetch disable
|
||||||
// exit loop
|
// exit loop
|
||||||
// => if media not attached but start frag prefetch is enabled and start frag not requested yet, we will not exit loop
|
// => if media not attached but start frag prefetch is enabled and start frag not requested yet, we will not exit loop
|
||||||
if (!this.media && (this.startFragRequested || !config.startFragPrefetch)) {
|
if (!media && (this.startFragRequested || !config.startFragPrefetch)) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// determine next candidate fragment to be loaded, based on current position and
|
// determine next candidate fragment to be loaded, based on current position and
|
||||||
|
@ -1767,12 +1823,12 @@ var StreamController = function (_EventHandler) {
|
||||||
// ensure 60s of buffer upfront
|
// ensure 60s of buffer upfront
|
||||||
// if we have not yet loaded any fragment, start loading from start position
|
// if we have not yet loaded any fragment, start loading from start position
|
||||||
if (this.loadedmetadata) {
|
if (this.loadedmetadata) {
|
||||||
pos = this.media.currentTime;
|
pos = media.currentTime;
|
||||||
} else {
|
} else {
|
||||||
pos = this.nextLoadPosition;
|
pos = this.nextLoadPosition;
|
||||||
}
|
}
|
||||||
level = hls.nextLoadLevel;
|
level = hls.nextLoadLevel;
|
||||||
var bufferInfo = _bufferHelper2.default.bufferInfo(this.media, pos, config.maxBufferHole),
|
var bufferInfo = _bufferHelper2.default.bufferInfo(media, pos, config.maxBufferHole),
|
||||||
bufferLen = bufferInfo.len,
|
bufferLen = bufferInfo.len,
|
||||||
bufferEnd = bufferInfo.end,
|
bufferEnd = bufferInfo.end,
|
||||||
fragPrevious = this.fragPrevious,
|
fragPrevious = this.fragPrevious,
|
||||||
|
@ -1807,7 +1863,7 @@ var StreamController = function (_EventHandler) {
|
||||||
// in case of live playlist we need to ensure that requested position is not located before playlist start
|
// in case of live playlist we need to ensure that requested position is not located before playlist start
|
||||||
if (levelDetails.live) {
|
if (levelDetails.live) {
|
||||||
// check if requested position is within seekable boundaries :
|
// check if requested position is within seekable boundaries :
|
||||||
//logger.log(`start/pos/bufEnd/seeking:${start.toFixed(3)}/${pos.toFixed(3)}/${bufferEnd.toFixed(3)}/${this.media.seeking}`);
|
//logger.log(`start/pos/bufEnd/seeking:${start.toFixed(3)}/${pos.toFixed(3)}/${bufferEnd.toFixed(3)}/${media.seeking}`);
|
||||||
var maxLatency = config.liveMaxLatencyDuration !== undefined ? config.liveMaxLatencyDuration : config.liveMaxLatencyDurationCount * levelDetails.targetduration;
|
var maxLatency = config.liveMaxLatencyDuration !== undefined ? config.liveMaxLatencyDuration : config.liveMaxLatencyDurationCount * levelDetails.targetduration;
|
||||||
|
|
||||||
if (bufferEnd < Math.max(start, end - maxLatency)) {
|
if (bufferEnd < Math.max(start, end - maxLatency)) {
|
||||||
|
@ -1858,13 +1914,13 @@ var StreamController = function (_EventHandler) {
|
||||||
}
|
}
|
||||||
if (!frag) {
|
if (!frag) {
|
||||||
(function () {
|
(function () {
|
||||||
var foundFrag = void 0;
|
|
||||||
var maxFragLookUpTolerance = config.maxFragLookUpTolerance;
|
var maxFragLookUpTolerance = config.maxFragLookUpTolerance;
|
||||||
if (bufferEnd < end) {
|
if (bufferEnd < end) {
|
||||||
if (bufferEnd > end - maxFragLookUpTolerance) {
|
// no frag look up tolerance in case bufferEnd close to end, or media seeking
|
||||||
|
if (bufferEnd > end - maxFragLookUpTolerance || isSeeking) {
|
||||||
maxFragLookUpTolerance = 0;
|
maxFragLookUpTolerance = 0;
|
||||||
}
|
}
|
||||||
foundFrag = _binarySearch2.default.search(fragments, function (candidate) {
|
frag = _binarySearch2.default.search(fragments, function (candidate) {
|
||||||
// offset should be within fragment boundary - config.maxFragLookUpTolerance
|
// offset should be within fragment boundary - config.maxFragLookUpTolerance
|
||||||
// this is to cope with situations like
|
// this is to cope with situations like
|
||||||
// bufferEnd = 9.991
|
// bufferEnd = 9.991
|
||||||
|
@ -1887,35 +1943,32 @@ var StreamController = function (_EventHandler) {
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
// reach end of playlist
|
// reach end of playlist
|
||||||
foundFrag = fragments[fragLen - 1];
|
frag = fragments[fragLen - 1];
|
||||||
}
|
|
||||||
if (foundFrag) {
|
|
||||||
frag = foundFrag;
|
|
||||||
start = foundFrag.start;
|
|
||||||
//logger.log('find SN matching with pos:' + bufferEnd + ':' + frag.sn);
|
|
||||||
if (fragPrevious && frag.level === fragPrevious.level && frag.sn === fragPrevious.sn) {
|
|
||||||
if (frag.sn < levelDetails.endSN) {
|
|
||||||
frag = fragments[frag.sn + 1 - levelDetails.startSN];
|
|
||||||
_logger.logger.log('SN just loaded, load next one: ' + frag.sn);
|
|
||||||
} else {
|
|
||||||
// have we reached end of VOD playlist ?
|
|
||||||
if (!levelDetails.live) {
|
|
||||||
// Finalize the media stream
|
|
||||||
_this2.hls.trigger(_events2.default.BUFFER_EOS);
|
|
||||||
// We might be loading the last fragment but actually the media
|
|
||||||
// is currently processing a seek command and waiting for new data to resume at another point.
|
|
||||||
// Going to ended state while media is seeking can spawn an infinite buffering broken state.
|
|
||||||
if (!_this2.media.seeking) {
|
|
||||||
_this2.state = State.ENDED;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
frag = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
})();
|
})();
|
||||||
}
|
}
|
||||||
if (frag) {
|
if (frag) {
|
||||||
|
start = frag.start;
|
||||||
|
//logger.log('find SN matching with pos:' + bufferEnd + ':' + frag.sn);
|
||||||
|
if (fragPrevious && frag.level === fragPrevious.level && frag.sn === fragPrevious.sn) {
|
||||||
|
if (frag.sn < levelDetails.endSN) {
|
||||||
|
frag = fragments[frag.sn + 1 - levelDetails.startSN];
|
||||||
|
_logger.logger.log('SN just loaded, load next one: ' + frag.sn);
|
||||||
|
} else {
|
||||||
|
// have we reached end of VOD playlist ?
|
||||||
|
if (!levelDetails.live) {
|
||||||
|
// Finalize the media stream
|
||||||
|
this.hls.trigger(_events2.default.BUFFER_EOS);
|
||||||
|
// We might be loading the last fragment but actually the media
|
||||||
|
// is currently processing a seek command and waiting for new data to resume at another point.
|
||||||
|
// Going to ended state while media is seeking can spawn an infinite buffering broken state.
|
||||||
|
if (!isSeeking) {
|
||||||
|
this.state = State.ENDED;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
//logger.log(' loading frag ' + i +',pos/bufEnd:' + pos.toFixed(3) + '/' + bufferEnd.toFixed(3));
|
//logger.log(' loading frag ' + i +',pos/bufEnd:' + pos.toFixed(3) + '/' + bufferEnd.toFixed(3));
|
||||||
if (frag.decryptdata.uri != null && frag.decryptdata.key == null) {
|
if (frag.decryptdata.uri != null && frag.decryptdata.key == null) {
|
||||||
_logger.logger.log('Loading key for ' + frag.sn + ' of [' + levelDetails.startSN + ' ,' + levelDetails.endSN + '],level ' + level);
|
_logger.logger.log('Loading key for ' + frag.sn + ' of [' + levelDetails.startSN + ' ,' + levelDetails.endSN + '],level ' + level);
|
||||||
|
@ -1964,8 +2017,6 @@ var StreamController = function (_EventHandler) {
|
||||||
case State.FRAG_LOADING_WAITING_RETRY:
|
case State.FRAG_LOADING_WAITING_RETRY:
|
||||||
var now = performance.now();
|
var now = performance.now();
|
||||||
var retryDate = this.retryDate;
|
var retryDate = this.retryDate;
|
||||||
var media = this.media;
|
|
||||||
var isSeeking = media && media.seeking;
|
|
||||||
// if current time is gt than retryDate, or if media seeking let's switch to IDLE state to retry loading
|
// if current time is gt than retryDate, or if media seeking let's switch to IDLE state to retry loading
|
||||||
if (!retryDate || now >= retryDate || isSeeking) {
|
if (!retryDate || now >= retryDate || isSeeking) {
|
||||||
_logger.logger.log('mediaController: retryDate reached, switch back to IDLE state');
|
_logger.logger.log('mediaController: retryDate reached, switch back to IDLE state');
|
||||||
|
@ -2486,7 +2537,7 @@ var StreamController = function (_EventHandler) {
|
||||||
}, {
|
}, {
|
||||||
key: 'onFragParsingData',
|
key: 'onFragParsingData',
|
||||||
value: function onFragParsingData(data) {
|
value: function onFragParsingData(data) {
|
||||||
var _this3 = this;
|
var _this2 = this;
|
||||||
|
|
||||||
if (this.state === State.PARSING) {
|
if (this.state === State.PARSING) {
|
||||||
this.tparse2 = Date.now();
|
this.tparse2 = Date.now();
|
||||||
|
@ -2501,7 +2552,7 @@ var StreamController = function (_EventHandler) {
|
||||||
|
|
||||||
[data.data1, data.data2].forEach(function (buffer) {
|
[data.data1, data.data2].forEach(function (buffer) {
|
||||||
if (buffer) {
|
if (buffer) {
|
||||||
_this3.pendingAppending++;
|
_this2.pendingAppending++;
|
||||||
hls.trigger(_events2.default.BUFFER_APPENDING, { type: data.type, data: buffer });
|
hls.trigger(_events2.default.BUFFER_APPENDING, { type: data.type, data: buffer });
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -2645,8 +2696,11 @@ var StreamController = function (_EventHandler) {
|
||||||
_logger.logger.log('target seek position:' + targetSeekPosition);
|
_logger.logger.log('target seek position:' + targetSeekPosition);
|
||||||
}
|
}
|
||||||
var bufferInfo = _bufferHelper2.default.bufferInfo(media, currentTime, 0),
|
var bufferInfo = _bufferHelper2.default.bufferInfo(media, currentTime, 0),
|
||||||
expectedPlaying = !(media.paused || media.ended || media.seeking || media.buffered.length === 0),
|
expectedPlaying = !(media.paused || // not playing when media is paused
|
||||||
jumpThreshold = 0.4,
|
media.ended || // not playing when media is ended
|
||||||
|
media.buffered.length === 0),
|
||||||
|
// not playing if nothing buffered
|
||||||
|
jumpThreshold = 0.4,
|
||||||
// tolerance needed as some browsers stalls playback before reaching buffered range end
|
// tolerance needed as some browsers stalls playback before reaching buffered range end
|
||||||
playheadMoving = currentTime > media.playbackRate * this.lastCurrentTime;
|
playheadMoving = currentTime > media.playbackRate * this.lastCurrentTime;
|
||||||
|
|
||||||
|
@ -2678,7 +2732,7 @@ var StreamController = function (_EventHandler) {
|
||||||
// no buffer available @ currentTime, check if next buffer is close (within a config.maxSeekHole second range)
|
// no buffer available @ currentTime, check if next buffer is close (within a config.maxSeekHole second range)
|
||||||
var nextBufferStart = bufferInfo.nextStart,
|
var nextBufferStart = bufferInfo.nextStart,
|
||||||
delta = nextBufferStart - currentTime;
|
delta = nextBufferStart - currentTime;
|
||||||
if (nextBufferStart && delta < this.config.maxSeekHole && delta > 0 && !media.seeking) {
|
if (nextBufferStart && delta < this.config.maxSeekHole && delta > 0) {
|
||||||
// next buffer is close ! adjust currentTime to nextBufferStart
|
// next buffer is close ! adjust currentTime to nextBufferStart
|
||||||
// this will ensure effective video decoding
|
// this will ensure effective video decoding
|
||||||
_logger.logger.log('adjust currentTime from ' + media.currentTime + ' to next buffered @ ' + nextBufferStart + ' + nudge ' + this.seekHoleNudgeDuration);
|
_logger.logger.log('adjust currentTime from ' + media.currentTime + ' to next buffered @ ' + nextBufferStart + ' + nudge ' + this.seekHoleNudgeDuration);
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "hls.js",
|
"name": "hls.js",
|
||||||
"version": "0.5.35",
|
"version": "0.5.36",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"description": "Media Source Extension - HLS library, by/for Dailymotion",
|
"description": "Media Source Extension - HLS library, by/for Dailymotion",
|
||||||
"homepage": "https://github.com/dailymotion/hls.js",
|
"homepage": "https://github.com/dailymotion/hls.js",
|
||||||
|
|
|
@ -18,7 +18,14 @@ class BufferController extends EventHandler {
|
||||||
Event.BUFFER_APPENDING,
|
Event.BUFFER_APPENDING,
|
||||||
Event.BUFFER_CODECS,
|
Event.BUFFER_CODECS,
|
||||||
Event.BUFFER_EOS,
|
Event.BUFFER_EOS,
|
||||||
Event.BUFFER_FLUSHING);
|
Event.BUFFER_FLUSHING,
|
||||||
|
Event.LEVEL_UPDATED);
|
||||||
|
|
||||||
|
// the value that we have set mediasource.duration to
|
||||||
|
// (the actual duration may be tweaked slighly by the browser)
|
||||||
|
this._msDuration = null;
|
||||||
|
// the value that we want to set mediaSource.duration to
|
||||||
|
this._levelDuration = null;
|
||||||
|
|
||||||
// Source Buffer listeners
|
// Source Buffer listeners
|
||||||
this.onsbue = this.onSBUpdateEnd.bind(this);
|
this.onsbue = this.onSBUpdateEnd.bind(this);
|
||||||
|
@ -209,6 +216,46 @@ class BufferController extends EventHandler {
|
||||||
this.doFlush();
|
this.doFlush();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onLevelUpdated(event) {
|
||||||
|
let details = event.details;
|
||||||
|
if (details.fragments.length === 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this._levelDuration = details.totalduration + details.fragments[0].start;
|
||||||
|
this.updateMediaElementDuration();
|
||||||
|
}
|
||||||
|
|
||||||
|
// https://github.com/dailymotion/hls.js/issues/355
|
||||||
|
updateMediaElementDuration() {
|
||||||
|
if (this._levelDuration === null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let media = this.media;
|
||||||
|
let mediaSource = this.mediaSource;
|
||||||
|
if (!media || !mediaSource || media.readyState === 0 || mediaSource.readyState !== 'open') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for (let type in mediaSource.sourceBuffers) {
|
||||||
|
if (mediaSource.sourceBuffers[type].updating) {
|
||||||
|
// can't set duration whilst a buffer is updating
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (this._msDuration === null) {
|
||||||
|
// initialise to the value that the media source is reporting
|
||||||
|
this._msDuration = mediaSource.duration;
|
||||||
|
}
|
||||||
|
// this._levelDuration was the last value we set.
|
||||||
|
// not using mediaSource.duration as the browser may tweak this value
|
||||||
|
// only update mediasource duration if its value increase, this is to avoid
|
||||||
|
// flushing already buffered portion when switching between quality level, as they
|
||||||
|
if (this._levelDuration > this._msDuration) {
|
||||||
|
logger.log(`Updating mediasource duration to ${this._levelDuration}`);
|
||||||
|
mediaSource.duration = this._levelDuration;
|
||||||
|
this._msDuration = this._levelDuration;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
doFlush() {
|
doFlush() {
|
||||||
// loop through all buffer ranges to flush
|
// loop through all buffer ranges to flush
|
||||||
while(this.flushRange.length) {
|
while(this.flushRange.length) {
|
||||||
|
|
|
@ -16,8 +16,6 @@ class EwmaBandWidthEstimator {
|
||||||
this.defaultEstimate_ = 5e5; // 500kbps
|
this.defaultEstimate_ = 5e5; // 500kbps
|
||||||
this.minWeight_ = 0.001;
|
this.minWeight_ = 0.001;
|
||||||
this.minDelayMs_ = 50;
|
this.minDelayMs_ = 50;
|
||||||
this.fast_ = new EWMA(hls.config.abrEwmaFast);
|
|
||||||
this.slow_ = new EWMA(hls.config.abrEwmaSlow);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sample(durationMs,numBytes) {
|
sample(durationMs,numBytes) {
|
||||||
|
@ -26,6 +24,14 @@ class EwmaBandWidthEstimator {
|
||||||
//console.log('instant bw:'+ Math.round(bandwidth));
|
//console.log('instant bw:'+ Math.round(bandwidth));
|
||||||
// we weight sample using loading duration....
|
// we weight sample using loading duration....
|
||||||
var weigth = durationMs / 1000;
|
var weigth = durationMs / 1000;
|
||||||
|
|
||||||
|
// lazy initialization. this allows to take into account config param changes that could happen after Hls instantiation,
|
||||||
|
// but before first fragment loading. this is useful to A/B tests those params
|
||||||
|
if(!this.fast_) {
|
||||||
|
let config = this.hls.config;
|
||||||
|
this.fast_ = new EWMA(config.abrEwmaFast);
|
||||||
|
this.slow_ = new EWMA(config.abrEwmaSlow);
|
||||||
|
}
|
||||||
this.fast_.sample(weigth,bandwidth);
|
this.fast_.sample(weigth,bandwidth);
|
||||||
this.slow_.sample(weigth,bandwidth);
|
this.slow_.sample(weigth,bandwidth);
|
||||||
}
|
}
|
||||||
|
|
|
@ -118,7 +118,7 @@ class StreamController extends EventHandler {
|
||||||
}
|
}
|
||||||
|
|
||||||
doTick() {
|
doTick() {
|
||||||
var pos, level, levelDetails, hls = this.hls, config = hls.config;
|
var pos, level, levelDetails, hls = this.hls, config = hls.config, media = this.media, isSeeking = media && media.seeking;
|
||||||
//logger.log(this.state);
|
//logger.log(this.state);
|
||||||
switch(this.state) {
|
switch(this.state) {
|
||||||
case State.ERROR:
|
case State.ERROR:
|
||||||
|
@ -145,7 +145,7 @@ class StreamController extends EventHandler {
|
||||||
// start fragment already requested OR start frag prefetch disable
|
// start fragment already requested OR start frag prefetch disable
|
||||||
// exit loop
|
// exit loop
|
||||||
// => if media not attached but start frag prefetch is enabled and start frag not requested yet, we will not exit loop
|
// => if media not attached but start frag prefetch is enabled and start frag not requested yet, we will not exit loop
|
||||||
if (!this.media &&
|
if (!media &&
|
||||||
(this.startFragRequested || !config.startFragPrefetch)) {
|
(this.startFragRequested || !config.startFragPrefetch)) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -154,12 +154,12 @@ class StreamController extends EventHandler {
|
||||||
// ensure 60s of buffer upfront
|
// ensure 60s of buffer upfront
|
||||||
// if we have not yet loaded any fragment, start loading from start position
|
// if we have not yet loaded any fragment, start loading from start position
|
||||||
if (this.loadedmetadata) {
|
if (this.loadedmetadata) {
|
||||||
pos = this.media.currentTime;
|
pos = media.currentTime;
|
||||||
} else {
|
} else {
|
||||||
pos = this.nextLoadPosition;
|
pos = this.nextLoadPosition;
|
||||||
}
|
}
|
||||||
level = hls.nextLoadLevel;
|
level = hls.nextLoadLevel;
|
||||||
var bufferInfo = BufferHelper.bufferInfo(this.media,pos,config.maxBufferHole),
|
var bufferInfo = BufferHelper.bufferInfo(media,pos,config.maxBufferHole),
|
||||||
bufferLen = bufferInfo.len,
|
bufferLen = bufferInfo.len,
|
||||||
bufferEnd = bufferInfo.end,
|
bufferEnd = bufferInfo.end,
|
||||||
fragPrevious = this.fragPrevious,
|
fragPrevious = this.fragPrevious,
|
||||||
|
@ -194,7 +194,7 @@ class StreamController extends EventHandler {
|
||||||
// in case of live playlist we need to ensure that requested position is not located before playlist start
|
// in case of live playlist we need to ensure that requested position is not located before playlist start
|
||||||
if (levelDetails.live) {
|
if (levelDetails.live) {
|
||||||
// check if requested position is within seekable boundaries :
|
// check if requested position is within seekable boundaries :
|
||||||
//logger.log(`start/pos/bufEnd/seeking:${start.toFixed(3)}/${pos.toFixed(3)}/${bufferEnd.toFixed(3)}/${this.media.seeking}`);
|
//logger.log(`start/pos/bufEnd/seeking:${start.toFixed(3)}/${pos.toFixed(3)}/${bufferEnd.toFixed(3)}/${media.seeking}`);
|
||||||
let maxLatency = config.liveMaxLatencyDuration !== undefined ? config.liveMaxLatencyDuration : config.liveMaxLatencyDurationCount*levelDetails.targetduration;
|
let maxLatency = config.liveMaxLatencyDuration !== undefined ? config.liveMaxLatencyDuration : config.liveMaxLatencyDurationCount*levelDetails.targetduration;
|
||||||
|
|
||||||
if (bufferEnd < Math.max(start, end - maxLatency)) {
|
if (bufferEnd < Math.max(start, end - maxLatency)) {
|
||||||
|
@ -244,13 +244,13 @@ class StreamController extends EventHandler {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!frag) {
|
if (!frag) {
|
||||||
let foundFrag;
|
|
||||||
let maxFragLookUpTolerance = config.maxFragLookUpTolerance;
|
let maxFragLookUpTolerance = config.maxFragLookUpTolerance;
|
||||||
if (bufferEnd < end) {
|
if (bufferEnd < end) {
|
||||||
if (bufferEnd > end - maxFragLookUpTolerance) {
|
// no frag look up tolerance in case bufferEnd close to end, or media seeking
|
||||||
|
if (bufferEnd > end - maxFragLookUpTolerance || isSeeking) {
|
||||||
maxFragLookUpTolerance = 0;
|
maxFragLookUpTolerance = 0;
|
||||||
}
|
}
|
||||||
foundFrag = BinarySearch.search(fragments, (candidate) => {
|
frag = BinarySearch.search(fragments, (candidate) => {
|
||||||
// offset should be within fragment boundary - config.maxFragLookUpTolerance
|
// offset should be within fragment boundary - config.maxFragLookUpTolerance
|
||||||
// this is to cope with situations like
|
// this is to cope with situations like
|
||||||
// bufferEnd = 9.991
|
// bufferEnd = 9.991
|
||||||
|
@ -274,34 +274,31 @@ class StreamController extends EventHandler {
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
// reach end of playlist
|
// reach end of playlist
|
||||||
foundFrag = fragments[fragLen-1];
|
frag = fragments[fragLen-1];
|
||||||
}
|
|
||||||
if (foundFrag) {
|
|
||||||
frag = foundFrag;
|
|
||||||
start = foundFrag.start;
|
|
||||||
//logger.log('find SN matching with pos:' + bufferEnd + ':' + frag.sn);
|
|
||||||
if (fragPrevious && frag.level === fragPrevious.level && frag.sn === fragPrevious.sn) {
|
|
||||||
if (frag.sn < levelDetails.endSN) {
|
|
||||||
frag = fragments[frag.sn + 1 - levelDetails.startSN];
|
|
||||||
logger.log(`SN just loaded, load next one: ${frag.sn}`);
|
|
||||||
} else {
|
|
||||||
// have we reached end of VOD playlist ?
|
|
||||||
if (!levelDetails.live) {
|
|
||||||
// Finalize the media stream
|
|
||||||
this.hls.trigger(Event.BUFFER_EOS);
|
|
||||||
// We might be loading the last fragment but actually the media
|
|
||||||
// is currently processing a seek command and waiting for new data to resume at another point.
|
|
||||||
// Going to ended state while media is seeking can spawn an infinite buffering broken state.
|
|
||||||
if (!this.media.seeking) {
|
|
||||||
this.state = State.ENDED;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
frag = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(frag) {
|
if(frag) {
|
||||||
|
start = frag.start;
|
||||||
|
//logger.log('find SN matching with pos:' + bufferEnd + ':' + frag.sn);
|
||||||
|
if (fragPrevious && frag.level === fragPrevious.level && frag.sn === fragPrevious.sn) {
|
||||||
|
if (frag.sn < levelDetails.endSN) {
|
||||||
|
frag = fragments[frag.sn + 1 - levelDetails.startSN];
|
||||||
|
logger.log(`SN just loaded, load next one: ${frag.sn}`);
|
||||||
|
} else {
|
||||||
|
// have we reached end of VOD playlist ?
|
||||||
|
if (!levelDetails.live) {
|
||||||
|
// Finalize the media stream
|
||||||
|
this.hls.trigger(Event.BUFFER_EOS);
|
||||||
|
// We might be loading the last fragment but actually the media
|
||||||
|
// is currently processing a seek command and waiting for new data to resume at another point.
|
||||||
|
// Going to ended state while media is seeking can spawn an infinite buffering broken state.
|
||||||
|
if (!isSeeking) {
|
||||||
|
this.state = State.ENDED;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
//logger.log(' loading frag ' + i +',pos/bufEnd:' + pos.toFixed(3) + '/' + bufferEnd.toFixed(3));
|
//logger.log(' loading frag ' + i +',pos/bufEnd:' + pos.toFixed(3) + '/' + bufferEnd.toFixed(3));
|
||||||
if ((frag.decryptdata.uri != null) && (frag.decryptdata.key == null)) {
|
if ((frag.decryptdata.uri != null) && (frag.decryptdata.key == null)) {
|
||||||
logger.log(`Loading key for ${frag.sn} of [${levelDetails.startSN} ,${levelDetails.endSN}],level ${level}`);
|
logger.log(`Loading key for ${frag.sn} of [${levelDetails.startSN} ,${levelDetails.endSN}],level ${level}`);
|
||||||
|
@ -350,8 +347,6 @@ class StreamController extends EventHandler {
|
||||||
case State.FRAG_LOADING_WAITING_RETRY:
|
case State.FRAG_LOADING_WAITING_RETRY:
|
||||||
var now = performance.now();
|
var now = performance.now();
|
||||||
var retryDate = this.retryDate;
|
var retryDate = this.retryDate;
|
||||||
var media = this.media;
|
|
||||||
var isSeeking = media && media.seeking;
|
|
||||||
// if current time is gt than retryDate, or if media seeking let's switch to IDLE state to retry loading
|
// if current time is gt than retryDate, or if media seeking let's switch to IDLE state to retry loading
|
||||||
if(!retryDate || (now >= retryDate) || isSeeking) {
|
if(!retryDate || (now >= retryDate) || isSeeking) {
|
||||||
logger.log(`mediaController: retryDate reached, switch back to IDLE state`);
|
logger.log(`mediaController: retryDate reached, switch back to IDLE state`);
|
||||||
|
@ -1024,7 +1019,9 @@ _checkBuffer() {
|
||||||
logger.log(`target seek position:${targetSeekPosition}`);
|
logger.log(`target seek position:${targetSeekPosition}`);
|
||||||
}
|
}
|
||||||
var bufferInfo = BufferHelper.bufferInfo(media,currentTime,0),
|
var bufferInfo = BufferHelper.bufferInfo(media,currentTime,0),
|
||||||
expectedPlaying = !(media.paused || media.ended || media.seeking || media.buffered.length === 0),
|
expectedPlaying = !(media.paused || // not playing when media is paused
|
||||||
|
media.ended || // not playing when media is ended
|
||||||
|
media.buffered.length === 0), // not playing if nothing buffered
|
||||||
jumpThreshold = 0.4, // tolerance needed as some browsers stalls playback before reaching buffered range end
|
jumpThreshold = 0.4, // tolerance needed as some browsers stalls playback before reaching buffered range end
|
||||||
playheadMoving = currentTime > media.playbackRate*this.lastCurrentTime;
|
playheadMoving = currentTime > media.playbackRate*this.lastCurrentTime;
|
||||||
|
|
||||||
|
@ -1057,8 +1054,7 @@ _checkBuffer() {
|
||||||
var nextBufferStart = bufferInfo.nextStart, delta = nextBufferStart-currentTime;
|
var nextBufferStart = bufferInfo.nextStart, delta = nextBufferStart-currentTime;
|
||||||
if(nextBufferStart &&
|
if(nextBufferStart &&
|
||||||
(delta < this.config.maxSeekHole) &&
|
(delta < this.config.maxSeekHole) &&
|
||||||
(delta > 0) &&
|
(delta > 0)) {
|
||||||
!media.seeking) {
|
|
||||||
// next buffer is close ! adjust currentTime to nextBufferStart
|
// next buffer is close ! adjust currentTime to nextBufferStart
|
||||||
// this will ensure effective video decoding
|
// this will ensure effective video decoding
|
||||||
logger.log(`adjust currentTime from ${media.currentTime} to next buffered @ ${nextBufferStart} + nudge ${this.seekHoleNudgeDuration}`);
|
logger.log(`adjust currentTime from ${media.currentTime} to next buffered @ ${nextBufferStart} + nudge ${this.seekHoleNudgeDuration}`);
|
||||||
|
|
|
@ -28,14 +28,14 @@
|
||||||
"webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
|
"webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
|
||||||
},
|
},
|
||||||
"ignore": [],
|
"ignore": [],
|
||||||
"homepage": "https://github.com/PolymerElements/iron-resizable-behavior",
|
"homepage": "https://github.com/polymerelements/iron-resizable-behavior",
|
||||||
"_release": "1.0.3",
|
"_release": "1.0.3",
|
||||||
"_resolution": {
|
"_resolution": {
|
||||||
"type": "version",
|
"type": "version",
|
||||||
"tag": "v1.0.3",
|
"tag": "v1.0.3",
|
||||||
"commit": "dda1df6aaf452aedf3e52ff0cf69e72439452216"
|
"commit": "dda1df6aaf452aedf3e52ff0cf69e72439452216"
|
||||||
},
|
},
|
||||||
"_source": "git://github.com/PolymerElements/iron-resizable-behavior.git",
|
"_source": "git://github.com/polymerelements/iron-resizable-behavior.git",
|
||||||
"_target": "^1.0.0",
|
"_target": "^1.0.0",
|
||||||
"_originalSource": "PolymerElements/iron-resizable-behavior"
|
"_originalSource": "polymerelements/iron-resizable-behavior"
|
||||||
}
|
}
|
10
dashboard-ui/bower_components/jquery/.bower.json
vendored
10
dashboard-ui/bower_components/jquery/.bower.json
vendored
|
@ -12,14 +12,14 @@
|
||||||
"library"
|
"library"
|
||||||
],
|
],
|
||||||
"homepage": "https://github.com/jquery/jquery-dist",
|
"homepage": "https://github.com/jquery/jquery-dist",
|
||||||
"version": "2.2.3",
|
"version": "3.0.0",
|
||||||
"_release": "2.2.3",
|
"_release": "3.0.0",
|
||||||
"_resolution": {
|
"_resolution": {
|
||||||
"type": "version",
|
"type": "version",
|
||||||
"tag": "2.2.3",
|
"tag": "3.0.0",
|
||||||
"commit": "af22a351b2ea5801ffb1695abb3bb34d5bed9198"
|
"commit": "0078f86be166a8747819d5d1516776a662cb69df"
|
||||||
},
|
},
|
||||||
"_source": "git://github.com/jquery/jquery-dist.git",
|
"_source": "https://github.com/jquery/jquery-dist.git",
|
||||||
"_target": ">=1.9.1",
|
"_target": ">=1.9.1",
|
||||||
"_originalSource": "jquery"
|
"_originalSource": "jquery"
|
||||||
}
|
}
|
19
dashboard-ui/bower_components/jquery/AUTHORS.txt
vendored
19
dashboard-ui/bower_components/jquery/AUTHORS.txt
vendored
|
@ -272,7 +272,24 @@ Christian Grete <webmaster@christiangrete.com>
|
||||||
Liza Ramo <liza.h.ramo@gmail.com>
|
Liza Ramo <liza.h.ramo@gmail.com>
|
||||||
Julian Alexander Murillo <julian.alexander.murillo@gmail.com>
|
Julian Alexander Murillo <julian.alexander.murillo@gmail.com>
|
||||||
Joelle Fleurantin <joasqueeniebee@gmail.com>
|
Joelle Fleurantin <joasqueeniebee@gmail.com>
|
||||||
|
Jae Sung Park <alberto.park@gmail.com>
|
||||||
Jun Sun <klsforever@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>
|
Devin Wilson <dwilson6.github@gmail.com>
|
||||||
Todor Prikumov <tono_pr@abv.bg>
|
Steve Mao <maochenyan@gmail.com>
|
||||||
Zack Hall <zackhall@outlook.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>
|
||||||
|
|
479
dashboard-ui/bower_components/jquery/dist/core.js
vendored
Normal file
479
dashboard-ui/bower_components/jquery/dist/core.js
vendored
Normal file
|
@ -0,0 +1,479 @@
|
||||||
|
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.0.0",
|
||||||
|
|
||||||
|
// 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 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
|
||||||
|
slice.call( this );
|
||||||
|
},
|
||||||
|
|
||||||
|
// 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 ) {
|
||||||
|
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
|
||||||
|
} );
|
||||||
|
|
||||||
|
// 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( " " ),
|
||||||
|
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;
|
||||||
|
} );
|
2523
dashboard-ui/bower_components/jquery/dist/jquery.js
vendored
2523
dashboard-ui/bower_components/jquery/dist/jquery.js
vendored
File diff suppressed because it is too large
Load diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1,12 +1,12 @@
|
||||||
/*!
|
/*!
|
||||||
* Sizzle CSS Selector Engine v2.2.1
|
* Sizzle CSS Selector Engine v2.3.0
|
||||||
* http://sizzlejs.com/
|
* https://sizzlejs.com/
|
||||||
*
|
*
|
||||||
* Copyright jQuery Foundation and other contributors
|
* Copyright jQuery Foundation and other contributors
|
||||||
* Released under the MIT license
|
* Released under the MIT license
|
||||||
* http://jquery.org/license
|
* http://jquery.org/license
|
||||||
*
|
*
|
||||||
* Date: 2015-10-17
|
* Date: 2016-01-04
|
||||||
*/
|
*/
|
||||||
(function( window ) {
|
(function( window ) {
|
||||||
|
|
||||||
|
@ -47,9 +47,6 @@ var i,
|
||||||
return 0;
|
return 0;
|
||||||
},
|
},
|
||||||
|
|
||||||
// General-purpose constants
|
|
||||||
MAX_NEGATIVE = 1 << 31,
|
|
||||||
|
|
||||||
// Instance methods
|
// Instance methods
|
||||||
hasOwn = ({}).hasOwnProperty,
|
hasOwn = ({}).hasOwnProperty,
|
||||||
arr = [],
|
arr = [],
|
||||||
|
@ -58,7 +55,7 @@ var i,
|
||||||
push = arr.push,
|
push = arr.push,
|
||||||
slice = arr.slice,
|
slice = arr.slice,
|
||||||
// Use a stripped-down indexOf as it's faster than native
|
// 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 ) {
|
indexOf = function( list, elem ) {
|
||||||
var i = 0,
|
var i = 0,
|
||||||
len = list.length;
|
len = list.length;
|
||||||
|
@ -78,7 +75,7 @@ var i,
|
||||||
whitespace = "[\\x20\\t\\r\\n\\f]",
|
whitespace = "[\\x20\\t\\r\\n\\f]",
|
||||||
|
|
||||||
// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
|
// 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
|
// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
|
||||||
attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
|
attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
|
||||||
|
@ -135,9 +132,9 @@ var i,
|
||||||
rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
|
rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
|
||||||
|
|
||||||
rsibling = /[+~]/,
|
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" ),
|
runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
|
||||||
funescape = function( _, escaped, escapedWhitespace ) {
|
funescape = function( _, escaped, escapedWhitespace ) {
|
||||||
var high = "0x" + escaped - 0x10000;
|
var high = "0x" + escaped - 0x10000;
|
||||||
|
@ -153,13 +150,39 @@ var i,
|
||||||
String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
|
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)|^-$|[^\x80-\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
|
// Used for iframes
|
||||||
// See setDocument()
|
// See setDocument()
|
||||||
// Removing the function wrapper causes a "Permission Denied"
|
// Removing the function wrapper causes a "Permission Denied"
|
||||||
// error in IE
|
// error in IE
|
||||||
unloadHandler = function() {
|
unloadHandler = function() {
|
||||||
setDocument();
|
setDocument();
|
||||||
};
|
},
|
||||||
|
|
||||||
|
disabledAncestor = addCombinator(
|
||||||
|
function( elem ) {
|
||||||
|
return elem.disabled === true;
|
||||||
|
},
|
||||||
|
{ dir: "parentNode", next: "legend" }
|
||||||
|
);
|
||||||
|
|
||||||
// Optimize for push.apply( _, NodeList )
|
// Optimize for push.apply( _, NodeList )
|
||||||
try {
|
try {
|
||||||
|
@ -191,7 +214,7 @@ try {
|
||||||
}
|
}
|
||||||
|
|
||||||
function Sizzle( selector, context, results, seed ) {
|
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,
|
newContext = context && context.ownerDocument,
|
||||||
|
|
||||||
// nodeType defaults to 9, since context defaults to document
|
// 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
|
// Capture the context ID, setting it first if necessary
|
||||||
if ( (nid = context.getAttribute( "id" )) ) {
|
if ( (nid = context.getAttribute( "id" )) ) {
|
||||||
nid = nid.replace( rescape, "\\$&" );
|
nid = nid.replace( rcssescape, fcssescape );
|
||||||
} else {
|
} else {
|
||||||
context.setAttribute( "id", (nid = expando) );
|
context.setAttribute( "id", (nid = expando) );
|
||||||
}
|
}
|
||||||
|
@ -292,9 +315,8 @@ function Sizzle( selector, context, results, seed ) {
|
||||||
// Prefix every selector in the list
|
// Prefix every selector in the list
|
||||||
groups = tokenize( selector );
|
groups = tokenize( selector );
|
||||||
i = groups.length;
|
i = groups.length;
|
||||||
nidselect = ridentifier.test( nid ) ? "#" + nid : "[id='" + nid + "']";
|
|
||||||
while ( i-- ) {
|
while ( i-- ) {
|
||||||
groups[i] = nidselect + " " + toSelector( groups[i] );
|
groups[i] = "#" + nid + " " + toSelector( groups[i] );
|
||||||
}
|
}
|
||||||
newSelector = groups.join( "," );
|
newSelector = groups.join( "," );
|
||||||
|
|
||||||
|
@ -355,22 +377,22 @@ function markFunction( fn ) {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Support testing using an element
|
* 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 ) {
|
function assert( fn ) {
|
||||||
var div = document.createElement("div");
|
var el = document.createElement("fieldset");
|
||||||
|
|
||||||
try {
|
try {
|
||||||
return !!fn( div );
|
return !!fn( el );
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
return false;
|
return false;
|
||||||
} finally {
|
} finally {
|
||||||
// Remove from its parent by default
|
// Remove from its parent by default
|
||||||
if ( div.parentNode ) {
|
if ( el.parentNode ) {
|
||||||
div.parentNode.removeChild( div );
|
el.parentNode.removeChild( el );
|
||||||
}
|
}
|
||||||
// release memory in IE
|
// release memory in IE
|
||||||
div = null;
|
el = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -397,8 +419,7 @@ function addHandle( attrs, handler ) {
|
||||||
function siblingCheck( a, b ) {
|
function siblingCheck( a, b ) {
|
||||||
var cur = b && a,
|
var cur = b && a,
|
||||||
diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
|
diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
|
||||||
( ~b.sourceIndex || MAX_NEGATIVE ) -
|
a.sourceIndex - b.sourceIndex;
|
||||||
( ~a.sourceIndex || MAX_NEGATIVE );
|
|
||||||
|
|
||||||
// Use IE sourceIndex if available on both nodes
|
// Use IE sourceIndex if available on both nodes
|
||||||
if ( diff ) {
|
if ( diff ) {
|
||||||
|
@ -439,6 +460,34 @@ 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:
|
||||||
|
// IE: *[disabled]:not(button, input, select, textarea, optgroup, option, menuitem, fieldset)
|
||||||
|
// not IE: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
|
||||||
|
return function( elem ) {
|
||||||
|
|
||||||
|
// Check form elements and option elements for explicit disabling
|
||||||
|
return "label" in elem && elem.disabled === disabled ||
|
||||||
|
"form" in elem && elem.disabled === disabled ||
|
||||||
|
|
||||||
|
// Check non-disabled form elements for fieldset[disabled] ancestors
|
||||||
|
"form" in elem && elem.disabled === false && (
|
||||||
|
// Support: IE6-11+
|
||||||
|
// Ancestry is covered for us
|
||||||
|
elem.isDisabled === disabled ||
|
||||||
|
|
||||||
|
// Otherwise, assume any non-<option> under fieldset[disabled] is disabled
|
||||||
|
/* jshint -W018 */
|
||||||
|
elem.isDisabled !== !disabled &&
|
||||||
|
("label" in elem || !disabledAncestor( elem )) !== disabled
|
||||||
|
);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a function to use in pseudos for positionals
|
* Returns a function to use in pseudos for positionals
|
||||||
* @param {Function} fn
|
* @param {Function} fn
|
||||||
|
@ -491,7 +540,7 @@ isXML = Sizzle.isXML = function( elem ) {
|
||||||
* @returns {Object} Returns the current document
|
* @returns {Object} Returns the current document
|
||||||
*/
|
*/
|
||||||
setDocument = Sizzle.setDocument = function( node ) {
|
setDocument = Sizzle.setDocument = function( node ) {
|
||||||
var hasCompare, parent,
|
var hasCompare, subWindow,
|
||||||
doc = node ? node.ownerDocument || node : preferredDoc;
|
doc = node ? node.ownerDocument || node : preferredDoc;
|
||||||
|
|
||||||
// Return early if doc is invalid or already selected
|
// Return early if doc is invalid or already selected
|
||||||
|
@ -506,14 +555,16 @@ setDocument = Sizzle.setDocument = function( node ) {
|
||||||
|
|
||||||
// Support: IE 9-11, Edge
|
// Support: IE 9-11, Edge
|
||||||
// Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
|
// Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
|
||||||
if ( (parent = document.defaultView) && parent.top !== parent ) {
|
if ( preferredDoc !== document &&
|
||||||
// Support: IE 11
|
(subWindow = document.defaultView) && subWindow.top !== subWindow ) {
|
||||||
if ( parent.addEventListener ) {
|
|
||||||
parent.addEventListener( "unload", unloadHandler, false );
|
// Support: IE 11, Edge
|
||||||
|
if ( subWindow.addEventListener ) {
|
||||||
|
subWindow.addEventListener( "unload", unloadHandler, false );
|
||||||
|
|
||||||
// Support: IE 9 - 10 only
|
// Support: IE 9 - 10 only
|
||||||
} else if ( parent.attachEvent ) {
|
} else if ( subWindow.attachEvent ) {
|
||||||
parent.attachEvent( "onunload", unloadHandler );
|
subWindow.attachEvent( "onunload", unloadHandler );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -523,18 +574,18 @@ setDocument = Sizzle.setDocument = function( node ) {
|
||||||
// Support: IE<8
|
// Support: IE<8
|
||||||
// Verify that getAttribute really returns attributes and not properties
|
// Verify that getAttribute really returns attributes and not properties
|
||||||
// (excepting IE8 booleans)
|
// (excepting IE8 booleans)
|
||||||
support.attributes = assert(function( div ) {
|
support.attributes = assert(function( el ) {
|
||||||
div.className = "i";
|
el.className = "i";
|
||||||
return !div.getAttribute("className");
|
return !el.getAttribute("className");
|
||||||
});
|
});
|
||||||
|
|
||||||
/* getElement(s)By*
|
/* getElement(s)By*
|
||||||
---------------------------------------------------------------------- */
|
---------------------------------------------------------------------- */
|
||||||
|
|
||||||
// Check if getElementsByTagName("*") returns only elements
|
// Check if getElementsByTagName("*") returns only elements
|
||||||
support.getElementsByTagName = assert(function( div ) {
|
support.getElementsByTagName = assert(function( el ) {
|
||||||
div.appendChild( document.createComment("") );
|
el.appendChild( document.createComment("") );
|
||||||
return !div.getElementsByTagName("*").length;
|
return !el.getElementsByTagName("*").length;
|
||||||
});
|
});
|
||||||
|
|
||||||
// Support: IE<9
|
// Support: IE<9
|
||||||
|
@ -542,10 +593,10 @@ setDocument = Sizzle.setDocument = function( node ) {
|
||||||
|
|
||||||
// Support: IE<10
|
// Support: IE<10
|
||||||
// Check if getElementById returns elements by name
|
// 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
|
// so use a roundabout getElementsByName test
|
||||||
support.getById = assert(function( div ) {
|
support.getById = assert(function( el ) {
|
||||||
docElem.appendChild( div ).id = expando;
|
docElem.appendChild( el ).id = expando;
|
||||||
return !document.getElementsByName || !document.getElementsByName( expando ).length;
|
return !document.getElementsByName || !document.getElementsByName( expando ).length;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -629,77 +680,87 @@ setDocument = Sizzle.setDocument = function( node ) {
|
||||||
// We allow this because of a bug in IE8/9 that throws an error
|
// We allow this because of a bug in IE8/9 that throws an error
|
||||||
// whenever `document.activeElement` is accessed on an iframe
|
// whenever `document.activeElement` is accessed on an iframe
|
||||||
// So, we allow :focus to pass through QSA all the time to avoid the IE error
|
// 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 = [];
|
rbuggyQSA = [];
|
||||||
|
|
||||||
if ( (support.qsa = rnative.test( document.querySelectorAll )) ) {
|
if ( (support.qsa = rnative.test( document.querySelectorAll )) ) {
|
||||||
// Build QSA regex
|
// Build QSA regex
|
||||||
// Regex strategy adopted from Diego Perini
|
// Regex strategy adopted from Diego Perini
|
||||||
assert(function( div ) {
|
assert(function( el ) {
|
||||||
// Select is set to empty string on purpose
|
// Select is set to empty string on purpose
|
||||||
// This is to test IE's treatment of not explicitly
|
// This is to test IE's treatment of not explicitly
|
||||||
// setting a boolean content attribute,
|
// setting a boolean content attribute,
|
||||||
// since its presence should be enough
|
// since its presence should be enough
|
||||||
// http://bugs.jquery.com/ticket/12359
|
// https://bugs.jquery.com/ticket/12359
|
||||||
docElem.appendChild( div ).innerHTML = "<a id='" + expando + "'></a>" +
|
docElem.appendChild( el ).innerHTML = "<a id='" + expando + "'></a>" +
|
||||||
"<select id='" + expando + "-\r\\' msallowcapture=''>" +
|
"<select id='" + expando + "-\r\\' msallowcapture=''>" +
|
||||||
"<option selected=''></option></select>";
|
"<option selected=''></option></select>";
|
||||||
|
|
||||||
// Support: IE8, Opera 11-12.16
|
// Support: IE8, Opera 11-12.16
|
||||||
// Nothing should be selected when empty strings follow ^= or $= or *=
|
// Nothing should be selected when empty strings follow ^= or $= or *=
|
||||||
// The test attribute must be unknown in Opera but "safe" for WinRT
|
// The test attribute must be unknown in Opera but "safe" for WinRT
|
||||||
// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
|
// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
|
||||||
if ( div.querySelectorAll("[msallowcapture^='']").length ) {
|
if ( el.querySelectorAll("[msallowcapture^='']").length ) {
|
||||||
rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
|
rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Support: IE8
|
// Support: IE8
|
||||||
// Boolean attributes and "value" are not treated correctly
|
// Boolean attributes and "value" are not treated correctly
|
||||||
if ( !div.querySelectorAll("[selected]").length ) {
|
if ( !el.querySelectorAll("[selected]").length ) {
|
||||||
rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
|
rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
|
// 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("~=");
|
rbuggyQSA.push("~=");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Webkit/Opera - :checked should return selected option elements
|
// Webkit/Opera - :checked should return selected option elements
|
||||||
// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
|
// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
|
||||||
// IE8 throws error here and will not see later tests
|
// IE8 throws error here and will not see later tests
|
||||||
if ( !div.querySelectorAll(":checked").length ) {
|
if ( !el.querySelectorAll(":checked").length ) {
|
||||||
rbuggyQSA.push(":checked");
|
rbuggyQSA.push(":checked");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Support: Safari 8+, iOS 8+
|
// Support: Safari 8+, iOS 8+
|
||||||
// https://bugs.webkit.org/show_bug.cgi?id=136851
|
// https://bugs.webkit.org/show_bug.cgi?id=136851
|
||||||
// In-page `selector#id sibing-combinator selector` fails
|
// In-page `selector#id sibling-combinator selector` fails
|
||||||
if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) {
|
if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
|
||||||
rbuggyQSA.push(".#.+[+~]");
|
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
|
// Support: Windows 8 Native Apps
|
||||||
// The type and name attributes are restricted during .innerHTML assignment
|
// The type and name attributes are restricted during .innerHTML assignment
|
||||||
var input = document.createElement("input");
|
var input = document.createElement("input");
|
||||||
input.setAttribute( "type", "hidden" );
|
input.setAttribute( "type", "hidden" );
|
||||||
div.appendChild( input ).setAttribute( "name", "D" );
|
el.appendChild( input ).setAttribute( "name", "D" );
|
||||||
|
|
||||||
// Support: IE8
|
// Support: IE8
|
||||||
// Enforce case-sensitivity of name attribute
|
// Enforce case-sensitivity of name attribute
|
||||||
if ( div.querySelectorAll("[name=d]").length ) {
|
if ( el.querySelectorAll("[name=d]").length ) {
|
||||||
rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
|
rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
|
||||||
}
|
}
|
||||||
|
|
||||||
// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
|
// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
|
||||||
// IE8 throws error here and will not see later tests
|
// 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" );
|
rbuggyQSA.push( ":enabled", ":disabled" );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Opera 10-11 does not throw on post-comma invalid pseudos
|
// Opera 10-11 does not throw on post-comma invalid pseudos
|
||||||
div.querySelectorAll("*,:x");
|
el.querySelectorAll("*,:x");
|
||||||
rbuggyQSA.push(",.*:");
|
rbuggyQSA.push(",.*:");
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -710,14 +771,14 @@ setDocument = Sizzle.setDocument = function( node ) {
|
||||||
docElem.oMatchesSelector ||
|
docElem.oMatchesSelector ||
|
||||||
docElem.msMatchesSelector) )) ) {
|
docElem.msMatchesSelector) )) ) {
|
||||||
|
|
||||||
assert(function( div ) {
|
assert(function( el ) {
|
||||||
// Check to see if it's possible to do matchesSelector
|
// Check to see if it's possible to do matchesSelector
|
||||||
// on a disconnected node (IE 9)
|
// on a disconnected node (IE 9)
|
||||||
support.disconnectedMatch = matches.call( div, "div" );
|
support.disconnectedMatch = matches.call( el, "*" );
|
||||||
|
|
||||||
// This should fail with an exception
|
// This should fail with an exception
|
||||||
// Gecko does not error, returns false instead
|
// Gecko does not error, returns false instead
|
||||||
matches.call( div, "[s!='']:x" );
|
matches.call( el, "[s!='']:x" );
|
||||||
rbuggyMatches.push( "!=", pseudos );
|
rbuggyMatches.push( "!=", pseudos );
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -919,6 +980,10 @@ Sizzle.attr = function( elem, name ) {
|
||||||
null;
|
null;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Sizzle.escape = function( sel ) {
|
||||||
|
return (sel + "").replace( rcssescape, fcssescape );
|
||||||
|
};
|
||||||
|
|
||||||
Sizzle.error = function( msg ) {
|
Sizzle.error = function( msg ) {
|
||||||
throw new Error( "Syntax error, unrecognized expression: " + msg );
|
throw new Error( "Syntax error, unrecognized expression: " + msg );
|
||||||
};
|
};
|
||||||
|
@ -1386,13 +1451,8 @@ Expr = Sizzle.selectors = {
|
||||||
},
|
},
|
||||||
|
|
||||||
// Boolean properties
|
// Boolean properties
|
||||||
"enabled": function( elem ) {
|
"enabled": createDisabledPseudo( false ),
|
||||||
return elem.disabled === false;
|
"disabled": createDisabledPseudo( true ),
|
||||||
},
|
|
||||||
|
|
||||||
"disabled": function( elem ) {
|
|
||||||
return elem.disabled === true;
|
|
||||||
},
|
|
||||||
|
|
||||||
"checked": function( elem ) {
|
"checked": function( elem ) {
|
||||||
// In CSS3, :checked should return both checked and selected elements
|
// In CSS3, :checked should return both checked and selected elements
|
||||||
|
@ -1594,7 +1654,9 @@ function toSelector( tokens ) {
|
||||||
|
|
||||||
function addCombinator( matcher, combinator, base ) {
|
function addCombinator( matcher, combinator, base ) {
|
||||||
var dir = combinator.dir,
|
var dir = combinator.dir,
|
||||||
checkNonElements = base && dir === "parentNode",
|
skip = combinator.next,
|
||||||
|
key = skip || dir,
|
||||||
|
checkNonElements = base && key === "parentNode",
|
||||||
doneName = done++;
|
doneName = done++;
|
||||||
|
|
||||||
return combinator.first ?
|
return combinator.first ?
|
||||||
|
@ -1630,14 +1692,16 @@ function addCombinator( matcher, combinator, base ) {
|
||||||
// Defend against cloned attroperties (jQuery gh-1709)
|
// Defend against cloned attroperties (jQuery gh-1709)
|
||||||
uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});
|
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 ) {
|
oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
|
||||||
|
|
||||||
// Assign to newCache so results back-propagate to previous elements
|
// Assign to newCache so results back-propagate to previous elements
|
||||||
return (newCache[ 2 ] = oldCache[ 2 ]);
|
return (newCache[ 2 ] = oldCache[ 2 ]);
|
||||||
} else {
|
} else {
|
||||||
// Reuse newcache so results back-propagate to previous elements
|
// 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
|
// A match means we're done; a fail means we have to keep checking
|
||||||
if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
|
if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
|
||||||
|
@ -2080,17 +2144,17 @@ setDocument();
|
||||||
|
|
||||||
// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
|
// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
|
||||||
// Detached nodes confoundingly follow *each other*
|
// Detached nodes confoundingly follow *each other*
|
||||||
support.sortDetached = assert(function( div1 ) {
|
support.sortDetached = assert(function( el ) {
|
||||||
// Should return 1, but returns 4 (following)
|
// Should return 1, but returns 4 (following)
|
||||||
return div1.compareDocumentPosition( document.createElement("div") ) & 1;
|
return el.compareDocumentPosition( document.createElement("fieldset") ) & 1;
|
||||||
});
|
});
|
||||||
|
|
||||||
// Support: IE<8
|
// Support: IE<8
|
||||||
// Prevent attribute/property "interpolation"
|
// Prevent attribute/property "interpolation"
|
||||||
// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
|
// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
|
||||||
if ( !assert(function( div ) {
|
if ( !assert(function( el ) {
|
||||||
div.innerHTML = "<a href='#'></a>";
|
el.innerHTML = "<a href='#'></a>";
|
||||||
return div.firstChild.getAttribute("href") === "#" ;
|
return el.firstChild.getAttribute("href") === "#" ;
|
||||||
}) ) {
|
}) ) {
|
||||||
addHandle( "type|href|height|width", function( elem, name, isXML ) {
|
addHandle( "type|href|height|width", function( elem, name, isXML ) {
|
||||||
if ( !isXML ) {
|
if ( !isXML ) {
|
||||||
|
@ -2101,10 +2165,10 @@ if ( !assert(function( div ) {
|
||||||
|
|
||||||
// Support: IE<9
|
// Support: IE<9
|
||||||
// Use defaultValue in place of getAttribute("value")
|
// Use defaultValue in place of getAttribute("value")
|
||||||
if ( !support.attributes || !assert(function( div ) {
|
if ( !support.attributes || !assert(function( el ) {
|
||||||
div.innerHTML = "<input/>";
|
el.innerHTML = "<input/>";
|
||||||
div.firstChild.setAttribute( "value", "" );
|
el.firstChild.setAttribute( "value", "" );
|
||||||
return div.firstChild.getAttribute( "value" ) === "";
|
return el.firstChild.getAttribute( "value" ) === "";
|
||||||
}) ) {
|
}) ) {
|
||||||
addHandle( "value", function( elem, name, isXML ) {
|
addHandle( "value", function( elem, name, isXML ) {
|
||||||
if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
|
if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
|
||||||
|
@ -2115,8 +2179,8 @@ if ( !support.attributes || !assert(function( div ) {
|
||||||
|
|
||||||
// Support: IE<9
|
// Support: IE<9
|
||||||
// Use getAttributeNode to fetch booleans when getAttribute lies
|
// Use getAttributeNode to fetch booleans when getAttribute lies
|
||||||
if ( !assert(function( div ) {
|
if ( !assert(function( el ) {
|
||||||
return div.getAttribute("disabled") == null;
|
return el.getAttribute("disabled") == null;
|
||||||
}) ) {
|
}) ) {
|
||||||
addHandle( booleans, function( elem, name, isXML ) {
|
addHandle( booleans, function( elem, name, isXML ) {
|
||||||
var val;
|
var val;
|
||||||
|
@ -2130,6 +2194,16 @@ if ( !assert(function( div ) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// EXPOSE
|
// EXPOSE
|
||||||
|
var _sizzle = window.Sizzle;
|
||||||
|
|
||||||
|
Sizzle.noConflict = function() {
|
||||||
|
if ( window.Sizzle === Sizzle ) {
|
||||||
|
window.Sizzle = _sizzle;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Sizzle;
|
||||||
|
};
|
||||||
|
|
||||||
if ( typeof define === "function" && define.amd ) {
|
if ( typeof define === "function" && define.amd ) {
|
||||||
define(function() { return Sizzle; });
|
define(function() { return Sizzle; });
|
||||||
// Sizzle requires that there be a global window in Common-JS like environments
|
// Sizzle requires that there be a global window in Common-JS like environments
|
3
dashboard-ui/bower_components/jquery/external/sizzle/dist/sizzle.min.js
vendored
Normal file
3
dashboard-ui/bower_components/jquery/external/sizzle/dist/sizzle.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
dashboard-ui/bower_components/jquery/external/sizzle/dist/sizzle.min.map
vendored
Normal file
1
dashboard-ui/bower_components/jquery/external/sizzle/dist/sizzle.min.map
vendored
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -7,12 +7,13 @@
|
||||||
"immed": true,
|
"immed": true,
|
||||||
"noarg": true,
|
"noarg": true,
|
||||||
"quotmark": "double",
|
"quotmark": "double",
|
||||||
|
"strict": true,
|
||||||
"undef": true,
|
"undef": true,
|
||||||
"unused": true,
|
"unused": true,
|
||||||
|
|
||||||
"sub": true,
|
"sub": true,
|
||||||
|
|
||||||
// Support: IE < 10, Android < 4.1
|
// Support: IE <=9 only, Android <=4.0 only
|
||||||
// The above browsers are failing a lot of tests in the ES5
|
// The above browsers are failing a lot of tests in the ES5
|
||||||
// test suite at http://test262.ecmascript.org.
|
// test suite at http://test262.ecmascript.org.
|
||||||
"es3": true,
|
"es3": true,
|
||||||
|
|
121
dashboard-ui/bower_components/jquery/src/ajax.js
vendored
121
dashboard-ui/bower_components/jquery/src/ajax.js
vendored
|
@ -7,13 +7,16 @@ define( [
|
||||||
"./ajax/var/rquery",
|
"./ajax/var/rquery",
|
||||||
|
|
||||||
"./core/init",
|
"./core/init",
|
||||||
"./ajax/parseJSON",
|
|
||||||
"./ajax/parseXML",
|
"./ajax/parseXML",
|
||||||
"./event/trigger",
|
"./event/trigger",
|
||||||
"./deferred"
|
"./deferred",
|
||||||
|
"./serialize" // jQuery.param
|
||||||
], function( jQuery, document, rnotwhite, location, nonce, rquery ) {
|
], function( jQuery, document, rnotwhite, location, nonce, rquery ) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
var
|
var
|
||||||
|
r20 = /%20/g,
|
||||||
rhash = /#.*$/,
|
rhash = /#.*$/,
|
||||||
rts = /([?&])_=[^&]*/,
|
rts = /([?&])_=[^&]*/,
|
||||||
rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
|
rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
|
||||||
|
@ -223,7 +226,7 @@ function ajaxConvert( s, response, jqXHR, isSuccess ) {
|
||||||
|
|
||||||
if ( current ) {
|
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 === "*" ) {
|
if ( current === "*" ) {
|
||||||
|
|
||||||
current = prev;
|
current = prev;
|
||||||
|
@ -346,7 +349,7 @@ jQuery.extend( {
|
||||||
"text html": true,
|
"text html": true,
|
||||||
|
|
||||||
// Evaluate text as a json expression
|
// Evaluate text as a json expression
|
||||||
"text json": jQuery.parseJSON,
|
"text json": JSON.parse,
|
||||||
|
|
||||||
// Parse text as xml
|
// Parse text as xml
|
||||||
"text xml": jQuery.parseXML
|
"text xml": jQuery.parseXML
|
||||||
|
@ -405,12 +408,18 @@ jQuery.extend( {
|
||||||
// Url cleanup var
|
// Url cleanup var
|
||||||
urlAnchor,
|
urlAnchor,
|
||||||
|
|
||||||
|
// Request state (becomes false upon send and true upon completion)
|
||||||
|
completed,
|
||||||
|
|
||||||
// To know if global events are to be dispatched
|
// To know if global events are to be dispatched
|
||||||
fireGlobals,
|
fireGlobals,
|
||||||
|
|
||||||
// Loop variable
|
// Loop variable
|
||||||
i,
|
i,
|
||||||
|
|
||||||
|
// uncached part of the url
|
||||||
|
uncached,
|
||||||
|
|
||||||
// Create the final options object
|
// Create the final options object
|
||||||
s = jQuery.ajaxSetup( {}, options ),
|
s = jQuery.ajaxSetup( {}, options ),
|
||||||
|
|
||||||
|
@ -434,9 +443,6 @@ jQuery.extend( {
|
||||||
requestHeaders = {},
|
requestHeaders = {},
|
||||||
requestHeadersNames = {},
|
requestHeadersNames = {},
|
||||||
|
|
||||||
// The jqXHR state
|
|
||||||
state = 0,
|
|
||||||
|
|
||||||
// Default abort message
|
// Default abort message
|
||||||
strAbort = "canceled",
|
strAbort = "canceled",
|
||||||
|
|
||||||
|
@ -447,7 +453,7 @@ jQuery.extend( {
|
||||||
// Builds headers hashtable if needed
|
// Builds headers hashtable if needed
|
||||||
getResponseHeader: function( key ) {
|
getResponseHeader: function( key ) {
|
||||||
var match;
|
var match;
|
||||||
if ( state === 2 ) {
|
if ( completed ) {
|
||||||
if ( !responseHeaders ) {
|
if ( !responseHeaders ) {
|
||||||
responseHeaders = {};
|
responseHeaders = {};
|
||||||
while ( ( match = rheaders.exec( responseHeadersString ) ) ) {
|
while ( ( match = rheaders.exec( responseHeadersString ) ) ) {
|
||||||
|
@ -461,14 +467,14 @@ jQuery.extend( {
|
||||||
|
|
||||||
// Raw string
|
// Raw string
|
||||||
getAllResponseHeaders: function() {
|
getAllResponseHeaders: function() {
|
||||||
return state === 2 ? responseHeadersString : null;
|
return completed ? responseHeadersString : null;
|
||||||
},
|
},
|
||||||
|
|
||||||
// Caches the header
|
// Caches the header
|
||||||
setRequestHeader: function( name, value ) {
|
setRequestHeader: function( name, value ) {
|
||||||
var lname = name.toLowerCase();
|
if ( completed == null ) {
|
||||||
if ( !state ) {
|
name = requestHeadersNames[ name.toLowerCase() ] =
|
||||||
name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
|
requestHeadersNames[ name.toLowerCase() ] || name;
|
||||||
requestHeaders[ name ] = value;
|
requestHeaders[ name ] = value;
|
||||||
}
|
}
|
||||||
return this;
|
return this;
|
||||||
|
@ -476,7 +482,7 @@ jQuery.extend( {
|
||||||
|
|
||||||
// Overrides response content-type header
|
// Overrides response content-type header
|
||||||
overrideMimeType: function( type ) {
|
overrideMimeType: function( type ) {
|
||||||
if ( !state ) {
|
if ( completed == null ) {
|
||||||
s.mimeType = type;
|
s.mimeType = type;
|
||||||
}
|
}
|
||||||
return this;
|
return this;
|
||||||
|
@ -486,16 +492,16 @@ jQuery.extend( {
|
||||||
statusCode: function( map ) {
|
statusCode: function( map ) {
|
||||||
var code;
|
var code;
|
||||||
if ( map ) {
|
if ( map ) {
|
||||||
if ( state < 2 ) {
|
if ( completed ) {
|
||||||
for ( code in map ) {
|
|
||||||
|
|
||||||
// Lazy-add the new callback in a way that preserves old ones
|
|
||||||
statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
|
|
||||||
// Execute the appropriate callbacks
|
// Execute the appropriate callbacks
|
||||||
jqXHR.always( map[ jqXHR.status ] );
|
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;
|
return this;
|
||||||
|
@ -513,33 +519,31 @@ jQuery.extend( {
|
||||||
};
|
};
|
||||||
|
|
||||||
// Attach deferreds
|
// Attach deferreds
|
||||||
deferred.promise( jqXHR ).complete = completeDeferred.add;
|
deferred.promise( jqXHR );
|
||||||
jqXHR.success = jqXHR.done;
|
|
||||||
jqXHR.error = jqXHR.fail;
|
|
||||||
|
|
||||||
// Remove hash character (#7531: and string promotion)
|
|
||||||
// Add protocol if not provided (prefilters might expect it)
|
// Add protocol if not provided (prefilters might expect it)
|
||||||
// Handle falsy url in the settings object (#10093: consistency with old signature)
|
// Handle falsy url in the settings object (#10093: consistency with old signature)
|
||||||
// We also use the url parameter if available
|
// 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 + "//" );
|
.replace( rprotocol, location.protocol + "//" );
|
||||||
|
|
||||||
// Alias method option to type as per ticket #12004
|
// Alias method option to type as per ticket #12004
|
||||||
s.type = options.method || options.type || s.method || s.type;
|
s.type = options.method || options.type || s.method || s.type;
|
||||||
|
|
||||||
// Extract dataTypes list
|
// Extract dataTypes list
|
||||||
s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( rnotwhite ) || [ "" ];
|
s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnotwhite ) || [ "" ];
|
||||||
|
|
||||||
// A cross-domain request is in order when the origin doesn't match the current origin.
|
// A cross-domain request is in order when the origin doesn't match the current origin.
|
||||||
if ( s.crossDomain == null ) {
|
if ( s.crossDomain == null ) {
|
||||||
urlAnchor = document.createElement( "a" );
|
urlAnchor = document.createElement( "a" );
|
||||||
|
|
||||||
// Support: IE8-11+
|
// Support: IE <=8 - 11, Edge 12 - 13
|
||||||
// IE throws exception if url is malformed, e.g. http://example.com:80x/
|
// IE throws exception on accessing the href property if url is malformed,
|
||||||
|
// e.g. http://example.com:80x/
|
||||||
try {
|
try {
|
||||||
urlAnchor.href = s.url;
|
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
|
// Anchor's host property isn't correctly set when s.url is relative
|
||||||
urlAnchor.href = urlAnchor.href;
|
urlAnchor.href = urlAnchor.href;
|
||||||
s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !==
|
s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !==
|
||||||
|
@ -561,7 +565,7 @@ jQuery.extend( {
|
||||||
inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
|
inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
|
||||||
|
|
||||||
// If request was aborted inside a prefilter, stop there
|
// If request was aborted inside a prefilter, stop there
|
||||||
if ( state === 2 ) {
|
if ( completed ) {
|
||||||
return jqXHR;
|
return jqXHR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -582,29 +586,36 @@ jQuery.extend( {
|
||||||
|
|
||||||
// Save the URL in case we're toying with the If-Modified-Since
|
// Save the URL in case we're toying with the If-Modified-Since
|
||||||
// and/or If-None-Match header later on
|
// 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
|
// More options handling for requests with no content
|
||||||
if ( !s.hasContent ) {
|
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 data is available, append data to url
|
||||||
if ( s.data ) {
|
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
|
// #9682: remove data so that it's not used in an eventual retry
|
||||||
delete s.data;
|
delete s.data;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add anti-cache in url if needed
|
// Add anti-cache in uncached url if needed
|
||||||
if ( s.cache === false ) {
|
if ( s.cache === false ) {
|
||||||
s.url = rts.test( cacheURL ) ?
|
cacheURL = cacheURL.replace( rts, "" );
|
||||||
|
uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached;
|
||||||
// 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++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 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.
|
// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
|
||||||
|
@ -638,7 +649,7 @@ jQuery.extend( {
|
||||||
|
|
||||||
// Allow custom headers/mimetypes and early abort
|
// Allow custom headers/mimetypes and early abort
|
||||||
if ( s.beforeSend &&
|
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
|
// Abort if not done already and return
|
||||||
return jqXHR.abort();
|
return jqXHR.abort();
|
||||||
|
@ -648,9 +659,9 @@ jQuery.extend( {
|
||||||
strAbort = "abort";
|
strAbort = "abort";
|
||||||
|
|
||||||
// Install callbacks on deferreds
|
// Install callbacks on deferreds
|
||||||
for ( i in { success: 1, error: 1, complete: 1 } ) {
|
completeDeferred.add( s.complete );
|
||||||
jqXHR[ i ]( s[ i ] );
|
jqXHR.done( s.success );
|
||||||
}
|
jqXHR.fail( s.error );
|
||||||
|
|
||||||
// Get transport
|
// Get transport
|
||||||
transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
|
transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
|
||||||
|
@ -667,7 +678,7 @@ jQuery.extend( {
|
||||||
}
|
}
|
||||||
|
|
||||||
// If request was aborted inside ajaxSend, stop there
|
// If request was aborted inside ajaxSend, stop there
|
||||||
if ( state === 2 ) {
|
if ( completed ) {
|
||||||
return jqXHR;
|
return jqXHR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -679,18 +690,17 @@ jQuery.extend( {
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
state = 1;
|
completed = false;
|
||||||
transport.send( requestHeaders, done );
|
transport.send( requestHeaders, done );
|
||||||
} catch ( e ) {
|
} catch ( e ) {
|
||||||
|
|
||||||
// Propagate exception as error if not done
|
// Rethrow post-completion exceptions
|
||||||
if ( state < 2 ) {
|
if ( completed ) {
|
||||||
done( -1, e );
|
|
||||||
|
|
||||||
// Simply rethrow otherwise
|
|
||||||
} else {
|
|
||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Propagate others as results
|
||||||
|
done( -1, e );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -699,13 +709,12 @@ jQuery.extend( {
|
||||||
var isSuccess, success, error, response, modified,
|
var isSuccess, success, error, response, modified,
|
||||||
statusText = nativeStatusText;
|
statusText = nativeStatusText;
|
||||||
|
|
||||||
// Called once
|
// Ignore repeat invocations
|
||||||
if ( state === 2 ) {
|
if ( completed ) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// State is "done" now
|
completed = true;
|
||||||
state = 2;
|
|
||||||
|
|
||||||
// Clear timeout if it exists
|
// Clear timeout if it exists
|
||||||
if ( timeoutTimer ) {
|
if ( timeoutTimer ) {
|
||||||
|
|
|
@ -5,6 +5,8 @@ define( [
|
||||||
"../ajax"
|
"../ajax"
|
||||||
], function( jQuery, nonce, rquery ) {
|
], function( jQuery, nonce, rquery ) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
var oldCallbacks = [],
|
var oldCallbacks = [],
|
||||||
rjsonp = /(=)\?(?=&|$)|\?\?/;
|
rjsonp = /(=)\?(?=&|$)|\?\?/;
|
||||||
|
|
||||||
|
|
|
@ -4,23 +4,15 @@ define( [
|
||||||
"../ajax",
|
"../ajax",
|
||||||
"../traversing",
|
"../traversing",
|
||||||
"../manipulation",
|
"../manipulation",
|
||||||
"../selector",
|
"../selector"
|
||||||
|
|
||||||
// Optional event/alias dependency
|
|
||||||
"../event/alias"
|
|
||||||
], function( jQuery ) {
|
], function( jQuery ) {
|
||||||
|
|
||||||
// Keep a copy of the old load method
|
"use strict";
|
||||||
var _load = jQuery.fn.load;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load a url into a page
|
* Load a url into a page
|
||||||
*/
|
*/
|
||||||
jQuery.fn.load = function( url, params, callback ) {
|
jQuery.fn.load = function( url, params, callback ) {
|
||||||
if ( typeof url !== "string" && _load ) {
|
|
||||||
return _load.apply( this, arguments );
|
|
||||||
}
|
|
||||||
|
|
||||||
var selector, type, response,
|
var selector, type, response,
|
||||||
self = this,
|
self = this,
|
||||||
off = url.indexOf( " " );
|
off = url.indexOf( " " );
|
||||||
|
|
|
@ -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;
|
|
||||||
|
|
||||||
} );
|
|
|
@ -2,6 +2,8 @@ define( [
|
||||||
"../core"
|
"../core"
|
||||||
], function( jQuery ) {
|
], function( jQuery ) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
// Cross-browser xml parsing
|
// Cross-browser xml parsing
|
||||||
jQuery.parseXML = function( data ) {
|
jQuery.parseXML = function( data ) {
|
||||||
var xml;
|
var xml;
|
||||||
|
@ -9,7 +11,8 @@ jQuery.parseXML = function( data ) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Support: IE9
|
// Support: IE 9 - 11 only
|
||||||
|
// IE throws on parseFromString with invalid input.
|
||||||
try {
|
try {
|
||||||
xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
|
xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
|
||||||
} catch ( e ) {
|
} catch ( e ) {
|
||||||
|
|
|
@ -4,6 +4,15 @@ define( [
|
||||||
"../ajax"
|
"../ajax"
|
||||||
], function( jQuery, document ) {
|
], 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
|
// Install script dataType
|
||||||
jQuery.ajaxSetup( {
|
jQuery.ajaxSetup( {
|
||||||
accepts: {
|
accepts: {
|
||||||
|
|
|
@ -4,6 +4,8 @@ define( [
|
||||||
"../ajax"
|
"../ajax"
|
||||||
], function( jQuery, support ) {
|
], function( jQuery, support ) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
jQuery.ajaxSettings.xhr = function() {
|
jQuery.ajaxSettings.xhr = function() {
|
||||||
try {
|
try {
|
||||||
return new window.XMLHttpRequest();
|
return new window.XMLHttpRequest();
|
||||||
|
@ -15,7 +17,7 @@ var xhrSuccessStatus = {
|
||||||
// File protocol always yields status code 0, assume 200
|
// File protocol always yields status code 0, assume 200
|
||||||
0: 200,
|
0: 200,
|
||||||
|
|
||||||
// Support: IE9
|
// Support: IE <=9 only
|
||||||
// #1450: sometimes IE returns 1223 when it should be 204
|
// #1450: sometimes IE returns 1223 when it should be 204
|
||||||
1223: 204
|
1223: 204
|
||||||
},
|
},
|
||||||
|
@ -79,7 +81,7 @@ jQuery.ajaxTransport( function( options ) {
|
||||||
xhr.abort();
|
xhr.abort();
|
||||||
} else if ( type === "error" ) {
|
} else if ( type === "error" ) {
|
||||||
|
|
||||||
// Support: IE9
|
// Support: IE <=9 only
|
||||||
// On a manual native abort, IE9 throws
|
// On a manual native abort, IE9 throws
|
||||||
// errors on any property access that is not readyState
|
// errors on any property access that is not readyState
|
||||||
if ( typeof xhr.status !== "number" ) {
|
if ( typeof xhr.status !== "number" ) {
|
||||||
|
@ -97,7 +99,7 @@ jQuery.ajaxTransport( function( options ) {
|
||||||
xhrSuccessStatus[ xhr.status ] || xhr.status,
|
xhrSuccessStatus[ xhr.status ] || xhr.status,
|
||||||
xhr.statusText,
|
xhr.statusText,
|
||||||
|
|
||||||
// Support: IE9 only
|
// Support: IE <=9 only
|
||||||
// IE9 has no XHR2 but throws on binary (trac-11426)
|
// IE9 has no XHR2 but throws on binary (trac-11426)
|
||||||
// For XHR2 non-text, let the caller handle it (gh-2498)
|
// For XHR2 non-text, let the caller handle it (gh-2498)
|
||||||
( xhr.responseType || "text" ) !== "text" ||
|
( xhr.responseType || "text" ) !== "text" ||
|
||||||
|
@ -115,7 +117,7 @@ jQuery.ajaxTransport( function( options ) {
|
||||||
xhr.onload = callback();
|
xhr.onload = callback();
|
||||||
errorCallback = xhr.onerror = callback( "error" );
|
errorCallback = xhr.onerror = callback( "error" );
|
||||||
|
|
||||||
// Support: IE9
|
// Support: IE 9 only
|
||||||
// Use onreadystatechange to replace onabort
|
// Use onreadystatechange to replace onabort
|
||||||
// to handle uncaught aborts
|
// to handle uncaught aborts
|
||||||
if ( xhr.onabort !== undefined ) {
|
if ( xhr.onabort !== undefined ) {
|
||||||
|
|
|
@ -6,6 +6,8 @@ define( [
|
||||||
"./attributes/val"
|
"./attributes/val"
|
||||||
], function( jQuery ) {
|
], function( jQuery ) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
// Return jQuery for attributes-only inclusion
|
// Return jQuery for attributes-only inclusion
|
||||||
return jQuery;
|
return jQuery;
|
||||||
} );
|
} );
|
||||||
|
|
|
@ -6,6 +6,8 @@ define( [
|
||||||
"../selector"
|
"../selector"
|
||||||
], function( jQuery, access, support, rnotwhite ) {
|
], function( jQuery, access, support, rnotwhite ) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
var boolHook,
|
var boolHook,
|
||||||
attrHandle = jQuery.expr.attrHandle;
|
attrHandle = jQuery.expr.attrHandle;
|
||||||
|
|
||||||
|
@ -36,11 +38,10 @@ jQuery.extend( {
|
||||||
return jQuery.prop( elem, name, value );
|
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
|
// Grab necessary hook if one is defined
|
||||||
if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
|
if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
|
||||||
name = name.toLowerCase();
|
hooks = jQuery.attrHooks[ name.toLowerCase() ] ||
|
||||||
hooks = jQuery.attrHooks[ name ] ||
|
|
||||||
( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );
|
( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -86,21 +87,12 @@ jQuery.extend( {
|
||||||
},
|
},
|
||||||
|
|
||||||
removeAttr: function( elem, value ) {
|
removeAttr: function( elem, value ) {
|
||||||
var name, propName,
|
var name,
|
||||||
i = 0,
|
i = 0,
|
||||||
attrNames = value && value.match( rnotwhite );
|
attrNames = value && value.match( rnotwhite );
|
||||||
|
|
||||||
if ( attrNames && elem.nodeType === 1 ) {
|
if ( attrNames && elem.nodeType === 1 ) {
|
||||||
while ( ( name = attrNames[ i++ ] ) ) {
|
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 );
|
elem.removeAttribute( name );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -120,20 +112,23 @@ boolHook = {
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
|
jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
|
||||||
var getter = attrHandle[ name ] || jQuery.find.attr;
|
var getter = attrHandle[ name ] || jQuery.find.attr;
|
||||||
|
|
||||||
attrHandle[ name ] = function( elem, name, isXML ) {
|
attrHandle[ name ] = function( elem, name, isXML ) {
|
||||||
var ret, handle;
|
var ret, handle,
|
||||||
|
lowercaseName = name.toLowerCase();
|
||||||
|
|
||||||
if ( !isXML ) {
|
if ( !isXML ) {
|
||||||
|
|
||||||
// Avoid an infinite loop by temporarily removing this function from the getter
|
// Avoid an infinite loop by temporarily removing this function from the getter
|
||||||
handle = attrHandle[ name ];
|
handle = attrHandle[ lowercaseName ];
|
||||||
attrHandle[ name ] = ret;
|
attrHandle[ lowercaseName ] = ret;
|
||||||
ret = getter( elem, name, isXML ) != null ?
|
ret = getter( elem, name, isXML ) != null ?
|
||||||
name.toLowerCase() :
|
lowercaseName :
|
||||||
null;
|
null;
|
||||||
attrHandle[ name ] = handle;
|
attrHandle[ lowercaseName ] = handle;
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
};
|
};
|
||||||
|
|
|
@ -5,6 +5,8 @@ define( [
|
||||||
"../core/init"
|
"../core/init"
|
||||||
], function( jQuery, rnotwhite, dataPriv ) {
|
], function( jQuery, rnotwhite, dataPriv ) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
var rclass = /[\t\r\n\f]/g;
|
var rclass = /[\t\r\n\f]/g;
|
||||||
|
|
||||||
function getClass( elem ) {
|
function getClass( elem ) {
|
||||||
|
|
|
@ -5,6 +5,8 @@ define( [
|
||||||
"../selector"
|
"../selector"
|
||||||
], function( jQuery, access, support ) {
|
], function( jQuery, access, support ) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
var rfocusable = /^(?:input|select|textarea|button)$/i,
|
var rfocusable = /^(?:input|select|textarea|button)$/i,
|
||||||
rclickable = /^(?:a|area)$/i;
|
rclickable = /^(?:a|area)$/i;
|
||||||
|
|
||||||
|
@ -57,9 +59,10 @@ jQuery.extend( {
|
||||||
tabIndex: {
|
tabIndex: {
|
||||||
get: function( elem ) {
|
get: function( elem ) {
|
||||||
|
|
||||||
|
// Support: IE <=9 - 11 only
|
||||||
// elem.tabIndex doesn't always return the
|
// elem.tabIndex doesn't always return the
|
||||||
// correct value when it hasn't been explicitly set
|
// 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)
|
// Use proper attribute retrieval(#12072)
|
||||||
var tabindex = jQuery.find.attr( elem, "tabindex" );
|
var tabindex = jQuery.find.attr( elem, "tabindex" );
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,8 @@ define( [
|
||||||
"../var/support"
|
"../var/support"
|
||||||
], function( document, support ) {
|
], function( document, support ) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
( function() {
|
( function() {
|
||||||
var input = document.createElement( "input" ),
|
var input = document.createElement( "input" ),
|
||||||
select = document.createElement( "select" ),
|
select = document.createElement( "select" ),
|
||||||
|
@ -10,20 +12,15 @@ define( [
|
||||||
|
|
||||||
input.type = "checkbox";
|
input.type = "checkbox";
|
||||||
|
|
||||||
// Support: iOS<=5.1, Android<=4.2+
|
// Support: Android <=4.3 only
|
||||||
// Default value for a checkbox should be "on"
|
// Default value for a checkbox should be "on"
|
||||||
support.checkOn = input.value !== "";
|
support.checkOn = input.value !== "";
|
||||||
|
|
||||||
// Support: IE<=11+
|
// Support: IE <=11 only
|
||||||
// Must access selectedIndex to make default options select
|
// Must access selectedIndex to make default options select
|
||||||
support.optSelected = opt.selected;
|
support.optSelected = opt.selected;
|
||||||
|
|
||||||
// Support: Android<=2.3
|
// Support: IE <=11 only
|
||||||
// Options inside disabled selects are incorrectly marked as disabled
|
|
||||||
select.disabled = true;
|
|
||||||
support.optDisabled = !opt.disabled;
|
|
||||||
|
|
||||||
// Support: IE<=11+
|
|
||||||
// An input loses its value after becoming a radio
|
// An input loses its value after becoming a radio
|
||||||
input = document.createElement( "input" );
|
input = document.createElement( "input" );
|
||||||
input.value = "t";
|
input.value = "t";
|
||||||
|
|
|
@ -4,6 +4,8 @@ define( [
|
||||||
"../core/init"
|
"../core/init"
|
||||||
], function( jQuery, support ) {
|
], function( jQuery, support ) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
var rreturn = /\r/g,
|
var rreturn = /\r/g,
|
||||||
rspaces = /[\x20\t\r\n\f]+/g;
|
rspaces = /[\x20\t\r\n\f]+/g;
|
||||||
|
|
||||||
|
@ -85,7 +87,7 @@ jQuery.extend( {
|
||||||
return val != null ?
|
return val != null ?
|
||||||
val :
|
val :
|
||||||
|
|
||||||
// Support: IE10-11+
|
// Support: IE <=10 - 11 only
|
||||||
// option.text throws exceptions (#14686, #14858)
|
// option.text throws exceptions (#14686, #14858)
|
||||||
// Strip and collapse whitespace
|
// Strip and collapse whitespace
|
||||||
// https://html.spec.whatwg.org/#strip-and-collapse-whitespace
|
// https://html.spec.whatwg.org/#strip-and-collapse-whitespace
|
||||||
|
@ -97,7 +99,7 @@ jQuery.extend( {
|
||||||
var value, option,
|
var value, option,
|
||||||
options = elem.options,
|
options = elem.options,
|
||||||
index = elem.selectedIndex,
|
index = elem.selectedIndex,
|
||||||
one = elem.type === "select-one" || index < 0,
|
one = elem.type === "select-one",
|
||||||
values = one ? null : [],
|
values = one ? null : [],
|
||||||
max = one ? index + 1 : options.length,
|
max = one ? index + 1 : options.length,
|
||||||
i = index < 0 ?
|
i = index < 0 ?
|
||||||
|
@ -108,12 +110,12 @@ jQuery.extend( {
|
||||||
for ( ; i < max; i++ ) {
|
for ( ; i < max; i++ ) {
|
||||||
option = options[ i ];
|
option = options[ i ];
|
||||||
|
|
||||||
|
// Support: IE <=9 only
|
||||||
// IE8-9 doesn't update selected after form reset (#2551)
|
// IE8-9 doesn't update selected after form reset (#2551)
|
||||||
if ( ( option.selected || i === index ) &&
|
if ( ( option.selected || i === index ) &&
|
||||||
|
|
||||||
// Don't return options that are disabled or in a disabled optgroup
|
// Don't return options that are disabled or in a disabled optgroup
|
||||||
( support.optDisabled ?
|
!option.disabled &&
|
||||||
!option.disabled : option.getAttribute( "disabled" ) === null ) &&
|
|
||||||
( !option.parentNode.disabled ||
|
( !option.parentNode.disabled ||
|
||||||
!jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
|
!jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,8 @@ define( [
|
||||||
"./var/rnotwhite"
|
"./var/rnotwhite"
|
||||||
], function( jQuery, rnotwhite ) {
|
], function( jQuery, rnotwhite ) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
// Convert String-formatted options into Object-formatted ones
|
// Convert String-formatted options into Object-formatted ones
|
||||||
function createOptions( options ) {
|
function createOptions( options ) {
|
||||||
var object = {};
|
var object = {};
|
||||||
|
@ -191,7 +193,7 @@ jQuery.Callbacks = function( options ) {
|
||||||
// Abort any pending executions
|
// Abort any pending executions
|
||||||
lock: function() {
|
lock: function() {
|
||||||
locked = queue = [];
|
locked = queue = [];
|
||||||
if ( !memory ) {
|
if ( !memory && !firing ) {
|
||||||
list = memory = "";
|
list = memory = "";
|
||||||
}
|
}
|
||||||
return this;
|
return this;
|
||||||
|
|
99
dashboard-ui/bower_components/jquery/src/core.js
vendored
99
dashboard-ui/bower_components/jquery/src/core.js
vendored
|
@ -1,6 +1,7 @@
|
||||||
define( [
|
define( [
|
||||||
"./var/arr",
|
"./var/arr",
|
||||||
"./var/document",
|
"./var/document",
|
||||||
|
"./var/getProto",
|
||||||
"./var/slice",
|
"./var/slice",
|
||||||
"./var/concat",
|
"./var/concat",
|
||||||
"./var/push",
|
"./var/push",
|
||||||
|
@ -8,11 +9,18 @@ define( [
|
||||||
"./var/class2type",
|
"./var/class2type",
|
||||||
"./var/toString",
|
"./var/toString",
|
||||||
"./var/hasOwn",
|
"./var/hasOwn",
|
||||||
"./var/support"
|
"./var/fnToString",
|
||||||
], function( arr, document, slice, concat, push, indexOf, class2type, toString, hasOwn, support ) {
|
"./var/ObjectFunctionString",
|
||||||
|
"./var/support",
|
||||||
|
"./core/DOMEval"
|
||||||
|
], function( arr, document, getProto, slice, concat, push, indexOf,
|
||||||
|
class2type, toString, hasOwn, fnToString, ObjectFunctionString,
|
||||||
|
support, DOMEval ) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
var
|
var
|
||||||
version = "@VERSION",
|
version = "3.0.0",
|
||||||
|
|
||||||
// Define a local copy of jQuery
|
// Define a local copy of jQuery
|
||||||
jQuery = function( selector, context ) {
|
jQuery = function( selector, context ) {
|
||||||
|
@ -22,13 +30,13 @@ var
|
||||||
return new jQuery.fn.init( selector, context );
|
return new jQuery.fn.init( selector, context );
|
||||||
},
|
},
|
||||||
|
|
||||||
// Support: Android<4.1
|
// Support: Android <=4.0 only
|
||||||
// Make sure we trim BOM and NBSP
|
// Make sure we trim BOM and NBSP
|
||||||
rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
|
rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
|
||||||
|
|
||||||
// Matches dashed string for camelizing
|
// Matches dashed string for camelizing
|
||||||
rmsPrefix = /^-ms-/,
|
rmsPrefix = /^-ms-/,
|
||||||
rdashAlpha = /-([\da-z])/gi,
|
rdashAlpha = /-([a-z])/g,
|
||||||
|
|
||||||
// Used by jQuery.camelCase as callback to replace()
|
// Used by jQuery.camelCase as callback to replace()
|
||||||
fcamelCase = function( all, letter ) {
|
fcamelCase = function( all, letter ) {
|
||||||
|
@ -42,9 +50,6 @@ jQuery.fn = jQuery.prototype = {
|
||||||
|
|
||||||
constructor: jQuery,
|
constructor: jQuery,
|
||||||
|
|
||||||
// Start with an empty selector
|
|
||||||
selector: "",
|
|
||||||
|
|
||||||
// The default length of a jQuery object is 0
|
// The default length of a jQuery object is 0
|
||||||
length: 0,
|
length: 0,
|
||||||
|
|
||||||
|
@ -73,7 +78,6 @@ jQuery.fn = jQuery.prototype = {
|
||||||
|
|
||||||
// Add the old object onto the stack (as a reference)
|
// Add the old object onto the stack (as a reference)
|
||||||
ret.prevObject = this;
|
ret.prevObject = this;
|
||||||
ret.context = this.context;
|
|
||||||
|
|
||||||
// Return the newly-formed element set
|
// Return the newly-formed element set
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -214,37 +218,37 @@ jQuery.extend( {
|
||||||
|
|
||||||
isNumeric: function( obj ) {
|
isNumeric: function( obj ) {
|
||||||
|
|
||||||
// parseFloat NaNs numeric-cast false positives (null|true|false|"")
|
// As of jQuery 3.0, isNumeric is limited to
|
||||||
// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
|
// strings and numbers (primitives or objects)
|
||||||
// subtraction forces infinities to NaN
|
// that can be coerced to finite numbers (gh-2662)
|
||||||
// adding 1 corrects loss of precision from parseFloat (#15100)
|
var type = jQuery.type( obj );
|
||||||
var realStringObj = obj && obj.toString();
|
return ( type === "number" || type === "string" ) &&
|
||||||
return !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0;
|
|
||||||
|
// 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 ) {
|
isPlainObject: function( obj ) {
|
||||||
var key;
|
var proto, Ctor;
|
||||||
|
|
||||||
// Not plain objects:
|
// Detect obvious negatives
|
||||||
// - Any object or value whose internal [[Class]] property is not "[object Object]"
|
// Use toString instead of jQuery.type to catch host objects
|
||||||
// - DOM nodes
|
if ( !obj || toString.call( obj ) !== "[object Object]" ) {
|
||||||
// - window
|
|
||||||
if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Not own constructor property must be Object
|
proto = getProto( obj );
|
||||||
if ( obj.constructor &&
|
|
||||||
!hasOwn.call( obj, "constructor" ) &&
|
// Objects with no prototype (e.g., `Object.create( null )`) are plain
|
||||||
!hasOwn.call( obj.constructor.prototype || {}, "isPrototypeOf" ) ) {
|
if ( !proto ) {
|
||||||
return false;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Own properties are enumerated firstly, so to speed up,
|
// Objects with prototype are plain iff they were constructed by a global Object function
|
||||||
// if last one is own, then all properties are own
|
Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor;
|
||||||
for ( key in obj ) {}
|
return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;
|
||||||
|
|
||||||
return key === undefined || hasOwn.call( obj, key );
|
|
||||||
},
|
},
|
||||||
|
|
||||||
isEmptyObject: function( obj ) {
|
isEmptyObject: function( obj ) {
|
||||||
|
@ -260,7 +264,7 @@ jQuery.extend( {
|
||||||
return obj + "";
|
return obj + "";
|
||||||
}
|
}
|
||||||
|
|
||||||
// Support: Android<4.0, iOS<6 (functionish RegExp)
|
// Support: Android <=2.3 only (functionish RegExp)
|
||||||
return typeof obj === "object" || typeof obj === "function" ?
|
return typeof obj === "object" || typeof obj === "function" ?
|
||||||
class2type[ toString.call( obj ) ] || "object" :
|
class2type[ toString.call( obj ) ] || "object" :
|
||||||
typeof obj;
|
typeof obj;
|
||||||
|
@ -268,32 +272,11 @@ jQuery.extend( {
|
||||||
|
|
||||||
// Evaluates a script in a global context
|
// Evaluates a script in a global context
|
||||||
globalEval: function( code ) {
|
globalEval: function( code ) {
|
||||||
var script,
|
DOMEval( code );
|
||||||
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 );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
// Convert dashed to camelCase; used by the css and data modules
|
// 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)
|
// Microsoft forgot to hump their vendor prefix (#9572)
|
||||||
camelCase: function( string ) {
|
camelCase: function( string ) {
|
||||||
return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
|
return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
|
||||||
|
@ -324,7 +307,7 @@ jQuery.extend( {
|
||||||
return obj;
|
return obj;
|
||||||
},
|
},
|
||||||
|
|
||||||
// Support: Android<4.1
|
// Support: Android <=4.0 only
|
||||||
trim: function( text ) {
|
trim: function( text ) {
|
||||||
return text == null ?
|
return text == null ?
|
||||||
"" :
|
"" :
|
||||||
|
@ -353,6 +336,8 @@ jQuery.extend( {
|
||||||
return arr == null ? -1 : indexOf.call( arr, elem, 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 ) {
|
merge: function( first, second ) {
|
||||||
var len = +second.length,
|
var len = +second.length,
|
||||||
j = 0,
|
j = 0,
|
||||||
|
@ -475,7 +460,7 @@ function( i, name ) {
|
||||||
|
|
||||||
function isArrayLike( obj ) {
|
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)
|
// `in` check used to prevent JIT error (gh-2145)
|
||||||
// hasOwn isn't used here due to false negatives
|
// hasOwn isn't used here due to false negatives
|
||||||
// regarding Nodelist length in IE
|
// regarding Nodelist length in IE
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
define( [
|
define( [
|
||||||
"../var/document"
|
"../var/document"
|
||||||
], function( document ) {
|
], function( document ) {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
function DOMEval( code, doc ) {
|
function DOMEval( code, doc ) {
|
||||||
doc = doc || document;
|
doc = doc || document;
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,8 @@ define( [
|
||||||
"../core"
|
"../core"
|
||||||
], function( jQuery ) {
|
], function( jQuery ) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
// Multifunctional method to get and set values of a collection
|
// Multifunctional method to get and set values of a collection
|
||||||
// The value/s can optionally be executed if it's a function
|
// The value/s can optionally be executed if it's a function
|
||||||
var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
|
var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
|
||||||
|
|
|
@ -6,13 +6,16 @@ define( [
|
||||||
"../traversing/findFilter"
|
"../traversing/findFilter"
|
||||||
], function( jQuery, document, rsingleTag ) {
|
], function( jQuery, document, rsingleTag ) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
// A central reference to the root jQuery(document)
|
// A central reference to the root jQuery(document)
|
||||||
var rootjQuery,
|
var rootjQuery,
|
||||||
|
|
||||||
// A simple way to check for HTML strings
|
// A simple way to check for HTML strings
|
||||||
// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
|
// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
|
||||||
// Strict HTML recognition (#11290: must start with <)
|
// 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 ) {
|
init = jQuery.fn.init = function( selector, context, root ) {
|
||||||
var match, elem;
|
var match, elem;
|
||||||
|
@ -75,17 +78,12 @@ var rootjQuery,
|
||||||
} else {
|
} else {
|
||||||
elem = document.getElementById( match[ 2 ] );
|
elem = document.getElementById( match[ 2 ] );
|
||||||
|
|
||||||
// Support: Blackberry 4.6
|
if ( elem ) {
|
||||||
// gEBID returns nodes no longer in the document (#6963)
|
|
||||||
if ( elem && elem.parentNode ) {
|
|
||||||
|
|
||||||
// Inject the element directly into the jQuery object
|
// Inject the element directly into the jQuery object
|
||||||
this.length = 1;
|
|
||||||
this[ 0 ] = elem;
|
this[ 0 ] = elem;
|
||||||
|
this.length = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.context = document;
|
|
||||||
this.selector = selector;
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -101,7 +99,7 @@ var rootjQuery,
|
||||||
|
|
||||||
// HANDLE: $(DOMElement)
|
// HANDLE: $(DOMElement)
|
||||||
} else if ( selector.nodeType ) {
|
} else if ( selector.nodeType ) {
|
||||||
this.context = this[ 0 ] = selector;
|
this[ 0 ] = selector;
|
||||||
this.length = 1;
|
this.length = 1;
|
||||||
return this;
|
return this;
|
||||||
|
|
||||||
|
@ -115,11 +113,6 @@ var rootjQuery,
|
||||||
selector( jQuery );
|
selector( jQuery );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( selector.selector !== undefined ) {
|
|
||||||
this.selector = selector.selector;
|
|
||||||
this.context = selector.context;
|
|
||||||
}
|
|
||||||
|
|
||||||
return jQuery.makeArray( selector, this );
|
return jQuery.makeArray( selector, this );
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -2,25 +2,49 @@ define( [
|
||||||
"../core",
|
"../core",
|
||||||
"../var/document",
|
"../var/document",
|
||||||
"./var/rsingleTag",
|
"./var/rsingleTag",
|
||||||
"../manipulation/buildFragment"
|
"../manipulation/buildFragment",
|
||||||
], function( jQuery, document, rsingleTag, 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
|
// Argument "data" should be string of html
|
||||||
// context (optional): If specified, the fragment will be created in this context,
|
// context (optional): If specified, the fragment will be created in this context,
|
||||||
// defaults to document
|
// defaults to document
|
||||||
// keepScripts (optional): If true, will include scripts passed in the html string
|
// keepScripts (optional): If true, will include scripts passed in the html string
|
||||||
jQuery.parseHTML = function( data, context, keepScripts ) {
|
jQuery.parseHTML = function( data, context, keepScripts ) {
|
||||||
if ( !data || typeof data !== "string" ) {
|
if ( typeof data !== "string" ) {
|
||||||
return null;
|
return [];
|
||||||
}
|
}
|
||||||
if ( typeof context === "boolean" ) {
|
if ( typeof context === "boolean" ) {
|
||||||
keepScripts = context;
|
keepScripts = context;
|
||||||
context = false;
|
context = false;
|
||||||
}
|
}
|
||||||
context = context || document;
|
|
||||||
|
|
||||||
var parsed = rsingleTag.exec( data ),
|
var base, parsed, scripts;
|
||||||
scripts = !keepScripts && [];
|
|
||||||
|
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
|
// Single tag
|
||||||
if ( parsed ) {
|
if ( parsed ) {
|
||||||
|
|
111
dashboard-ui/bower_components/jquery/src/core/ready-no-deferred.js
vendored
Normal file
111
dashboard-ui/bower_components/jquery/src/core/ready-no-deferred.js
vendored
Normal file
|
@ -0,0 +1,111 @@
|
||||||
|
define( [
|
||||||
|
"../core",
|
||||||
|
"../var/document"
|
||||||
|
], function( jQuery, document ) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
var readyCallbacks = [],
|
||||||
|
readyFiring = false,
|
||||||
|
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 );
|
||||||
|
|
||||||
|
if ( !readyFiring ) {
|
||||||
|
readyFiring = true;
|
||||||
|
|
||||||
|
while ( readyCallbacks.length ) {
|
||||||
|
fn = readyCallbacks.shift();
|
||||||
|
if ( jQuery.isFunction( fn ) ) {
|
||||||
|
executeReady( fn );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
readyFiring = false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
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 );
|
||||||
|
}
|
||||||
|
|
||||||
|
} );
|
|
@ -1,17 +1,17 @@
|
||||||
define( [
|
define( [
|
||||||
"../core",
|
"../core",
|
||||||
"../var/document",
|
"../var/document",
|
||||||
"../core/init",
|
|
||||||
"../deferred"
|
"../deferred"
|
||||||
], function( jQuery, document ) {
|
], function( jQuery, document ) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
// The deferred used on DOM ready
|
// The deferred used on DOM ready
|
||||||
var readyList;
|
var readyList = jQuery.Deferred();
|
||||||
|
|
||||||
jQuery.fn.ready = function( fn ) {
|
jQuery.fn.ready = function( fn ) {
|
||||||
|
|
||||||
// Add the callback
|
readyList.then( fn );
|
||||||
jQuery.ready.promise().done( fn );
|
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
};
|
};
|
||||||
|
@ -52,52 +52,35 @@ jQuery.extend( {
|
||||||
|
|
||||||
// If there are functions bound, to execute
|
// If there are functions bound, to execute
|
||||||
readyList.resolveWith( document, [ jQuery ] );
|
readyList.resolveWith( document, [ jQuery ] );
|
||||||
|
|
||||||
// Trigger any bound ready events
|
|
||||||
if ( jQuery.fn.triggerHandler ) {
|
|
||||||
jQuery( document ).triggerHandler( "ready" );
|
|
||||||
jQuery( document ).off( "ready" );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} );
|
} );
|
||||||
|
|
||||||
/**
|
jQuery.ready.then = readyList.then;
|
||||||
* The ready event handler and self cleanup method
|
|
||||||
*/
|
// The ready event handler and self cleanup method
|
||||||
function completed() {
|
function completed() {
|
||||||
document.removeEventListener( "DOMContentLoaded", completed );
|
document.removeEventListener( "DOMContentLoaded", completed );
|
||||||
window.removeEventListener( "load", completed );
|
window.removeEventListener( "load", completed );
|
||||||
jQuery.ready();
|
jQuery.ready();
|
||||||
}
|
}
|
||||||
|
|
||||||
jQuery.ready.promise = function( obj ) {
|
// Catch cases where $(document).ready() is called
|
||||||
if ( !readyList ) {
|
// 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
|
} else {
|
||||||
// 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
|
// Use the handy event callback
|
||||||
window.setTimeout( jQuery.ready );
|
document.addEventListener( "DOMContentLoaded", completed );
|
||||||
|
|
||||||
} else {
|
// A fallback to window.onload, that will always work
|
||||||
|
window.addEventListener( "load", completed );
|
||||||
// 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();
|
|
||||||
|
|
||||||
} );
|
} );
|
||||||
|
|
|
@ -3,7 +3,9 @@ define( [
|
||||||
"../var/support"
|
"../var/support"
|
||||||
], function( document, support ) {
|
], function( document, support ) {
|
||||||
|
|
||||||
// Support: Safari 8+
|
"use strict";
|
||||||
|
|
||||||
|
// Support: Safari 8 only
|
||||||
// In Safari 8 documents created via document.implementation.createHTMLDocument
|
// In Safari 8 documents created via document.implementation.createHTMLDocument
|
||||||
// collapse sibling forms: the second one becomes a child of the first one.
|
// 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.
|
// Because of that, this security measure has to be disabled in Safari 8.
|
||||||
|
|
131
dashboard-ui/bower_components/jquery/src/css.js
vendored
131
dashboard-ui/bower_components/jquery/src/css.js
vendored
|
@ -7,21 +7,20 @@ define( [
|
||||||
"./var/rcssNum",
|
"./var/rcssNum",
|
||||||
"./css/var/rnumnonpx",
|
"./css/var/rnumnonpx",
|
||||||
"./css/var/cssExpand",
|
"./css/var/cssExpand",
|
||||||
"./css/var/isHidden",
|
|
||||||
"./css/var/getStyles",
|
"./css/var/getStyles",
|
||||||
"./css/var/swap",
|
"./css/var/swap",
|
||||||
"./css/curCSS",
|
"./css/curCSS",
|
||||||
"./css/adjustCSS",
|
"./css/adjustCSS",
|
||||||
"./css/defaultDisplay",
|
|
||||||
"./css/addGetHookIf",
|
"./css/addGetHookIf",
|
||||||
"./css/support",
|
"./css/support",
|
||||||
"./data/var/dataPriv",
|
|
||||||
|
|
||||||
"./core/init",
|
"./core/init",
|
||||||
"./core/ready",
|
"./core/ready",
|
||||||
"./selector" // contains
|
"./selector" // contains
|
||||||
], function( jQuery, pnum, access, rmargin, document, rcssNum, rnumnonpx, cssExpand, isHidden,
|
], function( jQuery, pnum, access, rmargin, document, rcssNum, rnumnonpx, cssExpand,
|
||||||
getStyles, swap, curCSS, adjustCSS, defaultDisplay, addGetHookIf, support, dataPriv ) {
|
getStyles, swap, curCSS, adjustCSS, addGetHookIf, support ) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
var
|
var
|
||||||
|
|
||||||
|
@ -29,14 +28,13 @@ var
|
||||||
// except "table", "table-cell", or "table-caption"
|
// except "table", "table-cell", or "table-caption"
|
||||||
// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
|
// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
|
||||||
rdisplayswap = /^(none|table(?!-c[ea]).+)/,
|
rdisplayswap = /^(none|table(?!-c[ea]).+)/,
|
||||||
|
|
||||||
cssShow = { position: "absolute", visibility: "hidden", display: "block" },
|
cssShow = { position: "absolute", visibility: "hidden", display: "block" },
|
||||||
cssNormalTransform = {
|
cssNormalTransform = {
|
||||||
letterSpacing: "0",
|
letterSpacing: "0",
|
||||||
fontWeight: "400"
|
fontWeight: "400"
|
||||||
},
|
},
|
||||||
|
|
||||||
cssPrefixes = [ "Webkit", "O", "Moz", "ms" ],
|
cssPrefixes = [ "Webkit", "Moz", "ms" ],
|
||||||
emptyStyle = document.createElement( "div" ).style;
|
emptyStyle = document.createElement( "div" ).style;
|
||||||
|
|
||||||
// Return a css property mapped to a potentially vendor prefixed property
|
// Return a css property mapped to a potentially vendor prefixed property
|
||||||
|
@ -118,22 +116,16 @@ function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
|
||||||
function getWidthOrHeight( elem, name, extra ) {
|
function getWidthOrHeight( elem, name, extra ) {
|
||||||
|
|
||||||
// Start with offset property, which is equivalent to the border-box value
|
// Start with offset property, which is equivalent to the border-box value
|
||||||
var valueIsBorderBox = true,
|
var val,
|
||||||
val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
|
valueIsBorderBox = true,
|
||||||
styles = getStyles( elem ),
|
styles = getStyles( elem ),
|
||||||
isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
|
isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
|
||||||
|
|
||||||
// Support: IE11 only
|
// Support: IE <=11 only
|
||||||
// In IE 11 fullscreen elements inside of an iframe have
|
// Running getBoundingClientRect on a disconnected node
|
||||||
// 100x too small dimensions (gh-1764).
|
// in IE throws an error.
|
||||||
if ( document.msFullscreenElement && window.top !== window ) {
|
if ( elem.getClientRects().length ) {
|
||||||
|
val = elem.getBoundingClientRect()[ name ];
|
||||||
// Support: IE11 only
|
|
||||||
// Running getBoundingClientRect on a disconnected node
|
|
||||||
// in IE throws an error.
|
|
||||||
if ( elem.getClientRects().length ) {
|
|
||||||
val = Math.round( elem.getBoundingClientRect()[ name ] * 100 );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Some non-html elements return undefined for offsetWidth, so check for null/undefined
|
// Some non-html elements return undefined for offsetWidth, so check for null/undefined
|
||||||
|
@ -173,66 +165,6 @@ function getWidthOrHeight( elem, name, extra ) {
|
||||||
) + "px";
|
) + "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( {
|
jQuery.extend( {
|
||||||
|
|
||||||
// Add in style property hooks for overriding the default
|
// Add in style property hooks for overriding the default
|
||||||
|
@ -314,7 +246,6 @@ jQuery.extend( {
|
||||||
value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" );
|
value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Support: IE9-11+
|
|
||||||
// background-* props affect original clone's values
|
// background-* props affect original clone's values
|
||||||
if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
|
if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
|
||||||
style[ name ] = "inherit";
|
style[ name ] = "inherit";
|
||||||
|
@ -384,7 +315,14 @@ jQuery.each( [ "height", "width" ], function( i, name ) {
|
||||||
// Certain elements can have dimension info if we invisibly show them
|
// Certain elements can have dimension info if we invisibly show them
|
||||||
// but it must have a current display style that would benefit
|
// but it must have a current display style that would benefit
|
||||||
return rdisplayswap.test( jQuery.css( elem, "display" ) ) &&
|
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() {
|
swap( elem, cssShow, function() {
|
||||||
return getWidthOrHeight( elem, name, extra );
|
return getWidthOrHeight( elem, name, extra );
|
||||||
} ) :
|
} ) :
|
||||||
|
@ -429,16 +367,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
|
// These hooks are used by animate to expand properties
|
||||||
jQuery.each( {
|
jQuery.each( {
|
||||||
margin: "",
|
margin: "",
|
||||||
|
@ -489,25 +417,6 @@ jQuery.fn.extend( {
|
||||||
jQuery.style( elem, name, value ) :
|
jQuery.style( elem, name, value ) :
|
||||||
jQuery.css( elem, name );
|
jQuery.css( elem, name );
|
||||||
}, name, value, arguments.length > 1 );
|
}, 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() {
|
define( function() {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
function addGetHookIf( conditionFn, hookFn ) {
|
function addGetHookIf( conditionFn, hookFn ) {
|
||||||
|
|
||||||
// Define the hook, we'll check on the first run if it's really needed.
|
// Define the hook, we'll check on the first run if it's really needed.
|
||||||
|
|
|
@ -3,6 +3,8 @@ define( [
|
||||||
"../var/rcssNum"
|
"../var/rcssNum"
|
||||||
], function( jQuery, rcssNum ) {
|
], function( jQuery, rcssNum ) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
function adjustCSS( elem, prop, valueParts, tween ) {
|
function adjustCSS( elem, prop, valueParts, tween ) {
|
||||||
var adjusted,
|
var adjusted,
|
||||||
scale = 1,
|
scale = 1,
|
||||||
|
|
|
@ -7,29 +7,28 @@ define( [
|
||||||
"../selector" // Get jQuery.contains
|
"../selector" // Get jQuery.contains
|
||||||
], function( jQuery, rnumnonpx, rmargin, getStyles, support ) {
|
], function( jQuery, rnumnonpx, rmargin, getStyles, support ) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
function curCSS( elem, name, computed ) {
|
function curCSS( elem, name, computed ) {
|
||||||
var width, minWidth, maxWidth, ret,
|
var width, minWidth, maxWidth, ret,
|
||||||
style = elem.style;
|
style = elem.style;
|
||||||
|
|
||||||
computed = computed || getStyles( elem );
|
computed = computed || getStyles( elem );
|
||||||
ret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined;
|
|
||||||
|
|
||||||
// Support: Opera 12.1x only
|
// Support: IE <=9 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
|
|
||||||
// getPropertyValue is only needed for .css('filter') (#12537)
|
// getPropertyValue is only needed for .css('filter') (#12537)
|
||||||
if ( computed ) {
|
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"
|
// A tribute to the "awesome hack by Dean Edwards"
|
||||||
// Android Browser returns percentage for some values,
|
// Android Browser returns percentage for some values,
|
||||||
// but width seems to be reliably pixels.
|
// but width seems to be reliably pixels.
|
||||||
// This is against the CSSOM draft spec:
|
// 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 ) ) {
|
if ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.test( name ) ) {
|
||||||
|
|
||||||
// Remember the original values
|
// Remember the original values
|
||||||
|
@ -50,7 +49,7 @@ function curCSS( elem, name, computed ) {
|
||||||
|
|
||||||
return ret !== undefined ?
|
return ret !== undefined ?
|
||||||
|
|
||||||
// Support: IE9-11+
|
// Support: IE <=9 - 11 only
|
||||||
// IE returns zIndex value as an integer.
|
// IE returns zIndex value as an integer.
|
||||||
ret + "" :
|
ret + "" :
|
||||||
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"
|
"../selector"
|
||||||
], function( jQuery ) {
|
], function( jQuery ) {
|
||||||
|
|
||||||
jQuery.expr.filters.hidden = function( elem ) {
|
"use strict";
|
||||||
return !jQuery.expr.filters.visible( elem );
|
|
||||||
};
|
|
||||||
jQuery.expr.filters.visible = function( elem ) {
|
|
||||||
|
|
||||||
// Support: Opera <= 12.12
|
jQuery.expr.pseudos.hidden = function( elem ) {
|
||||||
// Opera reports offsetWidths and offsetHeights less than zero on some elements
|
return !jQuery.expr.pseudos.visible( elem );
|
||||||
// Use OR instead of AND as the element is not visible if either is true
|
};
|
||||||
// See tickets #10406 and #13132
|
jQuery.expr.pseudos.visible = function( elem ) {
|
||||||
return elem.offsetWidth > 0 || elem.offsetHeight > 0 || elem.getClientRects().length > 0;
|
return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );
|
||||||
};
|
};
|
||||||
|
|
||||||
} );
|
} );
|
||||||
|
|
|
@ -1,6 +1,35 @@
|
||||||
define( [
|
define( [
|
||||||
"../data/var/dataPriv"
|
"../core",
|
||||||
], function( dataPriv ) {
|
"../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 ) {
|
function showHide( elements, show ) {
|
||||||
var display, elem,
|
var display, elem,
|
||||||
|
@ -17,23 +46,30 @@ function showHide( elements, show ) {
|
||||||
|
|
||||||
display = elem.style.display;
|
display = elem.style.display;
|
||||||
if ( show ) {
|
if ( show ) {
|
||||||
if ( display === "none" ) {
|
|
||||||
|
|
||||||
// Restore a pre-hide() value if we have one
|
// Since we force visibility upon cascade-hidden elements, an immediate (and slow)
|
||||||
values[ index ] = dataPriv.get( elem, "display" ) || "";
|
// 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 {
|
} else {
|
||||||
if ( display !== "none" ) {
|
if ( display !== "none" ) {
|
||||||
values[ index ] = "none";
|
values[ index ] = "none";
|
||||||
|
|
||||||
// Remember the value we're replacing
|
// Remember what we're overwriting
|
||||||
dataPriv.set( elem, "display", display );
|
dataPriv.set( elem, "display", display );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set the display of the elements in a second loop
|
// Set the display of the elements in a second loop to avoid constant reflow
|
||||||
// to avoid the constant reflow
|
|
||||||
for ( index = 0; index < length; index++ ) {
|
for ( index = 0; index < length; index++ ) {
|
||||||
if ( values[ index ] != null ) {
|
if ( values[ index ] != null ) {
|
||||||
elements[ index ].style.display = values[ index ];
|
elements[ index ].style.display = values[ index ];
|
||||||
|
@ -43,6 +79,27 @@ function showHide( elements, show ) {
|
||||||
return elements;
|
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;
|
||||||
} );
|
} );
|
||||||
|
|
|
@ -5,34 +5,21 @@ define( [
|
||||||
"../var/support"
|
"../var/support"
|
||||||
], function( jQuery, document, documentElement, support ) {
|
], function( jQuery, document, documentElement, support ) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
( function() {
|
( 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
|
// Executing both pixelPosition & boxSizingReliable tests require only one layout
|
||||||
// so they're executed at the same time to save the second computation.
|
// so they're executed at the same time to save the second computation.
|
||||||
function computeStyleTests() {
|
function computeStyleTests() {
|
||||||
div.style.cssText =
|
|
||||||
|
|
||||||
// Support: Firefox<29, Android 2.3
|
// This is a singleton, we need to execute it only once
|
||||||
// Vendor-prefix box-sizing
|
if ( !div ) {
|
||||||
"-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;" +
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.style.cssText =
|
||||||
|
"box-sizing:border-box;" +
|
||||||
"position:relative;display:block;" +
|
"position:relative;display:block;" +
|
||||||
"margin:auto;border:1px;padding:1px;" +
|
"margin:auto;border:1px;padding:1px;" +
|
||||||
"top:1%;width:50%";
|
"top:1%;width:50%";
|
||||||
|
@ -41,6 +28,8 @@ define( [
|
||||||
|
|
||||||
var divStyle = window.getComputedStyle( div );
|
var divStyle = window.getComputedStyle( div );
|
||||||
pixelPositionVal = divStyle.top !== "1%";
|
pixelPositionVal = divStyle.top !== "1%";
|
||||||
|
|
||||||
|
// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44
|
||||||
reliableMarginLeftVal = divStyle.marginLeft === "2px";
|
reliableMarginLeftVal = divStyle.marginLeft === "2px";
|
||||||
boxSizingReliableVal = divStyle.width === "4px";
|
boxSizingReliableVal = divStyle.width === "4px";
|
||||||
|
|
||||||
|
@ -50,68 +39,47 @@ define( [
|
||||||
pixelMarginRightVal = divStyle.marginRight === "4px";
|
pixelMarginRightVal = divStyle.marginRight === "4px";
|
||||||
|
|
||||||
documentElement.removeChild( container );
|
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, {
|
jQuery.extend( support, {
|
||||||
pixelPosition: function() {
|
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();
|
computeStyleTests();
|
||||||
return pixelPositionVal;
|
return pixelPositionVal;
|
||||||
},
|
},
|
||||||
boxSizingReliable: function() {
|
boxSizingReliable: function() {
|
||||||
if ( boxSizingReliableVal == null ) {
|
computeStyleTests();
|
||||||
computeStyleTests();
|
|
||||||
}
|
|
||||||
return boxSizingReliableVal;
|
return boxSizingReliableVal;
|
||||||
},
|
},
|
||||||
pixelMarginRight: function() {
|
pixelMarginRight: function() {
|
||||||
|
computeStyleTests();
|
||||||
// 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();
|
|
||||||
}
|
|
||||||
return pixelMarginRightVal;
|
return pixelMarginRightVal;
|
||||||
},
|
},
|
||||||
reliableMarginLeft: function() {
|
reliableMarginLeft: function() {
|
||||||
|
computeStyleTests();
|
||||||
// Support: IE <=8 only, Android 4.0 - 4.3 only, Firefox <=3 - 37
|
|
||||||
if ( boxSizingReliableVal == null ) {
|
|
||||||
computeStyleTests();
|
|
||||||
}
|
|
||||||
return reliableMarginLeftVal;
|
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;
|
|
||||||
}
|
}
|
||||||
} );
|
} );
|
||||||
} )();
|
} )();
|
||||||
|
|
46
dashboard-ui/bower_components/jquery/src/data.js
vendored
46
dashboard-ui/bower_components/jquery/src/data.js
vendored
|
@ -5,6 +5,8 @@ define( [
|
||||||
"./data/var/dataUser"
|
"./data/var/dataUser"
|
||||||
], function( jQuery, access, dataPriv, dataUser ) {
|
], function( jQuery, access, dataPriv, dataUser ) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
// Implementation Summary
|
// Implementation Summary
|
||||||
//
|
//
|
||||||
// 1. Enforce API surface and semantic compatibility with 1.9.x branch
|
// 1. Enforce API surface and semantic compatibility with 1.9.x branch
|
||||||
|
@ -35,7 +37,7 @@ function dataAttr( elem, key, data ) {
|
||||||
|
|
||||||
// Only convert to a number if it doesn't change the string
|
// Only convert to a number if it doesn't change the string
|
||||||
+data + "" === data ? +data :
|
+data + "" === data ? +data :
|
||||||
rbrace.test( data ) ? jQuery.parseJSON( data ) :
|
rbrace.test( data ) ? JSON.parse( data ) :
|
||||||
data;
|
data;
|
||||||
} catch ( e ) {}
|
} catch ( e ) {}
|
||||||
|
|
||||||
|
@ -87,7 +89,7 @@ jQuery.fn.extend( {
|
||||||
i = attrs.length;
|
i = attrs.length;
|
||||||
while ( i-- ) {
|
while ( i-- ) {
|
||||||
|
|
||||||
// Support: IE11+
|
// Support: IE 11 only
|
||||||
// The attrs elements can be null (#14894)
|
// The attrs elements can be null (#14894)
|
||||||
if ( attrs[ i ] ) {
|
if ( attrs[ i ] ) {
|
||||||
name = attrs[ i ].name;
|
name = attrs[ i ].name;
|
||||||
|
@ -112,7 +114,7 @@ jQuery.fn.extend( {
|
||||||
}
|
}
|
||||||
|
|
||||||
return access( this, function( value ) {
|
return access( this, function( value ) {
|
||||||
var data, camelKey;
|
var data;
|
||||||
|
|
||||||
// The calling jQuery object (element matches) is not empty
|
// The calling jQuery object (element matches) is not empty
|
||||||
// (and therefore has an element appears at this[ 0 ]) and the
|
// (and therefore has an element appears at this[ 0 ]) and the
|
||||||
|
@ -122,29 +124,15 @@ jQuery.fn.extend( {
|
||||||
if ( elem && value === undefined ) {
|
if ( elem && value === undefined ) {
|
||||||
|
|
||||||
// Attempt to get data from the cache
|
// Attempt to get data from the cache
|
||||||
// with the key as-is
|
// The key will always be camelCased in Data
|
||||||
data = dataUser.get( elem, key ) ||
|
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 );
|
|
||||||
if ( data !== undefined ) {
|
if ( data !== undefined ) {
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Attempt to "discover" the data in
|
// Attempt to "discover" the data in
|
||||||
// HTML5 custom data-* attrs
|
// HTML5 custom data-* attrs
|
||||||
data = dataAttr( elem, camelKey, undefined );
|
data = dataAttr( elem, key );
|
||||||
if ( data !== undefined ) {
|
if ( data !== undefined ) {
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
@ -154,24 +142,10 @@ jQuery.fn.extend( {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set the data...
|
// Set the data...
|
||||||
camelKey = jQuery.camelCase( key );
|
|
||||||
this.each( function() {
|
this.each( function() {
|
||||||
|
|
||||||
// First, attempt to store a copy or reference of any
|
// We always store the camelCased key
|
||||||
// data that might've been store with a camelCased key.
|
dataUser.set( this, key, value );
|
||||||
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 );
|
|
||||||
}
|
|
||||||
} );
|
} );
|
||||||
}, null, value, arguments.length > 1, null, true );
|
}, null, value, arguments.length > 1, null, true );
|
||||||
},
|
},
|
||||||
|
|
|
@ -4,6 +4,8 @@ define( [
|
||||||
"./var/acceptData"
|
"./var/acceptData"
|
||||||
], function( jQuery, rnotwhite, acceptData ) {
|
], function( jQuery, rnotwhite, acceptData ) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
function Data() {
|
function Data() {
|
||||||
this.expando = jQuery.expando + Data.uid++;
|
this.expando = jQuery.expando + Data.uid++;
|
||||||
}
|
}
|
||||||
|
@ -12,35 +14,8 @@ Data.uid = 1;
|
||||||
|
|
||||||
Data.prototype = {
|
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 ) {
|
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
|
// Check if the owner object already has a cache
|
||||||
var value = owner[ this.expando ];
|
var value = owner[ this.expando ];
|
||||||
|
|
||||||
|
@ -77,15 +52,16 @@ Data.prototype = {
|
||||||
cache = this.cache( owner );
|
cache = this.cache( owner );
|
||||||
|
|
||||||
// Handle: [ owner, key, value ] args
|
// Handle: [ owner, key, value ] args
|
||||||
|
// Always use camelCase key (gh-2257)
|
||||||
if ( typeof data === "string" ) {
|
if ( typeof data === "string" ) {
|
||||||
cache[ data ] = value;
|
cache[ jQuery.camelCase( data ) ] = value;
|
||||||
|
|
||||||
// Handle: [ owner, { properties } ] args
|
// Handle: [ owner, { properties } ] args
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
// Copy the properties one-by-one to the cache object
|
// Copy the properties one-by-one to the cache object
|
||||||
for ( prop in data ) {
|
for ( prop in data ) {
|
||||||
cache[ prop ] = data[ prop ];
|
cache[ jQuery.camelCase( prop ) ] = data[ prop ];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return cache;
|
return cache;
|
||||||
|
@ -93,10 +69,11 @@ Data.prototype = {
|
||||||
get: function( owner, key ) {
|
get: function( owner, key ) {
|
||||||
return key === undefined ?
|
return key === undefined ?
|
||||||
this.cache( owner ) :
|
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 ) {
|
access: function( owner, key, value ) {
|
||||||
var stored;
|
|
||||||
|
|
||||||
// In cases where either:
|
// In cases where either:
|
||||||
//
|
//
|
||||||
|
@ -112,10 +89,7 @@ Data.prototype = {
|
||||||
if ( key === undefined ||
|
if ( key === undefined ||
|
||||||
( ( key && typeof key === "string" ) && value === undefined ) ) {
|
( ( key && typeof key === "string" ) && value === undefined ) ) {
|
||||||
|
|
||||||
stored = this.get( owner, key );
|
return this.get( owner, key );
|
||||||
|
|
||||||
return stored !== undefined ?
|
|
||||||
stored : this.get( owner, jQuery.camelCase( key ) );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// When the key is not a string, or both a key and value
|
// When the key is not a string, or both a key and value
|
||||||
|
@ -131,58 +105,45 @@ Data.prototype = {
|
||||||
return value !== undefined ? value : key;
|
return value !== undefined ? value : key;
|
||||||
},
|
},
|
||||||
remove: function( owner, key ) {
|
remove: function( owner, key ) {
|
||||||
var i, name, camel,
|
var i,
|
||||||
cache = owner[ this.expando ];
|
cache = owner[ this.expando ];
|
||||||
|
|
||||||
if ( cache === undefined ) {
|
if ( cache === undefined ) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( key === undefined ) {
|
if ( key !== undefined ) {
|
||||||
this.register( owner );
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
// Support array or space separated string of keys
|
// Support array or space separated string of keys
|
||||||
if ( jQuery.isArray( key ) ) {
|
if ( jQuery.isArray( key ) ) {
|
||||||
|
|
||||||
// If "name" is an array of keys...
|
// If key is an array of keys...
|
||||||
// When data is initially created, via ("key", "val") signature,
|
// We always set camelCase keys, so remove that.
|
||||||
// keys will be converted to camelCase.
|
key = key.map( jQuery.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 ) );
|
|
||||||
} else {
|
} else {
|
||||||
camel = jQuery.camelCase( key );
|
key = jQuery.camelCase( key );
|
||||||
|
|
||||||
// Try the string as a key before any manipulation
|
// If a key with the spaces exists, use it.
|
||||||
if ( key in cache ) {
|
// Otherwise, create an array by matching non-whitespace
|
||||||
name = [ key, camel ];
|
key = key in cache ?
|
||||||
} else {
|
[ key ] :
|
||||||
|
( key.match( rnotwhite ) || [] );
|
||||||
// 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 ) || [] );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
i = name.length;
|
i = key.length;
|
||||||
|
|
||||||
while ( i-- ) {
|
while ( i-- ) {
|
||||||
delete cache[ name[ i ] ];
|
delete cache[ key[ i ] ];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Remove the expando if there's no more data
|
// Remove the expando if there's no more data
|
||||||
if ( key === undefined || jQuery.isEmptyObject( cache ) ) {
|
if ( key === undefined || jQuery.isEmptyObject( cache ) ) {
|
||||||
|
|
||||||
// Support: Chrome <= 35-45+
|
// Support: Chrome <=35 - 45
|
||||||
// Webkit & Blink performance suffers when deleting properties
|
// Webkit & Blink performance suffers when deleting properties
|
||||||
// from DOM nodes, so set to undefined instead
|
// 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 ) {
|
if ( owner.nodeType ) {
|
||||||
owner[ this.expando ] = undefined;
|
owner[ this.expando ] = undefined;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -1,20 +0,0 @@
|
||||||
define([
|
|
||||||
"../core"
|
|
||||||
], function( jQuery ) {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Determines whether an object can have data
|
|
||||||
*/
|
|
||||||
jQuery.acceptData = function( owner ) {
|
|
||||||
// Accepts only:
|
|
||||||
// - Node
|
|
||||||
// - Node.ELEMENT_NODE
|
|
||||||
// - Node.DOCUMENT_NODE
|
|
||||||
// - Object
|
|
||||||
// - Any
|
|
||||||
/* jshint -W018 */
|
|
||||||
return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
|
|
||||||
};
|
|
||||||
|
|
||||||
return jQuery.acceptData;
|
|
||||||
});
|
|
|
@ -1,23 +0,0 @@
|
||||||
define( [
|
|
||||||
"../var/document",
|
|
||||||
"../var/support"
|
|
||||||
], function( document, support ) {
|
|
||||||
|
|
||||||
( function() {
|
|
||||||
var div = document.createElement( "div" );
|
|
||||||
|
|
||||||
// Support: IE<9
|
|
||||||
support.deleteExpando = true;
|
|
||||||
try {
|
|
||||||
delete div.test;
|
|
||||||
} catch ( e ) {
|
|
||||||
support.deleteExpando = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Null elements to avoid leaks in IE.
|
|
||||||
div = null;
|
|
||||||
} )();
|
|
||||||
|
|
||||||
return support;
|
|
||||||
|
|
||||||
} );
|
|
347
dashboard-ui/bower_components/jquery/src/deferred.js
vendored
347
dashboard-ui/bower_components/jquery/src/deferred.js
vendored
|
@ -4,15 +4,60 @@ define( [
|
||||||
"./callbacks"
|
"./callbacks"
|
||||||
], function( jQuery, slice ) {
|
], 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 ( /*jshint -W002 */ value ) {
|
||||||
|
|
||||||
|
// Support: Android 4.0 only
|
||||||
|
// Strict mode functions invoked without .call/.apply get global-object context
|
||||||
|
reject.call( undefined, value );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
jQuery.extend( {
|
jQuery.extend( {
|
||||||
|
|
||||||
Deferred: function( func ) {
|
Deferred: function( func ) {
|
||||||
var tuples = [
|
var tuples = [
|
||||||
|
|
||||||
// action, add listener, listener list, final state
|
// action, add listener, callbacks,
|
||||||
[ "resolve", "done", jQuery.Callbacks( "once memory" ), "resolved" ],
|
// ... .then handlers, argument index, [final state]
|
||||||
[ "reject", "fail", jQuery.Callbacks( "once memory" ), "rejected" ],
|
[ "notify", "progress", jQuery.Callbacks( "memory" ),
|
||||||
[ "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",
|
state = "pending",
|
||||||
promise = {
|
promise = {
|
||||||
|
@ -23,13 +68,23 @@ jQuery.extend( {
|
||||||
deferred.done( arguments ).fail( arguments );
|
deferred.done( arguments ).fail( arguments );
|
||||||
return this;
|
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;
|
var fns = arguments;
|
||||||
|
|
||||||
return jQuery.Deferred( function( newDefer ) {
|
return jQuery.Deferred( function( newDefer ) {
|
||||||
jQuery.each( tuples, function( i, tuple ) {
|
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() {
|
deferred[ tuple[ 1 ] ]( function() {
|
||||||
var returned = fn && fn.apply( this, arguments );
|
var returned = fn && fn.apply( this, arguments );
|
||||||
if ( returned && jQuery.isFunction( returned.promise ) ) {
|
if ( returned && jQuery.isFunction( returned.promise ) ) {
|
||||||
|
@ -39,7 +94,7 @@ jQuery.extend( {
|
||||||
.fail( newDefer.reject );
|
.fail( newDefer.reject );
|
||||||
} else {
|
} else {
|
||||||
newDefer[ tuple[ 0 ] + "With" ](
|
newDefer[ tuple[ 0 ] + "With" ](
|
||||||
this === promise ? newDefer.promise() : this,
|
this,
|
||||||
fn ? [ returned ] : arguments
|
fn ? [ returned ] : arguments
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -48,6 +103,170 @@ jQuery.extend( {
|
||||||
fns = null;
|
fns = null;
|
||||||
} ).promise();
|
} ).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
|
// Get a promise for this deferred
|
||||||
// If obj is provided, the promise aspect is added to the object
|
// If obj is provided, the promise aspect is added to the object
|
||||||
|
@ -57,33 +276,51 @@ jQuery.extend( {
|
||||||
},
|
},
|
||||||
deferred = {};
|
deferred = {};
|
||||||
|
|
||||||
// Keep pipe for back-compat
|
|
||||||
promise.pipe = promise.then;
|
|
||||||
|
|
||||||
// Add list-specific methods
|
// Add list-specific methods
|
||||||
jQuery.each( tuples, function( i, tuple ) {
|
jQuery.each( tuples, function( i, tuple ) {
|
||||||
var list = tuple[ 2 ],
|
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;
|
promise[ tuple[ 1 ] ] = list.add;
|
||||||
|
|
||||||
// Handle state
|
// Handle state
|
||||||
if ( stateString ) {
|
if ( stateString ) {
|
||||||
list.add( function() {
|
list.add(
|
||||||
|
function() {
|
||||||
|
|
||||||
// state = [ resolved | rejected ]
|
// state = "resolved" (i.e., fulfilled)
|
||||||
state = stateString;
|
// state = "rejected"
|
||||||
|
state = stateString;
|
||||||
|
},
|
||||||
|
|
||||||
// [ reject_list | resolve_list ].disable; progress_list.lock
|
// rejected_callbacks.disable
|
||||||
}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
|
// 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 ] ] = function() {
|
||||||
deferred[ tuple[ 0 ] + "With" ]( this === deferred ? promise : this, arguments );
|
deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments );
|
||||||
return this;
|
return this;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// deferred.notifyWith = list.fireWith
|
||||||
|
// deferred.resolveWith = list.fireWith
|
||||||
|
// deferred.rejectWith = list.fireWith
|
||||||
deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
|
deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
|
||||||
} );
|
} );
|
||||||
|
|
||||||
|
@ -100,57 +337,51 @@ jQuery.extend( {
|
||||||
},
|
},
|
||||||
|
|
||||||
// Deferred helper
|
// Deferred helper
|
||||||
when: function( subordinate /* , ..., subordinateN */ ) {
|
when: function( singleValue ) {
|
||||||
var i = 0,
|
var
|
||||||
|
|
||||||
|
// count of uncompleted subordinates
|
||||||
|
remaining = arguments.length,
|
||||||
|
|
||||||
|
// count of unprocessed arguments
|
||||||
|
i = remaining,
|
||||||
|
|
||||||
|
// subordinate fulfillment data
|
||||||
|
resolveContexts = Array( i ),
|
||||||
resolveValues = slice.call( arguments ),
|
resolveValues = slice.call( arguments ),
|
||||||
length = resolveValues.length,
|
|
||||||
|
|
||||||
// the count of uncompleted subordinates
|
// the master Deferred
|
||||||
remaining = length !== 1 ||
|
master = jQuery.Deferred(),
|
||||||
( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,
|
|
||||||
|
|
||||||
// the master Deferred.
|
// subordinate callback factory
|
||||||
// If resolveValues consist of only a single Deferred, just use that.
|
updateFunc = function( i ) {
|
||||||
deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
|
|
||||||
|
|
||||||
// Update function for both resolve and progress values
|
|
||||||
updateFunc = function( i, contexts, values ) {
|
|
||||||
return function( value ) {
|
return function( value ) {
|
||||||
contexts[ i ] = this;
|
resolveContexts[ i ] = this;
|
||||||
values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
|
resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
|
||||||
if ( values === progressValues ) {
|
if ( !( --remaining ) ) {
|
||||||
deferred.notifyWith( contexts, values );
|
master.resolveWith( resolveContexts, resolveValues );
|
||||||
} else if ( !( --remaining ) ) {
|
|
||||||
deferred.resolveWith( contexts, values );
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
},
|
};
|
||||||
|
|
||||||
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
|
// Use .then() to unwrap secondary thenables (cf. gh-3000)
|
||||||
if ( length > 1 ) {
|
if ( master.state() === "pending" ||
|
||||||
progressValues = new Array( length );
|
jQuery.isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {
|
||||||
progressContexts = new Array( length );
|
|
||||||
resolveContexts = new Array( length );
|
return master.then();
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// If we're not waiting on anything, resolve the master
|
// Multiple arguments are aggregated like Promise.all array elements
|
||||||
if ( !remaining ) {
|
while ( i-- ) {
|
||||||
deferred.resolveWith( resolveContexts, resolveValues );
|
adoptValue( resolveValues[ i ], updateFunc( i ), master.reject );
|
||||||
}
|
}
|
||||||
|
|
||||||
return deferred.promise();
|
return master.promise();
|
||||||
}
|
}
|
||||||
} );
|
} );
|
||||||
|
|
||||||
|
|
|
@ -3,16 +3,18 @@ define( [
|
||||||
"../deferred"
|
"../deferred"
|
||||||
], function( jQuery ) {
|
], function( jQuery ) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
// These usually indicate a programmer mistake during development,
|
// These usually indicate a programmer mistake during development,
|
||||||
// warn about them ASAP rather than swallowing them by default.
|
// warn about them ASAP rather than swallowing them by default.
|
||||||
var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
|
var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
|
||||||
|
|
||||||
jQuery.Deferred.exceptionHook = function( error, stack ) {
|
jQuery.Deferred.exceptionHook = function( error, stack ) {
|
||||||
|
|
||||||
// Support: IE9
|
// Support: IE 8 - 9 only
|
||||||
// Console exists when dev tools are open, which can happen at any time
|
// Console exists when dev tools are open, which can happen at any time
|
||||||
if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {
|
if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {
|
||||||
window.console.warn( "jQuery.Deferred exception: " + error.message, stack );
|
window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack );
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,8 @@ define( [
|
||||||
"./core"
|
"./core"
|
||||||
], function( jQuery ) {
|
], function( jQuery ) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
jQuery.fn.extend( {
|
jQuery.fn.extend( {
|
||||||
|
|
||||||
bind: function( types, data, fn ) {
|
bind: function( types, data, fn ) {
|
||||||
|
@ -20,13 +22,9 @@ jQuery.fn.extend( {
|
||||||
return arguments.length === 1 ?
|
return arguments.length === 1 ?
|
||||||
this.off( selector, "**" ) :
|
this.off( selector, "**" ) :
|
||||||
this.off( types, selector || "**", fn );
|
this.off( types, selector || "**", fn );
|
||||||
},
|
|
||||||
size: function() {
|
|
||||||
return this.length;
|
|
||||||
}
|
}
|
||||||
} );
|
} );
|
||||||
|
|
||||||
jQuery.fn.andSelf = jQuery.fn.addBack;
|
jQuery.parseJSON = JSON.parse;
|
||||||
|
|
||||||
} );
|
} );
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,8 @@ define( [
|
||||||
"./css"
|
"./css"
|
||||||
], function( jQuery, access ) {
|
], function( jQuery, access ) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
|
// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
|
||||||
jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
|
jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
|
||||||
jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name },
|
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 ) ) {
|
if ( jQuery.isWindow( elem ) ) {
|
||||||
|
|
||||||
// As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there
|
// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)
|
||||||
// isn't a whole lot we can do. See pull request at this URL for discussion:
|
return funcName.indexOf( "outer" ) === 0 ?
|
||||||
// https://github.com/jquery/jquery/pull/764
|
elem[ "inner" + name ] :
|
||||||
return elem.document.documentElement[ "client" + name ];
|
elem.document.documentElement[ "client" + name ];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get document width or height
|
// 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
|
// Set width or height on the element
|
||||||
jQuery.style( elem, type, value, extra );
|
jQuery.style( elem, type, value, extra );
|
||||||
}, type, chainable ? margin : undefined, chainable, null );
|
}, type, chainable ? margin : undefined, chainable );
|
||||||
};
|
};
|
||||||
} );
|
} );
|
||||||
} );
|
} );
|
||||||
|
|
229
dashboard-ui/bower_components/jquery/src/effects.js
vendored
229
dashboard-ui/bower_components/jquery/src/effects.js
vendored
|
@ -2,27 +2,38 @@ define( [
|
||||||
"./core",
|
"./core",
|
||||||
"./var/document",
|
"./var/document",
|
||||||
"./var/rcssNum",
|
"./var/rcssNum",
|
||||||
"./css/var/cssExpand",
|
|
||||||
"./var/rnotwhite",
|
"./var/rnotwhite",
|
||||||
"./css/var/isHidden",
|
"./css/var/cssExpand",
|
||||||
|
"./css/var/isHiddenWithinTree",
|
||||||
|
"./css/var/swap",
|
||||||
"./css/adjustCSS",
|
"./css/adjustCSS",
|
||||||
"./css/defaultDisplay",
|
|
||||||
"./data/var/dataPriv",
|
"./data/var/dataPriv",
|
||||||
|
"./css/showHide",
|
||||||
|
|
||||||
"./core/init",
|
"./core/init",
|
||||||
"./effects/Tween",
|
|
||||||
"./queue",
|
"./queue",
|
||||||
"./css",
|
|
||||||
"./deferred",
|
"./deferred",
|
||||||
"./traversing"
|
"./traversing",
|
||||||
], function( jQuery, document, rcssNum, cssExpand, rnotwhite,
|
"./manipulation",
|
||||||
isHidden, adjustCSS, defaultDisplay, dataPriv ) {
|
"./css",
|
||||||
|
"./effects/Tween"
|
||||||
|
], function( jQuery, document, rcssNum, rnotwhite, cssExpand, isHiddenWithinTree, swap,
|
||||||
|
adjustCSS, dataPriv, showHide ) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
var
|
var
|
||||||
fxNow, timerId,
|
fxNow, timerId,
|
||||||
rfxtypes = /^(?:toggle|show|hide)$/,
|
rfxtypes = /^(?:toggle|show|hide)$/,
|
||||||
rrun = /queueHooks$/;
|
rrun = /queueHooks$/;
|
||||||
|
|
||||||
|
function raf() {
|
||||||
|
if ( timerId ) {
|
||||||
|
window.requestAnimationFrame( raf );
|
||||||
|
jQuery.fx.tick();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Animations created synchronously will run synchronously
|
// Animations created synchronously will run synchronously
|
||||||
function createFxNow() {
|
function createFxNow() {
|
||||||
window.setTimeout( function() {
|
window.setTimeout( function() {
|
||||||
|
@ -68,14 +79,15 @@ function createTween( value, prop, animation ) {
|
||||||
|
|
||||||
function defaultPrefilter( elem, props, opts ) {
|
function defaultPrefilter( elem, props, opts ) {
|
||||||
/* jshint validthis: true */
|
/* 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,
|
anim = this,
|
||||||
orig = {},
|
orig = {},
|
||||||
style = elem.style,
|
style = elem.style,
|
||||||
hidden = elem.nodeType && isHidden( elem ),
|
hidden = elem.nodeType && isHiddenWithinTree( elem ),
|
||||||
dataShow = dataPriv.get( elem, "fxshow" );
|
dataShow = dataPriv.get( elem, "fxshow" );
|
||||||
|
|
||||||
// Handle queue: false promises
|
// Queue-skipping animations hijack the fx hooks
|
||||||
if ( !opts.queue ) {
|
if ( !opts.queue ) {
|
||||||
hooks = jQuery._queueHooks( elem, "fx" );
|
hooks = jQuery._queueHooks( elem, "fx" );
|
||||||
if ( hooks.unqueued == null ) {
|
if ( hooks.unqueued == null ) {
|
||||||
|
@ -101,25 +113,77 @@ function defaultPrefilter( elem, props, opts ) {
|
||||||
} );
|
} );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Height/width overflow pass
|
// Detect show/hide animations
|
||||||
if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) {
|
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
|
// Pretend to be hidden if this is a "show" and
|
||||||
// Record all 3 overflow attributes because IE9-10 do not
|
// there is still data from a stopped show/hide
|
||||||
// change the overflow attribute when overflowX and
|
if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
|
||||||
// overflowY are set to the same value
|
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 ];
|
opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
|
||||||
|
|
||||||
// Set display property to inline-block for height/width
|
// Identify a display type, preferring old show/hide data over the CSS cascade
|
||||||
// animations on inline elements that are having width/height animated
|
restoreDisplay = dataShow && dataShow.display;
|
||||||
|
if ( restoreDisplay == null ) {
|
||||||
|
restoreDisplay = dataPriv.get( elem, "display" );
|
||||||
|
}
|
||||||
display = jQuery.css( elem, "display" );
|
display = jQuery.css( elem, "display" );
|
||||||
|
if ( display === "none" ) {
|
||||||
|
if ( restoreDisplay ) {
|
||||||
|
display = restoreDisplay;
|
||||||
|
} else {
|
||||||
|
|
||||||
// Test default display if display is currently "none"
|
// Get nonempty value(s) by temporarily forcing visibility
|
||||||
checkDisplay = display === "none" ?
|
showHide( [ elem ], true );
|
||||||
dataPriv.get( elem, "olddisplay" ) || defaultDisplay( elem.nodeName ) : display;
|
restoreDisplay = elem.style.display || restoreDisplay;
|
||||||
|
display = jQuery.css( elem, "display" );
|
||||||
|
showHide( [ elem ] );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ( checkDisplay === "inline" && jQuery.css( elem, "float" ) === "none" ) {
|
// Animate inline elements as inline-block
|
||||||
style.display = "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 +196,53 @@ function defaultPrefilter( elem, props, opts ) {
|
||||||
} );
|
} );
|
||||||
}
|
}
|
||||||
|
|
||||||
// show/hide pass
|
// Implement show/hide animations
|
||||||
for ( prop in props ) {
|
propTween = false;
|
||||||
value = props[ prop ];
|
for ( prop in orig ) {
|
||||||
if ( rfxtypes.exec( value ) ) {
|
|
||||||
delete props[ prop ];
|
|
||||||
toggle = toggle || value === "toggle";
|
|
||||||
if ( value === ( hidden ? "hide" : "show" ) ) {
|
|
||||||
|
|
||||||
// If there is dataShow left over from a stopped hide or show
|
// General show/hide setup for this element animation
|
||||||
// and we are going to proceed with show, we should pretend to be hidden
|
if ( !propTween ) {
|
||||||
if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
|
if ( dataShow ) {
|
||||||
hidden = true;
|
if ( "hidden" in dataShow ) {
|
||||||
} else {
|
hidden = dataShow.hidden;
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
|
} 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
|
// Store hidden/visible for toggle so `.stop().toggle()` "reverses"
|
||||||
} else {
|
if ( toggle ) {
|
||||||
display = undefined;
|
dataShow.hidden = !hidden;
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( !jQuery.isEmptyObject( orig ) ) {
|
|
||||||
if ( dataShow ) {
|
|
||||||
if ( "hidden" in dataShow ) {
|
|
||||||
hidden = dataShow.hidden;
|
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
dataShow = dataPriv.access( elem, "fxshow", {} );
|
|
||||||
}
|
|
||||||
|
|
||||||
// Store state if its toggle - enables .stop().toggle() to "reverse"
|
// Show elements before animating them
|
||||||
if ( toggle ) {
|
if ( hidden ) {
|
||||||
dataShow.hidden = !hidden;
|
showHide( [ elem ], true );
|
||||||
}
|
}
|
||||||
if ( hidden ) {
|
|
||||||
jQuery( elem ).show();
|
/* jshint -W083 */
|
||||||
} else {
|
|
||||||
anim.done( function() {
|
anim.done( function() {
|
||||||
jQuery( elem ).hide();
|
|
||||||
|
// 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" );
|
// Per-property setup
|
||||||
for ( prop in orig ) {
|
propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
|
||||||
jQuery.style( elem, prop, orig[ prop ] );
|
if ( !( prop in dataShow ) ) {
|
||||||
}
|
dataShow[ prop ] = propTween.start;
|
||||||
} );
|
if ( hidden ) {
|
||||||
for ( prop in orig ) {
|
propTween.end = propTween.start;
|
||||||
tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
|
propTween.start = 0;
|
||||||
|
|
||||||
if ( !( prop in dataShow ) ) {
|
|
||||||
dataShow[ prop ] = tween.start;
|
|
||||||
if ( hidden ) {
|
|
||||||
tween.end = tween.start;
|
|
||||||
tween.start = prop === "width" || prop === "height" ? 1 : 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,7 +300,7 @@ function Animation( elem, properties, options ) {
|
||||||
var currentTime = fxNow || createFxNow(),
|
var currentTime = fxNow || createFxNow(),
|
||||||
remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
|
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)
|
// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
|
||||||
temp = remaining / animation.duration || 0,
|
temp = remaining / animation.duration || 0,
|
||||||
percent = 1 - temp,
|
percent = 1 - temp,
|
||||||
|
@ -355,6 +399,7 @@ function Animation( elem, properties, options ) {
|
||||||
}
|
}
|
||||||
|
|
||||||
jQuery.Animation = jQuery.extend( Animation, {
|
jQuery.Animation = jQuery.extend( Animation, {
|
||||||
|
|
||||||
tweeners: {
|
tweeners: {
|
||||||
"*": [ function( prop, value ) {
|
"*": [ function( prop, value ) {
|
||||||
var tween = this.createTween( prop, value );
|
var tween = this.createTween( prop, value );
|
||||||
|
@ -401,9 +446,15 @@ jQuery.speed = function( speed, easing, fn ) {
|
||||||
easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
|
easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
|
||||||
};
|
};
|
||||||
|
|
||||||
opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ?
|
// Go to the end state if fx are off or if document is hidden
|
||||||
opt.duration : opt.duration in jQuery.fx.speeds ?
|
if ( jQuery.fx.off || document.hidden ) {
|
||||||
jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
|
opt.duration = 0;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
opt.duration = typeof opt.duration === "number" ?
|
||||||
|
opt.duration : opt.duration in jQuery.fx.speeds ?
|
||||||
|
jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
|
||||||
|
}
|
||||||
|
|
||||||
// Normalize opt.queue - true/undefined/null -> "fx"
|
// Normalize opt.queue - true/undefined/null -> "fx"
|
||||||
if ( opt.queue == null || opt.queue === true ) {
|
if ( opt.queue == null || opt.queue === true ) {
|
||||||
|
@ -430,7 +481,7 @@ jQuery.fn.extend( {
|
||||||
fadeTo: function( speed, to, easing, callback ) {
|
fadeTo: function( speed, to, easing, callback ) {
|
||||||
|
|
||||||
// Show any hidden elements after setting opacity to 0
|
// 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
|
// Animate to the value specified
|
||||||
.end().animate( { opacity: to }, speed, easing, callback );
|
.end().animate( { opacity: to }, speed, easing, callback );
|
||||||
|
@ -607,12 +658,18 @@ jQuery.fx.timer = function( timer ) {
|
||||||
jQuery.fx.interval = 13;
|
jQuery.fx.interval = 13;
|
||||||
jQuery.fx.start = function() {
|
jQuery.fx.start = function() {
|
||||||
if ( !timerId ) {
|
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() {
|
jQuery.fx.stop = function() {
|
||||||
window.clearInterval( timerId );
|
if ( window.cancelAnimationFrame ) {
|
||||||
|
window.cancelAnimationFrame( timerId );
|
||||||
|
} else {
|
||||||
|
window.clearInterval( timerId );
|
||||||
|
}
|
||||||
|
|
||||||
timerId = null;
|
timerId = null;
|
||||||
};
|
};
|
||||||
|
|
|
@ -3,6 +3,8 @@ define( [
|
||||||
"../css"
|
"../css"
|
||||||
], function( jQuery ) {
|
], function( jQuery ) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
function Tween( elem, options, prop, end, easing ) {
|
function Tween( elem, options, prop, end, easing ) {
|
||||||
return new Tween.prototype.init( 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
|
// Panic based approach to setting things on disconnected nodes
|
||||||
Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
|
Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
|
||||||
set: function( tween ) {
|
set: function( tween ) {
|
||||||
|
@ -115,7 +117,7 @@ jQuery.easing = {
|
||||||
|
|
||||||
jQuery.fx = Tween.prototype.init;
|
jQuery.fx = Tween.prototype.init;
|
||||||
|
|
||||||
// Back Compat <1.8 extension point
|
// Back compat <1.8 extension point
|
||||||
jQuery.fx.step = {};
|
jQuery.fx.step = {};
|
||||||
|
|
||||||
} );
|
} );
|
||||||
|
|
|
@ -4,7 +4,9 @@ define( [
|
||||||
"../effects"
|
"../effects"
|
||||||
], function( jQuery ) {
|
], function( jQuery ) {
|
||||||
|
|
||||||
jQuery.expr.filters.animated = function( elem ) {
|
"use strict";
|
||||||
|
|
||||||
|
jQuery.expr.pseudos.animated = function( elem ) {
|
||||||
return jQuery.grep( jQuery.timers, function( fn ) {
|
return jQuery.grep( jQuery.timers, function( fn ) {
|
||||||
return elem === fn.elem;
|
return elem === fn.elem;
|
||||||
} ).length;
|
} ).length;
|
||||||
|
|
|
@ -1,58 +0,0 @@
|
||||||
define( [
|
|
||||||
"../var/support",
|
|
||||||
"../var/document"
|
|
||||||
], function( support, document ) {
|
|
||||||
|
|
||||||
( function() {
|
|
||||||
var shrinkWrapBlocksVal;
|
|
||||||
|
|
||||||
support.shrinkWrapBlocks = function() {
|
|
||||||
if ( shrinkWrapBlocksVal != null ) {
|
|
||||||
return shrinkWrapBlocksVal;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Will be changed later if needed.
|
|
||||||
shrinkWrapBlocksVal = false;
|
|
||||||
|
|
||||||
// Minified: var b,c,d
|
|
||||||
var div, body, container;
|
|
||||||
|
|
||||||
body = document.getElementsByTagName( "body" )[ 0 ];
|
|
||||||
if ( !body || !body.style ) {
|
|
||||||
|
|
||||||
// Test fired too early or in an unsupported environment, exit.
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Setup
|
|
||||||
div = document.createElement( "div" );
|
|
||||||
container = document.createElement( "div" );
|
|
||||||
container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px";
|
|
||||||
body.appendChild( container ).appendChild( div );
|
|
||||||
|
|
||||||
// Support: IE6
|
|
||||||
// Check if elements with layout shrink-wrap their children
|
|
||||||
if ( typeof div.style.zoom !== "undefined" ) {
|
|
||||||
|
|
||||||
// Reset CSS: box-sizing; display; margin; border
|
|
||||||
div.style.cssText =
|
|
||||||
|
|
||||||
// Support: Firefox<29, Android 2.3
|
|
||||||
// Vendor-prefix box-sizing
|
|
||||||
"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" +
|
|
||||||
"box-sizing:content-box;display:block;margin:0;border:0;" +
|
|
||||||
"padding:1px;width:1px;zoom:1";
|
|
||||||
div.appendChild( document.createElement( "div" ) ).style.width = "5px";
|
|
||||||
shrinkWrapBlocksVal = div.offsetWidth !== 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
body.removeChild( container );
|
|
||||||
|
|
||||||
return shrinkWrapBlocksVal;
|
|
||||||
};
|
|
||||||
|
|
||||||
} )();
|
|
||||||
|
|
||||||
return support;
|
|
||||||
|
|
||||||
} );
|
|
216
dashboard-ui/bower_components/jquery/src/event.js
vendored
216
dashboard-ui/bower_components/jquery/src/event.js
vendored
|
@ -1,13 +1,16 @@
|
||||||
define( [
|
define( [
|
||||||
"./core",
|
"./core",
|
||||||
"./var/document",
|
"./var/document",
|
||||||
|
"./var/documentElement",
|
||||||
"./var/rnotwhite",
|
"./var/rnotwhite",
|
||||||
"./var/slice",
|
"./var/slice",
|
||||||
"./data/var/dataPriv",
|
"./data/var/dataPriv",
|
||||||
|
|
||||||
"./core/init",
|
"./core/init",
|
||||||
"./selector"
|
"./selector"
|
||||||
], function( jQuery, document, rnotwhite, slice, dataPriv ) {
|
], function( jQuery, document, documentElement, rnotwhite, slice, dataPriv ) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
var
|
var
|
||||||
rkeyEvent = /^key/,
|
rkeyEvent = /^key/,
|
||||||
|
@ -22,7 +25,7 @@ function returnFalse() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Support: IE9
|
// Support: IE <=9 only
|
||||||
// See #13393 for more info
|
// See #13393 for more info
|
||||||
function safeActiveElement() {
|
function safeActiveElement() {
|
||||||
try {
|
try {
|
||||||
|
@ -118,6 +121,12 @@ jQuery.event = {
|
||||||
selector = handleObjIn.selector;
|
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
|
// Make sure that the handler has a unique ID, used to find/remove it later
|
||||||
if ( !handler.guid ) {
|
if ( !handler.guid ) {
|
||||||
handler.guid = jQuery.guid++;
|
handler.guid = jQuery.guid++;
|
||||||
|
@ -281,19 +290,23 @@ jQuery.event = {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
dispatch: function( event ) {
|
dispatch: function( nativeEvent ) {
|
||||||
|
|
||||||
// Make a writable jQuery.Event from the native event object
|
// 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,
|
var i, j, ret, matched, handleObj, handlerQueue,
|
||||||
handlerQueue = [],
|
args = new Array( arguments.length ),
|
||||||
args = slice.call( arguments ),
|
|
||||||
handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [],
|
handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [],
|
||||||
special = jQuery.event.special[ event.type ] || {};
|
special = jQuery.event.special[ event.type ] || {};
|
||||||
|
|
||||||
// Use the fix-ed jQuery.Event rather than the (read-only) native event
|
// Use the fix-ed jQuery.Event rather than the (read-only) native event
|
||||||
args[ 0 ] = event;
|
args[ 0 ] = event;
|
||||||
|
|
||||||
|
for ( i = 1; i < arguments.length; i++ ) {
|
||||||
|
args[ i ] = arguments[ i ];
|
||||||
|
}
|
||||||
|
|
||||||
event.delegateTarget = this;
|
event.delegateTarget = this;
|
||||||
|
|
||||||
// Call the preDispatch hook for the mapped type, and let it bail if desired
|
// Call the preDispatch hook for the mapped type, and let it bail if desired
|
||||||
|
@ -347,11 +360,11 @@ jQuery.event = {
|
||||||
delegateCount = handlers.delegateCount,
|
delegateCount = handlers.delegateCount,
|
||||||
cur = event.target;
|
cur = event.target;
|
||||||
|
|
||||||
// Support (at least): Chrome, IE9
|
// Support: IE <=9
|
||||||
// Find delegate handlers
|
// Find delegate handlers
|
||||||
// Black-hole SVG <use> instance trees (#13180)
|
// Black-hole SVG <use> instance trees (#13180)
|
||||||
//
|
//
|
||||||
// Support: Firefox<=42+
|
// Support: Firefox <=42
|
||||||
// Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343)
|
// Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343)
|
||||||
if ( delegateCount && cur.nodeType &&
|
if ( delegateCount && cur.nodeType &&
|
||||||
( event.type !== "click" || isNaN( event.button ) || event.button < 1 ) ) {
|
( event.type !== "click" || isNaN( event.button ) || event.button < 1 ) ) {
|
||||||
|
@ -392,96 +405,38 @@ jQuery.event = {
|
||||||
return handlerQueue;
|
return handlerQueue;
|
||||||
},
|
},
|
||||||
|
|
||||||
// Includes some event props shared by KeyEvent and MouseEvent
|
addProp: function( name, hook ) {
|
||||||
props: ( "altKey bubbles cancelable ctrlKey currentTarget detail eventPhase " +
|
Object.defineProperty( jQuery.Event.prototype, name, {
|
||||||
"metaKey relatedTarget shiftKey target timeStamp view which" ).split( " " ),
|
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: {
|
set: function( value ) {
|
||||||
props: "char charCode key keyCode".split( " " ),
|
Object.defineProperty( this, name, {
|
||||||
filter: function( event, original ) {
|
enumerable: true,
|
||||||
|
configurable: true,
|
||||||
// Add which for key events
|
writable: true,
|
||||||
if ( event.which == null ) {
|
value: value
|
||||||
event.which = original.charCode != null ? original.charCode : original.keyCode;
|
} );
|
||||||
}
|
}
|
||||||
|
} );
|
||||||
return event;
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
mouseHooks: {
|
fix: function( originalEvent ) {
|
||||||
props: ( "button buttons clientX clientY offsetX offsetY pageX pageY " +
|
return originalEvent[ jQuery.expando ] ?
|
||||||
"screenX screenY toElement" ).split( " " ),
|
originalEvent :
|
||||||
filter: function( event, original ) {
|
new jQuery.Event( originalEvent );
|
||||||
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;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
special: {
|
special: {
|
||||||
|
@ -564,11 +519,21 @@ jQuery.Event = function( src, props ) {
|
||||||
this.isDefaultPrevented = src.defaultPrevented ||
|
this.isDefaultPrevented = src.defaultPrevented ||
|
||||||
src.defaultPrevented === undefined &&
|
src.defaultPrevented === undefined &&
|
||||||
|
|
||||||
// Support: Android<4.0
|
// Support: Android <=2.3 only
|
||||||
src.returnValue === false ?
|
src.returnValue === false ?
|
||||||
returnTrue :
|
returnTrue :
|
||||||
returnFalse;
|
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
|
// Event type
|
||||||
} else {
|
} else {
|
||||||
this.type = src;
|
this.type = src;
|
||||||
|
@ -587,19 +552,20 @@ jQuery.Event = function( src, props ) {
|
||||||
};
|
};
|
||||||
|
|
||||||
// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
|
// 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 = {
|
jQuery.Event.prototype = {
|
||||||
constructor: jQuery.Event,
|
constructor: jQuery.Event,
|
||||||
isDefaultPrevented: returnFalse,
|
isDefaultPrevented: returnFalse,
|
||||||
isPropagationStopped: returnFalse,
|
isPropagationStopped: returnFalse,
|
||||||
isImmediatePropagationStopped: returnFalse,
|
isImmediatePropagationStopped: returnFalse,
|
||||||
|
isSimulated: false,
|
||||||
|
|
||||||
preventDefault: function() {
|
preventDefault: function() {
|
||||||
var e = this.originalEvent;
|
var e = this.originalEvent;
|
||||||
|
|
||||||
this.isDefaultPrevented = returnTrue;
|
this.isDefaultPrevented = returnTrue;
|
||||||
|
|
||||||
if ( e ) {
|
if ( e && !this.isSimulated ) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -608,7 +574,7 @@ jQuery.Event.prototype = {
|
||||||
|
|
||||||
this.isPropagationStopped = returnTrue;
|
this.isPropagationStopped = returnTrue;
|
||||||
|
|
||||||
if ( e ) {
|
if ( e && !this.isSimulated ) {
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -617,7 +583,7 @@ jQuery.Event.prototype = {
|
||||||
|
|
||||||
this.isImmediatePropagationStopped = returnTrue;
|
this.isImmediatePropagationStopped = returnTrue;
|
||||||
|
|
||||||
if ( e ) {
|
if ( e && !this.isSimulated ) {
|
||||||
e.stopImmediatePropagation();
|
e.stopImmediatePropagation();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -625,13 +591,62 @@ 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 ) ) {
|
||||||
|
return ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
return event.which;
|
||||||
|
}
|
||||||
|
}, jQuery.event.addProp );
|
||||||
|
|
||||||
// Create mouseenter/leave events using mouseover/out and event-time checks
|
// Create mouseenter/leave events using mouseover/out and event-time checks
|
||||||
// so that event delegation works in jQuery.
|
// so that event delegation works in jQuery.
|
||||||
// Do the same for pointerenter/pointerleave and pointerover/pointerout
|
// Do the same for pointerenter/pointerleave and pointerover/pointerout
|
||||||
//
|
//
|
||||||
// Support: Safari 7 only
|
// Support: Safari 7 only
|
||||||
// Safari sends mouseenter too often; see:
|
// 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).
|
// for the description of the bug (it existed in older Chrome versions as well).
|
||||||
jQuery.each( {
|
jQuery.each( {
|
||||||
mouseenter: "mouseover",
|
mouseenter: "mouseover",
|
||||||
|
@ -662,6 +677,7 @@ jQuery.each( {
|
||||||
} );
|
} );
|
||||||
|
|
||||||
jQuery.fn.extend( {
|
jQuery.fn.extend( {
|
||||||
|
|
||||||
on: function( types, selector, data, fn ) {
|
on: function( types, selector, data, fn ) {
|
||||||
return on( this, types, selector, data, fn );
|
return on( this, types, selector, data, fn );
|
||||||
},
|
},
|
||||||
|
|
|
@ -3,6 +3,8 @@ define( [
|
||||||
"../event"
|
"../event"
|
||||||
], function( jQuery ) {
|
], function( jQuery ) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
// Attach a bunch of functions for handling common AJAX events
|
// Attach a bunch of functions for handling common AJAX events
|
||||||
jQuery.each( [
|
jQuery.each( [
|
||||||
"ajaxStart",
|
"ajaxStart",
|
||||||
|
|
|
@ -5,9 +5,11 @@ define( [
|
||||||
"./trigger"
|
"./trigger"
|
||||||
], function( jQuery ) {
|
], 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 " +
|
"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 ) {
|
function( i, name ) {
|
||||||
|
|
||||||
// Handle event binding
|
// Handle event binding
|
||||||
|
|
|
@ -7,14 +7,16 @@ define( [
|
||||||
"./trigger"
|
"./trigger"
|
||||||
], function( jQuery, dataPriv, support ) {
|
], function( jQuery, dataPriv, support ) {
|
||||||
|
|
||||||
// Support: Firefox
|
"use strict";
|
||||||
|
|
||||||
|
// Support: Firefox <=44
|
||||||
// Firefox doesn't have focus(in | out) events
|
// Firefox doesn't have focus(in | out) events
|
||||||
// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
|
// 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,
|
// 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
|
// 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 ) {
|
if ( !support.focusin ) {
|
||||||
jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) {
|
jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) {
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,8 @@ define( [
|
||||||
"../var/support"
|
"../var/support"
|
||||||
], function( support ) {
|
], function( support ) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
support.focusin = "onfocusin" in window;
|
support.focusin = "onfocusin" in window;
|
||||||
|
|
||||||
return support;
|
return support;
|
||||||
|
|
|
@ -8,6 +8,8 @@ define( [
|
||||||
"../event"
|
"../event"
|
||||||
], function( jQuery, document, dataPriv, acceptData, hasOwn ) {
|
], function( jQuery, document, dataPriv, acceptData, hasOwn ) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/;
|
var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/;
|
||||||
|
|
||||||
jQuery.extend( jQuery.event, {
|
jQuery.extend( jQuery.event, {
|
||||||
|
@ -121,7 +123,7 @@ jQuery.extend( jQuery.event, {
|
||||||
special._default.apply( eventPath.pop(), data ) === false ) &&
|
special._default.apply( eventPath.pop(), data ) === false ) &&
|
||||||
acceptData( elem ) ) {
|
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)
|
// Don't do default actions on window, that's where global variables be (#6170)
|
||||||
if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {
|
if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {
|
||||||
|
|
||||||
|
@ -148,6 +150,7 @@ jQuery.extend( jQuery.event, {
|
||||||
},
|
},
|
||||||
|
|
||||||
// Piggyback on a donor event to simulate a different one
|
// Piggyback on a donor event to simulate a different one
|
||||||
|
// Used only for `focus(in | out)` events
|
||||||
simulate: function( type, elem, event ) {
|
simulate: function( type, elem, event ) {
|
||||||
var e = jQuery.extend(
|
var e = jQuery.extend(
|
||||||
new jQuery.Event(),
|
new jQuery.Event(),
|
||||||
|
@ -155,27 +158,10 @@ jQuery.extend( jQuery.event, {
|
||||||
{
|
{
|
||||||
type: type,
|
type: type,
|
||||||
isSimulated: true
|
isSimulated: true
|
||||||
|
|
||||||
// Previously, `originalEvent: {}` was set here, so stopPropagation call
|
|
||||||
// would not be triggered on donor event, since in our own
|
|
||||||
// jQuery.event.stopPropagation function we had a check for existence of
|
|
||||||
// originalEvent.stopPropagation method, so, consequently it would be a noop.
|
|
||||||
//
|
|
||||||
// But now, this "simulate" function is used only for events
|
|
||||||
// for which stopPropagation() is noop, so there is no need for that anymore.
|
|
||||||
//
|
|
||||||
// For the 1.x branch though, guard for "click" and "submit"
|
|
||||||
// events is still used, but was moved to jQuery.event.stopPropagation function
|
|
||||||
// because `originalEvent` should point to the original event for the constancy
|
|
||||||
// with other events and for more focused logic
|
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
jQuery.event.trigger( e, null, elem );
|
jQuery.event.trigger( e, null, elem );
|
||||||
|
|
||||||
if ( e.isDefaultPrevented() ) {
|
|
||||||
event.preventDefault();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} );
|
} );
|
||||||
|
|
|
@ -2,6 +2,8 @@ define( [
|
||||||
"../core"
|
"../core"
|
||||||
], function( jQuery ) {
|
], function( jQuery ) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
// Register as a named AMD module, since jQuery can be concatenated with other
|
// 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
|
// 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
|
// understands anonymous AMD modules. A named AMD is safest and most robust
|
||||||
|
|
|
@ -1,3 +1,11 @@
|
||||||
|
/* ExcludeStart */
|
||||||
|
|
||||||
|
// This file is included in a different way from all the others
|
||||||
|
// so the "use strict" pragma is not needed.
|
||||||
|
/* jshint strict: false */
|
||||||
|
|
||||||
|
/* ExcludeEnd */
|
||||||
|
|
||||||
var
|
var
|
||||||
|
|
||||||
// Map over jQuery in case of overwrite
|
// Map over jQuery in case of overwrite
|
||||||
|
|
|
@ -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";
|
|
|
@ -4,6 +4,7 @@ define( [
|
||||||
"./traversing",
|
"./traversing",
|
||||||
"./callbacks",
|
"./callbacks",
|
||||||
"./deferred",
|
"./deferred",
|
||||||
|
"./deferred/exceptionHook",
|
||||||
"./core/ready",
|
"./core/ready",
|
||||||
"./data",
|
"./data",
|
||||||
"./queue",
|
"./queue",
|
||||||
|
@ -32,6 +33,8 @@ define( [
|
||||||
"./exports/amd"
|
"./exports/amd"
|
||||||
], function( jQuery ) {
|
], function( jQuery ) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
return ( window.jQuery = window.$ = jQuery );
|
return ( window.jQuery = window.$ = jQuery );
|
||||||
|
|
||||||
} );
|
} );
|
||||||
|
|
|
@ -15,6 +15,7 @@ define( [
|
||||||
"./data/var/dataPriv",
|
"./data/var/dataPriv",
|
||||||
"./data/var/dataUser",
|
"./data/var/dataUser",
|
||||||
"./data/var/acceptData",
|
"./data/var/acceptData",
|
||||||
|
"./core/DOMEval",
|
||||||
|
|
||||||
"./core/init",
|
"./core/init",
|
||||||
"./traversing",
|
"./traversing",
|
||||||
|
@ -23,12 +24,14 @@ define( [
|
||||||
], function( jQuery, concat, push, access,
|
], function( jQuery, concat, push, access,
|
||||||
rcheckableType, rtagName, rscriptType,
|
rcheckableType, rtagName, rscriptType,
|
||||||
wrapMap, getAll, setGlobalEval, buildFragment, support,
|
wrapMap, getAll, setGlobalEval, buildFragment, support,
|
||||||
dataPriv, dataUser, acceptData ) {
|
dataPriv, dataUser, acceptData, DOMEval ) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
var
|
var
|
||||||
rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,
|
rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,
|
||||||
|
|
||||||
// Support: IE 10-11, Edge 10240+
|
// Support: IE <=10 - 11, Edge 12 - 13
|
||||||
// In IE/Edge using regex groups here causes severe slowdowns.
|
// In IE/Edge using regex groups here causes severe slowdowns.
|
||||||
// See https://connect.microsoft.com/IE/feedback/details/1736512/
|
// See https://connect.microsoft.com/IE/feedback/details/1736512/
|
||||||
rnoInnerhtml = /<script|<style|<link/i,
|
rnoInnerhtml = /<script|<style|<link/i,
|
||||||
|
@ -38,14 +41,14 @@ var
|
||||||
rscriptTypeMasked = /^true\/(.*)/,
|
rscriptTypeMasked = /^true\/(.*)/,
|
||||||
rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
|
rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
|
||||||
|
|
||||||
// Manipulating tables requires a tbody
|
|
||||||
function manipulationTarget( elem, content ) {
|
function manipulationTarget( elem, content ) {
|
||||||
return jQuery.nodeName( elem, "table" ) &&
|
if ( jQuery.nodeName( elem, "table" ) &&
|
||||||
jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ?
|
jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) {
|
||||||
|
|
||||||
elem.getElementsByTagName( "tbody" )[ 0 ] ||
|
return elem.getElementsByTagName( "tbody" )[ 0 ] || elem;
|
||||||
elem.appendChild( elem.ownerDocument.createElement( "tbody" ) ) :
|
}
|
||||||
elem;
|
|
||||||
|
return elem;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Replace/restore the type attribute of script elements for safe DOM manipulation
|
// Replace/restore the type attribute of script elements for safe DOM manipulation
|
||||||
|
@ -163,7 +166,7 @@ function domManip( collection, args, callback, ignored ) {
|
||||||
// Keep references to cloned scripts for later restoration
|
// Keep references to cloned scripts for later restoration
|
||||||
if ( hasScripts ) {
|
if ( hasScripts ) {
|
||||||
|
|
||||||
// Support: Android<4.1, PhantomJS<2
|
// Support: Android <=4.0 only, PhantomJS 1 only
|
||||||
// push.apply(_, arraylike) throws on ancient WebKit
|
// push.apply(_, arraylike) throws on ancient WebKit
|
||||||
jQuery.merge( scripts, getAll( node, "script" ) );
|
jQuery.merge( scripts, getAll( node, "script" ) );
|
||||||
}
|
}
|
||||||
|
@ -192,7 +195,7 @@ function domManip( collection, args, callback, ignored ) {
|
||||||
jQuery._evalUrl( node.src );
|
jQuery._evalUrl( node.src );
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) );
|
DOMEval( node.textContent.replace( rcleanScript, "" ), doc );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -238,7 +241,7 @@ jQuery.extend( {
|
||||||
if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
|
if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
|
||||||
!jQuery.isXMLDoc( elem ) ) {
|
!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 );
|
destElements = getAll( clone );
|
||||||
srcElements = getAll( elem );
|
srcElements = getAll( elem );
|
||||||
|
|
||||||
|
@ -291,13 +294,13 @@ jQuery.extend( {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Support: Chrome <= 35-45+
|
// Support: Chrome <=35 - 45+
|
||||||
// Assign undefined instead of using delete, see Data#remove
|
// Assign undefined instead of using delete, see Data#remove
|
||||||
elem[ dataPriv.expando ] = undefined;
|
elem[ dataPriv.expando ] = undefined;
|
||||||
}
|
}
|
||||||
if ( elem[ dataUser.expando ] ) {
|
if ( elem[ dataUser.expando ] ) {
|
||||||
|
|
||||||
// Support: Chrome <= 35-45+
|
// Support: Chrome <=35 - 45+
|
||||||
// Assign undefined instead of using delete, see Data#remove
|
// Assign undefined instead of using delete, see Data#remove
|
||||||
elem[ dataUser.expando ] = undefined;
|
elem[ dataUser.expando ] = undefined;
|
||||||
}
|
}
|
||||||
|
@ -307,10 +310,6 @@ jQuery.extend( {
|
||||||
} );
|
} );
|
||||||
|
|
||||||
jQuery.fn.extend( {
|
jQuery.fn.extend( {
|
||||||
|
|
||||||
// Keep domManip exposed until 3.0 (gh-2225)
|
|
||||||
domManip: domManip,
|
|
||||||
|
|
||||||
detach: function( selector ) {
|
detach: function( selector ) {
|
||||||
return remove( this, selector, true );
|
return remove( this, selector, true );
|
||||||
},
|
},
|
||||||
|
@ -468,8 +467,8 @@ jQuery.each( {
|
||||||
elems = i === last ? this : this.clone( true );
|
elems = i === last ? this : this.clone( true );
|
||||||
jQuery( insert[ i ] )[ original ]( elems );
|
jQuery( insert[ i ] )[ original ]( elems );
|
||||||
|
|
||||||
// Support: QtWebKit
|
// Support: Android <=4.0 only, PhantomJS 1 only
|
||||||
// .get() because push.apply(_, arraylike) throws
|
// .get() because push.apply(_, arraylike) throws on ancient WebKit
|
||||||
push.apply( ret, elems.get() );
|
push.apply( ret, elems.get() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,8 @@ define( [
|
||||||
"../ajax"
|
"../ajax"
|
||||||
], function( jQuery ) {
|
], function( jQuery ) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
jQuery._evalUrl = function( url ) {
|
jQuery._evalUrl = function( url ) {
|
||||||
return jQuery.ajax( {
|
return jQuery.ajax( {
|
||||||
url: url,
|
url: url,
|
||||||
|
@ -9,6 +11,7 @@ jQuery._evalUrl = function( url ) {
|
||||||
// Make this explicit, since user can override this through ajaxSetup (#11264)
|
// Make this explicit, since user can override this through ajaxSetup (#11264)
|
||||||
type: "GET",
|
type: "GET",
|
||||||
dataType: "script",
|
dataType: "script",
|
||||||
|
cache: true,
|
||||||
async: false,
|
async: false,
|
||||||
global: false,
|
global: false,
|
||||||
"throws": true
|
"throws": true
|
||||||
|
|
|
@ -7,6 +7,8 @@ define( [
|
||||||
"./setGlobalEval"
|
"./setGlobalEval"
|
||||||
], function( jQuery, rtagName, rscriptType, wrapMap, getAll, setGlobalEval ) {
|
], function( jQuery, rtagName, rscriptType, wrapMap, getAll, setGlobalEval ) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
var rhtml = /<|&#?\w+;/;
|
var rhtml = /<|&#?\w+;/;
|
||||||
|
|
||||||
function buildFragment( elems, context, scripts, selection, ignored ) {
|
function buildFragment( elems, context, scripts, selection, ignored ) {
|
||||||
|
@ -24,7 +26,7 @@ function buildFragment( elems, context, scripts, selection, ignored ) {
|
||||||
// Add nodes directly
|
// Add nodes directly
|
||||||
if ( jQuery.type( elem ) === "object" ) {
|
if ( jQuery.type( elem ) === "object" ) {
|
||||||
|
|
||||||
// Support: Android<4.1, PhantomJS<2
|
// Support: Android <=4.0 only, PhantomJS 1 only
|
||||||
// push.apply(_, arraylike) throws on ancient WebKit
|
// push.apply(_, arraylike) throws on ancient WebKit
|
||||||
jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
|
jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
|
||||||
|
|
||||||
|
@ -47,7 +49,7 @@ function buildFragment( elems, context, scripts, selection, ignored ) {
|
||||||
tmp = tmp.lastChild;
|
tmp = tmp.lastChild;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Support: Android<4.1, PhantomJS<2
|
// Support: Android <=4.0 only, PhantomJS 1 only
|
||||||
// push.apply(_, arraylike) throws on ancient WebKit
|
// push.apply(_, arraylike) throws on ancient WebKit
|
||||||
jQuery.merge( nodes, tmp.childNodes );
|
jQuery.merge( nodes, tmp.childNodes );
|
||||||
|
|
||||||
|
|
|
@ -1,20 +0,0 @@
|
||||||
define( [
|
|
||||||
"./var/nodeNames"
|
|
||||||
], function( nodeNames ) {
|
|
||||||
|
|
||||||
function createSafeFragment( document ) {
|
|
||||||
var list = nodeNames.split( "|" ),
|
|
||||||
safeFrag = document.createDocumentFragment();
|
|
||||||
|
|
||||||
if ( safeFrag.createElement ) {
|
|
||||||
while ( list.length ) {
|
|
||||||
safeFrag.createElement(
|
|
||||||
list.pop()
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return safeFrag;
|
|
||||||
}
|
|
||||||
|
|
||||||
return createSafeFragment;
|
|
||||||
} );
|
|
|
@ -2,9 +2,11 @@ define( [
|
||||||
"../core"
|
"../core"
|
||||||
], function( jQuery ) {
|
], function( jQuery ) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
function getAll( context, tag ) {
|
function getAll( context, tag ) {
|
||||||
|
|
||||||
// Support: IE9-11+
|
// Support: IE <=9 - 11 only
|
||||||
// Use typeof to avoid zero-argument method invocation on host objects (#15151)
|
// Use typeof to avoid zero-argument method invocation on host objects (#15151)
|
||||||
var ret = typeof context.getElementsByTagName !== "undefined" ?
|
var ret = typeof context.getElementsByTagName !== "undefined" ?
|
||||||
context.getElementsByTagName( tag || "*" ) :
|
context.getElementsByTagName( tag || "*" ) :
|
||||||
|
|
|
@ -2,6 +2,8 @@ define( [
|
||||||
"../data/var/dataPriv"
|
"../data/var/dataPriv"
|
||||||
], function( dataPriv ) {
|
], function( dataPriv ) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
// Mark scripts as having already been evaluated
|
// Mark scripts as having already been evaluated
|
||||||
function setGlobalEval( elems, refElements ) {
|
function setGlobalEval( elems, refElements ) {
|
||||||
var i = 0,
|
var i = 0,
|
||||||
|
|
|
@ -3,12 +3,14 @@ define( [
|
||||||
"../var/support"
|
"../var/support"
|
||||||
], function( document, support ) {
|
], function( document, support ) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
( function() {
|
( function() {
|
||||||
var fragment = document.createDocumentFragment(),
|
var fragment = document.createDocumentFragment(),
|
||||||
div = fragment.appendChild( document.createElement( "div" ) ),
|
div = fragment.appendChild( document.createElement( "div" ) ),
|
||||||
input = document.createElement( "input" );
|
input = document.createElement( "input" );
|
||||||
|
|
||||||
// Support: Android 4.0-4.3, Safari<=5.1
|
// Support: Android 4.0 - 4.3 only
|
||||||
// Check state lost if the name is set (#11217)
|
// Check state lost if the name is set (#11217)
|
||||||
// Support: Windows Web Apps (WWA)
|
// Support: Windows Web Apps (WWA)
|
||||||
// `name` and `type` must use .setAttribute for WWA (#14901)
|
// `name` and `type` must use .setAttribute for WWA (#14901)
|
||||||
|
@ -18,11 +20,11 @@ define( [
|
||||||
|
|
||||||
div.appendChild( input );
|
div.appendChild( input );
|
||||||
|
|
||||||
// Support: Safari<=5.1, Android<4.2
|
// Support: Android <=4.1 only
|
||||||
// Older WebKit doesn't clone checked state correctly in fragments
|
// Older WebKit doesn't clone checked state correctly in fragments
|
||||||
support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
|
support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
|
||||||
|
|
||||||
// Support: IE<=11+
|
// Support: IE <=11 only
|
||||||
// Make sure textarea (and checkbox) defaultValue is properly cloned
|
// Make sure textarea (and checkbox) defaultValue is properly cloned
|
||||||
div.innerHTML = "<textarea>x</textarea>";
|
div.innerHTML = "<textarea>x</textarea>";
|
||||||
support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
|
support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
define( function() {
|
define( function() {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
// We have to close these tags to support XHTML (#13200)
|
// We have to close these tags to support XHTML (#13200)
|
||||||
var wrapMap = {
|
var wrapMap = {
|
||||||
|
|
||||||
// Support: IE9
|
// Support: IE <=9 only
|
||||||
option: [ 1, "<select multiple='multiple'>", "</select>" ],
|
option: [ 1, "<select multiple='multiple'>", "</select>" ],
|
||||||
|
|
||||||
// XHTML parsers do not magically insert elements in the
|
// XHTML parsers do not magically insert elements in the
|
||||||
|
@ -17,7 +19,7 @@ var wrapMap = {
|
||||||
_default: [ 0, "", "" ]
|
_default: [ 0, "", "" ]
|
||||||
};
|
};
|
||||||
|
|
||||||
// Support: IE9
|
// Support: IE <=9 only
|
||||||
wrapMap.optgroup = wrapMap.option;
|
wrapMap.optgroup = wrapMap.option;
|
||||||
|
|
||||||
wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
|
wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
|
||||||
|
|
|
@ -13,6 +13,8 @@ define( [
|
||||||
"./selector" // contains
|
"./selector" // contains
|
||||||
], function( jQuery, access, document, documentElement, rnumnonpx, curCSS, addGetHookIf, support ) {
|
], function( jQuery, access, document, documentElement, rnumnonpx, curCSS, addGetHookIf, support ) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets a window from an element
|
* Gets a window from an element
|
||||||
*/
|
*/
|
||||||
|
@ -74,6 +76,8 @@ jQuery.offset = {
|
||||||
|
|
||||||
jQuery.fn.extend( {
|
jQuery.fn.extend( {
|
||||||
offset: function( options ) {
|
offset: function( options ) {
|
||||||
|
|
||||||
|
// Preserve chaining for setter
|
||||||
if ( arguments.length ) {
|
if ( arguments.length ) {
|
||||||
return options === undefined ?
|
return options === undefined ?
|
||||||
this :
|
this :
|
||||||
|
@ -82,28 +86,36 @@ jQuery.fn.extend( {
|
||||||
} );
|
} );
|
||||||
}
|
}
|
||||||
|
|
||||||
var docElem, win,
|
var docElem, win, rect, doc,
|
||||||
elem = this[ 0 ],
|
elem = this[ 0 ];
|
||||||
box = { top: 0, left: 0 },
|
|
||||||
doc = elem && elem.ownerDocument;
|
|
||||||
|
|
||||||
if ( !doc ) {
|
if ( !elem ) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
docElem = doc.documentElement;
|
// Support: IE <=11 only
|
||||||
|
// Running getBoundingClientRect on a
|
||||||
// Make sure it's not a disconnected DOM node
|
// disconnected node in IE throws an error
|
||||||
if ( !jQuery.contains( docElem, elem ) ) {
|
if ( !elem.getClientRects().length ) {
|
||||||
return box;
|
return { top: 0, left: 0 };
|
||||||
}
|
}
|
||||||
|
|
||||||
box = elem.getBoundingClientRect();
|
rect = elem.getBoundingClientRect();
|
||||||
win = getWindow( doc );
|
|
||||||
return {
|
// Make sure element is not hidden (display: none)
|
||||||
top: box.top + win.pageYOffset - docElem.clientTop,
|
if ( rect.width || rect.height ) {
|
||||||
left: box.left + win.pageXOffset - docElem.clientLeft
|
doc = elem.ownerDocument;
|
||||||
};
|
win = getWindow( doc );
|
||||||
|
docElem = doc.documentElement;
|
||||||
|
|
||||||
|
return {
|
||||||
|
top: rect.top + win.pageYOffset - docElem.clientTop,
|
||||||
|
left: rect.left + win.pageXOffset - docElem.clientLeft
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return zeros for disconnected and hidden elements (gh-2310)
|
||||||
|
return rect;
|
||||||
},
|
},
|
||||||
|
|
||||||
position: function() {
|
position: function() {
|
||||||
|
@ -134,8 +146,10 @@ jQuery.fn.extend( {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add offsetParent borders
|
// Add offsetParent borders
|
||||||
parentOffset.top += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true );
|
parentOffset = {
|
||||||
parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true );
|
top: parentOffset.top + jQuery.css( offsetParent[ 0 ], "borderTopWidth", true ),
|
||||||
|
left: parentOffset.left + jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true )
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
// Subtract parent offsets and element margins
|
// Subtract parent offsets and element margins
|
||||||
|
@ -193,10 +207,10 @@ jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function(
|
||||||
};
|
};
|
||||||
} );
|
} );
|
||||||
|
|
||||||
// Support: Safari<7-8+, Chrome<37-44+
|
// Support: Safari <=7 - 9.1, Chrome <=37 - 49
|
||||||
// Add the top/left cssHooks using jQuery.fn.position
|
// Add the top/left cssHooks using jQuery.fn.position
|
||||||
// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
|
// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
|
||||||
// Blink bug: https://code.google.com/p/chromium/issues/detail?id=229280
|
// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347
|
||||||
// getComputedStyle returns percent when specified for top/left/bottom/right;
|
// getComputedStyle returns percent when specified for top/left/bottom/right;
|
||||||
// rather than make the css module depend on the offset module, just check for it here
|
// rather than make the css module depend on the offset module, just check for it here
|
||||||
jQuery.each( [ "top", "left" ], function( i, prop ) {
|
jQuery.each( [ "top", "left" ], function( i, prop ) {
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue