1
0
Fork 0
mirror of https://github.com/DanielnetoDotCom/YouPHPTube synced 2025-10-03 01:39:24 +02:00

Update node modules

This commit is contained in:
Daniel Neto 2024-09-09 23:54:57 -03:00
parent 52a013772f
commit 09d8558456
858 changed files with 5466 additions and 544833 deletions

63
node_modules/.package-lock.json generated vendored
View file

@ -213,9 +213,9 @@
}
},
"node_modules/@videojs/http-streaming": {
"version": "3.13.1",
"resolved": "https://registry.npmjs.org/@videojs/http-streaming/-/http-streaming-3.13.1.tgz",
"integrity": "sha512-G7YrgNEq9ETaUmtkoTnTuwkY9U+xP7Xncedzgxio/Rmz2Gn2zmodEbBIVQinb2UDznk7X8uY5XBr/Ew6OD/LWg==",
"version": "3.13.2",
"resolved": "https://registry.npmjs.org/@videojs/http-streaming/-/http-streaming-3.13.2.tgz",
"integrity": "sha512-eCfQp61w00hg7Y9npmLnsJ6UvDF+SsFYzu7mQJgVXxWpVm9AthYWA3KQEKA7F7Sy6yzlm/Sps8BHs5ItelNZgQ==",
"dependencies": {
"@babel/runtime": "^7.12.5",
"@videojs/vhs-utils": "4.0.0",
@ -420,9 +420,9 @@
}
},
"node_modules/chart.js": {
"version": "4.4.3",
"resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.3.tgz",
"integrity": "sha512-qK1gkGSRYcJzqrrzdR6a+I0vQ4/R+SoODXyAjscQ/4mzuNzySaMCd+hyVxitSY1+L2fjPD1Gbn+ibNqRmwQeLw==",
"version": "4.4.4",
"resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.4.tgz",
"integrity": "sha512-emICKGBABnxhMjUjlYRR12PmOXhJ2eJjEHL2/dZlWjxRAZT1D8xplLFq5M0tMQK8ja+wBS/tuVEJB5C6r7VxJA==",
"dependencies": {
"@kurkle/color": "^0.3.0"
},
@ -609,9 +609,9 @@
}
},
"node_modules/hls.js": {
"version": "1.5.13",
"resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.5.13.tgz",
"integrity": "sha512-xRgKo84nsC7clEvSfIdgn/Tc0NOT+d7vdiL/wvkLO+0k0juc26NRBPPG1SfB8pd5bHXIjMW/F5VM8VYYkOYYdw=="
"version": "1.5.15",
"resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.5.15.tgz",
"integrity": "sha512-6cD7xN6bycBHaXz2WyPIaHn/iXFizE5au2yvY5q9aC4wfihxAr16C9fUy4nxh2a3wOw0fEgLRa9dN6wsYjlpNg=="
},
"node_modules/ieee754": {
"version": "1.2.1",
@ -730,11 +730,11 @@
"integrity": "sha512-0j/nfqA2FHFuJXp8QL33EVVCY//TDVfq4LULhTbasZYl2aZlX6YiSF5IGrI31dQiS9S4JkXBUfX3rMJcfl/u/g=="
},
"node_modules/jquery-ui": {
"version": "1.13.3",
"resolved": "https://registry.npmjs.org/jquery-ui/-/jquery-ui-1.13.3.tgz",
"integrity": "sha512-D2YJfswSJRh/B8M/zCowDpNFfwsDmtfnMPwjJTyvl+CBqzpYwQ+gFYIbUUlzijy/Qvoy30H1YhoSui4MNYpRwA==",
"version": "1.14.0",
"resolved": "https://registry.npmjs.org/jquery-ui/-/jquery-ui-1.14.0.tgz",
"integrity": "sha512-mPfYKBoRCf0MzaT2cyW5i3IuZ7PfTITaasO5OFLAQxrHuI+ZxruPa+4/K1OMNT8oElLWGtIxc9aRbyw20BKr8g==",
"dependencies": {
"jquery": ">=1.8.0 <4.0.0"
"jquery": ">=1.12.0 <5.0.0"
}
},
"node_modules/jquery-ui-dist": {
@ -1003,23 +1003,22 @@
"integrity": "sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA=="
},
"node_modules/m3u8-parser": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/m3u8-parser/-/m3u8-parser-7.1.0.tgz",
"integrity": "sha512-7N+pk79EH4oLKPEYdgRXgAsKDyA/VCo0qCHlUwacttQA0WqsjZQYmNfywMvjlY9MpEBVZEt0jKFd73Kv15EBYQ==",
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/m3u8-parser/-/m3u8-parser-7.2.0.tgz",
"integrity": "sha512-CRatFqpjVtMiMaKXxNvuI3I++vUumIXVVT/JpCpdU/FynV/ceVw1qpPyyBNindL+JlPMSesx+WX1QJaZEJSaMQ==",
"dependencies": {
"@babel/runtime": "^7.12.5",
"@videojs/vhs-utils": "^3.0.5",
"@videojs/vhs-utils": "^4.1.1",
"global": "^4.4.0"
}
},
"node_modules/m3u8-parser/node_modules/@videojs/vhs-utils": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/@videojs/vhs-utils/-/vhs-utils-3.0.5.tgz",
"integrity": "sha512-PKVgdo8/GReqdx512F+ombhS+Bzogiofy1LgAj4tN8PfdBx3HSS7V5WfJotKTqtOWGwVfSWsrYN/t09/DSryrw==",
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/@videojs/vhs-utils/-/vhs-utils-4.1.1.tgz",
"integrity": "sha512-5iLX6sR2ownbv4Mtejw6Ax+naosGvoT9kY+gcuHzANyUZZ+4NpeNdKMUhb6ag0acYej1Y7cmr/F2+4PrggMiVA==",
"dependencies": {
"@babel/runtime": "^7.12.5",
"global": "^4.4.0",
"url-toolkit": "^2.2.1"
"global": "^4.4.0"
},
"engines": {
"node": ">=8",
@ -1108,9 +1107,9 @@
}
},
"node_modules/node-gyp-build": {
"version": "4.8.1",
"resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.1.tgz",
"integrity": "sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==",
"version": "4.8.2",
"resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.2.tgz",
"integrity": "sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw==",
"bin": {
"node-gyp-build": "bin.js",
"node-gyp-build-optional": "optional.js",
@ -1347,9 +1346,9 @@
}
},
"node_modules/tinymce": {
"version": "7.2.1",
"resolved": "https://registry.npmjs.org/tinymce/-/tinymce-7.2.1.tgz",
"integrity": "sha512-ADd1cvdIuq6NWyii0ZOZRuu+9sHIdQfcRNWBcBps2K8vy7OjlRkX6iw7zz1WlL9kY4z4L1DvIP+xOrVX/46aHA=="
"version": "7.3.0",
"resolved": "https://registry.npmjs.org/tinymce/-/tinymce-7.3.0.tgz",
"integrity": "sha512-Ls4PgYlpk73XAxBSBqbVmSl8Mb3DuNfgF01GZ0lY6/MOEVRl3IL+VxC1Oe6165e8WqbqVsxO3Qj/PmoYNvQKGQ=="
},
"node_modules/tinymce-langs": {
"version": "1.0.0",
@ -1419,12 +1418,12 @@
}
},
"node_modules/video.js": {
"version": "8.17.1",
"resolved": "https://registry.npmjs.org/video.js/-/video.js-8.17.1.tgz",
"integrity": "sha512-MKW/oRs5B9UeN6TiF+CsVNGacxV4mPWlyDt1VzRkNXy6gPkCK04oQKB2XEhHHQCtACv3PeOkOXnr5b1ID2LwPg==",
"version": "8.17.3",
"resolved": "https://registry.npmjs.org/video.js/-/video.js-8.17.3.tgz",
"integrity": "sha512-zhhmE0LNxJRA603/48oYzF7GYdT+rQRscvcsouYxFE71aKhalHLBP6S9/XjixnyjcrYgwIx8OQo6eSjcbbAW0Q==",
"dependencies": {
"@babel/runtime": "^7.12.5",
"@videojs/http-streaming": "3.13.1",
"@videojs/http-streaming": "3.13.2",
"@videojs/vhs-utils": "^4.0.0",
"@videojs/xhr": "2.7.0",
"aes-decrypter": "^4.0.1",

View file

@ -1,3 +1,19 @@
<a name="3.13.2"></a>
## [3.13.2](https://github.com/videojs/http-streaming/compare/v3.13.1...v3.13.2) (2024-07-22)
### Bug Fixes
* bad timeline changes ([#1526](https://github.com/videojs/http-streaming/issues/1526)) ([7c63f4e](https://github.com/videojs/http-streaming/commit/7c63f4e))
* fastQualitySwitch stability ([#1525](https://github.com/videojs/http-streaming/issues/1525)) ([28cb9fd](https://github.com/videojs/http-streaming/commit/28cb9fd))
* remove extra abort call ([#1528](https://github.com/videojs/http-streaming/issues/1528)) ([7ec606f](https://github.com/videojs/http-streaming/commit/7ec606f))
* videoTimestampOffset in sourceUpdater ([#1519](https://github.com/videojs/http-streaming/issues/1519)) ([d6851cc](https://github.com/videojs/http-streaming/commit/d6851cc))
### Chores
* Add log export to the demo page ([#1522](https://github.com/videojs/http-streaming/issues/1522)) ([0b4da7c](https://github.com/videojs/http-streaming/commit/0b4da7c))
* Switch to our quality selector ([#1527](https://github.com/videojs/http-streaming/issues/1527)) ([e3d1c42](https://github.com/videojs/http-streaming/commit/e3d1c42))
* Update codecov action ([#1523](https://github.com/videojs/http-streaming/issues/1523)) ([bb9133c](https://github.com/videojs/http-streaming/commit/bb9133c))
<a name="3.13.1"></a>
## [3.13.1](https://github.com/videojs/http-streaming/compare/v3.13.0...v3.13.1) (2024-06-12)

View file

@ -1,4 +1,4 @@
/*! @name @videojs/http-streaming @version 3.13.1 @license Apache-2.0 */
/*! @name @videojs/http-streaming @version 3.13.2 @license Apache-2.0 */
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('video.js'), require('@xmldom/xmldom')) :
typeof define === 'function' && define.amd ? define(['exports', 'video.js', '@xmldom/xmldom'], factory) :
@ -23328,6 +23328,36 @@
return false;
};
const shouldFixBadTimelineChanges = timelineChangeController => {
if (!timelineChangeController) {
return false;
}
const pendingAudioTimelineChange = timelineChangeController.pendingTimelineChange({
type: 'audio'
});
const pendingMainTimelineChange = timelineChangeController.pendingTimelineChange({
type: 'main'
});
const hasPendingTimelineChanges = pendingAudioTimelineChange && pendingMainTimelineChange;
const differentPendingChanges = hasPendingTimelineChanges && pendingAudioTimelineChange.to !== pendingMainTimelineChange.to;
const isNotInitialPendingTimelineChange = hasPendingTimelineChanges && pendingAudioTimelineChange.from !== -1 && pendingMainTimelineChange.from !== -1;
if (isNotInitialPendingTimelineChange && differentPendingChanges) {
return true;
}
return false;
};
const fixBadTimelineChange = segmentLoader => {
if (!segmentLoader) {
return;
}
segmentLoader.pause();
segmentLoader.resetEverything();
segmentLoader.load();
};
const mediaDuration = timingInfos => {
let maxDuration = 0;
['video', 'audio'].forEach(function (type) {
@ -25016,6 +25046,10 @@ Fetch At Buffer: ${this.fetchAtBuffer_}
loaderType: this.loaderType_,
audioDisabled: this.audioDisabled_
})) {
if (shouldFixBadTimelineChanges(this.timelineChangeController_)) {
fixBadTimelineChange(this);
}
return false;
}
@ -25067,7 +25101,8 @@ Fetch At Buffer: ${this.fetchAtBuffer_}
if (hasAudio && !this.audioDisabled_ && !isMuxed && !segmentInfo.audioTimingInfo) {
return false;
}
} // we need to allow an append here even if we're moving to different timelines.
if (shouldWaitForTimelineChange({
timelineChangeController: this.timelineChangeController_,
@ -25076,6 +25111,10 @@ Fetch At Buffer: ${this.fetchAtBuffer_}
loaderType: this.loaderType_,
audioDisabled: this.audioDisabled_
})) {
if (shouldFixBadTimelineChanges(this.timelineChangeController_)) {
fixBadTimelineChange(this);
}
return false;
}
@ -27137,7 +27176,7 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
videoTimestampOffset(offset) {
if (typeof offset !== 'undefined' && this.videoBuffer && // no point in updating if it's the same
this.videoTimestampOffset !== offset) {
this.videoTimestampOffset_ !== offset) {
pushQueue({
type: 'video',
sourceUpdater: this,
@ -31916,16 +31955,11 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
}
runFastQualitySwitch_() {
this.waitingForFastQualityPlaylistReceived_ = false; // Delete all buffered data to allow an immediate quality switch, then seek to give
// the browser a kick to remove any cached frames from the previous rendtion (.04 seconds
// ahead was roughly the minimum that will accomplish this across a variety of content
// in IE and Edge, but seeking in place is sufficient on all other browsers)
// Edge/IE bug: https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/14600375/
// Chrome bug: https://bugs.chromium.org/p/chromium/issues/detail?id=651904
this.waitingForFastQualityPlaylistReceived_ = false; // Delete all buffered data to allow an immediate quality switch.
this.mainSegmentLoader_.pause();
this.mainSegmentLoader_.resetEverything(() => {
this.tech_.setCurrentTime(this.tech_.currentTime());
this.mainSegmentLoader_.load();
}); // don't need to reset audio as it is reset when media changes
}
/**
@ -34250,7 +34284,7 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
initPlugin(this, options);
};
var version$4 = "3.13.1";
var version$4 = "3.13.2";
var version$3 = "7.0.3";

View file

@ -1,4 +1,4 @@
/*! @name @videojs/http-streaming @version 3.13.1 @license Apache-2.0 */
/*! @name @videojs/http-streaming @version 3.13.2 @license Apache-2.0 */
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
@ -17261,6 +17261,36 @@ const shouldWaitForTimelineChange = ({
return false;
};
const shouldFixBadTimelineChanges = timelineChangeController => {
if (!timelineChangeController) {
return false;
}
const pendingAudioTimelineChange = timelineChangeController.pendingTimelineChange({
type: 'audio'
});
const pendingMainTimelineChange = timelineChangeController.pendingTimelineChange({
type: 'main'
});
const hasPendingTimelineChanges = pendingAudioTimelineChange && pendingMainTimelineChange;
const differentPendingChanges = hasPendingTimelineChanges && pendingAudioTimelineChange.to !== pendingMainTimelineChange.to;
const isNotInitialPendingTimelineChange = hasPendingTimelineChanges && pendingAudioTimelineChange.from !== -1 && pendingMainTimelineChange.from !== -1;
if (isNotInitialPendingTimelineChange && differentPendingChanges) {
return true;
}
return false;
};
const fixBadTimelineChange = segmentLoader => {
if (!segmentLoader) {
return;
}
segmentLoader.pause();
segmentLoader.resetEverything();
segmentLoader.load();
};
const mediaDuration = timingInfos => {
let maxDuration = 0;
['video', 'audio'].forEach(function (type) {
@ -18949,6 +18979,10 @@ Fetch At Buffer: ${this.fetchAtBuffer_}
loaderType: this.loaderType_,
audioDisabled: this.audioDisabled_
})) {
if (shouldFixBadTimelineChanges(this.timelineChangeController_)) {
fixBadTimelineChange(this);
}
return false;
}
@ -19000,7 +19034,8 @@ Fetch At Buffer: ${this.fetchAtBuffer_}
if (hasAudio && !this.audioDisabled_ && !isMuxed && !segmentInfo.audioTimingInfo) {
return false;
}
} // we need to allow an append here even if we're moving to different timelines.
if (shouldWaitForTimelineChange({
timelineChangeController: this.timelineChangeController_,
@ -19009,6 +19044,10 @@ Fetch At Buffer: ${this.fetchAtBuffer_}
loaderType: this.loaderType_,
audioDisabled: this.audioDisabled_
})) {
if (shouldFixBadTimelineChanges(this.timelineChangeController_)) {
fixBadTimelineChange(this);
}
return false;
}
@ -21070,7 +21109,7 @@ class SourceUpdater extends videojs__default["default"].EventTarget {
videoTimestampOffset(offset) {
if (typeof offset !== 'undefined' && this.videoBuffer && // no point in updating if it's the same
this.videoTimestampOffset !== offset) {
this.videoTimestampOffset_ !== offset) {
pushQueue({
type: 'video',
sourceUpdater: this,
@ -25849,16 +25888,11 @@ class PlaylistController extends videojs__default["default"].EventTarget {
}
runFastQualitySwitch_() {
this.waitingForFastQualityPlaylistReceived_ = false; // Delete all buffered data to allow an immediate quality switch, then seek to give
// the browser a kick to remove any cached frames from the previous rendtion (.04 seconds
// ahead was roughly the minimum that will accomplish this across a variety of content
// in IE and Edge, but seeking in place is sufficient on all other browsers)
// Edge/IE bug: https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/14600375/
// Chrome bug: https://bugs.chromium.org/p/chromium/issues/detail?id=651904
this.waitingForFastQualityPlaylistReceived_ = false; // Delete all buffered data to allow an immediate quality switch.
this.mainSegmentLoader_.pause();
this.mainSegmentLoader_.resetEverything(() => {
this.tech_.setCurrentTime(this.tech_.currentTime());
this.mainSegmentLoader_.load();
}); // don't need to reset audio as it is reset when media changes
}
/**
@ -28183,7 +28217,7 @@ const reloadSourceOnError = function (options) {
initPlugin(this, options);
};
var version$4 = "3.13.1";
var version$4 = "3.13.2";
var version$3 = "7.0.3";

View file

@ -1,4 +1,4 @@
/*! @name @videojs/http-streaming @version 3.13.1 @license Apache-2.0 */
/*! @name @videojs/http-streaming @version 3.13.2 @license Apache-2.0 */
import _extends from '@babel/runtime/helpers/extends';
import document from 'global/document';
import window$1 from 'global/window';
@ -17249,6 +17249,36 @@ const shouldWaitForTimelineChange = ({
return false;
};
const shouldFixBadTimelineChanges = timelineChangeController => {
if (!timelineChangeController) {
return false;
}
const pendingAudioTimelineChange = timelineChangeController.pendingTimelineChange({
type: 'audio'
});
const pendingMainTimelineChange = timelineChangeController.pendingTimelineChange({
type: 'main'
});
const hasPendingTimelineChanges = pendingAudioTimelineChange && pendingMainTimelineChange;
const differentPendingChanges = hasPendingTimelineChanges && pendingAudioTimelineChange.to !== pendingMainTimelineChange.to;
const isNotInitialPendingTimelineChange = hasPendingTimelineChanges && pendingAudioTimelineChange.from !== -1 && pendingMainTimelineChange.from !== -1;
if (isNotInitialPendingTimelineChange && differentPendingChanges) {
return true;
}
return false;
};
const fixBadTimelineChange = segmentLoader => {
if (!segmentLoader) {
return;
}
segmentLoader.pause();
segmentLoader.resetEverything();
segmentLoader.load();
};
const mediaDuration = timingInfos => {
let maxDuration = 0;
['video', 'audio'].forEach(function (type) {
@ -18937,6 +18967,10 @@ Fetch At Buffer: ${this.fetchAtBuffer_}
loaderType: this.loaderType_,
audioDisabled: this.audioDisabled_
})) {
if (shouldFixBadTimelineChanges(this.timelineChangeController_)) {
fixBadTimelineChange(this);
}
return false;
}
@ -18988,7 +19022,8 @@ Fetch At Buffer: ${this.fetchAtBuffer_}
if (hasAudio && !this.audioDisabled_ && !isMuxed && !segmentInfo.audioTimingInfo) {
return false;
}
} // we need to allow an append here even if we're moving to different timelines.
if (shouldWaitForTimelineChange({
timelineChangeController: this.timelineChangeController_,
@ -18997,6 +19032,10 @@ Fetch At Buffer: ${this.fetchAtBuffer_}
loaderType: this.loaderType_,
audioDisabled: this.audioDisabled_
})) {
if (shouldFixBadTimelineChanges(this.timelineChangeController_)) {
fixBadTimelineChange(this);
}
return false;
}
@ -21058,7 +21097,7 @@ class SourceUpdater extends videojs.EventTarget {
videoTimestampOffset(offset) {
if (typeof offset !== 'undefined' && this.videoBuffer && // no point in updating if it's the same
this.videoTimestampOffset !== offset) {
this.videoTimestampOffset_ !== offset) {
pushQueue({
type: 'video',
sourceUpdater: this,
@ -25837,16 +25876,11 @@ class PlaylistController extends videojs.EventTarget {
}
runFastQualitySwitch_() {
this.waitingForFastQualityPlaylistReceived_ = false; // Delete all buffered data to allow an immediate quality switch, then seek to give
// the browser a kick to remove any cached frames from the previous rendtion (.04 seconds
// ahead was roughly the minimum that will accomplish this across a variety of content
// in IE and Edge, but seeking in place is sufficient on all other browsers)
// Edge/IE bug: https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/14600375/
// Chrome bug: https://bugs.chromium.org/p/chromium/issues/detail?id=651904
this.waitingForFastQualityPlaylistReceived_ = false; // Delete all buffered data to allow an immediate quality switch.
this.mainSegmentLoader_.pause();
this.mainSegmentLoader_.resetEverything(() => {
this.tech_.setCurrentTime(this.tech_.currentTime());
this.mainSegmentLoader_.load();
}); // don't need to reset audio as it is reset when media changes
}
/**
@ -28171,7 +28205,7 @@ const reloadSourceOnError = function (options) {
initPlugin(this, options);
};
var version$4 = "3.13.1";
var version$4 = "3.13.2";
var version$3 = "7.0.3";

View file

@ -1,4 +1,4 @@
/*! @name @videojs/http-streaming @version 3.13.1 @license Apache-2.0 */
/*! @name @videojs/http-streaming @version 3.13.2 @license Apache-2.0 */
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('video.js'), require('@xmldom/xmldom')) :
typeof define === 'function' && define.amd ? define(['exports', 'video.js', '@xmldom/xmldom'], factory) :
@ -23278,6 +23278,36 @@
return false;
};
const shouldFixBadTimelineChanges = timelineChangeController => {
if (!timelineChangeController) {
return false;
}
const pendingAudioTimelineChange = timelineChangeController.pendingTimelineChange({
type: 'audio'
});
const pendingMainTimelineChange = timelineChangeController.pendingTimelineChange({
type: 'main'
});
const hasPendingTimelineChanges = pendingAudioTimelineChange && pendingMainTimelineChange;
const differentPendingChanges = hasPendingTimelineChanges && pendingAudioTimelineChange.to !== pendingMainTimelineChange.to;
const isNotInitialPendingTimelineChange = hasPendingTimelineChanges && pendingAudioTimelineChange.from !== -1 && pendingMainTimelineChange.from !== -1;
if (isNotInitialPendingTimelineChange && differentPendingChanges) {
return true;
}
return false;
};
const fixBadTimelineChange = segmentLoader => {
if (!segmentLoader) {
return;
}
segmentLoader.pause();
segmentLoader.resetEverything();
segmentLoader.load();
};
const mediaDuration = timingInfos => {
let maxDuration = 0;
['video', 'audio'].forEach(function (type) {
@ -24966,6 +24996,10 @@ Fetch At Buffer: ${this.fetchAtBuffer_}
loaderType: this.loaderType_,
audioDisabled: this.audioDisabled_
})) {
if (shouldFixBadTimelineChanges(this.timelineChangeController_)) {
fixBadTimelineChange(this);
}
return false;
}
@ -25017,7 +25051,8 @@ Fetch At Buffer: ${this.fetchAtBuffer_}
if (hasAudio && !this.audioDisabled_ && !isMuxed && !segmentInfo.audioTimingInfo) {
return false;
}
} // we need to allow an append here even if we're moving to different timelines.
if (shouldWaitForTimelineChange({
timelineChangeController: this.timelineChangeController_,
@ -25026,6 +25061,10 @@ Fetch At Buffer: ${this.fetchAtBuffer_}
loaderType: this.loaderType_,
audioDisabled: this.audioDisabled_
})) {
if (shouldFixBadTimelineChanges(this.timelineChangeController_)) {
fixBadTimelineChange(this);
}
return false;
}
@ -27087,7 +27126,7 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
videoTimestampOffset(offset) {
if (typeof offset !== 'undefined' && this.videoBuffer && // no point in updating if it's the same
this.videoTimestampOffset !== offset) {
this.videoTimestampOffset_ !== offset) {
pushQueue({
type: 'video',
sourceUpdater: this,
@ -31866,16 +31905,11 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
}
runFastQualitySwitch_() {
this.waitingForFastQualityPlaylistReceived_ = false; // Delete all buffered data to allow an immediate quality switch, then seek to give
// the browser a kick to remove any cached frames from the previous rendtion (.04 seconds
// ahead was roughly the minimum that will accomplish this across a variety of content
// in IE and Edge, but seeking in place is sufficient on all other browsers)
// Edge/IE bug: https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/14600375/
// Chrome bug: https://bugs.chromium.org/p/chromium/issues/detail?id=651904
this.waitingForFastQualityPlaylistReceived_ = false; // Delete all buffered data to allow an immediate quality switch.
this.mainSegmentLoader_.pause();
this.mainSegmentLoader_.resetEverything(() => {
this.tech_.setCurrentTime(this.tech_.currentTime());
this.mainSegmentLoader_.load();
}); // don't need to reset audio as it is reset when media changes
}
/**
@ -34200,7 +34234,7 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
initPlugin(this, options);
};
var version$4 = "3.13.1";
var version$4 = "3.13.2";
var version$3 = "7.0.3";

File diff suppressed because one or more lines are too long

View file

@ -6,7 +6,7 @@
<link rel="icon" href="logo.svg">
<link href="node_modules/bootstrap/dist/css/bootstrap.css" rel="stylesheet">
<link href="node_modules/video.js/dist/video-js.css" rel="stylesheet">
<link href="node_modules/jb-videojs-hls-quality-selector/dist/videojs-hls-quality-selector.css" rel="stylesheet">
<link rel="stylesheet" href="node_modules/videojs-contrib-quality-menu/dist/videojs-contrib-quality-menu.css">
<style>
.form-check {
background-color: hsl(0, 0%, 90%);
@ -24,6 +24,11 @@
#segment-metadata pre {
overflow: scroll;
}
button.btn-outline-secondary:hover svg,
button.btn-success svg,
button.btn-danger svg {
fill: white;
}
</style>
</head>
<body class="m-4">
@ -52,6 +57,9 @@
<li class="nav-item" role="presentation">
<button class="nav-link" id="profile-tab" data-bs-toggle="tab" data-bs-target="#content-steering" type="button" role="tab" aria-selected="false">Content Steering</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="profile-tab" data-bs-toggle="tab" data-bs-target="#export-logs" type="button" role="tab" aria-selected="false">Logs</button>
</li>
</ul>
<div class="tab-content container-fluid">
@ -238,6 +246,30 @@
</dl>
</div>
</div>
</div>
<div class="tab-pane" id="export-logs" role="historypanel">
<div class="row">
<div class="export-logs col-8">
<p>Download or copy the player logs, which should be included when submitting a playback issue.</p>
<p>To insert a comment into the player log, use <code>player.log()</code> in the console, e.g. <code>player.log('Seeking to 500');player.currentTime(500);</code></p>
<button id="download-logs" class="btn btn-outline-secondary">
<span class="icon">
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368">
<path d="M480-320 280-520l56-58 104 104v-326h80v326l104-104 56 58-200 200ZM240-160q-33 0-56.5-23.5T160-240v-120h80v120h480v-120h80v120q0 33-23.5 56.5T720-160H240Z"/>
</svg>
</span>
Download player logs
</button>
<button id="copy-logs" class="btn btn-outline-secondary">
<span class="icon">
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368">
<path d="M360-240q-33 0-56.5-23.5T280-320v-480q0-33 23.5-56.5T360-880h360q33 0 56.5 23.5T800-800v480q0 33-23.5 56.5T720-240H360Zm0-80h360v-480H360v480ZM200-80q-33 0-56.5-23.5T120-160v-560h80v560h440v80H200Zm160-240v-480 480Z"/>
</svg>
</span>
Copy player logs to clipboard
</button>
</div>
</div>
</div>
</div>

View file

@ -1,6 +1,6 @@
{
"name": "@videojs/http-streaming",
"version": "3.13.1",
"version": "3.13.2",
"description": "Play back HLS and DASH with Video.js, even where it's not natively supported",
"main": "dist/videojs-http-streaming.cjs.js",
"module": "dist/videojs-http-streaming.es.js",
@ -77,7 +77,6 @@
"@videojs/generator-helpers": "~3.1.0",
"bootstrap": "^5.1.0",
"d3": "^3.4.8",
"jb-videojs-hls-quality-selector": "^2.0.2",
"jsdoc": "^3.6.11",
"karma": "^6.4.0",
"lodash": "^4.17.4",
@ -90,6 +89,7 @@
"url-toolkit": "^2.2.1",
"videojs-contrib-eme": "^5.3.1",
"videojs-contrib-quality-levels": "^4.0.0",
"videojs-contrib-quality-menu": "^1.0.3",
"videojs-generate-karma-config": "^8.0.1",
"videojs-generate-rollup-config": "^7.0.0",
"videojs-generator-verify": "~3.0.1",

View file

@ -559,7 +559,7 @@
'node_modules/video.js/dist/alt/video.core',
'node_modules/videojs-contrib-eme/dist/videojs-contrib-eme',
'node_modules/videojs-contrib-quality-levels/dist/videojs-contrib-quality-levels',
'node_modules/jb-videojs-hls-quality-selector/dist/jb-videojs-hls-quality-selector'
'node_modules/videojs-contrib-quality-menu/dist/videojs-contrib-quality-menu'
].map(function(url) {
return url + (event.target.checked ? '.min' : '') + '.js';
@ -595,9 +595,7 @@
player = window.player = window.videojs(videoEl, {
plugins: {
hlsQualitySelector: {
displayCurrentQuality: true
}
qualityMenu: {}
},
liveui: stateEls.liveui.checked,
enableSourceset: mirrorSource,
@ -769,5 +767,75 @@
// run the change handler for the first time
stateEls.minified.dispatchEvent(newEvent('change'));
// Setup the download / copy log buttons
const downloadLogsButton = document.getElementById('download-logs');
const copyLogsButton = document.getElementById('copy-logs');
/**
* Window location and history joined with line breaks, stringifying any objects
*
* @return {string} Stringified history
*/
const stringifiedLogHistory = () => {
const player = document.querySelector('video-js').player;
const logs = [].concat(player.log.history());
const withVhs = !!player.tech(true).vhs;
return [
window.location.href,
window.navigator.userAgent,
`Video.js ${window.videojs.VERSION}`,
`Using VHS: ${withVhs}`,
withVhs ? JSON.stringify(player.tech(true).vhs.version()) : ''
].concat(logs.map(entryArgs => {
return entryArgs.map(item => {
return typeof item === 'object' ? JSON.stringify(item) : item;
});
})).join('\n');
};
/**
* Turn a bootstrap button class on briefly then revert to btn-outline-ptimary
*
* @param {HTMLElement} el Element to add class to
* @param {string} stateClass Bootstrap button class suffix
*/
const doneFeedback = (el, stateClass) => {
el.classList.add(`btn-${stateClass}`);
el.classList.remove('btn-outline-secondary');
window.setTimeout(() => {
el.classList.add('btn-outline-secondary');
el.classList.remove(`btn-${stateClass}`);
}, 1500);
};
downloadLogsButton.addEventListener('click', function() {
const logHistory = stringifiedLogHistory();
const a = document.createElement('a');
const href = URL.createObjectURL(new Blob([logHistory], { type: 'text/plain' }));
a.setAttribute('download', 'vhs-player-logs.txt');
a.setAttribute('target', '_blank');
a.href = href;
a.click();
a.remove();
URL.revokeObjectURL(href);
doneFeedback(downloadLogsButton, 'success');
});
copyLogsButton.addEventListener('click', function() {
const logHistory = stringifiedLogHistory();
window.navigator.clipboard.writeText(logHistory).then(z => {
doneFeedback(copyLogsButton, 'success');
}).catch(e => {
doneFeedback(copyLogsButton, 'danger');
console.log('Copy failed', e);
});
});
};
}(window));

View file

@ -10,9 +10,9 @@ const files = [
'node_modules/videojs-contrib-eme/dist/videojs-contrib-eme.min.js',
'node_modules/videojs-contrib-quality-levels/dist/videojs-contrib-quality-levels.js',
'node_modules/videojs-contrib-quality-levels/dist/videojs-contrib-quality-levels.min.js',
'node_modules/jb-videojs-hls-quality-selector/dist/videojs-hls-quality-selector.css',
'node_modules/jb-videojs-hls-quality-selector/dist/jb-videojs-hls-quality-selector.js',
'node_modules/jb-videojs-hls-quality-selector/dist/jb-videojs-hls-quality-selector.min.js',
'node_modules/videojs-contrib-quality-menu/dist/videojs-contrib-quality-menu.css',
'node_modules/videojs-contrib-quality-menu/dist/videojs-contrib-quality-menu.js',
'node_modules/videojs-contrib-quality-menu/dist/videojs-contrib-quality-menu.min.js',
'node_modules/bootstrap/dist/js/bootstrap.js',
'node_modules/bootstrap/dist/css/bootstrap.css',
'node_modules/d3/d3.min.js',

View file

@ -1059,15 +1059,10 @@ export class PlaylistController extends videojs.EventTarget {
runFastQualitySwitch_() {
this.waitingForFastQualityPlaylistReceived_ = false;
// Delete all buffered data to allow an immediate quality switch, then seek to give
// the browser a kick to remove any cached frames from the previous rendtion (.04 seconds
// ahead was roughly the minimum that will accomplish this across a variety of content
// in IE and Edge, but seeking in place is sufficient on all other browsers)
// Edge/IE bug: https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/14600375/
// Chrome bug: https://bugs.chromium.org/p/chromium/issues/detail?id=651904
// Delete all buffered data to allow an immediate quality switch.
this.mainSegmentLoader_.pause();
this.mainSegmentLoader_.resetEverything(() => {
this.tech_.setCurrentTime(this.tech_.currentTime());
this.mainSegmentLoader_.load();
});
// don't need to reset audio as it is reset when media changes

View file

@ -406,6 +406,32 @@ export const shouldWaitForTimelineChange = ({
return false;
};
export const shouldFixBadTimelineChanges = (timelineChangeController) => {
if (!timelineChangeController) {
return false;
}
const pendingAudioTimelineChange = timelineChangeController.pendingTimelineChange({ type: 'audio' });
const pendingMainTimelineChange = timelineChangeController.pendingTimelineChange({ type: 'main' });
const hasPendingTimelineChanges = pendingAudioTimelineChange && pendingMainTimelineChange;
const differentPendingChanges = hasPendingTimelineChanges && pendingAudioTimelineChange.to !== pendingMainTimelineChange.to;
const isNotInitialPendingTimelineChange = hasPendingTimelineChanges && pendingAudioTimelineChange.from !== -1 && pendingMainTimelineChange.from !== -1;
if (isNotInitialPendingTimelineChange && differentPendingChanges) {
return true;
}
return false;
};
export const fixBadTimelineChange = (segmentLoader) => {
if (!segmentLoader) {
return;
}
segmentLoader.pause();
segmentLoader.resetEverything();
segmentLoader.load();
};
export const mediaDuration = (timingInfos) => {
let maxDuration = 0;
@ -2130,6 +2156,9 @@ Fetch At Buffer: ${this.fetchAtBuffer_}
audioDisabled: this.audioDisabled_
})
) {
if (shouldFixBadTimelineChanges(this.timelineChangeController_)) {
fixBadTimelineChange(this);
}
return false;
}
@ -2180,6 +2209,7 @@ Fetch At Buffer: ${this.fetchAtBuffer_}
return false;
}
// we need to allow an append here even if we're moving to different timelines.
if (
shouldWaitForTimelineChange({
timelineChangeController: this.timelineChangeController_,
@ -2189,6 +2219,9 @@ Fetch At Buffer: ${this.fetchAtBuffer_}
audioDisabled: this.audioDisabled_
})
) {
if (shouldFixBadTimelineChanges(this.timelineChangeController_)) {
fixBadTimelineChange(this);
}
return false;
}

View file

@ -818,7 +818,7 @@ export default class SourceUpdater extends videojs.EventTarget {
if (typeof offset !== 'undefined' &&
this.videoBuffer &&
// no point in updating if it's the same
this.videoTimestampOffset !== offset) {
this.videoTimestampOffset_ !== offset) {
pushQueue({
type: 'video',
sourceUpdater: this,

20
node_modules/chart.js/dist/chart.cjs generated vendored
View file

@ -1,5 +1,5 @@
/*!
* Chart.js v4.4.3
* Chart.js v4.4.4
* https://www.chartjs.org
* (c) 2024 Chart.js Contributors
* Released under the MIT License
@ -1489,8 +1489,10 @@ class BarController extends DatasetController {
const metasets = iScale.getMatchingVisibleMetas(this._type).filter((meta)=>meta.controller.options.grouped);
const stacked = iScale.options.stacked;
const stacks = [];
const currentParsed = this._cachedMeta.controller.getParsed(dataIndex);
const iScaleValue = currentParsed && currentParsed[iScale.axis];
const skipNull = (meta)=>{
const parsed = meta.controller.getParsed(dataIndex);
const parsed = meta._parsed.find((item)=>item[iScale.axis] === iScaleValue);
const val = parsed && parsed[meta.vScale.axis];
if (helpers_segment.isNullOrUndef(val) || isNaN(val)) {
return true;
@ -2758,7 +2760,7 @@ function binarySearch(metaset, axis, value, intersect) {
const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';
let intersectsItem = false;
evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index)=>{
if (element[rangeMethod](position[axis], useFinalPosition)) {
if (element[rangeMethod] && element[rangeMethod](position[axis], useFinalPosition)) {
items.push({
element,
datasetIndex,
@ -5516,7 +5518,7 @@ function needContext(proxy, names) {
return false;
}
var version = "4.4.3";
var version = "4.4.4";
const KNOWN_POSITIONS = [
'top',
@ -6048,8 +6050,8 @@ class Chart {
let i;
if (this._resizeBeforeDraw) {
const { width , height } = this._resizeBeforeDraw;
this._resize(width, height);
this._resizeBeforeDraw = null;
this._resize(width, height);
}
this.clear();
if (this.width <= 0 || this.height <= 0) {
@ -6688,7 +6690,8 @@ class ArcElement extends Element {
], useFinalPosition);
const rAdjust = (this.options.spacing + this.options.borderWidth) / 2;
const _circumference = helpers_segment.valueOrDefault(circumference, endAngle - startAngle);
const betweenAngles = _circumference >= helpers_segment.TAU || helpers_segment._angleBetween(angle, startAngle, endAngle);
const nonZeroBetween = helpers_segment._angleBetween(angle, startAngle, endAngle) && startAngle !== endAngle;
const betweenAngles = _circumference >= helpers_segment.TAU || nonZeroBetween;
const withinRadius = helpers_segment._isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);
return betweenAngles && withinRadius;
}
@ -8909,6 +8912,9 @@ const positioners = {
++count;
}
}
if (count === 0 || xSet.size === 0) {
return false;
}
const xAverage = [
...xSet
].reduce((a, b)=>a + b) / xSet.size;
@ -10865,7 +10871,7 @@ class RadialLinearScale extends LinearScaleBase {
ctx.strokeStyle = color;
ctx.setLineDash(optsAtIndex.borderDash);
ctx.lineDashOffset = optsAtIndex.borderDashOffset;
offset = this.getDistanceFromCenterForValue(opts.ticks.reverse ? this.min : this.max);
offset = this.getDistanceFromCenterForValue(opts.reverse ? this.min : this.max);
position = this.getPointPosition(i, offset);
ctx.beginPath();
ctx.moveTo(this.xCenter, this.yCenter);

File diff suppressed because one or more lines are too long

20
node_modules/chart.js/dist/chart.js generated vendored
View file

@ -1,5 +1,5 @@
/*!
* Chart.js v4.4.3
* Chart.js v4.4.4
* https://www.chartjs.org
* (c) 2024 Chart.js Contributors
* Released under the MIT License
@ -1487,8 +1487,10 @@ class BarController extends DatasetController {
const metasets = iScale.getMatchingVisibleMetas(this._type).filter((meta)=>meta.controller.options.grouped);
const stacked = iScale.options.stacked;
const stacks = [];
const currentParsed = this._cachedMeta.controller.getParsed(dataIndex);
const iScaleValue = currentParsed && currentParsed[iScale.axis];
const skipNull = (meta)=>{
const parsed = meta.controller.getParsed(dataIndex);
const parsed = meta._parsed.find((item)=>item[iScale.axis] === iScaleValue);
const val = parsed && parsed[meta.vScale.axis];
if (isNullOrUndef(val) || isNaN(val)) {
return true;
@ -2756,7 +2758,7 @@ function binarySearch(metaset, axis, value, intersect) {
const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';
let intersectsItem = false;
evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index)=>{
if (element[rangeMethod](position[axis], useFinalPosition)) {
if (element[rangeMethod] && element[rangeMethod](position[axis], useFinalPosition)) {
items.push({
element,
datasetIndex,
@ -5514,7 +5516,7 @@ function needContext(proxy, names) {
return false;
}
var version = "4.4.3";
var version = "4.4.4";
const KNOWN_POSITIONS = [
'top',
@ -6046,8 +6048,8 @@ class Chart {
let i;
if (this._resizeBeforeDraw) {
const { width , height } = this._resizeBeforeDraw;
this._resize(width, height);
this._resizeBeforeDraw = null;
this._resize(width, height);
}
this.clear();
if (this.width <= 0 || this.height <= 0) {
@ -6686,7 +6688,8 @@ class ArcElement extends Element {
], useFinalPosition);
const rAdjust = (this.options.spacing + this.options.borderWidth) / 2;
const _circumference = valueOrDefault(circumference, endAngle - startAngle);
const betweenAngles = _circumference >= TAU || _angleBetween(angle, startAngle, endAngle);
const nonZeroBetween = _angleBetween(angle, startAngle, endAngle) && startAngle !== endAngle;
const betweenAngles = _circumference >= TAU || nonZeroBetween;
const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);
return betweenAngles && withinRadius;
}
@ -8907,6 +8910,9 @@ const positioners = {
++count;
}
}
if (count === 0 || xSet.size === 0) {
return false;
}
const xAverage = [
...xSet
].reduce((a, b)=>a + b) / xSet.size;
@ -10863,7 +10869,7 @@ class RadialLinearScale extends LinearScaleBase {
ctx.strokeStyle = color;
ctx.setLineDash(optsAtIndex.borderDash);
ctx.lineDashOffset = optsAtIndex.borderDashOffset;
offset = this.getDistanceFromCenterForValue(opts.ticks.reverse ? this.min : this.max);
offset = this.getDistanceFromCenterForValue(opts.reverse ? this.min : this.max);
position = this.getPointPosition(i, offset);
ctx.beginPath();
ctx.moveTo(this.xCenter, this.yCenter);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,5 +1,5 @@
/*!
* Chart.js v4.4.3
* Chart.js v4.4.4
* https://www.chartjs.org
* (c) 2024 Chart.js Contributors
* Released under the MIT License

View file

@ -1,5 +1,5 @@
/*!
* Chart.js v4.4.3
* Chart.js v4.4.4
* https://www.chartjs.org
* (c) 2024 Chart.js Contributors
* Released under the MIT License

View file

@ -246,7 +246,7 @@ declare class Chart {
/**
* @param {ChartEvent} e - The event
* @param {import('../types/index.js').ActiveElement[]} lastActive - Previously active elements
* @param {boolean} inChartArea - Is the envent inside chartArea
* @param {boolean} inChartArea - Is the event inside chartArea
* @param {boolean} useFinalPosition - Should the evaluation be done with current or final (after animation) element positions
* @returns {import('../types/index.js').ActiveElement[]} - The active elements
* @pravate

View file

@ -1,5 +1,5 @@
/*!
* Chart.js v4.4.3
* Chart.js v4.4.4
* https://www.chartjs.org
* (c) 2024 Chart.js Contributors
* Released under the MIT License

View file

@ -1,5 +1,5 @@
/*!
* Chart.js v4.4.3
* Chart.js v4.4.4
* https://www.chartjs.org
* (c) 2024 Chart.js Contributors
* Released under the MIT License

View file

@ -2344,6 +2344,7 @@ export interface LegendElement<TType extends ChartType> extends Element<AnyObjec
ctx: CanvasRenderingContext2D;
legendItems?: LegendItem[];
options: LegendOptions<TType>;
fit(): void;
}
export interface LegendOptions<TType extends ChartType> {
@ -2404,11 +2405,6 @@ export interface LegendOptions<TType extends ChartType> {
* @default fontSize
*/
boxHeight: number;
/**
* Padding between the color box and the text
* @default 1
*/
boxPadding: number;
/**
* Color of label
* @see Defaults.color
@ -3581,6 +3577,8 @@ export type RadialLinearScaleOptions = CoreScaleOptions & {
};
export interface RadialLinearScale<O extends RadialLinearScaleOptions = RadialLinearScaleOptions> extends Scale<O> {
xCenter: number;
yCenter: number;
setCenterPoint(leftMovement: number, rightMovement: number, topMovement: number, bottomMovement: number): void;
getIndexAngle(index: number): number;
getDistanceFromCenterForValue(value: number): number;
@ -3744,13 +3742,16 @@ export type ScaleChartOptions<TType extends ChartType = ChartType> = {
};
};
export type ChartOptions<TType extends ChartType = ChartType> = DeepPartial<
export type ChartOptions<TType extends ChartType = ChartType> = Exclude<
DeepPartial<
CoreChartOptions<TType> &
ElementChartOptions<TType> &
PluginChartOptions<TType> &
DatasetChartOptions<TType> &
ScaleChartOptions<TType> &
ChartTypeRegistry[TType]['chartOptions']
>,
DeepPartial<unknown[]>
>;
export type DefaultDataPoint<TType extends ChartType> = DistributiveArray<ChartTypeRegistry[TType]['defaultDataPoint']>;
@ -3815,7 +3816,7 @@ export interface ChartConfiguration<
> {
type: TType;
data: ChartData<TType, TData, TLabel>;
options?: ChartOptions<TType>;
options?: ChartOptions<TType> | undefined;
plugins?: Plugin<TType>[];
platform?: typeof BasePlatform;
}
@ -3826,6 +3827,6 @@ export interface ChartConfigurationCustomTypesPerDataset<
TLabel = unknown
> {
data: ChartDataCustomTypesPerDataset<TType, TData, TLabel>;
options?: ChartOptions<TType>;
options?: ChartOptions<TType> | undefined;
plugins?: Plugin<TType>[];
}

2
node_modules/chart.js/package.json generated vendored
View file

@ -2,7 +2,7 @@
"name": "chart.js",
"homepage": "https://www.chartjs.org",
"description": "Simple HTML5 charts using the canvas element.",
"version": "4.4.3",
"version": "4.4.4",
"license": "MIT",
"type": "module",
"sideEffects": [

View file

@ -246,9 +246,10 @@
skipFunctionalTests: true
},
startDelimiterOverlappingBetweenPESPackets: {
url: 'https://hlsjs-test-streams-wistia.s3.amazonaws.com/start-delimiter.m3u8',
url: 'https://wistia.github.io/hlsjs-test-streams/assets/start-delimiter.m3u8',
description: "A stream with the start delimiter overlapping between PES packets.\n Related to https://github.com/video-dev/hls.js/issues/3834, where Apple Silicon chips throw decoding errors if\n NAL units are not starting right at the beginning of the PES packet when using hardware accelerated decoding.",
abr: false
abr: false,
skipFunctionalTests: true
}
};

File diff suppressed because one or more lines are too long

144
node_modules/hls.js/dist/hls.js generated vendored
View file

@ -552,7 +552,7 @@
// Some browsers don't allow to use bind on console object anyway
// fallback to default if needed
try {
exportedLogger.log("Debug logs enabled for \"" + id + "\" in hls.js version " + "1.5.13");
exportedLogger.log("Debug logs enabled for \"" + id + "\" in hls.js version " + "1.5.15");
} catch (e) {
exportedLogger = fakeLogger;
}
@ -1288,15 +1288,19 @@
// System IDs for which we can extract a key ID from "encrypted" event PSSH
var KeySystemIds = {
CENC: "1077efecc0b24d02ace33c1e52e2fb4b",
CLEARKEY: "e2719d58a985b3c9781ab030af78d30e",
FAIRPLAY: "94ce86fb07ff4f43adb893d2fa968ca2",
PLAYREADY: "9a04f07998404286ab92e65be0885f95",
WIDEVINE: "edef8ba979d64acea3c827dcd51d21ed"
};
function keySystemIdToKeySystemDomain(systemId) {
if (systemId === KeySystemIds.WIDEVINE) {
return KeySystems.WIDEVINE;
// } else if (systemId === KeySystemIds.PLAYREADY) {
// return KeySystems.PLAYREADY;
// } else if (systemId === KeySystemIds.CENC || systemId === KeySystemIds.CLEARKEY) {
// return KeySystems.CLEARKEY;
} else if (systemId === KeySystemIds.PLAYREADY) {
return KeySystems.PLAYREADY;
} else if (systemId === KeySystemIds.CENC || systemId === KeySystemIds.CLEARKEY) {
return KeySystems.CLEARKEY;
}
}
function keySystemDomainToKeySystemFormat(keySystem) {
@ -2178,7 +2182,6 @@
return findBox(sinf, ['schi', 'tenc'])[0];
}
}
logger.error("[eme] missing 'schm' box");
return null;
}
@ -2858,43 +2861,77 @@
// 16 bytes
kidCount, kids, dataSize, data || new Uint8Array());
}
function parsePssh(initData) {
if (!(initData instanceof ArrayBuffer) || initData.byteLength < 32) {
return null;
function parseMultiPssh(initData) {
var results = [];
if (initData instanceof ArrayBuffer) {
var length = initData.byteLength;
var offset = 0;
while (offset + 32 < length) {
var view = new DataView(initData, offset);
var pssh = parsePssh(view);
results.push(pssh);
offset += pssh.size;
}
}
var result = {
version: 0,
systemId: '',
kids: null,
data: null
};
var view = new DataView(initData);
var boxSize = view.getUint32(0);
if (initData.byteLength !== boxSize && boxSize > 44) {
return null;
return results;
}
function parsePssh(view) {
var size = view.getUint32(0);
var offset = view.byteOffset;
var length = view.byteLength;
if (length < size) {
return {
offset: offset,
size: length
};
}
var type = view.getUint32(4);
if (type !== 0x70737368) {
return null;
return {
offset: offset,
size: size
};
}
result.version = view.getUint32(8) >>> 24;
if (result.version > 1) {
return null;
var version = view.getUint32(8) >>> 24;
if (version !== 0 && version !== 1) {
return {
offset: offset,
size: size
};
}
result.systemId = Hex.hexDump(new Uint8Array(initData, 12, 16));
var buffer = view.buffer;
var systemId = Hex.hexDump(new Uint8Array(buffer, offset + 12, 16));
var dataSizeOrKidCount = view.getUint32(28);
if (result.version === 0) {
if (boxSize - 32 < dataSizeOrKidCount) {
return null;
var kids = null;
var data = null;
if (version === 0) {
if (size - 32 < dataSizeOrKidCount || dataSizeOrKidCount < 22) {
return {
offset: offset,
size: size
};
}
result.data = new Uint8Array(initData, 32, dataSizeOrKidCount);
} else if (result.version === 1) {
result.kids = [];
data = new Uint8Array(buffer, offset + 32, dataSizeOrKidCount);
} else if (version === 1) {
if (!dataSizeOrKidCount || length < offset + 32 + dataSizeOrKidCount * 16 + 16) {
return {
offset: offset,
size: size
};
}
kids = [];
for (var i = 0; i < dataSizeOrKidCount; i++) {
result.kids.push(new Uint8Array(initData, 32 + i * 16, 16));
kids.push(new Uint8Array(buffer, offset + 32 + i * 16, 16));
}
}
return result;
return {
version: version,
systemId: systemId,
kids: kids,
data: data,
offset: offset,
size: size
};
}
var keyUriToKeyIdMap = {};
@ -19192,8 +19229,8 @@
_createClass(BufferController, [{
key: "mediaSrc",
get: function get() {
var _this$media;
var media = ((_this$media = this.media) == null ? void 0 : _this$media.firstChild) || this.media;
var _this$media, _this$media$querySele;
var media = ((_this$media = this.media) == null ? void 0 : (_this$media$querySele = _this$media.querySelector) == null ? void 0 : _this$media$querySele.call(_this$media, 'source')) || this.media;
return media == null ? void 0 : media.src;
}
}]);
@ -22856,7 +22893,8 @@
var _this5 = this;
var initDataType = event.initDataType,
initData = event.initData;
this.debug("\"" + event.type + "\" event: init data type: \"" + initDataType + "\"");
var logMessage = "\"" + event.type + "\" event: init data type: \"" + initDataType + "\"";
this.debug(logMessage);
// Ignore event when initData is null
if (initData === null) {
@ -22871,24 +22909,37 @@
var sinf = base64Decode(JSON.parse(json).sinf);
var tenc = parseSinf(new Uint8Array(sinf));
if (!tenc) {
return;
throw new Error("'schm' box missing or not cbcs/cenc with schi > tenc");
}
keyId = tenc.subarray(8, 24);
keySystemDomain = KeySystems.FAIRPLAY;
} catch (error) {
this.warn('Failed to parse sinf "encrypted" event message initData');
this.warn(logMessage + " Failed to parse sinf: " + error);
return;
}
} else {
// Support clear-lead key-session creation (otherwise depend on playlist keys)
var psshInfo = parsePssh(initData);
if (psshInfo === null) {
// Support Widevine clear-lead key-session creation (otherwise depend on playlist keys)
var psshResults = parseMultiPssh(initData);
var psshInfo = psshResults.filter(function (pssh) {
return pssh.systemId === KeySystemIds.WIDEVINE;
})[0];
if (!psshInfo) {
if (psshResults.length === 0 || psshResults.some(function (pssh) {
return !pssh.systemId;
})) {
this.warn(logMessage + " contains incomplete or invalid pssh data");
} else {
this.log("ignoring " + logMessage + " for " + psshResults.map(function (pssh) {
return keySystemIdToKeySystemDomain(pssh.systemId);
}).join(',') + " pssh data in favor of playlist keys");
}
return;
}
if (psshInfo.version === 0 && psshInfo.systemId === KeySystemIds.WIDEVINE && psshInfo.data) {
keyId = psshInfo.data.subarray(8, 24);
}
keySystemDomain = keySystemIdToKeySystemDomain(psshInfo.systemId);
if (psshInfo.version === 0 && psshInfo.data) {
var offset = psshInfo.data.length - 22;
keyId = psshInfo.data.subarray(offset, offset + 16);
}
}
if (!keySystemDomain || !keyId) {
return;
@ -22901,12 +22952,15 @@
// Match playlist key
var keyContext = mediaKeySessions[i];
var decryptdata = keyContext.decryptdata;
if (decryptdata.pssh || !decryptdata.keyId) {
if (!decryptdata.keyId) {
return 0; // continue
}
var oldKeyIdHex = Hex.hexDump(decryptdata.keyId);
if (keyIdHex === oldKeyIdHex || decryptdata.uri.replace(/-/g, '').indexOf(keyIdHex) !== -1) {
keySessionContextPromise = keyIdToKeySessionPromise[oldKeyIdHex];
if (decryptdata.pssh) {
return 1; // break
}
delete keyIdToKeySessionPromise[oldKeyIdHex];
decryptdata.pssh = new Uint8Array(initData);
decryptdata.keyId = keyId;
@ -29242,7 +29296,7 @@
* Get the video-dev/hls.js package version.
*/
function get() {
return "1.5.13";
return "1.5.15";
}
}, {
key: "Events",

File diff suppressed because one or more lines are too long

View file

@ -521,7 +521,7 @@
// Some browsers don't allow to use bind on console object anyway
// fallback to default if needed
try {
exportedLogger.log("Debug logs enabled for \"" + id + "\" in hls.js version " + "1.5.13");
exportedLogger.log("Debug logs enabled for \"" + id + "\" in hls.js version " + "1.5.15");
} catch (e) {
exportedLogger = fakeLogger;
}
@ -1981,7 +1981,6 @@
return findBox(sinf, ['schi', 'tenc'])[0];
}
}
logger.error("[eme] missing 'schm' box");
return null;
}
@ -8204,8 +8203,8 @@
_createClass(BufferController, [{
key: "mediaSrc",
get: function get() {
var _this$media;
var media = ((_this$media = this.media) == null ? void 0 : _this$media.firstChild) || this.media;
var _this$media, _this$media$querySele;
var media = ((_this$media = this.media) == null ? void 0 : (_this$media$querySele = _this$media.querySelector) == null ? void 0 : _this$media$querySele.call(_this$media, 'source')) || this.media;
return media == null ? void 0 : media.src;
}
}]);
@ -21066,7 +21065,7 @@
* Get the video-dev/hls.js package version.
*/
function get() {
return "1.5.13";
return "1.5.15";
}
}, {
key: "Events",

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -411,7 +411,7 @@ function enableLogs(debugConfig, id) {
// Some browsers don't allow to use bind on console object anyway
// fallback to default if needed
try {
exportedLogger.log(`Debug logs enabled for "${id}" in hls.js version ${"1.5.13"}`);
exportedLogger.log(`Debug logs enabled for "${id}" in hls.js version ${"1.5.15"}`);
} catch (e) {
exportedLogger = fakeLogger;
}
@ -1796,7 +1796,6 @@ function parseSinf(sinf) {
return findBox(sinf, ['schi', 'tenc'])[0];
}
}
logger.error(`[eme] missing 'schm' box`);
return null;
}
@ -7797,8 +7796,8 @@ class BufferController {
}
}
get mediaSrc() {
var _this$media;
const media = ((_this$media = this.media) == null ? void 0 : _this$media.firstChild) || this.media;
var _this$media, _this$media$querySele;
const media = ((_this$media = this.media) == null ? void 0 : (_this$media$querySele = _this$media.querySelector) == null ? void 0 : _this$media$querySele.call(_this$media, 'source')) || this.media;
return media == null ? void 0 : media.src;
}
_onSBUpdateStart(type) {
@ -19731,7 +19730,7 @@ class Hls {
* Get the video-dev/hls.js package version.
*/
static get version() {
return "1.5.13";
return "1.5.15";
}
/**

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

138
node_modules/hls.js/dist/hls.mjs generated vendored
View file

@ -411,7 +411,7 @@ function enableLogs(debugConfig, id) {
// Some browsers don't allow to use bind on console object anyway
// fallback to default if needed
try {
exportedLogger.log(`Debug logs enabled for "${id}" in hls.js version ${"1.5.13"}`);
exportedLogger.log(`Debug logs enabled for "${id}" in hls.js version ${"1.5.15"}`);
} catch (e) {
exportedLogger = fakeLogger;
}
@ -1071,15 +1071,19 @@ function keySystemFormatToKeySystemDomain(format) {
// System IDs for which we can extract a key ID from "encrypted" event PSSH
var KeySystemIds = {
CENC: "1077efecc0b24d02ace33c1e52e2fb4b",
CLEARKEY: "e2719d58a985b3c9781ab030af78d30e",
FAIRPLAY: "94ce86fb07ff4f43adb893d2fa968ca2",
PLAYREADY: "9a04f07998404286ab92e65be0885f95",
WIDEVINE: "edef8ba979d64acea3c827dcd51d21ed"
};
function keySystemIdToKeySystemDomain(systemId) {
if (systemId === KeySystemIds.WIDEVINE) {
return KeySystems.WIDEVINE;
// } else if (systemId === KeySystemIds.PLAYREADY) {
// return KeySystems.PLAYREADY;
// } else if (systemId === KeySystemIds.CENC || systemId === KeySystemIds.CLEARKEY) {
// return KeySystems.CLEARKEY;
} else if (systemId === KeySystemIds.PLAYREADY) {
return KeySystems.PLAYREADY;
} else if (systemId === KeySystemIds.CENC || systemId === KeySystemIds.CLEARKEY) {
return KeySystems.CLEARKEY;
}
}
function keySystemDomainToKeySystemFormat(keySystem) {
@ -1952,7 +1956,6 @@ function parseSinf(sinf) {
return findBox(sinf, ['schi', 'tenc'])[0];
}
}
logger.error(`[eme] missing 'schm' box`);
return null;
}
@ -2627,43 +2630,77 @@ function mp4pssh(systemId, keyids, data) {
// 16 bytes
kidCount, kids, dataSize, data || new Uint8Array());
}
function parsePssh(initData) {
if (!(initData instanceof ArrayBuffer) || initData.byteLength < 32) {
return null;
function parseMultiPssh(initData) {
const results = [];
if (initData instanceof ArrayBuffer) {
const length = initData.byteLength;
let offset = 0;
while (offset + 32 < length) {
const view = new DataView(initData, offset);
const pssh = parsePssh(view);
results.push(pssh);
offset += pssh.size;
}
}
const result = {
version: 0,
systemId: '',
kids: null,
data: null
};
const view = new DataView(initData);
const boxSize = view.getUint32(0);
if (initData.byteLength !== boxSize && boxSize > 44) {
return null;
return results;
}
function parsePssh(view) {
const size = view.getUint32(0);
const offset = view.byteOffset;
const length = view.byteLength;
if (length < size) {
return {
offset,
size: length
};
}
const type = view.getUint32(4);
if (type !== 0x70737368) {
return null;
return {
offset,
size
};
}
result.version = view.getUint32(8) >>> 24;
if (result.version > 1) {
return null;
const version = view.getUint32(8) >>> 24;
if (version !== 0 && version !== 1) {
return {
offset,
size
};
}
result.systemId = Hex.hexDump(new Uint8Array(initData, 12, 16));
const buffer = view.buffer;
const systemId = Hex.hexDump(new Uint8Array(buffer, offset + 12, 16));
const dataSizeOrKidCount = view.getUint32(28);
if (result.version === 0) {
if (boxSize - 32 < dataSizeOrKidCount) {
return null;
let kids = null;
let data = null;
if (version === 0) {
if (size - 32 < dataSizeOrKidCount || dataSizeOrKidCount < 22) {
return {
offset,
size
};
}
result.data = new Uint8Array(initData, 32, dataSizeOrKidCount);
} else if (result.version === 1) {
result.kids = [];
data = new Uint8Array(buffer, offset + 32, dataSizeOrKidCount);
} else if (version === 1) {
if (!dataSizeOrKidCount || length < offset + 32 + dataSizeOrKidCount * 16 + 16) {
return {
offset,
size
};
}
kids = [];
for (let i = 0; i < dataSizeOrKidCount; i++) {
result.kids.push(new Uint8Array(initData, 32 + i * 16, 16));
kids.push(new Uint8Array(buffer, offset + 32 + i * 16, 16));
}
}
return result;
return {
version,
systemId,
kids,
data,
offset,
size
};
}
let keyUriToKeyIdMap = {};
@ -18532,8 +18569,8 @@ class BufferController {
}
}
get mediaSrc() {
var _this$media;
const media = ((_this$media = this.media) == null ? void 0 : _this$media.firstChild) || this.media;
var _this$media, _this$media$querySele;
const media = ((_this$media = this.media) == null ? void 0 : (_this$media$querySele = _this$media.querySelector) == null ? void 0 : _this$media$querySele.call(_this$media, 'source')) || this.media;
return media == null ? void 0 : media.src;
}
_onSBUpdateStart(type) {
@ -22252,7 +22289,8 @@ class EMEController {
initDataType,
initData
} = event;
this.debug(`"${event.type}" event: init data type: "${initDataType}"`);
const logMessage = `"${event.type}" event: init data type: "${initDataType}"`;
this.debug(logMessage);
// Ignore event when initData is null
if (initData === null) {
@ -22267,24 +22305,31 @@ class EMEController {
const sinf = base64Decode(JSON.parse(json).sinf);
const tenc = parseSinf(new Uint8Array(sinf));
if (!tenc) {
return;
throw new Error(`'schm' box missing or not cbcs/cenc with schi > tenc`);
}
keyId = tenc.subarray(8, 24);
keySystemDomain = KeySystems.FAIRPLAY;
} catch (error) {
this.warn('Failed to parse sinf "encrypted" event message initData');
this.warn(`${logMessage} Failed to parse sinf: ${error}`);
return;
}
} else {
// Support clear-lead key-session creation (otherwise depend on playlist keys)
const psshInfo = parsePssh(initData);
if (psshInfo === null) {
// Support Widevine clear-lead key-session creation (otherwise depend on playlist keys)
const psshResults = parseMultiPssh(initData);
const psshInfo = psshResults.filter(pssh => pssh.systemId === KeySystemIds.WIDEVINE)[0];
if (!psshInfo) {
if (psshResults.length === 0 || psshResults.some(pssh => !pssh.systemId)) {
this.warn(`${logMessage} contains incomplete or invalid pssh data`);
} else {
this.log(`ignoring ${logMessage} for ${psshResults.map(pssh => keySystemIdToKeySystemDomain(pssh.systemId)).join(',')} pssh data in favor of playlist keys`);
}
return;
}
if (psshInfo.version === 0 && psshInfo.systemId === KeySystemIds.WIDEVINE && psshInfo.data) {
keyId = psshInfo.data.subarray(8, 24);
}
keySystemDomain = keySystemIdToKeySystemDomain(psshInfo.systemId);
if (psshInfo.version === 0 && psshInfo.data) {
const offset = psshInfo.data.length - 22;
keyId = psshInfo.data.subarray(offset, offset + 16);
}
}
if (!keySystemDomain || !keyId) {
return;
@ -22299,12 +22344,15 @@ class EMEController {
// Match playlist key
const keyContext = mediaKeySessions[i];
const decryptdata = keyContext.decryptdata;
if (decryptdata.pssh || !decryptdata.keyId) {
if (!decryptdata.keyId) {
continue;
}
const oldKeyIdHex = Hex.hexDump(decryptdata.keyId);
if (keyIdHex === oldKeyIdHex || decryptdata.uri.replace(/-/g, '').indexOf(keyIdHex) !== -1) {
keySessionContextPromise = keyIdToKeySessionPromise[oldKeyIdHex];
if (decryptdata.pssh) {
break;
}
delete keyIdToKeySessionPromise[oldKeyIdHex];
decryptdata.pssh = new Uint8Array(initData);
decryptdata.keyId = keyId;
@ -27734,7 +27782,7 @@ class Hls {
* Get the video-dev/hls.js package version.
*/
static get version() {
return "1.5.13";
return "1.5.15";
}
/**

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

2
node_modules/hls.js/package.json generated vendored
View file

@ -130,5 +130,5 @@
"url-toolkit": "2.2.5",
"wrangler": "3.22.4"
},
"version": "1.5.13"
"version": "1.5.15"
}

View file

@ -1026,8 +1026,7 @@ export default class BufferController implements ComponentAPI {
};
private get mediaSrc(): string | undefined {
const media =
(this.media?.firstChild as HTMLSourceElement | null) || this.media;
const media = this.media?.querySelector?.('source') || this.media;
return media?.src;
}

View file

@ -14,8 +14,6 @@ import {
keySystemFormatToKeySystemDomain,
KeySystemIds,
keySystemIdToKeySystemDomain,
} from '../utils/mediakeys-helper';
import {
KeySystems,
requestMediaKeySystemAccess,
} from '../utils/mediakeys-helper';
@ -23,7 +21,13 @@ import { strToUtf8array } from '../utils/keysystem-util';
import { base64Decode } from '../utils/numeric-encoding-utils';
import { DecryptData, LevelKey } from '../loader/level-key';
import Hex from '../utils/hex';
import { bin2str, parsePssh, parseSinf } from '../utils/mp4-tools';
import {
bin2str,
parseMultiPssh,
parseSinf,
PsshData,
PsshInvalidResult,
} from '../utils/mp4-tools';
import { EventEmitter } from 'eventemitter3';
import type Hls from '../hls';
import type { ComponentAPI } from '../types/component-api';
@ -525,7 +529,8 @@ class EMEController implements ComponentAPI {
private _onMediaEncrypted(event: MediaEncryptedEvent) {
const { initDataType, initData } = event;
this.debug(`"${event.type}" event: init data type: "${initDataType}"`);
const logMessage = `"${event.type}" event: init data type: "${initDataType}"`;
this.debug(logMessage);
// Ignore event when initData is null
if (initData === null) {
@ -545,30 +550,42 @@ class EMEController implements ComponentAPI {
const sinf = base64Decode(JSON.parse(json).sinf);
const tenc = parseSinf(new Uint8Array(sinf));
if (!tenc) {
return;
throw new Error(
`'schm' box missing or not cbcs/cenc with schi > tenc`,
);
}
keyId = tenc.subarray(8, 24);
keySystemDomain = KeySystems.FAIRPLAY;
} catch (error) {
this.warn('Failed to parse sinf "encrypted" event message initData');
this.warn(`${logMessage} Failed to parse sinf: ${error}`);
return;
}
} else {
// Support clear-lead key-session creation (otherwise depend on playlist keys)
const psshInfo = parsePssh(initData);
if (psshInfo === null) {
// Support Widevine clear-lead key-session creation (otherwise depend on playlist keys)
const psshResults = parseMultiPssh(initData);
const psshInfo = psshResults.filter(
(pssh): pssh is PsshData => pssh.systemId === KeySystemIds.WIDEVINE,
)[0];
if (!psshInfo) {
if (
psshResults.length === 0 ||
psshResults.some((pssh): pssh is PsshInvalidResult => !pssh.systemId)
) {
this.warn(`${logMessage} contains incomplete or invalid pssh data`);
} else {
this.log(
`ignoring ${logMessage} for ${(psshResults as PsshData[])
.map((pssh) => keySystemIdToKeySystemDomain(pssh.systemId))
.join(',')} pssh data in favor of playlist keys`,
);
}
return;
}
if (
psshInfo.version === 0 &&
psshInfo.systemId === KeySystemIds.WIDEVINE &&
psshInfo.data
) {
keyId = psshInfo.data.subarray(8, 24);
keySystemDomain = keySystemIdToKeySystemDomain(psshInfo.systemId);
if (psshInfo.version === 0 && psshInfo.data) {
const offset = psshInfo.data.length - 22;
keyId = psshInfo.data.subarray(offset, offset + 16);
}
keySystemDomain = keySystemIdToKeySystemDomain(
psshInfo.systemId as KeySystemIds,
);
}
if (!keySystemDomain || !keyId) {
@ -583,7 +600,7 @@ class EMEController implements ComponentAPI {
// Match playlist key
const keyContext = mediaKeySessions[i];
const decryptdata = keyContext.decryptdata;
if (decryptdata.pssh || !decryptdata.keyId) {
if (!decryptdata.keyId) {
continue;
}
const oldKeyIdHex = Hex.hexDump(decryptdata.keyId);
@ -592,6 +609,9 @@ class EMEController implements ComponentAPI {
decryptdata.uri.replace(/-/g, '').indexOf(keyIdHex) !== -1
) {
keySessionContextPromise = keyIdToKeySessionPromise[oldKeyIdHex];
if (decryptdata.pssh) {
break;
}
delete keyIdToKeySessionPromise[oldKeyIdHex];
decryptdata.pssh = new Uint8Array(initData);
decryptdata.keyId = keyId;

View file

@ -36,10 +36,10 @@ export function keySystemFormatToKeySystemDomain(
// System IDs for which we can extract a key ID from "encrypted" event PSSH
export const enum KeySystemIds {
// CENC = '1077efecc0b24d02ace33c1e52e2fb4b'
// CLEARKEY = 'e2719d58a985b3c9781ab030af78d30e',
// FAIRPLAY = '94ce86fb07ff4f43adb893d2fa968ca2',
// PLAYREADY = '9a04f07998404286ab92e65be0885f95',
CENC = '1077efecc0b24d02ace33c1e52e2fb4b',
CLEARKEY = 'e2719d58a985b3c9781ab030af78d30e',
FAIRPLAY = '94ce86fb07ff4f43adb893d2fa968ca2',
PLAYREADY = '9a04f07998404286ab92e65be0885f95',
WIDEVINE = 'edef8ba979d64acea3c827dcd51d21ed',
}
@ -48,10 +48,13 @@ export function keySystemIdToKeySystemDomain(
): KeySystems | undefined {
if (systemId === KeySystemIds.WIDEVINE) {
return KeySystems.WIDEVINE;
// } else if (systemId === KeySystemIds.PLAYREADY) {
// return KeySystems.PLAYREADY;
// } else if (systemId === KeySystemIds.CENC || systemId === KeySystemIds.CLEARKEY) {
// return KeySystems.CLEARKEY;
} else if (systemId === KeySystemIds.PLAYREADY) {
return KeySystems.PLAYREADY;
} else if (
systemId === KeySystemIds.CENC ||
systemId === KeySystemIds.CLEARKEY
) {
return KeySystems.CLEARKEY;
}
}

View file

@ -3,6 +3,7 @@ import { sliceUint8 } from './typed-array';
import { utf8ArrayToStr } from '../demux/id3';
import { logger } from '../utils/logger';
import Hex from './hex';
import type { KeySystemIds } from './mediakeys-helper';
import type { PassthroughTrack, UserdataSample } from '../types/demuxer';
import type { DecryptData } from '../loader/level-key';
@ -545,7 +546,6 @@ export function parseSinf(sinf: Uint8Array): Uint8Array | null {
return findBox(sinf, ['schi', 'tenc'])[0];
}
}
logger.error(`[eme] missing 'schm' box`);
return null;
}
@ -1349,41 +1349,86 @@ export function mp4pssh(
);
}
export function parsePssh(initData: ArrayBuffer) {
if (!(initData instanceof ArrayBuffer) || initData.byteLength < 32) {
return null;
export type PsshData = {
version: 0 | 1;
systemId: KeySystemIds;
kids: null | Uint8Array[];
data: null | Uint8Array;
offset: number;
size: number;
};
export type PsshInvalidResult = {
systemId?: undefined;
offset: number;
size: number;
};
export function parseMultiPssh(
initData: ArrayBuffer,
): (PsshData | PsshInvalidResult)[] {
const results: (PsshData | PsshInvalidResult)[] = [];
if (initData instanceof ArrayBuffer) {
const length = initData.byteLength;
let offset = 0;
while (offset + 32 < length) {
const view = new DataView(initData, offset);
const pssh = parsePssh(view);
results.push(pssh);
offset += pssh.size;
}
}
const result = {
version: 0,
systemId: '',
kids: null as null | Uint8Array[],
data: null as null | Uint8Array,
};
const view = new DataView(initData);
const boxSize = view.getUint32(0);
if (initData.byteLength !== boxSize && boxSize > 44) {
return null;
return results;
}
function parsePssh(view: DataView): PsshData | PsshInvalidResult {
const size = view.getUint32(0);
const offset = view.byteOffset;
const length = view.byteLength;
if (length < size) {
return {
offset,
size: length,
};
}
const type = view.getUint32(4);
if (type !== 0x70737368) {
return null;
return { offset, size };
}
result.version = view.getUint32(8) >>> 24;
if (result.version > 1) {
return null;
const version = view.getUint32(8) >>> 24;
if (version !== 0 && version !== 1) {
return { offset, size };
}
result.systemId = Hex.hexDump(new Uint8Array(initData, 12, 16));
const buffer = view.buffer;
const systemId = Hex.hexDump(
new Uint8Array(buffer, offset + 12, 16),
) as KeySystemIds;
const dataSizeOrKidCount = view.getUint32(28);
if (result.version === 0) {
if (boxSize - 32 < dataSizeOrKidCount) {
return null;
let kids: null | Uint8Array[] = null;
let data: null | Uint8Array = null;
if (version === 0) {
if (size - 32 < dataSizeOrKidCount || dataSizeOrKidCount < 22) {
return { offset, size };
}
result.data = new Uint8Array(initData, 32, dataSizeOrKidCount);
} else if (result.version === 1) {
result.kids = [];
data = new Uint8Array(buffer, offset + 32, dataSizeOrKidCount);
} else if (version === 1) {
if (
!dataSizeOrKidCount ||
length < offset + 32 + dataSizeOrKidCount * 16 + 16
) {
return { offset, size };
}
kids = [];
for (let i = 0; i < dataSizeOrKidCount; i++) {
result.kids.push(new Uint8Array(initData, 32 + i * 16, 16));
kids.push(new Uint8Array(buffer, offset + 32 + i * 16, 16));
}
}
return result;
return {
version,
systemId,
kids,
data,
offset,
size,
};
}

View file

@ -1,6 +0,0 @@
version: 2
updates:
- package-ecosystem: github-actions
directory: "/"
schedule:
interval: monthly

View file

@ -1,51 +0,0 @@
name: Filestash
on:
push:
branches:
- main
permissions:
contents: read # to fetch code (actions/checkout)
jobs:
update:
runs-on: ubuntu-latest
environment: filestash
env:
NODE_VERSION: 20.x
name: Update Filestash
steps:
- name: Checkout
uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2
- name: Use Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
with:
node-version: ${{ env.NODE_VERSION }}
- name: Cache
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ env.NODE_VERSION }}-npm-lock-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-${{ env.NODE_VERSION }}-npm-lock-
- name: Install dependencies
run: npm install
- name: Build
run: npm run build
- name: Set up SSH
run: |
install --directory ~/.ssh --mode 700
base64 --decode <<< "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_ed25519
chmod 600 ~/.ssh/id_ed25519
ssh-keyscan -t ed25519 -H "${{ secrets.FILESTASH_SERVER }}" >> ~/.ssh/known_hosts
- name: Upload to Filestash
run: |
rsync dist/jquery-ui.js filestash@"${{ secrets.FILESTASH_SERVER }}":ui/jquery-ui-git.js
rsync dist/jquery-ui.css filestash@"${{ secrets.FILESTASH_SERVER }}":ui/jquery-ui-git.css

View file

@ -1,163 +0,0 @@
name: Node
on:
pull_request:
push:
branches-ignore: "dependabot/**"
# Once a week every Monday
schedule:
- cron: "42 1 * * 1"
permissions:
contents: read
env:
NODE_VERSION: 20.x
jobs:
build-and-test:
runs-on: ubuntu-latest
name: ${{ matrix.BROWSER }} - jQuery ${{ matrix.JQUERY }}
strategy:
fail-fast: false
matrix:
BROWSER: [chrome, firefox]
JQUERY:
- "git"
- "3.x-git"
- "3.7.1"
- "2.2.4"
- "1.12.4"
steps:
- name: Checkout
uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2
- name: Use Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
with:
node-version: ${{ env.NODE_VERSION }}
- name: Cache
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ env.NODE_VERSION }}-npm-lock-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-${{ env.NODE_VERSION }}-npm-lock-
- name: Install npm dependencies
run: npm install
- name: Lint
run: npm run lint
- name: Build
run: npm run build
- name: Test
run: npm run test:unit -- -h -b ${{ matrix.BROWSER }} --jquery ${{ matrix.JQUERY }} --retries 3
edge:
runs-on: windows-latest
name: edge - jQuery ${{ matrix.JQUERY }}
strategy:
fail-fast: false
matrix:
JQUERY:
- "git"
- "3.x-git"
- "3.7.1"
- "2.2.4"
- "1.12.4"
steps:
- name: Checkout
uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2
- name: Use Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
with:
node-version: ${{ env.NODE_VERSION }}
- name: Cache
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ env.NODE_VERSION }}-npm-lock-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-${{ env.NODE_VERSION }}-npm-lock-
- name: Install dependencies
run: npm install
- name: Build
run: npm run build
- name: Test
run: npm run test:unit -- -h -b edge --jquery ${{ matrix.JQUERY }} --retries 3
safari:
runs-on: macos-latest
name: safari - jQuery ${{ matrix.JQUERY }}
strategy:
fail-fast: false
matrix:
JQUERY:
- "git"
- "3.x-git"
- "3.7.1"
- "2.2.4"
- "1.12.4"
steps:
- name: Checkout
uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2
- name: Use Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
with:
node-version: ${{ env.NODE_VERSION }}
- name: Cache
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ env.NODE_VERSION }}-npm-lock-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-${{ env.NODE_VERSION }}-npm-lock-
- name: Install dependencies
run: npm install
- name: Build
run: npm run build
- name: Test
run: npm run test:unit -- -b safari --jquery ${{ matrix.JQUERY }} --retries 3
legacy-build:
runs-on: ubuntu-latest
name: Build on Node 10.x
env:
NODE_VERSION: 10.x
steps:
- name: Checkout
uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2
- name: Use Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
with:
node-version: ${{ env.NODE_VERSION }}
- name: Cache
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ env.NODE_VERSION }}-npm-lock-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-${{ env.NODE_VERSION }}-npm-lock-
- name: Install npm dependencies
run: npm install
- name: Build
run: npm run build

2
node_modules/jquery-ui/AUTHORS.txt generated vendored
View file

@ -379,3 +379,5 @@ Timo Tijhof <krinkle@fastmail.com>
Timmy Willison <timmywil@users.noreply.github.com>
divdeploy <166095818+divdeploy@users.noreply.github.com>
mark van tilburg <markvantilburg@gmail.com>
Ralf Koller <1665422+rpkoller@users.noreply.github.com>
Porter Clevidence <116387727+porterclev@users.noreply.github.com>

View file

@ -72,7 +72,7 @@ The tests require a local web server and the samples contain some PHP, so a PHP
* Windows: [WAMP download](https://www.wampserver.com/en/)
* Mac: [MAMP download](https://www.mamp.info/en/mac/)
* Linux: [Setting up LAMP](https://www.linux.com/learn/tutorials/288158-easy-lamp-server-installation)
* [Mongoose (most platforms)](https://code.google.com/archive/p/mongoose/)
* [Mongoose (most platforms)](https://mongoose.ws/)
* [http-server](https://www.npmjs.com/package/http-server)
### Running the Tests

40
node_modules/jquery-ui/bower.json generated vendored
View file

@ -9,46 +9,16 @@
],
"license": "MIT",
"dependencies": {
"jquery": ">=1.8.0 <4.0.0"
"jquery": ">=1.12.0 <5.0.0"
},
"devDependencies": {
"jquery-color": "2.2.0",
"jquery-color": "3.0.0",
"jquery-mousewheel": "3.1.12",
"jquery-simulate": "1.1.1",
"qunit": "2.19.4",
"requirejs": "2.1.14",
"jquery-1.8.0": "jquery#1.8.0",
"jquery-1.8.1": "jquery#1.8.1",
"jquery-1.8.2": "jquery#1.8.2",
"jquery-1.8.3": "jquery#1.8.3",
"jquery-1.9.0": "jquery#1.9.0",
"jquery-1.9.1": "jquery#1.9.1",
"jquery-1.10.0": "jquery#1.10.0",
"jquery-1.10.1": "jquery#1.10.1",
"jquery-1.10.2": "jquery#1.10.2",
"jquery-1.11.0": "jquery#1.11.0",
"jquery-1.11.1": "jquery#1.11.1",
"jquery-1.11.2": "jquery#1.11.2",
"jquery-1.11.3": "jquery#1.11.3",
"jquery-1.12.0": "jquery#1.12.0",
"jquery-1.12.1": "jquery#1.12.1",
"jquery-1.12.2": "jquery#1.12.2",
"jquery-1.12.3": "jquery#1.12.3",
"jquery-1.12.4": "jquery#1.12.4",
"jquery-3.x": "jquery#3.7.1",
"jquery-2.0.0": "jquery#2.0.0",
"jquery-2.0.1": "jquery#2.0.1",
"jquery-2.0.2": "jquery#2.0.2",
"jquery-2.0.3": "jquery#2.0.3",
"jquery-2.1.0": "jquery#2.1.0",
"jquery-2.1.1": "jquery#2.1.1",
"jquery-2.1.2": "jquery#2.1.2",
"jquery-2.1.3": "jquery#2.1.3",
"jquery-2.1.4": "jquery#2.1.4",
"jquery-2.2.0": "jquery#2.2.0",
"jquery-2.2.1": "jquery#2.2.1",
"jquery-2.2.2": "jquery#2.2.2",
"jquery-2.2.3": "jquery#2.2.3",
"jquery-2.2.4": "jquery#2.2.4",
"jquery-3.0.0": "jquery#3.0.0",
"jquery-3.1.0": "jquery#3.1.0",
@ -68,8 +38,8 @@
"jquery-3.6.4": "jquery#3.6.4",
"jquery-3.7.0": "jquery#3.7.0",
"jquery-3.7.1": "jquery#3.7.1",
"jquery-migrate-1.4.1": "https://registry.npmjs.org/jquery-migrate/-/jquery-migrate-1.4.1.tgz",
"jquery-migrate-3.4.1": "https://registry.npmjs.org/jquery-migrate/-/jquery-migrate-3.4.1.tgz"
"jquery-migrate-1.x": "https://registry.npmjs.org/jquery-migrate/-/jquery-migrate-1.4.1.tgz",
"jquery-migrate-3.x": "https://registry.npmjs.org/jquery-migrate/-/jquery-migrate-3.5.2.tgz"
},
"version": "1.13.3"
"version": "1.14.0"
}

View file

@ -1,49 +0,0 @@
"use strict";
var shell = require( "shelljs" );
var Release = {
define: function( props ) {
for ( var key in props ) {
Release[ key ] = props[ key ];
}
},
exec: function( _options, errorMessage ) {
var result,
command = _options.command || _options,
options = {};
if ( _options.silent ) {
options.silent = true;
}
errorMessage = errorMessage || "Error executing command: " + command;
result = shell.exec( command, options );
if ( result.code !== 0 ) {
Release.abort( errorMessage );
}
return result.output;
},
abort: function() {
console.error.apply( console, arguments );
process.exit( 1 );
},
newVersion: require( "../package" ).version
};
var script = require( "./release" );
script( Release );
// Ignores actual version installed, should be good enough for a test
if ( shell.exec( "npm ls --depth 0 | grep download.jqueryui.com" ).code === 1 ) {
shell.exec( "npm install --no-save " + script.dependencies.join( " " ) );
}
// If AUTHORS.txt is outdated, this will update it
// Very annoying during an actual release
shell.exec( "grunt update-authors" );
Release.generateArtifacts( function() {
console.log( "Done generating artifacts, verify output, should be in dist/cdn" );
} );

View file

@ -1,159 +0,0 @@
"use strict";
module.exports = function( Release ) {
var crypto = require( "crypto" );
var shell = require( "shelljs" ),
path = require( "path" ),
fs = require( "fs" );
function replaceAtVersion() {
console.log( "Replacing @VERSION..." );
var matches = [];
function recurse( folder ) {
fs.readdirSync( folder ).forEach( function( fileName ) {
var content,
fullPath = folder + "/" + fileName;
if ( fs.statSync( fullPath ).isDirectory() ) {
recurse( fullPath );
return;
}
content = fs.readFileSync( fullPath, {
encoding: "utf-8"
} );
if ( !/@VERSION/.test( content ) ) {
return;
}
matches.push( fullPath );
fs.writeFileSync( fullPath, content.replace( /@VERSION/g, Release.newVersion ) );
} );
}
[ "ui", "themes" ].forEach( recurse );
console.log( "Replaced @VERSION in " + matches.length + " files." );
return matches;
}
function removeExternals( packager ) {
Object.keys( packager.builtFiles ).forEach( function( filepath ) {
if ( /^external\//.test( filepath ) ) {
delete packager.builtFiles[ filepath ];
}
} );
}
function addManifest( packager ) {
var output = packager.builtFiles;
output.MANIFEST = Object.keys( output ).sort( function( a, b ) {
return a.localeCompare( b );
} ).map( function( filepath ) {
var md5 = crypto.createHash( "md5" );
md5.update( output[ filepath ] );
return filepath + " " + md5.digest( "hex" );
} ).join( "\n" );
}
function buildCDNPackage( callback ) {
console.log( "Building CDN package" );
var JqueryUi = require( "download.jqueryui.com/lib/jquery-ui" );
var PackageWithoutThemes = require( "download.jqueryui.com/lib/package-1-13" );
var PackageOfThemes = require( "download.jqueryui.com/lib/package-1-13-themes" );
var Packager = require( "node-packager" );
// PackageOfThemes doesn't contain JS files, PackageWithoutThemes doesn't contain themes;
// we need both.
function Package() {
// PackageOfThemes invokes PackageWithoutThemes's constructor in its own so we don't
// need to do it by ourselves; we just need to handle prototypes that way.
PackageOfThemes.apply( this, arguments );
}
Object.assign( Package.prototype, PackageWithoutThemes.prototype, PackageOfThemes.prototype );
var jqueryUi = new JqueryUi( path.resolve( "." ) );
var target = fs.createWriteStream( "../" + jqueryUi.pkg.name + "-" + jqueryUi.pkg.version +
"-cdn.zip" );
var packager = new Packager( jqueryUi.files().cache, Package, {
components: jqueryUi.components().map( function( component ) {
return component.name;
} ),
jqueryUi: jqueryUi,
themeVars: null
} );
packager.ready
.then( function() {
removeExternals( packager );
addManifest( packager );
packager.toZip( target, {
basedir: ""
}, function( error ) {
if ( error ) {
Release.abort( "Failed to zip the CDN package", error );
}
callback();
} );
} )
.catch( function( error ) {
Release.abort( "Failed to create the CDN package", error );
} );
}
Release.define( {
npmPublish: true,
issueTracker: "github",
changelogShell: function() {
var monthNames = [ "January", "February", "March", "April", "May", "June", "July",
"August", "September", "October", "November", "December" ],
now = new Date();
return "<script>{\n\t\"title\": \"jQuery UI " + Release.newVersion + " Changelog\"\n" +
"}</script>\n\nReleased on " + monthNames[ now.getMonth() ] + " " + now.getDate() +
", " + now.getFullYear() + "\n\n";
},
generateArtifacts: function( fn ) {
var files = replaceAtVersion();
buildCDNPackage( function copyCdnFiles() {
var zipFile = shell.ls( "../jquery*-cdn.zip" )[ 0 ],
tmpFolder = "../tmp-zip-output",
unzipCommand = "unzip -o " + zipFile + " -d " + tmpFolder;
console.log( "Unzipping for dist/cdn copies" );
shell.mkdir( "-p", tmpFolder );
Release.exec( {
command: unzipCommand,
silent: true
}, "Failed to unzip cdn files" );
shell.mkdir( "-p", "dist/cdn" );
shell.cp( tmpFolder + "/jquery-ui*.js", "dist/cdn" );
shell.cp( "-r", tmpFolder + "/themes", "dist/cdn" );
// Copy all the files to be published on the CDN to the dist directory
// as well.
shell.cp( "dist/cdn/jquery-ui.js", "dist" );
shell.cp( "dist/cdn/jquery-ui.min.js", "dist" );
shell.cp( "-r", "dist/cdn/themes", "dist" );
Release.exec( "git add --force dist/jquery-ui.js",
"Error adding dist/jquery-ui.js." );
Release.exec( "git add --force dist/jquery-ui.min.js",
"Error adding dist/jquery-ui.min.js." );
Release.exec( "git add --force dist/themes",
"Error adding dist/themes." );
fn( files );
} );
}
} );
};
module.exports.dependencies = [
"download.jqueryui.com@2.2.14",
"node-packager@0.0.7",
"shelljs@0.8.5"
];

View file

@ -1,42 +0,0 @@
"use strict";
module.exports = function( grunt ) {
grunt.registerTask( "clean", function() {
require( "rimraf" ).sync( "dist" );
} );
grunt.registerTask( "asciilint", function() {
var valid = true,
files = grunt.file.expand( { filter: "isFile" }, "ui/*.js" );
files.forEach( function( filename ) {
var i, c,
text = grunt.file.read( filename );
// Ensure files use only \n for line endings, not \r\n
if ( /\x0d\x0a/.test( text ) ) {
grunt.log.error( filename + ": Incorrect line endings (\\r\\n)" );
valid = false;
}
// Ensure only ASCII chars so script tags don't need a charset attribute
if ( text.length !== Buffer.byteLength( text, "utf8" ) ) {
grunt.log.error( filename + ": Non-ASCII characters detected:" );
for ( i = 0; i < text.length; i++ ) {
c = text.charCodeAt( i );
if ( c > 127 ) {
grunt.log.error( "- position " + i + ": " + c );
grunt.log.error( "-- " + text.substring( i - 20, i + 20 ) );
break;
}
}
valid = false;
}
} );
if ( valid ) {
grunt.log.ok( files.length + " files lint free." );
}
return valid;
} );
};

View file

@ -1,114 +0,0 @@
"use strict";
module.exports = function( grunt ) {
var versions = {
"git": "git",
"3.x-git": "3.x-git",
"3.7": "3.7.0",
"3.6": "3.6.4",
"3.5": "3.5.1",
"3.4": "3.4.1",
"3.3": "3.3.1",
"3.2": "3.2.1",
"3.1": "3.1.1",
"3.0": "3.0.0",
"2.2": "2.2.4",
"2.1": "2.1.4",
"2.0": "2.0.3",
"1.12": "1.12.4",
"1.11": "1.11.3",
"1.10": "1.10.2",
"1.9": "1.9.1",
"1.8": "1.8.3"
},
tests = {
"Accordion": "accordion/accordion.html",
"Autocomplete": "autocomplete/autocomplete.html",
"Button": "button/button.html",
"Checkboxradio": "checkboxradio/checkboxradio.html",
"Controlgroup": "controlgroup/controlgroup.html",
"Core": "core/core.html",
"Datepicker": "datepicker/datepicker.html",
"Dialog": "dialog/dialog.html",
"Draggable": "draggable/draggable.html",
"Droppable": "droppable/droppable.html",
"Effects": "effects/effects.html",
"Form Reset Mixin": "form-reset-mixin/form-reset-mixin.html",
"Menu": "menu/menu.html",
"Position": "position/position.html",
"Progressbar": "progressbar/progressbar.html",
"Resizable": "resizable/resizable.html",
"Selectable": "selectable/selectable.html",
"Selectmenu": "selectmenu/selectmenu.html",
"Slider": "slider/slider.html",
"Sortable": "sortable/sortable.html",
"Spinner": "spinner/spinner.html",
"Tabs": "tabs/tabs.html",
"Tooltip": "tooltip/tooltip.html",
"Widget": "widget/widget.html"
};
function submit( commit, runs, configFile, browserSets, extra, done ) {
var testName,
testswarm = require( "testswarm" ),
config = grunt.file.readJSON( configFile ).jqueryui,
commitUrl = "https://github.com/jquery/jquery-ui/commit/" + commit;
browserSets = browserSets || config.browserSets;
if ( browserSets[ 0 ] === "[" ) {
// We got an array, parse it
browserSets = JSON.parse( browserSets );
}
if ( extra ) {
extra = " (" + extra + ")";
}
for ( testName in runs ) {
runs[ testName ] = config.testUrl + commit + "/tests/unit/" + runs[ testName ];
}
testswarm.createClient( {
url: config.swarmUrl
} )
.addReporter( testswarm.reporters.cli )
.auth( {
id: config.authUsername,
token: config.authToken
} )
.addjob( {
name: "Commit <a href='" + commitUrl + "'>" + commit.substr( 0, 10 ) + "</a>" + extra,
runs: runs,
runMax: config.runMax,
browserSets: browserSets,
timeout: 1000 * 60 * 30
}, function( error, passed ) {
if ( error ) {
grunt.log.error( error );
}
done( passed );
} );
}
grunt.registerTask( "testswarm", function( commit, configFile, browserSets ) {
var test,
latestTests = {};
for ( test in tests ) {
latestTests[ test ] = tests[ test ];
}
submit( commit, latestTests, configFile, browserSets, "", this.async() );
} );
grunt.registerTask( "testswarm-multi-jquery", function( commit, configFile, minor, browserSets ) {
var allTests = {};
versions[ minor ].split( " " ).forEach( function( version ) {
for ( var test in tests ) {
allTests[ test + "-" + version ] = tests[ test ] + "?jquery=" + version;
}
} );
submit( commit, allTests, configFile, browserSets, "core " + minor, this.async() );
} );
};

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.9 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

Before After
Before After

View file

@ -1,4 +1,4 @@
/*! jQuery UI - v1.13.3 - 2024-04-26
/*! jQuery UI - v1.14.0 - 2024-08-05
* https://jqueryui.com
* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
* To view and modify this theme, visit https://jqueryui.com/themeroller/?ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&fwDefault=normal&cornerRadius=3px&bgColorHeader=e9e9e9&bgTextureHeader=flat&borderColorHeader=dddddd&fcHeader=333333&iconColorHeader=444444&bgColorContent=ffffff&bgTextureContent=flat&borderColorContent=dddddd&fcContent=333333&iconColorContent=444444&bgColorDefault=f6f6f6&bgTextureDefault=flat&borderColorDefault=c5c5c5&fcDefault=454545&iconColorDefault=777777&bgColorHover=ededed&bgTextureHover=flat&borderColorHover=cccccc&fcHover=2b2b2b&iconColorHover=555555&bgColorActive=007fff&bgTextureActive=flat&borderColorActive=003eff&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=fffa90&bgTextureHighlight=flat&borderColorHighlight=dad55e&fcHighlight=777620&iconColorHighlight=777620&bgColorError=fddfdf&bgTextureError=flat&borderColorError=f1a899&fcError=5f3f3f&iconColorError=cc0000&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=666666&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=5px&offsetTopShadow=0px&offsetLeftShadow=0px&cornerRadiusShadow=8px
@ -45,7 +45,6 @@
left: 0;
position: absolute;
opacity: 0;
-ms-filter: "alpha(opacity=0)"; /* support: IE8 */
}
.ui-front {
@ -122,8 +121,6 @@
.ui-menu .ui-menu-item {
margin: 0;
cursor: pointer;
/* support: IE10, see #8844 */
list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
}
.ui-menu .ui-menu-item-wrapper {
position: relative;
@ -173,12 +170,7 @@
vertical-align: middle;
text-align: center;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
/* Support: IE <= 11 */
overflow: visible;
}
.ui-button,
@ -229,7 +221,7 @@ input.ui-button.ui-icon-notext .ui-icon {
}
/* workarounds */
/* Support: Firefox 5 - 40 */
/* Support: Firefox 5 - 125+ */
input.ui-button::-moz-focus-inner,
button.ui-button::-moz-focus-inner {
border: 0;
@ -280,9 +272,6 @@ button.ui-button::-moz-focus-inner {
/* Spinner specific style fixes */
.ui-controlgroup-vertical .ui-spinner-input {
/* Support: IE8 only, Android < 4.4 only */
width: 75%;
width: calc( 100% - 2.4em );
}
.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {
@ -579,7 +568,6 @@ button.ui-button::-moz-focus-inner {
cursor: move;
}
.ui-draggable-handle {
-ms-touch-action: none;
touch-action: none;
}
.ui-resizable {
@ -589,7 +577,6 @@ button.ui-button::-moz-focus-inner {
position: absolute;
font-size: 0.1px;
display: block;
-ms-touch-action: none;
touch-action: none;
}
.ui-resizable-disabled .ui-resizable-handle,
@ -664,14 +651,12 @@ button.ui-button::-moz-focus-inner {
.ui-progressbar .ui-progressbar-overlay {
background: url("data:image/gif;base64,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");
height: 100%;
-ms-filter: "alpha(opacity=25)"; /* support: IE8 */
opacity: 0.25;
}
.ui-progressbar-indeterminate .ui-progressbar-value {
background-image: none;
}
.ui-selectable {
-ms-touch-action: none;
touch-action: none;
}
.ui-selectable-helper {
@ -729,7 +714,6 @@ button.ui-button::-moz-focus-inner {
width: 1.2em;
height: 1.2em;
cursor: pointer;
-ms-touch-action: none;
touch-action: none;
}
.ui-slider .ui-slider-range {
@ -741,12 +725,6 @@ button.ui-button::-moz-focus-inner {
background-position: 0 0;
}
/* support: IE8 - See #6727 */
.ui-slider.ui-state-disabled .ui-slider-handle,
.ui-slider.ui-state-disabled .ui-slider-range {
filter: inherit;
}
.ui-slider-horizontal {
height: .8em;
}
@ -785,7 +763,6 @@ button.ui-button::-moz-focus-inner {
top: 0;
}
.ui-sortable-handle {
-ms-touch-action: none;
touch-action: none;
}
.ui-spinner {
@ -1040,19 +1017,14 @@ a.ui-button:active,
.ui-widget-content .ui-priority-secondary,
.ui-widget-header .ui-priority-secondary {
opacity: .7;
-ms-filter: "alpha(opacity=70)"; /* support: IE8 */
font-weight: normal;
}
.ui-state-disabled,
.ui-widget-content .ui-state-disabled,
.ui-widget-header .ui-state-disabled {
opacity: .35;
-ms-filter: "alpha(opacity=35)"; /* support: IE8 */
background-image: none;
}
.ui-state-disabled .ui-icon {
-ms-filter: "alpha(opacity=35)"; /* support: IE8 - See #6059 */
}
/* Icons
----------------------------------*/
@ -1306,9 +1278,7 @@ a.ui-button:active,
.ui-widget-overlay {
background: #aaaaaa;
opacity: .3;
-ms-filter: "alpha(opacity=30)"; /* support: IE8 */
}
.ui-widget-shadow {
-webkit-box-shadow: 0px 0px 5px #666666;
box-shadow: 0px 0px 5px #666666;
}

File diff suppressed because one or more lines are too long

View file

@ -1,5 +1,5 @@
/*!
* jQuery UI CSS Framework 1.13.3
* jQuery UI CSS Framework 1.14.0
* https://jqueryui.com
*
* Copyright OpenJS Foundation and other contributors
@ -172,19 +172,14 @@ a.ui-button:active,
.ui-widget-content .ui-priority-secondary,
.ui-widget-header .ui-priority-secondary {
opacity: .7;
-ms-filter: "alpha(opacity=70)"; /* support: IE8 */
font-weight: normal;
}
.ui-state-disabled,
.ui-widget-content .ui-state-disabled,
.ui-widget-header .ui-state-disabled {
opacity: .35;
-ms-filter: "alpha(opacity=35)"; /* support: IE8 */
background-image: none;
}
.ui-state-disabled .ui-icon {
-ms-filter: "alpha(opacity=35)"; /* support: IE8 - See #6059 */
}
/* Icons
----------------------------------*/
@ -438,9 +433,7 @@ a.ui-button:active,
.ui-widget-overlay {
background: #aaaaaa;
opacity: .3;
-ms-filter: "alpha(opacity=30)"; /* support: IE8 */
}
.ui-widget-shadow {
-webkit-box-shadow: 0px 0px 5px #666666;
box-shadow: 0px 0px 5px #666666;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 419 B

After

Width:  |  Height:  |  Size: 269 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 359 B

After

Width:  |  Height:  |  Size: 209 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 359 B

After

Width:  |  Height:  |  Size: 209 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 351 B

After

Width:  |  Height:  |  Size: 201 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 352 B

After

Width:  |  Height:  |  Size: 202 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 363 B

After

Width:  |  Height:  |  Size: 213 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 418 B

After

Width:  |  Height:  |  Size: 268 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 403 B

After

Width:  |  Height:  |  Size: 253 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.9 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.9 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

Before After
Before After

View file

@ -1,4 +1,4 @@
/*! jQuery UI - v1.13.3 - 2024-04-26
/*! jQuery UI - v1.14.0 - 2024-08-05
* https://jqueryui.com
* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
* To view and modify this theme, visit https://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=333333&bgTextureHeader=diagonals_thick&bgImgOpacityHeader=8&borderColorHeader=a3a3a3&fcHeader=eeeeee&iconColorHeader=bbbbbb&bgColorContent=f9f9f9&bgTextureContent=highlight_hard&bgImgOpacityContent=100&borderColorContent=cccccc&fcContent=222222&iconColorContent=222222&bgColorDefault=111111&bgTextureDefault=glass&bgImgOpacityDefault=40&borderColorDefault=777777&fcDefault=e3e3e3&iconColorDefault=ededed&bgColorHover=1c1c1c&bgTextureHover=glass&bgImgOpacityHover=55&borderColorHover=000000&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=ffffff&bgTextureActive=flat&bgImgOpacityActive=65&borderColorActive=cccccc&fcActive=222222&iconColorActive=222222&bgColorHighlight=ffeb80&bgTextureHighlight=inset_hard&bgImgOpacityHighlight=55&borderColorHighlight=ffde2e&fcHighlight=363636&iconColorHighlight=4ca300&bgColorError=cd0a0a&bgTextureError=inset_hard&bgImgOpacityError=45&borderColorError=9e0505&fcError=ffffff&iconColorError=ffcf29&bgColorOverlay=aaaaaa&bgTextureOverlay=highlight_hard&bgImgOpacityOverlay=40&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=highlight_soft&bgImgOpacityShadow=50&opacityShadow=20&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
@ -45,7 +45,6 @@
left: 0;
position: absolute;
opacity: 0;
-ms-filter: "alpha(opacity=0)"; /* support: IE8 */
}
.ui-front {
@ -122,8 +121,6 @@
.ui-menu .ui-menu-item {
margin: 0;
cursor: pointer;
/* support: IE10, see #8844 */
list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
}
.ui-menu .ui-menu-item-wrapper {
position: relative;
@ -173,12 +170,7 @@
vertical-align: middle;
text-align: center;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
/* Support: IE <= 11 */
overflow: visible;
}
.ui-button,
@ -229,7 +221,7 @@ input.ui-button.ui-icon-notext .ui-icon {
}
/* workarounds */
/* Support: Firefox 5 - 40 */
/* Support: Firefox 5 - 125+ */
input.ui-button::-moz-focus-inner,
button.ui-button::-moz-focus-inner {
border: 0;
@ -280,9 +272,6 @@ button.ui-button::-moz-focus-inner {
/* Spinner specific style fixes */
.ui-controlgroup-vertical .ui-spinner-input {
/* Support: IE8 only, Android < 4.4 only */
width: 75%;
width: calc( 100% - 2.4em );
}
.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {
@ -579,7 +568,6 @@ button.ui-button::-moz-focus-inner {
cursor: move;
}
.ui-draggable-handle {
-ms-touch-action: none;
touch-action: none;
}
.ui-resizable {
@ -589,7 +577,6 @@ button.ui-button::-moz-focus-inner {
position: absolute;
font-size: 0.1px;
display: block;
-ms-touch-action: none;
touch-action: none;
}
.ui-resizable-disabled .ui-resizable-handle,
@ -664,14 +651,12 @@ button.ui-button::-moz-focus-inner {
.ui-progressbar .ui-progressbar-overlay {
background: url("data:image/gif;base64,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");
height: 100%;
-ms-filter: "alpha(opacity=25)"; /* support: IE8 */
opacity: 0.25;
}
.ui-progressbar-indeterminate .ui-progressbar-value {
background-image: none;
}
.ui-selectable {
-ms-touch-action: none;
touch-action: none;
}
.ui-selectable-helper {
@ -729,7 +714,6 @@ button.ui-button::-moz-focus-inner {
width: 1.2em;
height: 1.2em;
cursor: pointer;
-ms-touch-action: none;
touch-action: none;
}
.ui-slider .ui-slider-range {
@ -741,12 +725,6 @@ button.ui-button::-moz-focus-inner {
background-position: 0 0;
}
/* support: IE8 - See #6727 */
.ui-slider.ui-state-disabled .ui-slider-handle,
.ui-slider.ui-state-disabled .ui-slider-range {
filter: inherit;
}
.ui-slider-horizontal {
height: .8em;
}
@ -785,7 +763,6 @@ button.ui-button::-moz-focus-inner {
top: 0;
}
.ui-sortable-handle {
-ms-touch-action: none;
touch-action: none;
}
.ui-spinner {
@ -1040,19 +1017,14 @@ a.ui-button:active,
.ui-widget-content .ui-priority-secondary,
.ui-widget-header .ui-priority-secondary {
opacity: .7;
-ms-filter: "alpha(opacity=70)"; /* support: IE8 */
font-weight: normal;
}
.ui-state-disabled,
.ui-widget-content .ui-state-disabled,
.ui-widget-header .ui-state-disabled {
opacity: .35;
-ms-filter: "alpha(opacity=35)"; /* support: IE8 */
background-image: none;
}
.ui-state-disabled .ui-icon {
-ms-filter: "alpha(opacity=35)"; /* support: IE8 - See #6059 */
}
/* Icons
----------------------------------*/
@ -1306,9 +1278,7 @@ a.ui-button:active,
.ui-widget-overlay {
background: #aaaaaa url("images/ui-bg_highlight-hard_40_aaaaaa_1x100.png") 50% top repeat-x;
opacity: .3;
-ms-filter: "alpha(opacity=30)"; /* support: IE8 */
}
.ui-widget-shadow {
-webkit-box-shadow: -8px -8px 8px #aaaaaa;
box-shadow: -8px -8px 8px #aaaaaa;
}

File diff suppressed because one or more lines are too long

View file

@ -1,5 +1,5 @@
/*!
* jQuery UI CSS Framework 1.13.3
* jQuery UI CSS Framework 1.14.0
* https://jqueryui.com
*
* Copyright OpenJS Foundation and other contributors
@ -172,19 +172,14 @@ a.ui-button:active,
.ui-widget-content .ui-priority-secondary,
.ui-widget-header .ui-priority-secondary {
opacity: .7;
-ms-filter: "alpha(opacity=70)"; /* support: IE8 */
font-weight: normal;
}
.ui-state-disabled,
.ui-widget-content .ui-state-disabled,
.ui-widget-header .ui-state-disabled {
opacity: .35;
-ms-filter: "alpha(opacity=35)"; /* support: IE8 */
background-image: none;
}
.ui-state-disabled .ui-icon {
-ms-filter: "alpha(opacity=35)"; /* support: IE8 - See #6059 */
}
/* Icons
----------------------------------*/
@ -438,9 +433,7 @@ a.ui-button:active,
.ui-widget-overlay {
background: #aaaaaa url("images/ui-bg_highlight-hard_40_aaaaaa_1x100.png") 50% top repeat-x;
opacity: .3;
-ms-filter: "alpha(opacity=30)"; /* support: IE8 */
}
.ui-widget-shadow {
-webkit-box-shadow: -8px -8px 8px #aaaaaa;
box-shadow: -8px -8px 8px #aaaaaa;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 507 B

After

Width:  |  Height:  |  Size: 357 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 302 B

After

Width:  |  Height:  |  Size: 152 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 434 B

After

Width:  |  Height:  |  Size: 284 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 352 B

After

Width:  |  Height:  |  Size: 202 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 352 B

After

Width:  |  Height:  |  Size: 202 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 421 B

After

Width:  |  Height:  |  Size: 271 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

Before After
Before After

View file

@ -1,4 +1,4 @@
/*! jQuery UI - v1.13.3 - 2024-04-26
/*! jQuery UI - v1.14.0 - 2024-08-05
* https://jqueryui.com
* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
* To view and modify this theme, visit https://jqueryui.com/themeroller/?ffDefault=Arial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=cc0000&bgTextureHeader=highlight_soft&bgImgOpacityHeader=15&borderColorHeader=e3a1a1&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=eeeeee&fcContent=333333&iconColorContent=cc0000&bgColorDefault=eeeeee&bgTextureDefault=highlight_hard&bgImgOpacityDefault=100&borderColorDefault=d8dcdf&fcDefault=004276&iconColorDefault=cc0000&bgColorHover=f6f6f6&bgTextureHover=highlight_hard&bgImgOpacityHover=100&borderColorHover=cdd5da&fcHover=111111&iconColorHover=cc0000&bgColorActive=ffffff&bgTextureActive=flat&bgImgOpacityActive=65&borderColorActive=eeeeee&fcActive=cc0000&iconColorActive=cc0000&bgColorHighlight=fbf8ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcd3a1&fcHighlight=444444&iconColorHighlight=004276&bgColorError=f3d8d8&bgTextureError=diagonals_thick&bgImgOpacityError=75&borderColorError=cc0000&fcError=2e2e2e&iconColorError=cc0000&bgColorOverlay=a6a6a6&bgTextureOverlay=dots_small&bgImgOpacityOverlay=65&opacityOverlay=40&bgColorShadow=333333&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=10&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
@ -45,7 +45,6 @@
left: 0;
position: absolute;
opacity: 0;
-ms-filter: "alpha(opacity=0)"; /* support: IE8 */
}
.ui-front {
@ -122,8 +121,6 @@
.ui-menu .ui-menu-item {
margin: 0;
cursor: pointer;
/* support: IE10, see #8844 */
list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
}
.ui-menu .ui-menu-item-wrapper {
position: relative;
@ -173,12 +170,7 @@
vertical-align: middle;
text-align: center;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
/* Support: IE <= 11 */
overflow: visible;
}
.ui-button,
@ -229,7 +221,7 @@ input.ui-button.ui-icon-notext .ui-icon {
}
/* workarounds */
/* Support: Firefox 5 - 40 */
/* Support: Firefox 5 - 125+ */
input.ui-button::-moz-focus-inner,
button.ui-button::-moz-focus-inner {
border: 0;
@ -280,9 +272,6 @@ button.ui-button::-moz-focus-inner {
/* Spinner specific style fixes */
.ui-controlgroup-vertical .ui-spinner-input {
/* Support: IE8 only, Android < 4.4 only */
width: 75%;
width: calc( 100% - 2.4em );
}
.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {
@ -579,7 +568,6 @@ button.ui-button::-moz-focus-inner {
cursor: move;
}
.ui-draggable-handle {
-ms-touch-action: none;
touch-action: none;
}
.ui-resizable {
@ -589,7 +577,6 @@ button.ui-button::-moz-focus-inner {
position: absolute;
font-size: 0.1px;
display: block;
-ms-touch-action: none;
touch-action: none;
}
.ui-resizable-disabled .ui-resizable-handle,
@ -664,14 +651,12 @@ button.ui-button::-moz-focus-inner {
.ui-progressbar .ui-progressbar-overlay {
background: url("data:image/gif;base64,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");
height: 100%;
-ms-filter: "alpha(opacity=25)"; /* support: IE8 */
opacity: 0.25;
}
.ui-progressbar-indeterminate .ui-progressbar-value {
background-image: none;
}
.ui-selectable {
-ms-touch-action: none;
touch-action: none;
}
.ui-selectable-helper {
@ -729,7 +714,6 @@ button.ui-button::-moz-focus-inner {
width: 1.2em;
height: 1.2em;
cursor: pointer;
-ms-touch-action: none;
touch-action: none;
}
.ui-slider .ui-slider-range {
@ -741,12 +725,6 @@ button.ui-button::-moz-focus-inner {
background-position: 0 0;
}
/* support: IE8 - See #6727 */
.ui-slider.ui-state-disabled .ui-slider-handle,
.ui-slider.ui-state-disabled .ui-slider-range {
filter: inherit;
}
.ui-slider-horizontal {
height: .8em;
}
@ -785,7 +763,6 @@ button.ui-button::-moz-focus-inner {
top: 0;
}
.ui-sortable-handle {
-ms-touch-action: none;
touch-action: none;
}
.ui-spinner {
@ -1040,19 +1017,14 @@ a.ui-button:active,
.ui-widget-content .ui-priority-secondary,
.ui-widget-header .ui-priority-secondary {
opacity: .7;
-ms-filter: "alpha(opacity=70)"; /* support: IE8 */
font-weight: normal;
}
.ui-state-disabled,
.ui-widget-content .ui-state-disabled,
.ui-widget-header .ui-state-disabled {
opacity: .35;
-ms-filter: "alpha(opacity=35)"; /* support: IE8 */
background-image: none;
}
.ui-state-disabled .ui-icon {
-ms-filter: "alpha(opacity=35)"; /* support: IE8 - See #6059 */
}
/* Icons
----------------------------------*/
@ -1306,9 +1278,7 @@ a.ui-button:active,
.ui-widget-overlay {
background: #a6a6a6 url("images/ui-bg_dots-small_65_a6a6a6_2x2.png") 50% 50% repeat;
opacity: .4;
-ms-filter: "alpha(opacity=40)"; /* support: IE8 */
}
.ui-widget-shadow {
-webkit-box-shadow: -8px -8px 8px #333333;
box-shadow: -8px -8px 8px #333333;
}

File diff suppressed because one or more lines are too long

View file

@ -1,5 +1,5 @@
/*!
* jQuery UI CSS Framework 1.13.3
* jQuery UI CSS Framework 1.14.0
* https://jqueryui.com
*
* Copyright OpenJS Foundation and other contributors
@ -172,19 +172,14 @@ a.ui-button:active,
.ui-widget-content .ui-priority-secondary,
.ui-widget-header .ui-priority-secondary {
opacity: .7;
-ms-filter: "alpha(opacity=70)"; /* support: IE8 */
font-weight: normal;
}
.ui-state-disabled,
.ui-widget-content .ui-state-disabled,
.ui-widget-header .ui-state-disabled {
opacity: .35;
-ms-filter: "alpha(opacity=35)"; /* support: IE8 */
background-image: none;
}
.ui-state-disabled .ui-icon {
-ms-filter: "alpha(opacity=35)"; /* support: IE8 - See #6059 */
}
/* Icons
----------------------------------*/
@ -438,9 +433,7 @@ a.ui-button:active,
.ui-widget-overlay {
background: #a6a6a6 url("images/ui-bg_dots-small_65_a6a6a6_2x2.png") 50% 50% repeat;
opacity: .4;
-ms-filter: "alpha(opacity=40)"; /* support: IE8 */
}
.ui-widget-shadow {
-webkit-box-shadow: -8px -8px 8px #333333;
box-shadow: -8px -8px 8px #333333;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 416 B

After

Width:  |  Height:  |  Size: 266 B

Before After
Before After

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