update components

This commit is contained in:
Luke Pulverenti 2016-09-23 02:57:24 -04:00
parent 0c7088e379
commit cf2c7ca241
157 changed files with 2861 additions and 2975 deletions

View File

@ -1,4 +1,4 @@
<div id="addPluginPage" data-role="page" class="page type-interior pluginConfigurationPage" data-helpurl="https://github.com/MediaBrowser/Wiki/wiki/Plugins" data-require="emby-select,emby-collapse,registrationservices,scripts/ratingdialog,scripts/addpluginpage"> <div id="addPluginPage" data-role="page" class="page type-interior pluginConfigurationPage" data-helpurl="https://github.com/MediaBrowser/Wiki/wiki/Plugins" data-require="emby-select,emby-collapse,registrationservices,scripts/addpluginpage">
<div data-role="content"> <div data-role="content">
<div class="content-primary"> <div class="content-primary">

View File

@ -14,12 +14,12 @@
}, },
"devDependencies": {}, "devDependencies": {},
"ignore": [], "ignore": [],
"version": "1.4.261", "version": "1.4.263",
"_release": "1.4.261", "_release": "1.4.263",
"_resolution": { "_resolution": {
"type": "version", "type": "version",
"tag": "1.4.261", "tag": "1.4.263",
"commit": "c985fe644bf1268d66f69ddcf3ba73faf5c6bd3e" "commit": "a688a5c033af169003a172bc593f57a31577de33"
}, },
"_source": "https://github.com/MediaBrowser/emby-webcomponents.git", "_source": "https://github.com/MediaBrowser/emby-webcomponents.git",
"_target": "^1.2.1", "_target": "^1.2.1",

View File

@ -5,7 +5,15 @@
border: none; border: none;
max-height: 84%; max-height: 84%;
border-radius: 1px !important; border-radius: 1px !important;
box-shadow: 0 16px 24px 2px rgba(0, 0, 0, 0.14), 0 6px 30px 5px rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(0, 0, 0, 0.4); color: #fff;
}
.actionsheet-not-fullscreen {
background-color: #262626;
}
.actionSheetMenuItem:hover {
background-color: #333;
} }
.actionsheet-fullscreen { .actionsheet-fullscreen {

View File

@ -119,6 +119,8 @@
if (isFullscreen) { if (isFullscreen) {
dlg.classList.add('actionsheet-fullscreen'); dlg.classList.add('actionsheet-fullscreen');
} else {
dlg.classList.add('actionsheet-not-fullscreen');
} }
var extraSpacing = !layoutManager.tv; var extraSpacing = !layoutManager.tv;

View File

@ -204,7 +204,7 @@ define(['browser'], function (browser) {
function getMaxBitrate() { function getMaxBitrate() {
if (browser.edgeUwp) { if (browser.edgeUwp) {
return 22000000; return 24000000;
} }
// 10mbps // 10mbps

View File

@ -213,9 +213,6 @@
.visualCardBox-cardFooter { .visualCardBox-cardFooter {
border-bottom-left-radius: 2px; border-bottom-left-radius: 2px;
border-bottom-right-radius: 2px; border-bottom-right-radius: 2px;
-moz-box-shadow: 0 2px 4px rgba(0,0,0,0.1);
-ms-box-shadow: 0 2px 4px rgba(0,0,0,0.1);
-webkit-box-shadow: 0 2px 4px rgba(0,0,0,0.1);
box-shadow: 0 2px 4px rgba(0,0,0,0.1); box-shadow: 0 2px 4px rgba(0,0,0,0.1);
} }

View File

@ -11,8 +11,6 @@ define(['dialogHelper', 'dom', 'layoutManager', 'scrollHelper', 'globalize', 're
if (enableTvLayout) { if (enableTvLayout) {
dialogOptions.size = 'fullscreen'; dialogOptions.size = 'fullscreen';
} else {
//dialogOptions.size = 'mini';
} }
var dlg = dialogHelper.createDialog(dialogOptions); var dlg = dialogHelper.createDialog(dialogOptions);
@ -21,16 +19,18 @@ define(['dialogHelper', 'dom', 'layoutManager', 'scrollHelper', 'globalize', 're
dlg.innerHTML = globalize.translateHtml(template, 'sharedcomponents'); dlg.innerHTML = globalize.translateHtml(template, 'sharedcomponents');
dlg.style['align-items'] = 'center';
dlg.style['justify-content'] = 'center';
var formDialogContent = dlg.querySelector('.formDialogContent');
formDialogContent.style['flex-grow'] = 'initial';
if (enableTvLayout) { if (enableTvLayout) {
dlg.style['align-items'] = 'center';
dlg.style['justify-content'] = 'center';
var formDialogContent = dlg.querySelector('.formDialogContent');
formDialogContent.style['flex-grow'] = 'initial';
formDialogContent.style['max-width'] = '50%'; formDialogContent.style['max-width'] = '50%';
formDialogContent.style['max-height'] = '60%'; formDialogContent.style['max-height'] = '60%';
scrollHelper.centerFocus.on(formDialogContent, false); scrollHelper.centerFocus.on(formDialogContent, false);
} else { } else {
dlg.style.maxWidth = (Math.min((options.buttons.length * 150) + 200, dom.getWindowSize().innerWidth - 50)) + 'px'; formDialogContent.style.maxWidth = (Math.min((options.buttons.length * 150) + 200, dom.getWindowSize().innerWidth - 50)) + 'px';
dlg.classList.add('dialog-fullscreen-lowres');
} }
//dlg.querySelector('.btnCancel').addEventListener('click', function (e) { //dlg.querySelector('.btnCancel').addEventListener('click', function (e) {

View File

@ -41,7 +41,8 @@
} }
@media all and (max-width: 1280px), all and (max-height: 720px) { @media all and (max-width: 1280px), all and (max-height: 720px) {
.dialog-fixedSize {
.dialog-fixedSize, .dialog-fullscreen-lowres {
position: fixed !important; position: fixed !important;
top: 0 !important; top: 0 !important;
bottom: 0 !important; bottom: 0 !important;
@ -94,5 +95,5 @@
} }
.dialogBackdropOpened { .dialogBackdropOpened {
opacity: .8; opacity: .6;
} }

View File

@ -38,6 +38,7 @@
.button-flat { .button-flat {
background: transparent; background: transparent;
box-shadow: none; box-shadow: none;
text-transform: uppercase;
} }
.emby-button > i { .emby-button > i {

View File

@ -145,24 +145,24 @@
if (image.ImageType == "Backdrop" || image.ImageType == "Screenshot") { if (image.ImageType == "Backdrop" || image.ImageType == "Screenshot") {
if (index > 0) { if (index > 0) {
html += '<button is="paper-icon-button-light" class="btnMoveImage autoSize" data-imagetype="' + image.ImageType + '" data-index="' + image.ImageIndex + '" data-newindex="' + (image.ImageIndex - 1) + '" title="' + globalize.translate('sharedcomponents#MoveLeft') + '"><i class="md-icon">chevron_left</i></button>'; html += '<button type="button" is="paper-icon-button-light" class="btnMoveImage autoSize" data-imagetype="' + image.ImageType + '" data-index="' + image.ImageIndex + '" data-newindex="' + (image.ImageIndex - 1) + '" title="' + globalize.translate('sharedcomponents#MoveLeft') + '"><i class="md-icon">chevron_left</i></button>';
} else { } else {
html += '<button is="paper-icon-button-light" class="autoSize" disabled title="' + globalize.translate('sharedcomponents#MoveLeft') + '"><i class="md-icon">chevron_left</i></button>'; html += '<button type="button" is="paper-icon-button-light" class="autoSize" disabled title="' + globalize.translate('sharedcomponents#MoveLeft') + '"><i class="md-icon">chevron_left</i></button>';
} }
if (index < numImages - 1) { if (index < numImages - 1) {
html += '<button is="paper-icon-button-light" class="btnMoveImage autoSize" data-imagetype="' + image.ImageType + '" data-index="' + image.ImageIndex + '" data-newindex="' + (image.ImageIndex + 1) + '" title="' + globalize.translate('sharedcomponents#MoveRight') + '"><i class="md-icon">chevron_right</i></button>'; html += '<button type="button" is="paper-icon-button-light" class="btnMoveImage autoSize" data-imagetype="' + image.ImageType + '" data-index="' + image.ImageIndex + '" data-newindex="' + (image.ImageIndex + 1) + '" title="' + globalize.translate('sharedcomponents#MoveRight') + '"><i class="md-icon">chevron_right</i></button>';
} else { } else {
html += '<button is="paper-icon-button-light" class="autoSize" disabled title="' + globalize.translate('sharedcomponents#MoveRight') + '"><i class="md-icon">chevron_right</i></button>'; html += '<button type="button" is="paper-icon-button-light" class="autoSize" disabled title="' + globalize.translate('sharedcomponents#MoveRight') + '"><i class="md-icon">chevron_right</i></button>';
} }
} }
else { else {
if (imageProviders.length) { if (imageProviders.length) {
html += '<button is="paper-icon-button-light" data-imagetype="' + image.ImageType + '" class="btnSearchImages autoSize" title="' + globalize.translate('sharedcomponents#Search') + '"><i class="md-icon">search</i></button>'; html += '<button type="button" is="paper-icon-button-light" data-imagetype="' + image.ImageType + '" class="btnSearchImages autoSize" title="' + globalize.translate('sharedcomponents#Search') + '"><i class="md-icon">search</i></button>';
} }
} }
html += '<button is="paper-icon-button-light" data-imagetype="' + image.ImageType + '" data-index="' + (image.ImageIndex != null ? image.ImageIndex : "null") + '" class="btnDeleteImage autoSize" title="' + globalize.translate('sharedcomponents#Delete') + '"><i class="md-icon">delete</i></button>'; html += '<button type="button" is="paper-icon-button-light" data-imagetype="' + image.ImageType + '" data-index="' + (image.ImageIndex != null ? image.ImageIndex : "null") + '" class="btnDeleteImage autoSize" title="' + globalize.translate('sharedcomponents#Delete') + '"><i class="md-icon">delete</i></button>';
html += '</div>'; html += '</div>';
} }
@ -208,6 +208,11 @@
hasChanges = true; hasChanges = true;
reload(context, null, focusContext); reload(context, null, focusContext);
}, function() {
require(['alert'], function (alert) {
alert(globalize.translate('sharedcomponents#DefaultErrorMessage'));
});
}); });
} }
@ -233,25 +238,6 @@
elem.innerHTML = html; elem.innerHTML = html;
imageLoader.lazyChildren(elem); imageLoader.lazyChildren(elem);
addListeners(elem, 'btnSearchImages', 'click', function () {
showImageDownloader(page, this.getAttribute('data-imagetype'));
});
addListeners(elem, 'btnDeleteImage', 'click', function () {
var type = this.getAttribute('data-imagetype');
var index = this.getAttribute('data-index');
index = index == "null" ? null : parseInt(index);
deleteImage(page, currentItem.Id, type, index, apiClient, true);
});
addListeners(elem, 'btnMoveImage', 'click', function () {
var type = this.getAttribute('data-imagetype');
var index = this.getAttribute('data-index');
var newIndex = this.getAttribute('data-newindex');
moveImage(page, apiClient, currentItem.Id, type, index, newIndex, dom.parentWithClass(this, 'itemsContainer'));
});
} }
function renderStandardImages(page, apiClient, item, imageInfos, imageProviders) { function renderStandardImages(page, apiClient, item, imageInfos, imageProviders) {
@ -384,9 +370,9 @@
}); });
} }
function initEditor(page, options) { function initEditor(context, options) {
addListeners(page, 'btnOpenUploadMenu', 'click', function () { addListeners(context, 'btnOpenUploadMenu', 'click', function () {
var imageType = this.getAttribute('data-imagetype'); var imageType = this.getAttribute('data-imagetype');
require(['components/imageuploader/imageuploader'], function (imageUploader) { require(['components/imageuploader/imageuploader'], function (imageUploader) {
@ -400,7 +386,7 @@
if (hasChanged) { if (hasChanged) {
hasChanges = true; hasChanges = true;
reload(page); reload(context);
} }
}); });
}, function () { }, function () {
@ -410,12 +396,32 @@
}); });
}); });
addListeners(page, 'btnBrowseAllImages', 'click', function () { addListeners(context, 'btnSearchImages', 'click', function () {
showImageDownloader(page, this.getAttribute('data-imagetype') || 'Primary'); showImageDownloader(context, this.getAttribute('data-imagetype'));
}); });
addListeners(page, 'btnImageCard', 'click', function () { addListeners(context, 'btnBrowseAllImages', 'click', function () {
showActionSheet(page, this); showImageDownloader(context, this.getAttribute('data-imagetype') || 'Primary');
});
addListeners(context, 'btnImageCard', 'click', function () {
showActionSheet(context, this);
});
addListeners(context, 'btnDeleteImage', 'click', function () {
var type = this.getAttribute('data-imagetype');
var index = this.getAttribute('data-index');
index = index == "null" ? null : parseInt(index);
var apiClient = connectionManager.getApiClient(currentItem.ServerId);
deleteImage(context, currentItem.Id, type, index, apiClient, true);
});
addListeners(context, 'btnMoveImage', 'click', function () {
var type = this.getAttribute('data-imagetype');
var index = this.getAttribute('data-index');
var newIndex = this.getAttribute('data-newindex');
var apiClient = connectionManager.getApiClient(currentItem.ServerId);
moveImage(context, apiClient, currentItem.Id, type, index, newIndex, dom.parentWithClass(this, 'itemsContainer'));
}); });
} }

View File

@ -8,7 +8,7 @@ define(['apphost'], function (appHost) {
options = options || {}; options = options || {};
var name = item.EpisodeTitle || item.Name || ''; var name = (item.Type == 'Program' && item.IsSeries ? item.EpisodeTitle : item.Name) || '';
if (item.Type == "TvChannel") { if (item.Type == "TvChannel") {
@ -37,7 +37,7 @@ define(['apphost'], function (appHost) {
number += "-" + displayIndexNumber; number += "-" + displayIndexNumber;
} }
name = number + " - " + name; name = name ? (number + " - " + name) : number;
} }

View File

@ -46,6 +46,7 @@
display: inline-block; display: inline-block;
vertical-align: middle; vertical-align: middle;
flex-shrink: 0; flex-shrink: 0;
contain: layout style;
} }
.listViewDragHandle { .listViewDragHandle {
@ -128,7 +129,6 @@
background-color: #52B54B; background-color: #52B54B;
padding: .5em; padding: .5em;
color: #fff; color: #fff;
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2);
} }
.listItemProgressBar { .listItemProgressBar {
@ -191,6 +191,7 @@
.listItem, .listItemBody, .listItemMediaInfo { .listItem, .listItemBody, .listItemMediaInfo {
display: flex; display: flex;
contain: layout style;
} }
} }

View File

