1
0
Fork 0
mirror of https://github.com/DanielnetoDotCom/YouPHPTube synced 2025-10-03 09:49:28 +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": { "node_modules/@videojs/http-streaming": {
"version": "3.13.1", "version": "3.13.2",
"resolved": "https://registry.npmjs.org/@videojs/http-streaming/-/http-streaming-3.13.1.tgz", "resolved": "https://registry.npmjs.org/@videojs/http-streaming/-/http-streaming-3.13.2.tgz",
"integrity": "sha512-G7YrgNEq9ETaUmtkoTnTuwkY9U+xP7Xncedzgxio/Rmz2Gn2zmodEbBIVQinb2UDznk7X8uY5XBr/Ew6OD/LWg==", "integrity": "sha512-eCfQp61w00hg7Y9npmLnsJ6UvDF+SsFYzu7mQJgVXxWpVm9AthYWA3KQEKA7F7Sy6yzlm/Sps8BHs5ItelNZgQ==",
"dependencies": { "dependencies": {
"@babel/runtime": "^7.12.5", "@babel/runtime": "^7.12.5",
"@videojs/vhs-utils": "4.0.0", "@videojs/vhs-utils": "4.0.0",
@ -420,9 +420,9 @@
} }
}, },
"node_modules/chart.js": { "node_modules/chart.js": {
"version": "4.4.3", "version": "4.4.4",
"resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.3.tgz", "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.4.tgz",
"integrity": "sha512-qK1gkGSRYcJzqrrzdR6a+I0vQ4/R+SoODXyAjscQ/4mzuNzySaMCd+hyVxitSY1+L2fjPD1Gbn+ibNqRmwQeLw==", "integrity": "sha512-emICKGBABnxhMjUjlYRR12PmOXhJ2eJjEHL2/dZlWjxRAZT1D8xplLFq5M0tMQK8ja+wBS/tuVEJB5C6r7VxJA==",
"dependencies": { "dependencies": {
"@kurkle/color": "^0.3.0" "@kurkle/color": "^0.3.0"
}, },
@ -609,9 +609,9 @@
} }
}, },
"node_modules/hls.js": { "node_modules/hls.js": {
"version": "1.5.13", "version": "1.5.15",
"resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.5.13.tgz", "resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.5.15.tgz",
"integrity": "sha512-xRgKo84nsC7clEvSfIdgn/Tc0NOT+d7vdiL/wvkLO+0k0juc26NRBPPG1SfB8pd5bHXIjMW/F5VM8VYYkOYYdw==" "integrity": "sha512-6cD7xN6bycBHaXz2WyPIaHn/iXFizE5au2yvY5q9aC4wfihxAr16C9fUy4nxh2a3wOw0fEgLRa9dN6wsYjlpNg=="
}, },
"node_modules/ieee754": { "node_modules/ieee754": {
"version": "1.2.1", "version": "1.2.1",
@ -730,11 +730,11 @@
"integrity": "sha512-0j/nfqA2FHFuJXp8QL33EVVCY//TDVfq4LULhTbasZYl2aZlX6YiSF5IGrI31dQiS9S4JkXBUfX3rMJcfl/u/g==" "integrity": "sha512-0j/nfqA2FHFuJXp8QL33EVVCY//TDVfq4LULhTbasZYl2aZlX6YiSF5IGrI31dQiS9S4JkXBUfX3rMJcfl/u/g=="
}, },
"node_modules/jquery-ui": { "node_modules/jquery-ui": {
"version": "1.13.3", "version": "1.14.0",
"resolved": "https://registry.npmjs.org/jquery-ui/-/jquery-ui-1.13.3.tgz", "resolved": "https://registry.npmjs.org/jquery-ui/-/jquery-ui-1.14.0.tgz",
"integrity": "sha512-D2YJfswSJRh/B8M/zCowDpNFfwsDmtfnMPwjJTyvl+CBqzpYwQ+gFYIbUUlzijy/Qvoy30H1YhoSui4MNYpRwA==", "integrity": "sha512-mPfYKBoRCf0MzaT2cyW5i3IuZ7PfTITaasO5OFLAQxrHuI+ZxruPa+4/K1OMNT8oElLWGtIxc9aRbyw20BKr8g==",
"dependencies": { "dependencies": {
"jquery": ">=1.8.0 <4.0.0" "jquery": ">=1.12.0 <5.0.0"
} }
}, },
"node_modules/jquery-ui-dist": { "node_modules/jquery-ui-dist": {
@ -1003,23 +1003,22 @@
"integrity": "sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==" "integrity": "sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA=="
}, },
"node_modules/m3u8-parser": { "node_modules/m3u8-parser": {
"version": "7.1.0", "version": "7.2.0",
"resolved": "https://registry.npmjs.org/m3u8-parser/-/m3u8-parser-7.1.0.tgz", "resolved": "https://registry.npmjs.org/m3u8-parser/-/m3u8-parser-7.2.0.tgz",
"integrity": "sha512-7N+pk79EH4oLKPEYdgRXgAsKDyA/VCo0qCHlUwacttQA0WqsjZQYmNfywMvjlY9MpEBVZEt0jKFd73Kv15EBYQ==", "integrity": "sha512-CRatFqpjVtMiMaKXxNvuI3I++vUumIXVVT/JpCpdU/FynV/ceVw1qpPyyBNindL+JlPMSesx+WX1QJaZEJSaMQ==",
"dependencies": { "dependencies": {
"@babel/runtime": "^7.12.5", "@babel/runtime": "^7.12.5",
"@videojs/vhs-utils": "^3.0.5", "@videojs/vhs-utils": "^4.1.1",
"global": "^4.4.0" "global": "^4.4.0"
} }
}, },
"node_modules/m3u8-parser/node_modules/@videojs/vhs-utils": { "node_modules/m3u8-parser/node_modules/@videojs/vhs-utils": {
"version": "3.0.5", "version": "4.1.1",
"resolved": "https://registry.npmjs.org/@videojs/vhs-utils/-/vhs-utils-3.0.5.tgz", "resolved": "https://registry.npmjs.org/@videojs/vhs-utils/-/vhs-utils-4.1.1.tgz",
"integrity": "sha512-PKVgdo8/GReqdx512F+ombhS+Bzogiofy1LgAj4tN8PfdBx3HSS7V5WfJotKTqtOWGwVfSWsrYN/t09/DSryrw==", "integrity": "sha512-5iLX6sR2ownbv4Mtejw6Ax+naosGvoT9kY+gcuHzANyUZZ+4NpeNdKMUhb6ag0acYej1Y7cmr/F2+4PrggMiVA==",
"dependencies": { "dependencies": {
"@babel/runtime": "^7.12.5", "@babel/runtime": "^7.12.5",
"global": "^4.4.0", "global": "^4.4.0"
"url-toolkit": "^2.2.1"
}, },
"engines": { "engines": {
"node": ">=8", "node": ">=8",
@ -1108,9 +1107,9 @@
} }
}, },
"node_modules/node-gyp-build": { "node_modules/node-gyp-build": {
"version": "4.8.1", "version": "4.8.2",
"resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.1.tgz", "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.2.tgz",
"integrity": "sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==", "integrity": "sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw==",
"bin": { "bin": {
"node-gyp-build": "bin.js", "node-gyp-build": "bin.js",
"node-gyp-build-optional": "optional.js", "node-gyp-build-optional": "optional.js",
@ -1347,9 +1346,9 @@
} }
}, },
"node_modules/tinymce": { "node_modules/tinymce": {
"version": "7.2.1", "version": "7.3.0",
"resolved": "https://registry.npmjs.org/tinymce/-/tinymce-7.2.1.tgz", "resolved": "https://registry.npmjs.org/tinymce/-/tinymce-7.3.0.tgz",
"integrity": "sha512-ADd1cvdIuq6NWyii0ZOZRuu+9sHIdQfcRNWBcBps2K8vy7OjlRkX6iw7zz1WlL9kY4z4L1DvIP+xOrVX/46aHA==" "integrity": "sha512-Ls4PgYlpk73XAxBSBqbVmSl8Mb3DuNfgF01GZ0lY6/MOEVRl3IL+VxC1Oe6165e8WqbqVsxO3Qj/PmoYNvQKGQ=="
}, },
"node_modules/tinymce-langs": { "node_modules/tinymce-langs": {
"version": "1.0.0", "version": "1.0.0",
@ -1419,12 +1418,12 @@
} }
}, },
"node_modules/video.js": { "node_modules/video.js": {
"version": "8.17.1", "version": "8.17.3",
"resolved": "https://registry.npmjs.org/video.js/-/video.js-8.17.1.tgz", "resolved": "https://registry.npmjs.org/video.js/-/video.js-8.17.3.tgz",
"integrity": "sha512-MKW/oRs5B9UeN6TiF+CsVNGacxV4mPWlyDt1VzRkNXy6gPkCK04oQKB2XEhHHQCtACv3PeOkOXnr5b1ID2LwPg==", "integrity": "sha512-zhhmE0LNxJRA603/48oYzF7GYdT+rQRscvcsouYxFE71aKhalHLBP6S9/XjixnyjcrYgwIx8OQo6eSjcbbAW0Q==",
"dependencies": { "dependencies": {
"@babel/runtime": "^7.12.5", "@babel/runtime": "^7.12.5",
"@videojs/http-streaming": "3.13.1", "@videojs/http-streaming": "3.13.2",
"@videojs/vhs-utils": "^4.0.0", "@videojs/vhs-utils": "^4.0.0",
"@videojs/xhr": "2.7.0", "@videojs/xhr": "2.7.0",
"aes-decrypter": "^4.0.1", "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> <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) ## [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) { (function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('video.js'), require('@xmldom/xmldom')) : 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) : typeof define === 'function' && define.amd ? define(['exports', 'video.js', '@xmldom/xmldom'], factory) :
@ -23328,6 +23328,36 @@
return false; 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 => { const mediaDuration = timingInfos => {
let maxDuration = 0; let maxDuration = 0;
['video', 'audio'].forEach(function (type) { ['video', 'audio'].forEach(function (type) {
@ -25016,6 +25046,10 @@ Fetch At Buffer: ${this.fetchAtBuffer_}
loaderType: this.loaderType_, loaderType: this.loaderType_,
audioDisabled: this.audioDisabled_ audioDisabled: this.audioDisabled_
})) { })) {
if (shouldFixBadTimelineChanges(this.timelineChangeController_)) {
fixBadTimelineChange(this);
}
return false; return false;
} }
@ -25067,7 +25101,8 @@ Fetch At Buffer: ${this.fetchAtBuffer_}
if (hasAudio && !this.audioDisabled_ && !isMuxed && !segmentInfo.audioTimingInfo) { if (hasAudio && !this.audioDisabled_ && !isMuxed && !segmentInfo.audioTimingInfo) {
return false; return false;
} } // we need to allow an append here even if we're moving to different timelines.
if (shouldWaitForTimelineChange({ if (shouldWaitForTimelineChange({
timelineChangeController: this.timelineChangeController_, timelineChangeController: this.timelineChangeController_,
@ -25076,6 +25111,10 @@ Fetch At Buffer: ${this.fetchAtBuffer_}
loaderType: this.loaderType_, loaderType: this.loaderType_,
audioDisabled: this.audioDisabled_ audioDisabled: this.audioDisabled_
})) { })) {
if (shouldFixBadTimelineChanges(this.timelineChangeController_)) {
fixBadTimelineChange(this);
}
return false; return false;
} }
@ -27137,7 +27176,7 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
videoTimestampOffset(offset) { videoTimestampOffset(offset) {
if (typeof offset !== 'undefined' && this.videoBuffer && // no point in updating if it's the same if (typeof offset !== 'undefined' && this.videoBuffer && // no point in updating if it's the same
this.videoTimestampOffset !== offset) { this.videoTimestampOffset_ !== offset) {
pushQueue({ pushQueue({
type: 'video', type: 'video',
sourceUpdater: this, sourceUpdater: this,
@ -31916,16 +31955,11 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
} }
runFastQualitySwitch_() { runFastQualitySwitch_() {
this.waitingForFastQualityPlaylistReceived_ = false; // Delete all buffered data to allow an immediate quality switch, then seek to give this.waitingForFastQualityPlaylistReceived_ = false; // Delete all buffered data to allow an immediate quality switch.
// 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.mainSegmentLoader_.pause(); this.mainSegmentLoader_.pause();
this.mainSegmentLoader_.resetEverything(() => { 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 }); // 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); initPlugin(this, options);
}; };
var version$4 = "3.13.1"; var version$4 = "3.13.2";
var version$3 = "7.0.3"; 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'; 'use strict';
Object.defineProperty(exports, '__esModule', { value: true }); Object.defineProperty(exports, '__esModule', { value: true });
@ -17261,6 +17261,36 @@ const shouldWaitForTimelineChange = ({
return false; 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 => { const mediaDuration = timingInfos => {
let maxDuration = 0; let maxDuration = 0;
['video', 'audio'].forEach(function (type) { ['video', 'audio'].forEach(function (type) {
@ -18949,6 +18979,10 @@ Fetch At Buffer: ${this.fetchAtBuffer_}
loaderType: this.loaderType_, loaderType: this.loaderType_,
audioDisabled: this.audioDisabled_ audioDisabled: this.audioDisabled_
})) { })) {
if (shouldFixBadTimelineChanges(this.timelineChangeController_)) {
fixBadTimelineChange(this);
}
return false; return false;
} }
@ -19000,7 +19034,8 @@ Fetch At Buffer: ${this.fetchAtBuffer_}
if (hasAudio && !this.audioDisabled_ && !isMuxed && !segmentInfo.audioTimingInfo) { if (hasAudio && !this.audioDisabled_ && !isMuxed && !segmentInfo.audioTimingInfo) {
return false; return false;
} } // we need to allow an append here even if we're moving to different timelines.
if (shouldWaitForTimelineChange({ if (shouldWaitForTimelineChange({
timelineChangeController: this.timelineChangeController_, timelineChangeController: this.timelineChangeController_,
@ -19009,6 +19044,10 @@ Fetch At Buffer: ${this.fetchAtBuffer_}
loaderType: this.loaderType_, loaderType: this.loaderType_,
audioDisabled: this.audioDisabled_ audioDisabled: this.audioDisabled_
})) { })) {
if (shouldFixBadTimelineChanges(this.timelineChangeController_)) {
fixBadTimelineChange(this);
}
return false; return false;
} }
@ -21070,7 +21109,7 @@ class SourceUpdater extends videojs__default["default"].EventTarget {
videoTimestampOffset(offset) { videoTimestampOffset(offset) {
if (typeof offset !== 'undefined' && this.videoBuffer && // no point in updating if it's the same if (typeof offset !== 'undefined' && this.videoBuffer && // no point in updating if it's the same
this.videoTimestampOffset !== offset) { this.videoTimestampOffset_ !== offset) {
pushQueue({ pushQueue({
type: 'video', type: 'video',
sourceUpdater: this, sourceUpdater: this,
@ -25849,16 +25888,11 @@ class PlaylistController extends videojs__default["default"].EventTarget {
} }
runFastQualitySwitch_() { runFastQualitySwitch_() {
this.waitingForFastQualityPlaylistReceived_ = false; // Delete all buffered data to allow an immediate quality switch, then seek to give this.waitingForFastQualityPlaylistReceived_ = false; // Delete all buffered data to allow an immediate quality switch.
// 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.mainSegmentLoader_.pause(); this.mainSegmentLoader_.pause();
this.mainSegmentLoader_.resetEverything(() => { 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 }); // don't need to reset audio as it is reset when media changes
} }
/** /**
@ -28183,7 +28217,7 @@ const reloadSourceOnError = function (options) {
initPlugin(this, options); initPlugin(this, options);
}; };
var version$4 = "3.13.1"; var version$4 = "3.13.2";
var version$3 = "7.0.3"; 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 _extends from '@babel/runtime/helpers/extends';
import document from 'global/document'; import document from 'global/document';
import window$1 from 'global/window'; import window$1 from 'global/window';
@ -17249,6 +17249,36 @@ const shouldWaitForTimelineChange = ({
return false; 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 => { const mediaDuration = timingInfos => {
let maxDuration = 0; let maxDuration = 0;
['video', 'audio'].forEach(function (type) { ['video', 'audio'].forEach(function (type) {
@ -18937,6 +18967,10 @@ Fetch At Buffer: ${this.fetchAtBuffer_}
loaderType: this.loaderType_, loaderType: this.loaderType_,
audioDisabled: this.audioDisabled_ audioDisabled: this.audioDisabled_
})) { })) {
if (shouldFixBadTimelineChanges(this.timelineChangeController_)) {
fixBadTimelineChange(this);
}
return false; return false;
} }
@ -18988,7 +19022,8 @@ Fetch At Buffer: ${this.fetchAtBuffer_}
if (hasAudio && !this.audioDisabled_ && !isMuxed && !segmentInfo.audioTimingInfo) { if (hasAudio && !this.audioDisabled_ && !isMuxed && !segmentInfo.audioTimingInfo) {
return false; return false;
} } // we need to allow an append here even if we're moving to different timelines.
if (shouldWaitForTimelineChange({ if (shouldWaitForTimelineChange({
timelineChangeController: this.timelineChangeController_, timelineChangeController: this.timelineChangeController_,
@ -18997,6 +19032,10 @@ Fetch At Buffer: ${this.fetchAtBuffer_}
loaderType: this.loaderType_, loaderType: this.loaderType_,
audioDisabled: this.audioDisabled_ audioDisabled: this.audioDisabled_
})) { })) {
if (shouldFixBadTimelineChanges(this.timelineChangeController_)) {
fixBadTimelineChange(this);
}
return false; return false;
} }
@ -21058,7 +21097,7 @@ class SourceUpdater extends videojs.EventTarget {
videoTimestampOffset(offset) { videoTimestampOffset(offset) {
if (typeof offset !== 'undefined' && this.videoBuffer && // no point in updating if it's the same if (typeof offset !== 'undefined' && this.videoBuffer && // no point in updating if it's the same
this.videoTimestampOffset !== offset) { this.videoTimestampOffset_ !== offset) {
pushQueue({ pushQueue({
type: 'video', type: 'video',
sourceUpdater: this, sourceUpdater: this,
@ -25837,16 +25876,11 @@ class PlaylistController extends videojs.EventTarget {
} }
runFastQualitySwitch_() { runFastQualitySwitch_() {
this.waitingForFastQualityPlaylistReceived_ = false; // Delete all buffered data to allow an immediate quality switch, then seek to give this.waitingForFastQualityPlaylistReceived_ = false; // Delete all buffered data to allow an immediate quality switch.
// 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.mainSegmentLoader_.pause(); this.mainSegmentLoader_.pause();
this.mainSegmentLoader_.resetEverything(() => { 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 }); // don't need to reset audio as it is reset when media changes
} }
/** /**
@ -28171,7 +28205,7 @@ const reloadSourceOnError = function (options) {
initPlugin(this, options); initPlugin(this, options);
}; };
var version$4 = "3.13.1"; var version$4 = "3.13.2";
var version$3 = "7.0.3"; 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) { (function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('video.js'), require('@xmldom/xmldom')) : 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) : typeof define === 'function' && define.amd ? define(['exports', 'video.js', '@xmldom/xmldom'], factory) :
@ -23278,6 +23278,36 @@
return false; 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 => { const mediaDuration = timingInfos => {
let maxDuration = 0; let maxDuration = 0;
['video', 'audio'].forEach(function (type) { ['video', 'audio'].forEach(function (type) {
@ -24966,6 +24996,10 @@ Fetch At Buffer: ${this.fetchAtBuffer_}
loaderType: this.loaderType_, loaderType: this.loaderType_,
audioDisabled: this.audioDisabled_ audioDisabled: this.audioDisabled_
})) { })) {
if (shouldFixBadTimelineChanges(this.timelineChangeController_)) {
fixBadTimelineChange(this);
}
return false; return false;
} }
@ -25017,7 +25051,8 @@ Fetch At Buffer: ${this.fetchAtBuffer_}
if (hasAudio && !this.audioDisabled_ && !isMuxed && !segmentInfo.audioTimingInfo) { if (hasAudio && !this.audioDisabled_ && !isMuxed && !segmentInfo.audioTimingInfo) {
return false; return false;
} } // we need to allow an append here even if we're moving to different timelines.
if (shouldWaitForTimelineChange({ if (shouldWaitForTimelineChange({
timelineChangeController: this.timelineChangeController_, timelineChangeController: this.timelineChangeController_,
@ -25026,6 +25061,10 @@ Fetch At Buffer: ${this.fetchAtBuffer_}
loaderType: this.loaderType_, loaderType: this.loaderType_,
audioDisabled: this.audioDisabled_ audioDisabled: this.audioDisabled_
})) { })) {
if (shouldFixBadTimelineChanges(this.timelineChangeController_)) {
fixBadTimelineChange(this);
}
return false; return false;
} }
@ -27087,7 +27126,7 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
videoTimestampOffset(offset) { videoTimestampOffset(offset) {
if (typeof offset !== 'undefined' && this.videoBuffer && // no point in updating if it's the same if (typeof offset !== 'undefined' && this.videoBuffer && // no point in updating if it's the same
this.videoTimestampOffset !== offset) { this.videoTimestampOffset_ !== offset) {
pushQueue({ pushQueue({
type: 'video', type: 'video',
sourceUpdater: this, sourceUpdater: this,
@ -31866,16 +31905,11 @@ ${segmentInfoString(segmentInfo)}`); // If there's an init segment associated wi
} }
runFastQualitySwitch_() { runFastQualitySwitch_() {
this.waitingForFastQualityPlaylistReceived_ = false; // Delete all buffered data to allow an immediate quality switch, then seek to give this.waitingForFastQualityPlaylistReceived_ = false; // Delete all buffered data to allow an immediate quality switch.
// 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.mainSegmentLoader_.pause(); this.mainSegmentLoader_.pause();
this.mainSegmentLoader_.resetEverything(() => { 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 }); // 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); initPlugin(this, options);
}; };
var version$4 = "3.13.1"; var version$4 = "3.13.2";
var version$3 = "7.0.3"; 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 rel="icon" href="logo.svg">
<link href="node_modules/bootstrap/dist/css/bootstrap.css" rel="stylesheet"> <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/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> <style>
.form-check { .form-check {
background-color: hsl(0, 0%, 90%); background-color: hsl(0, 0%, 90%);
@ -24,6 +24,11 @@
#segment-metadata pre { #segment-metadata pre {
overflow: scroll; overflow: scroll;
} }
button.btn-outline-secondary:hover svg,
button.btn-success svg,
button.btn-danger svg {
fill: white;
}
</style> </style>
</head> </head>
<body class="m-4"> <body class="m-4">
@ -52,6 +57,9 @@
<li class="nav-item" role="presentation"> <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> <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>
<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> </ul>
<div class="tab-content container-fluid"> <div class="tab-content container-fluid">
@ -239,6 +247,30 @@
</div> </div>
</div> </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>
</div> </div>

View file

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

View file

@ -559,7 +559,7 @@
'node_modules/video.js/dist/alt/video.core', 'node_modules/video.js/dist/alt/video.core',
'node_modules/videojs-contrib-eme/dist/videojs-contrib-eme', 'node_modules/videojs-contrib-eme/dist/videojs-contrib-eme',
'node_modules/videojs-contrib-quality-levels/dist/videojs-contrib-quality-levels', '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) { ].map(function(url) {
return url + (event.target.checked ? '.min' : '') + '.js'; return url + (event.target.checked ? '.min' : '') + '.js';
@ -595,9 +595,7 @@
player = window.player = window.videojs(videoEl, { player = window.player = window.videojs(videoEl, {
plugins: { plugins: {
hlsQualitySelector: { qualityMenu: {}
displayCurrentQuality: true
}
}, },
liveui: stateEls.liveui.checked, liveui: stateEls.liveui.checked,
enableSourceset: mirrorSource, enableSourceset: mirrorSource,
@ -769,5 +767,75 @@
// run the change handler for the first time // run the change handler for the first time
stateEls.minified.dispatchEvent(newEvent('change')); 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)); }(window));

View file

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

View file

@ -1059,15 +1059,10 @@ export class PlaylistController extends videojs.EventTarget {
runFastQualitySwitch_() { runFastQualitySwitch_() {
this.waitingForFastQualityPlaylistReceived_ = false; this.waitingForFastQualityPlaylistReceived_ = false;
// Delete all buffered data to allow an immediate quality switch, then seek to give // Delete all buffered data to allow an immediate quality switch.
// 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.mainSegmentLoader_.pause(); this.mainSegmentLoader_.pause();
this.mainSegmentLoader_.resetEverything(() => { 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 // don't need to reset audio as it is reset when media changes

View file

@ -406,6 +406,32 @@ export const shouldWaitForTimelineChange = ({
return false; 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) => { export const mediaDuration = (timingInfos) => {
let maxDuration = 0; let maxDuration = 0;
@ -2130,6 +2156,9 @@ Fetch At Buffer: ${this.fetchAtBuffer_}
audioDisabled: this.audioDisabled_ audioDisabled: this.audioDisabled_
}) })
) { ) {
if (shouldFixBadTimelineChanges(this.timelineChangeController_)) {
fixBadTimelineChange(this);
}
return false; return false;
} }
@ -2180,6 +2209,7 @@ Fetch At Buffer: ${this.fetchAtBuffer_}
return false; return false;
} }
// we need to allow an append here even if we're moving to different timelines.
if ( if (
shouldWaitForTimelineChange({ shouldWaitForTimelineChange({
timelineChangeController: this.timelineChangeController_, timelineChangeController: this.timelineChangeController_,
@ -2189,6 +2219,9 @@ Fetch At Buffer: ${this.fetchAtBuffer_}
audioDisabled: this.audioDisabled_ audioDisabled: this.audioDisabled_
}) })
) { ) {
if (shouldFixBadTimelineChanges(this.timelineChangeController_)) {
fixBadTimelineChange(this);
}
return false; return false;
} }

View file

@ -818,7 +818,7 @@ export default class SourceUpdater extends videojs.EventTarget {
if (typeof offset !== 'undefined' && if (typeof offset !== 'undefined' &&
this.videoBuffer && this.videoBuffer &&
// no point in updating if it's the same // no point in updating if it's the same
this.videoTimestampOffset !== offset) { this.videoTimestampOffset_ !== offset) {
pushQueue({ pushQueue({
type: 'video', type: 'video',
sourceUpdater: this, 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 * https://www.chartjs.org
* (c) 2024 Chart.js Contributors * (c) 2024 Chart.js Contributors
* Released under the MIT License * 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 metasets = iScale.getMatchingVisibleMetas(this._type).filter((meta)=>meta.controller.options.grouped);
const stacked = iScale.options.stacked; const stacked = iScale.options.stacked;
const stacks = []; const stacks = [];
const currentParsed = this._cachedMeta.controller.getParsed(dataIndex);
const iScaleValue = currentParsed && currentParsed[iScale.axis];
const skipNull = (meta)=>{ 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]; const val = parsed && parsed[meta.vScale.axis];
if (helpers_segment.isNullOrUndef(val) || isNaN(val)) { if (helpers_segment.isNullOrUndef(val) || isNaN(val)) {
return true; return true;
@ -2758,7 +2760,7 @@ function binarySearch(metaset, axis, value, intersect) {
const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange'; const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';
let intersectsItem = false; let intersectsItem = false;
evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index)=>{ evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index)=>{
if (element[rangeMethod](position[axis], useFinalPosition)) { if (element[rangeMethod] && element[rangeMethod](position[axis], useFinalPosition)) {
items.push({ items.push({
element, element,
datasetIndex, datasetIndex,
@ -5516,7 +5518,7 @@ function needContext(proxy, names) {
return false; return false;
} }
var version = "4.4.3"; var version = "4.4.4";
const KNOWN_POSITIONS = [ const KNOWN_POSITIONS = [
'top', 'top',
@ -6048,8 +6050,8 @@ class Chart {
let i; let i;
if (this._resizeBeforeDraw) { if (this._resizeBeforeDraw) {
const { width , height } = this._resizeBeforeDraw; const { width , height } = this._resizeBeforeDraw;
this._resize(width, height);
this._resizeBeforeDraw = null; this._resizeBeforeDraw = null;
this._resize(width, height);
} }
this.clear(); this.clear();
if (this.width <= 0 || this.height <= 0) { if (this.width <= 0 || this.height <= 0) {
@ -6688,7 +6690,8 @@ class ArcElement extends Element {
], useFinalPosition); ], useFinalPosition);
const rAdjust = (this.options.spacing + this.options.borderWidth) / 2; const rAdjust = (this.options.spacing + this.options.borderWidth) / 2;
const _circumference = helpers_segment.valueOrDefault(circumference, endAngle - startAngle); 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); const withinRadius = helpers_segment._isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);
return betweenAngles && withinRadius; return betweenAngles && withinRadius;
} }
@ -8909,6 +8912,9 @@ const positioners = {
++count; ++count;
} }
} }
if (count === 0 || xSet.size === 0) {
return false;
}
const xAverage = [ const xAverage = [
...xSet ...xSet
].reduce((a, b)=>a + b) / xSet.size; ].reduce((a, b)=>a + b) / xSet.size;
@ -10865,7 +10871,7 @@ class RadialLinearScale extends LinearScaleBase {
ctx.strokeStyle = color; ctx.strokeStyle = color;
ctx.setLineDash(optsAtIndex.borderDash); ctx.setLineDash(optsAtIndex.borderDash);
ctx.lineDashOffset = optsAtIndex.borderDashOffset; 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); position = this.getPointPosition(i, offset);
ctx.beginPath(); ctx.beginPath();
ctx.moveTo(this.xCenter, this.yCenter); 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 * https://www.chartjs.org
* (c) 2024 Chart.js Contributors * (c) 2024 Chart.js Contributors
* Released under the MIT License * 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 metasets = iScale.getMatchingVisibleMetas(this._type).filter((meta)=>meta.controller.options.grouped);
const stacked = iScale.options.stacked; const stacked = iScale.options.stacked;
const stacks = []; const stacks = [];
const currentParsed = this._cachedMeta.controller.getParsed(dataIndex);
const iScaleValue = currentParsed && currentParsed[iScale.axis];
const skipNull = (meta)=>{ 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]; const val = parsed && parsed[meta.vScale.axis];
if (isNullOrUndef(val) || isNaN(val)) { if (isNullOrUndef(val) || isNaN(val)) {
return true; return true;
@ -2756,7 +2758,7 @@ function binarySearch(metaset, axis, value, intersect) {
const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange'; const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';
let intersectsItem = false; let intersectsItem = false;
evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index)=>{ evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index)=>{
if (element[rangeMethod](position[axis], useFinalPosition)) { if (element[rangeMethod] && element[rangeMethod](position[axis], useFinalPosition)) {
items.push({ items.push({
element, element,
datasetIndex, datasetIndex,
@ -5514,7 +5516,7 @@ function needContext(proxy, names) {
return false; return false;
} }
var version = "4.4.3"; var version = "4.4.4";
const KNOWN_POSITIONS = [ const KNOWN_POSITIONS = [
'top', 'top',
@ -6046,8 +6048,8 @@ class Chart {
let i; let i;
if (this._resizeBeforeDraw) { if (this._resizeBeforeDraw) {
const { width , height } = this._resizeBeforeDraw; const { width , height } = this._resizeBeforeDraw;
this._resize(width, height);
this._resizeBeforeDraw = null; this._resizeBeforeDraw = null;
this._resize(width, height);
} }
this.clear(); this.clear();
if (this.width <= 0 || this.height <= 0) { if (this.width <= 0 || this.height <= 0) {
@ -6686,7 +6688,8 @@ class ArcElement extends Element {
], useFinalPosition); ], useFinalPosition);
const rAdjust = (this.options.spacing + this.options.borderWidth) / 2; const rAdjust = (this.options.spacing + this.options.borderWidth) / 2;
const _circumference = valueOrDefault(circumference, endAngle - startAngle); 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); const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);
return betweenAngles && withinRadius; return betweenAngles && withinRadius;
} }
@ -8907,6 +8910,9 @@ const positioners = {
++count; ++count;
} }
} }
if (count === 0 || xSet.size === 0) {
return false;
}
const xAverage = [ const xAverage = [
...xSet ...xSet
].reduce((a, b)=>a + b) / xSet.size; ].reduce((a, b)=>a + b) / xSet.size;
@ -10863,7 +10869,7 @@ class RadialLinearScale extends LinearScaleBase {
ctx.strokeStyle = color; ctx.strokeStyle = color;
ctx.setLineDash(optsAtIndex.borderDash); ctx.setLineDash(optsAtIndex.borderDash);
ctx.lineDashOffset = optsAtIndex.borderDashOffset; 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); position = this.getPointPosition(i, offset);
ctx.beginPath(); ctx.beginPath();
ctx.moveTo(this.xCenter, this.yCenter); 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 * https://www.chartjs.org
* (c) 2024 Chart.js Contributors * (c) 2024 Chart.js Contributors
* Released under the MIT License * 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 * https://www.chartjs.org
* (c) 2024 Chart.js Contributors * (c) 2024 Chart.js Contributors
* Released under the MIT License * Released under the MIT License

View file

@ -246,7 +246,7 @@ declare class Chart {
/** /**
* @param {ChartEvent} e - The event * @param {ChartEvent} e - The event
* @param {import('../types/index.js').ActiveElement[]} lastActive - Previously active elements * @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 * @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 * @returns {import('../types/index.js').ActiveElement[]} - The active elements
* @pravate * @pravate

View file

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

View file

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

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

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

View file

@ -246,9 +246,10 @@
skipFunctionalTests: true skipFunctionalTests: true
}, },
startDelimiterOverlappingBetweenPESPackets: { 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.", 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

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

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

View file

@ -14,8 +14,6 @@ import {
keySystemFormatToKeySystemDomain, keySystemFormatToKeySystemDomain,
KeySystemIds, KeySystemIds,
keySystemIdToKeySystemDomain, keySystemIdToKeySystemDomain,
} from '../utils/mediakeys-helper';
import {
KeySystems, KeySystems,
requestMediaKeySystemAccess, requestMediaKeySystemAccess,
} from '../utils/mediakeys-helper'; } from '../utils/mediakeys-helper';
@ -23,7 +21,13 @@ import { strToUtf8array } from '../utils/keysystem-util';
import { base64Decode } from '../utils/numeric-encoding-utils'; import { base64Decode } from '../utils/numeric-encoding-utils';
import { DecryptData, LevelKey } from '../loader/level-key'; import { DecryptData, LevelKey } from '../loader/level-key';
import Hex from '../utils/hex'; 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 { EventEmitter } from 'eventemitter3';
import type Hls from '../hls'; import type Hls from '../hls';
import type { ComponentAPI } from '../types/component-api'; import type { ComponentAPI } from '../types/component-api';
@ -525,7 +529,8 @@ class EMEController implements ComponentAPI {
private _onMediaEncrypted(event: MediaEncryptedEvent) { private _onMediaEncrypted(event: MediaEncryptedEvent) {
const { initDataType, initData } = event; 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 // Ignore event when initData is null
if (initData === null) { if (initData === null) {
@ -545,30 +550,42 @@ class EMEController implements ComponentAPI {
const sinf = base64Decode(JSON.parse(json).sinf); const sinf = base64Decode(JSON.parse(json).sinf);
const tenc = parseSinf(new Uint8Array(sinf)); const tenc = parseSinf(new Uint8Array(sinf));
if (!tenc) { if (!tenc) {
return; throw new Error(
`'schm' box missing or not cbcs/cenc with schi > tenc`,
);
} }
keyId = tenc.subarray(8, 24); keyId = tenc.subarray(8, 24);
keySystemDomain = KeySystems.FAIRPLAY; keySystemDomain = KeySystems.FAIRPLAY;
} catch (error) { } catch (error) {
this.warn('Failed to parse sinf "encrypted" event message initData'); this.warn(`${logMessage} Failed to parse sinf: ${error}`);
return; return;
} }
} else { } else {
// Support clear-lead key-session creation (otherwise depend on playlist keys) // Support Widevine clear-lead key-session creation (otherwise depend on playlist keys)
const psshInfo = parsePssh(initData); const psshResults = parseMultiPssh(initData);
if (psshInfo === null) { 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; return;
} }
if ( keySystemDomain = keySystemIdToKeySystemDomain(psshInfo.systemId);
psshInfo.version === 0 && if (psshInfo.version === 0 && psshInfo.data) {
psshInfo.systemId === KeySystemIds.WIDEVINE && const offset = psshInfo.data.length - 22;
psshInfo.data keyId = psshInfo.data.subarray(offset, offset + 16);
) {
keyId = psshInfo.data.subarray(8, 24);
} }
keySystemDomain = keySystemIdToKeySystemDomain(
psshInfo.systemId as KeySystemIds,
);
} }
if (!keySystemDomain || !keyId) { if (!keySystemDomain || !keyId) {
@ -583,7 +600,7 @@ class EMEController implements ComponentAPI {
// Match playlist key // Match playlist key
const keyContext = mediaKeySessions[i]; const keyContext = mediaKeySessions[i];
const decryptdata = keyContext.decryptdata; const decryptdata = keyContext.decryptdata;
if (decryptdata.pssh || !decryptdata.keyId) { if (!decryptdata.keyId) {
continue; continue;
} }
const oldKeyIdHex = Hex.hexDump(decryptdata.keyId); const oldKeyIdHex = Hex.hexDump(decryptdata.keyId);
@ -592,6 +609,9 @@ class EMEController implements ComponentAPI {
decryptdata.uri.replace(/-/g, '').indexOf(keyIdHex) !== -1 decryptdata.uri.replace(/-/g, '').indexOf(keyIdHex) !== -1
) { ) {
keySessionContextPromise = keyIdToKeySessionPromise[oldKeyIdHex]; keySessionContextPromise = keyIdToKeySessionPromise[oldKeyIdHex];
if (decryptdata.pssh) {
break;
}
delete keyIdToKeySessionPromise[oldKeyIdHex]; delete keyIdToKeySessionPromise[oldKeyIdHex];
decryptdata.pssh = new Uint8Array(initData); decryptdata.pssh = new Uint8Array(initData);
decryptdata.keyId = keyId; 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 // System IDs for which we can extract a key ID from "encrypted" event PSSH
export const enum KeySystemIds { export const enum KeySystemIds {
// CENC = '1077efecc0b24d02ace33c1e52e2fb4b' CENC = '1077efecc0b24d02ace33c1e52e2fb4b',
// CLEARKEY = 'e2719d58a985b3c9781ab030af78d30e', CLEARKEY = 'e2719d58a985b3c9781ab030af78d30e',
// FAIRPLAY = '94ce86fb07ff4f43adb893d2fa968ca2', FAIRPLAY = '94ce86fb07ff4f43adb893d2fa968ca2',
// PLAYREADY = '9a04f07998404286ab92e65be0885f95', PLAYREADY = '9a04f07998404286ab92e65be0885f95',
WIDEVINE = 'edef8ba979d64acea3c827dcd51d21ed', WIDEVINE = 'edef8ba979d64acea3c827dcd51d21ed',
} }
@ -48,10 +48,13 @@ export function keySystemIdToKeySystemDomain(
): KeySystems | undefined { ): KeySystems | undefined {
if (systemId === KeySystemIds.WIDEVINE) { if (systemId === KeySystemIds.WIDEVINE) {
return KeySystems.WIDEVINE; return KeySystems.WIDEVINE;
// } else if (systemId === KeySystemIds.PLAYREADY) { } else if (systemId === KeySystemIds.PLAYREADY) {
// return KeySystems.PLAYREADY; return KeySystems.PLAYREADY;
// } else if (systemId === KeySystemIds.CENC || systemId === KeySystemIds.CLEARKEY) { } else if (
// return KeySystems.CLEARKEY; 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 { utf8ArrayToStr } from '../demux/id3';
import { logger } from '../utils/logger'; import { logger } from '../utils/logger';
import Hex from './hex'; import Hex from './hex';
import type { KeySystemIds } from './mediakeys-helper';
import type { PassthroughTrack, UserdataSample } from '../types/demuxer'; import type { PassthroughTrack, UserdataSample } from '../types/demuxer';
import type { DecryptData } from '../loader/level-key'; import type { DecryptData } from '../loader/level-key';
@ -545,7 +546,6 @@ export function parseSinf(sinf: Uint8Array): Uint8Array | null {
return findBox(sinf, ['schi', 'tenc'])[0]; return findBox(sinf, ['schi', 'tenc'])[0];
} }
} }
logger.error(`[eme] missing 'schm' box`);
return null; return null;
} }
@ -1349,41 +1349,86 @@ export function mp4pssh(
); );
} }
export function parsePssh(initData: ArrayBuffer) { export type PsshData = {
if (!(initData instanceof ArrayBuffer) || initData.byteLength < 32) { version: 0 | 1;
return null; systemId: KeySystemIds;
} kids: null | Uint8Array[];
const result = { data: null | Uint8Array;
version: 0, offset: number;
systemId: '', size: number;
kids: null as null | Uint8Array[], };
data: null as null | Uint8Array,
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;
}
}
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 view = new DataView(initData);
const boxSize = view.getUint32(0);
if (initData.byteLength !== boxSize && boxSize > 44) {
return null;
} }
const type = view.getUint32(4); const type = view.getUint32(4);
if (type !== 0x70737368) { if (type !== 0x70737368) {
return null; return { offset, size };
} }
result.version = view.getUint32(8) >>> 24; const version = view.getUint32(8) >>> 24;
if (result.version > 1) { if (version !== 0 && version !== 1) {
return null; 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); const dataSizeOrKidCount = view.getUint32(28);
if (result.version === 0) { let kids: null | Uint8Array[] = null;
if (boxSize - 32 < dataSizeOrKidCount) { let data: null | Uint8Array = null;
return null; if (version === 0) {
if (size - 32 < dataSizeOrKidCount || dataSizeOrKidCount < 22) {
return { offset, size };
} }
result.data = new Uint8Array(initData, 32, dataSizeOrKidCount); data = new Uint8Array(buffer, offset + 32, dataSizeOrKidCount);
} else if (result.version === 1) { } else if (version === 1) {
result.kids = []; if (
!dataSizeOrKidCount ||
length < offset + 32 + dataSizeOrKidCount * 16 + 16
) {
return { offset, size };
}
kids = [];
for (let i = 0; i < dataSizeOrKidCount; i++) { 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> Timmy Willison <timmywil@users.noreply.github.com>
divdeploy <166095818+divdeploy@users.noreply.github.com> divdeploy <166095818+divdeploy@users.noreply.github.com>
mark van tilburg <markvantilburg@gmail.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/) * Windows: [WAMP download](https://www.wampserver.com/en/)
* Mac: [MAMP download](https://www.mamp.info/en/mac/) * Mac: [MAMP download](https://www.mamp.info/en/mac/)
* Linux: [Setting up LAMP](https://www.linux.com/learn/tutorials/288158-easy-lamp-server-installation) * 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) * [http-server](https://www.npmjs.com/package/http-server)
### Running the Tests ### Running the Tests

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

@ -9,46 +9,16 @@
], ],
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"jquery": ">=1.8.0 <4.0.0" "jquery": ">=1.12.0 <5.0.0"
}, },
"devDependencies": { "devDependencies": {
"jquery-color": "2.2.0", "jquery-color": "3.0.0",
"jquery-mousewheel": "3.1.12", "jquery-mousewheel": "3.1.12",
"jquery-simulate": "1.1.1", "jquery-simulate": "1.1.1",
"qunit": "2.19.4", "qunit": "2.19.4",
"requirejs": "2.1.14", "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-1.12.4": "jquery#1.12.4",
"jquery-3.x": "jquery#3.7.1", "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-2.2.4": "jquery#2.2.4",
"jquery-3.0.0": "jquery#3.0.0", "jquery-3.0.0": "jquery#3.0.0",
"jquery-3.1.0": "jquery#3.1.0", "jquery-3.1.0": "jquery#3.1.0",
@ -68,8 +38,8 @@
"jquery-3.6.4": "jquery#3.6.4", "jquery-3.6.4": "jquery#3.6.4",
"jquery-3.7.0": "jquery#3.7.0", "jquery-3.7.0": "jquery#3.7.0",
"jquery-3.7.1": "jquery#3.7.1", "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-1.x": "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-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 * 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 * 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 * 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; left: 0;
position: absolute; position: absolute;
opacity: 0; opacity: 0;
-ms-filter: "alpha(opacity=0)"; /* support: IE8 */
} }
.ui-front { .ui-front {
@ -122,8 +121,6 @@
.ui-menu .ui-menu-item { .ui-menu .ui-menu-item {
margin: 0; margin: 0;
cursor: pointer; cursor: pointer;
/* support: IE10, see #8844 */
list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
} }
.ui-menu .ui-menu-item-wrapper { .ui-menu .ui-menu-item-wrapper {
position: relative; position: relative;
@ -173,12 +170,7 @@
vertical-align: middle; vertical-align: middle;
text-align: center; text-align: center;
-webkit-user-select: none; -webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none; user-select: none;
/* Support: IE <= 11 */
overflow: visible;
} }
.ui-button, .ui-button,
@ -229,7 +221,7 @@ input.ui-button.ui-icon-notext .ui-icon {
} }
/* workarounds */ /* workarounds */
/* Support: Firefox 5 - 40 */ /* Support: Firefox 5 - 125+ */
input.ui-button::-moz-focus-inner, input.ui-button::-moz-focus-inner,
button.ui-button::-moz-focus-inner { button.ui-button::-moz-focus-inner {
border: 0; border: 0;
@ -280,9 +272,6 @@ button.ui-button::-moz-focus-inner {
/* Spinner specific style fixes */ /* Spinner specific style fixes */
.ui-controlgroup-vertical .ui-spinner-input { .ui-controlgroup-vertical .ui-spinner-input {
/* Support: IE8 only, Android < 4.4 only */
width: 75%;
width: calc( 100% - 2.4em ); width: calc( 100% - 2.4em );
} }
.ui-controlgroup-vertical .ui-spinner .ui-spinner-up { .ui-controlgroup-vertical .ui-spinner .ui-spinner-up {
@ -579,7 +568,6 @@ button.ui-button::-moz-focus-inner {
cursor: move; cursor: move;
} }
.ui-draggable-handle { .ui-draggable-handle {
-ms-touch-action: none;
touch-action: none; touch-action: none;
} }
.ui-resizable { .ui-resizable {
@ -589,7 +577,6 @@ button.ui-button::-moz-focus-inner {
position: absolute; position: absolute;
font-size: 0.1px; font-size: 0.1px;
display: block; display: block;
-ms-touch-action: none;
touch-action: none; touch-action: none;
} }
.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-disabled .ui-resizable-handle,
@ -664,14 +651,12 @@ button.ui-button::-moz-focus-inner {
.ui-progressbar .ui-progressbar-overlay { .ui-progressbar .ui-progressbar-overlay {
background: url("data:image/gif;base64,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"); background: url("data:image/gif;base64,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");
height: 100%; height: 100%;
-ms-filter: "alpha(opacity=25)"; /* support: IE8 */
opacity: 0.25; opacity: 0.25;
} }
.ui-progressbar-indeterminate .ui-progressbar-value { .ui-progressbar-indeterminate .ui-progressbar-value {
background-image: none; background-image: none;
} }
.ui-selectable { .ui-selectable {
-ms-touch-action: none;
touch-action: none; touch-action: none;
} }
.ui-selectable-helper { .ui-selectable-helper {
@ -729,7 +714,6 @@ button.ui-button::-moz-focus-inner {
width: 1.2em; width: 1.2em;
height: 1.2em; height: 1.2em;
cursor: pointer; cursor: pointer;
-ms-touch-action: none;
touch-action: none; touch-action: none;
} }
.ui-slider .ui-slider-range { .ui-slider .ui-slider-range {
@ -741,12 +725,6 @@ button.ui-button::-moz-focus-inner {
background-position: 0 0; 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 { .ui-slider-horizontal {
height: .8em; height: .8em;
} }
@ -785,7 +763,6 @@ button.ui-button::-moz-focus-inner {
top: 0; top: 0;
} }
.ui-sortable-handle { .ui-sortable-handle {
-ms-touch-action: none;
touch-action: none; touch-action: none;
} }
.ui-spinner { .ui-spinner {
@ -1040,19 +1017,14 @@ a.ui-button:active,
.ui-widget-content .ui-priority-secondary, .ui-widget-content .ui-priority-secondary,
.ui-widget-header .ui-priority-secondary { .ui-widget-header .ui-priority-secondary {
opacity: .7; opacity: .7;
-ms-filter: "alpha(opacity=70)"; /* support: IE8 */
font-weight: normal; font-weight: normal;
} }
.ui-state-disabled, .ui-state-disabled,
.ui-widget-content .ui-state-disabled, .ui-widget-content .ui-state-disabled,
.ui-widget-header .ui-state-disabled { .ui-widget-header .ui-state-disabled {
opacity: .35; opacity: .35;
-ms-filter: "alpha(opacity=35)"; /* support: IE8 */
background-image: none; background-image: none;
} }
.ui-state-disabled .ui-icon {
-ms-filter: "alpha(opacity=35)"; /* support: IE8 - See #6059 */
}
/* Icons /* Icons
----------------------------------*/ ----------------------------------*/
@ -1306,9 +1278,7 @@ a.ui-button:active,
.ui-widget-overlay { .ui-widget-overlay {
background: #aaaaaa; background: #aaaaaa;
opacity: .3; opacity: .3;
-ms-filter: "alpha(opacity=30)"; /* support: IE8 */
} }
.ui-widget-shadow { .ui-widget-shadow {
-webkit-box-shadow: 0px 0px 5px #666666;
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 * https://jqueryui.com
* *
* Copyright OpenJS Foundation and other contributors * Copyright OpenJS Foundation and other contributors
@ -172,19 +172,14 @@ a.ui-button:active,
.ui-widget-content .ui-priority-secondary, .ui-widget-content .ui-priority-secondary,
.ui-widget-header .ui-priority-secondary { .ui-widget-header .ui-priority-secondary {
opacity: .7; opacity: .7;
-ms-filter: "alpha(opacity=70)"; /* support: IE8 */
font-weight: normal; font-weight: normal;
} }
.ui-state-disabled, .ui-state-disabled,
.ui-widget-content .ui-state-disabled, .ui-widget-content .ui-state-disabled,
.ui-widget-header .ui-state-disabled { .ui-widget-header .ui-state-disabled {
opacity: .35; opacity: .35;
-ms-filter: "alpha(opacity=35)"; /* support: IE8 */
background-image: none; background-image: none;
} }
.ui-state-disabled .ui-icon {
-ms-filter: "alpha(opacity=35)"; /* support: IE8 - See #6059 */
}
/* Icons /* Icons
----------------------------------*/ ----------------------------------*/
@ -438,9 +433,7 @@ a.ui-button:active,
.ui-widget-overlay { .ui-widget-overlay {
background: #aaaaaa; background: #aaaaaa;
opacity: .3; opacity: .3;
-ms-filter: "alpha(opacity=30)"; /* support: IE8 */
} }
.ui-widget-shadow { .ui-widget-shadow {
-webkit-box-shadow: 0px 0px 5px #666666;
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 * 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 * 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 * 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; left: 0;
position: absolute; position: absolute;
opacity: 0; opacity: 0;
-ms-filter: "alpha(opacity=0)"; /* support: IE8 */
} }
.ui-front { .ui-front {
@ -122,8 +121,6 @@
.ui-menu .ui-menu-item { .ui-menu .ui-menu-item {
margin: 0; margin: 0;
cursor: pointer; cursor: pointer;
/* support: IE10, see #8844 */
list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
} }
.ui-menu .ui-menu-item-wrapper { .ui-menu .ui-menu-item-wrapper {
position: relative; position: relative;
@ -173,12 +170,7 @@
vertical-align: middle; vertical-align: middle;
text-align: center; text-align: center;
-webkit-user-select: none; -webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none; user-select: none;
/* Support: IE <= 11 */
overflow: visible;
} }
.ui-button, .ui-button,
@ -229,7 +221,7 @@ input.ui-button.ui-icon-notext .ui-icon {
} }
/* workarounds */ /* workarounds */
/* Support: Firefox 5 - 40 */ /* Support: Firefox 5 - 125+ */
input.ui-button::-moz-focus-inner, input.ui-button::-moz-focus-inner,
button.ui-button::-moz-focus-inner { button.ui-button::-moz-focus-inner {
border: 0; border: 0;
@ -280,9 +272,6 @@ button.ui-button::-moz-focus-inner {
/* Spinner specific style fixes */ /* Spinner specific style fixes */
.ui-controlgroup-vertical .ui-spinner-input { .ui-controlgroup-vertical .ui-spinner-input {
/* Support: IE8 only, Android < 4.4 only */
width: 75%;
width: calc( 100% - 2.4em ); width: calc( 100% - 2.4em );
} }
.ui-controlgroup-vertical .ui-spinner .ui-spinner-up { .ui-controlgroup-vertical .ui-spinner .ui-spinner-up {
@ -579,7 +568,6 @@ button.ui-button::-moz-focus-inner {
cursor: move; cursor: move;
} }
.ui-draggable-handle { .ui-draggable-handle {
-ms-touch-action: none;
touch-action: none; touch-action: none;
} }
.ui-resizable { .ui-resizable {
@ -589,7 +577,6 @@ button.ui-button::-moz-focus-inner {
position: absolute; position: absolute;
font-size: 0.1px; font-size: 0.1px;
display: block; display: block;
-ms-touch-action: none;
touch-action: none; touch-action: none;
} }
.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-disabled .ui-resizable-handle,
@ -664,14 +651,12 @@ button.ui-button::-moz-focus-inner {
.ui-progressbar .ui-progressbar-overlay { .ui-progressbar .ui-progressbar-overlay {
background: url("data:image/gif;base64,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"); background: url("data:image/gif;base64,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");
height: 100%; height: 100%;
-ms-filter: "alpha(opacity=25)"; /* support: IE8 */
opacity: 0.25; opacity: 0.25;
} }
.ui-progressbar-indeterminate .ui-progressbar-value { .ui-progressbar-indeterminate .ui-progressbar-value {
background-image: none; background-image: none;
} }
.ui-selectable { .ui-selectable {
-ms-touch-action: none;
touch-action: none; touch-action: none;
} }
.ui-selectable-helper { .ui-selectable-helper {
@ -729,7 +714,6 @@ button.ui-button::-moz-focus-inner {
width: 1.2em; width: 1.2em;
height: 1.2em; height: 1.2em;
cursor: pointer; cursor: pointer;
-ms-touch-action: none;
touch-action: none; touch-action: none;
} }
.ui-slider .ui-slider-range { .ui-slider .ui-slider-range {
@ -741,12 +725,6 @@ button.ui-button::-moz-focus-inner {
background-position: 0 0; 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 { .ui-slider-horizontal {
height: .8em; height: .8em;
} }
@ -785,7 +763,6 @@ button.ui-button::-moz-focus-inner {
top: 0; top: 0;
} }
.ui-sortable-handle { .ui-sortable-handle {
-ms-touch-action: none;
touch-action: none; touch-action: none;
} }
.ui-spinner { .ui-spinner {
@ -1040,19 +1017,14 @@ a.ui-button:active,
.ui-widget-content .ui-priority-secondary, .ui-widget-content .ui-priority-secondary,
.ui-widget-header .ui-priority-secondary { .ui-widget-header .ui-priority-secondary {
opacity: .7; opacity: .7;
-ms-filter: "alpha(opacity=70)"; /* support: IE8 */
font-weight: normal; font-weight: normal;
} }
.ui-state-disabled, .ui-state-disabled,
.ui-widget-content .ui-state-disabled, .ui-widget-content .ui-state-disabled,
.ui-widget-header .ui-state-disabled { .ui-widget-header .ui-state-disabled {
opacity: .35; opacity: .35;
-ms-filter: "alpha(opacity=35)"; /* support: IE8 */
background-image: none; background-image: none;
} }
.ui-state-disabled .ui-icon {
-ms-filter: "alpha(opacity=35)"; /* support: IE8 - See #6059 */
}
/* Icons /* Icons
----------------------------------*/ ----------------------------------*/
@ -1306,9 +1278,7 @@ a.ui-button:active,
.ui-widget-overlay { .ui-widget-overlay {
background: #aaaaaa url("images/ui-bg_highlight-hard_40_aaaaaa_1x100.png") 50% top repeat-x; background: #aaaaaa url("images/ui-bg_highlight-hard_40_aaaaaa_1x100.png") 50% top repeat-x;
opacity: .3; opacity: .3;
-ms-filter: "alpha(opacity=30)"; /* support: IE8 */
} }
.ui-widget-shadow { .ui-widget-shadow {
-webkit-box-shadow: -8px -8px 8px #aaaaaa;
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 * https://jqueryui.com
* *
* Copyright OpenJS Foundation and other contributors * Copyright OpenJS Foundation and other contributors
@ -172,19 +172,14 @@ a.ui-button:active,
.ui-widget-content .ui-priority-secondary, .ui-widget-content .ui-priority-secondary,
.ui-widget-header .ui-priority-secondary { .ui-widget-header .ui-priority-secondary {
opacity: .7; opacity: .7;
-ms-filter: "alpha(opacity=70)"; /* support: IE8 */
font-weight: normal; font-weight: normal;
} }
.ui-state-disabled, .ui-state-disabled,
.ui-widget-content .ui-state-disabled, .ui-widget-content .ui-state-disabled,
.ui-widget-header .ui-state-disabled { .ui-widget-header .ui-state-disabled {
opacity: .35; opacity: .35;
-ms-filter: "alpha(opacity=35)"; /* support: IE8 */
background-image: none; background-image: none;
} }
.ui-state-disabled .ui-icon {
-ms-filter: "alpha(opacity=35)"; /* support: IE8 - See #6059 */
}
/* Icons /* Icons
----------------------------------*/ ----------------------------------*/
@ -438,9 +433,7 @@ a.ui-button:active,
.ui-widget-overlay { .ui-widget-overlay {
background: #aaaaaa url("images/ui-bg_highlight-hard_40_aaaaaa_1x100.png") 50% top repeat-x; background: #aaaaaa url("images/ui-bg_highlight-hard_40_aaaaaa_1x100.png") 50% top repeat-x;
opacity: .3; opacity: .3;
-ms-filter: "alpha(opacity=30)"; /* support: IE8 */
} }
.ui-widget-shadow { .ui-widget-shadow {
-webkit-box-shadow: -8px -8px 8px #aaaaaa;
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 * 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 * 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 * 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; left: 0;
position: absolute; position: absolute;
opacity: 0; opacity: 0;
-ms-filter: "alpha(opacity=0)"; /* support: IE8 */
} }
.ui-front { .ui-front {
@ -122,8 +121,6 @@
.ui-menu .ui-menu-item { .ui-menu .ui-menu-item {
margin: 0; margin: 0;
cursor: pointer; cursor: pointer;
/* support: IE10, see #8844 */
list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
} }
.ui-menu .ui-menu-item-wrapper { .ui-menu .ui-menu-item-wrapper {
position: relative; position: relative;
@ -173,12 +170,7 @@
vertical-align: middle; vertical-align: middle;
text-align: center; text-align: center;
-webkit-user-select: none; -webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none; user-select: none;
/* Support: IE <= 11 */
overflow: visible;
} }
.ui-button, .ui-button,
@ -229,7 +221,7 @@ input.ui-button.ui-icon-notext .ui-icon {
} }
/* workarounds */ /* workarounds */
/* Support: Firefox 5 - 40 */ /* Support: Firefox 5 - 125+ */
input.ui-button::-moz-focus-inner, input.ui-button::-moz-focus-inner,
button.ui-button::-moz-focus-inner { button.ui-button::-moz-focus-inner {
border: 0; border: 0;
@ -280,9 +272,6 @@ button.ui-button::-moz-focus-inner {
/* Spinner specific style fixes */ /* Spinner specific style fixes */
.ui-controlgroup-vertical .ui-spinner-input { .ui-controlgroup-vertical .ui-spinner-input {
/* Support: IE8 only, Android < 4.4 only */
width: 75%;
width: calc( 100% - 2.4em ); width: calc( 100% - 2.4em );
} }
.ui-controlgroup-vertical .ui-spinner .ui-spinner-up { .ui-controlgroup-vertical .ui-spinner .ui-spinner-up {
@ -579,7 +568,6 @@ button.ui-button::-moz-focus-inner {
cursor: move; cursor: move;
} }
.ui-draggable-handle { .ui-draggable-handle {
-ms-touch-action: none;
touch-action: none; touch-action: none;
} }
.ui-resizable { .ui-resizable {
@ -589,7 +577,6 @@ button.ui-button::-moz-focus-inner {
position: absolute; position: absolute;
font-size: 0.1px; font-size: 0.1px;
display: block; display: block;
-ms-touch-action: none;
touch-action: none; touch-action: none;
} }
.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-disabled .ui-resizable-handle,
@ -664,14 +651,12 @@ button.ui-button::-moz-focus-inner {
.ui-progressbar .ui-progressbar-overlay { .ui-progressbar .ui-progressbar-overlay {
background: url("data:image/gif;base64,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"); background: url("data:image/gif;base64,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");
height: 100%; height: 100%;
-ms-filter: "alpha(opacity=25)"; /* support: IE8 */
opacity: 0.25; opacity: 0.25;
} }
.ui-progressbar-indeterminate .ui-progressbar-value { .ui-progressbar-indeterminate .ui-progressbar-value {
background-image: none; background-image: none;
} }
.ui-selectable { .ui-selectable {
-ms-touch-action: none;
touch-action: none; touch-action: none;
} }
.ui-selectable-helper { .ui-selectable-helper {
@ -729,7 +714,6 @@ button.ui-button::-moz-focus-inner {
width: 1.2em; width: 1.2em;
height: 1.2em; height: 1.2em;
cursor: pointer; cursor: pointer;
-ms-touch-action: none;
touch-action: none; touch-action: none;
} }
.ui-slider .ui-slider-range { .ui-slider .ui-slider-range {
@ -741,12 +725,6 @@ button.ui-button::-moz-focus-inner {
background-position: 0 0; 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 { .ui-slider-horizontal {
height: .8em; height: .8em;
} }
@ -785,7 +763,6 @@ button.ui-button::-moz-focus-inner {
top: 0; top: 0;
} }
.ui-sortable-handle { .ui-sortable-handle {
-ms-touch-action: none;
touch-action: none; touch-action: none;
} }
.ui-spinner { .ui-spinner {
@ -1040,19 +1017,14 @@ a.ui-button:active,
.ui-widget-content .ui-priority-secondary, .ui-widget-content .ui-priority-secondary,
.ui-widget-header .ui-priority-secondary { .ui-widget-header .ui-priority-secondary {
opacity: .7; opacity: .7;
-ms-filter: "alpha(opacity=70)"; /* support: IE8 */
font-weight: normal; font-weight: normal;
} }
.ui-state-disabled, .ui-state-disabled,
.ui-widget-content .ui-state-disabled, .ui-widget-content .ui-state-disabled,
.ui-widget-header .ui-state-disabled { .ui-widget-header .ui-state-disabled {
opacity: .35; opacity: .35;
-ms-filter: "alpha(opacity=35)"; /* support: IE8 */
background-image: none; background-image: none;
} }
.ui-state-disabled .ui-icon {
-ms-filter: "alpha(opacity=35)"; /* support: IE8 - See #6059 */
}
/* Icons /* Icons
----------------------------------*/ ----------------------------------*/
@ -1306,9 +1278,7 @@ a.ui-button:active,
.ui-widget-overlay { .ui-widget-overlay {
background: #a6a6a6 url("images/ui-bg_dots-small_65_a6a6a6_2x2.png") 50% 50% repeat; background: #a6a6a6 url("images/ui-bg_dots-small_65_a6a6a6_2x2.png") 50% 50% repeat;
opacity: .4; opacity: .4;
-ms-filter: "alpha(opacity=40)"; /* support: IE8 */
} }
.ui-widget-shadow { .ui-widget-shadow {
-webkit-box-shadow: -8px -8px 8px #333333;
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 * https://jqueryui.com
* *
* Copyright OpenJS Foundation and other contributors * Copyright OpenJS Foundation and other contributors
@ -172,19 +172,14 @@ a.ui-button:active,
.ui-widget-content .ui-priority-secondary, .ui-widget-content .ui-priority-secondary,
.ui-widget-header .ui-priority-secondary { .ui-widget-header .ui-priority-secondary {
opacity: .7; opacity: .7;
-ms-filter: "alpha(opacity=70)"; /* support: IE8 */
font-weight: normal; font-weight: normal;
} }
.ui-state-disabled, .ui-state-disabled,
.ui-widget-content .ui-state-disabled, .ui-widget-content .ui-state-disabled,
.ui-widget-header .ui-state-disabled { .ui-widget-header .ui-state-disabled {
opacity: .35; opacity: .35;
-ms-filter: "alpha(opacity=35)"; /* support: IE8 */
background-image: none; background-image: none;
} }
.ui-state-disabled .ui-icon {
-ms-filter: "alpha(opacity=35)"; /* support: IE8 - See #6059 */
}
/* Icons /* Icons
----------------------------------*/ ----------------------------------*/
@ -438,9 +433,7 @@ a.ui-button:active,
.ui-widget-overlay { .ui-widget-overlay {
background: #a6a6a6 url("images/ui-bg_dots-small_65_a6a6a6_2x2.png") 50% 50% repeat; background: #a6a6a6 url("images/ui-bg_dots-small_65_a6a6a6_2x2.png") 50% 50% repeat;
opacity: .4; opacity: .4;
-ms-filter: "alpha(opacity=40)"; /* support: IE8 */
} }
.ui-widget-shadow { .ui-widget-shadow {
-webkit-box-shadow: -8px -8px 8px #333333;
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