@ -257,7 +257,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan
textlines.push(item.SeriesName || '&nbsp;'); textlines.push(item.SeriesName || '&nbsp;');
} }
if (item.EpisodeTitle) { if (item.IsSeries) {
textlines.push(item.Name || '&nbsp;'); textlines.push(item.Name || '&nbsp;');
} }
} }
@ -267,7 +267,9 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan
if (options.showIndexNumber && item.IndexNumber != null) { if (options.showIndexNumber && item.IndexNumber != null) {
displayName = item.IndexNumber + ". " + displayName; displayName = item.IndexNumber + ". " + displayName;
} }
textlines.push(displayName); if (displayName) {
textlines.push(displayName);
}
if (item.ArtistItems && item.Type != 'MusicAlbum') { if (item.ArtistItems && item.Type != 'MusicAlbum') {
textlines.push(item.ArtistItems.map(function (a) { textlines.push(item.ArtistItems.map(function (a) {

View File

@ -4,7 +4,7 @@
${Edit} ${Edit}
</h3> </h3>
<div style="margin-left: auto; display: flex; align-items: center; justify-content: center;"> <div style="margin-left: auto; display: flex; align-items: center; justify-content: center;">
<button is="emby-button" type="button" class="btnHeaderSave button-accent-flat hide" tabindex="-1"> <button is="emby-button" type="button" class="btnHeaderSave button-accent-flat button-flat hide" tabindex="-1">
<i class="md-icon">check</i> <i class="md-icon">check</i>
<span>${Save}</span> <span>${Save}</span>
</button> </button>

View File

@ -20,8 +20,6 @@ define(['dialogHelper', 'layoutManager', 'scrollHelper', 'globalize', 'dom', 're
if (layoutManager.tv) { if (layoutManager.tv) {
dialogOptions.size = 'fullscreen'; dialogOptions.size = 'fullscreen';
} else {
//dialogOptions.size = 'mini';
} }
var dlg = dialogHelper.createDialog(dialogOptions); var dlg = dialogHelper.createDialog(dialogOptions);
@ -34,6 +32,7 @@ define(['dialogHelper', 'layoutManager', 'scrollHelper', 'globalize', 'dom', 're
scrollHelper.centerFocus.on(dlg.querySelector('.formDialogContent'), false); scrollHelper.centerFocus.on(dlg.querySelector('.formDialogContent'), false);
} else { } else {
dlg.querySelector('.dialogContentInner').classList.add('dialogContentInner-mini'); dlg.querySelector('.dialogContentInner').classList.add('dialogContentInner-mini');
dlg.classList.add('dialog-fullscreen-lowres');
} }
dlg.querySelector('.btnCancel').addEventListener('click', function (e) { dlg.querySelector('.btnCancel').addEventListener('click', function (e) {
@ -66,6 +65,8 @@ define(['dialogHelper', 'layoutManager', 'scrollHelper', 'globalize', 'dom', 're
return false; return false;
}); });
dlg.querySelector('.submitText').innerHTML = options.submitText || globalize.translate('sharedcomponents#ButtonOk');
dlg.style.minWidth = (Math.min(400, dom.getWindowSize().innerWidth - 50)) + 'px'; dlg.style.minWidth = (Math.min(400, dom.getWindowSize().innerWidth - 50)) + 'px';
return dialogHelper.open(dlg).then(function () { return dialogHelper.open(dlg).then(function () {

View File

@ -16,7 +16,7 @@
<div class="formDialogFooter"> <div class="formDialogFooter">
<button is="emby-button" type="submit" class="raised btnSubmit block formDialogFooterItem button-submit"> <button is="emby-button" type="submit" class="raised btnSubmit block formDialogFooterItem button-submit">
<span>${ButtonOk}</span> <span class="submitText"></span>
</button> </button>
</div> </div>

View File

@ -13,7 +13,7 @@
} }
.recordingDialog-itemName { .recordingDialog-itemName {
margin-top: .5em; margin-top: .7em;
} }
.recordingDialog-btnRecord { .recordingDialog-btnRecord {

View File

@ -126,7 +126,6 @@
if (layoutManager.tv) { if (layoutManager.tv) {
dialogOptions.size = 'fullscreen'; dialogOptions.size = 'fullscreen';
} else { } else {
dialogOptions.size = 'mini';
} }
var dlg = dialogHelper.createDialog(dialogOptions); var dlg = dialogHelper.createDialog(dialogOptions);
@ -136,6 +135,7 @@
if (!layoutManager.tv) { if (!layoutManager.tv) {
dlg.style['min-width'] = '20%'; dlg.style['min-width'] = '20%';
dlg.classList.add('dialog-fullscreen-lowres');
} }
var html = ''; var html = '';

View File

@ -15,7 +15,7 @@
<div style="flex-grow: 1;"> <div style="flex-grow: 1;">
<input is="emby-input" type="number" id="txtPrePaddingMinutes" pattern="[0-9]*" required="required" min="0" step="1" label="${LabelStartWhenPossible}" /> <input is="emby-input" type="number" id="txtPrePaddingMinutes" pattern="[0-9]*" required="required" min="0" step="1" label="${LabelStartWhenPossible}" />
</div> </div>
<div class="fieldDescription" style="margin-left:.5em;font-size:90%;margin-top:1.5em;"> <div class="fieldDescription" style="margin-left:.5em;font-size:90%;margin-top:1.3em;">
${MinutesBefore} ${MinutesBefore}
</div> </div>
</div> </div>
@ -25,7 +25,7 @@
<div style="flex-grow: 1;"> <div style="flex-grow: 1;">
<input is="emby-input" type="number" id="txtPostPaddingMinutes" pattern="[0-9]*" required="required" min="0" step="1" label="${LabelStopWhenPossible}" /> <input is="emby-input" type="number" id="txtPostPaddingMinutes" pattern="[0-9]*" required="required" min="0" step="1" label="${LabelStopWhenPossible}" />
</div> </div>
<div class="fieldDescription" style="margin-left:.5em;font-size:90%;margin-top:1.5em;"> <div class="fieldDescription" style="margin-left:.5em;font-size:90%;margin-top:1.3em;">
${MinutesAfter} ${MinutesAfter}
</div> </div>
</div> </div>

View File

@ -59,9 +59,14 @@
}); });
} }
function getDvrFeatureCode() {
return appHost.dvrFeatureCode || 'dvr';
}
function showSingleRecordingFields(context, programId, apiClient) { function showSingleRecordingFields(context, programId, apiClient) {
getRegistration(apiClient, programId, 'dvr').then(function (regInfo) { getRegistration(apiClient, programId, getDvrFeatureCode()).then(function (regInfo) {
if (regInfo.IsRegistered) { if (regInfo.IsRegistered) {
context.querySelector('.supporterContainer').classList.add('hide'); context.querySelector('.supporterContainer').classList.add('hide');
@ -77,7 +82,7 @@
function showRecordingFieldsContainer(context, programId, apiClient) { function showRecordingFieldsContainer(context, programId, apiClient) {
getRegistration(apiClient, programId, 'dvr').then(function (regInfo) { getRegistration(apiClient, programId, getDvrFeatureCode()).then(function (regInfo) {
if (regInfo.IsRegistered) { if (regInfo.IsRegistered) {
context.querySelector('.recordingFields').classList.remove('hide'); context.querySelector('.recordingFields').classList.remove('hide');
@ -209,16 +214,20 @@
if (isChecked) { if (isChecked) {
if (!this.TimerId && !this.SeriesTimerId) { if (!this.TimerId && !this.SeriesTimerId) {
loading.show();
recordingHelper.createRecording(apiClient, options.programId, false).then(function () { recordingHelper.createRecording(apiClient, options.programId, false).then(function () {
events.trigger(self, 'recordingchanged'); events.trigger(self, 'recordingchanged');
fetchData(self); fetchData(self);
loading.hide();
}); });
} }
} else { } else {
if (this.TimerId) { if (this.TimerId) {
loading.show();
recordingHelper.cancelTimer(apiClient, this.TimerId, true).then(function () { recordingHelper.cancelTimer(apiClient, this.TimerId, true).then(function () {
events.trigger(self, 'recordingchanged'); events.trigger(self, 'recordingchanged');
fetchData(self); fetchData(self);
loading.hide();
}); });
} }
} }
@ -304,5 +313,14 @@
return this.changed; return this.changed;
}; };
recordingEditor.prototype.refresh = function () {
fetchData(this);
};
recordingEditor.prototype.destroy = function () {
};
return recordingEditor; return recordingEditor;
}); });

View File

@ -9,10 +9,6 @@
font-size: 92%; font-size: 92%;
} }
.manageRecordingButton {
font-size: 90%;
}
.recordingIcon { .recordingIcon {
font-size: 1.3em !important; font-size: 1.3em !important;
} }
@ -58,7 +54,7 @@
</div> </div>
<div class="recordingFields hide"> <div class="recordingFields hide">
<div class="recordSeriesContainer hide" style="display: flex; align-items: center;margin-bottom:1em;"> <div class="recordSeriesContainer hide" style="display: flex; align-items: center;margin-bottom:.8em;">
<div> <div>
<button is="emby-button" type="button" class="raised button-cancel recordingButton seriesRecordingButton"> <button is="emby-button" type="button" class="raised button-cancel recordingButton seriesRecordingButton">
<i class="md-icon recordingIcon">&#xE062;</i> <i class="md-icon recordingIcon">&#xE062;</i>

View File

@ -48,7 +48,7 @@
<div style="flex-grow: 1;"> <div style="flex-grow: 1;">
<input is="emby-input" type="number" id="txtPrePaddingMinutes" pattern="[0-9]*" required="required" min="0" step="1" label="${LabelStartWhenPossible}" /> <input is="emby-input" type="number" id="txtPrePaddingMinutes" pattern="[0-9]*" required="required" min="0" step="1" label="${LabelStartWhenPossible}" />
</div> </div>
<div class="fieldDescription" style="margin-left:.5em;font-size:90%;margin-top:1.5em;"> <div class="fieldDescription" style="margin-left:.5em;font-size:90%;margin-top:1.3em;">
${MinutesBefore} ${MinutesBefore}
</div> </div>
</div> </div>
@ -58,7 +58,7 @@
<div style="flex-grow: 1;"> <div style="flex-grow: 1;">
<input is="emby-input" type="number" id="txtPostPaddingMinutes" pattern="[0-9]*" required="required" min="0" step="1" label="${LabelStopWhenPossible}" /> <input is="emby-input" type="number" id="txtPostPaddingMinutes" pattern="[0-9]*" required="required" min="0" step="1" label="${LabelStopWhenPossible}" />
</div> </div>
<div class="fieldDescription" style="margin-left:.5em;font-size:90%;margin-top:1.5em;"> <div class="fieldDescription" style="margin-left:.5em;font-size:90%;margin-top:1.3em;">
${MinutesAfter} ${MinutesAfter}
</div> </div>
</div> </div>

View File

@ -7,7 +7,7 @@
"LabelStopWhenPossible": "Stop when possible:", "LabelStopWhenPossible": "Stop when possible:",
"MinutesBefore": "minutes before", "MinutesBefore": "minutes before",
"SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.", "SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.",
"SkipEpisodesAlreadyInMyLibrary": "Skip recording episodes that are already in my library", "SkipEpisodesAlreadyInMyLibrary": "Skip episodes that are already in my library",
"MinutesAfter": "minutes after", "MinutesAfter": "minutes after",
"LabelKeepUpTo": "Keep up to:", "LabelKeepUpTo": "Keep up to:",
"AsManyAsPossible": "As many as possible", "AsManyAsPossible": "As many as possible",

View File

@ -7,7 +7,7 @@
"LabelStopWhenPossible": "Stop when possible:", "LabelStopWhenPossible": "Stop when possible:",
"MinutesBefore": "minutes before", "MinutesBefore": "minutes before",
"SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.", "SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.",
"SkipEpisodesAlreadyInMyLibrary": "Skip recording episodes that are already in my library", "SkipEpisodesAlreadyInMyLibrary": "Skip episodes that are already in my library",
"MinutesAfter": "minutes after", "MinutesAfter": "minutes after",
"LabelKeepUpTo": "Keep up to:", "LabelKeepUpTo": "Keep up to:",
"AsManyAsPossible": "As many as possible", "AsManyAsPossible": "As many as possible",

View File

@ -7,7 +7,7 @@
"LabelStopWhenPossible": "Stop when possible:", "LabelStopWhenPossible": "Stop when possible:",
"MinutesBefore": "minutes before", "MinutesBefore": "minutes before",
"SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.", "SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.",
"SkipEpisodesAlreadyInMyLibrary": "Skip recording episodes that are already in my library", "SkipEpisodesAlreadyInMyLibrary": "Skip episodes that are already in my library",
"MinutesAfter": "minutes after", "MinutesAfter": "minutes after",
"LabelKeepUpTo": "Keep up to:", "LabelKeepUpTo": "Keep up to:",
"AsManyAsPossible": "As many as possible", "AsManyAsPossible": "As many as possible",

View File

@ -7,7 +7,7 @@
"LabelStopWhenPossible": "Stop when possible:", "LabelStopWhenPossible": "Stop when possible:",
"MinutesBefore": "minutes before", "MinutesBefore": "minutes before",
"SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.", "SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.",
"SkipEpisodesAlreadyInMyLibrary": "Skip recording episodes that are already in my library", "SkipEpisodesAlreadyInMyLibrary": "Skip episodes that are already in my library",
"MinutesAfter": "minutes after", "MinutesAfter": "minutes after",
"LabelKeepUpTo": "Keep up to:", "LabelKeepUpTo": "Keep up to:",
"AsManyAsPossible": "As many as possible", "AsManyAsPossible": "As many as possible",

View File

@ -7,7 +7,7 @@
"LabelStopWhenPossible": "Stop when possible:", "LabelStopWhenPossible": "Stop when possible:",
"MinutesBefore": "minutes before", "MinutesBefore": "minutes before",
"SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.", "SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.",
"SkipEpisodesAlreadyInMyLibrary": "Skip recording episodes that are already in my library", "SkipEpisodesAlreadyInMyLibrary": "Skip episodes that are already in my library",
"MinutesAfter": "minutes after", "MinutesAfter": "minutes after",
"LabelKeepUpTo": "Keep up to:", "LabelKeepUpTo": "Keep up to:",
"AsManyAsPossible": "As many as possible", "AsManyAsPossible": "As many as possible",

View File

@ -1,16 +1,16 @@
{ {
"LabelRecord": "Record:", "LabelRecord": "Aufnahme:",
"AllChannels": "All channels", "AllChannels": "Alle Kan\u00e4le:",
"NewEpisodesOnly": "New episodes only", "NewEpisodesOnly": "Nur neue Episoden",
"AllEpisodes": "All episodes", "AllEpisodes": "Alle Episoden",
"LabelStartWhenPossible": "Start when possible:", "LabelStartWhenPossible": "Starte wenn m\u00f6glich:",
"LabelStopWhenPossible": "Stop when possible:", "LabelStopWhenPossible": "Stoppe wenn m\u00f6glich",
"MinutesBefore": "minutes before", "MinutesBefore": "Minuten vor",
"SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.", "SkipEpisodesAlreadyInMyLibraryHelp": "Episoden werden mittels Staffel- und Episodennummer verglichen, wenn verf\u00fcgbar.",
"SkipEpisodesAlreadyInMyLibrary": "Skip recording episodes that are already in my library", "SkipEpisodesAlreadyInMyLibrary": "\u00dcberspringe Aufnahmen von Episoden, die schon in der Bibliothek verf\u00fcgbar sind.",
"MinutesAfter": "minutes after", "MinutesAfter": "Minuten nach",
"LabelKeepUpTo": "Keep up to:", "LabelKeepUpTo": "Fortf\u00fchren:",
"AsManyAsPossible": "As many as possible", "AsManyAsPossible": "So viele wie m\u00f6glich",
"ValueSpecialEpisodeName": "Special - {0}", "ValueSpecialEpisodeName": "Special - {0}",
"Share": "Teilen", "Share": "Teilen",
"Add": "Hinzuf\u00fcgen", "Add": "Hinzuf\u00fcgen",

View File

@ -7,7 +7,7 @@
"LabelStopWhenPossible": "Stop when possible:", "LabelStopWhenPossible": "Stop when possible:",
"MinutesBefore": "minutes before", "MinutesBefore": "minutes before",
"SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.", "SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.",
"SkipEpisodesAlreadyInMyLibrary": "Skip recording episodes that are already in my library", "SkipEpisodesAlreadyInMyLibrary": "Skip episodes that are already in my library",
"MinutesAfter": "minutes after", "MinutesAfter": "minutes after",
"LabelKeepUpTo": "Keep up to:", "LabelKeepUpTo": "Keep up to:",
"AsManyAsPossible": "As many as possible", "AsManyAsPossible": "As many as possible",

View File

@ -7,7 +7,7 @@
"LabelStopWhenPossible": "Stop when possible:", "LabelStopWhenPossible": "Stop when possible:",
"MinutesBefore": "minutes before", "MinutesBefore": "minutes before",
"SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.", "SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.",
"SkipEpisodesAlreadyInMyLibrary": "Skip recording episodes that are already in my library", "SkipEpisodesAlreadyInMyLibrary": "Skip episodes that are already in my library",
"MinutesAfter": "minutes after", "MinutesAfter": "minutes after",
"LabelKeepUpTo": "Keep up to:", "LabelKeepUpTo": "Keep up to:",
"AsManyAsPossible": "As many as possible", "AsManyAsPossible": "As many as possible",

View File

@ -303,5 +303,6 @@
"SkipEpisodesAlreadyInMyLibrary": "Skip episodes that are already in my library", "SkipEpisodesAlreadyInMyLibrary": "Skip episodes that are already in my library",
"SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.", "SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.",
"LabelKeepUpTo": "Keep up to:", "LabelKeepUpTo": "Keep up to:",
"AsManyAsPossible": "As many as possible" "AsManyAsPossible": "As many as possible",
"DefaultErrorMessage": "There was an error processing the request. Please try again later."
} }

View File

@ -7,7 +7,7 @@
"LabelStopWhenPossible": "Stop when possible:", "LabelStopWhenPossible": "Stop when possible:",
"MinutesBefore": "minutes before", "MinutesBefore": "minutes before",
"SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.", "SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.",
"SkipEpisodesAlreadyInMyLibrary": "Skip recording episodes that are already in my library", "SkipEpisodesAlreadyInMyLibrary": "Skip episodes that are already in my library",
"MinutesAfter": "minutes after", "MinutesAfter": "minutes after",
"LabelKeepUpTo": "Keep up to:", "LabelKeepUpTo": "Keep up to:",
"AsManyAsPossible": "As many as possible", "AsManyAsPossible": "As many as possible",

View File

@ -7,7 +7,7 @@
"LabelStopWhenPossible": "Stop when possible:", "LabelStopWhenPossible": "Stop when possible:",
"MinutesBefore": "minutes before", "MinutesBefore": "minutes before",
"SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.", "SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.",
"SkipEpisodesAlreadyInMyLibrary": "Skip recording episodes that are already in my library", "SkipEpisodesAlreadyInMyLibrary": "Skip episodes that are already in my library",
"MinutesAfter": "minutes after", "MinutesAfter": "minutes after",
"LabelKeepUpTo": "Keep up to:", "LabelKeepUpTo": "Keep up to:",
"AsManyAsPossible": "As many as possible", "AsManyAsPossible": "As many as possible",

View File

@ -7,7 +7,7 @@
"LabelStopWhenPossible": "Stop when possible:", "LabelStopWhenPossible": "Stop when possible:",
"MinutesBefore": "minutes before", "MinutesBefore": "minutes before",
"SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.", "SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.",
"SkipEpisodesAlreadyInMyLibrary": "Skip recording episodes that are already in my library", "SkipEpisodesAlreadyInMyLibrary": "Skip episodes that are already in my library",
"MinutesAfter": "minutes after", "MinutesAfter": "minutes after",
"LabelKeepUpTo": "Keep up to:", "LabelKeepUpTo": "Keep up to:",
"AsManyAsPossible": "As many as possible", "AsManyAsPossible": "As many as possible",

View File

@ -7,7 +7,7 @@
"LabelStopWhenPossible": "Stop when possible:", "LabelStopWhenPossible": "Stop when possible:",
"MinutesBefore": "minutes before", "MinutesBefore": "minutes before",
"SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.", "SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.",
"SkipEpisodesAlreadyInMyLibrary": "Skip recording episodes that are already in my library", "SkipEpisodesAlreadyInMyLibrary": "Skip episodes that are already in my library",
"MinutesAfter": "minutes after", "MinutesAfter": "minutes after",
"LabelKeepUpTo": "Keep up to:", "LabelKeepUpTo": "Keep up to:",
"AsManyAsPossible": "As many as possible", "AsManyAsPossible": "As many as possible",

View File

@ -7,7 +7,7 @@
"LabelStopWhenPossible": "Stop when possible:", "LabelStopWhenPossible": "Stop when possible:",
"MinutesBefore": "minutes before", "MinutesBefore": "minutes before",
"SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.", "SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.",
"SkipEpisodesAlreadyInMyLibrary": "Skip recording episodes that are already in my library", "SkipEpisodesAlreadyInMyLibrary": "Skip episodes that are already in my library",
"MinutesAfter": "minutes after", "MinutesAfter": "minutes after",
"LabelKeepUpTo": "Keep up to:", "LabelKeepUpTo": "Keep up to:",
"AsManyAsPossible": "As many as possible", "AsManyAsPossible": "As many as possible",

View File

@ -7,7 +7,7 @@
"LabelStopWhenPossible": "Stop when possible:", "LabelStopWhenPossible": "Stop when possible:",
"MinutesBefore": "minutes before", "MinutesBefore": "minutes before",
"SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.", "SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.",
"SkipEpisodesAlreadyInMyLibrary": "Skip recording episodes that are already in my library", "SkipEpisodesAlreadyInMyLibrary": "Skip episodes that are already in my library",
"MinutesAfter": "minutes after", "MinutesAfter": "minutes after",
"LabelKeepUpTo": "Keep up to:", "LabelKeepUpTo": "Keep up to:",
"AsManyAsPossible": "As many as possible", "AsManyAsPossible": "As many as possible",

View File

@ -7,7 +7,7 @@
"LabelStopWhenPossible": "Stop when possible:", "LabelStopWhenPossible": "Stop when possible:",
"MinutesBefore": "minutes before", "MinutesBefore": "minutes before",
"SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.", "SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.",
"SkipEpisodesAlreadyInMyLibrary": "Skip recording episodes that are already in my library", "SkipEpisodesAlreadyInMyLibrary": "Skip episodes that are already in my library",
"MinutesAfter": "minutes after", "MinutesAfter": "minutes after",
"LabelKeepUpTo": "Keep up to:", "LabelKeepUpTo": "Keep up to:",
"AsManyAsPossible": "As many as possible", "AsManyAsPossible": "As many as possible",

View File

@ -7,7 +7,7 @@
"LabelStopWhenPossible": "Stop when possible:", "LabelStopWhenPossible": "Stop when possible:",
"MinutesBefore": "minutes before", "MinutesBefore": "minutes before",
"SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.", "SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.",
"SkipEpisodesAlreadyInMyLibrary": "Skip recording episodes that are already in my library", "SkipEpisodesAlreadyInMyLibrary": "Skip episodes that are already in my library",
"MinutesAfter": "minutes after", "MinutesAfter": "minutes after",
"LabelKeepUpTo": "Keep up to:", "LabelKeepUpTo": "Keep up to:",
"AsManyAsPossible": "As many as possible", "AsManyAsPossible": "As many as possible",

View File

@ -7,7 +7,7 @@
"LabelStopWhenPossible": "Stop when possible:", "LabelStopWhenPossible": "Stop when possible:",
"MinutesBefore": "minutes before", "MinutesBefore": "minutes before",
"SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.", "SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.",
"SkipEpisodesAlreadyInMyLibrary": "Skip recording episodes that are already in my library", "SkipEpisodesAlreadyInMyLibrary": "Skip episodes that are already in my library",
"MinutesAfter": "minutes after", "MinutesAfter": "minutes after",
"LabelKeepUpTo": "Keep up to:", "LabelKeepUpTo": "Keep up to:",
"AsManyAsPossible": "As many as possible", "AsManyAsPossible": "As many as possible",

View File

@ -7,7 +7,7 @@
"LabelStopWhenPossible": "Stop when possible:", "LabelStopWhenPossible": "Stop when possible:",
"MinutesBefore": "minutes before", "MinutesBefore": "minutes before",
"SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.", "SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.",
"SkipEpisodesAlreadyInMyLibrary": "Skip recording episodes that are already in my library", "SkipEpisodesAlreadyInMyLibrary": "Skip episodes that are already in my library",
"MinutesAfter": "minutes after", "MinutesAfter": "minutes after",
"LabelKeepUpTo": "Keep up to:", "LabelKeepUpTo": "Keep up to:",
"AsManyAsPossible": "As many as possible", "AsManyAsPossible": "As many as possible",

View File

@ -7,7 +7,7 @@
"LabelStopWhenPossible": "Stop when possible:", "LabelStopWhenPossible": "Stop when possible:",
"MinutesBefore": "minutes before", "MinutesBefore": "minutes before",
"SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.", "SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.",
"SkipEpisodesAlreadyInMyLibrary": "Skip recording episodes that are already in my library", "SkipEpisodesAlreadyInMyLibrary": "Skip episodes that are already in my library",
"MinutesAfter": "minutes after", "MinutesAfter": "minutes after",
"LabelKeepUpTo": "Keep up to:", "LabelKeepUpTo": "Keep up to:",
"AsManyAsPossible": "As many as possible", "AsManyAsPossible": "As many as possible",

View File

@ -7,7 +7,7 @@
"LabelStopWhenPossible": "Stop when possible:", "LabelStopWhenPossible": "Stop when possible:",
"MinutesBefore": "minutes before", "MinutesBefore": "minutes before",
"SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.", "SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.",
"SkipEpisodesAlreadyInMyLibrary": "Skip recording episodes that are already in my library", "SkipEpisodesAlreadyInMyLibrary": "Skip episodes that are already in my library",
"MinutesAfter": "minutes after", "MinutesAfter": "minutes after",
"LabelKeepUpTo": "Keep up to:", "LabelKeepUpTo": "Keep up to:",
"AsManyAsPossible": "As many as possible", "AsManyAsPossible": "As many as possible",

View File

@ -1,16 +1,16 @@
{ {
"LabelRecord": "Record:", "LabelRecord": "\u0416\u0430\u0437\u0443:",
"AllChannels": "All channels", "AllChannels": "\u0411\u0430\u0440\u043b\u044b\u049b \u0430\u0440\u043d\u0430\u043b\u0430\u0440",
"NewEpisodesOnly": "New episodes only", "NewEpisodesOnly": "\u0422\u0435\u043a \u049b\u0430\u043d\u0430 \u0436\u0430\u04a3\u0430 \u0431\u04e9\u043b\u0456\u043c\u0434\u0435\u0440\u0434\u0456",
"AllEpisodes": "All episodes", "AllEpisodes": "\u0411\u0430\u0440\u043b\u044b\u049b \u0431\u04e9\u043b\u0456\u043c\u0434\u0435\u0440",
"LabelStartWhenPossible": "Start when possible:", "LabelStartWhenPossible": "\u041c\u04af\u043c\u043a\u0456\u043d\u0434\u0456\u043a \u0431\u043e\u043b\u0493\u0430\u043d\u0434\u0430 \u0431\u0430\u0441\u0442\u0430\u0443:",
"LabelStopWhenPossible": "Stop when possible:", "LabelStopWhenPossible": "\u041c\u04af\u043c\u043a\u0456\u043d\u0434\u0456\u043a \u0431\u043e\u043b\u0493\u0430\u043d\u0434\u0430 \u0442\u043e\u049b\u0442\u0430\u0442\u0443:",
"MinutesBefore": "minutes before", "MinutesBefore": "\u043c\u0438\u043d\u0443\u0442 \u0430\u043b\u0434\u044b\u043d\u0434\u0430",
"SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.", "SkipEpisodesAlreadyInMyLibraryHelp": "\u049a\u043e\u043b \u0436\u0435\u0442\u0456\u043c\u0434\u0456 \u0431\u043e\u043b\u0493\u0430\u043d\u0434\u0430, \u0431\u04e9\u043b\u0456\u043c\u0434\u0435\u0440 \u043c\u0430\u0443\u0441\u044b\u043c \u0436\u04d9\u043d\u0435 \u0431\u04e9\u043b\u0456\u043c \u043d\u04e9\u043c\u0456\u0440\u043b\u0435\u0440\u0456 \u0431\u043e\u0439\u044b\u043d\u0448\u0430 \u0441\u0430\u043b\u044b\u0441\u0442\u044b\u0440\u044b\u043b\u0430\u0434\u044b.",
"SkipEpisodesAlreadyInMyLibrary": "Skip recording episodes that are already in my library", "SkipEpisodesAlreadyInMyLibrary": "\u041c\u0435\u043d\u0456\u04a3 \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u043c\u0434\u0430 \u0431\u0430\u0440 \u0431\u04e9\u043b\u0456\u043c\u0434\u0435\u0440\u0434\u0456 \u04e9\u0442\u043a\u0456\u0437\u0456\u043f \u0436\u0456\u0431\u0435\u0440\u0443",
"MinutesAfter": "minutes after", "MinutesAfter": "\u043c\u0438\u043d\u0443\u0442 \u0441\u043e\u04a3\u044b\u04a3\u0434\u0430",
"LabelKeepUpTo": "Keep up to:", "LabelKeepUpTo": "\u041e\u0441\u044b\u0493\u0430\u043d \u0434\u0435\u0439\u0456\u043d \u04b1\u0441\u0442\u0430\u0443:",
"AsManyAsPossible": "As many as possible", "AsManyAsPossible": "\u041c\u04af\u043c\u043a\u0456\u043d\u0434\u0456\u0433\u0456\u043d\u0448\u0435 \u043a\u04e9\u043f",
"ValueSpecialEpisodeName": "\u0410\u0440\u043d\u0430\u0439\u044b - {0}", "ValueSpecialEpisodeName": "\u0410\u0440\u043d\u0430\u0439\u044b - {0}",
"Share": "\u041e\u0440\u0442\u0430\u049b\u0442\u0430\u0441\u0443", "Share": "\u041e\u0440\u0442\u0430\u049b\u0442\u0430\u0441\u0443",
"Add": "\u04ae\u0441\u0442\u0435\u0443", "Add": "\u04ae\u0441\u0442\u0435\u0443",

View File

@ -7,7 +7,7 @@
"LabelStopWhenPossible": "Stop when possible:", "LabelStopWhenPossible": "Stop when possible:",
"MinutesBefore": "minutes before", "MinutesBefore": "minutes before",
"SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.", "SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.",
"SkipEpisodesAlreadyInMyLibrary": "Skip recording episodes that are already in my library", "SkipEpisodesAlreadyInMyLibrary": "Skip episodes that are already in my library",
"MinutesAfter": "minutes after", "MinutesAfter": "minutes after",
"LabelKeepUpTo": "Keep up to:", "LabelKeepUpTo": "Keep up to:",
"AsManyAsPossible": "As many as possible", "AsManyAsPossible": "As many as possible",

View File

@ -7,7 +7,7 @@
"LabelStopWhenPossible": "Stop when possible:", "LabelStopWhenPossible": "Stop when possible:",
"MinutesBefore": "minutes before", "MinutesBefore": "minutes before",
"SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.", "SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.",
"SkipEpisodesAlreadyInMyLibrary": "Skip recording episodes that are already in my library", "SkipEpisodesAlreadyInMyLibrary": "Skip episodes that are already in my library",
"MinutesAfter": "minutes after", "MinutesAfter": "minutes after",
"LabelKeepUpTo": "Keep up to:", "LabelKeepUpTo": "Keep up to:",
"AsManyAsPossible": "As many as possible", "AsManyAsPossible": "As many as possible",

View File

@ -7,7 +7,7 @@
"LabelStopWhenPossible": "Stop when possible:", "LabelStopWhenPossible": "Stop when possible:",
"MinutesBefore": "minutes before", "MinutesBefore": "minutes before",
"SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.", "SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.",
"SkipEpisodesAlreadyInMyLibrary": "Skip recording episodes that are already in my library", "SkipEpisodesAlreadyInMyLibrary": "Skip episodes that are already in my library",
"MinutesAfter": "minutes after", "MinutesAfter": "minutes after",
"LabelKeepUpTo": "Keep up to:", "LabelKeepUpTo": "Keep up to:",
"AsManyAsPossible": "As many as possible", "AsManyAsPossible": "As many as possible",

View File

@ -7,7 +7,7 @@
"LabelStopWhenPossible": "Stop when possible:", "LabelStopWhenPossible": "Stop when possible:",
"MinutesBefore": "minutes before", "MinutesBefore": "minutes before",
"SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.", "SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.",
"SkipEpisodesAlreadyInMyLibrary": "Skip recording episodes that are already in my library", "SkipEpisodesAlreadyInMyLibrary": "Skip episodes that are already in my library",
"MinutesAfter": "minutes after", "MinutesAfter": "minutes after",
"LabelKeepUpTo": "Keep up to:", "LabelKeepUpTo": "Keep up to:",
"AsManyAsPossible": "As many as possible", "AsManyAsPossible": "As many as possible",

View File

@ -7,7 +7,7 @@
"LabelStopWhenPossible": "Stop when possible:", "LabelStopWhenPossible": "Stop when possible:",
"MinutesBefore": "minutes before", "MinutesBefore": "minutes before",
"SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.", "SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.",
"SkipEpisodesAlreadyInMyLibrary": "Skip recording episodes that are already in my library", "SkipEpisodesAlreadyInMyLibrary": "Skip episodes that are already in my library",
"MinutesAfter": "minutes after", "MinutesAfter": "minutes after",
"LabelKeepUpTo": "Keep up to:", "LabelKeepUpTo": "Keep up to:",
"AsManyAsPossible": "As many as possible", "AsManyAsPossible": "As many as possible",

View File

@ -5,12 +5,12 @@
"AllEpisodes": "Todos os epis\u00f3dios", "AllEpisodes": "Todos os epis\u00f3dios",
"LabelStartWhenPossible": "Iniciar quando poss\u00edvel:", "LabelStartWhenPossible": "Iniciar quando poss\u00edvel:",
"LabelStopWhenPossible": "Parar quando poss\u00edvel:", "LabelStopWhenPossible": "Parar quando poss\u00edvel:",
"MinutesBefore": "minutes before", "MinutesBefore": "minutos antes de",
"SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.", "SkipEpisodesAlreadyInMyLibraryHelp": "Epis\u00f3dios ser\u00e3o comparados utilizando temporada e n\u00fameros de epis\u00f3dios, quando dispon\u00edveis.",
"SkipEpisodesAlreadyInMyLibrary": "Skip recording episodes that are already in my library", "SkipEpisodesAlreadyInMyLibrary": "Pular grava\u00e7\u00e3o de epis\u00f3dios que j\u00e1 estiverem em minha biblioteca",
"MinutesAfter": "minutes after", "MinutesAfter": "minutos ap\u00f3s",
"LabelKeepUpTo": "Keep up to:", "LabelKeepUpTo": "Manter at\u00e9:",
"AsManyAsPossible": "As many as possible", "AsManyAsPossible": "Quantos forem poss\u00edveis",
"ValueSpecialEpisodeName": "Especial - {0}", "ValueSpecialEpisodeName": "Especial - {0}",
"Share": "Compartilhar", "Share": "Compartilhar",
"Add": "Adicionar", "Add": "Adicionar",

View File

@ -7,7 +7,7 @@
"LabelStopWhenPossible": "Stop when possible:", "LabelStopWhenPossible": "Stop when possible:",
"MinutesBefore": "minutes before", "MinutesBefore": "minutes before",
"SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.", "SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.",
"SkipEpisodesAlreadyInMyLibrary": "Skip recording episodes that are already in my library", "SkipEpisodesAlreadyInMyLibrary": "Skip episodes that are already in my library",
"MinutesAfter": "minutes after", "MinutesAfter": "minutes after",
"LabelKeepUpTo": "Keep up to:", "LabelKeepUpTo": "Keep up to:",
"AsManyAsPossible": "As many as possible", "AsManyAsPossible": "As many as possible",

View File

@ -7,7 +7,7 @@
"LabelStopWhenPossible": "Stop when possible:", "LabelStopWhenPossible": "Stop when possible:",
"MinutesBefore": "minutes before", "MinutesBefore": "minutes before",
"SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.", "SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.",
"SkipEpisodesAlreadyInMyLibrary": "Skip recording episodes that are already in my library", "SkipEpisodesAlreadyInMyLibrary": "Skip episodes that are already in my library",
"MinutesAfter": "minutes after", "MinutesAfter": "minutes after",
"LabelKeepUpTo": "Keep up to:", "LabelKeepUpTo": "Keep up to:",
"AsManyAsPossible": "As many as possible", "AsManyAsPossible": "As many as possible",

View File

@ -1,16 +1,16 @@
{ {
"LabelRecord": "Record:", "LabelRecord": "\u0417\u0430\u043f\u0438\u0441\u044c:",
"AllChannels": "All channels", "AllChannels": "\u0412\u0441\u0435 \u043a\u0430\u043d\u0430\u043b\u044b",
"NewEpisodesOnly": "New episodes only", "NewEpisodesOnly": "\u0422\u043e\u043b\u044c\u043a\u043e \u043d\u043e\u0432\u044b\u0435 \u044d\u043f\u0438\u0437\u043e\u0434\u044b",
"AllEpisodes": "All episodes", "AllEpisodes": "\u0412\u0441\u0435 \u044d\u043f\u0438\u0437\u043e\u0434\u044b",
"LabelStartWhenPossible": "Start when possible:", "LabelStartWhenPossible": "\u041d\u0430\u0447\u0430\u0442\u044c \u043a\u043e\u0433\u0434\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e:",
"LabelStopWhenPossible": "Stop when possible:", "LabelStopWhenPossible": "\u041e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043a\u043e\u0433\u0434\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e:",
"MinutesBefore": "minutes before", "MinutesBefore": "\u043c\u0438\u043d\u0443\u0442\u044b \u0434\u043e",
"SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.", "SkipEpisodesAlreadyInMyLibraryHelp": "\u042d\u043f\u0438\u0437\u043e\u0434\u044b \u0431\u0443\u0434\u0443\u0442 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043d\u043e\u043c\u0435\u0440\u043e\u0432 \u0441\u0435\u0437\u043e\u043d\u043e\u0432 \u0438 \u044d\u043f\u0438\u0437\u043e\u0434\u043e\u0432, \u043a\u043e\u0433\u0434\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e.",
"SkipEpisodesAlreadyInMyLibrary": "Skip recording episodes that are already in my library", "SkipEpisodesAlreadyInMyLibrary": "\u041f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u044d\u043f\u0438\u0437\u043e\u0434\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0436\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u043c\u043e\u0435\u0439 \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0435",
"MinutesAfter": "minutes after", "MinutesAfter": "\u043c\u0438\u043d\u0443\u0442\u044b \u043f\u043e\u0441\u043b\u0435",
"LabelKeepUpTo": "Keep up to:", "LabelKeepUpTo": "\u0421\u0431\u0435\u0440\u0435\u0433\u0430\u0442\u044c \u0434\u043e:",
"AsManyAsPossible": "As many as possible", "AsManyAsPossible": "\u041a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435",
"ValueSpecialEpisodeName": "\u0421\u043f\u0435\u0446\u044d\u043f\u0438\u0437\u043e\u0434 - {0}", "ValueSpecialEpisodeName": "\u0421\u043f\u0435\u0446\u044d\u043f\u0438\u0437\u043e\u0434 - {0}",
"Share": "\u041f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f", "Share": "\u041f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f",
"Add": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c", "Add": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c",

View File

@ -7,7 +7,7 @@
"LabelStopWhenPossible": "Stop when possible:", "LabelStopWhenPossible": "Stop when possible:",
"MinutesBefore": "minutes before", "MinutesBefore": "minutes before",
"SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.", "SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.",
"SkipEpisodesAlreadyInMyLibrary": "Skip recording episodes that are already in my library", "SkipEpisodesAlreadyInMyLibrary": "Skip episodes that are already in my library",
"MinutesAfter": "minutes after", "MinutesAfter": "minutes after",
"LabelKeepUpTo": "Keep up to:", "LabelKeepUpTo": "Keep up to:",
"AsManyAsPossible": "As many as possible", "AsManyAsPossible": "As many as possible",

View File

@ -7,7 +7,7 @@
"LabelStopWhenPossible": "Stop when possible:", "LabelStopWhenPossible": "Stop when possible:",
"MinutesBefore": "minutes before", "MinutesBefore": "minutes before",
"SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.", "SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.",
"SkipEpisodesAlreadyInMyLibrary": "Skip recording episodes that are already in my library", "SkipEpisodesAlreadyInMyLibrary": "Skip episodes that are already in my library",
"MinutesAfter": "minutes after", "MinutesAfter": "minutes after",
"LabelKeepUpTo": "Keep up to:", "LabelKeepUpTo": "Keep up to:",
"AsManyAsPossible": "As many as possible", "AsManyAsPossible": "As many as possible",

View File

@ -7,7 +7,7 @@
"LabelStopWhenPossible": "Stop when possible:", "LabelStopWhenPossible": "Stop when possible:",
"MinutesBefore": "minutes before", "MinutesBefore": "minutes before",
"SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.", "SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.",
"SkipEpisodesAlreadyInMyLibrary": "Skip recording episodes that are already in my library", "SkipEpisodesAlreadyInMyLibrary": "Skip episodes that are already in my library",
"MinutesAfter": "minutes after", "MinutesAfter": "minutes after",
"LabelKeepUpTo": "Keep up to:", "LabelKeepUpTo": "Keep up to:",
"AsManyAsPossible": "As many as possible", "AsManyAsPossible": "As many as possible",

View File

@ -7,7 +7,7 @@
"LabelStopWhenPossible": "Stop when possible:", "LabelStopWhenPossible": "Stop when possible:",
"MinutesBefore": "minutes before", "MinutesBefore": "minutes before",
"SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.", "SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.",
"SkipEpisodesAlreadyInMyLibrary": "Skip recording episodes that are already in my library", "SkipEpisodesAlreadyInMyLibrary": "Skip episodes that are already in my library",
"MinutesAfter": "minutes after", "MinutesAfter": "minutes after",
"LabelKeepUpTo": "Keep up to:", "LabelKeepUpTo": "Keep up to:",
"AsManyAsPossible": "As many as possible", "AsManyAsPossible": "As many as possible",

View File

@ -7,7 +7,7 @@
"LabelStopWhenPossible": "Stop when possible:", "LabelStopWhenPossible": "Stop when possible:",
"MinutesBefore": "minutes before", "MinutesBefore": "minutes before",
"SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.", "SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.",
"SkipEpisodesAlreadyInMyLibrary": "Skip recording episodes that are already in my library", "SkipEpisodesAlreadyInMyLibrary": "Skip episodes that are already in my library",
"MinutesAfter": "minutes after", "MinutesAfter": "minutes after",
"LabelKeepUpTo": "Keep up to:", "LabelKeepUpTo": "Keep up to:",
"AsManyAsPossible": "As many as possible", "AsManyAsPossible": "As many as possible",

View File

@ -7,7 +7,7 @@
"LabelStopWhenPossible": "Stop when possible:", "LabelStopWhenPossible": "Stop when possible:",
"MinutesBefore": "minutes before", "MinutesBefore": "minutes before",
"SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.", "SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.",
"SkipEpisodesAlreadyInMyLibrary": "Skip recording episodes that are already in my library", "SkipEpisodesAlreadyInMyLibrary": "Skip episodes that are already in my library",
"MinutesAfter": "minutes after", "MinutesAfter": "minutes after",
"LabelKeepUpTo": "Keep up to:", "LabelKeepUpTo": "Keep up to:",
"AsManyAsPossible": "As many as possible", "AsManyAsPossible": "As many as possible",

View File

@ -7,7 +7,7 @@
"LabelStopWhenPossible": "Stop when possible:", "LabelStopWhenPossible": "Stop when possible:",
"MinutesBefore": "minutes before", "MinutesBefore": "minutes before",
"SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.", "SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.",
"SkipEpisodesAlreadyInMyLibrary": "Skip recording episodes that are already in my library", "SkipEpisodesAlreadyInMyLibrary": "Skip episodes that are already in my library",
"MinutesAfter": "minutes after", "MinutesAfter": "minutes after",
"LabelKeepUpTo": "Keep up to:", "LabelKeepUpTo": "Keep up to:",
"AsManyAsPossible": "As many as possible", "AsManyAsPossible": "As many as possible",

View File

@ -7,7 +7,7 @@
"LabelStopWhenPossible": "Stop when possible:", "LabelStopWhenPossible": "Stop when possible:",
"MinutesBefore": "minutes before", "MinutesBefore": "minutes before",
"SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.", "SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.",
"SkipEpisodesAlreadyInMyLibrary": "Skip recording episodes that are already in my library", "SkipEpisodesAlreadyInMyLibrary": "Skip episodes that are already in my library",
"MinutesAfter": "minutes after", "MinutesAfter": "minutes after",
"LabelKeepUpTo": "Keep up to:", "LabelKeepUpTo": "Keep up to:",
"AsManyAsPossible": "As many as possible", "AsManyAsPossible": "As many as possible",

View File

@ -7,7 +7,7 @@
"LabelStopWhenPossible": "Stop when possible:", "LabelStopWhenPossible": "Stop when possible:",
"MinutesBefore": "minutes before", "MinutesBefore": "minutes before",
"SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.", "SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.",
"SkipEpisodesAlreadyInMyLibrary": "Skip recording episodes that are already in my library", "SkipEpisodesAlreadyInMyLibrary": "Skip episodes that are already in my library",
"MinutesAfter": "minutes after", "MinutesAfter": "minutes after",
"LabelKeepUpTo": "Keep up to:", "LabelKeepUpTo": "Keep up to:",
"AsManyAsPossible": "As many as possible", "AsManyAsPossible": "As many as possible",

View File

@ -12,12 +12,12 @@
"library" "library"
], ],
"homepage": "https://github.com/jquery/jquery-dist", "homepage": "https://github.com/jquery/jquery-dist",
"version": "3.1.0", "version": "3.1.1",
"_release": "3.1.0", "_release": "3.1.1",
"_resolution": { "_resolution": {
"type": "version", "type": "version",
"tag": "3.1.0", "tag": "3.1.1",
"commit": "6f02bc382c0529d3b4f68f6b2ad21876642dbbfe" "commit": "1b30f3ad466ebf2714d47eda34dbd7fdf6849fe3"
}, },
"_source": "https://github.com/jquery/jquery-dist.git", "_source": "https://github.com/jquery/jquery-dist.git",
"_target": ">=1.9.1", "_target": ">=1.9.1",

View File

@ -77,7 +77,7 @@ Jared Grippe <jared@deadlyicon.com>
Sylvester Keil <sylvester@keil.or.at> Sylvester Keil <sylvester@keil.or.at>
Brandon Sterne <bsterne@mozilla.com> Brandon Sterne <bsterne@mozilla.com>
Mathias Bynens <mathias@qiwi.be> Mathias Bynens <mathias@qiwi.be>
Timmy Willison <timmywillisn@gmail.com> Timmy Willison <4timmywil@gmail.com>
Corey Frang <gnarf37@gmail.com> Corey Frang <gnarf37@gmail.com>
Digitalxero <digitalxero> Digitalxero <digitalxero>
Anton Kovalyov <anton@kovalyov.net> Anton Kovalyov <anton@kovalyov.net>

View File

@ -1,5 +1,5 @@
/* global Symbol */ /* global Symbol */
// Defining this global in .eslintrc would create a danger of using the global // Defining this global in .eslintrc.json would create a danger of using the global
// unguarded in another place, it seems safer to define global only for this module // unguarded in another place, it seems safer to define global only for this module
define( [ define( [
@ -24,7 +24,7 @@ define( [
"use strict"; "use strict";
var var
version = "3.1.0", version = "3.1.1",
// Define a local copy of jQuery // Define a local copy of jQuery
jQuery = function( selector, context ) { jQuery = function( selector, context ) {
@ -64,13 +64,14 @@ jQuery.fn = jQuery.prototype = {
// Get the Nth element in the matched element set OR // Get the Nth element in the matched element set OR
// Get the whole matched element set as a clean array // Get the whole matched element set as a clean array
get: function( num ) { get: function( num ) {
return num != null ?
// Return just the one element from the set // Return all the elements in a clean array
( num < 0 ? this[ num + this.length ] : this[ num ] ) : if ( num == null ) {
return slice.call( this );
}
// Return all the elements in a clean array // Return just the one element from the set
slice.call( this ); return num < 0 ? this[ num + this.length ] : this[ num ];
}, },
// Take an array of elements and push it onto the stack // Take an array of elements and push it onto the stack

View File

@ -1,6 +1,5 @@
/*eslint-disable no-unused-vars*/
/*! /*!
* jQuery JavaScript Library v3.1.0 * jQuery JavaScript Library v3.1.1
* https://jquery.com/ * https://jquery.com/
* *
* Includes Sizzle.js * Includes Sizzle.js
@ -10,7 +9,7 @@
* Released under the MIT license * Released under the MIT license
* https://jquery.org/license * https://jquery.org/license
* *
* Date: 2016-07-07T21:44Z * Date: 2016-09-22T22:30Z
*/ */
( function( global, factory ) { ( function( global, factory ) {
@ -83,13 +82,13 @@ var support = {};
doc.head.appendChild( script ).parentNode.removeChild( script ); doc.head.appendChild( script ).parentNode.removeChild( script );
} }
/* global Symbol */ /* global Symbol */
// Defining this global in .eslintrc would create a danger of using the global // Defining this global in .eslintrc.json would create a danger of using the global
// unguarded in another place, it seems safer to define global only for this module // unguarded in another place, it seems safer to define global only for this module
var var
version = "3.1.0", version = "3.1.1",
// Define a local copy of jQuery // Define a local copy of jQuery
jQuery = function( selector, context ) { jQuery = function( selector, context ) {
@ -129,13 +128,14 @@ jQuery.fn = jQuery.prototype = {
// Get the Nth element in the matched element set OR // Get the Nth element in the matched element set OR
// Get the whole matched element set as a clean array // Get the whole matched element set as a clean array
get: function( num ) { get: function( num ) {
return num != null ?
// Return just the one element from the set // Return all the elements in a clean array
( num < 0 ? this[ num + this.length ] : this[ num ] ) : if ( num == null ) {
return slice.call( this );
}
// Return all the elements in a clean array // Return just the one element from the set
slice.call( this ); return num < 0 ? this[ num + this.length ] : this[ num ];
}, },
// Take an array of elements and push it onto the stack // Take an array of elements and push it onto the stack
@ -543,14 +543,14 @@ function isArrayLike( obj ) {
} }
var Sizzle = var Sizzle =
/*! /*!
* Sizzle CSS Selector Engine v2.3.0 * Sizzle CSS Selector Engine v2.3.3
* https://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: 2016-01-04 * Date: 2016-08-08
*/ */
(function( window ) { (function( window ) {
@ -696,7 +696,7 @@ var i,
// CSS string/identifier serialization // CSS string/identifier serialization
// https://drafts.csswg.org/cssom/#common-serializing-idioms // https://drafts.csswg.org/cssom/#common-serializing-idioms
rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g, rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
fcssescape = function( ch, asCodePoint ) { fcssescape = function( ch, asCodePoint ) {
if ( asCodePoint ) { if ( asCodePoint ) {
@ -723,7 +723,7 @@ var i,
disabledAncestor = addCombinator( disabledAncestor = addCombinator(
function( elem ) { function( elem ) {
return elem.disabled === true; return elem.disabled === true && ("form" in elem || "label" in elem);
}, },
{ dir: "parentNode", next: "legend" } { dir: "parentNode", next: "legend" }
); );
@ -1009,26 +1009,54 @@ function createButtonPseudo( type ) {
* @param {Boolean} disabled true for :disabled; false for :enabled * @param {Boolean} disabled true for :disabled; false for :enabled
*/ */
function createDisabledPseudo( disabled ) { function createDisabledPseudo( disabled ) {
// Known :disabled false positives:
// IE: *[disabled]:not(button, input, select, textarea, optgroup, option, menuitem, fieldset) // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
// not IE: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
return function( elem ) { return function( elem ) {
// Check form elements and option elements for explicit disabling // Only certain elements can match :enabled or :disabled
return "label" in elem && elem.disabled === disabled || // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled
"form" in elem && elem.disabled === disabled || // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled
if ( "form" in elem ) {
// Check non-disabled form elements for fieldset[disabled] ancestors // Check for inherited disabledness on relevant non-disabled elements:
"form" in elem && elem.disabled === false && ( // * listed form-associated elements in a disabled fieldset
// Support: IE6-11+ // https://html.spec.whatwg.org/multipage/forms.html#category-listed
// Ancestry is covered for us // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled
elem.isDisabled === disabled || // * option elements in a disabled optgroup
// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled
// All such elements have a "form" property.
if ( elem.parentNode && elem.disabled === false ) {
// Otherwise, assume any non-<option> under fieldset[disabled] is disabled // Option elements defer to a parent optgroup if present
/* jshint -W018 */ if ( "label" in elem ) {
elem.isDisabled !== !disabled && if ( "label" in elem.parentNode ) {
("label" in elem || !disabledAncestor( elem )) !== disabled return elem.parentNode.disabled === disabled;
); } else {
return elem.disabled === disabled;
}
}
// Support: IE 6 - 11
// Use the isDisabled shortcut property to check for disabled fieldset ancestors
return elem.isDisabled === disabled ||
// Where there is no isDisabled, check manually
/* jshint -W018 */
elem.isDisabled !== !disabled &&
disabledAncestor( elem ) === disabled;
}
return elem.disabled === disabled;
// Try to winnow out elements that can't be disabled before trusting the disabled property.
// Some victims get caught in our net (label, legend, menu, track), but it shouldn't
// even exist on them, let alone have a boolean value.
} else if ( "label" in elem ) {
return elem.disabled === disabled;
}
// Remaining elements are neither :enabled nor :disabled
return false;
}; };
} }
@ -1144,25 +1172,21 @@ setDocument = Sizzle.setDocument = function( node ) {
return !document.getElementsByName || !document.getElementsByName( expando ).length; return !document.getElementsByName || !document.getElementsByName( expando ).length;
}); });
// ID find and filter // ID filter and find
if ( support.getById ) { if ( support.getById ) {
Expr.find["ID"] = function( id, context ) {
if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
var m = context.getElementById( id );
return m ? [ m ] : [];
}
};
Expr.filter["ID"] = function( id ) { Expr.filter["ID"] = function( id ) {
var attrId = id.replace( runescape, funescape ); var attrId = id.replace( runescape, funescape );
return function( elem ) { return function( elem ) {
return elem.getAttribute("id") === attrId; return elem.getAttribute("id") === attrId;
}; };
}; };
Expr.find["ID"] = function( id, context ) {
if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
var elem = context.getElementById( id );
return elem ? [ elem ] : [];
}
};
} else { } else {
// Support: IE6/7
// getElementById is not reliable as a find shortcut
delete Expr.find["ID"];
Expr.filter["ID"] = function( id ) { Expr.filter["ID"] = function( id ) {
var attrId = id.replace( runescape, funescape ); var attrId = id.replace( runescape, funescape );
return function( elem ) { return function( elem ) {
@ -1171,6 +1195,36 @@ setDocument = Sizzle.setDocument = function( node ) {
return node && node.value === attrId; return node && node.value === attrId;
}; };
}; };
// Support: IE 6 - 7 only
// getElementById is not reliable as a find shortcut
Expr.find["ID"] = function( id, context ) {
if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
var node, i, elems,
elem = context.getElementById( id );
if ( elem ) {
// Verify the id attribute
node = elem.getAttributeNode("id");
if ( node && node.value === id ) {
return [ elem ];
}
// Fall back on getElementsByName
elems = context.getElementsByName( id );
i = 0;
while ( (elem = elems[i++]) ) {
node = elem.getAttributeNode("id");
if ( node && node.value === id ) {
return [ elem ];
}
}
}
return [];
}
};
} }
// Tag // Tag
@ -2211,6 +2265,7 @@ function addCombinator( matcher, combinator, base ) {
return matcher( elem, context, xml ); return matcher( elem, context, xml );
} }
} }
return false;
} : } :
// Check against all ancestor/preceding elements // Check against all ancestor/preceding elements
@ -2255,6 +2310,7 @@ function addCombinator( matcher, combinator, base ) {
} }
} }
} }
return false;
}; };
} }
@ -2617,8 +2673,7 @@ select = Sizzle.select = function( selector, context, results, seed ) {
// Reduce context if the leading compound selector is an ID // Reduce context if the leading compound selector is an ID
tokens = match[0] = match[0].slice( 0 ); tokens = match[0] = match[0].slice( 0 );
if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
support.getById && context.nodeType === 9 && documentIsHTML && context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {
Expr.relative[ tokens[1].type ] ) {
context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
if ( !context ) { if ( !context ) {
@ -2800,24 +2855,29 @@ function winnow( elements, qualifier, not ) {
return jQuery.grep( elements, function( elem, i ) { return jQuery.grep( elements, function( elem, i ) {
return !!qualifier.call( elem, i, elem ) !== not; return !!qualifier.call( elem, i, elem ) !== not;
} ); } );
} }
// Single element
if ( qualifier.nodeType ) { if ( qualifier.nodeType ) {
return jQuery.grep( elements, function( elem ) { return jQuery.grep( elements, function( elem ) {
return ( elem === qualifier ) !== not; return ( elem === qualifier ) !== not;
} ); } );
} }
if ( typeof qualifier === "string" ) { // Arraylike of elements (jQuery, arguments, Array)
if ( risSimple.test( qualifier ) ) { if ( typeof qualifier !== "string" ) {
return jQuery.filter( qualifier, elements, not ); return jQuery.grep( elements, function( elem ) {
} return ( indexOf.call( qualifier, elem ) > -1 ) !== not;
} );
qualifier = jQuery.filter( qualifier, elements );
} }
// Simple selector that can be filtered directly, removing non-Elements
if ( risSimple.test( qualifier ) ) {
return jQuery.filter( qualifier, elements, not );
}
// Complex selector, compare the two sets, removing non-Elements
qualifier = jQuery.filter( qualifier, elements );
return jQuery.grep( elements, function( elem ) { return jQuery.grep( elements, function( elem ) {
return ( indexOf.call( qualifier, elem ) > -1 ) !== not && elem.nodeType === 1; return ( indexOf.call( qualifier, elem ) > -1 ) !== not && elem.nodeType === 1;
} ); } );
@ -2830,11 +2890,13 @@ jQuery.filter = function( expr, elems, not ) {
expr = ":not(" + expr + ")"; expr = ":not(" + expr + ")";
} }
return elems.length === 1 && elem.nodeType === 1 ? if ( elems.length === 1 && elem.nodeType === 1 ) {
jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];
jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { }
return elem.nodeType === 1;
} ) ); return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
return elem.nodeType === 1;
} ) );
}; };
jQuery.fn.extend( { jQuery.fn.extend( {
@ -3162,14 +3224,14 @@ jQuery.each( {
return this.pushStack( matched ); return this.pushStack( matched );
}; };
} ); } );
var rnotwhite = ( /\S+/g ); var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g );
// 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 = {};
jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {
object[ flag ] = true; object[ flag ] = true;
} ); } );
return object; return object;
@ -3934,13 +3996,16 @@ var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
} }
} }
return chainable ? if ( chainable ) {
elems : return elems;
}
// Gets // Gets
bulk ? if ( bulk ) {
fn.call( elems ) : return fn.call( elems );
len ? fn( elems[ 0 ], key ) : emptyGet; }
return len ? fn( elems[ 0 ], key ) : emptyGet;
}; };
var acceptData = function( owner ) { var acceptData = function( owner ) {
@ -4077,7 +4142,7 @@ Data.prototype = {
// Otherwise, create an array by matching non-whitespace // Otherwise, create an array by matching non-whitespace
key = key in cache ? key = key in cache ?
[ key ] : [ key ] :
( key.match( rnotwhite ) || [] ); ( key.match( rnothtmlwhite ) || [] );
} }
i = key.length; i = key.length;
@ -4125,6 +4190,31 @@ var dataUser = new Data();
var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
rmultiDash = /[A-Z]/g; rmultiDash = /[A-Z]/g;
function getData( data ) {
if ( data === "true" ) {
return true;
}
if ( data === "false" ) {
return false;
}
if ( data === "null" ) {
return null;
}
// Only convert to a number if it doesn't change the string
if ( data === +data + "" ) {
return +data;
}
if ( rbrace.test( data ) ) {
return JSON.parse( data );
}
return data;
}
function dataAttr( elem, key, data ) { function dataAttr( elem, key, data ) {
var name; var name;
@ -4136,14 +4226,7 @@ function dataAttr( elem, key, data ) {
if ( typeof data === "string" ) { if ( typeof data === "string" ) {
try { try {
data = data === "true" ? true : data = getData( data );
data === "false" ? false :
data === "null" ? null :
// Only convert to a number if it doesn't change the string
+data + "" === data ? +data :
rbrace.test( data ) ? JSON.parse( data ) :
data;
} catch ( e ) {} } catch ( e ) {}
// Make sure we set the data so it isn't changed later // Make sure we set the data so it isn't changed later
@ -4520,7 +4603,7 @@ function getDefaultDisplay( elem ) {
return display; return display;
} }
temp = doc.body.appendChild( doc.createElement( nodeName ) ), temp = doc.body.appendChild( doc.createElement( nodeName ) );
display = jQuery.css( temp, "display" ); display = jQuery.css( temp, "display" );
temp.parentNode.removeChild( temp ); temp.parentNode.removeChild( temp );
@ -4638,15 +4721,23 @@ function getAll( context, tag ) {
// Support: IE <=9 - 11 only // 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;
context.getElementsByTagName( tag || "*" ) :
typeof context.querySelectorAll !== "undefined" ?
context.querySelectorAll( tag || "*" ) :
[];
return tag === undefined || tag && jQuery.nodeName( context, tag ) ? if ( typeof context.getElementsByTagName !== "undefined" ) {
jQuery.merge( [ context ], ret ) : ret = context.getElementsByTagName( tag || "*" );
ret;
} else if ( typeof context.querySelectorAll !== "undefined" ) {
ret = context.querySelectorAll( tag || "*" );
} else {
ret = [];
}
if ( tag === undefined || tag && jQuery.nodeName( context, tag ) ) {
return jQuery.merge( [ context ], ret );
}
return ret;
} }
@ -4920,7 +5011,7 @@ jQuery.event = {
} }
// Handle multiple events separated by a space // Handle multiple events separated by a space
types = ( types || "" ).match( rnotwhite ) || [ "" ]; types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
t = types.length; t = types.length;
while ( t-- ) { while ( t-- ) {
tmp = rtypenamespace.exec( types[ t ] ) || []; tmp = rtypenamespace.exec( types[ t ] ) || [];
@ -5002,7 +5093,7 @@ jQuery.event = {
} }
// Once for each type.namespace in types; type may be omitted // Once for each type.namespace in types; type may be omitted
types = ( types || "" ).match( rnotwhite ) || [ "" ]; types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
t = types.length; t = types.length;
while ( t-- ) { while ( t-- ) {
tmp = rtypenamespace.exec( types[ t ] ) || []; tmp = rtypenamespace.exec( types[ t ] ) || [];
@ -5128,51 +5219,58 @@ jQuery.event = {
}, },
handlers: function( event, handlers ) { handlers: function( event, handlers ) {
var i, matches, sel, handleObj, var i, handleObj, sel, matchedHandlers, matchedSelectors,
handlerQueue = [], handlerQueue = [],
delegateCount = handlers.delegateCount, delegateCount = handlers.delegateCount,
cur = event.target; cur = event.target;
// Support: IE <=9
// Find delegate handlers // Find delegate handlers
// Black-hole SVG <use> instance trees (#13180) if ( delegateCount &&
//
// Support: Firefox <=42 // Support: IE <=9
// Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343) // Black-hole SVG <use> instance trees (trac-13180)
if ( delegateCount && cur.nodeType && cur.nodeType &&
( event.type !== "click" || isNaN( event.button ) || event.button < 1 ) ) {
// Support: Firefox <=42
// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)
// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click
// Support: IE 11 only
// ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343)
!( event.type === "click" && event.button >= 1 ) ) {
for ( ; cur !== this; cur = cur.parentNode || this ) { for ( ; cur !== this; cur = cur.parentNode || this ) {
// Don't check non-elements (#13208) // Don't check non-elements (#13208)
// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
if ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== "click" ) ) { if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) {
matches = []; matchedHandlers = [];
matchedSelectors = {};
for ( i = 0; i < delegateCount; i++ ) { for ( i = 0; i < delegateCount; i++ ) {
handleObj = handlers[ i ]; handleObj = handlers[ i ];
// Don't conflict with Object.prototype properties (#13203) // Don't conflict with Object.prototype properties (#13203)
sel = handleObj.selector + " "; sel = handleObj.selector + " ";
if ( matches[ sel ] === undefined ) { if ( matchedSelectors[ sel ] === undefined ) {
matches[ sel ] = handleObj.needsContext ? matchedSelectors[ sel ] = handleObj.needsContext ?
jQuery( sel, this ).index( cur ) > -1 : jQuery( sel, this ).index( cur ) > -1 :
jQuery.find( sel, this, null, [ cur ] ).length; jQuery.find( sel, this, null, [ cur ] ).length;
} }
if ( matches[ sel ] ) { if ( matchedSelectors[ sel ] ) {
matches.push( handleObj ); matchedHandlers.push( handleObj );
} }
} }
if ( matches.length ) { if ( matchedHandlers.length ) {
handlerQueue.push( { elem: cur, handlers: matches } ); handlerQueue.push( { elem: cur, handlers: matchedHandlers } );
} }
} }
} }
} }
// Add the remaining (directly-bound) handlers // Add the remaining (directly-bound) handlers
cur = this;
if ( delegateCount < handlers.length ) { if ( delegateCount < handlers.length ) {
handlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } ); handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );
} }
return handlerQueue; return handlerQueue;
@ -5406,7 +5504,19 @@ jQuery.each( {
// Add which for click: 1 === left; 2 === middle; 3 === right // Add which for click: 1 === left; 2 === middle; 3 === right
if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {
return ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); if ( button & 1 ) {
return 1;
}
if ( button & 2 ) {
return 3;
}
if ( button & 4 ) {
return 2;
}
return 0;
} }
return event.which; return event.which;
@ -6162,16 +6272,18 @@ function setPositiveNumber( elem, value, subtract ) {
} }
function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
var i = extra === ( isBorderBox ? "border" : "content" ) ? var i,
// If we already have the right measurement, avoid augmentation
4 :
// Otherwise initialize for horizontal or vertical properties
name === "width" ? 1 : 0,
val = 0; val = 0;
// If we already have the right measurement, avoid augmentation
if ( extra === ( isBorderBox ? "border" : "content" ) ) {
i = 4;
// Otherwise initialize for horizontal or vertical properties
} else {
i = name === "width" ? 1 : 0;
}
for ( ; i < 4; i += 2 ) { for ( ; i < 4; i += 2 ) {
// Both box models exclude margin, so add it if we want it // Both box models exclude margin, so add it if we want it
@ -7024,7 +7136,7 @@ jQuery.Animation = jQuery.extend( Animation, {
callback = props; callback = props;
props = [ "*" ]; props = [ "*" ];
} else { } else {
props = props.match( rnotwhite ); props = props.match( rnothtmlwhite );
} }
var prop, var prop,
@ -7062,9 +7174,14 @@ jQuery.speed = function( speed, easing, fn ) {
opt.duration = 0; opt.duration = 0;
} else { } else {
opt.duration = typeof opt.duration === "number" ? if ( typeof opt.duration !== "number" ) {
opt.duration : opt.duration in jQuery.fx.speeds ? if ( opt.duration in jQuery.fx.speeds ) {
jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default; opt.duration = jQuery.fx.speeds[ opt.duration ];
} else {
opt.duration = jQuery.fx.speeds._default;
}
}
} }
// Normalize opt.queue - true/undefined/null -> "fx" // Normalize opt.queue - true/undefined/null -> "fx"
@ -7414,7 +7531,10 @@ jQuery.extend( {
removeAttr: function( elem, value ) { removeAttr: function( elem, value ) {
var name, var name,
i = 0, i = 0,
attrNames = value && value.match( rnotwhite );
// Attribute names can contain non-HTML whitespace characters
// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2
attrNames = value && value.match( rnothtmlwhite );
if ( attrNames && elem.nodeType === 1 ) { if ( attrNames && elem.nodeType === 1 ) {
while ( ( name = attrNames[ i++ ] ) ) { while ( ( name = attrNames[ i++ ] ) ) {
@ -7521,12 +7641,19 @@ jQuery.extend( {
// Use proper attribute retrieval(#12072) // Use proper attribute retrieval(#12072)
var tabindex = jQuery.find.attr( elem, "tabindex" ); var tabindex = jQuery.find.attr( elem, "tabindex" );
return tabindex ? if ( tabindex ) {
parseInt( tabindex, 10 ) : return parseInt( tabindex, 10 );
}
if (
rfocusable.test( elem.nodeName ) || rfocusable.test( elem.nodeName ) ||
rclickable.test( elem.nodeName ) && elem.href ? rclickable.test( elem.nodeName ) &&
0 : elem.href
-1; ) {
return 0;
}
return -1;
} }
} }
}, },
@ -7543,9 +7670,14 @@ jQuery.extend( {
// on the option // on the option
// The getter ensures a default option is selected // The getter ensures a default option is selected
// when in an optgroup // when in an optgroup
// eslint rule "no-unused-expressions" is disabled for this code
// since it considers such accessions noop
if ( !support.optSelected ) { if ( !support.optSelected ) {
jQuery.propHooks.selected = { jQuery.propHooks.selected = {
get: function( elem ) { get: function( elem ) {
/* eslint no-unused-expressions: "off" */
var parent = elem.parentNode; var parent = elem.parentNode;
if ( parent && parent.parentNode ) { if ( parent && parent.parentNode ) {
parent.parentNode.selectedIndex; parent.parentNode.selectedIndex;
@ -7553,6 +7685,9 @@ if ( !support.optSelected ) {
return null; return null;
}, },
set: function( elem ) { set: function( elem ) {
/* eslint no-unused-expressions: "off" */
var parent = elem.parentNode; var parent = elem.parentNode;
if ( parent ) { if ( parent ) {
parent.selectedIndex; parent.selectedIndex;
@ -7583,7 +7718,13 @@ jQuery.each( [
var rclass = /[\t\r\n\f]/g; // Strip and collapse whitespace according to HTML spec
// https://html.spec.whatwg.org/multipage/infrastructure.html#strip-and-collapse-whitespace
function stripAndCollapse( value ) {
var tokens = value.match( rnothtmlwhite ) || [];
return tokens.join( " " );
}
function getClass( elem ) { function getClass( elem ) {
return elem.getAttribute && elem.getAttribute( "class" ) || ""; return elem.getAttribute && elem.getAttribute( "class" ) || "";
@ -7601,12 +7742,11 @@ jQuery.fn.extend( {
} }
if ( typeof value === "string" && value ) { if ( typeof value === "string" && value ) {
classes = value.match( rnotwhite ) || []; classes = value.match( rnothtmlwhite ) || [];
while ( ( elem = this[ i++ ] ) ) { while ( ( elem = this[ i++ ] ) ) {
curValue = getClass( elem ); curValue = getClass( elem );
cur = elem.nodeType === 1 && cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
( " " + curValue + " " ).replace( rclass, " " );
if ( cur ) { if ( cur ) {
j = 0; j = 0;
@ -7617,7 +7757,7 @@ jQuery.fn.extend( {
} }
// Only assign if different to avoid unneeded rendering. // Only assign if different to avoid unneeded rendering.
finalValue = jQuery.trim( cur ); finalValue = stripAndCollapse( cur );
if ( curValue !== finalValue ) { if ( curValue !== finalValue ) {
elem.setAttribute( "class", finalValue ); elem.setAttribute( "class", finalValue );
} }
@ -7643,14 +7783,13 @@ jQuery.fn.extend( {
} }
if ( typeof value === "string" && value ) { if ( typeof value === "string" && value ) {
classes = value.match( rnotwhite ) || []; classes = value.match( rnothtmlwhite ) || [];
while ( ( elem = this[ i++ ] ) ) { while ( ( elem = this[ i++ ] ) ) {
curValue = getClass( elem ); curValue = getClass( elem );
// This expression is here for better compressibility (see addClass) // This expression is here for better compressibility (see addClass)
cur = elem.nodeType === 1 && cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
( " " + curValue + " " ).replace( rclass, " " );
if ( cur ) { if ( cur ) {
j = 0; j = 0;
@ -7663,7 +7802,7 @@ jQuery.fn.extend( {
} }
// Only assign if different to avoid unneeded rendering. // Only assign if different to avoid unneeded rendering.
finalValue = jQuery.trim( cur ); finalValue = stripAndCollapse( cur );
if ( curValue !== finalValue ) { if ( curValue !== finalValue ) {
elem.setAttribute( "class", finalValue ); elem.setAttribute( "class", finalValue );
} }
@ -7698,7 +7837,7 @@ jQuery.fn.extend( {
// Toggle individual class names // Toggle individual class names
i = 0; i = 0;
self = jQuery( this ); self = jQuery( this );
classNames = value.match( rnotwhite ) || []; classNames = value.match( rnothtmlwhite ) || [];
while ( ( className = classNames[ i++ ] ) ) { while ( ( className = classNames[ i++ ] ) ) {
@ -7741,10 +7880,8 @@ jQuery.fn.extend( {
className = " " + selector + " "; className = " " + selector + " ";
while ( ( elem = this[ i++ ] ) ) { while ( ( elem = this[ i++ ] ) ) {
if ( elem.nodeType === 1 && if ( elem.nodeType === 1 &&
( " " + getClass( elem ) + " " ).replace( rclass, " " ) ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) {
.indexOf( className ) > -1 return true;
) {
return true;
} }
} }
@ -7755,8 +7892,7 @@ jQuery.fn.extend( {
var rreturn = /\r/g, var rreturn = /\r/g;
rspaces = /[\x20\t\r\n\f]+/g;
jQuery.fn.extend( { jQuery.fn.extend( {
val: function( value ) { val: function( value ) {
@ -7777,13 +7913,13 @@ jQuery.fn.extend( {
ret = elem.value; ret = elem.value;
return typeof ret === "string" ? // Handle most common string cases
if ( typeof ret === "string" ) {
return ret.replace( rreturn, "" );
}
// Handle most common string cases // Handle cases where value is null/undef or number
ret.replace( rreturn, "" ) : return ret == null ? "" : ret;
// Handle cases where value is null/undef or number
ret == null ? "" : ret;
} }
return; return;
@ -7840,20 +7976,24 @@ jQuery.extend( {
// 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
jQuery.trim( jQuery.text( elem ) ).replace( rspaces, " " ); stripAndCollapse( jQuery.text( elem ) );
} }
}, },
select: { select: {
get: function( elem ) { get: function( elem ) {
var value, option, var value, option, i,
options = elem.options, options = elem.options,
index = elem.selectedIndex, index = elem.selectedIndex,
one = elem.type === "select-one", 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 ?
max : if ( index < 0 ) {
one ? index : 0; i = max;
} else {
i = one ? index : 0;
}
// Loop through all the selected options // Loop through all the selected options
for ( ; i < max; i++ ) { for ( ; i < max; i++ ) {
@ -8307,13 +8447,17 @@ jQuery.fn.extend( {
.map( function( i, elem ) { .map( function( i, elem ) {
var val = jQuery( this ).val(); var val = jQuery( this ).val();
return val == null ? if ( val == null ) {
null : return null;
jQuery.isArray( val ) ? }
jQuery.map( val, function( val ) {
return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; if ( jQuery.isArray( val ) ) {
} ) : return jQuery.map( val, function( val ) {
{ name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
} );
}
return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
} ).get(); } ).get();
} }
} ); } );
@ -8322,7 +8466,7 @@ jQuery.fn.extend( {
var var
r20 = /%20/g, r20 = /%20/g,
rhash = /#.*$/, rhash = /#.*$/,
rts = /([?&])_=[^&]*/, rantiCache = /([?&])_=[^&]*/,
rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
// #7653, #8125, #8152: local protocol detection // #7653, #8125, #8152: local protocol detection
@ -8368,7 +8512,7 @@ function addToPrefiltersOrTransports( structure ) {
var dataType, var dataType,
i = 0, i = 0,
dataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || []; dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];
if ( jQuery.isFunction( func ) ) { if ( jQuery.isFunction( func ) ) {
@ -8836,7 +8980,7 @@ jQuery.extend( {
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 = ( s.dataType || "*" ).toLowerCase().match( rnotwhite ) || [ "" ]; s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ];
// A cross-domain request is in order when the origin doesn't match the current origin. // A cross-domain request is in order when the origin doesn't match the current origin.
if ( s.crossDomain == null ) { if ( s.crossDomain == null ) {
@ -8908,9 +9052,9 @@ jQuery.extend( {
delete s.data; delete s.data;
} }
// Add anti-cache in uncached url if needed // Add or update anti-cache param if needed
if ( s.cache === false ) { if ( s.cache === false ) {
cacheURL = cacheURL.replace( rts, "" ); cacheURL = cacheURL.replace( rantiCache, "$1" );
uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached; uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached;
} }
@ -9649,7 +9793,7 @@ jQuery.fn.load = function( url, params, callback ) {
off = url.indexOf( " " ); off = url.indexOf( " " );
if ( off > -1 ) { if ( off > -1 ) {
selector = jQuery.trim( url.slice( off ) ); selector = stripAndCollapse( url.slice( off ) );
url = url.slice( 0, off ); url = url.slice( 0, off );
} }
@ -10041,7 +10185,6 @@ if ( typeof define === "function" && define.amd ) {
var var
// Map over jQuery in case of overwrite // Map over jQuery in case of overwrite
@ -10070,5 +10213,8 @@ if ( !noGlobal ) {
} }
return jQuery; return jQuery;
} ); } );

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,5 @@
/*eslint-disable no-unused-vars*/
/*! /*!
* jQuery JavaScript Library v3.1.0 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/Tween,-effects/animatedSelector,-deprecated * jQuery JavaScript Library v3.1.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/animatedSelector,-effects/Tween,-deprecated
* https://jquery.com/ * https://jquery.com/
* *
* Includes Sizzle.js * Includes Sizzle.js
@ -10,7 +9,7 @@
* Released under the MIT license * Released under the MIT license
* https://jquery.org/license * https://jquery.org/license
* *
* Date: 2016-07-07T21:44Z * Date: 2016-09-22T22:30Z
*/ */
( function( global, factory ) { ( function( global, factory ) {
@ -83,13 +82,13 @@ var support = {};
doc.head.appendChild( script ).parentNode.removeChild( script ); doc.head.appendChild( script ).parentNode.removeChild( script );
} }
/* global Symbol */ /* global Symbol */
// Defining this global in .eslintrc would create a danger of using the global // Defining this global in .eslintrc.json would create a danger of using the global
// unguarded in another place, it seems safer to define global only for this module // unguarded in another place, it seems safer to define global only for this module
var var
version = "3.1.0 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/Tween,-effects/animatedSelector,-deprecated", version = "3.1.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/animatedSelector,-effects/Tween,-deprecated",
// Define a local copy of jQuery // Define a local copy of jQuery
jQuery = function( selector, context ) { jQuery = function( selector, context ) {
@ -129,13 +128,14 @@ jQuery.fn = jQuery.prototype = {
// Get the Nth element in the matched element set OR // Get the Nth element in the matched element set OR
// Get the whole matched element set as a clean array // Get the whole matched element set as a clean array
get: function( num ) { get: function( num ) {
return num != null ?
// Return just the one element from the set // Return all the elements in a clean array
( num < 0 ? this[ num + this.length ] : this[ num ] ) : if ( num == null ) {
return slice.call( this );
}
// Return all the elements in a clean array // Return just the one element from the set
slice.call( this ); return num < 0 ? this[ num + this.length ] : this[ num ];
}, },
// Take an array of elements and push it onto the stack // Take an array of elements and push it onto the stack
@ -543,14 +543,14 @@ function isArrayLike( obj ) {
} }
var Sizzle = var Sizzle =
/*! /*!
* Sizzle CSS Selector Engine v2.3.0 * Sizzle CSS Selector Engine v2.3.3
* https://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: 2016-01-04 * Date: 2016-08-08
*/ */
(function( window ) { (function( window ) {
@ -696,7 +696,7 @@ var i,
// CSS string/identifier serialization // CSS string/identifier serialization
// https://drafts.csswg.org/cssom/#common-serializing-idioms // https://drafts.csswg.org/cssom/#common-serializing-idioms
rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g, rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
fcssescape = function( ch, asCodePoint ) { fcssescape = function( ch, asCodePoint ) {
if ( asCodePoint ) { if ( asCodePoint ) {
@ -723,7 +723,7 @@ var i,
disabledAncestor = addCombinator( disabledAncestor = addCombinator(
function( elem ) { function( elem ) {
return elem.disabled === true; return elem.disabled === true && ("form" in elem || "label" in elem);
}, },
{ dir: "parentNode", next: "legend" } { dir: "parentNode", next: "legend" }
); );
@ -1009,26 +1009,54 @@ function createButtonPseudo( type ) {
* @param {Boolean} disabled true for :disabled; false for :enabled * @param {Boolean} disabled true for :disabled; false for :enabled
*/ */
function createDisabledPseudo( disabled ) { function createDisabledPseudo( disabled ) {
// Known :disabled false positives:
// IE: *[disabled]:not(button, input, select, textarea, optgroup, option, menuitem, fieldset) // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
// not IE: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
return function( elem ) { return function( elem ) {
// Check form elements and option elements for explicit disabling // Only certain elements can match :enabled or :disabled
return "label" in elem && elem.disabled === disabled || // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled
"form" in elem && elem.disabled === disabled || // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled
if ( "form" in elem ) {
// Check non-disabled form elements for fieldset[disabled] ancestors // Check for inherited disabledness on relevant non-disabled elements:
"form" in elem && elem.disabled === false && ( // * listed form-associated elements in a disabled fieldset
// Support: IE6-11+ // https://html.spec.whatwg.org/multipage/forms.html#category-listed
// Ancestry is covered for us // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled
elem.isDisabled === disabled || // * option elements in a disabled optgroup
// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled
// All such elements have a "form" property.
if ( elem.parentNode && elem.disabled === false ) {
// Otherwise, assume any non-<option> under fieldset[disabled] is disabled // Option elements defer to a parent optgroup if present
/* jshint -W018 */ if ( "label" in elem ) {
elem.isDisabled !== !disabled && if ( "label" in elem.parentNode ) {
("label" in elem || !disabledAncestor( elem )) !== disabled return elem.parentNode.disabled === disabled;
); } else {
return elem.disabled === disabled;
}
}
// Support: IE 6 - 11
// Use the isDisabled shortcut property to check for disabled fieldset ancestors
return elem.isDisabled === disabled ||
// Where there is no isDisabled, check manually
/* jshint -W018 */
elem.isDisabled !== !disabled &&
disabledAncestor( elem ) === disabled;
}
return elem.disabled === disabled;
// Try to winnow out elements that can't be disabled before trusting the disabled property.
// Some victims get caught in our net (label, legend, menu, track), but it shouldn't
// even exist on them, let alone have a boolean value.
} else if ( "label" in elem ) {
return elem.disabled === disabled;
}
// Remaining elements are neither :enabled nor :disabled
return false;
}; };
} }
@ -1144,25 +1172,21 @@ setDocument = Sizzle.setDocument = function( node ) {
return !document.getElementsByName || !document.getElementsByName( expando ).length; return !document.getElementsByName || !document.getElementsByName( expando ).length;
}); });
// ID find and filter // ID filter and find
if ( support.getById ) { if ( support.getById ) {
Expr.find["ID"] = function( id, context ) {
if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
var m = context.getElementById( id );
return m ? [ m ] : [];
}
};
Expr.filter["ID"] = function( id ) { Expr.filter["ID"] = function( id ) {
var attrId = id.replace( runescape, funescape ); var attrId = id.replace( runescape, funescape );
return function( elem ) { return function( elem ) {
return elem.getAttribute("id") === attrId; return elem.getAttribute("id") === attrId;
}; };
}; };
Expr.find["ID"] = function( id, context ) {
if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
var elem = context.getElementById( id );
return elem ? [ elem ] : [];
}
};
} else { } else {
// Support: IE6/7
// getElementById is not reliable as a find shortcut
delete Expr.find["ID"];
Expr.filter["ID"] = function( id ) { Expr.filter["ID"] = function( id ) {
var attrId = id.replace( runescape, funescape ); var attrId = id.replace( runescape, funescape );
return function( elem ) { return function( elem ) {
@ -1171,6 +1195,36 @@ setDocument = Sizzle.setDocument = function( node ) {
return node && node.value === attrId; return node && node.value === attrId;
}; };
}; };
// Support: IE 6 - 7 only
// getElementById is not reliable as a find shortcut
Expr.find["ID"] = function( id, context ) {
if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
var node, i, elems,
elem = context.getElementById( id );
if ( elem ) {
// Verify the id attribute
node = elem.getAttributeNode("id");
if ( node && node.value === id ) {
return [ elem ];
}
// Fall back on getElementsByName
elems = context.getElementsByName( id );
i = 0;
while ( (elem = elems[i++]) ) {
node = elem.getAttributeNode("id");
if ( node && node.value === id ) {
return [ elem ];
}
}
}
return [];
}
};
} }
// Tag // Tag
@ -2211,6 +2265,7 @@ function addCombinator( matcher, combinator, base ) {
return matcher( elem, context, xml ); return matcher( elem, context, xml );
} }
} }
return false;
} : } :
// Check against all ancestor/preceding elements // Check against all ancestor/preceding elements
@ -2255,6 +2310,7 @@ function addCombinator( matcher, combinator, base ) {
} }
} }
} }
return false;
}; };
} }
@ -2617,8 +2673,7 @@ select = Sizzle.select = function( selector, context, results, seed ) {
// Reduce context if the leading compound selector is an ID // Reduce context if the leading compound selector is an ID
tokens = match[0] = match[0].slice( 0 ); tokens = match[0] = match[0].slice( 0 );
if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
support.getById && context.nodeType === 9 && documentIsHTML && context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {
Expr.relative[ tokens[1].type ] ) {
context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
if ( !context ) { if ( !context ) {
@ -2800,24 +2855,29 @@ function winnow( elements, qualifier, not ) {
return jQuery.grep( elements, function( elem, i ) { return jQuery.grep( elements, function( elem, i ) {
return !!qualifier.call( elem, i, elem ) !== not; return !!qualifier.call( elem, i, elem ) !== not;
} ); } );
} }
// Single element
if ( qualifier.nodeType ) { if ( qualifier.nodeType ) {
return jQuery.grep( elements, function( elem ) { return jQuery.grep( elements, function( elem ) {
return ( elem === qualifier ) !== not; return ( elem === qualifier ) !== not;
} ); } );
} }
if ( typeof qualifier === "string" ) { // Arraylike of elements (jQuery, arguments, Array)
if ( risSimple.test( qualifier ) ) { if ( typeof qualifier !== "string" ) {
return jQuery.filter( qualifier, elements, not ); return jQuery.grep( elements, function( elem ) {
} return ( indexOf.call( qualifier, elem ) > -1 ) !== not;
} );
qualifier = jQuery.filter( qualifier, elements );
} }
// Simple selector that can be filtered directly, removing non-Elements
if ( risSimple.test( qualifier ) ) {
return jQuery.filter( qualifier, elements, not );
}
// Complex selector, compare the two sets, removing non-Elements
qualifier = jQuery.filter( qualifier, elements );
return jQuery.grep( elements, function( elem ) { return jQuery.grep( elements, function( elem ) {
return ( indexOf.call( qualifier, elem ) > -1 ) !== not && elem.nodeType === 1; return ( indexOf.call( qualifier, elem ) > -1 ) !== not && elem.nodeType === 1;
} ); } );
@ -2830,11 +2890,13 @@ jQuery.filter = function( expr, elems, not ) {
expr = ":not(" + expr + ")"; expr = ":not(" + expr + ")";
} }
return elems.length === 1 && elem.nodeType === 1 ? if ( elems.length === 1 && elem.nodeType === 1 ) {
jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];
jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { }
return elem.nodeType === 1;
} ) ); return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
return elem.nodeType === 1;
} ) );
}; };
jQuery.fn.extend( { jQuery.fn.extend( {
@ -3162,14 +3224,14 @@ jQuery.each( {
return this.pushStack( matched ); return this.pushStack( matched );
}; };
} ); } );
var rnotwhite = ( /\S+/g ); var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g );
// 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 = {};
jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {
object[ flag ] = true; object[ flag ] = true;
} ); } );
return object; return object;
@ -3934,13 +3996,16 @@ var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
} }
} }
return chainable ? if ( chainable ) {
elems : return elems;
}
// Gets // Gets
bulk ? if ( bulk ) {
fn.call( elems ) : return fn.call( elems );
len ? fn( elems[ 0 ], key ) : emptyGet; }
return len ? fn( elems[ 0 ], key ) : emptyGet;
}; };
var acceptData = function( owner ) { var acceptData = function( owner ) {
@ -4077,7 +4142,7 @@ Data.prototype = {
// Otherwise, create an array by matching non-whitespace // Otherwise, create an array by matching non-whitespace
key = key in cache ? key = key in cache ?
[ key ] : [ key ] :
( key.match( rnotwhite ) || [] ); ( key.match( rnothtmlwhite ) || [] );
} }
i = key.length; i = key.length;
@ -4125,6 +4190,31 @@ var dataUser = new Data();
var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
rmultiDash = /[A-Z]/g; rmultiDash = /[A-Z]/g;
function getData( data ) {
if ( data === "true" ) {
return true;
}
if ( data === "false" ) {
return false;
}
if ( data === "null" ) {
return null;
}
// Only convert to a number if it doesn't change the string
if ( data === +data + "" ) {
return +data;
}
if ( rbrace.test( data ) ) {
return JSON.parse( data );
}
return data;
}
function dataAttr( elem, key, data ) { function dataAttr( elem, key, data ) {
var name; var name;
@ -4136,14 +4226,7 @@ function dataAttr( elem, key, data ) {
if ( typeof data === "string" ) { if ( typeof data === "string" ) {
try { try {
data = data === "true" ? true : data = getData( data );
data === "false" ? false :
data === "null" ? null :
// Only convert to a number if it doesn't change the string
+data + "" === data ? +data :
rbrace.test( data ) ? JSON.parse( data ) :
data;
} catch ( e ) {} } catch ( e ) {}
// Make sure we set the data so it isn't changed later // Make sure we set the data so it isn't changed later
@ -4520,7 +4603,7 @@ function getDefaultDisplay( elem ) {
return display; return display;
} }
temp = doc.body.appendChild( doc.createElement( nodeName ) ), temp = doc.body.appendChild( doc.createElement( nodeName ) );
display = jQuery.css( temp, "display" ); display = jQuery.css( temp, "display" );
temp.parentNode.removeChild( temp ); temp.parentNode.removeChild( temp );
@ -4638,15 +4721,23 @@ function getAll( context, tag ) {
// Support: IE <=9 - 11 only // 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;
context.getElementsByTagName( tag || "*" ) :
typeof context.querySelectorAll !== "undefined" ?
context.querySelectorAll( tag || "*" ) :
[];
return tag === undefined || tag && jQuery.nodeName( context, tag ) ? if ( typeof context.getElementsByTagName !== "undefined" ) {
jQuery.merge( [ context ], ret ) : ret = context.getElementsByTagName( tag || "*" );
ret;
} else if ( typeof context.querySelectorAll !== "undefined" ) {
ret = context.querySelectorAll( tag || "*" );
} else {
ret = [];
}
if ( tag === undefined || tag && jQuery.nodeName( context, tag ) ) {
return jQuery.merge( [ context ], ret );
}
return ret;
} }
@ -4920,7 +5011,7 @@ jQuery.event = {
} }
// Handle multiple events separated by a space // Handle multiple events separated by a space
types = ( types || "" ).match( rnotwhite ) || [ "" ]; types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
t = types.length; t = types.length;
while ( t-- ) { while ( t-- ) {
tmp = rtypenamespace.exec( types[ t ] ) || []; tmp = rtypenamespace.exec( types[ t ] ) || [];
@ -5002,7 +5093,7 @@ jQuery.event = {
} }
// Once for each type.namespace in types; type may be omitted // Once for each type.namespace in types; type may be omitted
types = ( types || "" ).match( rnotwhite ) || [ "" ]; types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
t = types.length; t = types.length;
while ( t-- ) { while ( t-- ) {
tmp = rtypenamespace.exec( types[ t ] ) || []; tmp = rtypenamespace.exec( types[ t ] ) || [];
@ -5128,51 +5219,58 @@ jQuery.event = {
}, },
handlers: function( event, handlers ) { handlers: function( event, handlers ) {
var i, matches, sel, handleObj, var i, handleObj, sel, matchedHandlers, matchedSelectors,
handlerQueue = [], handlerQueue = [],
delegateCount = handlers.delegateCount, delegateCount = handlers.delegateCount,
cur = event.target; cur = event.target;
// Support: IE <=9
// Find delegate handlers // Find delegate handlers
// Black-hole SVG <use> instance trees (#13180) if ( delegateCount &&
//
// Support: Firefox <=42 // Support: IE <=9
// Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343) // Black-hole SVG <use> instance trees (trac-13180)
if ( delegateCount && cur.nodeType && cur.nodeType &&
( event.type !== "click" || isNaN( event.button ) || event.button < 1 ) ) {
// Support: Firefox <=42
// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)
// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click
// Support: IE 11 only
// ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343)
!( event.type === "click" && event.button >= 1 ) ) {
for ( ; cur !== this; cur = cur.parentNode || this ) { for ( ; cur !== this; cur = cur.parentNode || this ) {
// Don't check non-elements (#13208) // Don't check non-elements (#13208)
// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
if ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== "click" ) ) { if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) {
matches = []; matchedHandlers = [];
matchedSelectors = {};
for ( i = 0; i < delegateCount; i++ ) { for ( i = 0; i < delegateCount; i++ ) {
handleObj = handlers[ i ]; handleObj = handlers[ i ];
// Don't conflict with Object.prototype properties (#13203) // Don't conflict with Object.prototype properties (#13203)
sel = handleObj.selector + " "; sel = handleObj.selector + " ";
if ( matches[ sel ] === undefined ) { if ( matchedSelectors[ sel ] === undefined ) {
matches[ sel ] = handleObj.needsContext ? matchedSelectors[ sel ] = handleObj.needsContext ?
jQuery( sel, this ).index( cur ) > -1 : jQuery( sel, this ).index( cur ) > -1 :
jQuery.find( sel, this, null, [ cur ] ).length; jQuery.find( sel, this, null, [ cur ] ).length;
} }
if ( matches[ sel ] ) { if ( matchedSelectors[ sel ] ) {
matches.push( handleObj ); matchedHandlers.push( handleObj );
} }
} }
if ( matches.length ) { if ( matchedHandlers.length ) {
handlerQueue.push( { elem: cur, handlers: matches } ); handlerQueue.push( { elem: cur, handlers: matchedHandlers } );
} }
} }
} }
} }
// Add the remaining (directly-bound) handlers // Add the remaining (directly-bound) handlers
cur = this;
if ( delegateCount < handlers.length ) { if ( delegateCount < handlers.length ) {
handlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } ); handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );
} }
return handlerQueue; return handlerQueue;
@ -5406,7 +5504,19 @@ jQuery.each( {
// Add which for click: 1 === left; 2 === middle; 3 === right // Add which for click: 1 === left; 2 === middle; 3 === right
if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {
return ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); if ( button & 1 ) {
return 1;
}
if ( button & 2 ) {
return 3;
}
if ( button & 4 ) {
return 2;
}
return 0;
} }
return event.which; return event.which;
@ -6162,16 +6272,18 @@ function setPositiveNumber( elem, value, subtract ) {
} }
function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
var i = extra === ( isBorderBox ? "border" : "content" ) ? var i,
// If we already have the right measurement, avoid augmentation
4 :
// Otherwise initialize for horizontal or vertical properties
name === "width" ? 1 : 0,
val = 0; val = 0;
// If we already have the right measurement, avoid augmentation
if ( extra === ( isBorderBox ? "border" : "content" ) ) {
i = 4;
// Otherwise initialize for horizontal or vertical properties
} else {
i = name === "width" ? 1 : 0;
}
for ( ; i < 4; i += 2 ) { for ( ; i < 4; i += 2 ) {
// Both box models exclude margin, so add it if we want it // Both box models exclude margin, so add it if we want it
@ -6633,7 +6745,10 @@ jQuery.extend( {
removeAttr: function( elem, value ) { removeAttr: function( elem, value ) {
var name, var name,
i = 0, i = 0,
attrNames = value && value.match( rnotwhite );
// Attribute names can contain non-HTML whitespace characters
// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2
attrNames = value && value.match( rnothtmlwhite );
if ( attrNames && elem.nodeType === 1 ) { if ( attrNames && elem.nodeType === 1 ) {
while ( ( name = attrNames[ i++ ] ) ) { while ( ( name = attrNames[ i++ ] ) ) {
@ -6740,12 +6855,19 @@ jQuery.extend( {
// Use proper attribute retrieval(#12072) // Use proper attribute retrieval(#12072)
var tabindex = jQuery.find.attr( elem, "tabindex" ); var tabindex = jQuery.find.attr( elem, "tabindex" );
return tabindex ? if ( tabindex ) {
parseInt( tabindex, 10 ) : return parseInt( tabindex, 10 );
}
if (
rfocusable.test( elem.nodeName ) || rfocusable.test( elem.nodeName ) ||
rclickable.test( elem.nodeName ) && elem.href ? rclickable.test( elem.nodeName ) &&
0 : elem.href
-1; ) {
return 0;
}
return -1;
} }
} }
}, },
@ -6762,9 +6884,14 @@ jQuery.extend( {
// on the option // on the option
// The getter ensures a default option is selected // The getter ensures a default option is selected
// when in an optgroup // when in an optgroup
// eslint rule "no-unused-expressions" is disabled for this code
// since it considers such accessions noop
if ( !support.optSelected ) { if ( !support.optSelected ) {
jQuery.propHooks.selected = { jQuery.propHooks.selected = {
get: function( elem ) { get: function( elem ) {
/* eslint no-unused-expressions: "off" */
var parent = elem.parentNode; var parent = elem.parentNode;
if ( parent && parent.parentNode ) { if ( parent && parent.parentNode ) {
parent.parentNode.selectedIndex; parent.parentNode.selectedIndex;
@ -6772,6 +6899,9 @@ if ( !support.optSelected ) {
return null; return null;
}, },
set: function( elem ) { set: function( elem ) {
/* eslint no-unused-expressions: "off" */
var parent = elem.parentNode; var parent = elem.parentNode;
if ( parent ) { if ( parent ) {
parent.selectedIndex; parent.selectedIndex;
@ -6802,7 +6932,13 @@ jQuery.each( [
var rclass = /[\t\r\n\f]/g; // Strip and collapse whitespace according to HTML spec
// https://html.spec.whatwg.org/multipage/infrastructure.html#strip-and-collapse-whitespace
function stripAndCollapse( value ) {
var tokens = value.match( rnothtmlwhite ) || [];
return tokens.join( " " );
}
function getClass( elem ) { function getClass( elem ) {
return elem.getAttribute && elem.getAttribute( "class" ) || ""; return elem.getAttribute && elem.getAttribute( "class" ) || "";
@ -6820,12 +6956,11 @@ jQuery.fn.extend( {
} }
if ( typeof value === "string" && value ) { if ( typeof value === "string" && value ) {
classes = value.match( rnotwhite ) || []; classes = value.match( rnothtmlwhite ) || [];
while ( ( elem = this[ i++ ] ) ) { while ( ( elem = this[ i++ ] ) ) {
curValue = getClass( elem ); curValue = getClass( elem );
cur = elem.nodeType === 1 && cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
( " " + curValue + " " ).replace( rclass, " " );
if ( cur ) { if ( cur ) {
j = 0; j = 0;
@ -6836,7 +6971,7 @@ jQuery.fn.extend( {
} }
// Only assign if different to avoid unneeded rendering. // Only assign if different to avoid unneeded rendering.
finalValue = jQuery.trim( cur ); finalValue = stripAndCollapse( cur );
if ( curValue !== finalValue ) { if ( curValue !== finalValue ) {
elem.setAttribute( "class", finalValue ); elem.setAttribute( "class", finalValue );
} }
@ -6862,14 +6997,13 @@ jQuery.fn.extend( {
} }
if ( typeof value === "string" && value ) { if ( typeof value === "string" && value ) {
classes = value.match( rnotwhite ) || []; classes = value.match( rnothtmlwhite ) || [];
while ( ( elem = this[ i++ ] ) ) { while ( ( elem = this[ i++ ] ) ) {
curValue = getClass( elem ); curValue = getClass( elem );
// This expression is here for better compressibility (see addClass) // This expression is here for better compressibility (see addClass)
cur = elem.nodeType === 1 && cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
( " " + curValue + " " ).replace( rclass, " " );
if ( cur ) { if ( cur ) {
j = 0; j = 0;
@ -6882,7 +7016,7 @@ jQuery.fn.extend( {
} }
// Only assign if different to avoid unneeded rendering. // Only assign if different to avoid unneeded rendering.
finalValue = jQuery.trim( cur ); finalValue = stripAndCollapse( cur );
if ( curValue !== finalValue ) { if ( curValue !== finalValue ) {
elem.setAttribute( "class", finalValue ); elem.setAttribute( "class", finalValue );
} }
@ -6917,7 +7051,7 @@ jQuery.fn.extend( {
// Toggle individual class names // Toggle individual class names
i = 0; i = 0;
self = jQuery( this ); self = jQuery( this );
classNames = value.match( rnotwhite ) || []; classNames = value.match( rnothtmlwhite ) || [];
while ( ( className = classNames[ i++ ] ) ) { while ( ( className = classNames[ i++ ] ) ) {
@ -6960,10 +7094,8 @@ jQuery.fn.extend( {
className = " " + selector + " "; className = " " + selector + " ";
while ( ( elem = this[ i++ ] ) ) { while ( ( elem = this[ i++ ] ) ) {
if ( elem.nodeType === 1 && if ( elem.nodeType === 1 &&
( " " + getClass( elem ) + " " ).replace( rclass, " " ) ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) {
.indexOf( className ) > -1 return true;
) {
return true;
} }
} }
@ -6974,8 +7106,7 @@ jQuery.fn.extend( {
var rreturn = /\r/g, var rreturn = /\r/g;
rspaces = /[\x20\t\r\n\f]+/g;
jQuery.fn.extend( { jQuery.fn.extend( {
val: function( value ) { val: function( value ) {
@ -6996,13 +7127,13 @@ jQuery.fn.extend( {
ret = elem.value; ret = elem.value;
return typeof ret === "string" ? // Handle most common string cases
if ( typeof ret === "string" ) {
return ret.replace( rreturn, "" );
}
// Handle most common string cases // Handle cases where value is null/undef or number
ret.replace( rreturn, "" ) : return ret == null ? "" : ret;
// Handle cases where value is null/undef or number
ret == null ? "" : ret;
} }
return; return;
@ -7059,20 +7190,24 @@ jQuery.extend( {
// 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
jQuery.trim( jQuery.text( elem ) ).replace( rspaces, " " ); stripAndCollapse( jQuery.text( elem ) );
} }
}, },
select: { select: {
get: function( elem ) { get: function( elem ) {
var value, option, var value, option, i,
options = elem.options, options = elem.options,
index = elem.selectedIndex, index = elem.selectedIndex,
one = elem.type === "select-one", 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 ?
max : if ( index < 0 ) {
one ? index : 0; i = max;
} else {
i = one ? index : 0;
}
// Loop through all the selected options // Loop through all the selected options
for ( ; i < max; i++ ) { for ( ; i < max; i++ ) {
@ -7498,13 +7633,17 @@ jQuery.fn.extend( {
.map( function( i, elem ) { .map( function( i, elem ) {
var val = jQuery( this ).val(); var val = jQuery( this ).val();
return val == null ? if ( val == null ) {
null : return null;
jQuery.isArray( val ) ? }
jQuery.map( val, function( val ) {
return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; if ( jQuery.isArray( val ) ) {
} ) : return jQuery.map( val, function( val ) {
{ name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
} );
}
return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
} ).get(); } ).get();
} }
} ); } );
@ -7933,7 +8072,6 @@ if ( typeof define === "function" && define.amd ) {
var var
// Map over jQuery in case of overwrite // Map over jQuery in case of overwrite
@ -7962,5 +8100,8 @@ if ( !noGlobal ) {
} }
return jQuery; return jQuery;
} ); } );

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,12 +1,12 @@
/*! /*!
* Sizzle CSS Selector Engine v2.3.0 * Sizzle CSS Selector Engine v2.3.3
* https://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: 2016-01-04 * Date: 2016-08-08
*/ */
(function( window ) { (function( window ) {
@ -152,7 +152,7 @@ var i,
// CSS string/identifier serialization // CSS string/identifier serialization
// https://drafts.csswg.org/cssom/#common-serializing-idioms // https://drafts.csswg.org/cssom/#common-serializing-idioms
rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g, rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
fcssescape = function( ch, asCodePoint ) { fcssescape = function( ch, asCodePoint ) {
if ( asCodePoint ) { if ( asCodePoint ) {
@ -179,7 +179,7 @@ var i,
disabledAncestor = addCombinator( disabledAncestor = addCombinator(
function( elem ) { function( elem ) {
return elem.disabled === true; return elem.disabled === true && ("form" in elem || "label" in elem);
}, },
{ dir: "parentNode", next: "legend" } { dir: "parentNode", next: "legend" }
); );
@ -465,26 +465,54 @@ function createButtonPseudo( type ) {
* @param {Boolean} disabled true for :disabled; false for :enabled * @param {Boolean} disabled true for :disabled; false for :enabled
*/ */
function createDisabledPseudo( disabled ) { function createDisabledPseudo( disabled ) {
// Known :disabled false positives:
// IE: *[disabled]:not(button, input, select, textarea, optgroup, option, menuitem, fieldset) // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
// not IE: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
return function( elem ) { return function( elem ) {
// Check form elements and option elements for explicit disabling // Only certain elements can match :enabled or :disabled
return "label" in elem && elem.disabled === disabled || // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled
"form" in elem && elem.disabled === disabled || // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled
if ( "form" in elem ) {
// Check non-disabled form elements for fieldset[disabled] ancestors // Check for inherited disabledness on relevant non-disabled elements:
"form" in elem && elem.disabled === false && ( // * listed form-associated elements in a disabled fieldset
// Support: IE6-11+ // https://html.spec.whatwg.org/multipage/forms.html#category-listed
// Ancestry is covered for us // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled
elem.isDisabled === disabled || // * option elements in a disabled optgroup
// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled
// All such elements have a "form" property.
if ( elem.parentNode && elem.disabled === false ) {
// Otherwise, assume any non-<option> under fieldset[disabled] is disabled // Option elements defer to a parent optgroup if present
/* jshint -W018 */ if ( "label" in elem ) {
elem.isDisabled !== !disabled && if ( "label" in elem.parentNode ) {
("label" in elem || !disabledAncestor( elem )) !== disabled return elem.parentNode.disabled === disabled;
); } else {
return elem.disabled === disabled;
}
}
// Support: IE 6 - 11
// Use the isDisabled shortcut property to check for disabled fieldset ancestors
return elem.isDisabled === disabled ||
// Where there is no isDisabled, check manually
/* jshint -W018 */
elem.isDisabled !== !disabled &&
disabledAncestor( elem ) === disabled;
}
return elem.disabled === disabled;
// Try to winnow out elements that can't be disabled before trusting the disabled property.
// Some victims get caught in our net (label, legend, menu, track), but it shouldn't
// even exist on them, let alone have a boolean value.
} else if ( "label" in elem ) {
return elem.disabled === disabled;
}
// Remaining elements are neither :enabled nor :disabled
return false;
}; };
} }
@ -600,25 +628,21 @@ setDocument = Sizzle.setDocument = function( node ) {
return !document.getElementsByName || !document.getElementsByName( expando ).length; return !document.getElementsByName || !document.getElementsByName( expando ).length;
}); });
// ID find and filter // ID filter and find
if ( support.getById ) { if ( support.getById ) {
Expr.find["ID"] = function( id, context ) {
if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
var m = context.getElementById( id );
return m ? [ m ] : [];
}
};
Expr.filter["ID"] = function( id ) { Expr.filter["ID"] = function( id ) {
var attrId = id.replace( runescape, funescape ); var attrId = id.replace( runescape, funescape );
return function( elem ) { return function( elem ) {
return elem.getAttribute("id") === attrId; return elem.getAttribute("id") === attrId;
}; };
}; };
Expr.find["ID"] = function( id, context ) {
if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
var elem = context.getElementById( id );
return elem ? [ elem ] : [];
}
};
} else { } else {
// Support: IE6/7
// getElementById is not reliable as a find shortcut
delete Expr.find["ID"];
Expr.filter["ID"] = function( id ) { Expr.filter["ID"] = function( id ) {
var attrId = id.replace( runescape, funescape ); var attrId = id.replace( runescape, funescape );
return function( elem ) { return function( elem ) {
@ -627,6 +651,36 @@ setDocument = Sizzle.setDocument = function( node ) {
return node && node.value === attrId; return node && node.value === attrId;
}; };
}; };
// Support: IE 6 - 7 only
// getElementById is not reliable as a find shortcut
Expr.find["ID"] = function( id, context ) {
if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
var node, i, elems,
elem = context.getElementById( id );
if ( elem ) {
// Verify the id attribute
node = elem.getAttributeNode("id");
if ( node && node.value === id ) {
return [ elem ];
}
// Fall back on getElementsByName
elems = context.getElementsByName( id );
i = 0;
while ( (elem = elems[i++]) ) {
node = elem.getAttributeNode("id");
if ( node && node.value === id ) {
return [ elem ];
}
}
}
return [];
}
};
} }
// Tag // Tag
@ -1667,6 +1721,7 @@ function addCombinator( matcher, combinator, base ) {
return matcher( elem, context, xml ); return matcher( elem, context, xml );
} }
} }
return false;
} : } :
// Check against all ancestor/preceding elements // Check against all ancestor/preceding elements
@ -1711,6 +1766,7 @@ function addCombinator( matcher, combinator, base ) {
} }
} }
} }
return false;
}; };
} }
@ -2073,8 +2129,7 @@ select = Sizzle.select = function( selector, context, results, seed ) {
// Reduce context if the leading compound selector is an ID // Reduce context if the leading compound selector is an ID
tokens = match[0] = match[0].slice( 0 ); tokens = match[0] = match[0].slice( 0 );
if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
support.getById && context.nodeType === 9 && documentIsHTML && context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {
Expr.relative[ tokens[1].type ] ) {
context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
if ( !context ) { if ( !context ) {

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,7 +1,7 @@
define( [ define( [
"./core", "./core",
"./var/document", "./var/document",
"./var/rnotwhite", "./var/rnothtmlwhite",
"./ajax/var/location", "./ajax/var/location",
"./ajax/var/nonce", "./ajax/var/nonce",
"./ajax/var/rquery", "./ajax/var/rquery",
@ -11,14 +11,14 @@ define( [
"./event/trigger", "./event/trigger",
"./deferred", "./deferred",
"./serialize" // jQuery.param "./serialize" // jQuery.param
], function( jQuery, document, rnotwhite, location, nonce, rquery ) { ], function( jQuery, document, rnothtmlwhite, location, nonce, rquery ) {
"use strict"; "use strict";
var var
r20 = /%20/g, r20 = /%20/g,
rhash = /#.*$/, rhash = /#.*$/,
rts = /([?&])_=[^&]*/, rantiCache = /([?&])_=[^&]*/,
rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
// #7653, #8125, #8152: local protocol detection // #7653, #8125, #8152: local protocol detection
@ -64,7 +64,7 @@ function addToPrefiltersOrTransports( structure ) {
var dataType, var dataType,
i = 0, i = 0,
dataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || []; dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];
if ( jQuery.isFunction( func ) ) { if ( jQuery.isFunction( func ) ) {
@ -532,7 +532,7 @@ jQuery.extend( {
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 = ( s.dataType || "*" ).toLowerCase().match( rnotwhite ) || [ "" ]; s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ];
// A cross-domain request is in order when the origin doesn't match the current origin. // A cross-domain request is in order when the origin doesn't match the current origin.
if ( s.crossDomain == null ) { if ( s.crossDomain == null ) {
@ -604,9 +604,9 @@ jQuery.extend( {
delete s.data; delete s.data;
} }
// Add anti-cache in uncached url if needed // Add or update anti-cache param if needed
if ( s.cache === false ) { if ( s.cache === false ) {
cacheURL = cacheURL.replace( rts, "" ); cacheURL = cacheURL.replace( rantiCache, "$1" );
uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached; uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached;
} }

View File

@ -1,11 +1,12 @@
define( [ define( [
"../core", "../core",
"../core/stripAndCollapse",
"../core/parseHTML", "../core/parseHTML",
"../ajax", "../ajax",
"../traversing", "../traversing",
"../manipulation", "../manipulation",
"../selector" "../selector"
], function( jQuery ) { ], function( jQuery, stripAndCollapse ) {
"use strict"; "use strict";
@ -18,7 +19,7 @@ jQuery.fn.load = function( url, params, callback ) {
off = url.indexOf( " " ); off = url.indexOf( " " );
if ( off > -1 ) { if ( off > -1 ) {
selector = jQuery.trim( url.slice( off ) ); selector = stripAndCollapse( url.slice( off ) );
url = url.slice( 0, off ); url = url.slice( 0, off );
} }

View File

@ -2,9 +2,9 @@ define( [
"../core", "../core",
"../core/access", "../core/access",
"./support", "./support",
"../var/rnotwhite", "../var/rnothtmlwhite",
"../selector" "../selector"
], function( jQuery, access, support, rnotwhite ) { ], function( jQuery, access, support, rnothtmlwhite ) {
"use strict"; "use strict";
@ -89,7 +89,10 @@ jQuery.extend( {
removeAttr: function( elem, value ) { removeAttr: function( elem, value ) {
var name, var name,
i = 0, i = 0,
attrNames = value && value.match( rnotwhite );
// Attribute names can contain non-HTML whitespace characters
// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2
attrNames = value && value.match( rnothtmlwhite );
if ( attrNames && elem.nodeType === 1 ) { if ( attrNames && elem.nodeType === 1 ) {
while ( ( name = attrNames[ i++ ] ) ) { while ( ( name = attrNames[ i++ ] ) ) {

View File

@ -1,14 +1,13 @@
define( [ define( [
"../core", "../core",
"../var/rnotwhite", "../core/stripAndCollapse",
"../var/rnothtmlwhite",
"../data/var/dataPriv", "../data/var/dataPriv",
"../core/init" "../core/init"
], function( jQuery, rnotwhite, dataPriv ) { ], function( jQuery, stripAndCollapse, rnothtmlwhite, dataPriv ) {
"use strict"; "use strict";
var rclass = /[\t\r\n\f]/g;
function getClass( elem ) { function getClass( elem ) {
return elem.getAttribute && elem.getAttribute( "class" ) || ""; return elem.getAttribute && elem.getAttribute( "class" ) || "";
} }
@ -25,12 +24,11 @@ jQuery.fn.extend( {
} }
if ( typeof value === "string" && value ) { if ( typeof value === "string" && value ) {
classes = value.match( rnotwhite ) || []; classes = value.match( rnothtmlwhite ) || [];
while ( ( elem = this[ i++ ] ) ) { while ( ( elem = this[ i++ ] ) ) {
curValue = getClass( elem ); curValue = getClass( elem );
cur = elem.nodeType === 1 && cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
( " " + curValue + " " ).replace( rclass, " " );
if ( cur ) { if ( cur ) {
j = 0; j = 0;
@ -41,7 +39,7 @@ jQuery.fn.extend( {
} }
// Only assign if different to avoid unneeded rendering. // Only assign if different to avoid unneeded rendering.
finalValue = jQuery.trim( cur ); finalValue = stripAndCollapse( cur );
if ( curValue !== finalValue ) { if ( curValue !== finalValue ) {
elem.setAttribute( "class", finalValue ); elem.setAttribute( "class", finalValue );
} }
@ -67,14 +65,13 @@ jQuery.fn.extend( {
} }
if ( typeof value === "string" && value ) { if ( typeof value === "string" && value ) {
classes = value.match( rnotwhite ) || []; classes = value.match( rnothtmlwhite ) || [];
while ( ( elem = this[ i++ ] ) ) { while ( ( elem = this[ i++ ] ) ) {
curValue = getClass( elem ); curValue = getClass( elem );
// This expression is here for better compressibility (see addClass) // This expression is here for better compressibility (see addClass)
cur = elem.nodeType === 1 && cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
( " " + curValue + " " ).replace( rclass, " " );
if ( cur ) { if ( cur ) {
j = 0; j = 0;
@ -87,7 +84,7 @@ jQuery.fn.extend( {
} }
// Only assign if different to avoid unneeded rendering. // Only assign if different to avoid unneeded rendering.
finalValue = jQuery.trim( cur ); finalValue = stripAndCollapse( cur );
if ( curValue !== finalValue ) { if ( curValue !== finalValue ) {
elem.setAttribute( "class", finalValue ); elem.setAttribute( "class", finalValue );
} }
@ -122,7 +119,7 @@ jQuery.fn.extend( {
// Toggle individual class names // Toggle individual class names
i = 0; i = 0;
self = jQuery( this ); self = jQuery( this );
classNames = value.match( rnotwhite ) || []; classNames = value.match( rnothtmlwhite ) || [];
while ( ( className = classNames[ i++ ] ) ) { while ( ( className = classNames[ i++ ] ) ) {
@ -165,10 +162,8 @@ jQuery.fn.extend( {
className = " " + selector + " "; className = " " + selector + " ";
while ( ( elem = this[ i++ ] ) ) { while ( ( elem = this[ i++ ] ) ) {
if ( elem.nodeType === 1 && if ( elem.nodeType === 1 &&
( " " + getClass( elem ) + " " ).replace( rclass, " " ) ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) {
.indexOf( className ) > -1 return true;
) {
return true;
} }
} }

View File

@ -66,12 +66,19 @@ jQuery.extend( {
// Use proper attribute retrieval(#12072) // Use proper attribute retrieval(#12072)
var tabindex = jQuery.find.attr( elem, "tabindex" ); var tabindex = jQuery.find.attr( elem, "tabindex" );
return tabindex ? if ( tabindex ) {
parseInt( tabindex, 10 ) : return parseInt( tabindex, 10 );
}
if (
rfocusable.test( elem.nodeName ) || rfocusable.test( elem.nodeName ) ||
rclickable.test( elem.nodeName ) && elem.href ? rclickable.test( elem.nodeName ) &&
0 : elem.href
-1; ) {
return 0;
}
return -1;
} }
} }
}, },
@ -88,9 +95,14 @@ jQuery.extend( {
// on the option // on the option
// The getter ensures a default option is selected // The getter ensures a default option is selected
// when in an optgroup // when in an optgroup
// eslint rule "no-unused-expressions" is disabled for this code
// since it considers such accessions noop
if ( !support.optSelected ) { if ( !support.optSelected ) {
jQuery.propHooks.selected = { jQuery.propHooks.selected = {
get: function( elem ) { get: function( elem ) {
/* eslint no-unused-expressions: "off" */
var parent = elem.parentNode; var parent = elem.parentNode;
if ( parent && parent.parentNode ) { if ( parent && parent.parentNode ) {
parent.parentNode.selectedIndex; parent.parentNode.selectedIndex;
@ -98,6 +110,9 @@ if ( !support.optSelected ) {
return null; return null;
}, },
set: function( elem ) { set: function( elem ) {
/* eslint no-unused-expressions: "off" */
var parent = elem.parentNode; var parent = elem.parentNode;
if ( parent ) { if ( parent ) {
parent.selectedIndex; parent.selectedIndex;

View File

@ -1,13 +1,13 @@
define( [ define( [
"../core", "../core",
"../core/stripAndCollapse",
"./support", "./support",
"../core/init" "../core/init"
], function( jQuery, support ) { ], function( jQuery, stripAndCollapse, support ) {
"use strict"; "use strict";
var rreturn = /\r/g, var rreturn = /\r/g;
rspaces = /[\x20\t\r\n\f]+/g;
jQuery.fn.extend( { jQuery.fn.extend( {
val: function( value ) { val: function( value ) {
@ -28,13 +28,13 @@ jQuery.fn.extend( {
ret = elem.value; ret = elem.value;
return typeof ret === "string" ? // Handle most common string cases
if ( typeof ret === "string" ) {
return ret.replace( rreturn, "" );
}
// Handle most common string cases // Handle cases where value is null/undef or number
ret.replace( rreturn, "" ) : return ret == null ? "" : ret;
// Handle cases where value is null/undef or number
ret == null ? "" : ret;
} }
return; return;
@ -91,20 +91,24 @@ jQuery.extend( {
// 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
jQuery.trim( jQuery.text( elem ) ).replace( rspaces, " " ); stripAndCollapse( jQuery.text( elem ) );
} }
}, },
select: { select: {
get: function( elem ) { get: function( elem ) {
var value, option, var value, option, i,
options = elem.options, options = elem.options,
index = elem.selectedIndex, index = elem.selectedIndex,
one = elem.type === "select-one", 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 ?
max : if ( index < 0 ) {
one ? index : 0; i = max;
} else {
i = one ? index : 0;
}
// Loop through all the selected options // Loop through all the selected options
for ( ; i < max; i++ ) { for ( ; i < max; i++ ) {

View File

@ -1,14 +1,14 @@
define( [ define( [
"./core", "./core",
"./var/rnotwhite" "./var/rnothtmlwhite"
], function( jQuery, rnotwhite ) { ], function( jQuery, rnothtmlwhite ) {
"use strict"; "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 = {};
jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {
object[ flag ] = true; object[ flag ] = true;
} ); } );
return object; return object;

View File

@ -1,5 +1,5 @@
/* global Symbol */ /* global Symbol */
// Defining this global in .eslintrc would create a danger of using the global // Defining this global in .eslintrc.json would create a danger of using the global
// unguarded in another place, it seems safer to define global only for this module // unguarded in another place, it seems safer to define global only for this module
define( [ define( [
@ -24,7 +24,7 @@ define( [
"use strict"; "use strict";
var var
version = "3.1.0", version = "3.1.1",
// Define a local copy of jQuery // Define a local copy of jQuery
jQuery = function( selector, context ) { jQuery = function( selector, context ) {
@ -64,13 +64,14 @@ jQuery.fn = jQuery.prototype = {
// Get the Nth element in the matched element set OR // Get the Nth element in the matched element set OR
// Get the whole matched element set as a clean array // Get the whole matched element set as a clean array
get: function( num ) { get: function( num ) {
return num != null ?
// Return just the one element from the set // Return all the elements in a clean array
( num < 0 ? this[ num + this.length ] : this[ num ] ) : if ( num == null ) {
return slice.call( this );
}
// Return all the elements in a clean array // Return just the one element from the set
slice.call( this ); return num < 0 ? this[ num + this.length ] : this[ num ];
}, },
// Take an array of elements and push it onto the stack // Take an array of elements and push it onto the stack

View File

@ -53,13 +53,16 @@ var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
} }
} }
return chainable ? if ( chainable ) {
elems : return elems;
}
// Gets // Gets
bulk ? if ( bulk ) {
fn.call( elems ) : return fn.call( elems );
len ? fn( elems[ 0 ], key ) : emptyGet; }
return len ? fn( elems[ 0 ], key ) : emptyGet;
}; };
return access; return access;

View File

@ -6,7 +6,6 @@ define( [
"use strict"; "use strict";
var readyCallbacks = [], var readyCallbacks = [],
readyFiring = false,
whenReady = function( fn ) { whenReady = function( fn ) {
readyCallbacks.push( fn ); readyCallbacks.push( fn );
}, },
@ -60,16 +59,11 @@ jQuery.extend( {
whenReady = function( fn ) { whenReady = function( fn ) {
readyCallbacks.push( fn ); readyCallbacks.push( fn );
if ( !readyFiring ) { while ( readyCallbacks.length ) {
readyFiring = true; fn = readyCallbacks.shift();
if ( jQuery.isFunction( fn ) ) {
while ( readyCallbacks.length ) { executeReady( fn );
fn = readyCallbacks.shift();
if ( jQuery.isFunction( fn ) ) {
executeReady( fn );
}
} }
readyFiring = false;
} }
}; };

View File

@ -0,0 +1,14 @@
define( [
"../var/rnothtmlwhite"
], function( rnothtmlwhite ) {
"use strict";
// Strip and collapse whitespace according to HTML spec
// https://html.spec.whatwg.org/multipage/infrastructure.html#strip-and-collapse-whitespace
function stripAndCollapse( value ) {
var tokens = value.match( rnothtmlwhite ) || [];
return tokens.join( " " );
}
return stripAndCollapse;
} );

View File

@ -70,16 +70,18 @@ function setPositiveNumber( elem, value, subtract ) {
} }
function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
var i = extra === ( isBorderBox ? "border" : "content" ) ? var i,
// If we already have the right measurement, avoid augmentation
4 :
// Otherwise initialize for horizontal or vertical properties
name === "width" ? 1 : 0,
val = 0; val = 0;
// If we already have the right measurement, avoid augmentation
if ( extra === ( isBorderBox ? "border" : "content" ) ) {
i = 4;
// Otherwise initialize for horizontal or vertical properties
} else {
i = name === "width" ? 1 : 0;
}
for ( ; i < 4; i += 2 ) { for ( ; i < 4; i += 2 ) {
// Both box models exclude margin, so add it if we want it // Both box models exclude margin, so add it if we want it

View File

@ -18,7 +18,7 @@ function getDefaultDisplay( elem ) {
return display; return display;
} }
temp = doc.body.appendChild( doc.createElement( nodeName ) ), temp = doc.body.appendChild( doc.createElement( nodeName ) );
display = jQuery.css( temp, "display" ); display = jQuery.css( temp, "display" );
temp.parentNode.removeChild( temp ); temp.parentNode.removeChild( temp );

View File

@ -20,6 +20,31 @@ define( [
var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
rmultiDash = /[A-Z]/g; rmultiDash = /[A-Z]/g;
function getData( data ) {
if ( data === "true" ) {
return true;
}
if ( data === "false" ) {
return false;
}
if ( data === "null" ) {
return null;
}
// Only convert to a number if it doesn't change the string
if ( data === +data + "" ) {
return +data;
}
if ( rbrace.test( data ) ) {
return JSON.parse( data );
}
return data;
}
function dataAttr( elem, key, data ) { function dataAttr( elem, key, data ) {
var name; var name;
@ -31,14 +56,7 @@ function dataAttr( elem, key, data ) {
if ( typeof data === "string" ) { if ( typeof data === "string" ) {
try { try {
data = data === "true" ? true : data = getData( data );
data === "false" ? false :
data === "null" ? null :
// Only convert to a number if it doesn't change the string
+data + "" === data ? +data :
rbrace.test( data ) ? JSON.parse( data ) :
data;
} catch ( e ) {} } catch ( e ) {}
// Make sure we set the data so it isn't changed later // Make sure we set the data so it isn't changed later

View File

@ -1,8 +1,8 @@
define( [ define( [
"../core", "../core",
"../var/rnotwhite", "../var/rnothtmlwhite",
"./var/acceptData" "./var/acceptData"
], function( jQuery, rnotwhite, acceptData ) { ], function( jQuery, rnothtmlwhite, acceptData ) {
"use strict"; "use strict";
@ -127,7 +127,7 @@ Data.prototype = {
// Otherwise, create an array by matching non-whitespace // Otherwise, create an array by matching non-whitespace
key = key in cache ? key = key in cache ?
[ key ] : [ key ] :
( key.match( rnotwhite ) || [] ); ( key.match( rnothtmlwhite ) || [] );
} }
i = key.length; i = key.length;

View File

@ -2,7 +2,7 @@ define( [
"./core", "./core",
"./var/document", "./var/document",
"./var/rcssNum", "./var/rcssNum",
"./var/rnotwhite", "./var/rnothtmlwhite",
"./css/var/cssExpand", "./css/var/cssExpand",
"./css/var/isHiddenWithinTree", "./css/var/isHiddenWithinTree",
"./css/var/swap", "./css/var/swap",
@ -17,7 +17,7 @@ define( [
"./manipulation", "./manipulation",
"./css", "./css",
"./effects/Tween" "./effects/Tween"
], function( jQuery, document, rcssNum, rnotwhite, cssExpand, isHiddenWithinTree, swap, ], function( jQuery, document, rcssNum, rnothtmlwhite, cssExpand, isHiddenWithinTree, swap,
adjustCSS, dataPriv, showHide ) { adjustCSS, dataPriv, showHide ) {
"use strict"; "use strict";
@ -415,7 +415,7 @@ jQuery.Animation = jQuery.extend( Animation, {
callback = props; callback = props;
props = [ "*" ]; props = [ "*" ];
} else { } else {
props = props.match( rnotwhite ); props = props.match( rnothtmlwhite );
} }
var prop, var prop,
@ -453,9 +453,14 @@ jQuery.speed = function( speed, easing, fn ) {
opt.duration = 0; opt.duration = 0;
} else { } else {
opt.duration = typeof opt.duration === "number" ? if ( typeof opt.duration !== "number" ) {
opt.duration : opt.duration in jQuery.fx.speeds ? if ( opt.duration in jQuery.fx.speeds ) {
jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default; opt.duration = jQuery.fx.speeds[ opt.duration ];
} else {
opt.duration = jQuery.fx.speeds._default;
}
}
} }
// Normalize opt.queue - true/undefined/null -> "fx" // Normalize opt.queue - true/undefined/null -> "fx"

View File

@ -2,13 +2,13 @@ define( [
"./core", "./core",
"./var/document", "./var/document",
"./var/documentElement", "./var/documentElement",
"./var/rnotwhite", "./var/rnothtmlwhite",
"./var/slice", "./var/slice",
"./data/var/dataPriv", "./data/var/dataPriv",
"./core/init", "./core/init",
"./selector" "./selector"
], function( jQuery, document, documentElement, rnotwhite, slice, dataPriv ) { ], function( jQuery, document, documentElement, rnothtmlwhite, slice, dataPriv ) {
"use strict"; "use strict";
@ -147,7 +147,7 @@ jQuery.event = {
} }
// Handle multiple events separated by a space // Handle multiple events separated by a space
types = ( types || "" ).match( rnotwhite ) || [ "" ]; types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
t = types.length; t = types.length;
while ( t-- ) { while ( t-- ) {
tmp = rtypenamespace.exec( types[ t ] ) || []; tmp = rtypenamespace.exec( types[ t ] ) || [];
@ -229,7 +229,7 @@ jQuery.event = {
} }
// Once for each type.namespace in types; type may be omitted // Once for each type.namespace in types; type may be omitted
types = ( types || "" ).match( rnotwhite ) || [ "" ]; types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
t = types.length; t = types.length;
while ( t-- ) { while ( t-- ) {
tmp = rtypenamespace.exec( types[ t ] ) || []; tmp = rtypenamespace.exec( types[ t ] ) || [];
@ -355,51 +355,58 @@ jQuery.event = {
}, },
handlers: function( event, handlers ) { handlers: function( event, handlers ) {
var i, matches, sel, handleObj, var i, handleObj, sel, matchedHandlers, matchedSelectors,
handlerQueue = [], handlerQueue = [],
delegateCount = handlers.delegateCount, delegateCount = handlers.delegateCount,
cur = event.target; cur = event.target;
// Support: IE <=9
// Find delegate handlers // Find delegate handlers
// Black-hole SVG <use> instance trees (#13180) if ( delegateCount &&
//
// Support: Firefox <=42 // Support: IE <=9
// Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343) // Black-hole SVG <use> instance trees (trac-13180)
if ( delegateCount && cur.nodeType && cur.nodeType &&
( event.type !== "click" || isNaN( event.button ) || event.button < 1 ) ) {
// Support: Firefox <=42
// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)
// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click
// Support: IE 11 only
// ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343)
!( event.type === "click" && event.button >= 1 ) ) {
for ( ; cur !== this; cur = cur.parentNode || this ) { for ( ; cur !== this; cur = cur.parentNode || this ) {
// Don't check non-elements (#13208) // Don't check non-elements (#13208)
// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
if ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== "click" ) ) { if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) {
matches = []; matchedHandlers = [];
matchedSelectors = {};
for ( i = 0; i < delegateCount; i++ ) { for ( i = 0; i < delegateCount; i++ ) {
handleObj = handlers[ i ]; handleObj = handlers[ i ];
// Don't conflict with Object.prototype properties (#13203) // Don't conflict with Object.prototype properties (#13203)
sel = handleObj.selector + " "; sel = handleObj.selector + " ";
if ( matches[ sel ] === undefined ) { if ( matchedSelectors[ sel ] === undefined ) {
matches[ sel ] = handleObj.needsContext ? matchedSelectors[ sel ] = handleObj.needsContext ?
jQuery( sel, this ).index( cur ) > -1 : jQuery( sel, this ).index( cur ) > -1 :
jQuery.find( sel, this, null, [ cur ] ).length; jQuery.find( sel, this, null, [ cur ] ).length;
} }
if ( matches[ sel ] ) { if ( matchedSelectors[ sel ] ) {
matches.push( handleObj ); matchedHandlers.push( handleObj );
} }
} }
if ( matches.length ) { if ( matchedHandlers.length ) {
handlerQueue.push( { elem: cur, handlers: matches } ); handlerQueue.push( { elem: cur, handlers: matchedHandlers } );
} }
} }
} }
} }
// Add the remaining (directly-bound) handlers // Add the remaining (directly-bound) handlers
cur = this;
if ( delegateCount < handlers.length ) { if ( delegateCount < handlers.length ) {
handlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } ); handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );
} }
return handlerQueue; return handlerQueue;
@ -633,7 +640,19 @@ jQuery.each( {
// Add which for click: 1 === left; 2 === middle; 3 === right // Add which for click: 1 === left; 2 === middle; 3 === right
if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {
return ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); if ( button & 1 ) {
return 1;
}
if ( button & 2 ) {
return 3;
}
if ( button & 4 ) {
return 2;
}
return 0;
} }
return event.which; return event.which;

View File

@ -1,10 +1,8 @@
/* ExcludeStart */ define( [
"../core"
], function( jQuery, noGlobal ) {
// This file is included in a different way from all the others "use strict";
// so the "use strict" pragma is not needed.
/* eslint strict: "off" */
/* ExcludeEnd */
var var
@ -32,3 +30,5 @@ jQuery.noConflict = function( deep ) {
if ( !noGlobal ) { if ( !noGlobal ) {
window.jQuery = window.$ = jQuery; window.jQuery = window.$ = jQuery;
} }
} );

View File

@ -30,11 +30,12 @@ define( [
"./offset", "./offset",
"./dimensions", "./dimensions",
"./deprecated", "./deprecated",
"./exports/amd" "./exports/amd",
"./exports/global"
], function( jQuery ) { ], function( jQuery ) {
"use strict"; "use strict";
return ( window.jQuery = window.$ = jQuery ); return jQuery;
} ); } );

View File

@ -8,15 +8,23 @@ function getAll( context, tag ) {
// Support: IE <=9 - 11 only // 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;
context.getElementsByTagName( tag || "*" ) :
typeof context.querySelectorAll !== "undefined" ?
context.querySelectorAll( tag || "*" ) :
[];
return tag === undefined || tag && jQuery.nodeName( context, tag ) ? if ( typeof context.getElementsByTagName !== "undefined" ) {
jQuery.merge( [ context ], ret ) : ret = context.getElementsByTagName( tag || "*" );
ret;
} else if ( typeof context.querySelectorAll !== "undefined" ) {
ret = context.querySelectorAll( tag || "*" );
} else {
ret = [];
}
if ( tag === undefined || tag && jQuery.nodeName( context, tag ) ) {
return jQuery.merge( [ context ], ret );
}
return ret;
} }
return getAll; return getAll;

View File

@ -111,13 +111,17 @@ jQuery.fn.extend( {
.map( function( i, elem ) { .map( function( i, elem ) {
var val = jQuery( this ).val(); var val = jQuery( this ).val();
return val == null ? if ( val == null ) {
null : return null;
jQuery.isArray( val ) ? }
jQuery.map( val, function( val ) {
return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; if ( jQuery.isArray( val ) ) {
} ) : return jQuery.map( val, function( val ) {
{ name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
} );
}
return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
} ).get(); } ).get();
} }
} ); } );

View File

@ -15,24 +15,29 @@ function winnow( elements, qualifier, not ) {
return jQuery.grep( elements, function( elem, i ) { return jQuery.grep( elements, function( elem, i ) {
return !!qualifier.call( elem, i, elem ) !== not; return !!qualifier.call( elem, i, elem ) !== not;
} ); } );
} }
// Single element
if ( qualifier.nodeType ) { if ( qualifier.nodeType ) {
return jQuery.grep( elements, function( elem ) { return jQuery.grep( elements, function( elem ) {
return ( elem === qualifier ) !== not; return ( elem === qualifier ) !== not;
} ); } );
} }
if ( typeof qualifier === "string" ) { // Arraylike of elements (jQuery, arguments, Array)
if ( risSimple.test( qualifier ) ) { if ( typeof qualifier !== "string" ) {
return jQuery.filter( qualifier, elements, not ); return jQuery.grep( elements, function( elem ) {
} return ( indexOf.call( qualifier, elem ) > -1 ) !== not;
} );
qualifier = jQuery.filter( qualifier, elements );
} }
// Simple selector that can be filtered directly, removing non-Elements
if ( risSimple.test( qualifier ) ) {
return jQuery.filter( qualifier, elements, not );
}
// Complex selector, compare the two sets, removing non-Elements
qualifier = jQuery.filter( qualifier, elements );
return jQuery.grep( elements, function( elem ) { return jQuery.grep( elements, function( elem ) {
return ( indexOf.call( qualifier, elem ) > -1 ) !== not && elem.nodeType === 1; return ( indexOf.call( qualifier, elem ) > -1 ) !== not && elem.nodeType === 1;
} ); } );
@ -45,11 +50,13 @@ jQuery.filter = function( expr, elems, not ) {
expr = ":not(" + expr + ")"; expr = ":not(" + expr + ")";
} }
return elems.length === 1 && elem.nodeType === 1 ? if ( elems.length === 1 && elem.nodeType === 1 ) {
jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];
jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { }
return elem.nodeType === 1;
} ) ); return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
return elem.nodeType === 1;
} ) );
}; };
jQuery.fn.extend( { jQuery.fn.extend( {

View File

@ -155,6 +155,7 @@ define(['appStorage', 'browser'], function (appStorage, browser) {
var version = window.dashboardVersion || '3.0'; var version = window.dashboardVersion || '3.0';
return { return {
dvrFeatureCode: Dashboard.isConnectMode() ? 'dvr' : 'dvrl',
getWindowState: function () { getWindowState: function () {
return document.windowState || 'Normal'; return document.windowState || 'Normal';
}, },

View File

@ -1,13 +1,13 @@
<div style="text-align: center;display:flex; align-items: center; flex-wrap: wrap; justify-content: center;margin: 0 0 1em 0;"> <div style="text-align: center;display:flex; align-items: center; flex-wrap: wrap; justify-content: center;margin: 0 0 1em 0;">
<div style="margin: 0;"> <div style="margin: 0;">
<label for="selectImageProvider" style="display: inline-block;">${LabelSource}</label> <label for="selectImageProvider" style="display: inline-block;">${LabelSource}</label>
<select id="selectImageProvider" style="padding-left:.5em;padding-right:0;display: inline-block;width:auto!important;"> <select id="selectImageProvider" style="padding-left:.5em;padding-right:0;display: inline-block;width:auto!important;color: #fff;">
<option value="">${OptionAll}</option> <option value="">${OptionAll}</option>
</select> </select>
</div> </div>
<div style="margin-left:1em;"> <div style="margin-left:1em;">
<label for="selectBrowsableImageType" style="display: inline-block;">${LabelImage}</label> <label for="selectBrowsableImageType" style="display: inline-block;">${LabelImage}</label>
<select id="selectBrowsableImageType" style="padding-left:.5em;padding-right:0;display: inline-block;width:auto!important;"> <select id="selectBrowsableImageType" style="padding-left:.5em;padding-right:0;display: inline-block;width:auto!important;color: #fff;">
<option value="Primary">${OptionPrimary}</option> <option value="Primary">${OptionPrimary}</option>
<option value="Art">${OptionArt}</option> <option value="Art">${OptionArt}</option>
<option value="Backdrop">${OptionBackdrop}</option> <option value="Backdrop">${OptionBackdrop}</option>

View File

@ -3,13 +3,8 @@
} }
.headerSelectedPlayer { .headerSelectedPlayer {
display: inline-block; font-weight: normal;
vertical-align: middle; max-width: 160px;
color: #ddd;
font-weight: 400;
position: relative;
top: 2px;
max-width: 100px;
text-overflow: ellipsis; text-overflow: ellipsis;
overflow: hidden; overflow: hidden;
white-space: nowrap; white-space: nowrap;

Some files were not shown because too many files have changed in this diff Show More