Remove unused source map for Artplayer Tool Thumbnail

This commit is contained in:
Harvey Zhao committed 2026-03-07 20:46:41 +08:00
1 parent 1dc8e9a4ff
commit 78e9cc74f8
43 files changed
+58546 -102588

No files matched your search

+230 -358
View File
@@ -1,374 +1,246 @@
// modules are defined as an array
// [ module function, map of requires ]
//
// map of requires is short require name -> numeric require
//
// anything defined in a previous bundle is accessed via the
// orig method which is the require for previous bundles
(function (modules, entry, mainEntry, parcelRequireName, globalName) {
/* eslint-disable no-undef */
var globalObject =
typeof globalThis !== 'undefined'
? globalThis
: typeof self !== 'undefined'
? self
: typeof window !== 'undefined'
? window
: typeof global !== 'undefined'
? global
: {};
/* eslint-enable no-undef */
// Save the require from previous bundle to this closure if any
var previousRequire =
typeof globalObject[parcelRequireName] === 'function' &&
globalObject[parcelRequireName];
var cache = previousRequire.cache || {};
// Do not use `require` to prevent Webpack from trying to bundle this call
var nodeRequire =
typeof module !== 'undefined' &&
typeof module.require === 'function' &&
module.require.bind(module);
function newRequire(name, jumped) {
if (!cache[name]) {
if (!modules[name]) {
// if we cannot find the module within our internal map or
// cache jump to the current global require ie. the last bundle
// that was added to the page.
var currentRequire =
typeof globalObject[parcelRequireName] === 'function' &&
globalObject[parcelRequireName];
if (!jumped && currentRequire) {
return currentRequire(name, true);
var artplayerPluginAds = (function() {
"use strict";
const style = ".artplayer-plugin-ads {\n position: absolute;\n z-index: 150;\n left: 0;\n top: 0;\n right: 0;\n bottom: 0;\n width: 100%;\n height: 100%;\n overflow: hidden;\n font-size: 13px;\n line-height: 1;\n color: #fff;\n background-color: #000;\n}\n.artplayer-plugin-ads .artplayer-plugin-ads-html {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n}\n.artplayer-plugin-ads .artplayer-plugin-ads-video {\n width: 100%;\n height: 100%;\n}\n.artplayer-plugin-ads .artplayer-plugin-ads-timer {\n display: none;\n position: absolute;\n top: 10px;\n right: 10px;\n}\n.artplayer-plugin-ads .artplayer-plugin-ads-timer > div {\n display: flex;\n align-items: center;\n background-color: rgba(0, 0, 0, 0.5);\n border-radius: 15px;\n margin-left: 5px;\n padding: 5px 10px;\n cursor: pointer;\n}\n.artplayer-plugin-ads .artplayer-plugin-ads-control {\n display: none;\n position: absolute;\n bottom: 10px;\n right: 10px;\n}\n.artplayer-plugin-ads .artplayer-plugin-ads-control > div {\n display: flex;\n align-items: center;\n background-color: rgba(0, 0, 0, 0.5);\n border-radius: 15px;\n margin-left: 5px;\n padding: 5px 10px;\n cursor: pointer;\n}\n.artplayer-plugin-ads .artplayer-plugin-ads-control .art-icon svg {\n width: 20px;\n height: 20px;\n}\n.artplayer-plugin-ads .artplayer-plugin-ads-loading {\n display: flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n left: 0;\n top: 0;\n right: 0;\n bottom: 0;\n width: 100%;\n height: 100%;\n}\n";
function checkVersion(art) {
const {
version,
utils: { errorHandle }
} = art.constructor;
const arr = version.split(".").map(Number);
const major = arr[0];
const minor = arr[1] / 100;
errorHandle(
major + minor >= 5,
`Artplayer.js@${version} is not compatible the artplayerPluginAds@${artplayerPluginAds2.version}. Please update it to version Artplayer.js@5.x.x`
);
}
function artplayerPluginAds2(option) {
return (art) => {
checkVersion(art);
const {
template: { $player },
icons: { volume, volumeClose, fullscreenOn, fullscreenOff, loading },
constructor: {
validator,
utils: { query, append, setStyle }
}
// If there are other bundles on this page the require from the
// previous one is saved to 'previousRequire'. Repeat this as
// many times as there are bundles until the module is found or
// we exhaust the require chain.
if (previousRequire) {
return previousRequire(name, true);
} = art;
option = validator(
{
html: "",
video: "",
url: "",
playDuration: 5,
totalDuration: 10,
muted: false,
i18n: {
close: "关闭广告",
countdown: "%s秒",
detail: "查看详情",
canBeClosed: "%s秒后可关闭广告"
},
...option
},
{
html: "?string",
video: "?string",
url: "?string",
playDuration: "number",
totalDuration: "number",
muted: "?boolean",
i18n: {
close: "string",
countdown: "string",
detail: "string",
canBeClosed: "string"
}
}
// Try the node require function if it exists.
if (nodeRequire && typeof name === 'string') {
return nodeRequire(name);
}
var err = new Error("Cannot find module '" + name + "'");
err.code = 'MODULE_NOT_FOUND';
throw err;
}
localRequire.resolve = resolve;
localRequire.cache = {};
var module = (cache[name] = new newRequire.Module(name));
modules[name][0].call(
module.exports,
localRequire,
module,
module.exports,
this
);
}
return cache[name].exports;
function localRequire(x) {
var res = localRequire.resolve(x);
return res === false ? {} : newRequire(res);
}
function resolve(x) {
var id = modules[name][1][x];
return id != null ? id : x;
}
}
function Module(moduleName) {
this.id = moduleName;
this.bundle = newRequire;
this.exports = {};
}
newRequire.isParcelRequire = true;
newRequire.Module = Module;
newRequire.modules = modules;
newRequire.cache = cache;
newRequire.parent = previousRequire;
newRequire.register = function (id, exports) {
modules[id] = [
function (require, module) {
module.exports = exports;
},
{},
];
};
Object.defineProperty(newRequire, 'root', {
get: function () {
return globalObject[parcelRequireName];
},
});
globalObject[parcelRequireName] = newRequire;
for (var i = 0; i < entry.length; i++) {
newRequire(entry[i]);
}
if (mainEntry) {
// Expose entry point to Node, AMD or browser globals
// Based on https://github.com/ForbesLindesay/umd/blob/master/template.js
var mainExports = newRequire(mainEntry);
// CommonJS
if (typeof exports === 'object' && typeof module !== 'undefined') {
module.exports = mainExports;
// RequireJS
} else if (typeof define === 'function' && define.amd) {
define(function () {
return mainExports;
});
// <script>
} else if (globalName) {
this[globalName] = mainExports;
}
}
})({"gEVO5":[function(require,module,exports) {
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
parcelHelpers.defineInteropFlag(exports);
var _styleLess = require("bundle-text:./style.less");
var _styleLessDefault = parcelHelpers.interopDefault(_styleLess);
function artplayerPluginAds(option) {
return (art)=>{
const { template: { $player } , icons: { volume , volumeClose , fullscreenOn , fullscreenOff , loading } , constructor: { validator , utils: { query , append , setStyle } , } , } = art;
option = validator({
html: "",
video: "",
url: "",
playDuration: 5,
totalDuration: 10,
muted: false,
i18n: {
close: "\u5173\u95ED\u5E7F\u544A",
countdown: "%s\u79D2",
detail: "\u67E5\u770B\u8BE6\u60C5",
canBeClosed: "%s\u79D2\u540E\u53EF\u5173\u95ED\u5E7F\u544A"
},
...option
}, {
html: "?string",
video: "?string",
url: "?string",
playDuration: "number",
totalDuration: "number",
muted: "?boolean",
i18n: {
close: "string",
countdown: "string",
detail: "string",
canBeClosed: "string"
let $ads = null;
let $timer = null;
let $close = null;
let $countdown = null;
let $control = null;
let $loading = null;
let time = 0;
let timer = null;
let isEnd = false;
let isInit = false;
let isCanClose = false;
function getI18n(val, str) {
return str.replace("%s", val);
}
function skip() {
isEnd = true;
art.play();
if (option.video)
$ads.pause();
setStyle(art.template.$ads, "display", "none");
art.emit("artplayerPluginAds:skip", option);
}
function play() {
if (isEnd)
return;
timer = setTimeout(() => {
time += 1;
const playDuration = option.playDuration - time;
if (playDuration >= 1) {
$close.innerHTML = getI18n(playDuration, option.i18n.canBeClosed);
} else {
$close.innerHTML = option.i18n.close;
if (!isCanClose) {
isCanClose = true;
}
});
let $ads = null;
let $timer = null;
let $close = null;
let $countdown = null;
let $control = null;
let $loading = null;
let time = 0;
let timer = null;
let isEnd = false;
let isInit = false;
let isCanClose = false;
function getI18n(val, str) {
return str.replace("%s", val);
}
function skip() {
isEnd = true;
art.play();
if (option.video) $ads.pause();
setStyle(art.template.$ads, "display", "none");
art.emit("artplayerPluginAds:skip", option);
}
function play() {
if (isEnd) return;
timer = setTimeout(()=>{
time += 1;
const playDuration = option.playDuration - time;
if (playDuration >= 1) $close.innerHTML = getI18n(playDuration, option.i18n.canBeClosed);
else {
$close.innerHTML = option.i18n.close;
if (!isCanClose) isCanClose = true;
}
$countdown.innerHTML = getI18n(option.totalDuration - time, option.i18n.countdown);
if (time >= option.totalDuration) skip();
else play();
}, 1000);
}
function pause() {
if (isEnd) return;
clearTimeout(timer);
}
function show() {
art.template.$ads = append($player, '<div class="artplayer-plugin-ads"></div>');
$ads = append(art.template.$ads, option.video ? `<video class="artplayer-plugin-ads-video" src="${option.video}" loop playsInline></video>` : `<div class="artplayer-plugin-ads-html">${option.html}</div>`);
$loading = append(art.template.$ads, '<div class="artplayer-plugin-ads-loading"></div>');
append($loading, loading);
$timer = append(art.template.$ads, `<div class="artplayer-plugin-ads-timer">
}
$countdown.innerHTML = getI18n(option.totalDuration - time, option.i18n.countdown);
if (time >= option.totalDuration) {
skip();
} else {
play();
}
}, 1e3);
}
function pause() {
if (isEnd)
return;
clearTimeout(timer);
}
function show() {
art.template.$ads = append($player, '<div class="artplayer-plugin-ads"></div>');
$ads = append(
art.template.$ads,
option.video ? `<video class="artplayer-plugin-ads-video" src="${option.video}" loop playsInline></video>` : `<div class="artplayer-plugin-ads-html">${option.html}</div>`
);
$loading = append(art.template.$ads, '<div class="artplayer-plugin-ads-loading"></div>');
append($loading, loading);
$timer = append(
art.template.$ads,
`<div class="artplayer-plugin-ads-timer">
<div class="artplayer-plugin-ads-close">${option.playDuration <= 0 ? option.i18n.close : getI18n(option.playDuration, option.i18n.canBeClosed)}</div>
<div class="artplayer-plugin-ads-countdown">${getI18n(option.totalDuration, option.i18n.countdown)}</div>
</div>`);
$close = query(".artplayer-plugin-ads-close", $timer);
$countdown = query(".artplayer-plugin-ads-countdown", $timer);
if (option.playDuration >= option.totalDuration) setStyle($close, "display", "none");
art.proxy($close, "click", ()=>{
if (isCanClose) skip();
});
$control = append(art.template.$ads, `<div class="artplayer-plugin-ads-control">
<div class="artplayer-plugin-ads-countdown">${getI18n(
option.totalDuration,
option.i18n.countdown
)}</div>
</div>`
);
$close = query(".artplayer-plugin-ads-close", $timer);
$countdown = query(".artplayer-plugin-ads-countdown", $timer);
if (option.playDuration >= option.totalDuration) {
setStyle($close, "display", "none");
}
art.proxy($close, "click", () => {
if (isCanClose) {
skip();
}
});
$control = append(
art.template.$ads,
`<div class="artplayer-plugin-ads-control">
<div class="artplayer-plugin-ads-detail">${option.i18n.detail}</div>
<div class="artplayer-plugin-ads-muted"></div>
<div class="artplayer-plugin-ads-fullscreen"></div>
</div>`);
const $detail = query(".artplayer-plugin-ads-detail", $control);
const $muted = query(".artplayer-plugin-ads-muted", $control);
const $fullscreen = query(".artplayer-plugin-ads-fullscreen", $control);
if (option.url) art.proxy($detail, "click", ()=>{
window.open(option.url);
art.emit("artplayerPluginAds:click", option);
});
else setStyle($detail, "display", "none");
if (option.video) {
const $volume = append($muted, volume);
const $volumeClose = append($muted, volumeClose);
setStyle($volumeClose, "display", "none");
// If the ad was set to muted initially, match the icon
if (option.muted) {
$ads.muted = true;
setStyle($volume, "display", "none");
setStyle($volumeClose, "display", "inline-flex");
}
art.proxy($muted, "click", ()=>{
$ads.muted = !$ads.muted;
if ($ads.muted) {
setStyle($volume, "display", "none");
setStyle($volumeClose, "display", "inline-flex");
} else {
setStyle($volume, "display", "inline-flex");
setStyle($volumeClose, "display", "none");
}
});
} else setStyle($muted, "display", "none");
const $fullscreenOn = append($fullscreen, fullscreenOn);
const $fullscreenOff = append($fullscreen, fullscreenOff);
setStyle($fullscreenOff, "display", "none");
art.proxy($fullscreen, "click", ()=>{
art.fullscreen = !art.fullscreen;
if (art.fullscreen) {
setStyle($fullscreenOn, "display", "inline-flex");
setStyle($fullscreenOff, "display", "none");
} else {
setStyle($fullscreenOn, "display", "none");
setStyle($fullscreenOff, "display", "inline-flex");
}
});
art.proxy($ads, "click", ()=>{
if (option.url) window.open(option.url);
art.emit("artplayerPluginAds:click", option);
});
</div>`
);
const $detail = query(".artplayer-plugin-ads-detail", $control);
const $muted = query(".artplayer-plugin-ads-muted", $control);
const $fullscreen = query(".artplayer-plugin-ads-fullscreen", $control);
if (option.url) {
art.proxy($detail, "click", () => {
window.open(option.url);
art.emit("artplayerPluginAds:click", option);
});
} else {
setStyle($detail, "display", "none");
}
function init() {
if (isInit) return;
isInit = true;
show();
art.pause();
if (option.video) {
art.proxy($ads, "error", skip);
art.proxy($ads, "loadedmetadata", ()=>{
play();
$ads.play();
setStyle($timer, "display", "flex");
setStyle($control, "display", "flex");
setStyle($loading, "display", "none");
});
if (option.video) {
const $volume = append($muted, volume);
const $volumeClose = append($muted, volumeClose);
setStyle($volumeClose, "display", "none");
if (option.muted) {
$ads.muted = true;
setStyle($volume, "display", "none");
setStyle($volumeClose, "display", "inline-flex");
}
art.proxy($muted, "click", () => {
$ads.muted = !$ads.muted;
if ($ads.muted) {
setStyle($volume, "display", "none");
setStyle($volumeClose, "display", "inline-flex");
} else {
play();
setStyle($timer, "display", "flex");
setStyle($control, "display", "flex");
setStyle($loading, "display", "none");
setStyle($volume, "display", "inline-flex");
setStyle($volumeClose, "display", "none");
}
art.proxy(document, "visibilitychange", ()=>{
if (document.hidden) pause();
else play();
});
});
} else {
setStyle($muted, "display", "none");
}
art.on("ready", ()=>{
art.once("play", init);
art.once("video:playing", init);
const $fullscreenOn = append($fullscreen, fullscreenOn);
const $fullscreenOff = append($fullscreen, fullscreenOff);
setStyle($fullscreenOff, "display", "none");
art.proxy($fullscreen, "click", () => {
art.fullscreen = !art.fullscreen;
if (art.fullscreen) {
setStyle($fullscreenOn, "display", "inline-flex");
setStyle($fullscreenOff, "display", "none");
} else {
setStyle($fullscreenOn, "display", "none");
setStyle($fullscreenOff, "display", "inline-flex");
}
});
return {
name: "artplayerPluginAds",
skip,
pause,
play
};
art.proxy($ads, "click", () => {
if (option.url)
window.open(option.url);
art.emit("artplayerPluginAds:click", option);
});
}
function init() {
if (isInit)
return;
isInit = true;
show();
art.pause();
if (option.video) {
art.proxy($ads, "error", skip);
art.proxy($ads, "loadedmetadata", () => {
play();
$ads.play();
setStyle($timer, "display", "flex");
setStyle($control, "display", "flex");
setStyle($loading, "display", "none");
});
} else {
play();
setStyle($timer, "display", "flex");
setStyle($control, "display", "flex");
setStyle($loading, "display", "none");
}
art.on("document:visibilitychange", () => {
if (document.hidden) {
pause();
} else {
play();
}
});
}
art.on("ready", () => {
art.once("play", init);
art.once("video:playing", init);
});
return {
name: "artplayerPluginAds",
skip,
pause,
play
};
};
}
exports.default = artplayerPluginAds;
artplayerPluginAds.env = "development";
artplayerPluginAds.version = "1.0.5";
artplayerPluginAds.build = "1659407621565";
if (typeof document !== "undefined") {
}
if (typeof document !== "undefined") {
if (!document.getElementById("artplayer-plugin-ads")) {
const $style = document.createElement("style");
$style.id = "artplayer-plugin-ads";
$style.textContent = (0, _styleLessDefault.default);
document.head.appendChild($style);
const $style = document.createElement("style");
$style.id = "artplayer-plugin-ads";
$style.textContent = style;
document.head.appendChild($style);
}
}
if (typeof window !== "undefined") window["artplayerPluginAds"] = artplayerPluginAds;
},{"bundle-text:./style.less":"1ZB0H","@parcel/transformer-js/src/esmodule-helpers.js":"8MjWm"}],"1ZB0H":[function(require,module,exports) {
module.exports = ".artplayer-plugin-ads {\n z-index: 150;\n width: 100%;\n height: 100%;\n color: #fff;\n background-color: #000;\n font-size: 13px;\n line-height: 1;\n position: absolute;\n inset: 0;\n overflow: hidden;\n}\n\n.artplayer-plugin-ads .artplayer-plugin-ads-html {\n width: 100%;\n height: 100%;\n justify-content: center;\n align-items: center;\n display: flex;\n}\n\n.artplayer-plugin-ads .artplayer-plugin-ads-video {\n width: 100%;\n height: 100%;\n}\n\n.artplayer-plugin-ads .artplayer-plugin-ads-timer {\n display: none;\n position: absolute;\n top: 10px;\n right: 10px;\n}\n\n.artplayer-plugin-ads .artplayer-plugin-ads-timer > div {\n cursor: pointer;\n background-color: #00000080;\n border-radius: 15px;\n align-items: center;\n margin-left: 5px;\n padding: 5px 10px;\n display: flex;\n}\n\n.artplayer-plugin-ads .artplayer-plugin-ads-control {\n display: none;\n position: absolute;\n bottom: 10px;\n right: 10px;\n}\n\n.artplayer-plugin-ads .artplayer-plugin-ads-control > div {\n cursor: pointer;\n background-color: #00000080;\n border-radius: 15px;\n align-items: center;\n margin-left: 5px;\n padding: 5px 10px;\n display: flex;\n}\n\n.artplayer-plugin-ads .artplayer-plugin-ads-control .art-icon svg {\n width: 20px;\n height: 20px;\n}\n\n.artplayer-plugin-ads .artplayer-plugin-ads-loading {\n width: 100%;\n height: 100%;\n justify-content: center;\n align-items: center;\n display: flex;\n position: absolute;\n inset: 0;\n}\n\n";
},{}],"8MjWm":[function(require,module,exports) {
exports.interopDefault = function(a) {
return a && a.__esModule ? a : {
default: a
};
};
exports.defineInteropFlag = function(a) {
Object.defineProperty(a, "__esModule", {
value: true
});
};
exports.exportAll = function(source, dest) {
Object.keys(source).forEach(function(key) {
if (key === "default" || key === "__esModule" || dest.hasOwnProperty(key)) return;
Object.defineProperty(dest, key, {
enumerable: true,
get: function() {
return source[key];
}
});
});
return dest;
};
exports.export = function(dest, destName, get) {
Object.defineProperty(dest, destName, {
enumerable: true,
get: get
});
};
},{}]},["gEVO5"], "gEVO5", "parcelRequirea5da")
//# sourceMappingURL=index.js.map
}
return artplayerPluginAds2;
})();
@@ -1 +0,0 @@
{"mappings":"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 truncated
@@ -1,303 +1,99 @@
// modules are defined as an array
// [ module function, map of requires ]
//
// map of requires is short require name -> numeric require
//
// anything defined in a previous bundle is accessed via the
// orig method which is the require for previous bundles
(function (modules, entry, mainEntry, parcelRequireName, globalName) {
/* eslint-disable no-undef */
var globalObject =
typeof globalThis !== 'undefined'
? globalThis
: typeof self !== 'undefined'
? self
: typeof window !== 'undefined'
? window
: typeof global !== 'undefined'
? global
: {};
/* eslint-enable no-undef */
// Save the require from previous bundle to this closure if any
var previousRequire =
typeof globalObject[parcelRequireName] === 'function' &&
globalObject[parcelRequireName];
var cache = previousRequire.cache || {};
// Do not use `require` to prevent Webpack from trying to bundle this call
var nodeRequire =
typeof module !== 'undefined' &&
typeof module.require === 'function' &&
module.require.bind(module);
function newRequire(name, jumped) {
if (!cache[name]) {
if (!modules[name]) {
// if we cannot find the module within our internal map or
// cache jump to the current global require ie. the last bundle
// that was added to the page.
var currentRequire =
typeof globalObject[parcelRequireName] === 'function' &&
globalObject[parcelRequireName];
if (!jumped && currentRequire) {
return currentRequire(name, true);
var artplayerPluginAmbilight = (function() {
"use strict";
function artplayerPluginAmbilight2(option = {}) {
return (art) => {
const { $video } = art.template;
const { createElement, addClass, setStyles } = art.constructor.utils;
const { blur = "50px", opacity = 0.5, frequency = 10, duration = 0.3 } = option;
const $ambilight = createElement("div");
const gridItems = createGridItems($ambilight);
setupAmbilight($ambilight, $video);
setupGridItems(gridItems, blur, opacity, duration);
const updateColors = createColorUpdater($video, gridItems, frequency);
let animationFrameId = null;
function start() {
if (!animationFrameId) {
updateColors();
}
// If there are other bundles on this page the require from the
// previous one is saved to 'previousRequire'. Repeat this as
// many times as there are bundles until the module is found or
// we exhaust the require chain.
if (previousRequire) {
return previousRequire(name, true);
}
// Try the node require function if it exists.
if (nodeRequire && typeof name === 'string') {
return nodeRequire(name);
}
var err = new Error("Cannot find module '" + name + "'");
err.code = 'MODULE_NOT_FOUND';
throw err;
}
localRequire.resolve = resolve;
localRequire.cache = {};
var module = (cache[name] = new newRequire.Module(name));
modules[name][0].call(
module.exports,
localRequire,
module,
module.exports,
this
);
}
return cache[name].exports;
function localRequire(x) {
var res = localRequire.resolve(x);
return res === false ? {} : newRequire(res);
}
function resolve(x) {
var id = modules[name][1][x];
return id != null ? id : x;
}
}
function Module(moduleName) {
this.id = moduleName;
this.bundle = newRequire;
this.exports = {};
}
newRequire.isParcelRequire = true;
newRequire.Module = Module;
newRequire.modules = modules;
newRequire.cache = cache;
newRequire.parent = previousRequire;
newRequire.register = function (id, exports) {
modules[id] = [
function (require, module) {
module.exports = exports;
},
{},
];
};
Object.defineProperty(newRequire, 'root', {
get: function () {
return globalObject[parcelRequireName];
},
});
globalObject[parcelRequireName] = newRequire;
for (var i = 0; i < entry.length; i++) {
newRequire(entry[i]);
}
if (mainEntry) {
// Expose entry point to Node, AMD or browser globals
// Based on https://github.com/ForbesLindesay/umd/blob/master/template.js
var mainExports = newRequire(mainEntry);
// CommonJS
if (typeof exports === 'object' && typeof module !== 'undefined') {
module.exports = mainExports;
// RequireJS
} else if (typeof define === 'function' && define.amd) {
define(function () {
return mainExports;
});
// <script>
} else if (globalName) {
this[globalName] = mainExports;
}
}
})({"ica5N":[function(require,module,exports) {
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
parcelHelpers.defineInteropFlag(exports);
parcelHelpers.export(exports, "default", ()=>artplayerPluginAmbilight);
function artplayerPluginAmbilight(option = {}) {
return (art)=>{
const { $video } = art.template;
const { createElement, addClass, setStyles } = art.constructor.utils;
const { blur = "50px", opacity = 0.5, frequency = 10, duration = 0.3 } = option;
const $ambilight = createElement("div");
const gridItems = createGridItems($ambilight);
setupAmbilight($ambilight, $video);
setupGridItems(gridItems, blur, opacity, duration);
const updateColors = createColorUpdater($video, gridItems, frequency);
let animationFrameId = null;
function start() {
if (!animationFrameId) updateColors();
function stop() {
if (animationFrameId) {
cancelAnimationFrame(animationFrameId);
animationFrameId = null;
}
function stop() {
if (animationFrameId) {
cancelAnimationFrame(animationFrameId);
animationFrameId = null;
}
}
art.on("ready", start);
art.on("destroy", stop);
return {
name: "artplayerPluginAmbilight",
start,
stop
};
function createGridItems($ambilight) {
$ambilight.innerHTML = Array(9).fill("<div></div>").join("");
return Array.from($ambilight.children);
}
function setupAmbilight($ambilight, $video) {
addClass($ambilight, "artplayer-plugin-ambilight");
$video.parentNode.insertBefore($ambilight, $video);
setStyles($ambilight, {
position: "absolute",
top: 0,
left: 0,
zIndex: 9,
inset: 0,
display: "grid",
gridTemplateColumns: "1fr 1fr 1fr",
gridTemplateRows: "1fr 1fr 1fr"
});
}
function setupGridItems(gridItems, blur, opacity, duration) {
gridItems.forEach(($item)=>{
setStyles($item, {
opacity,
filter: `blur(${blur})`,
transition: `background-color ${duration}s ease`
});
});
}
function createColorUpdater($video, gridItems, frequency) {
const canvas = createElement("canvas");
const ctx = canvas.getContext("2d");
canvas.width = 3;
canvas.height = 3;
function getAverageColor(x, y, w, h) {
ctx.drawImage($video, x, y, w, h, 0, 0, 1, 1);
const [r, g, b] = ctx.getImageData(0, 0, 1, 1).data;
return `rgb(${r}, ${g}, ${b})`;
}
let lastUpdateTime = 0;
return function updateColors() {
const now = performance.now();
if (now - lastUpdateTime < 1000 / frequency || !art.playing) {
animationFrameId = requestAnimationFrame(updateColors);
return;
}
lastUpdateTime = now;
const w = $video.videoWidth / 3;
const h = $video.videoHeight / 3;
const colors = [
[
0,
0
],
[
w,
0
],
[
2 * w,
0
],
[
0,
h
],
[
w,
h
],
[
2 * w,
h
],
[
0,
2 * h
],
[
w,
2 * h
],
[
2 * w,
2 * h
]
].map(([x, y])=>getAverageColor(x, y, w, h));
gridItems.forEach(($item, index)=>{
$item.style.backgroundColor = colors[index];
});
animationFrameId = requestAnimationFrame(updateColors);
};
}
};
}
if (typeof window !== "undefined") window["artplayerPluginAmbilight"] = artplayerPluginAmbilight;
},{"@parcel/transformer-js/src/esmodule-helpers.js":"5dUr6"}],"5dUr6":[function(require,module,exports) {
exports.interopDefault = function(a) {
return a && a.__esModule ? a : {
default: a
};
};
exports.defineInteropFlag = function(a) {
Object.defineProperty(a, "__esModule", {
value: true
});
};
exports.exportAll = function(source, dest) {
Object.keys(source).forEach(function(key) {
if (key === "default" || key === "__esModule" || Object.prototype.hasOwnProperty.call(dest, key)) return;
Object.defineProperty(dest, key, {
enumerable: true,
get: function() {
return source[key];
}
}
art.on("ready", start);
art.on("destroy", stop);
return {
name: "artplayerPluginAmbilight",
start,
stop
};
function createGridItems($ambilight2) {
$ambilight2.innerHTML = Array.from({ length: 9 }).fill("<div></div>").join("");
return Array.from($ambilight2.children);
}
function setupAmbilight($ambilight2, $video2) {
addClass($ambilight2, "artplayer-plugin-ambilight");
$video2.parentNode.insertBefore($ambilight2, $video2);
setStyles($ambilight2, {
position: "absolute",
top: 0,
left: 0,
zIndex: 9,
inset: 0,
display: "grid",
gridTemplateColumns: "1fr 1fr 1fr",
gridTemplateRows: "1fr 1fr 1fr"
});
});
return dest;
};
exports.export = function(dest, destName, get) {
Object.defineProperty(dest, destName, {
enumerable: true,
get: get
});
};
},{}]},["ica5N"], "ica5N", "parcelRequire4dc0")
//# sourceMappingURL=index.js.map
}
function setupGridItems(gridItems2, blur2, opacity2, duration2) {
gridItems2.forEach(($item) => {
setStyles($item, {
opacity: opacity2,
filter: `blur(${blur2})`,
transition: `background-color ${duration2}s ease`
});
});
}
function createColorUpdater($video2, gridItems2, frequency2) {
const canvas = createElement("canvas");
const ctx = canvas.getContext("2d");
canvas.width = 3;
canvas.height = 3;
function getAverageColor(x, y, w, h) {
ctx.drawImage($video2, x, y, w, h, 0, 0, 1, 1);
const [r, g, b] = ctx.getImageData(0, 0, 1, 1).data;
return `rgb(${r}, ${g}, ${b})`;
}
let lastUpdateTime = 0;
return function updateColors2() {
const now = performance.now();
if (now - lastUpdateTime < 1e3 / frequency2 || !art.playing) {
animationFrameId = requestAnimationFrame(updateColors2);
return;
}
lastUpdateTime = now;
const w = $video2.videoWidth / 3;
const h = $video2.videoHeight / 3;
const colors = [
[0, 0],
[w, 0],
[2 * w, 0],
[0, h],
[w, h],
[2 * w, h],
[0, 2 * h],
[w, 2 * h],
[2 * w, 2 * h]
].map(([x, y]) => getAverageColor(x, y, w, h));
gridItems2.forEach(($item, index) => {
$item.style.backgroundColor = colors[index];
});
animationFrameId = requestAnimationFrame(updateColors2);
};
}
};
}
return artplayerPluginAmbilight2;
})();
@@ -1 +0,0 @@
{"mappings":"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","sources":["packages/artplayer-plugin-ambilight/src/index.js","node_modules/@parcel/transformer-js/src/esmodule-helpers.js"],"sourcesContent":["export default function artplayerPluginAmbilight(option = {}) {\n return (art) => {\n const { $video } = art.template;\n const { createElement, addClass, setStyles } = art.constructor.utils;\n const { blur = '50px', opacity = 0.5, frequency = 10, duration = 0.3 } = option;\n\n const $ambilight = createElement('div');\n const gridItems = createGridItems($ambilight);\n\n setupAmbilight($ambilight, $video);\n setupGridItems(gridItems, blur, opacity, duration);\n\n const updateColors = createColorUpdater($video, gridItems, frequency);\n\n let animationFrameId = null;\n\n function start() {\n if (!animationFrameId) {\n updateColors();\n }\n }\n\n function stop() {\n if (animationFrameId) {\n cancelAnimationFrame(animationFrameId);\n animationFrameId = null;\n }\n }\n\n art.on('ready', start);\n art.on('destroy', stop);\n\n return {\n name: 'artplayerPluginAmbilight',\n start,\n stop,\n };\n\n function createGridItems($ambilight) {\n $ambilight.innerHTML = Array(9).fill('<div></div>').join('');\n return Array.from($ambilight.children);\n }\n\n function setupAmbilight($ambilight, $video) {\n addClass($ambilight, 'artplayer-plugin-ambilight');\n $video.parentNode.insertBefore($ambilight, $video);\n setStyles($ambilight, {\n position: 'absolute',\n top: 0,\n left: 0,\n zIndex: 9,\n inset: 0,\n display: 'grid',\n gridTemplateColumns: '1fr 1fr 1fr',\n gridTemplateRows: '1fr 1fr 1fr',\n });\n }\n\n function setupGridItems(griLine truncated
+223 -410
View File
@@ -1,204 +1,45 @@
// modules are defined as an array
// [ module function, map of requires ]
//
// map of requires is short require name -> numeric require
//
// anything defined in a previous bundle is accessed via the
// orig method which is the require for previous bundles
(function (
modules,
entry,
mainEntry,
parcelRequireName,
externals,
distDir,
publicUrl,
devServer
) {
/* eslint-disable no-undef */
var globalObject =
typeof globalThis !== 'undefined'
? globalThis
: typeof self !== 'undefined'
? self
: typeof window !== 'undefined'
? window
: typeof global !== 'undefined'
? global
: {};
/* eslint-enable no-undef */
// Save the require from previous bundle to this closure if any
var previousRequire =
typeof globalObject[parcelRequireName] === 'function' &&
globalObject[parcelRequireName];
var importMap = previousRequire.i || {};
var cache = previousRequire.cache || {};
// Do not use `require` to prevent Webpack from trying to bundle this call
var nodeRequire =
typeof module !== 'undefined' &&
typeof module.require === 'function' &&
module.require.bind(module);
function newRequire(name, jumped) {
if (!cache[name]) {
if (!modules[name]) {
if (externals[name]) {
return externals[name];
}
// if we cannot find the module within our internal map or
// cache jump to the current global require ie. the last bundle
// that was added to the page.
var currentRequire =
typeof globalObject[parcelRequireName] === 'function' &&
globalObject[parcelRequireName];
if (!jumped && currentRequire) {
return currentRequire(name, true);
}
// If there are other bundles on this page the require from the
// previous one is saved to 'previousRequire'. Repeat this as
// many times as there are bundles until the module is found or
// we exhaust the require chain.
if (previousRequire) {
return previousRequire(name, true);
}
// Try the node require function if it exists.
if (nodeRequire && typeof name === 'string') {
return nodeRequire(name);
}
var err = new Error("Cannot find module '" + name + "'");
err.code = 'MODULE_NOT_FOUND';
throw err;
}
localRequire.resolve = resolve;
localRequire.cache = {};
var module = (cache[name] = new newRequire.Module(name));
modules[name][0].call(
module.exports,
localRequire,
module,
module.exports,
globalObject
);
}
return cache[name].exports;
function localRequire(x) {
var res = localRequire.resolve(x);
return res === false ? {} : newRequire(res);
}
function resolve(x) {
var id = modules[name][1][x];
return id != null ? id : x;
}
}
function Module(moduleName) {
this.id = moduleName;
this.bundle = newRequire;
this.require = nodeRequire;
this.exports = {};
}
newRequire.isParcelRequire = true;
newRequire.Module = Module;
newRequire.modules = modules;
newRequire.cache = cache;
newRequire.parent = previousRequire;
newRequire.distDir = distDir;
newRequire.publicUrl = publicUrl;
newRequire.devServer = devServer;
newRequire.i = importMap;
newRequire.register = function (id, exports) {
modules[id] = [
function (require, module) {
module.exports = exports;
},
{},
];
};
// Only insert newRequire.load when it is actually used.
// The code in this file is linted against ES5, so dynamic import is not allowed.
// INSERT_LOAD_HERE
Object.defineProperty(newRequire, 'root', {
get: function () {
return globalObject[parcelRequireName];
},
});
globalObject[parcelRequireName] = newRequire;
for (var i = 0; i < entry.length; i++) {
newRequire(entry[i]);
}
if (mainEntry) {
// Expose entry point to Node, AMD or browser globals
// Based on https://github.com/ForbesLindesay/umd/blob/master/template.js
var mainExports = newRequire(mainEntry);
// CommonJS
if (typeof exports === 'object' && typeof module !== 'undefined') {
module.exports = mainExports;
// RequireJS
} else if (typeof define === 'function' && define.amd) {
define(function () {
return mainExports;
var artplayerPluginAsr = (function() {
"use strict";
const style = ".art-video-player .art-layer-asr {\n pointer-events: none !important;\n position: absolute;\n z-index: 150;\n inset: 0px;\n display: flex;\n flex-direction: column;\n justify-content: end;\n padding: 0 2%;\n font-size: 1rem;\n gap: var(--art-subtitle-gap);\n padding-bottom: var(--art-subtitle-bottom);\n transition: padding-bottom var(--art-transition-duration) ease;\n text-shadow: var(--art-subtitle-border) 1px 0 1px, var(--art-subtitle-border) 0 1px 1px, var(--art-subtitle-border) -1px 0 1px, var(--art-subtitle-border) 0 -1px 1px, var(--art-subtitle-border) 1px 1px 1px, var(--art-subtitle-border) -1px -1px 1px, var(--art-subtitle-border) 1px -1px 1px, var(--art-subtitle-border) -1px 1px 1px;\n}\n.art-video-player.art-control-show .art-layer-asr {\n padding-bottom: calc(var(--art-control-height) + var(--art-subtitle-bottom));\n}\n";
function artplayerPluginAsr2(option = {}) {
const {
length = 3,
interval = 100,
sampleRate = 16e3,
autoHideTimeout = 1e4,
onAudioChunk = () => null
} = option;
return (art) => {
let started = false;
let audioCtx = null;
let sourceNode = null;
let recorderNode = null;
let gainNode = null;
let bufferChunks = [];
let timer = null;
let workletLoaded = false;
let hideTimer = null;
let mediaStream = null;
let mediaStreamSource = null;
const $asr = art.layers.add({
name: "asr",
html: ""
});
}
}
})({"eiaCd":[function(require,module,exports,__globalThis) {
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
parcelHelpers.defineInteropFlag(exports);
parcelHelpers.export(exports, "default", ()=>artplayerPluginAsr);
var _styleLess = require("bundle-text:./style.less");
var _styleLessDefault = parcelHelpers.interopDefault(_styleLess);
function artplayerPluginAsr(option = {}) {
const { length = 3, interval = 100, sampleRate = 16000, autoHideTimeout = 10000, onAudioChunk = ()=>null } = option;
return (art)=>{
let started = false;
let audioCtx = null;
let sourceNode = null;
let recorderNode = null;
let gainNode = null;
let bufferChunks = [];
let timer = null;
let workletLoaded = false;
let hideTimer = null;
let mediaStream = null;
let mediaStreamSource = null;
const $asr = art.layers.add({
name: 'asr',
html: ''
});
function splitByPunctuation(text) {
return text// eslint-disable-next-line no-useless-escape
.split(/(?<=[、。!?!?\.])\s*/u).map((s)=>s.trim()).filter(Boolean).slice(-length);
}
function hide() {
$asr.style.display = 'none';
}
function append(subtitle) {
if (typeof subtitle !== 'string') return;
clearTimeout(hideTimer);
hideTimer = setTimeout(hide, autoHideTimeout);
$asr.style.display = '';
$asr.innerHTML = splitByPunctuation(subtitle).map((line)=>`<div class="art-asr-line">${line}</div>`).join('');
}
const recorderProcessorCode = `
function splitByPunctuation(text) {
return text.split(/(?<=[、。!?!?.])\s*/u).map((s) => s.trim()).filter(Boolean).slice(-length);
}
function hide() {
$asr.style.display = "none";
}
function append(subtitle) {
if (typeof subtitle !== "string")
return;
clearTimeout(hideTimer);
hideTimer = setTimeout(hide, autoHideTimeout);
$asr.style.display = "";
$asr.innerHTML = splitByPunctuation(subtitle).map((line) => `<div class="art-asr-line">${line}</div>`).join("");
}
const recorderProcessorCode = `
class RecorderProcessor extends AudioWorkletProcessor {
process(inputs) {
const input = inputs[0];
@@ -210,225 +51,197 @@ function artplayerPluginAsr(option = {}) {
}
registerProcessor('recorder-processor', RecorderProcessor);
`;
const createWorkletBlobUrl = ()=>{
const blob = new Blob([
recorderProcessorCode
], {
type: 'application/javascript'
});
return URL.createObjectURL(blob);
const createWorkletBlobUrl = () => {
const blob = new Blob([recorderProcessorCode], { type: "application/javascript" });
return URL.createObjectURL(blob);
};
function floatTo16BitPCM(float32Array) {
const len = float32Array.length;
const buffer = new ArrayBuffer(len * 2);
const view = new DataView(buffer);
for (let i = 0; i < len; i++) {
const s = Math.max(-1, Math.min(1, float32Array[i]));
view.setInt16(i * 2, s < 0 ? s * 32768 : s * 32767, true);
}
return buffer;
}
function pcmToWav(pcmBuffer, sampleRate2) {
const pcmLength = pcmBuffer.byteLength;
const wavBuffer = new ArrayBuffer(44 + pcmLength);
const view = new DataView(wavBuffer);
const writeString = (offset, str) => {
for (let i = 0; i < str.length; i++) {
view.setUint8(offset + i, str.charCodeAt(i));
}
};
function floatTo16BitPCM(float32Array) {
const len = float32Array.length;
const buffer = new ArrayBuffer(len * 2);
const view = new DataView(buffer);
for(let i = 0; i < len; i++){
let s = Math.max(-1, Math.min(1, float32Array[i]));
view.setInt16(i * 2, s < 0 ? s * 0x8000 : s * 0x7fff, true);
}
return buffer;
writeString(0, "RIFF");
view.setUint32(4, 36 + pcmLength, true);
writeString(8, "WAVE");
writeString(12, "fmt ");
view.setUint32(16, 16, true);
view.setUint16(20, 1, true);
view.setUint16(22, 1, true);
view.setUint32(24, sampleRate2, true);
view.setUint32(28, sampleRate2 * 2, true);
view.setUint16(32, 2, true);
view.setUint16(34, 16, true);
writeString(36, "data");
view.setUint32(40, pcmLength, true);
new Uint8Array(wavBuffer).set(new Uint8Array(pcmBuffer), 44);
return wavBuffer;
}
async function setupAudioContext() {
if (audioCtx)
return audioCtx;
audioCtx = new (window.AudioContext || window.webkitAudioContext)({ sampleRate });
if (audioCtx.state === "suspended")
await audioCtx.resume();
return audioCtx;
}
async function setupAudioSource() {
if (!sourceNode && art.video) {
try {
sourceNode = audioCtx.createMediaElementSource(art.video);
return sourceNode;
} catch (err) {
console.warn("[artplayerPluginAsr] Direct connection failed:", err);
}
}
function pcmToWav(pcmBuffer, sampleRate) {
const pcmLength = pcmBuffer.byteLength;
const wavBuffer = new ArrayBuffer(44 + pcmLength);
const view = new DataView(wavBuffer);
const writeString = (offset, str)=>{
for(let i = 0; i < str.length; i++)view.setUint8(offset + i, str.charCodeAt(i));
};
writeString(0, 'RIFF');
view.setUint32(4, 36 + pcmLength, true);
writeString(8, 'WAVE');
writeString(12, 'fmt ');
view.setUint32(16, 16, true);
view.setUint16(20, 1, true);
view.setUint16(22, 1, true);
view.setUint32(24, sampleRate, true);
view.setUint32(28, sampleRate * 2, true);
view.setUint16(32, 2, true);
view.setUint16(34, 16, true);
writeString(36, 'data');
view.setUint32(40, pcmLength, true);
new Uint8Array(wavBuffer).set(new Uint8Array(pcmBuffer), 44);
return wavBuffer;
try {
if (!mediaStream) {
mediaStream = await captureAudioFromVideo(art.video);
}
if (mediaStream) {
mediaStreamSource = audioCtx.createMediaStreamSource(mediaStream);
return mediaStreamSource;
}
} catch (err) {
console.warn("[artplayerPluginAsr] MediaStream fallback failed:", err);
}
async function setupAudioContext() {
if (audioCtx) return audioCtx;
audioCtx = new (window.AudioContext || window.webkitAudioContext)({
sampleRate
});
if (audioCtx.state === 'suspended') await audioCtx.resume();
return audioCtx;
return null;
}
async function captureAudioFromVideo(videoElement) {
try {
if (videoElement.captureStream)
return videoElement.captureStream();
if (videoElement.mozCaptureStream)
return videoElement.mozCaptureStream();
console.warn("[artplayerPluginAsr] captureStream not supported");
return null;
} catch (err) {
console.warn("[artplayerPluginAsr] Error capturing stream:", err);
return null;
}
async function setupAudioSource() {
if (!sourceNode && art.video) try {
sourceNode = audioCtx.createMediaElementSource(art.video);
return sourceNode;
} catch (err) {
console.warn('[artplayerPluginAsr] Direct connection failed:', err);
}
async function startCapture() {
if (started)
return;
try {
await setupAudioContext();
const audioSource = await setupAudioSource();
if (!audioSource)
throw new Error("Could not establish audio source");
if (!workletLoaded) {
const blobUrl = createWorkletBlobUrl();
await audioCtx.audioWorklet.addModule(blobUrl);
URL.revokeObjectURL(blobUrl);
workletLoaded = true;
}
gainNode = audioCtx.createGain();
gainNode.gain.value = 1;
recorderNode = new AudioWorkletNode(audioCtx, "recorder-processor");
recorderNode.port.onmessage = (event) => {
bufferChunks.push(new Float32Array(event.data));
};
audioSource.connect(recorderNode);
audioSource.connect(gainNode);
gainNode.connect(audioCtx.destination);
const CHUNK_SAMPLES = sampleRate * (interval / 1e3);
timer = setInterval(async () => {
if (bufferChunks.length === 0)
return;
let accumulated = new Float32Array(0);
while (accumulated.length < CHUNK_SAMPLES && bufferChunks.length) {
const next = bufferChunks.shift();
const tmp = new Float32Array(accumulated.length + next.length);
tmp.set(accumulated, 0);
tmp.set(next, accumulated.length);
accumulated = tmp;
}
try {
if (!mediaStream) mediaStream = await captureAudioFromVideo(art.video);
if (mediaStream) {
mediaStreamSource = audioCtx.createMediaStreamSource(mediaStream);
return mediaStreamSource;
}
} catch (err) {
console.warn('[artplayerPluginAsr] MediaStream fallback failed:', err);
}
return null;
if (accumulated.length < CHUNK_SAMPLES)
return;
const chunkToSend = accumulated.slice(0, CHUNK_SAMPLES);
const pcm = floatTo16BitPCM(chunkToSend);
const wav = pcmToWav(pcm, sampleRate);
const subtitle = await onAudioChunk({ pcm, wav });
append(subtitle);
}, interval);
started = true;
} catch (err) {
console.error("[artplayerPluginAsr] Initialization failed:", err);
await stopCapture();
}
async function captureAudioFromVideo(videoElement) {
try {
if (videoElement.captureStream) return videoElement.captureStream();
if (videoElement.mozCaptureStream) return videoElement.mozCaptureStream();
console.warn('[artplayerPluginAsr] captureStream not supported');
return null;
} catch (err) {
console.warn('[artplayerPluginAsr] Error capturing stream:', err);
return null;
}
}
async function stopCapture() {
if (!started)
return;
started = false;
clearInterval(timer);
timer = null;
if (recorderNode) {
recorderNode.disconnect();
recorderNode.port.onmessage = null;
recorderNode = null;
}
async function startCapture() {
if (started) return;
try {
await setupAudioContext();
const audioSource = await setupAudioSource();
if (!audioSource) throw new Error('Could not establish audio source');
if (!workletLoaded) {
const blobUrl = createWorkletBlobUrl();
await audioCtx.audioWorklet.addModule(blobUrl);
URL.revokeObjectURL(blobUrl);
workletLoaded = true;
}
gainNode = audioCtx.createGain();
gainNode.gain.value = 1;
recorderNode = new AudioWorkletNode(audioCtx, 'recorder-processor');
recorderNode.port.onmessage = (event)=>{
bufferChunks.push(new Float32Array(event.data));
};
audioSource.connect(recorderNode);
audioSource.connect(gainNode);
gainNode.connect(audioCtx.destination);
const CHUNK_SAMPLES = sampleRate * (interval / 1000);
timer = setInterval(async ()=>{
if (bufferChunks.length === 0) return;
let accumulated = new Float32Array(0);
while(accumulated.length < CHUNK_SAMPLES && bufferChunks.length){
const next = bufferChunks.shift();
const tmp = new Float32Array(accumulated.length + next.length);
tmp.set(accumulated, 0);
tmp.set(next, accumulated.length);
accumulated = tmp;
}
if (accumulated.length < CHUNK_SAMPLES) return;
const chunkToSend = accumulated.slice(0, CHUNK_SAMPLES);
const pcm = floatTo16BitPCM(chunkToSend);
const wav = pcmToWav(pcm, sampleRate);
const subtitle = await onAudioChunk({
pcm,
wav
});
append(subtitle);
}, interval);
started = true;
} catch (err) {
console.error('[artplayerPluginAsr] Initialization failed:', err);
await stopCapture();
}
if (gainNode) {
gainNode.disconnect();
gainNode = null;
}
async function stopCapture() {
if (!started) return;
started = false;
clearInterval(timer);
timer = null;
if (recorderNode) {
recorderNode.disconnect();
recorderNode.port.onmessage = null;
recorderNode = null;
}
if (gainNode) {
gainNode.disconnect();
gainNode = null;
}
bufferChunks = [];
bufferChunks = [];
}
async function destroy() {
await stopCapture();
if (mediaStreamSource) {
mediaStreamSource.disconnect();
mediaStreamSource = null;
}
async function destroy() {
await stopCapture();
if (mediaStreamSource) {
mediaStreamSource.disconnect();
mediaStreamSource = null;
}
if (sourceNode) {
sourceNode.disconnect();
sourceNode = null;
}
if (mediaStream) {
mediaStream.getTracks().forEach((track)=>track.stop());
mediaStream = null;
}
if (audioCtx) {
await audioCtx.close();
audioCtx = null;
}
workletLoaded = false;
if (sourceNode) {
sourceNode.disconnect();
sourceNode = null;
}
art.on('video:volumechange', ()=>{
if (gainNode) gainNode.gain.value = art.volume;
});
art.on('play', startCapture);
art.on('pause', stopCapture);
art.on('destroy', destroy);
return {
name: 'artplayerPluginAsr',
stop: destroy,
hide,
append
};
if (mediaStream) {
mediaStream.getTracks().forEach((track) => track.stop());
mediaStream = null;
}
if (audioCtx) {
await audioCtx.close();
audioCtx = null;
}
workletLoaded = false;
}
art.on("video:volumechange", () => {
if (gainNode) {
gainNode.gain.value = art.volume;
}
});
art.on("play", startCapture);
art.on("pause", stopCapture);
art.on("destroy", destroy);
return {
name: "artplayerPluginAsr",
stop: destroy,
hide,
append
};
};
}
if (typeof document !== 'undefined') {
if (!document.getElementById('artplayer-plugin-asr')) {
const $style = document.createElement('style');
$style.id = 'artplayer-plugin-asr';
$style.textContent = (0, _styleLessDefault.default);
document.head.appendChild($style);
}
if (typeof document !== "undefined") {
if (!document.getElementById("artplayer-plugin-asr")) {
const $style = document.createElement("style");
$style.id = "artplayer-plugin-asr";
$style.textContent = style;
document.head.appendChild($style);
}
}
if (typeof window !== 'undefined') window['artplayerPluginAsr'] = artplayerPluginAsr;
},{"bundle-text:./style.less":"enAJa","@parcel/transformer-js/src/esmodule-helpers.js":"8oCsH"}],"enAJa":[function(require,module,exports,__globalThis) {
module.exports = ".art-video-player .art-layer-asr {\n z-index: 150;\n justify-content: end;\n gap: var(--art-subtitle-gap);\n padding: 0 2%;\n padding-bottom: var(--art-subtitle-bottom);\n transition: padding-bottom var(--art-transition-duration) ease;\n text-shadow: var(--art-subtitle-border) 1px 0 1px, var(--art-subtitle-border) 0 1px 1px, var(--art-subtitle-border) -1px 0 1px, var(--art-subtitle-border) 0 -1px 1px, var(--art-subtitle-border) 1px 1px 1px, var(--art-subtitle-border) -1px -1px 1px, var(--art-subtitle-border) 1px -1px 1px, var(--art-subtitle-border) -1px 1px 1px;\n flex-direction: column;\n font-size: 1rem;\n display: flex;\n position: absolute;\n inset: 0;\n pointer-events: none !important;\n}\n\n.art-video-player.art-control-show .art-layer-asr {\n padding-bottom: calc(var(--art-control-height) + var(--art-subtitle-bottom));\n}\n";
},{}],"8oCsH":[function(require,module,exports,__globalThis) {
exports.interopDefault = function(a) {
return a && a.__esModule ? a : {
default: a
};
};
exports.defineInteropFlag = function(a) {
Object.defineProperty(a, '__esModule', {
value: true
});
};
exports.exportAll = function(source, dest) {
Object.keys(source).forEach(function(key) {
if (key === 'default' || key === '__esModule' || Object.prototype.hasOwnProperty.call(dest, key)) return;
Object.defineProperty(dest, key, {
enumerable: true,
get: function() {
return source[key];
}
});
});
return dest;
};
exports.export = function(dest, destName, get) {
Object.defineProperty(dest, destName, {
enumerable: true,
get: get
});
};
},{}]},["eiaCd"], "eiaCd", "parcelRequire4dc0", {})
//# sourceMappingURL=index.js.map
}
return artplayerPluginAsr2;
})();
@@ -1 +0,0 @@
{"mappings":"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 truncated
@@ -1,315 +1,87 @@
// modules are defined as an array
// [ module function, map of requires ]
//
// map of requires is short require name -> numeric require
//
// anything defined in a previous bundle is accessed via the
// orig method which is the require for previous bundles
(function (
modules,
entry,
mainEntry,
parcelRequireName,
externals,
distDir,
publicUrl,
devServer
) {
/* eslint-disable no-undef */
var globalObject =
typeof globalThis !== 'undefined'
? globalThis
: typeof self !== 'undefined'
? self
: typeof window !== 'undefined'
? window
: typeof global !== 'undefined'
? global
: {};
/* eslint-enable no-undef */
// Save the require from previous bundle to this closure if any
var previousRequire =
typeof globalObject[parcelRequireName] === 'function' &&
globalObject[parcelRequireName];
var importMap = previousRequire.i || {};
var cache = previousRequire.cache || {};
// Do not use `require` to prevent Webpack from trying to bundle this call
var nodeRequire =
typeof module !== 'undefined' &&
typeof module.require === 'function' &&
module.require.bind(module);
function newRequire(name, jumped) {
if (!cache[name]) {
if (!modules[name]) {
if (externals[name]) {
return externals[name];
}
// if we cannot find the module within our internal map or
// cache jump to the current global require ie. the last bundle
// that was added to the page.
var currentRequire =
typeof globalObject[parcelRequireName] === 'function' &&
globalObject[parcelRequireName];
if (!jumped && currentRequire) {
return currentRequire(name, true);
}
// If there are other bundles on this page the require from the
// previous one is saved to 'previousRequire'. Repeat this as
// many times as there are bundles until the module is found or
// we exhaust the require chain.
if (previousRequire) {
return previousRequire(name, true);
}
// Try the node require function if it exists.
if (nodeRequire && typeof name === 'string') {
return nodeRequire(name);
}
var err = new Error("Cannot find module '" + name + "'");
err.code = 'MODULE_NOT_FOUND';
throw err;
var artplayerPluginAudioTrack = (function() {
"use strict";
function artplayerPluginAudioTrack2(option) {
return (art) => {
let { url, offset = 0, sync = 0.3 } = option;
const audio = new Audio();
audio.preload = "auto";
if (url) {
audio.src = url;
}
localRequire.resolve = resolve;
localRequire.cache = {};
var module = (cache[name] = new newRequire.Module(name));
modules[name][0].call(
module.exports,
localRequire,
module,
module.exports,
globalObject
);
}
return cache[name].exports;
function localRequire(x) {
var res = localRequire.resolve(x);
if (res === false) {
return {};
function syncAudio() {
if (!art.video || !url)
return;
const videoTime = art.currentTime;
const targetTime = videoTime + offset;
if (Math.abs(audio.currentTime - targetTime) > sync) {
audio.currentTime = targetTime;
}
}
// Synthesize a module to follow re-exports.
if (Array.isArray(res)) {
var m = {__esModule: true};
res.forEach(function (v) {
var key = v[0];
var id = v[1];
var exp = v[2] || v[0];
var x = newRequire(id);
if (key === '*') {
Object.keys(x).forEach(function (key) {
if (
key === 'default' ||
key === '__esModule' ||
Object.prototype.hasOwnProperty.call(m, key)
) {
return;
}
Object.defineProperty(m, key, {
enumerable: true,
get: function () {
return x[key];
},
});
});
} else if (exp === '*') {
Object.defineProperty(m, key, {
enumerable: true,
value: x,
});
} else {
Object.defineProperty(m, key, {
enumerable: true,
get: function () {
if (exp === 'default') {
return x.__esModule ? x.default : x;
}
return x[exp];
},
});
}
art.on("play", () => {
if (!url)
return;
syncAudio();
audio.play().catch((err) => {
console.warn(err);
});
return m;
}
return newRequire(res);
}
function resolve(x) {
var id = modules[name][1][x];
return id != null ? id : x;
}
}
function Module(moduleName) {
this.id = moduleName;
this.bundle = newRequire;
this.require = nodeRequire;
this.exports = {};
}
newRequire.isParcelRequire = true;
newRequire.Module = Module;
newRequire.modules = modules;
newRequire.cache = cache;
newRequire.parent = previousRequire;
newRequire.distDir = distDir;
newRequire.publicUrl = publicUrl;
newRequire.devServer = devServer;
newRequire.i = importMap;
newRequire.register = function (id, exports) {
modules[id] = [
function (require, module) {
module.exports = exports;
},
{},
];
};
// Only insert newRequire.load when it is actually used.
// The code in this file is linted against ES5, so dynamic import is not allowed.
// INSERT_LOAD_HERE
Object.defineProperty(newRequire, 'root', {
get: function () {
return globalObject[parcelRequireName];
},
});
globalObject[parcelRequireName] = newRequire;
for (var i = 0; i < entry.length; i++) {
newRequire(entry[i]);
}
if (mainEntry) {
// Expose entry point to Node, AMD or browser globals
// Based on https://github.com/ForbesLindesay/umd/blob/master/template.js
var mainExports = newRequire(mainEntry);
// CommonJS
if (typeof exports === 'object' && typeof module !== 'undefined') {
module.exports = mainExports;
// RequireJS
} else if (typeof define === 'function' && define.amd) {
define(function () {
return mainExports;
});
}
}
})({"2nCEE":[function(require,module,exports,__globalThis) {
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
parcelHelpers.defineInteropFlag(exports);
parcelHelpers.export(exports, "default", ()=>artplayerPluginAudioTrack);
function artplayerPluginAudioTrack(option) {
return (art)=>{
let { url, offset = 0, sync = 0.3 } = option;
const audio = new Audio();
audio.preload = 'auto';
if (url) audio.src = url;
function syncAudio() {
if (!art.video || !url) return;
const videoTime = art.currentTime;
const targetTime = videoTime + offset;
if (Math.abs(audio.currentTime - targetTime) > sync) audio.currentTime = targetTime;
}
art.on('play', ()=>{
if (!url) return;
syncAudio();
audio.play().catch((err)=>{
console.warn(err);
});
});
art.on('pause', ()=>{
audio.pause();
});
art.on('seek', ()=>{
syncAudio();
});
art.on('video:timeupdate', ()=>{
if (art.playing) syncAudio();
});
art.on('video:ratechange', ()=>{
audio.playbackRate = art.video.playbackRate;
});
art.on('video:volumechange', ()=>{
audio.volume = art.volume;
audio.muted = art.muted;
});
art.on('video:waiting', ()=>{
audio.pause();
});
art.on('video:playing', ()=>{
if (url && art.playing) audio.play().catch((err)=>{
console.warn(err);
});
});
art.on('destroy', ()=>{
audio.pause();
audio.src = '';
audio.load();
});
function update(newOption) {
if (newOption.url && newOption.url !== url) {
url = newOption.url;
audio.src = url;
if (art.playing) audio.play().catch((err)=>console.warn(err));
}
if (newOption.offset !== undefined) offset = newOption.offset;
if (newOption.sync !== undefined) sync = newOption.sync;
art.on("pause", () => {
audio.pause();
});
art.on("seek", () => {
syncAudio();
});
art.on("video:timeupdate", () => {
if (art.playing) {
syncAudio();
}
});
art.on("video:ratechange", () => {
audio.playbackRate = art.video.playbackRate;
});
art.on("video:volumechange", () => {
audio.volume = art.volume;
audio.muted = art.muted;
audio.playbackRate = art.video?.playbackRate || 1;
return {
name: 'artplayerPluginAudioTrack',
audio,
update
};
});
art.on("video:waiting", () => {
audio.pause();
});
art.on("video:playing", () => {
if (url && art.playing) {
audio.play().catch((err) => {
console.warn(err);
});
}
});
art.on("destroy", () => {
audio.pause();
audio.src = "";
audio.load();
});
function update(newOption) {
if (newOption.url && newOption.url !== url) {
url = newOption.url;
audio.src = url;
if (art.playing) {
audio.play().catch((err) => console.warn(err));
}
}
if (newOption.offset !== void 0) {
offset = newOption.offset;
}
if (newOption.sync !== void 0) {
sync = newOption.sync;
}
}
audio.volume = art.volume;
audio.muted = art.muted;
audio.playbackRate = art.video?.playbackRate || 1;
return {
name: "artplayerPluginAudioTrack",
audio,
update
};
};
}
if (typeof window !== 'undefined') window.artplayerPluginAudioTrack = artplayerPluginAudioTrack;
},{"@parcel/transformer-js/src/esmodule-helpers.js":"8oCsH"}],"8oCsH":[function(require,module,exports,__globalThis) {
exports.interopDefault = function(a) {
return a && a.__esModule ? a : {
default: a
};
};
exports.defineInteropFlag = function(a) {
Object.defineProperty(a, '__esModule', {
value: true
});
};
exports.exportAll = function(source, dest) {
Object.keys(source).forEach(function(key) {
if (key === 'default' || key === '__esModule' || Object.prototype.hasOwnProperty.call(dest, key)) return;
Object.defineProperty(dest, key, {
enumerable: true,
get: function() {
return source[key];
}
});
});
return dest;
};
exports.export = function(dest, destName, get) {
Object.defineProperty(dest, destName, {
enumerable: true,
get: get
});
};
},{}]},["2nCEE"], "2nCEE", "parcelRequire4dc0", {})
//# sourceMappingURL=index.js.map
}
return artplayerPluginAudioTrack2;
})();
@@ -1 +0,0 @@
{"mappings":"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","sources":["packages/artplayer-plugin-audio-track/src/index.js","node_modules/@parcel/transformer-js/src/esmodule-helpers.js"],"sourcesContent":["export default function artplayerPluginAudioTrack(option) {\n return (art) => {\n let { url, offset = 0, sync = 0.3 } = option\n\n const audio = new Audio()\n audio.preload = 'auto'\n if (url) {\n audio.src = url\n }\n\n function syncAudio() {\n if (!art.video || !url)\n return\n\n const videoTime = art.currentTime\n const targetTime = videoTime + offset\n\n if (Math.abs(audio.currentTime - targetTime) > sync) {\n audio.currentTime = targetTime\n }\n }\n\n art.on('play', () => {\n if (!url)\n return\n syncAudio()\n audio.play().catch((err) => {\n console.warn(err)\n })\n })\n\n art.on('pause', () => {\n audio.pause()\n })\n\n art.on('seek', () => {\n syncAudio()\n })\n\n art.on('video:timeupdate', () => {\n if (art.playing) {\n syncAudio()\n }\n })\n\n art.on('video:ratechange', () => {\n audio.playbackRate = art.video.playbackRate\n })\n\n art.on('video:volumechange', () => {\n audio.volume = art.volume\n audio.muted = art.muted\n })\n\n art.on('video:waiting', () => {\n audio.pause()\n })\n\n art.on('video:playing', () => {\n if (url && art.playing) {\n audio.play().catch((err) => {\n console.warn(err)\n })\n }\n })\n\n art.on('destroy', () => {\n audio.pause()\n audio.src = ''\n audio.load()\n })\n\n function update(newOption) {\n if (newOption.url && newOption.url !== url) {\n url = newOption.url\n audio.src = url\n if (art.playing) {\n audio.play().catch(err => console.warn(err))\n }\n }\n\n if (newOption.offset !== undefined) {\n offset = newOption.offset\n }\n\n if (newOption.sync !== undefined) {\n sync = newOption.sync\n }\n }\n\n audio.volume = art.volume\n audio.muted = art.muted\n audio.playbackRate = art.video?.playbackRate || 1\n\n return {\n name: 'artplayerPluginAudioTrack',\n audio,\n update,\n }\n }\n}\n\nif (typeof window !== 'undefined') {\n window.artplayerPluginAudioTrack = artplayerPluginAudioTrack\n}\n","exports.interopDefault = function (a) {\n return a && a.__esModule ? a : {default: a};\n};\n\nexports.defineInteropFlag = function (a) {\n Object.defineProperty(a, '__esModule', {value: true});\n};\n\nexports.exportAll = function (source, dest) {\n Object.keys(source).forEach(function (key) {\n if (\n key === 'default' ||Line truncated
@@ -1,242 +1,58 @@
// modules are defined as an array
// [ module function, map of requires ]
//
// map of requires is short require name -> numeric require
//
// anything defined in a previous bundle is accessed via the
// orig method which is the require for previous bundles
(function (modules, entry, mainEntry, parcelRequireName, globalName) {
/* eslint-disable no-undef */
var globalObject =
typeof globalThis !== 'undefined'
? globalThis
: typeof self !== 'undefined'
? self
: typeof window !== 'undefined'
? window
: typeof global !== 'undefined'
? global
: {};
/* eslint-enable no-undef */
// Save the require from previous bundle to this closure if any
var previousRequire =
typeof globalObject[parcelRequireName] === 'function' &&
globalObject[parcelRequireName];
var cache = previousRequire.cache || {};
// Do not use `require` to prevent Webpack from trying to bundle this call
var nodeRequire =
typeof module !== 'undefined' &&
typeof module.require === 'function' &&
module.require.bind(module);
function newRequire(name, jumped) {
if (!cache[name]) {
if (!modules[name]) {
// if we cannot find the module within our internal map or
// cache jump to the current global require ie. the last bundle
// that was added to the page.
var currentRequire =
typeof globalObject[parcelRequireName] === 'function' &&
globalObject[parcelRequireName];
if (!jumped && currentRequire) {
return currentRequire(name, true);
}
// If there are other bundles on this page the require from the
// previous one is saved to 'previousRequire'. Repeat this as
// many times as there are bundles until the module is found or
// we exhaust the require chain.
if (previousRequire) {
return previousRequire(name, true);
}
// Try the node require function if it exists.
if (nodeRequire && typeof name === 'string') {
return nodeRequire(name);
}
var err = new Error("Cannot find module '" + name + "'");
err.code = 'MODULE_NOT_FOUND';
throw err;
}
localRequire.resolve = resolve;
localRequire.cache = {};
var module = (cache[name] = new newRequire.Module(name));
modules[name][0].call(
module.exports,
localRequire,
module,
module.exports,
this
);
}
return cache[name].exports;
function localRequire(x) {
var res = localRequire.resolve(x);
return res === false ? {} : newRequire(res);
}
function resolve(x) {
var id = modules[name][1][x];
return id != null ? id : x;
}
}
function Module(moduleName) {
this.id = moduleName;
this.bundle = newRequire;
this.exports = {};
}
newRequire.isParcelRequire = true;
newRequire.Module = Module;
newRequire.modules = modules;
newRequire.cache = cache;
newRequire.parent = previousRequire;
newRequire.register = function (id, exports) {
modules[id] = [
function (require, module) {
module.exports = exports;
},
{},
];
};
Object.defineProperty(newRequire, 'root', {
get: function () {
return globalObject[parcelRequireName];
},
});
globalObject[parcelRequireName] = newRequire;
for (var i = 0; i < entry.length; i++) {
newRequire(entry[i]);
}
if (mainEntry) {
// Expose entry point to Node, AMD or browser globals
// Based on https://github.com/ForbesLindesay/umd/blob/master/template.js
var mainExports = newRequire(mainEntry);
// CommonJS
if (typeof exports === 'object' && typeof module !== 'undefined') {
module.exports = mainExports;
// RequireJS
} else if (typeof define === 'function' && define.amd) {
define(function () {
return mainExports;
});
// <script>
} else if (globalName) {
this[globalName] = mainExports;
}
}
})({"dhTbm":[function(require,module,exports) {
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
parcelHelpers.defineInteropFlag(exports);
parcelHelpers.export(exports, "default", ()=>artplayerPluginAutoThumbnail);
function create({ url, width, number }, callback) {
var artplayerPluginAutoThumbnail = (function() {
"use strict";
function create({ url, width, number }, callback) {
const video = document.createElement("video");
video.crossOrigin = "anonymous";
video.src = url;
video.onloadedmetadata = ()=>{
const duration = video.duration;
const canvas = document.createElement("canvas");
const ctx = canvas.getContext("2d");
const height = Math.floor(width * video.videoHeight / video.videoWidth);
canvas.width = width * 10;
canvas.height = height * Math.ceil(number / 10);
let loadedCount = 0;
let blobUrl = null;
function seekAndDraw(index) {
canvas.toBlob((blob)=>{
URL.revokeObjectURL(blobUrl);
blobUrl = URL.createObjectURL(blob);
callback({
url: blobUrl,
height: height
});
}, "image/jpeg");
if (index >= number) return;
video.currentTime = duration * index / number;
video.onseeked = ()=>{
ctx.drawImage(video, index % 10 * width, Math.floor(index / 10) * height, width, height);
loadedCount++;
seekAndDraw(index + 1);
};
}
seekAndDraw(0);
};
}
function artplayerPluginAutoThumbnail(option) {
return async (art)=>{
art.on("video:loadedmetadata", ()=>{
const url = option.url || art.option.url;
const width = option.width || 160;
const number = option.number || 100;
const scale = option.scale || 1;
create({
url,
width,
number
}, (config)=>{
art.thumbnails = {
...config,
column: 10,
number,
width,
scale
};
});
});
return {
name: "artplayerPluginAutoThumbnail"
video.onloadedmetadata = () => {
const duration = video.duration;
const canvas = document.createElement("canvas");
const ctx = canvas.getContext("2d");
const height = Math.floor(width * video.videoHeight / video.videoWidth);
canvas.width = width * 10;
canvas.height = height * Math.ceil(number / 10);
let blobUrl = null;
function seekAndDraw(index) {
canvas.toBlob((blob) => {
URL.revokeObjectURL(blobUrl);
blobUrl = URL.createObjectURL(blob);
callback({
url: blobUrl,
height
});
}, "image/jpeg");
if (index >= number)
return;
video.currentTime = duration * index / number;
video.onseeked = () => {
ctx.drawImage(video, index % 10 * width, Math.floor(index / 10) * height, width, height);
seekAndDraw(index + 1);
};
}
seekAndDraw(0);
};
}
if (typeof window !== "undefined") window["artplayerPluginAutoThumbnail"] = artplayerPluginAutoThumbnail;
},{"@parcel/transformer-js/src/esmodule-helpers.js":"5dUr6"}],"5dUr6":[function(require,module,exports) {
exports.interopDefault = function(a) {
return a && a.__esModule ? a : {
default: a
};
};
exports.defineInteropFlag = function(a) {
Object.defineProperty(a, "__esModule", {
value: true
});
};
exports.exportAll = function(source, dest) {
Object.keys(source).forEach(function(key) {
if (key === "default" || key === "__esModule" || Object.prototype.hasOwnProperty.call(dest, key)) return;
Object.defineProperty(dest, key, {
enumerable: true,
get: function() {
return source[key];
}
}
function artplayerPluginAutoThumbnail2(option) {
return async (art) => {
art.on("video:loadedmetadata", () => {
const url = option.url || art.option.url;
const width = option.width || 160;
const number = option.number || 100;
const scale = option.scale || 1;
create({ url, width, number }, (config) => {
art.thumbnails = {
...config,
column: 10,
number,
width,
scale
};
});
});
return dest;
};
exports.export = function(dest, destName, get) {
Object.defineProperty(dest, destName, {
enumerable: true,
get: get
});
};
},{}]},["dhTbm"], "dhTbm", "parcelRequire4dc0")
//# sourceMappingURL=index.js.map
});
return {
name: "artplayerPluginAutoThumbnail"
};
};
}
return artplayerPluginAutoThumbnail2;
})();
@@ -1 +0,0 @@
{"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6CA0CwB;AA1CxB,SAAS,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,QAAQ;IAC5C,MAAM,QAAQ,SAAS,aAAa,CAAC;IACrC,MAAM,WAAW,GAAG;IACpB,MAAM,GAAG,GAAG;IAEZ,MAAM,gBAAgB,GAAG;QACrB,MAAM,WAAW,MAAM,QAAQ;QAC/B,MAAM,SAAS,SAAS,aAAa,CAAC;QACtC,MAAM,MAAM,OAAO,UAAU,CAAC;QAC9B,MAAM,SAAS,KAAK,KAAK,CAAC,AAAC,QAAQ,MAAM,WAAW,GAAI,MAAM,UAAU;QAExE,OAAO,KAAK,GAAG,QAAQ;QACvB,OAAO,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC,SAAS;QAE5C,IAAI,cAAc;QAClB,IAAI,UAAU;QAEd,SAAS,YAAY,KAAK;YACtB,OAAO,MAAM,CAAC,CAAC;gBACX,IAAI,eAAe,CAAC;gBACpB,UAAU,IAAI,eAAe,CAAC;gBAE9B,SAAS;oBACL,KAAK;oBACL,QAAQ;gBACZ;YACJ,GAAG;YAEH,IAAI,SAAS,QAAQ;YACrB,MAAM,WAAW,GAAG,AAAC,WAAW,QAAS;YAEzC,MAAM,QAAQ,GAAG;gBACb,IAAI,SAAS,CAAC,OAAO,AAAC,QAAQ,KAAM,OAAO,KAAK,KAAK,CAAC,QAAQ,MAAM,QAAQ,OAAO;gBACnF;gBACA,YAAY,QAAQ;YACxB;QACJ;QAEA,YAAY;IAChB;AACJ;AAEe,SAAS,6BAA6B,MAAM;IACvD,OAAO,OAAO;QACV,IAAI,EAAE,CAAC,wBAAwB;YAC3B,MAAM,MAAM,OAAO,GAAG,IAAI,IAAI,MAAM,CAAC,GAAG;YACxC,MAAM,QAAQ,OAAO,KAAK,IAAI;YAC9B,MAAM,SAAS,OAAO,MAAM,IAAI;YAChC,MAAM,QAAQ,OAAO,KAAK,IAAI;YAC9B,OAAO;gBAAE;gBAAK;gBAAO;YAAO,GAAG,CAAC;gBAC5B,IAAI,UAAU,GAAG;oBACb,GAAG,MAAM;oBACT,QAAQ;oBACR;oBACA;oBACA;gBACJ;YACJ;QACJ;QAEA,OAAO;YACH,MAAM;QACV;IACJ;AACJ;AAEA,IAAI,OAAO,WAAW,aAClB,MAAM,CAAC,+BAA+B,GAAG;;;ACnE7C,QAAQ,cAAc,GAAG,SAAU,CAAC;IAClC,OAAO,KAAK,EAAE,UAAU,GAAG,IAAI;QAAC,SAAS;IAAC;AAC5C;AAEA,QAAQ,iBAAiB,GAAG,SAAU,CAAC;IACrC,OAAO,cAAc,CAAC,GAAG,cAAc;QAAC,OAAO;IAAI;AACrD;AAEA,QAAQ,SAAS,GAAG,SAAU,MAAM,EAAE,IAAI;IACxC,OAAO,IAAI,CAAC,QAAQ,OAAO,CAAC,SAAU,GAAG;QACvC,IACE,QAAQ,aACR,QAAQ,gBACR,OAAO,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,MAE3C;QAGF,OAAO,cAAc,CAAC,MAAM,KAAK;YAC/B,YAAY;YACZ,KAAK;gBACH,OAAO,MAAM,CAAC,IAAI;YACpB;QACF;IACF;IAEA,OAAO;AACT;AAEA,QAAQ,MAAM,GAAG,SAAU,IAAI,EAAE,QAAQ,EAAE,GAAG;IAC5C,OAAO,cAAc,CAAC,MAAM,UAAU;QACpC,YAAY;QACZ,KAAK;IACP;AACF","sources":["packages/artplayer-plugin-auto-thumbnail/src/index.js","node_modules/@parcel/transformer-js/src/esmodule-helpers.js"],"sourcesContent":["function create({ url, width, number }, callback) {\n const video = document.createElement('video');\n video.crossOrigin = 'anonymous';\n video.src = url;\n\n video.onloadedmetadata = () => {\n const duration = video.duration;\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n const height = Math.floor((width * video.videoHeight) / video.videoWidth);\n\n canvas.width = width * 10;\n canvas.height = height * Math.ceil(number / 10);\n\n let loadedCount = 0;\n let blobUrl = null;\n\n function seekAndDraw(index) {\n canvas.toBlob((blob) => {\n URL.revokeObjectURL(blobUrl);\n blobUrl = URL.createObjectURL(blob);\n\n callback({\n url: blobUrl,\n height: height,\n });\n }, 'image/jpeg');\n\n if (index >= number) return;\n video.currentTime = (duration * index) / number;\n\n video.onseeked = () => {\n ctx.drawImage(video, (index % 10) * width, Math.floor(index / 10) * height, width, height);\n loadedCount++;\n seekAndDraw(index + 1);\n };\n }\n\n seekAndDraw(0);\n };\n}\n\nexport default function artplayerPluginAutoThumbnail(option) {\n return async (art) => {\n art.on('video:loadedmetadata', () => {\n const url = option.url || art.option.url;\n const width = option.width || 160;\n const number = option.number || 100;\n const scale = option.scale || 1;\n create({ url, width, number }, (config) => {\n art.thumbnails = {\n ...config,\n column: 10,\n number,\n width,\n scale,\n };\n });\n });\n\n return {\n name: 'artplayerPluginAutoThumbnail',\n };\n };\n}\n\nif (typeof window !== 'undefined') {\n window['artplayerPluginAutoThumbnail'] = artplayerPluginAutoThumbnail;\n}\n","exports.interopDefault = function (a) {\n return a && a.__esModule ? a : {default: a};\n};\n\nexports.defineInteropFlag = function (a) {\n Object.defineProperty(a, '__esModule', {value: true});\n};\n\nexports.exportAll = function (source, dest) {\n Object.keys(source).forEach(function (key) {\n if (\n key === 'default' ||\n key === '__esModule' ||\n Object.prototype.hasOwnProperty.call(dest, key)\n ) {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function () {\n return source[key];\n },\n });\n });\n\n return dest;\n};\n\nexports.export = function (dest, destName, get) {\n Object.defineProperty(dest, destName, {\n enumerable: true,\n get: get,\n Line truncated
+138 -363
View File
@@ -1,223 +1,11 @@
// modules are defined as an array
// [ module function, map of requires ]
//
// map of requires is short require name -> numeric require
//
// anything defined in a previous bundle is accessed via the
// orig method which is the require for previous bundles
(function (
modules,
entry,
mainEntry,
parcelRequireName,
externals,
distDir,
publicUrl,
devServer
) {
/* eslint-disable no-undef */
var globalObject =
typeof globalThis !== 'undefined'
? globalThis
: typeof self !== 'undefined'
? self
: typeof window !== 'undefined'
? window
: typeof global !== 'undefined'
? global
: {};
/* eslint-enable no-undef */
// Save the require from previous bundle to this closure if any
var previousRequire =
typeof globalObject[parcelRequireName] === 'function' &&
globalObject[parcelRequireName];
var importMap = previousRequire.i || {};
var cache = previousRequire.cache || {};
// Do not use `require` to prevent Webpack from trying to bundle this call
var nodeRequire =
typeof module !== 'undefined' &&
typeof module.require === 'function' &&
module.require.bind(module);
function newRequire(name, jumped) {
if (!cache[name]) {
if (!modules[name]) {
if (externals[name]) {
return externals[name];
}
// if we cannot find the module within our internal map or
// cache jump to the current global require ie. the last bundle
// that was added to the page.
var currentRequire =
typeof globalObject[parcelRequireName] === 'function' &&
globalObject[parcelRequireName];
if (!jumped && currentRequire) {
return currentRequire(name, true);
}
// If there are other bundles on this page the require from the
// previous one is saved to 'previousRequire'. Repeat this as
// many times as there are bundles until the module is found or
// we exhaust the require chain.
if (previousRequire) {
return previousRequire(name, true);
}
// Try the node require function if it exists.
if (nodeRequire && typeof name === 'string') {
return nodeRequire(name);
}
var err = new Error("Cannot find module '" + name + "'");
err.code = 'MODULE_NOT_FOUND';
throw err;
}
localRequire.resolve = resolve;
localRequire.cache = {};
var module = (cache[name] = new newRequire.Module(name));
modules[name][0].call(
module.exports,
localRequire,
module,
module.exports,
globalObject
);
}
return cache[name].exports;
function localRequire(x) {
var res = localRequire.resolve(x);
if (res === false) {
return {};
}
// Synthesize a module to follow re-exports.
if (Array.isArray(res)) {
var m = {__esModule: true};
res.forEach(function (v) {
var key = v[0];
var id = v[1];
var exp = v[2] || v[0];
var x = newRequire(id);
if (key === '*') {
Object.keys(x).forEach(function (key) {
if (
key === 'default' ||
key === '__esModule' ||
Object.prototype.hasOwnProperty.call(m, key)
) {
return;
}
Object.defineProperty(m, key, {
enumerable: true,
get: function () {
return x[key];
},
});
});
} else if (exp === '*') {
Object.defineProperty(m, key, {
enumerable: true,
value: x,
});
} else {
Object.defineProperty(m, key, {
enumerable: true,
get: function () {
if (exp === 'default') {
return x.__esModule ? x.default : x;
}
return x[exp];
},
});
}
});
return m;
}
return newRequire(res);
}
function resolve(x) {
var id = modules[name][1][x];
return id != null ? id : x;
}
}
function Module(moduleName) {
this.id = moduleName;
this.bundle = newRequire;
this.require = nodeRequire;
this.exports = {};
}
newRequire.isParcelRequire = true;
newRequire.Module = Module;
newRequire.modules = modules;
newRequire.cache = cache;
newRequire.parent = previousRequire;
newRequire.distDir = distDir;
newRequire.publicUrl = publicUrl;
newRequire.devServer = devServer;
newRequire.i = importMap;
newRequire.register = function (id, exports) {
modules[id] = [
function (require, module) {
module.exports = exports;
},
{},
];
};
// Only insert newRequire.load when it is actually used.
// The code in this file is linted against ES5, so dynamic import is not allowed.
// INSERT_LOAD_HERE
Object.defineProperty(newRequire, 'root', {
get: function () {
return globalObject[parcelRequireName];
},
});
globalObject[parcelRequireName] = newRequire;
for (var i = 0; i < entry.length; i++) {
newRequire(entry[i]);
}
if (mainEntry) {
// Expose entry point to Node, AMD or browser globals
// Based on https://github.com/ForbesLindesay/umd/blob/master/template.js
var mainExports = newRequire(mainEntry);
// CommonJS
if (typeof exports === 'object' && typeof module !== 'undefined') {
module.exports = mainExports;
// RequireJS
} else if (typeof define === 'function' && define.amd) {
define(function () {
return mainExports;
});
}
}
})({"4J69a":[function(require,module,exports,__globalThis) {
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
parcelHelpers.defineInteropFlag(exports);
parcelHelpers.export(exports, "default", ()=>artplayerPluginChapter);
var _styleLess = require("bundle-text:./style.less");
var _styleLessDefault = parcelHelpers.interopDefault(_styleLess);
function artplayerPluginChapter(option = {}) {
return (art)=>{
const { $player } = art.template;
const { setStyle, append, clamp, query, addClass, removeClass } = art.constructor.utils;
const html = `
var artplayerPluginChapter = (function() {
"use strict";
const style = ".artplayer-plugin-chapter .art-control-progress-inner {\n height: 100% !important;\n background-color: transparent !important;\n}\n.artplayer-plugin-chapter .art-control-progress-inner > .art-progress-hover,\n.artplayer-plugin-chapter .art-control-progress-inner > .art-progress-loaded,\n.artplayer-plugin-chapter .art-control-progress-inner > .art-progress-played {\n display: none !important;\n}\n.artplayer-plugin-chapter .art-control-thumbnails {\n bottom: calc(var(--art-bottom-gap) + 64px) !important;\n}\n.artplayer-plugin-chapter .art-chapters {\n position: absolute;\n z-index: 0;\n inset: 0;\n display: flex;\n align-items: center;\n gap: 4px;\n height: 100%;\n transform: scaleY(1.25);\n}\n.artplayer-plugin-chapter .art-chapters .art-chapter {\n display: flex;\n align-items: center;\n height: 100%;\n}\n.artplayer-plugin-chapter .art-chapters .art-chapter .art-chapter-inner {\n position: relative;\n cursor: pointer;\n width: 100%;\n height: 50%;\n border-radius: 10px;\n overflow: hidden;\n transition: height var(--art-transition-duration) ease;\n background-color: var(--art-progress-color);\n}\n.artplayer-plugin-chapter .art-chapters .art-chapter:hover .art-chapter-inner {\n height: 100%;\n}\n.artplayer-plugin-chapter .art-chapter-title {\n transform-origin: bottom center;\n transform: scale(0.5);\n opacity: 0;\n position: absolute;\n z-index: 70;\n top: -50px;\n left: 0;\n padding: 3px 5px;\n line-height: 1;\n font-size: 14px;\n border-radius: var(--art-border-radius);\n white-space: nowrap;\n background-color: var(--art-tip-background);\n transition: transform var(--art-transition-duration) ease, opacity var(--art-transition-duration) ease;\n}\n.artplayer-plugin-chapter.art-progress-hover .art-chapter-title {\n transform: scale(1);\n opacity: 1;\n}\n";
function artplayerPluginChapter2(option = {}) {
return (art) => {
const { $player } = art.template;
const { setStyle, append, clamp, query, addClass, removeClass } = art.constructor.utils;
const html = `
<div class="art-chapter">
<div class="art-chapter-inner">
<div class="art-progress-hover"></div>
@@ -226,154 +14,141 @@ function artplayerPluginChapter(option = {}) {
</div>
</div>
`;
let $chapters = [];
const $inner = art.query('.art-control-progress-inner');
const $control = append($inner, '<div class="art-chapters"></div>');
const $title = append($inner, '<div class="art-chapter-title"></div>');
function showTitle({ $chapter, width }) {
const title = $chapter.dataset.title.trim();
if (title) {
$title.textContent = title;
const titleWidth = $title.clientWidth;
if (width <= titleWidth / 2) setStyle($title, 'left', 0);
else if (width > $inner.clientWidth - titleWidth / 2) setStyle($title, 'left', `${$inner.clientWidth - titleWidth}px`);
else setStyle($title, 'left', `${width - titleWidth / 2}px`);
}
let $chapters = [];
const $inner = art.query(".art-control-progress-inner");
const $control = append($inner, '<div class="art-chapters"></div>');
const $title = append($inner, '<div class="art-chapter-title"></div>');
function showTitle({ $chapter, width }) {
const title = $chapter.dataset.title.trim();
if (title) {
$title.textContent = title;
const titleWidth = $title.clientWidth;
if (width <= titleWidth / 2) {
setStyle($title, "left", 0);
} else if (width > $inner.clientWidth - titleWidth / 2) {
setStyle($title, "left", `${$inner.clientWidth - titleWidth}px`);
} else {
setStyle($title, "left", `${width - titleWidth / 2}px`);
}
}
function update(chapters = []) {
$chapters = [];
$control.textContent = '';
removeClass($player, 'artplayer-plugin-chapter');
if (!Array.isArray(chapters)) return;
if (!chapters.length) return;
if (!art.duration) return;
chapters = chapters.sort((a, b)=>a.start - b.start);
for(let i = 0; i < chapters.length; i++){
const chapter = chapters[i];
const nextChapter = chapters[i + 1];
if (chapter.end === Infinity) chapter.end = art.duration;
if (typeof chapter.start !== 'number' || typeof chapter.end !== 'number' || typeof chapter.title !== 'string') throw new TypeError('Illegal chapter data type');
if (chapter.start < 0 || chapter.end > art.duration || chapter.start >= chapter.end) throw new Error('Illegal chapter time point');
if (nextChapter && chapter.end > nextChapter.start) throw new Error('Illegal chapter time point');
}
if (chapters[0].start > 0) chapters.unshift({
start: 0,
end: chapters[0].start,
title: ''
});
if (chapters[chapters.length - 1].end < art.duration) chapters.push({
start: chapters[chapters.length - 1].end,
end: art.duration,
title: ''
});
for(let i = 0; i < chapters.length - 1; i++)if (chapters[i].end !== chapters[i + 1].start) chapters.splice(i + 1, 0, {
start: chapters[i].end,
end: chapters[i + 1].start,
title: ''
});
$chapters = chapters.map((chapter)=>{
const $chapter = append($control, html);
const start = clamp(chapter.start, 0, art.duration);
const end = clamp(chapter.end, 0, art.duration);
const duration = end - start;
const percentage = duration / art.duration;
$chapter.dataset.start = start;
$chapter.dataset.end = end;
$chapter.dataset.duration = duration;
$chapter.dataset.title = chapter.title.trim();
$chapter.style.width = `${percentage * 100}%`;
return {
$chapter,
$hover: query('.art-progress-hover', $chapter),
$loaded: query('.art-progress-loaded', $chapter),
$played: query('.art-progress-played', $chapter)
};
});
addClass($player, 'artplayer-plugin-chapter');
art.emit('setBar', 'loaded', art.loaded || 0);
}
function update(chapters = []) {
$chapters = [];
$control.textContent = "";
removeClass($player, "artplayer-plugin-chapter");
if (!Array.isArray(chapters))
return;
if (!chapters.length)
return;
if (!art.duration)
return;
chapters = chapters.sort((a, b) => a.start - b.start);
for (let i = 0; i < chapters.length; i++) {
const chapter = chapters[i];
const nextChapter = chapters[i + 1];
if (chapter.end === Infinity) {
chapter.end = art.duration;
}
if (typeof chapter.start !== "number" || typeof chapter.end !== "number" || typeof chapter.title !== "string") {
throw new TypeError("Illegal chapter data type");
}
if (chapter.start < 0 || chapter.end > art.duration || chapter.start >= chapter.end) {
throw new Error("Illegal chapter time point");
}
if (nextChapter && chapter.end > nextChapter.start) {
throw new Error("Illegal chapter time point");
}
}
art.on('setBar', (type, percentage)=>{
if (!$chapters.length) return;
for(let i = 0; i < $chapters.length; i++){
const { $chapter, $loaded, $played, $hover } = $chapters[i];
const $target = {
hover: $hover,
loaded: $loaded,
played: $played
}[type];
if (!$target) return;
const width = $control.clientWidth * percentage;
const currentTime = art.duration * percentage;
const duration = Number.parseFloat($chapter.dataset.duration);
const start = Number.parseFloat($chapter.dataset.start);
const end = Number.parseFloat($chapter.dataset.end);
if (currentTime < start) setStyle($target, 'width', 0);
if (currentTime > end) setStyle($target, 'width', '100%');
if (currentTime >= start && currentTime <= end) {
const percentage = (currentTime - start) / duration;
setStyle($target, 'width', `${percentage * 100}%`);
if (type === 'hover' && width > 0) showTitle({
$chapter,
width
});
}
}
if (chapters[0].start > 0) {
chapters.unshift({ start: 0, end: chapters[0].start, title: "" });
}
if (chapters[chapters.length - 1].end < art.duration) {
chapters.push({ start: chapters[chapters.length - 1].end, end: art.duration, title: "" });
}
for (let i = 0; i < chapters.length - 1; i++) {
if (chapters[i].end !== chapters[i + 1].start) {
chapters.splice(i + 1, 0, {
start: chapters[i].end,
end: chapters[i + 1].start,
title: ""
});
}
}
$chapters = chapters.map((chapter) => {
const $chapter = append($control, html);
const start = clamp(chapter.start, 0, art.duration);
const end = clamp(chapter.end, 0, art.duration);
const duration = end - start;
const percentage = duration / art.duration;
$chapter.dataset.start = start;
$chapter.dataset.end = end;
$chapter.dataset.duration = duration;
$chapter.dataset.title = chapter.title.trim();
$chapter.style.width = `${percentage * 100}%`;
return {
$chapter,
$hover: query(".art-progress-hover", $chapter),
$loaded: query(".art-progress-loaded", $chapter),
$played: query(".art-progress-played", $chapter)
};
});
art.once('video:loadedmetadata', ()=>update(option.chapters));
return {
name: 'artplayerPluginChapter',
update: ({ chapters })=>update(chapters)
};
addClass($player, "artplayer-plugin-chapter");
art.emit("setBar", "loaded", art.loaded || 0);
}
art.on("setBar", (type, percentage) => {
if (!$chapters.length)
return;
for (let i = 0; i < $chapters.length; i++) {
const { $chapter, $loaded, $played, $hover } = $chapters[i];
const $target = {
hover: $hover,
loaded: $loaded,
played: $played
}[type];
if (!$target)
return;
const width = $control.clientWidth * percentage;
const currentTime = art.duration * percentage;
const duration = Number.parseFloat($chapter.dataset.duration);
const start = Number.parseFloat($chapter.dataset.start);
const end = Number.parseFloat($chapter.dataset.end);
if (currentTime < start) {
setStyle($target, "width", 0);
}
if (currentTime > end) {
setStyle($target, "width", "100%");
}
if (currentTime >= start && currentTime <= end) {
const percentage2 = (currentTime - start) / duration;
setStyle($target, "width", `${percentage2 * 100}%`);
if (type === "hover" && width > 0) {
showTitle({ $chapter, width });
}
}
}
});
art.once("video:loadedmetadata", () => update(option.chapters));
return {
name: "artplayerPluginChapter",
update: ({ chapters }) => update(chapters)
};
};
}
if (typeof document !== 'undefined') {
const id = 'artplayer-plugin-chapter';
}
if (typeof document !== "undefined") {
const id = "artplayer-plugin-chapter";
let $style = document.getElementById(id);
if (!$style) {
$style = document.createElement('style');
$style.id = id;
if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', ()=>{
document.head.appendChild($style);
$style = document.createElement("style");
$style.id = id;
if (document.readyState === "loading") {
document.addEventListener("DOMContentLoaded", () => {
document.head.appendChild($style);
});
else (document.head || document.documentElement).appendChild($style);
} else {
(document.head || document.documentElement).appendChild($style);
}
}
$style.textContent = (0, _styleLessDefault.default);
}
if (typeof window !== 'undefined') window.artplayerPluginChapter = artplayerPluginChapter;
},{"bundle-text:./style.less":"fshgG","@parcel/transformer-js/src/esmodule-helpers.js":"8oCsH"}],"fshgG":[function(require,module,exports,__globalThis) {
module.exports = ".artplayer-plugin-chapter .art-control-progress-inner {\n background-color: #0000 !important;\n height: 100% !important;\n}\n\n.artplayer-plugin-chapter .art-control-progress-inner > .art-progress-hover, .artplayer-plugin-chapter .art-control-progress-inner > .art-progress-loaded, .artplayer-plugin-chapter .art-control-progress-inner > .art-progress-played {\n display: none !important;\n}\n\n.artplayer-plugin-chapter .art-control-thumbnails {\n bottom: calc(var(--art-bottom-gap) + 64px) !important;\n}\n\n.artplayer-plugin-chapter .art-chapters {\n z-index: 0;\n align-items: center;\n gap: 4px;\n height: 100%;\n display: flex;\n position: absolute;\n inset: 0;\n transform: scaleY(1.25);\n}\n\n.artplayer-plugin-chapter .art-chapters .art-chapter {\n align-items: center;\n height: 100%;\n display: flex;\n}\n\n.artplayer-plugin-chapter .art-chapters .art-chapter .art-chapter-inner {\n cursor: pointer;\n width: 100%;\n height: 50%;\n transition: height var(--art-transition-duration) ease;\n background-color: var(--art-progress-color);\n border-radius: 10px;\n position: relative;\n overflow: hidden;\n}\n\n.artplayer-plugin-chapter .art-chapters .art-chapter:hover .art-chapter-inner {\n height: 100%;\n}\n\n.artplayer-plugin-chapter .art-chapter-title {\n transform-origin: bottom;\n opacity: 0;\n z-index: 70;\n border-radius: var(--art-border-radius);\n white-space: nowrap;\n background-color: var(--art-tip-background);\n transition: transform var(--art-transition-duration) ease, opacity var(--art-transition-duration) ease;\n padding: 3px 5px;\n font-size: 14px;\n line-height: 1;\n position: absolute;\n top: -50px;\n left: 0;\n transform: scale(.5);\n}\n\n.artplayer-plugin-chapter.art-progress-hover .art-chapter-title {\n opacity: 1;\n transform: scale(1);\n}\n";
},{}],"8oCsH":[function(require,module,exports,__globalThis) {
exports.interopDefault = function(a) {
return a && a.__esModule ? a : {
default: a
};
};
exports.defineInteropFlag = function(a) {
Object.defineProperty(a, '__esModule', {
value: true
});
};
exports.exportAll = function(source, dest) {
Object.keys(source).forEach(function(key) {
if (key === 'default' || key === '__esModule' || Object.prototype.hasOwnProperty.call(dest, key)) return;
Object.defineProperty(dest, key, {
enumerable: true,
get: function() {
return source[key];
}
});
});
return dest;
};
exports.export = function(dest, destName, get) {
Object.defineProperty(dest, destName, {
enumerable: true,
get: get
});
};
},{}]},["4J69a"], "4J69a", "parcelRequire4dc0", {})
//# sourceMappingURL=index.js.map
$style.textContent = style;
}
return artplayerPluginChapter2;
})();
@@ -1 +0,0 @@
{"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6CAEwB;AAFxB;;AAEe,SAAS,uBAAuB,SAAS,CAAC,CAAC;IACxD,OAAO,CAAC;QACN,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,QAAQ;QAChC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI,WAAW,CAAC,KAAK;QAEvF,MAAM,OAAO,CAAC;;;;;;;;QAQV,CAAC;QAEL,IAAI,YAAY,EAAE;QAElB,MAAM,SAAS,IAAI,KAAK,CAAC;QACzB,MAAM,WAAW,OAAO,QAAQ;QAChC,MAAM,SAAS,OAAO,QAAQ;QAE9B,SAAS,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE;YACpC,MAAM,QAAQ,SAAS,OAAO,CAAC,KAAK,CAAC,IAAI;YACzC,IAAI,OAAO;gBACT,OAAO,WAAW,GAAG;gBACrB,MAAM,aAAa,OAAO,WAAW;gBACrC,IAAI,SAAS,aAAa,GACxB,SAAS,QAAQ,QAAQ;qBAEtB,IAAI,QAAQ,OAAO,WAAW,GAAG,aAAa,GACjD,SAAS,QAAQ,QAAQ,GAAG,OAAO,WAAW,GAAG,WAAW,EAAE,CAAC;qBAG/D,SAAS,QAAQ,QAAQ,GAAG,QAAQ,aAAa,EAAE,EAAE,CAAC;YAE1D;QACF;QAEA,SAAS,OAAO,WAAW,EAAE;YAC3B,YAAY,EAAE;YACd,SAAS,WAAW,GAAG;YACvB,YAAY,SAAS;YAErB,IAAI,CAAC,MAAM,OAAO,CAAC,WACjB;YACF,IAAI,CAAC,SAAS,MAAM,EAClB;YACF,IAAI,CAAC,IAAI,QAAQ,EACf;YAEF,WAAW,SAAS,IAAI,CAAC,CAAC,GAAG,IAAM,EAAE,KAAK,GAAG,EAAE,KAAK;YAEpD,IAAK,IAAI,IAAI,GAAG,IAAI,SAAS,MAAM,EAAE,IAAK;gBACxC,MAAM,UAAU,QAAQ,CAAC,EAAE;gBAC3B,MAAM,cAAc,QAAQ,CAAC,IAAI,EAAE;gBAEnC,IAAI,QAAQ,GAAG,KAAK,UAClB,QAAQ,GAAG,GAAG,IAAI,QAAQ;gBAG5B,IACE,OAAO,QAAQ,KAAK,KAAK,YACtB,OAAO,QAAQ,GAAG,KAAK,YACvB,OAAO,QAAQ,KAAK,KAAK,UAE5B,MAAM,IAAI,UAAU;gBAGtB,IAAI,QAAQ,KAAK,GAAG,KAAK,QAAQ,GAAG,GAAG,IAAI,QAAQ,IAAI,QAAQ,KAAK,IAAI,QAAQ,GAAG,EACjF,MAAM,IAAI,MAAM;gBAGlB,IAAI,eAAe,QAAQ,GAAG,GAAG,YAAY,KAAK,EAChD,MAAM,IAAI,MAAM;YAEpB;YAEA,IAAI,QAAQ,CAAC,EAAE,CAAC,KAAK,GAAG,GACtB,SAAS,OAAO,CAAC;gBAAE,OAAO;gBAAG,KAAK,QAAQ,CAAC,EAAE,CAAC,KAAK;gBAAE,OAAO;YAAG;YAGjE,IAAI,QAAQ,CAAC,SAAS,MAAM,GAAG,EAAE,CAAC,GAAG,GAAG,IAAI,QAAQ,EAClD,SAAS,IAAI,CAAC;gBAAE,OAAO,QAAQ,CAAC,SAAS,MAAM,GAAG,EAAE,CAAC,GAAG;gBAAE,KAAK,IAAI,QAAQ;gBAAE,OAAO;YAAG;YAGzF,IAAK,IAAI,IAAI,GAAG,IAAI,SAAS,MAAM,GAAG,GAAG,IACvC,IAAI,QAAQ,CAAC,EAAE,CAAC,GAAG,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,EAC3C,SAAS,MAAM,CAAC,IAAI,GAAG,GAAG;gBACxB,OAAO,QAAQ,CAAC,EAAE,CAAC,GAAG;gBACtB,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK;gBAC1B,OAAO;YACT;YAIJ,YAAY,SAAS,GAAG,CAAC,CAAC;gBACxB,MAAM,WAAW,OAAO,UAAU;gBAClC,MAAM,QAAQ,MAAM,QAAQ,KAAK,EAAE,GAAG,IAAI,QAAQ;gBAClD,MAAM,MAAM,MAAM,QAAQ,GAAG,EAAE,GAAG,IAAI,QAAQ;gBAC9C,MAAM,WAAW,MAAM;gBACvB,MAAM,aAAa,WAAW,IAAI,QAAQ;gBAC1C,SAAS,OAAO,CAAC,KAAK,GAAG;gBACzB,SAAS,OAAO,CAAC,GAAG,GAAG;gBACvB,SAAS,OAAO,CAAC,QAAQ,GAAG;gBAC5B,SAAS,OAAO,CAAC,KAAK,GAAG,QAAQ,KAAK,CAAC,IAAI;gBAC3C,SAAS,KAAK,CAAC,KAAK,GAAG,GAAG,aAAa,IAAI,CAAC,CAAC;gBAE7C,OAAO;oBACL;oBACA,QAAQ,MAAM,uBAAuB;oBACrC,SAAS,MAAM,wBAAwB;oBACvC,SAAS,MAAM,wBAAwB;gBACzC;YACF;YAEA,SAAS,SAAS;YAClB,IAAI,IAAI,CAAC,UAAU,UAAU,IAAI,MAAM,IAAI;QAC7C;QAEA,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM;YACtB,IAAI,CAAC,UAAU,MAAM,EACnB;YAEF,IAAK,IAAI,IAAI,GAAG,IAAI,UAAU,MAAM,EAAE,IAAK;gBACzC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,EAAE;gBAE3D,MAAM,UAAU;oBACd,OAAO;oBACP,QAAQ;oBACR,QAAQ;gBACV,CAAC,CAAC,KAAK;gBAEP,IAAI,CAAC,SACH;gBAEF,MAAM,QAAQ,SAAS,WAAW,GAAG;gBACrC,MAAM,cAAc,IAAI,QAAQ,GAAG;gBACnC,MAAM,WAAW,OAAO,UAAU,CAAC,SAAS,OAAO,CAAC,QAAQ;gBAC5D,MAAM,QAAQ,OAAO,UAAU,CAAC,SAAS,OAAO,CAAC,KAAK;gBACtD,MAAM,MAAM,OAAO,UAAU,CAAC,SAAS,OAAO,CAAC,GAAG;gBAElD,IAAI,cAAc,OAChB,SAAS,SAAS,SAAS;gBAG7B,IAAI,cAAc,KAChB,SAAS,SAAS,SAAS;gBAG7B,IAAI,eAAe,SAAS,eAAe,KAAK;oBAC9C,MAAM,aAAa,AAAC,CAAA,cAAc,KAAI,IAAK;oBAC3C,SAAS,SAAS,SAAS,GAAG,aAAa,IAAI,CAAC,CAAC;oBAEjD,IAAI,SAAS,WAAW,QAAQ,GAC9B,UAAU;wBAAE;wBAAU;oBAAM;gBAEhC;YACF;QACF;QAEA,IAAI,IAAI,CAAC,wBAAwB,IAAM,OAAO,OAAO,QAAQ;QAE7D,OAAO;YACL,MAAM;YACN,QAAQ,CAAC,EAAE,QAAQ,EAAE,GAAK,OAAO;QACnC;IACF;AACF;AAEA,IAAI,OAAO,aAAa,aAAa;IACnC,MAAM,KAAK;IACX,IAAI,SAAS,SAAS,cAAc,CAAC;IACrC,IAAI,CAAC,QAAQ;QACX,SAAS,SAAS,aAAa,CAAC;QAChC,OAAO,EAAE,GAAG;QACZ,IAAI,SAAS,UAAU,KAAK,WAC1B,SAAS,gBAAgB,CAAC,oBAAoB;YAC5C,SAAS,IAAI,CAAC,WAAW,CAAC;QAC5B;aAGA,AAAC,CAAA,SAAS,IAAI,IAAI,SAAS,eAAe,AAAD,EAAG,WAAW,CAAC;IAE5D;IACA,OAAO,WAAW,GAAG,CAAA,GAAA,yBAAK,AAAD;AAC3B;AAEA,IAAI,OAAO,WAAW,aACpB,OAAO,sBAAsB,GAAG;;;AC9LlC,OAAO,OAAO,GAAG;;;ACAjB,QAAQ,cAAc,GAAG,SAAU,CAAC;IAClC,OAAO,KAAK,EAAE,UAAU,GAAG,IAAI;QAAC,SAAS;IAAC;AAC5C;AAEA,QAAQ,iBAAiB,GAAG,SAAU,CAAC;IACrC,OAAO,cAAc,CAAC,GAAG,cAAc;QAAC,OAAO;IAAI;AACrD;AAEA,QAAQ,SAAS,GAAG,SAAU,MAAM,EAAE,IAAI;IACxC,OAAO,IAAI,CAAC,QAAQ,OAAO,CAAC,SAAU,GAAG;QACvC,IACE,QAAQ,aACR,QAAQ,gBACR,OAAO,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,MAE3C;QAGF,OAAO,cAAc,CAAC,MAAM,KAAK;YAC/B,YAAY;YACZ,KAAK;gBACH,OAAO,MAAM,CAAC,IAAI;YACpB;QACF;IACF;IAEA,OAAO;AACT;AAEA,QAAQ,MAAM,GAAG,SAAU,IAAI,EAAE,QAAQ,EAAE,GAAG;IAC5C,OAAO,cAAc,CAAC,MAAM,UAAU;QACpC,YAAY;QACZ,KAAK;IACP;AACF","sources":["packages/artplayer-plugin-chapter/src/index.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-3c6e83237a7eb6ba.js","node_modules/@parcel/transformer-js/src/esmodule-helpers.js"],"sourcesContent":["import style from 'bundle-text:./style.less'\n\nexport default function artplayerPluginChapter(option = {}) {\n return (art) => {\n const { $player } =Line truncated
@@ -1,336 +1,171 @@
// modules are defined as an array
// [ module function, map of requires ]
//
// map of requires is short require name -> numeric require
//
// anything defined in a previous bundle is accessed via the
// orig method which is the require for previous bundles
(function (modules, entry, mainEntry, parcelRequireName, globalName) {
/* eslint-disable no-undef */
var globalObject =
typeof globalThis !== 'undefined'
? globalThis
: typeof self !== 'undefined'
? self
: typeof window !== 'undefined'
? window
: typeof global !== 'undefined'
? global
: {};
/* eslint-enable no-undef */
// Save the require from previous bundle to this closure if any
var previousRequire =
typeof globalObject[parcelRequireName] === 'function' &&
globalObject[parcelRequireName];
var cache = previousRequire.cache || {};
// Do not use `require` to prevent Webpack from trying to bundle this call
var nodeRequire =
typeof module !== 'undefined' &&
typeof module.require === 'function' &&
module.require.bind(module);
function newRequire(name, jumped) {
if (!cache[name]) {
if (!modules[name]) {
// if we cannot find the module within our internal map or
// cache jump to the current global require ie. the last bundle
// that was added to the page.
var currentRequire =
typeof globalObject[parcelRequireName] === 'function' &&
globalObject[parcelRequireName];
if (!jumped && currentRequire) {
return currentRequire(name, true);
}
// If there are other bundles on this page the require from the
// previous one is saved to 'previousRequire'. Repeat this as
// many times as there are bundles until the module is found or
// we exhaust the require chain.
if (previousRequire) {
return previousRequire(name, true);
}
// Try the node require function if it exists.
if (nodeRequire && typeof name === 'string') {
return nodeRequire(name);
}
var err = new Error("Cannot find module '" + name + "'");
err.code = 'MODULE_NOT_FOUND';
throw err;
}
localRequire.resolve = resolve;
localRequire.cache = {};
var module = (cache[name] = new newRequire.Module(name));
modules[name][0].call(
module.exports,
localRequire,
module,
module.exports,
this
);
}
return cache[name].exports;
function localRequire(x) {
var res = localRequire.resolve(x);
return res === false ? {} : newRequire(res);
}
function resolve(x) {
var id = modules[name][1][x];
return id != null ? id : x;
}
}
function Module(moduleName) {
this.id = moduleName;
this.bundle = newRequire;
this.exports = {};
}
newRequire.isParcelRequire = true;
newRequire.Module = Module;
newRequire.modules = modules;
newRequire.cache = cache;
newRequire.parent = previousRequire;
newRequire.register = function (id, exports) {
modules[id] = [
function (require, module) {
module.exports = exports;
},
{},
];
};
Object.defineProperty(newRequire, 'root', {
get: function () {
return globalObject[parcelRequireName];
},
});
globalObject[parcelRequireName] = newRequire;
for (var i = 0; i < entry.length; i++) {
newRequire(entry[i]);
}
if (mainEntry) {
// Expose entry point to Node, AMD or browser globals
// Based on https://github.com/ForbesLindesay/umd/blob/master/template.js
var mainExports = newRequire(mainEntry);
// CommonJS
if (typeof exports === 'object' && typeof module !== 'undefined') {
module.exports = mainExports;
// RequireJS
} else if (typeof define === 'function' && define.amd) {
define(function () {
return mainExports;
});
// <script>
} else if (globalName) {
this[globalName] = mainExports;
}
}
})({"NDQPH":[function(require,module,exports) {
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
parcelHelpers.defineInteropFlag(exports);
parcelHelpers.export(exports, "default", ()=>artplayerPluginChromecast);
const loadScript = (src)=>new Promise((resolve, reject)=>{
const script = document.createElement("script");
script.src = src;
script.onload = resolve;
script.onerror = reject;
document.body.appendChild(script);
var artplayerPluginChromecast = (function() {
"use strict";
function loadScript(src) {
return new Promise((resolve, reject) => {
const script = document.createElement("script");
script.src = src;
script.onload = resolve;
script.onerror = reject;
document.body.appendChild(script);
});
const getMimeType = (url)=>{
}
function getMimeType(url) {
const extension = url.split("?")[0].split("#")[0].split(".").pop().toLowerCase();
const mimeTypes = {
mp4: "video/mp4",
webm: "video/webm",
ogg: "video/ogg",
ogv: "video/ogg",
mp3: "audio/mp3",
wav: "audio/wav",
flv: "video/x-flv",
mov: "video/quicktime",
avi: "video/x-msvideo",
wmv: "video/x-ms-wmv",
mpd: "application/dash+xml",
m3u8: "application/x-mpegURL"
mp4: "video/mp4",
webm: "video/webm",
ogg: "video/ogg",
ogv: "video/ogg",
mp3: "audio/mp3",
wav: "audio/wav",
flv: "video/x-flv",
mov: "video/quicktime",
avi: "video/x-msvideo",
wmv: "video/x-ms-wmv",
mpd: "application/dash+xml",
m3u8: "application/x-mpegURL"
};
return mimeTypes[extension] || "application/octet-stream";
};
function artplayerPluginChromecast(option) {
}
function artplayerPluginChromecast2(option) {
const DEFAULT_ICON = `<svg height="20" width="20" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path d="M512 96H64v99c-13-2-26.4-3-40-3H0V96C0 60.7 28.7 32 64 32H512c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H288V456c0-13.6-1-27-3-40H512V96zM24 224c128.1 0 232 103.9 232 232c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-101.6-82.4-184-184-184c-13.3 0-24-10.7-24-24s10.7-24 24-24zm8 192a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM0 344c0-13.3 10.7-24 24-24c75.1 0 136 60.9 136 136c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-48.6-39.4-88-88-88c-13.3 0-24-10.7-24-24z"/></svg>`;
const DEFAULT_SDK = "https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1";
let isCastInitialized = false;
let castSession = null;
let castState = null;
const initializeCastApi = ()=>{
return new Promise((resolve, reject)=>{
window["__onGCastApiAvailable"] = (isAvailable)=>{
if (isAvailable) {
const context = window.cast.framework.CastContext.getInstance();
context.setOptions({
receiverApplicationId: window.chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID,
autoJoinPolicy: window.chrome.cast.AutoJoinPolicy.ORIGIN_SCOPED
});
// Listen for session state changes
context.addEventListener(window.cast.framework.CastContextEventType.SESSION_STATE_CHANGED, (event)=>{
const SessionState = window.cast.framework.SessionState;
castState = event.sessionState;
castSession = event.session;
switch(event.sessionState){
case SessionState.NO_SESSION:
option.onStateChange?.("disconnected");
updateCastButton("disconnected");
break;
case SessionState.SESSION_STARTING:
option.onStateChange?.("connecting");
updateCastButton("connecting");
break;
case SessionState.SESSION_STARTED:
option.onStateChange?.("connected");
updateCastButton("connected");
break;
case SessionState.SESSION_ENDING:
option.onStateChange?.("disconnecting");
updateCastButton("disconnecting");
break;
case SessionState.SESSION_RESUMED:
option.onStateChange?.("connected");
updateCastButton("connected");
break;
}
});
// Listen for cast state changes
context.addEventListener(window.cast.framework.CastContextEventType.CAST_STATE_CHANGED, (event)=>{
const CastState = window.cast.framework.CastState;
switch(event.castState){
case CastState.NO_DEVICES_AVAILABLE:
option.onCastAvailable?.(false);
break;
case CastState.NOT_CONNECTED:
option.onCastAvailable?.(true);
break;
case CastState.CONNECTING:
case CastState.CONNECTED:
option.onCastAvailable?.(true);
break;
}
});
isCastInitialized = true;
resolve();
} else reject(new Error("Cast API is not available"));
};
if (!window.chrome || !window.chrome.cast) loadScript(option.sdk || DEFAULT_SDK).catch(reject);
});
};
const castVideo = (art, session)=>{
const url = option.url || art.option.url;
const mediaInfo = new window.chrome.cast.media.MediaInfo(url, option.mimeType || getMimeType(url));
const request = new window.chrome.cast.media.LoadRequest(mediaInfo);
session.loadMedia(request).then(()=>{
art.notice.show = "Casting started";
option.onCastStart?.();
}).catch((error)=>{
art.notice.show = "Error casting media";
option.onError?.(error);
throw error;
});
};
const updateCastButton = (state)=>{
const button = document.querySelector(".art-icon-cast");
if (button) switch(state){
case "connected":
button.style.color = "red";
break;
case "connecting":
case "disconnecting":
button.style.color = "orange";
break;
case "disconnected":
default:
button.style.color = "white";
break;
const updateCastButton = (state) => {
const button = document.querySelector(".art-icon-cast");
if (button) {
switch (state) {
case "connected":
button.style.color = "red";
break;
case "connecting":
case "disconnecting":
button.style.color = "orange";
break;
case "disconnected":
default:
button.style.color = "white";
break;
}
}
};
return async (art)=>{
art.controls.add({
name: "chromecast",
position: "right",
tooltip: "Chromecast",
html: `<i class="art-icon art-icon-cast">${option.icon || DEFAULT_ICON}</i>`,
click: async ()=>{
if (!isCastInitialized) try {
await initializeCastApi();
} catch (error) {
art.notice.show = "Failed to initialize Cast API";
option.onError?.(error);
throw error;
const initializeCastApi = () => {
return new Promise((resolve, reject) => {
window.__onGCastApiAvailable = (isAvailable) => {
if (isAvailable) {
const context = window.cast.framework.CastContext.getInstance();
context.setOptions({
receiverApplicationId: window.chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID,
autoJoinPolicy: window.chrome.cast.AutoJoinPolicy.ORIGIN_SCOPED
});
context.addEventListener(
window.cast.framework.CastContextEventType.SESSION_STATE_CHANGED,
(event) => {
const SessionState = window.cast.framework.SessionState;
castState = event.sessionState;
castSession = event.session;
switch (event.sessionState) {
case SessionState.NO_SESSION:
option.onStateChange?.("disconnected");
updateCastButton("disconnected");
break;
case SessionState.SESSION_STARTING:
option.onStateChange?.("connecting");
updateCastButton("connecting");
break;
case SessionState.SESSION_STARTED:
option.onStateChange?.("connected");
updateCastButton("connected");
break;
case SessionState.SESSION_ENDING:
option.onStateChange?.("disconnecting");
updateCastButton("disconnecting");
break;
case SessionState.SESSION_RESUMED:
option.onStateChange?.("connected");
updateCastButton("connected");
break;
}
const context = window.cast.framework.CastContext.getInstance();
if (castSession) castVideo(art, castSession);
else try {
const session = await context.requestSession();
castVideo(art, session);
} catch (error) {
art.notice.show = "Error connecting to cast session";
option.onError?.(error);
throw error;
}
}
});
return {
name: "artplayerPluginChromecast",
getCastState: ()=>castState,
isCasting: ()=>castSession !== null
}
);
context.addEventListener(window.cast.framework.CastContextEventType.CAST_STATE_CHANGED, (event) => {
const CastState = window.cast.framework.CastState;
switch (event.castState) {
case CastState.NO_DEVICES_AVAILABLE:
option.onCastAvailable?.(false);
break;
case CastState.NOT_CONNECTED:
option.onCastAvailable?.(true);
break;
case CastState.CONNECTING:
case CastState.CONNECTED:
option.onCastAvailable?.(true);
break;
}
});
isCastInitialized = true;
resolve();
} else {
reject(new Error("Cast API is not available"));
}
};
if (!window.chrome || !window.chrome.cast) {
loadScript(option.sdk || DEFAULT_SDK).catch(reject);
}
});
};
}
if (typeof window !== "undefined") window["artplayerPluginChromecast"] = artplayerPluginChromecast;
},{"@parcel/transformer-js/src/esmodule-helpers.js":"5dUr6"}],"5dUr6":[function(require,module,exports) {
exports.interopDefault = function(a) {
return a && a.__esModule ? a : {
default: a
const castVideo = (art, session) => {
const url = option.url || art.option.url;
const mediaInfo = new window.chrome.cast.media.MediaInfo(url, option.mimeType || getMimeType(url));
const request = new window.chrome.cast.media.LoadRequest(mediaInfo);
session.loadMedia(request).then(() => {
art.notice.show = "Casting started";
option.onCastStart?.();
}).catch((error) => {
art.notice.show = "Error casting media";
option.onError?.(error);
throw error;
});
};
};
exports.defineInteropFlag = function(a) {
Object.defineProperty(a, "__esModule", {
value: true
});
};
exports.exportAll = function(source, dest) {
Object.keys(source).forEach(function(key) {
if (key === "default" || key === "__esModule" || Object.prototype.hasOwnProperty.call(dest, key)) return;
Object.defineProperty(dest, key, {
enumerable: true,
get: function() {
return source[key];
return async (art) => {
art.controls.add({
name: "chromecast",
position: "right",
tooltip: "Chromecast",
html: `<i class="art-icon art-icon-cast">${option.icon || DEFAULT_ICON}</i>`,
click: async () => {
if (!isCastInitialized) {
try {
await initializeCastApi();
} catch (error) {
art.notice.show = "Failed to initialize Cast API";
option.onError?.(error);
throw error;
}
});
});
return dest;
};
exports.export = function(dest, destName, get) {
Object.defineProperty(dest, destName, {
enumerable: true,
get: get
});
};
},{}]},["NDQPH"], "NDQPH", "parcelRequire4dc0")
//# sourceMappingURL=index.js.map
}
const context = window.cast.framework.CastContext.getInstance();
if (castSession) {
castVideo(art, castSession);
} else {
try {
const session = await context.requestSession();
castVideo(art, session);
} catch (error) {
art.notice.show = "Error connecting to cast session";
option.onError?.(error);
throw error;
}
}
}
});
return {
name: "artplayerPluginChromecast",
getCastState: () => castState,
isCasting: () => castSession !== null
};
};
}
return artplayerPluginChromecast2;
})();
@@ -1 +0,0 @@
{"mappings":"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","sources":["packages/artplayer-plugin-chromecast/src/index.js","node_modules/@parcel/transformer-js/src/esmodule-helpers.js"],"sourcesContent":["const loadScript = (src) =>\n new Promise((resolve, reject) => {\n const script = document.createElement('script');\n script.src = src;\n script.onload = resolve;\n script.onerror = reject;\n document.body.appendChild(script);\n });\n\nconst getMimeType = (url) => {\n const extension = url.split('?')[0].split('#')[0].split('.').pop().toLowerCase();\n const mimeTypes = {\n mp4: 'video/mp4',\n webm: 'video/webm',\n ogg: 'video/ogg',\n ogv: 'video/ogg',\n mp3: 'audio/mp3',\n wav: 'audio/wav',\n flv: 'video/x-flv',\n mov: 'video/quicktime',\n avi: 'video/x-msvideo',\n wmv: 'video/x-ms-wmv',\n mpd: 'application/dash+xml',\n m3u8: 'application/x-mpegURL',\n };\n return mimeTypes[extension] || 'application/octet-stream';\n};\n\nexport defaulLine truncated
@@ -1,236 +0,0 @@
// modules are defined as an array
// [ module function, map of requires ]
//
// map of requires is short require name -> numeric require
//
// anything defined in a previous bundle is accessed via the
// orig method which is the require for previous bundles
(function (modules, entry, mainEntry, parcelRequireName, globalName) {
/* eslint-disable no-undef */
var globalObject =
typeof globalThis !== 'undefined'
? globalThis
: typeof self !== 'undefined'
? self
: typeof window !== 'undefined'
? window
: typeof global !== 'undefined'
? global
: {};
/* eslint-enable no-undef */
// Save the require from previous bundle to this closure if any
var previousRequire =
typeof globalObject[parcelRequireName] === 'function' &&
globalObject[parcelRequireName];
var cache = previousRequire.cache || {};
// Do not use `require` to prevent Webpack from trying to bundle this call
var nodeRequire =
typeof module !== 'undefined' &&
typeof module.require === 'function' &&
module.require.bind(module);
function newRequire(name, jumped) {
if (!cache[name]) {
if (!modules[name]) {
// if we cannot find the module within our internal map or
// cache jump to the current global require ie. the last bundle
// that was added to the page.
var currentRequire =
typeof globalObject[parcelRequireName] === 'function' &&
globalObject[parcelRequireName];
if (!jumped && currentRequire) {
return currentRequire(name, true);
}
// If there are other bundles on this page the require from the
// previous one is saved to 'previousRequire'. Repeat this as
// many times as there are bundles until the module is found or
// we exhaust the require chain.
if (previousRequire) {
return previousRequire(name, true);
}
// Try the node require function if it exists.
if (nodeRequire && typeof name === 'string') {
return nodeRequire(name);
}
var err = new Error("Cannot find module '" + name + "'");
err.code = 'MODULE_NOT_FOUND';
throw err;
}
localRequire.resolve = resolve;
localRequire.cache = {};
var module = (cache[name] = new newRequire.Module(name));
modules[name][0].call(
module.exports,
localRequire,
module,
module.exports,
this
);
}
return cache[name].exports;
function localRequire(x) {
var res = localRequire.resolve(x);
return res === false ? {} : newRequire(res);
}
function resolve(x) {
var id = modules[name][1][x];
return id != null ? id : x;
}
}
function Module(moduleName) {
this.id = moduleName;
this.bundle = newRequire;
this.exports = {};
}
newRequire.isParcelRequire = true;
newRequire.Module = Module;
newRequire.modules = modules;
newRequire.cache = cache;
newRequire.parent = previousRequire;
newRequire.register = function (id, exports) {
modules[id] = [
function (require, module) {
module.exports = exports;
},
{},
];
};
Object.defineProperty(newRequire, 'root', {
get: function () {
return globalObject[parcelRequireName];
},
});
globalObject[parcelRequireName] = newRequire;
for (var i = 0; i < entry.length; i++) {
newRequire(entry[i]);
}
if (mainEntry) {
// Expose entry point to Node, AMD or browser globals
// Based on https://github.com/ForbesLindesay/umd/blob/master/template.js
var mainExports = newRequire(mainEntry);
// CommonJS
if (typeof exports === 'object' && typeof module !== 'undefined') {
module.exports = mainExports;
// RequireJS
} else if (typeof define === 'function' && define.amd) {
define(function () {
return mainExports;
});
// <script>
} else if (globalName) {
this[globalName] = mainExports;
}
}
})({"guaft":[function(require,module,exports) {
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
parcelHelpers.defineInteropFlag(exports);
var _styleLess = require("bundle-text:./style.less");
var _styleLessDefault = parcelHelpers.interopDefault(_styleLess);
function checkVersion(art) {
const { version , utils: { errorHandle } } = art.constructor;
const arr = version.split(".").map(Number);
const major = arr[0];
const minor = arr[1] / 100;
errorHandle(major + minor >= 5, `Artplayer.js@${version} is not compatible the artplayerPluginControl@${artplayerPluginControl.version}. Please update it to version Artplayer.js@5.x.x`);
}
function artplayerPluginControl() {
return (art)=>{
checkVersion(art);
const { template: { $bottom , $player } , constructor: { utils: { append , secondToTime , addClass , removeClass , hasClass , isMobile } } } = art;
if (isMobile) return;
const className = "artplayer-plugin-control";
addClass($player, className);
const $current = append($bottom, `<div class="apa-control-current"></div>`);
const $duration = append($bottom, `<div class="apa-control-duration"></div>`);
const events = [
"video:loadedmetadata",
"video:timeupdate",
"video:progress"
];
for(let index = 0; index < events.length; index++)art.on(events[index], ()=>{
$current.innerText = secondToTime(art.currentTime);
$duration.innerText = secondToTime(art.duration);
});
return {
name: "artplayerPluginControl",
get enable () {
return hasClass($player, className);
},
set enable (state){
if (state) addClass($player, className);
else removeClass($player, className);
}
};
};
}
exports.default = artplayerPluginControl;
artplayerPluginControl.env = "development";
artplayerPluginControl.version = "2.0.0";
artplayerPluginControl.build = "2023-04-23 16:07:42";
if (typeof document !== "undefined") {
if (!document.getElementById("artplayer-plugin-control")) {
const $style = document.createElement("style");
$style.id = "artplayer-plugin-control";
$style.textContent = (0, _styleLessDefault.default);
document.head.appendChild($style);
}
}
if (typeof window !== "undefined") window["artplayerPluginControl"] = artplayerPluginControl;
},{"bundle-text:./style.less":"cLvfB","@parcel/transformer-js/src/esmodule-helpers.js":"5dUr6"}],"cLvfB":[function(require,module,exports) {
module.exports = ".artplayer-plugin-control {\n --art-control-height: 46px;\n --art-control-icon-scale: 1.1;\n}\n\n.artplayer-plugin-control .apa-control-current, .artplayer-plugin-control .apa-control-duration {\n display: flex;\n}\n\n.artplayer-plugin-control .art-control-time, .artplayer-plugin-control .art-controls-center {\n display: none;\n}\n\n.artplayer-plugin-control .art-settings {\n bottom: 85px;\n}\n\n.artplayer-plugin-control .art-bottom {\n height: 70px;\n width: 400px;\n -webkit-backdrop-filter: saturate(180%) blur(20px);\n backdrop-filter: saturate(180%) blur(20px);\n background-color: #000000b3;\n background-image: none;\n border-radius: 10px;\n align-items: center;\n margin-left: -200px;\n inset: auto auto 10px 50%;\n overflow: visible;\n box-shadow: 0 10px 15px -3px #0003, 0 4px 6px -4px #0003;\n}\n\n.artplayer-plugin-control .art-bottom .art-progress {\n width: 70%;\n}\n\n.artplayer-plugin-control .art-bottom .art-controls {\n width: 100%;\n}\n\n.artplayer-plugin-control .art-bottom .apa-control-current, .artplayer-plugin-control .art-bottom .apa-control-duration {\n width: 15%;\n justify-content: center;\n font-size: 12px;\n line-height: 1;\n display: flex;\n position: absolute;\n top: 10px;\n}\n\n.artplayer-plugin-control .art-bottom .apa-control-current {\n left: 0;\n}\n\n.artplayer-plugin-control .art-bottom .apa-control-duration {\n right: 0;\n}\n\n.apa-control-current, .apa-control-duration {\n display: none;\n}\n\n";
},{}],"5dUr6":[function(require,module,exports) {
exports.interopDefault = function(a) {
return a && a.__esModule ? a : {
default: a
};
};
exports.defineInteropFlag = function(a) {
Object.defineProperty(a, "__esModule", {
value: true
});
};
exports.exportAll = function(source, dest) {
Object.keys(source).forEach(function(key) {
if (key === "default" || key === "__esModule" || dest.hasOwnProperty(key)) return;
Object.defineProperty(dest, key, {
enumerable: true,
get: function() {
return source[key];
}
});
});
return dest;
};
exports.export = function(dest, destName, get) {
Object.defineProperty(dest, destName, {
enumerable: true,
get: get
});
};
},{}]},["guaft"], "guaft", "parcelRequire4dc0")
//# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
{"mappings":"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","sources":["packages/artplayer-plugin-control/src/index.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-3b06b37497366e99.js","node_modules/@parcel/transformer-js/src/esmodule-helpers.js"],"sourcesContent":["import style from 'bundle-text:./style.less';\n\nfunction checkVersion(art) {\n const {\n version,\n utils: { errorHandle },\n } = art.constructor;\n const arr = version.split('.').map(Number);\n const major = arr[0];\n const minor = arr[1] / 100;\n errorHandle(\n major + minor >= 5,\n `Artplayer.js@${version} is not compatible the artplayerPluginControl@${artplayerPluginControl.version}. Please update it to version Artplayer.js@5.x.x`,\n );\n}\n\nexport default function artplayerPluginControl() {\n return (art) => {\n checkVersion(art);\n\n const {\n template: { $bottom, $player },\n constructor: {\n utils: { append, secondToTime, addClass, removeClass, hasClass, isMobile },\n },\n } = art;\n\n if (isMobile) return;\n\n const className = 'artplayer-plugin-control';\n addClass($player, className);\n\n const $current = append($bottom, `<div class=\"apa-control-current\"></div>`);\n const $duration = append($bottom, `<div class=\"apa-control-duration\"></div>`);\n\n const events = ['video:loadedmetadata', 'video:timeupdate', 'video:progress'];\n\n for (let index = 0; index < events.length; index++) {\n art.on(events[index], () => {\n $current.innerText = secondToTime(art.currentTime);\n $duration.innerText = secondToTime(art.duration);\n });\n }\n\n return {\n name: 'artplayerPluginControl',\n get enable() {\n return hasClass($player, className);\n },\n set enable(state) {\n if (state) {\n addClass($player, className);\n } else {\n removeClass($player, className);\n }\n },\n };\n };\n}\n\nartplayerPluginControl.env = process.env.NODE_ENV;\nartplayerPluginControl.version = process.env.APP_VER;\nartplayerPluginControl.build = process.env.BUILD_DATE;\n\nif (typeof document !== 'undefined') {\n if (!document.getElementById('artplayer-plugin-control')) {\n const $style = document.createElement('style');\n $style.id = 'artplayer-plugin-control';\n $style.textContent = style;\n document.head.appendChild($style);\n }\n}\n\nif (typeof window !== 'undefined') {\n window['artplayerPluginControl'] = artplayerPluginControl;\n}\n","module.exports = \"18666cb8629c0715\";","exports.interopDefault = function (a) {\n return a && a.__esModule ? a : {default: a};\n};\n\nexports.defineInteropFlag = function (a) {\n Object.defiLine truncated
File diff suppressed because it is too large. Load diff
@@ -1 +0,0 @@
{"mappings":"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 truncated
@@ -1,4 +1,4 @@
var ArtplayerPluginDanmuku = (function() {
var artplayerPluginDanmuku = (function() {
"use strict";
function getMode(key) {
switch (key) {
@@ -1529,7 +1529,7 @@ var ArtplayerPluginDanmuku = (function() {
}
$style2.textContent = style;
}
function artplayerPluginDanmuku(option) {
function artplayerPluginDanmuku2(option) {
return (art) => {
const danmuku = new Danmuku(art, option);
const setting = new Setting(art, danmuku);
@@ -1557,9 +1557,6 @@ var ArtplayerPluginDanmuku = (function() {
};
};
}
artplayerPluginDanmuku.icons = Setting.icons;
if (typeof window !== "undefined") {
window.artplayerPluginDanmuku = artplayerPluginDanmuku;
}
return artplayerPluginDanmuku;
artplayerPluginDanmuku2.icons = Setting.icons;
return artplayerPluginDanmuku2;
})();
@@ -1,330 +1,162 @@
// modules are defined as an array
// [ module function, map of requires ]
//
// map of requires is short require name -> numeric require
//
// anything defined in a previous bundle is accessed via the
// orig method which is the require for previous bundles
(function (modules, entry, mainEntry, parcelRequireName, globalName) {
/* eslint-disable no-undef */
var globalObject =
typeof globalThis !== 'undefined'
? globalThis
: typeof self !== 'undefined'
? self
: typeof window !== 'undefined'
? window
: typeof global !== 'undefined'
? global
: {};
/* eslint-enable no-undef */
// Save the require from previous bundle to this closure if any
var previousRequire =
typeof globalObject[parcelRequireName] === 'function' &&
globalObject[parcelRequireName];
var cache = previousRequire.cache || {};
// Do not use `require` to prevent Webpack from trying to bundle this call
var nodeRequire =
typeof module !== 'undefined' &&
typeof module.require === 'function' &&
module.require.bind(module);
function newRequire(name, jumped) {
if (!cache[name]) {
if (!modules[name]) {
// if we cannot find the module within our internal map or
// cache jump to the current global require ie. the last bundle
// that was added to the page.
var currentRequire =
typeof globalObject[parcelRequireName] === 'function' &&
globalObject[parcelRequireName];
if (!jumped && currentRequire) {
return currentRequire(name, true);
}
// If there are other bundles on this page the require from the
// previous one is saved to 'previousRequire'. Repeat this as
// many times as there are bundles until the module is found or
// we exhaust the require chain.
if (previousRequire) {
return previousRequire(name, true);
}
// Try the node require function if it exists.
if (nodeRequire && typeof name === 'string') {
return nodeRequire(name);
}
var err = new Error("Cannot find module '" + name + "'");
err.code = 'MODULE_NOT_FOUND';
throw err;
var artplayerPluginDashControl = (function() {
"use strict";
const $audio = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" height="18"><path fill="#fff" d="M256 80C149.9 80 62.4 159.4 49.6 262c9.4-3.8 19.6-6 30.4-6c26.5 0 48 21.5 48 48l0 128c0 26.5-21.5 48-48 48c-44.2 0-80-35.8-80-80l0-16 0-48 0-48C0 146.6 114.6 32 256 32s256 114.6 256 256l0 48 0 48 0 16c0 44.2-35.8 80-80 80c-26.5 0-48-21.5-48-48l0-128c0-26.5 21.5-48 48-48c10.8 0 21 2.1 30.4 6C449.6 159.4 362.1 80 256 80z"/></svg>';
const $quality = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" height="18"><path fill="#fff" d="M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM323.8 202.5c-4.5-6.6-11.9-10.5-19.8-10.5s-15.4 3.9-19.8 10.5l-87 127.6L170.7 297c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6l96 0 32 0 208 0c8.9 0 17.1-4.9 21.2-12.8s3.6-17.4-1.4-24.7l-120-176zM112 192a48 48 0 1 0 0-96 48 48 0 1 0 0 96z"/></svg>';
function uniqBy(array, property) {
const seen = /* @__PURE__ */ new Map();
return array.filter((item) => {
const key = item[property];
if (key === void 0) {
return true;
}
localRequire.resolve = resolve;
localRequire.cache = {};
var module = (cache[name] = new newRequire.Module(name));
modules[name][0].call(
module.exports,
localRequire,
module,
module.exports,
this
);
}
return cache[name].exports;
function localRequire(x) {
var res = localRequire.resolve(x);
return res === false ? {} : newRequire(res);
}
function resolve(x) {
var id = modules[name][1][x];
return id != null ? id : x;
}
}
function Module(moduleName) {
this.id = moduleName;
this.bundle = newRequire;
this.exports = {};
}
newRequire.isParcelRequire = true;
newRequire.Module = Module;
newRequire.modules = modules;
newRequire.cache = cache;
newRequire.parent = previousRequire;
newRequire.register = function (id, exports) {
modules[id] = [
function (require, module) {
module.exports = exports;
},
{},
];
};
Object.defineProperty(newRequire, 'root', {
get: function () {
return globalObject[parcelRequireName];
},
});
globalObject[parcelRequireName] = newRequire;
for (var i = 0; i < entry.length; i++) {
newRequire(entry[i]);
}
if (mainEntry) {
// Expose entry point to Node, AMD or browser globals
// Based on https://github.com/ForbesLindesay/umd/blob/master/template.js
var mainExports = newRequire(mainEntry);
// CommonJS
if (typeof exports === 'object' && typeof module !== 'undefined') {
module.exports = mainExports;
// RequireJS
} else if (typeof define === 'function' && define.amd) {
define(function () {
return mainExports;
});
// <script>
} else if (globalName) {
this[globalName] = mainExports;
}
}
})({"hK3r6":[function(require,module,exports) {
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
parcelHelpers.defineInteropFlag(exports);
parcelHelpers.export(exports, "default", ()=>artplayerPluginDashControl);
var _qualitySvg = require("bundle-text:./quality.svg");
var _qualitySvgDefault = parcelHelpers.interopDefault(_qualitySvg);
var _audioSvg = require("bundle-text:./audio.svg");
var _audioSvgDefault = parcelHelpers.interopDefault(_audioSvg);
function uniqBy(array, property) {
const seen = new Map();
return array.filter((item)=>{
const key = item[property];
if (key === undefined) return true;
return !seen.has(key) && seen.set(key, 1);
return !seen.has(key) && seen.set(key, 1);
});
}
function artplayerPluginDashControl(option = {}) {
return (art)=>{
const { $video } = art.template;
const { errorHandle } = art.constructor.utils;
function updateQuality(dash) {
const qualities = dash.getBitrateInfoListFor("video");
if (!qualities || !qualities.length) return;
const config = option.quality || {};
const auto = config.auto || "Auto";
const title = config.title || "Quality";
const getName = config.getName || ((level)=>`${level.height}p`);
const currentQuality = dash.getQualityFor("video");
const currentAuto = dash.getSettings().streaming.abr.autoSwitchBitrate["video"];
const defaultHtml = currentAuto ? auto : getName(qualities[currentQuality]);
const selector = uniqBy(qualities.map((item)=>{
return {
html: getName(item),
value: item.qualityIndex,
default: currentQuality === item.qualityIndex && !currentAuto
};
}), "html").sort((a, b)=>b.value - a.value);
selector.push({
html: auto,
value: "auto",
default: currentAuto
});
const onSelect = (item)=>{
if (item.value === "auto") dash.updateSettings({
streaming: {
abr: {
autoSwitchBitrate: {
video: true
}
}
}
});
else {
dash.updateSettings({
streaming: {
abr: {
autoSwitchBitrate: {
video: false
}
}
}
});
dash.setQualityFor("video", item.value);
}
art.notice.show = `${title}: ${item.html}`;
if (config.control) art.controls.check(item);
if (config.setting) art.setting.check(item);
return item.html;
}
function artplayerPluginDashControl2(option = {}) {
return (art) => {
const { $video } = art.template;
const { errorHandle } = art.constructor.utils;
function updateQuality(dash) {
const qualities = dash.getBitrateInfoListFor("video");
if (!qualities || !qualities.length)
return;
const config = option.quality || {};
const auto = config.auto || "Auto";
const title = config.title || "Quality";
const getName = config.getName || ((level) => `${level.height}p`);
const currentQuality = dash.getQualityFor("video");
const currentAuto = dash.getSettings().streaming.abr.autoSwitchBitrate.video;
const defaultHtml = currentAuto ? auto : getName(qualities[currentQuality]);
const selector = uniqBy(
qualities.map((item) => {
return {
html: getName(item),
value: item.qualityIndex,
default: currentQuality === item.qualityIndex && !currentAuto
};
if (config.control) art.controls.update({
name: "dash-quality",
position: "right",
html: defaultHtml,
style: {
padding: "0 10px"
},
selector: selector,
onSelect: onSelect
});
if (config.setting) art.setting.update({
name: "dash-quality",
tooltip: defaultHtml,
html: title,
icon: (0, _qualitySvgDefault.default),
width: 200,
selector: selector,
onSelect: onSelect
});
}
function updateAudio(dash) {
const audioTracks = dash.getTracksFor("audio");
if (!audioTracks || !audioTracks.length) return;
const config = option.audio || {};
const auto = config.auto || "Auto";
const title = config.title || "Audio";
const getName = config.getName || ((track)=>track.lang || track.id);
const currentTrack = dash.getCurrentTrackFor("audio") || audioTracks[0];
const defaultHtml = currentTrack ? getName(currentTrack) : auto;
const selector = uniqBy(audioTracks.map((item)=>{
return {
html: getName(item),
value: item,
default: currentTrack === item
};
}), "html");
const onSelect = (item)=>{
dash.setCurrentTrack(item.value);
art.notice.show = `${title}: ${item.html}`;
if (config.control) art.controls.check(item);
if (config.setting) art.setting.check(item);
return item.html;
};
if (config.control) art.controls.update({
name: "dash-audio",
position: "right",
html: defaultHtml,
style: {
padding: "0 10px"
},
selector: selector,
onSelect: onSelect
});
if (config.setting) art.setting.update({
name: "dash-audio",
tooltip: defaultHtml,
html: title,
icon: (0, _audioSvgDefault.default),
width: 200,
selector: selector,
onSelect: onSelect
});
}
function update() {
errorHandle(art.dash.getVideoElement() === $video, 'Cannot find instance of DASH from "art.dash"');
updateQuality(art.dash);
updateAudio(art.dash);
}
art.on("ready", update);
art.on("restart", update);
return {
name: "artplayerPluginDashControl",
update
};
};
}
if (typeof window !== "undefined") window["artplayerPluginDashControl"] = artplayerPluginDashControl;
},{"bundle-text:./quality.svg":"kKfho","bundle-text:./audio.svg":"9cTEO","@parcel/transformer-js/src/esmodule-helpers.js":"5dUr6"}],"kKfho":[function(require,module,exports) {
module.exports = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\" height=\"18\"><path fill=\"#fff\" d=\"M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM323.8 202.5c-4.5-6.6-11.9-10.5-19.8-10.5s-15.4 3.9-19.8 10.5l-87 127.6L170.7 297c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6l96 0 32 0 208 0c8.9 0 17.1-4.9 21.2-12.8s3.6-17.4-1.4-24.7l-120-176zM112 192a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"></path></svg>";
},{}],"9cTEO":[function(require,module,exports) {
module.exports = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\" height=\"18\"><path fill=\"#fff\" d=\"M256 80C149.9 80 62.4 159.4 49.6 262c9.4-3.8 19.6-6 30.4-6c26.5 0 48 21.5 48 48l0 128c0 26.5-21.5 48-48 48c-44.2 0-80-35.8-80-80l0-16 0-48 0-48C0 146.6 114.6 32 256 32s256 114.6 256 256l0 48 0 48 0 16c0 44.2-35.8 80-80 80c-26.5 0-48-21.5-48-48l0-128c0-26.5 21.5-48 48-48c10.8 0 21 2.1 30.4 6C449.6 159.4 362.1 80 256 80z\"></path></svg>";
},{}],"5dUr6":[function(require,module,exports) {
exports.interopDefault = function(a) {
return a && a.__esModule ? a : {
default: a
};
};
exports.defineInteropFlag = function(a) {
Object.defineProperty(a, "__esModule", {
value: true
});
};
exports.exportAll = function(source, dest) {
Object.keys(source).forEach(function(key) {
if (key === "default" || key === "__esModule" || Object.prototype.hasOwnProperty.call(dest, key)) return;
Object.defineProperty(dest, key, {
enumerable: true,
get: function() {
return source[key];
}
}),
"html"
).sort((a, b) => b.value - a.value);
selector.push({
html: auto,
value: "auto",
default: currentAuto
});
});
return dest;
};
exports.export = function(dest, destName, get) {
Object.defineProperty(dest, destName, {
enumerable: true,
get: get
});
};
},{}]},["hK3r6"], "hK3r6", "parcelRequire4dc0")
//# sourceMappingURL=index.js.map
const onSelect = (item) => {
if (item.value === "auto") {
dash.updateSettings({
streaming: {
abr: {
autoSwitchBitrate: {
video: true
}
}
}
});
} else {
dash.updateSettings({
streaming: {
abr: {
autoSwitchBitrate: {
video: false
}
}
}
});
dash.setQualityFor("video", item.value);
}
art.notice.show = `${title}: ${item.html}`;
if (config.control)
art.controls.check(item);
if (config.setting)
art.setting.check(item);
return item.html;
};
if (config.control) {
art.controls.update({
name: "dash-quality",
position: "right",
html: defaultHtml,
style: { padding: "0 10px" },
selector,
onSelect
});
}
if (config.setting) {
art.setting.update({
name: "dash-quality",
tooltip: defaultHtml,
html: title,
icon: $quality,
width: 200,
selector,
onSelect
});
}
}
function updateAudio(dash) {
const audioTracks = dash.getTracksFor("audio");
if (!audioTracks || !audioTracks.length)
return;
const config = option.audio || {};
const auto = config.auto || "Auto";
const title = config.title || "Audio";
const getName = config.getName || ((track) => track.lang || track.id);
const currentTrack = dash.getCurrentTrackFor("audio") || audioTracks[0];
const defaultHtml = currentTrack ? getName(currentTrack) : auto;
const selector = uniqBy(
audioTracks.map((item) => {
return {
html: getName(item),
value: item,
default: currentTrack === item
};
}),
"html"
);
const onSelect = (item) => {
dash.setCurrentTrack(item.value);
art.notice.show = `${title}: ${item.html}`;
if (config.control)
art.controls.check(item);
if (config.setting)
art.setting.check(item);
return item.html;
};
if (config.control) {
art.controls.update({
name: "dash-audio",
position: "right",
html: defaultHtml,
style: { padding: "0 10px" },
selector,
onSelect
});
}
if (config.setting) {
art.setting.update({
name: "dash-audio",
tooltip: defaultHtml,
html: title,
icon: $audio,
width: 200,
selector,
onSelect
});
}
}
function update() {
errorHandle(art.dash.getVideoElement() === $video, 'Cannot find instance of DASH from "art.dash"');
updateQuality(art.dash);
updateAudio(art.dash);
}
art.on("ready", update);
art.on("restart", update);
return {
name: "artplayerPluginDashControl",
update
};
};
}
return artplayerPluginDashControl2;
})();
@@ -1 +0,0 @@
{"mappings":"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","sources":["packages/artplayer-plugin-dash-control/src/index.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-d9842915446976aa.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-fd32f05dba0c94f1.js","node_modules/@parcel/transformer-js/src/esmodule-helpers.js"],"sourcesContent":["import $quality from 'bundle-text:./quality.svg';\nimport $audio from 'bundle-text:./audio.svg';\n\nfunction uniqBy(array, property) {\n const seen = new Map();\n return array.filter((item) => {\n const key = item[property];\n if (key === undefined) {\n return true;\n }\n return !seen.has(key) && seen.set(key, 1);\n });\n}\n\nexport default function artplayerPluginDashControl(option = {}) {\n return (art) => {\n const { $video } = art.template;\n const { errorHandle } = art.constructor.utils;\n\n function updateQuality(dash) {\n const qualities = dash.getBitrateInfoListFor('video');\n if (!qualities || !qualities.length) return;\n\n const config = option.quality || {};\n const auto = config.auto || 'Auto';\n Line truncated
@@ -1,262 +0,0 @@
// modules are defined as an array
// [ module function, map of requires ]
//
// map of requires is short require name -> numeric require
//
// anything defined in a previous bundle is accessed via the
// orig method which is the require for previous bundles
(function (modules, entry, mainEntry, parcelRequireName, globalName) {
/* eslint-disable no-undef */
var globalObject =
typeof globalThis !== 'undefined'
? globalThis
: typeof self !== 'undefined'
? self
: typeof window !== 'undefined'
? window
: typeof global !== 'undefined'
? global
: {};
/* eslint-enable no-undef */
// Save the require from previous bundle to this closure if any
var previousRequire =
typeof globalObject[parcelRequireName] === 'function' &&
globalObject[parcelRequireName];
var cache = previousRequire.cache || {};
// Do not use `require` to prevent Webpack from trying to bundle this call
var nodeRequire =
typeof module !== 'undefined' &&
typeof module.require === 'function' &&
module.require.bind(module);
function newRequire(name, jumped) {
if (!cache[name]) {
if (!modules[name]) {
// if we cannot find the module within our internal map or
// cache jump to the current global require ie. the last bundle
// that was added to the page.
var currentRequire =
typeof globalObject[parcelRequireName] === 'function' &&
globalObject[parcelRequireName];
if (!jumped && currentRequire) {
return currentRequire(name, true);
}
// If there are other bundles on this page the require from the
// previous one is saved to 'previousRequire'. Repeat this as
// many times as there are bundles until the module is found or
// we exhaust the require chain.
if (previousRequire) {
return previousRequire(name, true);
}
// Try the node require function if it exists.
if (nodeRequire && typeof name === 'string') {
return nodeRequire(name);
}
var err = new Error("Cannot find module '" + name + "'");
err.code = 'MODULE_NOT_FOUND';
throw err;
}
localRequire.resolve = resolve;
localRequire.cache = {};
var module = (cache[name] = new newRequire.Module(name));
modules[name][0].call(
module.exports,
localRequire,
module,
module.exports,
this
);
}
return cache[name].exports;
function localRequire(x) {
var res = localRequire.resolve(x);
return res === false ? {} : newRequire(res);
}
function resolve(x) {
var id = modules[name][1][x];
return id != null ? id : x;
}
}
function Module(moduleName) {
this.id = moduleName;
this.bundle = newRequire;
this.exports = {};
}
newRequire.isParcelRequire = true;
newRequire.Module = Module;
newRequire.modules = modules;
newRequire.cache = cache;
newRequire.parent = previousRequire;
newRequire.register = function (id, exports) {
modules[id] = [
function (require, module) {
module.exports = exports;
},
{},
];
};
Object.defineProperty(newRequire, 'root', {
get: function () {
return globalObject[parcelRequireName];
},
});
globalObject[parcelRequireName] = newRequire;
for (var i = 0; i < entry.length; i++) {
newRequire(entry[i]);
}
if (mainEntry) {
// Expose entry point to Node, AMD or browser globals
// Based on https://github.com/ForbesLindesay/umd/blob/master/template.js
var mainExports = newRequire(mainEntry);
// CommonJS
if (typeof exports === 'object' && typeof module !== 'undefined') {
module.exports = mainExports;
// RequireJS
} else if (typeof define === 'function' && define.amd) {
define(function () {
return mainExports;
});
// <script>
} else if (globalName) {
this[globalName] = mainExports;
}
}
})({"gigZd":[function(require,module,exports) {
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
parcelHelpers.defineInteropFlag(exports);
var _imageSvg = require("bundle-text:./image.svg");
var _imageSvgDefault = parcelHelpers.interopDefault(_imageSvg);
function artplayerPluginDashQuality(option) {
return (art)=>{
const { $video } = art.template;
const { errorHandle } = art.constructor.utils;
function update() {
const dash = art.dash || window.dash;
errorHandle(dash && dash.getVideoElement() === $video, 'Cannot find instance of Dash from "art.dash" or "window.dash"');
const auto = option.auto || "Auto";
const title = option.title || "Quality";
const levels = dash.getBitrateInfoListFor("video");
const currentLevel = dash.getQualityFor("video");
const getResolution = option.getResolution || ((level)=>(level.height || "Unknown ") + "P");
const settings = dash.getSettings();
const defaultLevel = levels[currentLevel];
const defaultHtml = settings?.streaming?.abr?.autoSwitchBitrate?.video ? auto : getResolution(defaultLevel);
const cfg = {
streaming: {
abr: {
autoSwitchBitrate: {}
}
}
};
if (option.control) art.controls.update({
name: "dash-quality",
position: "right",
html: defaultHtml,
style: {
padding: "0 10px"
},
selector: levels.map((item, index)=>{
return {
html: getResolution(item),
level: index,
default: defaultLevel === item
};
}),
onSelect (item) {
cfg.streaming.abr.autoSwitchBitrate["video"] = false;
dash.updateSettings(cfg);
dash.setQualityFor("video", item.level, true);
return item.html;
}
});
if (option.setting) art.setting.update({
name: "dash-quality",
tooltip: defaultHtml,
html: title,
icon: (0, _imageSvgDefault.default),
width: 200,
selector: levels.map((item, index)=>{
return {
html: getResolution(item),
level: index,
default: defaultLevel === item
};
}),
onSelect: function(item) {
cfg.streaming.abr.autoSwitchBitrate["video"] = false;
dash.updateSettings(cfg);
dash.setQualityFor("video", item.level, true);
return item.html;
}
});
}
art.on("ready", update);
art.on("restart", update);
return {
name: "artplayerPluginDashQuality"
};
};
}
exports.default = artplayerPluginDashQuality;
artplayerPluginDashQuality.env = "development";
artplayerPluginDashQuality.version = "2.0.0";
artplayerPluginDashQuality.build = "2023-04-23 09:50:27";
if (typeof window !== "undefined") window["artplayerPluginDashQuality"] = artplayerPluginDashQuality;
},{"bundle-text:./image.svg":"78FlN","@parcel/transformer-js/src/esmodule-helpers.js":"5dUr6"}],"78FlN":[function(require,module,exports) {
module.exports = "<?xml version=\"1.0\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n<svg t=\"1666857514489\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"2580\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"24\" height=\"24\"><path d=\"M870.4 176 153.6 176C104.128 176 64 216.128 64 265.6l0 492.736c0 49.472 40.128 89.6 89.6 89.6L870.4 847.936c49.472 0 89.6-40.128 89.6-89.6L960 265.6C960 216.128 919.872 176 870.4 176zM870.4 668.8 825.6 668.8c0 0-29.696-65.792-89.6-89.6s-134.4 89.6-134.4 89.6S535.04 596.992 467.2 444.8C399.36 292.608 153.6 624 153.6 624l0-358.4L870.4 265.6 870.4 668.8zM668.8 489.6c37.056 0 67.2-30.144 67.2-67.264 0-37.056-30.144-67.2-67.2-67.2C631.68 355.2 601.6 385.344 601.6 422.4 601.6 459.52 631.68 489.6 668.8 489.6z\" p-id=\"2581\" fill=\"#ffffff\"></path>\n</svg>";
},{}],"5dUr6":[function(require,module,exports) {
exports.interopDefault = function(a) {
return a && a.__esModule ? a : {
default: a
};
};
exports.defineInteropFlag = function(a) {
Object.defineProperty(a, "__esModule", {
value: true
});
};
exports.exportAll = function(source, dest) {
Object.keys(source).forEach(function(key) {
if (key === "default" || key === "__esModule" || dest.hasOwnProperty(key)) return;
Object.defineProperty(dest, key, {
enumerable: true,
get: function() {
return source[key];
}
});
});
return dest;
};
exports.export = function(dest, destName, get) {
Object.defineProperty(dest, destName, {
enumerable: true,
get: get
});
};
},{}]},["gigZd"], "gigZd", "parcelRequire4dc0")
//# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
{"mappings":"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","sources":["packages/artplayer-plugin-dash-quality/src/index.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-64c514a205c07416.js","node_modules/@parcel/transformer-js/src/esmodule-helpers.js"],"sourcesContent":["import image from 'bundle-text:./image.svg';\n\nexport default function artplayerPluginDashQuality(option) {\n return (art) => {\n const { $video } = art.template;\n const { errorHandle } = art.constructor.utils;\n\n function update() {\n const dash = art.dash || window.dash;\n errorHandle(\n dash && dash.getVideoElement() === $video,\n 'Cannot find instance of Dash from \"art.dash\" or \"window.dash\"',\n );\n const auto = option.auto || 'Auto';\n const title = option.title || 'Quality';\n const levels = dash.getBitrateInfoListFor('video');\n const currentLevel = dash.getQualityFor('video');\n const getResolution = option.getResolution || ((level) => (level.height || 'Unknown ') + 'P');\n const settings = dash.getSettings();\n const defaultLevel = levels[currentLevel];\n const defaultHtml = settings?.streaming?.abr?.autoSwitchBitrate?.video ? auto : getResolution(defaultLevel);\n\n const cfg = {\n streaming: {\n abr: {\n autoSwitchBitrate: {},\n },\n },\n };\n\n if (option.control) {\n art.controls.update({\n name: 'dash-quality',\n position: 'right',\n html: defaultHtml,\n style: { padding: '0 10px' },\n selector: levels.map((item, index) => {\n return {\n html: getResolution(item),\n level: index,\n default: defaultLevel === item,\n };\n }),\n onSelect(item) {\n cfg.streaming.abr.autoSwitchBitrate['video'] = false;\n dash.updateSettings(cfg);\n dash.setQualityFor('video', item.level, true);\n return item.html;\n },\n });\n }\n\n if (option.setting) {\n art.setting.update({\n name: 'dash-quality',\n tooltip: defaultHtml,\n Line truncated
@@ -1,374 +1,189 @@
// modules are defined as an array
// [ module function, map of requires ]
//
// map of requires is short require name -> numeric require
//
// anything defined in a previous bundle is accessed via the
// orig method which is the require for previous bundles
(function (
modules,
entry,
mainEntry,
parcelRequireName,
externals,
distDir,
publicUrl,
devServer
) {
/* eslint-disable no-undef */
var globalObject =
typeof globalThis !== 'undefined'
? globalThis
: typeof self !== 'undefined'
? self
: typeof window !== 'undefined'
? window
: typeof global !== 'undefined'
? global
: {};
/* eslint-enable no-undef */
// Save the require from previous bundle to this closure if any
var previousRequire =
typeof globalObject[parcelRequireName] === 'function' &&
globalObject[parcelRequireName];
var importMap = previousRequire.i || {};
var cache = previousRequire.cache || {};
// Do not use `require` to prevent Webpack from trying to bundle this call
var nodeRequire =
typeof module !== 'undefined' &&
typeof module.require === 'function' &&
module.require.bind(module);
function newRequire(name, jumped) {
if (!cache[name]) {
if (!modules[name]) {
if (externals[name]) {
return externals[name];
}
// if we cannot find the module within our internal map or
// cache jump to the current global require ie. the last bundle
// that was added to the page.
var currentRequire =
typeof globalObject[parcelRequireName] === 'function' &&
globalObject[parcelRequireName];
if (!jumped && currentRequire) {
return currentRequire(name, true);
}
// If there are other bundles on this page the require from the
// previous one is saved to 'previousRequire'. Repeat this as
// many times as there are bundles until the module is found or
// we exhaust the require chain.
if (previousRequire) {
return previousRequire(name, true);
}
// Try the node require function if it exists.
if (nodeRequire && typeof name === 'string') {
return nodeRequire(name);
}
var err = new Error("Cannot find module '" + name + "'");
err.code = 'MODULE_NOT_FOUND';
throw err;
}
localRequire.resolve = resolve;
localRequire.cache = {};
var module = (cache[name] = new newRequire.Module(name));
modules[name][0].call(
module.exports,
localRequire,
module,
module.exports,
globalObject
);
}
return cache[name].exports;
function localRequire(x) {
var res = localRequire.resolve(x);
return res === false ? {} : newRequire(res);
}
function resolve(x) {
var id = modules[name][1][x];
return id != null ? id : x;
}
}
function Module(moduleName) {
this.id = moduleName;
this.bundle = newRequire;
this.require = nodeRequire;
this.exports = {};
}
newRequire.isParcelRequire = true;
newRequire.Module = Module;
newRequire.modules = modules;
newRequire.cache = cache;
newRequire.parent = previousRequire;
newRequire.distDir = distDir;
newRequire.publicUrl = publicUrl;
newRequire.devServer = devServer;
newRequire.i = importMap;
newRequire.register = function (id, exports) {
modules[id] = [
function (require, module) {
module.exports = exports;
},
{},
];
};
// Only insert newRequire.load when it is actually used.
// The code in this file is linted against ES5, so dynamic import is not allowed.
// INSERT_LOAD_HERE
Object.defineProperty(newRequire, 'root', {
get: function () {
return globalObject[parcelRequireName];
},
});
globalObject[parcelRequireName] = newRequire;
for (var i = 0; i < entry.length; i++) {
newRequire(entry[i]);
}
if (mainEntry) {
// Expose entry point to Node, AMD or browser globals
// Based on https://github.com/ForbesLindesay/umd/blob/master/template.js
var mainExports = newRequire(mainEntry);
// CommonJS
if (typeof exports === 'object' && typeof module !== 'undefined') {
module.exports = mainExports;
// RequireJS
} else if (typeof define === 'function' && define.amd) {
define(function () {
return mainExports;
});
}
}
})({"4zgII":[function(require,module,exports,__globalThis) {
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
parcelHelpers.defineInteropFlag(exports);
parcelHelpers.export(exports, "default", ()=>artplayerPluginDocumentPip);
var _styleLess = require("bundle-text:./style.less");
var _styleLessDefault = parcelHelpers.interopDefault(_styleLess);
function artplayerPluginDocumentPip(userOptions = {}) {
var artplayerPluginDocumentPip = (function() {
"use strict";
const style = ".artplayer-document-pip.art-video-player {\n width: 100% !important;\n height: 100% !important;\n}\n";
function artplayerPluginDocumentPip2(userOptions = {}) {
const options = {
width: 480,
height: 270,
fallbackToVideoPiP: true,
placeholder: `Playing in Document Picture-in-Picture`,
...userOptions
width: 480,
height: 270,
fallbackToVideoPiP: true,
placeholder: `Playing in Document Picture-in-Picture`,
...userOptions
};
return (art)=>{
const isSupported = 'documentPictureInPicture' in window && typeof window.documentPictureInPicture?.requestWindow === 'function';
const { proxy, icons, i18n, template: { $player }, constructor: { utils: { append, tooltip, addClass, removeClass } } } = art;
const state = {
win: null,
originalParent: null,
originalNext: null,
currentDoc: null,
placeholder: null
};
function copyStylesTo(targetDoc) {
const base = targetDoc.createElement('style');
base.textContent = `
return (art) => {
const isSupported = "documentPictureInPicture" in window && typeof window.documentPictureInPicture?.requestWindow === "function";
const { proxy, icons, i18n, template: { $player }, constructor: { utils: { append, tooltip, addClass, removeClass, sleep } } } = art;
const state = {
win: null,
originalParent: null,
originalNext: null,
currentDoc: null,
placeholder: null
};
function copyStylesTo(targetDoc) {
const base = targetDoc.createElement("style");
base.textContent = `
html, body { margin:0; padding:0; width:100%; height:100%; background:#000; overflow:hidden; }
#__art_dpip_root { position:absolute; inset:0; display:flex; }
#__art_dpip_root > * { width:100% !important; height:100% !important; }
`;
targetDoc.head.appendChild(base);
if (!targetDoc.querySelector('meta[name="viewport"]')) {
const meta = targetDoc.createElement('meta');
meta.name = 'viewport';
meta.content = 'width=device-width,initial-scale=1';
targetDoc.head.appendChild(meta);
}
try {
document.querySelectorAll('link[rel="stylesheet"]').forEach((link)=>{
const clone = targetDoc.createElement('link');
clone.rel = 'stylesheet';
clone.href = link.href;
if (link.media) clone.media = link.media;
if (link.crossOrigin) clone.crossOrigin = link.crossOrigin;
if (link.referrerPolicy) clone.referrerPolicy = link.referrerPolicy;
targetDoc.head.appendChild(clone);
});
} catch {}
try {
document.querySelectorAll('style').forEach((style)=>{
const clone = targetDoc.createElement('style');
clone.textContent = style.textContent;
targetDoc.head.appendChild(clone);
});
} catch {}
targetDoc.head.appendChild(base);
if (!targetDoc.querySelector('meta[name="viewport"]')) {
const meta = targetDoc.createElement("meta");
meta.name = "viewport";
meta.content = "width=device-width,initial-scale=1";
targetDoc.head.appendChild(meta);
}
async function open() {
if (!isSupported && options.fallbackToVideoPiP) {
art.pip = true;
console.warn('[artplayer-plugin-document-pip] Document Picture-in-Picture is not supported, falling back to Video Picture-in-Picture');
return;
}
if (state.win) return;
try {
const pipWin = await window.documentPictureInPicture.requestWindow({
width: options.width,
height: options.height
});
state.win = pipWin;
state.currentDoc = pipWin.document;
state.placeholder = document.createElement('div');
state.placeholder.className = 'artplayer-document-pip-placeholder';
state.placeholder.style.cssText = `display:flex;justify-content:center;align-items:center;width:100%;height:100%;`;
state.placeholder.textContent = options.placeholder;
state.originalParent = $player.parentNode;
state.originalNext = $player.nextSibling;
state.originalParent.insertBefore(state.placeholder, state.originalNext);
const root = pipWin.document.createElement('div');
root.id = '__art_dpip_root';
pipWin.document.body.appendChild(root);
copyStylesTo(pipWin.document);
const adopted = pipWin.document.adoptNode($player);
root.appendChild(adopted);
state.currentDoc = pipWin.document;
const onResize = ()=>art.resize?.();
const onClose = ()=>close();
pipWin.addEventListener('resize', onResize);
pipWin.addEventListener('pagehide', onClose);
pipWin.addEventListener('unload', onClose);
state.cleanup = ()=>{
pipWin.removeEventListener('resize', onResize);
pipWin.removeEventListener('pagehide', onClose);
pipWin.removeEventListener('unload', onClose);
};
addClass($player, 'artplayer-document-pip');
art.events.bindGlobalEvents?.();
art.emit('resize');
art.emit('document-pip', true);
} catch (err) {
art.notice.show = 'Document Picture-in-Picture open failed';
console.warn('[artplayer-plugin-document-pip] open failed:', err);
}
try {
document.querySelectorAll('link[rel="stylesheet"]').forEach((link) => {
const clone = targetDoc.createElement("link");
clone.rel = "stylesheet";
clone.href = link.href;
if (link.media)
clone.media = link.media;
if (link.crossOrigin)
clone.crossOrigin = link.crossOrigin;
if (link.referrerPolicy)
clone.referrerPolicy = link.referrerPolicy;
targetDoc.head.appendChild(clone);
});
} catch {
}
function restoreToOriginalDocument() {
if (!state.placeholder) return;
const backDoc = state.placeholder.ownerDocument || document;
const adoptedBack = backDoc.adoptNode($player);
state.originalParent.insertBefore(adoptedBack, state.placeholder);
state.placeholder.remove();
state.placeholder = null;
state.currentDoc = backDoc;
try {
document.querySelectorAll("style").forEach((style2) => {
const clone = targetDoc.createElement("style");
clone.textContent = style2.textContent;
targetDoc.head.appendChild(clone);
});
} catch {
}
function close() {
if (!state.win) return;
try {
state.cleanup?.();
restoreToOriginalDocument();
state.win.close();
state.win = null;
removeClass($player, 'artplayer-document-pip');
art.events.bindGlobalEvents?.();
art.emit('resize');
art.emit('document-pip', false);
} catch (err) {
art.notice.show = 'Document Picture-in-Picture close failed';
console.warn('[artplayer-plugin-document-pip] close failed:', err);
}
}
async function open() {
if (!isSupported && options.fallbackToVideoPiP) {
art.pip = true;
console.warn("[artplayer-plugin-document-pip] Document Picture-in-Picture is not supported, falling back to Video Picture-in-Picture");
return;
}
function toggle() {
if (state.win) close();
else open();
if (state.win)
return;
try {
const pipWin = await window.documentPictureInPicture.requestWindow({
width: options.width,
height: options.height
});
state.win = pipWin;
state.currentDoc = pipWin.document;
state.placeholder = document.createElement("div");
state.placeholder.className = "artplayer-document-pip-placeholder";
state.placeholder.style.cssText = `display:flex;justify-content:center;align-items:center;width:100%;height:100%;`;
state.placeholder.textContent = options.placeholder;
state.originalParent = $player.parentNode;
state.originalNext = $player.nextSibling;
state.originalParent.insertBefore(state.placeholder, state.originalNext);
const root = pipWin.document.createElement("div");
root.id = "__art_dpip_root";
pipWin.document.body.appendChild(root);
copyStylesTo(pipWin.document);
const adopted = pipWin.document.adoptNode($player);
root.appendChild(adopted);
state.currentDoc = pipWin.document;
const onResize = () => art.resize?.();
const onClose = () => close();
pipWin.addEventListener("resize", onResize);
pipWin.addEventListener("pagehide", onClose);
pipWin.addEventListener("unload", onClose);
state.cleanup = () => {
pipWin.removeEventListener("resize", onResize);
pipWin.removeEventListener("pagehide", onClose);
pipWin.removeEventListener("unload", onClose);
};
addClass($player, "artplayer-document-pip");
art.events.bindGlobalEvents?.();
art.emit("document-pip", true);
await sleep(100);
art.emit("resize");
} catch (err) {
art.notice.show = "Document Picture-in-Picture open failed";
console.warn("[artplayer-plugin-document-pip] open failed:", err);
}
art.controls.add({
name: 'document-pip',
position: 'right',
index: 40,
tooltip: art.i18n.get('PIP Mode'),
mounted: ($control)=>{
append($control, icons.pip);
proxy($control, 'click', toggle);
art.on('document-pip', (value)=>{
tooltip($control, i18n.get(value ? 'Exit PIP Mode' : 'PIP Mode'));
});
}
});
art.on('destroy', close);
return {
name: 'artplayerPluginDocumentPip',
get isSupported () {
return isSupported;
},
get isActive () {
return !!state.win;
},
open,
close,
toggle
};
}
function restoreToOriginalDocument() {
if (!state.placeholder)
return;
const backDoc = state.placeholder.ownerDocument || document;
const adoptedBack = backDoc.adoptNode($player);
state.originalParent.insertBefore(adoptedBack, state.placeholder);
state.placeholder.remove();
state.placeholder = null;
state.currentDoc = backDoc;
}
async function close() {
if (!state.win)
return;
try {
state.cleanup?.();
restoreToOriginalDocument();
state.win.close();
state.win = null;
removeClass($player, "artplayer-document-pip");
art.events.bindGlobalEvents?.();
art.emit("document-pip", false);
await sleep(100);
art.emit("resize");
} catch (err) {
art.notice.show = "Document Picture-in-Picture close failed";
console.warn("[artplayer-plugin-document-pip] close failed:", err);
}
}
function toggle() {
if (state.win) {
close();
} else {
open();
}
}
art.controls.add({
name: "document-pip",
position: "right",
index: 40,
tooltip: art.i18n.get("PIP Mode"),
mounted: ($control) => {
append($control, icons.pip);
proxy($control, "click", toggle);
art.on("document-pip", (value) => {
tooltip($control, i18n.get(value ? "Exit PIP Mode" : "PIP Mode"));
});
}
});
art.on("destroy", close);
return {
name: "artplayerPluginDocumentPip",
get isSupported() {
return isSupported;
},
get isActive() {
return !!state.win;
},
open,
close,
toggle
};
};
}
if (typeof window !== 'undefined') window.artplayerPluginDocumentPip = artplayerPluginDocumentPip;
if (typeof document !== 'undefined') {
const id = 'artplayer-plugin-document-pip';
}
if (typeof document !== "undefined") {
const id = "artplayer-plugin-document-pip";
let $style = document.getElementById(id);
if (!$style) {
$style = document.createElement('style');
$style.id = id;
if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', ()=>{
document.head.appendChild($style);
$style = document.createElement("style");
$style.id = id;
if (document.readyState === "loading") {
document.addEventListener("DOMContentLoaded", () => {
document.head.appendChild($style);
});
else (document.head || document.documentElement).appendChild($style);
} else {
(document.head || document.documentElement).appendChild($style);
}
}
$style.textContent = (0, _styleLessDefault.default);
}
},{"bundle-text:./style.less":"dS6Bp","@parcel/transformer-js/src/esmodule-helpers.js":"8oCsH"}],"dS6Bp":[function(require,module,exports,__globalThis) {
module.exports = ".artplayer-document-pip.art-video-player {\n width: 100% !important;\n height: 100% !important;\n}\n";
},{}],"8oCsH":[function(require,module,exports,__globalThis) {
exports.interopDefault = function(a) {
return a && a.__esModule ? a : {
default: a
};
};
exports.defineInteropFlag = function(a) {
Object.defineProperty(a, '__esModule', {
value: true
});
};
exports.exportAll = function(source, dest) {
Object.keys(source).forEach(function(key) {
if (key === 'default' || key === '__esModule' || Object.prototype.hasOwnProperty.call(dest, key)) return;
Object.defineProperty(dest, key, {
enumerable: true,
get: function() {
return source[key];
}
});
});
return dest;
};
exports.export = function(dest, destName, get) {
Object.defineProperty(dest, destName, {
enumerable: true,
get: get
});
};
},{}]},["4zgII"], "4zgII", "parcelRequire4dc0", {})
//# sourceMappingURL=index.js.map
$style.textContent = style;
}
return artplayerPluginDocumentPip2;
})();
@@ -1 +0,0 @@
{"mappings":"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","sources":["packages/artplayer-plugin-document-pip/src/index.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-f69d04bcc7b1cbb1.js","node_modules/@parcel/transformer-js/src/esmodule-helpers.js"],"sourcesContent":["import style from 'bundle-text:./style.less'\n\nexport default function artplayerPluginDocumentPip(userOptions = {}) {\n const options = {\n Line truncated
@@ -1,307 +1,138 @@
// modules are defined as an array
// [ module function, map of requires ]
//
// map of requires is short require name -> numeric require
//
// anything defined in a previous bundle is accessed via the
// orig method which is the require for previous bundles
(function (modules, entry, mainEntry, parcelRequireName, globalName) {
/* eslint-disable no-undef */
var globalObject =
typeof globalThis !== 'undefined'
? globalThis
: typeof self !== 'undefined'
? self
: typeof window !== 'undefined'
? window
: typeof global !== 'undefined'
? global
: {};
/* eslint-enable no-undef */
// Save the require from previous bundle to this closure if any
var previousRequire =
typeof globalObject[parcelRequireName] === 'function' &&
globalObject[parcelRequireName];
var cache = previousRequire.cache || {};
// Do not use `require` to prevent Webpack from trying to bundle this call
var nodeRequire =
typeof module !== 'undefined' &&
typeof module.require === 'function' &&
module.require.bind(module);
function newRequire(name, jumped) {
if (!cache[name]) {
if (!modules[name]) {
// if we cannot find the module within our internal map or
// cache jump to the current global require ie. the last bundle
// that was added to the page.
var currentRequire =
typeof globalObject[parcelRequireName] === 'function' &&
globalObject[parcelRequireName];
if (!jumped && currentRequire) {
return currentRequire(name, true);
}
// If there are other bundles on this page the require from the
// previous one is saved to 'previousRequire'. Repeat this as
// many times as there are bundles until the module is found or
// we exhaust the require chain.
if (previousRequire) {
return previousRequire(name, true);
}
// Try the node require function if it exists.
if (nodeRequire && typeof name === 'string') {
return nodeRequire(name);
}
var err = new Error("Cannot find module '" + name + "'");
err.code = 'MODULE_NOT_FOUND';
throw err;
var artplayerPluginHlsControl = (function() {
"use strict";
const $audio = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" height="18"><path fill="#fff" d="M256 80C149.9 80 62.4 159.4 49.6 262c9.4-3.8 19.6-6 30.4-6c26.5 0 48 21.5 48 48l0 128c0 26.5-21.5 48-48 48c-44.2 0-80-35.8-80-80l0-16 0-48 0-48C0 146.6 114.6 32 256 32s256 114.6 256 256l0 48 0 48 0 16c0 44.2-35.8 80-80 80c-26.5 0-48-21.5-48-48l0-128c0-26.5 21.5-48 48-48c10.8 0 21 2.1 30.4 6C449.6 159.4 362.1 80 256 80z"/></svg>';
const $quality = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" height="18"><path fill="#fff" d="M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM323.8 202.5c-4.5-6.6-11.9-10.5-19.8-10.5s-15.4 3.9-19.8 10.5l-87 127.6L170.7 297c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6l96 0 32 0 208 0c8.9 0 17.1-4.9 21.2-12.8s3.6-17.4-1.4-24.7l-120-176zM112 192a48 48 0 1 0 0-96 48 48 0 1 0 0 96z"/></svg>';
function uniqBy(array, property) {
const seen = /* @__PURE__ */ new Map();
return array.filter((item) => {
const key = item[property];
if (key === void 0) {
return true;
}
localRequire.resolve = resolve;
localRequire.cache = {};
var module = (cache[name] = new newRequire.Module(name));
modules[name][0].call(
module.exports,
localRequire,
module,
module.exports,
this
);
}
return cache[name].exports;
function localRequire(x) {
var res = localRequire.resolve(x);
return res === false ? {} : newRequire(res);
}
function resolve(x) {
var id = modules[name][1][x];
return id != null ? id : x;
}
}
function Module(moduleName) {
this.id = moduleName;
this.bundle = newRequire;
this.exports = {};
}
newRequire.isParcelRequire = true;
newRequire.Module = Module;
newRequire.modules = modules;
newRequire.cache = cache;
newRequire.parent = previousRequire;
newRequire.register = function (id, exports) {
modules[id] = [
function (require, module) {
module.exports = exports;
},
{},
];
};
Object.defineProperty(newRequire, 'root', {
get: function () {
return globalObject[parcelRequireName];
},
});
globalObject[parcelRequireName] = newRequire;
for (var i = 0; i < entry.length; i++) {
newRequire(entry[i]);
}
if (mainEntry) {
// Expose entry point to Node, AMD or browser globals
// Based on https://github.com/ForbesLindesay/umd/blob/master/template.js
var mainExports = newRequire(mainEntry);
// CommonJS
if (typeof exports === 'object' && typeof module !== 'undefined') {
module.exports = mainExports;
// RequireJS
} else if (typeof define === 'function' && define.amd) {
define(function () {
return mainExports;
});
// <script>
} else if (globalName) {
this[globalName] = mainExports;
}
}
})({"4ve9y":[function(require,module,exports) {
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
parcelHelpers.defineInteropFlag(exports);
parcelHelpers.export(exports, "default", ()=>artplayerPluginHlsControl);
var _qualitySvg = require("bundle-text:./quality.svg");
var _qualitySvgDefault = parcelHelpers.interopDefault(_qualitySvg);
var _audioSvg = require("bundle-text:./audio.svg");
var _audioSvgDefault = parcelHelpers.interopDefault(_audioSvg);
function uniqBy(array, property) {
const seen = new Map();
return array.filter((item)=>{
const key = item[property];
if (key === undefined) return true;
return !seen.has(key) && seen.set(key, 1);
return !seen.has(key) && seen.set(key, 1);
});
}
function artplayerPluginHlsControl(option = {}) {
return (art)=>{
const { $video } = art.template;
const { errorHandle } = art.constructor.utils;
function updateQuality(hls) {
if (!hls.levels.length) return;
const config = option.quality || {};
const auto = config.auto || "Auto";
const title = config.title || "Quality";
const getName = config.getName || ((level)=>level.name || level.height + "P");
const defaultLevel = hls.levels[hls.currentLevel];
const defaultHtml = defaultLevel ? getName(defaultLevel) : auto;
const selector = uniqBy(hls.levels.map((item, index)=>{
return {
html: getName(item, index),
value: index,
default: hls.currentLevel === index
};
}), "html").sort((a, b)=>b.value - a.value);
selector.push({
html: auto,
value: -1,
default: hls.currentLevel === -1
});
const onSelect = (item)=>{
hls.currentLevel = item.value;
art.notice.show = `${title}: ${item.html}`;
if (config.control) art.controls.check(item);
if (config.setting) art.setting.check(item);
return item.html;
}
function artplayerPluginHlsControl2(option = {}) {
return (art) => {
const { $video } = art.template;
const { errorHandle } = art.constructor.utils;
function updateQuality(hls) {
if (!hls.levels.length)
return;
const config = option.quality || {};
const auto = config.auto || "Auto";
const title = config.title || "Quality";
const getName = config.getName || ((level) => level.name || `${level.height}P`);
const defaultLevel = hls.levels[hls.currentLevel];
const defaultHtml = defaultLevel ? getName(defaultLevel) : auto;
const selector = uniqBy(
hls.levels.map((item, index) => {
return {
html: getName(item, index),
value: index,
default: hls.currentLevel === index
};
if (config.control) art.controls.update({
name: "hls-quality",
position: "right",
html: defaultHtml,
style: {
padding: "0 10px"
},
selector: selector,
onSelect: onSelect
});
if (config.setting) art.setting.update({
name: "hls-quality",
tooltip: defaultHtml,
html: title,
icon: (0, _qualitySvgDefault.default),
width: 200,
selector: selector,
onSelect: onSelect
});
}
function updateAudio(hls) {
if (!hls.audioTracks.length) return;
const config = option.audio || {};
const auto = config.auto || "Auto";
const title = config.title || "Audio";
const getName = config.getName || ((track)=>track.name || track.lang || track.language);
const defaultTrack = hls.audioTracks[hls.audioTrack];
const defaultHtml = defaultTrack ? getName(defaultTrack) : auto;
const selector = uniqBy(hls.audioTracks.map((item, index)=>{
return {
html: getName(item, index),
value: item.id,
default: hls.audioTrack === item.id
};
}), "html");
const onSelect = (item)=>{
hls.audioTrack = item.value;
art.notice.show = `${title}: ${item.html}`;
if (config.control) art.controls.check(item);
if (config.setting) art.setting.check(item);
return item.html;
};
if (config.control) art.controls.update({
name: "hls-audio",
position: "right",
html: defaultHtml,
style: {
padding: "0 10px"
},
selector: selector,
onSelect: onSelect
});
if (config.setting) art.setting.update({
name: "hls-audio",
tooltip: defaultHtml,
html: title,
icon: (0, _audioSvgDefault.default),
width: 200,
selector: selector,
onSelect: onSelect
});
}
function update() {
errorHandle(art.hls?.media === $video, 'Cannot find instance of HLS from "art.hls"');
updateQuality(art.hls);
updateAudio(art.hls);
}
art.on("ready", update);
art.on("restart", update);
return {
name: "artplayerPluginHlsControl",
update
};
};
}
if (typeof window !== "undefined") window["artplayerPluginHlsControl"] = artplayerPluginHlsControl;
},{"bundle-text:./quality.svg":"dwrS3","bundle-text:./audio.svg":"fK6Qz","@parcel/transformer-js/src/esmodule-helpers.js":"5dUr6"}],"dwrS3":[function(require,module,exports) {
module.exports = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\" height=\"18\"><path fill=\"#fff\" d=\"M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM323.8 202.5c-4.5-6.6-11.9-10.5-19.8-10.5s-15.4 3.9-19.8 10.5l-87 127.6L170.7 297c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6l96 0 32 0 208 0c8.9 0 17.1-4.9 21.2-12.8s3.6-17.4-1.4-24.7l-120-176zM112 192a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"></path></svg>";
},{}],"fK6Qz":[function(require,module,exports) {
module.exports = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\" height=\"18\"><path fill=\"#fff\" d=\"M256 80C149.9 80 62.4 159.4 49.6 262c9.4-3.8 19.6-6 30.4-6c26.5 0 48 21.5 48 48l0 128c0 26.5-21.5 48-48 48c-44.2 0-80-35.8-80-80l0-16 0-48 0-48C0 146.6 114.6 32 256 32s256 114.6 256 256l0 48 0 48 0 16c0 44.2-35.8 80-80 80c-26.5 0-48-21.5-48-48l0-128c0-26.5 21.5-48 48-48c10.8 0 21 2.1 30.4 6C449.6 159.4 362.1 80 256 80z\"></path></svg>";
},{}],"5dUr6":[function(require,module,exports) {
exports.interopDefault = function(a) {
return a && a.__esModule ? a : {
default: a
};
};
exports.defineInteropFlag = function(a) {
Object.defineProperty(a, "__esModule", {
value: true
});
};
exports.exportAll = function(source, dest) {
Object.keys(source).forEach(function(key) {
if (key === "default" || key === "__esModule" || Object.prototype.hasOwnProperty.call(dest, key)) return;
Object.defineProperty(dest, key, {
enumerable: true,
get: function() {
return source[key];
}
}),
"html"
).sort((a, b) => b.value - a.value);
selector.push({
html: auto,
value: -1,
default: hls.currentLevel === -1
});
});
return dest;
};
exports.export = function(dest, destName, get) {
Object.defineProperty(dest, destName, {
enumerable: true,
get: get
});
};
},{}]},["4ve9y"], "4ve9y", "parcelRequire4dc0")
//# sourceMappingURL=index.js.map
const onSelect = (item) => {
hls.currentLevel = item.value;
art.notice.show = `${title}: ${item.html}`;
if (config.control)
art.controls.check(item);
if (config.setting)
art.setting.check(item);
return item.html;
};
if (config.control) {
art.controls.update({
name: "hls-quality",
position: "right",
html: defaultHtml,
style: { padding: "0 10px" },
selector,
onSelect
});
}
if (config.setting) {
art.setting.update({
name: "hls-quality",
tooltip: defaultHtml,
html: title,
icon: $quality,
width: 200,
selector,
onSelect
});
}
}
function updateAudio(hls) {
if (!hls.audioTracks.length)
return;
const config = option.audio || {};
const auto = config.auto || "Auto";
const title = config.title || "Audio";
const getName = config.getName || ((track) => track.name || track.lang || track.language);
const defaultTrack = hls.audioTracks[hls.audioTrack];
const defaultHtml = defaultTrack ? getName(defaultTrack) : auto;
const selector = uniqBy(
hls.audioTracks.map((item, index) => {
return {
html: getName(item, index),
value: item.id,
default: hls.audioTrack === item.id
};
}),
"html"
);
const onSelect = (item) => {
hls.audioTrack = item.value;
art.notice.show = `${title}: ${item.html}`;
if (config.control)
art.controls.check(item);
if (config.setting)
art.setting.check(item);
return item.html;
};
if (config.control) {
art.controls.update({
name: "hls-audio",
position: "right",
html: defaultHtml,
style: { padding: "0 10px" },
selector,
onSelect
});
}
if (config.setting) {
art.setting.update({
name: "hls-audio",
tooltip: defaultHtml,
html: title,
icon: $audio,
width: 200,
selector,
onSelect
});
}
}
function update() {
errorHandle(art.hls?.media === $video, 'Cannot find instance of HLS from "art.hls"');
updateQuality(art.hls);
updateAudio(art.hls);
}
art.on("ready", update);
art.on("restart", update);
return {
name: "artplayerPluginHlsControl",
update
};
};
}
return artplayerPluginHlsControl2;
})();
@@ -1 +0,0 @@
{"mappings":"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","sources":["packages/artplayer-plugin-hls-control/src/index.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-fcdfb7ede3ffa9c4.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-e5365aae8b5bd745.js","node_modules/@parcel/transformer-js/src/esmodule-helpers.js"],"sourcesContent":["import $quality from 'bundle-text:./quality.svg';\nimport $audio from 'bundle-text:./audio.svg';\n\nfunction uniqBy(array, property) {\n const seen = new Map();\n return array.filter((item) => {\n const key = item[property];\n if (key === undefined) {\n return true;\n }\n return !seen.has(key) && seen.set(key, 1);\n });\n}\n\nexport default function artplayerPluginHlsControl(option = {}) {\n return (art) => {\n const { $video } = art.template;\n const { errorHandle } = art.constructor.utils;\n\n function updateQuality(hls) {\n if (!hls.levels.length) return;\n\n const config = option.quality || {};\n const auto = config.auto || 'Auto';\n const title = config.title || 'Quality';\n const getName = config.getName || ((level) => level.name || level.height + 'P');\n const defaultLevel = hls.levels[hls.currentLevel];\n const defaultHtml = defaultLevel ? getName(defaultLevel) : auto;\n\n const selector = uniqBy(\n hls.levels.map((item, index) => {\n Line truncated
+114 -288
View File
@@ -1,306 +1,132 @@
// modules are defined as an array
// [ module function, map of requires ]
//
// map of requires is short require name -> numeric require
//
// anything defined in a previous bundle is accessed via the
// orig method which is the require for previous bundles
(function (modules, entry, mainEntry, parcelRequireName, globalName) {
/* eslint-disable no-undef */
var globalObject =
typeof globalThis !== 'undefined'
? globalThis
: typeof self !== 'undefined'
? self
: typeof window !== 'undefined'
? window
: typeof global !== 'undefined'
? global
: {};
/* eslint-enable no-undef */
// Save the require from previous bundle to this closure if any
var previousRequire =
typeof globalObject[parcelRequireName] === 'function' &&
globalObject[parcelRequireName];
var cache = previousRequire.cache || {};
// Do not use `require` to prevent Webpack from trying to bundle this call
var nodeRequire =
typeof module !== 'undefined' &&
typeof module.require === 'function' &&
module.require.bind(module);
function newRequire(name, jumped) {
if (!cache[name]) {
if (!modules[name]) {
// if we cannot find the module within our internal map or
// cache jump to the current global require ie. the last bundle
// that was added to the page.
var currentRequire =
typeof globalObject[parcelRequireName] === 'function' &&
globalObject[parcelRequireName];
if (!jumped && currentRequire) {
return currentRequire(name, true);
}
// If there are other bundles on this page the require from the
// previous one is saved to 'previousRequire'. Repeat this as
// many times as there are bundles until the module is found or
// we exhaust the require chain.
if (previousRequire) {
return previousRequire(name, true);
}
// Try the node require function if it exists.
if (nodeRequire && typeof name === 'string') {
return nodeRequire(name);
}
var err = new Error("Cannot find module '" + name + "'");
err.code = 'MODULE_NOT_FOUND';
throw err;
var artplayerPluginIframe = (function() {
"use strict";
class ArtplayerPluginIframe {
static get iframe() {
return window.top !== window;
}
static postMessage({ type, data, id = 0 }) {
if (!ArtplayerPluginIframe.iframe) {
throw new Error('The "ArtplayerPluginIframe.postMessage" method can only be used in iframe');
}
localRequire.resolve = resolve;
localRequire.cache = {};
var module = (cache[name] = new newRequire.Module(name));
modules[name][0].call(
module.exports,
localRequire,
module,
module.exports,
this
window.parent.postMessage(
{
type,
data,
id
},
"*"
);
}
return cache[name].exports;
function localRequire(x) {
var res = localRequire.resolve(x);
return res === false ? {} : newRequire(res);
}
function resolve(x) {
var id = modules[name][1][x];
return id != null ? id : x;
}
}
function Module(moduleName) {
this.id = moduleName;
this.bundle = newRequire;
this.exports = {};
}
newRequire.isParcelRequire = true;
newRequire.Module = Module;
newRequire.modules = modules;
newRequire.cache = cache;
newRequire.parent = previousRequire;
newRequire.register = function (id, exports) {
modules[id] = [
function (require, module) {
module.exports = exports;
},
{},
];
};
Object.defineProperty(newRequire, 'root', {
get: function () {
return globalObject[parcelRequireName];
},
});
globalObject[parcelRequireName] = newRequire;
for (var i = 0; i < entry.length; i++) {
newRequire(entry[i]);
}
if (mainEntry) {
// Expose entry point to Node, AMD or browser globals
// Based on https://github.com/ForbesLindesay/umd/blob/master/template.js
var mainExports = newRequire(mainEntry);
// CommonJS
if (typeof exports === 'object' && typeof module !== 'undefined') {
module.exports = mainExports;
// RequireJS
} else if (typeof define === 'function' && define.amd) {
define(function () {
return mainExports;
});
// <script>
} else if (globalName) {
this[globalName] = mainExports;
}
}
})({"2DXkq":[function(require,module,exports) {
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
parcelHelpers.defineInteropFlag(exports);
class ArtplayerPluginIframe {
static get iframe() {
return window.top !== window;
}
static postMessage({ type , data , id =0 }) {
if (!ArtplayerPluginIframe.iframe) throw new Error('The "ArtplayerPluginIframe.postMessage" method can only be used in iframe');
window.parent.postMessage({
type: type,
data: data,
id: id
}, "*");
}
static async onMessage(event) {
if (!ArtplayerPluginIframe.iframe) throw new Error('The "ArtplayerPluginIframe.onMessage" method can only be used in iframe');
const { type , data , id } = event.data;
switch(type){
case "commit":
try {
if (data.match(/\bresolve\((.*?)\)/)) {
const string = `return new Promise(function(resolve){\n${data}\n})`;
const result = await new Function(string)();
ArtplayerPluginIframe.postMessage({
type: "response",
data: result,
id
});
} else {
const result1 = new Function(data)();
ArtplayerPluginIframe.postMessage({
type: "response",
data: result1,
id
});
}
} catch (error) {
ArtplayerPluginIframe.postMessage({
type: "error",
data: error.message,
id
});
throw error;
}
break;
default:
break;
}
if (!ArtplayerPluginIframe.iframe) {
throw new Error('The "ArtplayerPluginIframe.onMessage" method can only be used in iframe');
}
const { type, data, id } = event.data;
switch (type) {
case "commit":
try {
if (data.match(/\bresolve\((.*?)\)/)) {
const string = `return new Promise(function(resolve){
${data}
})`;
const result = await new Function(string)();
ArtplayerPluginIframe.postMessage({ type: "response", data: result, id });
} else {
const result = new Function(data)();
ArtplayerPluginIframe.postMessage({ type: "response", data: result, id });
}
} catch (error) {
ArtplayerPluginIframe.postMessage({ type: "error", data: error.message, id });
throw error;
}
break;
}
}
static inject() {
if (!ArtplayerPluginIframe.iframe) throw new Error('The "ArtplayerPluginIframe.inject" method can only be used in iframe');
ArtplayerPluginIframe.postMessage({
type: "inject"
});
window.addEventListener("message", ArtplayerPluginIframe.onMessage);
if (!ArtplayerPluginIframe.iframe) {
throw new Error('The "ArtplayerPluginIframe.inject" method can only be used in iframe');
}
ArtplayerPluginIframe.postMessage({ type: "inject" });
window.addEventListener("message", ArtplayerPluginIframe.onMessage);
}
constructor({ iframe , url }){
if (iframe instanceof HTMLIFrameElement === false) throw new Error('"option.iframe" needs to be a HTMLIFrameElement');
if (typeof url !== "string") throw new Error('"option.url" needs to be a string');
this.url = url;
this.$iframe = iframe;
this.promises = {};
this.injected = false;
this.destroyed = false;
this.messageCallback = ()=>null;
this.onMessage = this.onMessage.bind(this);
window.addEventListener("message", this.onMessage);
this.$iframe.src = this.url;
constructor({ iframe, url }) {
if (iframe instanceof HTMLIFrameElement === false) {
throw new TypeError('"option.iframe" needs to be a HTMLIFrameElement');
}
if (typeof url !== "string") {
throw new TypeError('"option.url" needs to be a string');
}
this.url = url;
this.$iframe = iframe;
this.promises = {};
this.injected = false;
this.destroyed = false;
this.messageCallback = () => null;
this.onMessage = this.onMessage.bind(this);
window.addEventListener("message", this.onMessage);
this.$iframe.src = this.url;
}
onMessage(event) {
const { type , data , id } = event.data;
switch(type){
case "inject":
this.injected = true;
break;
default:
break;
const { type, data, id } = event.data;
switch (type) {
case "inject":
this.injected = true;
break;
}
if (this.promises[id]) {
if (type === "error") {
this.promises[id].reject(new Error(data));
} else {
this.promises[id].resove(data);
}
if (this.promises[id]) {
if (type === "error") this.promises[id].reject(new Error(data));
else this.promises[id].resove(data);
delete this.promises[id];
}
if (this.messageCallback) this.messageCallback({
type,
data
});
delete this.promises[id];
}
if (this.messageCallback) {
this.messageCallback({ type, data });
}
}
postMessage({ type , data }) {
return new Promise((resove, reject)=>{
(function loop() {
if (this.destroyed) reject(new Error("The instance has been destroyed"));
else if (this.injected) {
const id = Date.now();
this.promises[id] = {
resove,
reject
};
this.$iframe.contentWindow.postMessage({
type: type,
data: data,
id: id
}, "*");
} else setTimeout(loop.bind(this), 200);
}).call(this);
});
postMessage({ type, data }) {
return new Promise((resove, reject) => {
(function loop() {
if (this.destroyed) {
reject(new Error("The instance has been destroyed"));
} else {
if (this.injected) {
const id = Date.now();
this.promises[id] = { resove, reject };
this.$iframe.contentWindow.postMessage(
{
type,
data,
id
},
"*"
);
} else {
setTimeout(loop.bind(this), 200);
}
}
}).call(this);
});
}
commit(callback) {
if (typeof callback !== "function") throw new Error('"commit.callback" needs to be a function');
const callbackString = callback.toString();
const bodyString = callbackString.substring(callbackString.indexOf("{") + 1, callbackString.lastIndexOf("}"));
return this.postMessage({
type: "commit",
data: bodyString
});
if (typeof callback !== "function") {
throw new TypeError('"commit.callback" needs to be a function');
}
const callbackString = callback.toString();
const bodyString = callbackString.substring(callbackString.indexOf("{") + 1, callbackString.lastIndexOf("}"));
return this.postMessage({ type: "commit", data: bodyString });
}
message(callback) {
if (typeof callback !== "function") throw new Error('"message.callback" needs to be a function');
this.messageCallback = callback;
if (typeof callback !== "function") {
throw new TypeError('"message.callback" needs to be a function');
}
this.messageCallback = callback;
}
destroy() {
this.destroyed = true;
window.removeEventListener("message", this.onMessage);
this.destroyed = true;
window.removeEventListener("message", this.onMessage);
}
}
exports.default = ArtplayerPluginIframe;
if (typeof window !== "undefined") window["ArtplayerPluginIframe"] = ArtplayerPluginIframe;
},{"@parcel/transformer-js/src/esmodule-helpers.js":"5dUr6"}],"5dUr6":[function(require,module,exports) {
exports.interopDefault = function(a) {
return a && a.__esModule ? a : {
default: a
};
};
exports.defineInteropFlag = function(a) {
Object.defineProperty(a, "__esModule", {
value: true
});
};
exports.exportAll = function(source, dest) {
Object.keys(source).forEach(function(key) {
if (key === "default" || key === "__esModule" || dest.hasOwnProperty(key)) return;
Object.defineProperty(dest, key, {
enumerable: true,
get: function() {
return source[key];
}
});
});
return dest;
};
exports.export = function(dest, destName, get) {
Object.defineProperty(dest, destName, {
enumerable: true,
get: get
});
};
},{}]},["2DXkq"], "2DXkq", "parcelRequire4dc0")
//# sourceMappingURL=index.js.map
}
return ArtplayerPluginIframe;
})();
@@ -1 +0,0 @@
{"mappings":"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 truncated
File diff suppressed because it is too large. Load diff
@@ -1 +0,0 @@
{"mappings":"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 truncated
File diff suppressed because it is too large. Load diff
@@ -1 +0,0 @@
{"mappings":"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 truncated
@@ -1,288 +1,119 @@
// modules are defined as an array
// [ module function, map of requires ]
//
// map of requires is short require name -> numeric require
//
// anything defined in a previous bundle is accessed via the
// orig method which is the require for previous bundles
(function (modules, entry, mainEntry, parcelRequireName, globalName) {
/* eslint-disable no-undef */
var globalObject =
typeof globalThis !== 'undefined'
? globalThis
: typeof self !== 'undefined'
? self
: typeof window !== 'undefined'
? window
: typeof global !== 'undefined'
? global
: {};
/* eslint-enable no-undef */
// Save the require from previous bundle to this closure if any
var previousRequire =
typeof globalObject[parcelRequireName] === 'function' &&
globalObject[parcelRequireName];
var cache = previousRequire.cache || {};
// Do not use `require` to prevent Webpack from trying to bundle this call
var nodeRequire =
typeof module !== 'undefined' &&
typeof module.require === 'function' &&
module.require.bind(module);
function newRequire(name, jumped) {
if (!cache[name]) {
if (!modules[name]) {
// if we cannot find the module within our internal map or
// cache jump to the current global require ie. the last bundle
// that was added to the page.
var currentRequire =
typeof globalObject[parcelRequireName] === 'function' &&
globalObject[parcelRequireName];
if (!jumped && currentRequire) {
return currentRequire(name, true);
}
// If there are other bundles on this page the require from the
// previous one is saved to 'previousRequire'. Repeat this as
// many times as there are bundles until the module is found or
// we exhaust the require chain.
if (previousRequire) {
return previousRequire(name, true);
}
// Try the node require function if it exists.
if (nodeRequire && typeof name === 'string') {
return nodeRequire(name);
}
var err = new Error("Cannot find module '" + name + "'");
err.code = 'MODULE_NOT_FOUND';
throw err;
var artplayerPluginVttThumbnail = (function() {
"use strict";
function padEnd(str, targetLength, padString) {
if (str.length > targetLength) {
return String(str);
} else {
targetLength = targetLength - str.length;
if (targetLength > padString.length) {
padString += padString.repeat(targetLength / padString.length);
}
localRequire.resolve = resolve;
localRequire.cache = {};
var module = (cache[name] = new newRequire.Module(name));
modules[name][0].call(
module.exports,
localRequire,
module,
module.exports,
this
);
}
return cache[name].exports;
function localRequire(x) {
var res = localRequire.resolve(x);
return res === false ? {} : newRequire(res);
}
function resolve(x) {
var id = modules[name][1][x];
return id != null ? id : x;
return String(str) + padString.slice(0, targetLength);
}
}
function Module(moduleName) {
this.id = moduleName;
this.bundle = newRequire;
this.exports = {};
}
newRequire.isParcelRequire = true;
newRequire.Module = Module;
newRequire.modules = modules;
newRequire.cache = cache;
newRequire.parent = previousRequire;
newRequire.register = function (id, exports) {
modules[id] = [
function (require, module) {
module.exports = exports;
},
{},
];
};
Object.defineProperty(newRequire, 'root', {
get: function () {
return globalObject[parcelRequireName];
},
});
globalObject[parcelRequireName] = newRequire;
for (var i = 0; i < entry.length; i++) {
newRequire(entry[i]);
}
if (mainEntry) {
// Expose entry point to Node, AMD or browser globals
// Based on https://github.com/ForbesLindesay/umd/blob/master/template.js
var mainExports = newRequire(mainEntry);
// CommonJS
if (typeof exports === 'object' && typeof module !== 'undefined') {
module.exports = mainExports;
// RequireJS
} else if (typeof define === 'function' && define.amd) {
define(function () {
return mainExports;
});
// <script>
} else if (globalName) {
this[globalName] = mainExports;
}
}
})({"1gq8W":[function(require,module,exports) {
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
parcelHelpers.defineInteropFlag(exports);
parcelHelpers.export(exports, "default", ()=>artplayerPluginVttThumbnail);
var _getVttArray = require("./getVttArray");
var _getVttArrayDefault = parcelHelpers.interopDefault(_getVttArray);
function artplayerPluginVttThumbnail(option) {
return async (art)=>{
const { constructor: { utils: { setStyle, isMobile, addClass } }, template: { $progress } } = art;
let timer = null;
const thumbnails = await (0, _getVttArrayDefault.default)(option.vtt);
function showThumbnails($control, find, width) {
setStyle($control, "backgroundImage", `url(${find.url})`);
setStyle($control, "height", `${find.h}px`);
setStyle($control, "width", `${find.w}px`);
setStyle($control, "backgroundPosition", `-${find.x}px -${find.y}px`);
if (width <= find.w / 2) setStyle($control, "left", 0);
else if (width > $progress.clientWidth - find.w / 2) setStyle($control, "left", `${$progress.clientWidth - find.w}px`);
else setStyle($control, "left", `${width - find.w / 2}px`);
}
art.controls.add({
name: "vtt-thumbnail",
position: "top",
index: 20,
style: option.style || {},
mounted ($control) {
addClass($control, "art-control-thumbnails");
art.on("setBar", async (type, percentage, event)=>{
const isMobileDroging = type === "played" && event && isMobile;
if (type === "hover" || isMobileDroging) {
const width = $progress.clientWidth * percentage;
const second = percentage * art.duration;
setStyle($control, "display", "flex");
const find = thumbnails.find((item)=>second >= item.start && second <= item.end);
if (!find) return setStyle($control, "display", "none");
if (width > 0 && width < $progress.clientWidth) showThumbnails($control, find, width);
else if (!isMobile) setStyle($control, "display", "none");
if (isMobileDroging) {
clearTimeout(timer);
timer = setTimeout(()=>{
setStyle($control, "display", "none");
}, 500);
}
}
});
}
});
return {
name: "artplayerPluginVttThumbnail"
};
};
}
if (typeof window !== "undefined") window["artplayerPluginVttThumbnail"] = artplayerPluginVttThumbnail;
},{"./getVttArray":"gSM1I","@parcel/transformer-js/src/esmodule-helpers.js":"5dUr6"}],"gSM1I":[function(require,module,exports) {
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
parcelHelpers.defineInteropFlag(exports);
parcelHelpers.export(exports, "default", ()=>getVttArray);
function padEnd(str, targetLength, padString) {
if (str.length > targetLength) return String(str);
else {
targetLength = targetLength - str.length;
if (targetLength > padString.length) padString += padString.repeat(targetLength / padString.length);
return String(str) + padString.slice(0, targetLength);
}
}
function t2d(time) {
var arr = time.split(".");
var left = arr[0].split(":") || [];
var right = padEnd(arr[1] || "0", 3, "0");
var ms = Number(right) / 1000;
var h = Number(left[left.length - 3] || 0) * 3600;
var m = Number(left[left.length - 2] || 0) * 60;
var s = Number(left[left.length - 1] || 0);
function t2d(time) {
const arr = time.split(".");
const left = arr[0].split(":") || [];
const right = padEnd(arr[1] || "0", 3, "0");
const ms = Number(right) / 1e3;
const h = Number(left[left.length - 3] || 0) * 3600;
const m = Number(left[left.length - 2] || 0) * 60;
const s = Number(left[left.length - 1] || 0);
return h + m + s + ms;
}
async function getVttArray(vttUrl = "") {
}
async function getVttArray(vttUrl = "") {
const vttString = await (await fetch(vttUrl)).text();
const lines = vttString.split(/[\n\r]/gm).filter((item)=>item.trim());
const lines = vttString.split(/[\n\r]/g).filter((item) => item.trim());
const vttArray = [];
for(let i = 1; i < lines.length; i += 2){
const time = lines[i];
const text = lines[i + 1];
if (!text.trim()) continue;
const timeReg = /((?:[0-9]{2}:)?(?:[0-9]{2}:)?[0-9]{2}(?:.[0-9]{3})?)(?: ?--> ?)((?:[0-9]{2}:)?(?:[0-9]{2}:)?[0-9]{2}(?:.[0-9]{3})?)/;
const timeMatch = time.match(timeReg);
const textReg = /(.*)#(\w{4})=(.*)/i;
const textMatch = text.match(textReg);
const start = Math.floor(t2d(timeMatch[1]));
const end = Math.floor(t2d(timeMatch[2]));
let url = textMatch[1];
const isAbsoluteUrl = /^\/|((https?|ftp|file):\/\/)/i.test(url);
if (!isAbsoluteUrl) {
const urlArr = vttUrl.split("/");
urlArr.pop();
urlArr.push(url);
url = urlArr.join("/");
}
const result = {
start,
end,
url
};
const keys = textMatch[2].split("");
const values = textMatch[3].split(",");
for(let j = 0; j < keys.length; j++)result[keys[j]] = values[j];
vttArray.push(result);
for (let i = 1; i < lines.length; i += 2) {
const time = lines[i];
const text = lines[i + 1];
if (!text.trim())
continue;
const timeReg = /((?:\d{2}:)?(?:\d{2}:)?\d{2}(?:.\d{3})?) ?--> ?((?:\d{2}:)?(?:\d{2}:)?\d{2}(?:.\d{3})?)/;
const timeMatch = time.match(timeReg);
const textReg = /(.*)#(\w{4})=(.*)/;
const textMatch = text.match(textReg);
const start = Math.floor(t2d(timeMatch[1]));
const end = Math.floor(t2d(timeMatch[2]));
let url = textMatch[1];
const isAbsoluteUrl = /^\/|(?:https?|ftp|file):\/\//i.test(url);
if (!isAbsoluteUrl) {
const urlArr = vttUrl.split("/");
urlArr.pop();
urlArr.push(url);
url = urlArr.join("/");
}
const result = { start, end, url };
const keys = textMatch[2].split("");
const values = textMatch[3].split(",");
for (let j = 0; j < keys.length; j++) {
result[keys[j]] = values[j];
}
vttArray.push(result);
}
return vttArray;
}
},{"@parcel/transformer-js/src/esmodule-helpers.js":"5dUr6"}],"5dUr6":[function(require,module,exports) {
exports.interopDefault = function(a) {
return a && a.__esModule ? a : {
default: a
};
};
exports.defineInteropFlag = function(a) {
Object.defineProperty(a, "__esModule", {
value: true
});
};
exports.exportAll = function(source, dest) {
Object.keys(source).forEach(function(key) {
if (key === "default" || key === "__esModule" || Object.prototype.hasOwnProperty.call(dest, key)) return;
Object.defineProperty(dest, key, {
enumerable: true,
get: function() {
return source[key];
}
function artplayerPluginVttThumbnail2(option) {
return async (art) => {
const {
constructor: {
utils: { setStyle, isMobile, addClass }
},
template: { $progress }
} = art;
let timer = null;
const thumbnails = await getVttArray(option.vtt);
function showThumbnails($control, find, width) {
setStyle($control, "backgroundImage", `url(${find.url})`);
setStyle($control, "height", `${find.h}px`);
setStyle($control, "width", `${find.w}px`);
setStyle($control, "backgroundPosition", `-${find.x}px -${find.y}px`);
if (width <= find.w / 2) {
setStyle($control, "left", 0);
} else if (width > $progress.clientWidth - find.w / 2) {
setStyle($control, "left", `${$progress.clientWidth - find.w}px`);
} else {
setStyle($control, "left", `${width - find.w / 2}px`);
}
}
art.controls.add({
name: "vtt-thumbnail",
position: "top",
index: 20,
style: option.style || {},
mounted($control) {
addClass($control, "art-control-thumbnails");
art.on("setBar", async (type, percentage, event) => {
const isMobileDroging = type === "played" && event && isMobile;
if (type === "hover" || isMobileDroging) {
const width = $progress.clientWidth * percentage;
const second = percentage * art.duration;
setStyle($control, "display", "flex");
const find = thumbnails.find((item) => second >= item.start && second <= item.end);
if (!find)
return setStyle($control, "display", "none");
if (width > 0 && width < $progress.clientWidth) {
showThumbnails($control, find, width);
} else {
if (!isMobile) {
setStyle($control, "display", "none");
}
}
if (isMobileDroging) {
clearTimeout(timer);
timer = setTimeout(() => {
setStyle($control, "display", "none");
}, 500);
}
}
});
});
return dest;
};
exports.export = function(dest, destName, get) {
Object.defineProperty(dest, destName, {
enumerable: true,
get: get
});
};
},{}]},["1gq8W"], "1gq8W", "parcelRequire4dc0")
//# sourceMappingURL=index.js.map
});
}
});
return {
name: "artplayerPluginVttThumbnail"
};
};
}
return artplayerPluginVttThumbnail2;
})();
@@ -1 +0,0 @@
{"mappings":"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","sources":["packages/artplayer-plugin-vtt-thumbnail/src/index.js","packages/artplayer-plugin-vtt-thumbnail/src/getVttArray.js","node_modules/@parcel/transformer-js/src/esmodule-helpers.js"],"sourcesContent":["import getVttArray from './getVttArray';\n\nexport default function artplayerPluginVttThumbnail(option) {\n return async (art) => {\n const {\n constructor: {\n utils: { setStyle, isMobile, addClass },\n },\n template: { $progress },\n } = art;\n\n let timer = null;\n const thumbnails = await getVttArray(option.vtt);\n\n function showThumbnails($control, find, width) {\n setStyle($control, 'backgroundImage', `url(${find.url})`);\n setStyle($control, 'height', `${find.h}px`);\n setStyle($control, 'width', `${find.w}px`);\n setStyle($control, 'backgroundPosition', `-${find.x}px -${find.y}px`);\n if (width <= find.w / 2) {\n setStyle($control, 'left', 0);\n } else if (width > $progress.clientWidth - find.w / 2) {\n setStyle($control, 'left', `${$progress.clientWidth - find.w}pxLine truncated
File diff suppressed because it is too large. Load diff
@@ -1 +0,0 @@
{"mappings":"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 truncated
+110 -274
View File
@@ -1,283 +1,119 @@
// modules are defined as an array
// [ module function, map of requires ]
//
// map of requires is short require name -> numeric require
//
// anything defined in a previous bundle is accessed via the
// orig method which is the require for previous bundles
(function (modules, entry, mainEntry, parcelRequireName, globalName) {
/* eslint-disable no-undef */
var globalObject =
typeof globalThis !== 'undefined'
? globalThis
: typeof self !== 'undefined'
? self
: typeof window !== 'undefined'
? window
: typeof global !== 'undefined'
? global
: {};
/* eslint-enable no-undef */
// Save the require from previous bundle to this closure if any
var previousRequire =
typeof globalObject[parcelRequireName] === 'function' &&
globalObject[parcelRequireName];
var cache = previousRequire.cache || {};
// Do not use `require` to prevent Webpack from trying to bundle this call
var nodeRequire =
typeof module !== 'undefined' &&
typeof module.require === 'function' &&
module.require.bind(module);
function newRequire(name, jumped) {
if (!cache[name]) {
if (!modules[name]) {
// if we cannot find the module within our internal map or
// cache jump to the current global require ie. the last bundle
// that was added to the page.
var currentRequire =
typeof globalObject[parcelRequireName] === 'function' &&
globalObject[parcelRequireName];
if (!jumped && currentRequire) {
return currentRequire(name, true);
var artplayerProxyCanvas = (function() {
"use strict";
function artplayerProxyCanvas2(callback) {
return (art) => {
const { constructor } = art;
const { createElement } = constructor.utils;
const canvas = createElement("canvas");
const video = createElement("video");
const ctx = canvas.getContext("2d");
let animationId = null;
const originalCanvasMethods = {};
for (const prop in canvas) {
if (typeof canvas[prop] === "function") {
originalCanvasMethods[prop] = canvas[prop].bind(canvas);
}
// If there are other bundles on this page the require from the
// previous one is saved to 'previousRequire'. Repeat this as
// many times as there are bundles until the module is found or
// we exhaust the require chain.
if (previousRequire) {
return previousRequire(name, true);
}
// Try the node require function if it exists.
if (nodeRequire && typeof name === 'string') {
return nodeRequire(name);
}
var err = new Error("Cannot find module '" + name + "'");
err.code = 'MODULE_NOT_FOUND';
throw err;
}
localRequire.resolve = resolve;
localRequire.cache = {};
var module = (cache[name] = new newRequire.Module(name));
modules[name][0].call(
module.exports,
localRequire,
module,
module.exports,
this
);
}
return cache[name].exports;
function localRequire(x) {
var res = localRequire.resolve(x);
return res === false ? {} : newRequire(res);
}
function resolve(x) {
var id = modules[name][1][x];
return id != null ? id : x;
}
}
function Module(moduleName) {
this.id = moduleName;
this.bundle = newRequire;
this.exports = {};
}
newRequire.isParcelRequire = true;
newRequire.Module = Module;
newRequire.modules = modules;
newRequire.cache = cache;
newRequire.parent = previousRequire;
newRequire.register = function (id, exports) {
modules[id] = [
function (require, module) {
module.exports = exports;
},
{},
];
};
Object.defineProperty(newRequire, 'root', {
get: function () {
return globalObject[parcelRequireName];
},
});
globalObject[parcelRequireName] = newRequire;
for (var i = 0; i < entry.length; i++) {
newRequire(entry[i]);
}
if (mainEntry) {
// Expose entry point to Node, AMD or browser globals
// Based on https://github.com/ForbesLindesay/umd/blob/master/template.js
var mainExports = newRequire(mainEntry);
// CommonJS
if (typeof exports === 'object' && typeof module !== 'undefined') {
module.exports = mainExports;
// RequireJS
} else if (typeof define === 'function' && define.amd) {
define(function () {
return mainExports;
});
// <script>
} else if (globalName) {
this[globalName] = mainExports;
}
}
})({"bBRui":[function(require,module,exports) {
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
parcelHelpers.defineInteropFlag(exports);
parcelHelpers.export(exports, "default", ()=>artplayerProxyCanvas);
function artplayerProxyCanvas(callback) {
return (art)=>{
const { constructor } = art;
const { createElement } = constructor.utils;
const canvas = createElement("canvas");
const video = createElement("video");
const ctx = canvas.getContext("2d");
let animationId = null;
const originalCanvasMethods = {};
for(const prop in canvas)if (typeof canvas[prop] === "function") originalCanvasMethods[prop] = canvas[prop].bind(canvas);
for(const prop in video)if (!(prop in canvas)) Object.defineProperty(canvas, prop, {
get () {
const value = video[prop];
return typeof value === "function" ? value.bind(video) : value;
for (const prop in video) {
if (!(prop in canvas)) {
Object.defineProperty(canvas, prop, {
get() {
const value = video[prop];
return typeof value === "function" ? value.bind(video) : value;
},
set (value) {
video[prop] = value;
set(value) {
video[prop] = value;
},
configurable: true,
enumerable: true
});
for(const prop in originalCanvasMethods)canvas[prop] = function(...args) {
if (prop in originalCanvasMethods) return originalCanvasMethods[prop](...args);
return video[prop].apply(video, args);
});
}
}
for (const prop in originalCanvasMethods) {
canvas[prop] = function(...args) {
if (prop in originalCanvasMethods) {
return originalCanvasMethods[prop](...args);
}
return video[prop](...args);
};
setupEventListeners();
setupArtPlayerEvents();
return canvas;
function setupEventListeners() {
const { events } = constructor.config;
setTimeout(()=>{
events.forEach((event)=>{
art.proxy(video, event, (event)=>{
art.emit(`video:${event.type}`, event);
});
});
}
setupEventListeners();
setupArtPlayerEvents();
return canvas;
function setupEventListeners() {
const { events } = constructor.config;
setTimeout(() => {
events.forEach((event) => {
art.proxy(video, event, (event2) => {
art.emit(`video:${event2.type}`, event2);
});
}
async function draw() {
try {
if (typeof createImageBitmap !== "undefined") {
const bitmap = await createImageBitmap(video);
ctx.drawImage(bitmap, 0, 0, canvas.width, canvas.height);
bitmap.close();
} else ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
callback && callback(ctx, video);
art.emit("artplayerProxyCanvas:draw", ctx, video);
} catch (error) {
art.emit("artplayerProxyCanvas:error", error);
}
}
async function animation() {
await draw();
animationId = requestAnimationFrame(animation);
}
function resize() {
const player = art.template?.$player;
if (!player || art.option.autoSize) return;
const aspectRatio = video.videoWidth / video.videoHeight;
const containerWidth = player.clientWidth;
const containerHeight = player.clientHeight;
const containerRatio = containerWidth / containerHeight;
let canvasWidth, canvasHeight;
if (containerRatio > aspectRatio) {
canvasHeight = containerHeight;
canvasWidth = canvasHeight * aspectRatio;
} else {
canvasWidth = containerWidth;
canvasHeight = canvasWidth / aspectRatio;
}
canvas.width = canvasWidth;
canvas.height = canvasHeight;
const paddingLeft = (containerWidth - canvasWidth) / 2;
const paddingTop = (containerHeight - canvasHeight) / 2;
Object.assign(canvas.style, {
padding: `${paddingTop}px ${paddingLeft}px`
});
}
function setupArtPlayerEvents() {
art.on("video:loadedmetadata", ()=>{
canvas.width = video.videoWidth;
canvas.height = video.videoHeight;
});
art.on("video:play", ()=>{
cancelAnimationFrame(animationId);
animation();
});
art.on("video:pause", ()=>{
cancelAnimationFrame(animationId);
});
art.on("resize", ()=>{
resize();
draw();
});
art.on("destroy", ()=>{
cancelAnimationFrame(animationId);
});
}
};
}
if (typeof window !== "undefined") window["artplayerProxyCanvas"] = artplayerProxyCanvas;
},{"@parcel/transformer-js/src/esmodule-helpers.js":"kBreb"}],"kBreb":[function(require,module,exports) {
exports.interopDefault = function(a) {
return a && a.__esModule ? a : {
default: a
};
};
exports.defineInteropFlag = function(a) {
Object.defineProperty(a, "__esModule", {
value: true
});
};
exports.exportAll = function(source, dest) {
Object.keys(source).forEach(function(key) {
if (key === "default" || key === "__esModule" || Object.prototype.hasOwnProperty.call(dest, key)) return;
Object.defineProperty(dest, key, {
enumerable: true,
get: function() {
return source[key];
}
});
});
});
return dest;
};
exports.export = function(dest, destName, get) {
Object.defineProperty(dest, destName, {
enumerable: true,
get: get
});
};
},{}]},["bBRui"], "bBRui", "parcelRequire94c2")
//# sourceMappingURL=index.js.map
}
async function draw() {
try {
if (typeof createImageBitmap !== "undefined") {
const bitmap = await createImageBitmap(video);
ctx.drawImage(bitmap, 0, 0, canvas.width, canvas.height);
bitmap.close();
} else {
ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
}
callback && callback(ctx, video);
art.emit("artplayerProxyCanvas:draw", ctx, video);
} catch (error) {
art.emit("artplayerProxyCanvas:error", error);
}
}
async function animation() {
await draw();
animationId = requestAnimationFrame(animation);
}
function resize() {
const player = art.template?.$player;
if (!player || art.option.autoSize)
return;
const aspectRatio = video.videoWidth / video.videoHeight;
const containerWidth = player.clientWidth;
const containerHeight = player.clientHeight;
const containerRatio = containerWidth / containerHeight;
let canvasWidth, canvasHeight;
if (containerRatio > aspectRatio) {
canvasHeight = containerHeight;
canvasWidth = canvasHeight * aspectRatio;
} else {
canvasWidth = containerWidth;
canvasHeight = canvasWidth / aspectRatio;
}
canvas.width = canvasWidth;
canvas.height = canvasHeight;
const paddingLeft = (containerWidth - canvasWidth) / 2;
const paddingTop = (containerHeight - canvasHeight) / 2;
Object.assign(canvas.style, {
padding: `${paddingTop}px ${paddingLeft}px`
});
}
function setupArtPlayerEvents() {
art.on("video:loadedmetadata", () => {
canvas.width = video.videoWidth;
canvas.height = video.videoHeight;
});
art.on("video:play", () => {
cancelAnimationFrame(animationId);
animation();
});
art.on("video:pause", () => {
cancelAnimationFrame(animationId);
});
art.on("resize", () => {
resize();
draw();
});
art.on("destroy", () => {
cancelAnimationFrame(animationId);
});
}
};
}
return artplayerProxyCanvas2;
})();
@@ -1 +0,0 @@
{"mappings":"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","sources":["Desktop/github/ArtPlayer/packages/artplayer-proxy-canvas/src/index.js","Desktop/github/ArtPlayer/node_modules/@parcel/transformer-js/src/esmodule-helpers.js"],"sourcesContent":["export default function artplayerProxyCanvas(callback) {\n return (art) => {\n const { constructor } = art;\n const { createElement } = constructor.utils;\n\n const canvas = createElement('canvas');\n const video = createElement('video');\n const ctx = canvas.getContext('2d');\n\n let animationId = null;\n\n const originalCanvasMethods = {};\n for (const prop in canvas) {\n if (typeof canvas[prop] === 'function') {\n originalCanvasMethods[prop] = canvas[prop].bind(canvas);\n }\n }\n\n for (const prop in video) {\n if (!(prop in canvas)) {\n Object.defineProperty(canvas, prop, {\n get() {\n const value = video[prop];\n return typeof value === 'function' ? value.bind(video) : value;\n },\n set(value) {\n video[prop] = value;\n },\n configurable: true,\n enumerable: true,\n });\n }\n }\n\n for (const prop in originalCanvasMethods) {\n canvas[prop] = function (...args) {\n if (prop in originalCanvasMethods) {\n return originalCanvasMethods[prop](...args);\n }\n return video[prop].apply(video, args);\n };\n }\n\n setupEventListeners();\n setupArtPlayerEvents();\n\n return canvas;\n\n function setupEventListeners() {\n const { events } = constructor.config;\n setTimeout(() => {\n events.forEach((event) => {\n art.proxy(video, event, (event) => {\n art.emit(`videLine truncated
File diff suppressed because it is too large. Load diff
@@ -1 +0,0 @@
{"mappings":"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 truncated
+248 -494
View File
@@ -1,505 +1,259 @@
// modules are defined as an array
// [ module function, map of requires ]
//
// map of requires is short require name -> numeric require
//
// anything defined in a previous bundle is accessed via the
// orig method which is the require for previous bundles
(function (
modules,
entry,
mainEntry,
parcelRequireName,
externals,
distDir,
publicUrl,
devServer
) {
/* eslint-disable no-undef */
var globalObject =
typeof globalThis !== 'undefined'
? globalThis
: typeof self !== 'undefined'
? self
: typeof window !== 'undefined'
? window
: typeof global !== 'undefined'
? global
: {};
/* eslint-enable no-undef */
// Save the require from previous bundle to this closure if any
var previousRequire =
typeof globalObject[parcelRequireName] === 'function' &&
globalObject[parcelRequireName];
var importMap = previousRequire.i || {};
var cache = previousRequire.cache || {};
// Do not use `require` to prevent Webpack from trying to bundle this call
var nodeRequire =
typeof module !== 'undefined' &&
typeof module.require === 'function' &&
module.require.bind(module);
function newRequire(name, jumped) {
if (!cache[name]) {
if (!modules[name]) {
if (externals[name]) {
return externals[name];
}
// if we cannot find the module within our internal map or
// cache jump to the current global require ie. the last bundle
// that was added to the page.
var currentRequire =
typeof globalObject[parcelRequireName] === 'function' &&
globalObject[parcelRequireName];
if (!jumped && currentRequire) {
return currentRequire(name, true);
}
// If there are other bundles on this page the require from the
// previous one is saved to 'previousRequire'. Repeat this as
// many times as there are bundles until the module is found or
// we exhaust the require chain.
if (previousRequire) {
return previousRequire(name, true);
}
// Try the node require function if it exists.
if (nodeRequire && typeof name === 'string') {
return nodeRequire(name);
}
var err = new Error("Cannot find module '" + name + "'");
err.code = 'MODULE_NOT_FOUND';
throw err;
}
localRequire.resolve = resolve;
localRequire.cache = {};
var module = (cache[name] = new newRequire.Module(name));
modules[name][0].call(
module.exports,
localRequire,
module,
module.exports,
globalObject
);
}
return cache[name].exports;
function localRequire(x) {
var res = localRequire.resolve(x);
if (res === false) {
return {};
}
// Synthesize a module to follow re-exports.
if (Array.isArray(res)) {
var m = {__esModule: true};
res.forEach(function (v) {
var key = v[0];
var id = v[1];
var exp = v[2] || v[0];
var x = newRequire(id);
if (key === '*') {
Object.keys(x).forEach(function (key) {
if (
key === 'default' ||
key === '__esModule' ||
Object.prototype.hasOwnProperty.call(m, key)
) {
return;
}
Object.defineProperty(m, key, {
enumerable: true,
get: function () {
return x[key];
},
});
});
} else if (exp === '*') {
Object.defineProperty(m, key, {
enumerable: true,
value: x,
});
} else {
Object.defineProperty(m, key, {
enumerable: true,
get: function () {
if (exp === 'default') {
return x.__esModule ? x.default : x;
}
return x[exp];
},
});
}
});
return m;
}
return newRequire(res);
}
function resolve(x) {
var id = modules[name][1][x];
return id != null ? id : x;
}
}
function Module(moduleName) {
this.id = moduleName;
this.bundle = newRequire;
this.require = nodeRequire;
this.exports = {};
}
newRequire.isParcelRequire = true;
newRequire.Module = Module;
newRequire.modules = modules;
newRequire.cache = cache;
newRequire.parent = previousRequire;
newRequire.distDir = distDir;
newRequire.publicUrl = publicUrl;
newRequire.devServer = devServer;
newRequire.i = importMap;
newRequire.register = function (id, exports) {
modules[id] = [
function (require, module) {
module.exports = exports;
},
{},
];
};
// Only insert newRequire.load when it is actually used.
// The code in this file is linted against ES5, so dynamic import is not allowed.
// INSERT_LOAD_HERE
Object.defineProperty(newRequire, 'root', {
get: function () {
return globalObject[parcelRequireName];
},
});
globalObject[parcelRequireName] = newRequire;
for (var i = 0; i < entry.length; i++) {
newRequire(entry[i]);
}
if (mainEntry) {
// Expose entry point to Node, AMD or browser globals
// Based on https://github.com/ForbesLindesay/umd/blob/master/template.js
var mainExports = newRequire(mainEntry);
// CommonJS
if (typeof exports === 'object' && typeof module !== 'undefined') {
module.exports = mainExports;
// RequireJS
} else if (typeof define === 'function' && define.amd) {
define(function () {
return mainExports;
});
}
}
})({"e0Gq7":[function(require,module,exports,__globalThis) {
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
parcelHelpers.defineInteropFlag(exports);
var _emitter = require("./emitter");
var _emitterDefault = parcelHelpers.interopDefault(_emitter);
var _utils = require("./utils");
class ArtplayerToolThumbnail extends (0, _emitterDefault.default) {
constructor(option = {}){
super();
this.processing = false;
this.option = {};
this.setup(Object.assign({}, ArtplayerToolThumbnail.DEFAULTS, option));
this.video = ArtplayerToolThumbnail.creatVideo();
this.duration = 0;
this.inputChange = this.inputChange.bind(this);
this.ondrop = this.ondrop.bind(this);
this.option.fileInput.addEventListener('change', this.inputChange);
this.option.fileInput.addEventListener('dragover', ArtplayerToolThumbnail.ondragover);
this.option.fileInput.addEventListener('drop', ArtplayerToolThumbnail.ondrop);
}
static get DEFAULTS() {
return {
number: 60,
width: 160,
height: 90,
column: 10,
begin: 0,
end: Number.NaN
};
}
static ondragover(event) {
event.preventDefault();
}
ondrop(event) {
event.preventDefault();
const file = event.dataTransfer.files[0];
this.loadVideo(file);
}
setup(option = {}) {
this.option = Object.assign({}, this.option, option);
const { fileInput, number, width, column } = this.option;
this.errorHandle(fileInput instanceof Element, 'The \'fileInput\' is not a Element');
if (!(fileInput.tagName === 'INPUT' && fileInput.type === 'file')) {
fileInput.style.position = 'relative';
const newFileInput = document.createElement('input');
newFileInput.type = 'file';
newFileInput.style.position = 'absolute';
newFileInput.style.width = '100%';
newFileInput.style.height = '100%';
newFileInput.style.left = '0';
newFileInput.style.top = '0';
newFileInput.style.right = '0';
newFileInput.style.bottom = '0';
newFileInput.style.opacity = '0';
fileInput.appendChild(newFileInput);
this.option.fileInput = newFileInput;
}
[
'number',
'width',
'column',
'begin',
'end'
].forEach((item)=>{
this.errorHandle(typeof this.option[item] === 'number', `The '${item}' is not a number`);
});
this.option.number = (0, _utils.clamp)(number, 10, 1000);
this.option.width = (0, _utils.clamp)(width, 10, 1000);
this.option.column = (0, _utils.clamp)(column, 1, 1000);
return this;
}
static creatVideo() {
const video = document.createElement('video');
video.style.position = 'absolute';
video.style.top = '-9999px';
video.style.left = '-9999px';
video.muted = true;
video.controls = true;
document.body.appendChild(video);
return video;
}
inputChange(event) {
const file = this.option.fileInput.files[0];
this.loadVideo(file);
event.target.value = '';
}
loadVideo(file) {
if (file) {
const canPlayType = this.video.canPlayType(file.type);
this.errorHandle(canPlayType === 'maybe' || canPlayType === 'probably', `Playback of this file format is not supported: ${file.type}`);
const videoUrl = URL.createObjectURL(file);
this.videoUrl = videoUrl;
this.file = file;
this.emit('file', this.file);
this.video.src = videoUrl;
this.emit('video', this.video);
}
}
start() {
if (!this.video.duration) return (0, _utils.sleep)(1000).then(()=>this.start());
const { width, number, begin, end } = this.option;
const height = this.video.videoHeight / this.video.videoWidth * width;
this.option.height = height;
this.option.begin = (0, _utils.clamp)(begin, 0, this.video.duration);
this.option.end = (0, _utils.clamp)(end || this.video.duration, begin, this.video.duration);
this.errorHandle(this.option.end > this.option.begin, `End time must be greater than the start time`);
this.duration = this.option.end - this.option.begin;
this.density = number / this.duration;
this.errorHandle(this.file && this.video, 'Please select the video file first');
this.errorHandle(!this.processing, 'There is currently a task in progress, please wait a moment...');
this.errorHandle(this.density <= 1, `The preview density cannot be greater than 1, but got ${this.density}`);
const screenshotDate = this.creatScreenshotDate();
const canvas = this.creatCanvas();
const context2D = canvas.getContext('2d');
this.emit('canvas', canvas);
const promiseList = screenshotDate.map((item, index)=>()=>{
return new Promise((resolve)=>{
this.video.oncanplay = ()=>{
context2D.drawImage(this.video, item.x, item.y, width, height);
canvas.toBlob((blob)=>{
if (this.thumbnailUrl) URL.revokeObjectURL(this.thumbnailUrl);
this.thumbnailUrl = URL.createObjectURL(blob);
this.emit('update', this.thumbnailUrl, (index + 1) / number);
this.video.oncanplay = null;
resolve();
});
};
this.video.currentTime = item.time;
});
});
this.processing = true;
return (0, _utils.runPromisesInSeries)(promiseList).then(()=>{
this.processing = false;
this.emit('done');
}).catch((err)=>{
this.processing = false;
this.emit('error', err.message);
throw err;
});
}
creatScreenshotDate() {
const { number, width, height, column, begin } = this.option;
const timeGap = this.duration / number;
const timePoints = [
begin + timeGap
];
while(timePoints.length < number){
const last = timePoints[timePoints.length - 1];
timePoints.push(last + timeGap);
}
return timePoints.map((item, index)=>({
time: item - timeGap / 2,
x: index % column * width,
y: Math.floor(index / column) * height
}));
}
creatCanvas() {
const { number, width, height, column } = this.option;
const canvas = document.createElement('canvas');
const context2D = canvas.getContext('2d');
canvas.width = width * column;
canvas.height = Math.ceil(number / column) * height + 30;
context2D.fillStyle = 'black';
context2D.fillRect(0, 0, canvas.width, canvas.height);
context2D.font = '14px Georgia';
context2D.fillStyle = '#fff';
context2D.fillText(`From: https://artplayer.org/, Number: ${number}, Width: ${width}, Height: ${height}, Column: ${column}`, 10, canvas.height - 11);
return canvas;
}
download() {
this.errorHandle(this.file && this.thumbnailUrl, 'Download does not seem to be ready, please create preview first');
this.errorHandle(!this.processing, 'There is currently a task in progress, please wait a moment...');
const elink = document.createElement('a');
const name = `${(0, _utils.getFileName)(this.file.name)}.png`;
elink.download = name;
elink.href = this.thumbnailUrl;
document.body.appendChild(elink);
elink.click();
document.body.removeChild(elink);
this.emit('download', name);
return this;
}
errorHandle(condition, msg) {
if (!condition) {
this.emit('error', msg);
throw new Error(msg);
}
}
destroy() {
this.option.fileInput.removeEventListener('change', this.inputChange);
this.option.fileInput.removeEventListener('dragover', ArtplayerToolThumbnail.ondragover);
this.option.fileInput.removeEventListener('drop', ArtplayerToolThumbnail.ondrop);
document.body.removeChild(this.video);
if (this.videoUrl) URL.revokeObjectURL(this.videoUrl);
if (this.thumbnailUrl) URL.revokeObjectURL(this.thumbnailUrl);
this.emit('destroy');
}
}
exports.default = ArtplayerToolThumbnail;
window.ArtplayerToolThumbnail = ArtplayerToolThumbnail;
},{"./emitter":"7Kk4W","./utils":"kMCcV","@parcel/transformer-js/src/esmodule-helpers.js":"8oCsH"}],"7Kk4W":[function(require,module,exports,__globalThis) {
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
parcelHelpers.defineInteropFlag(exports);
class Emitter {
var ArtplayerToolThumbnail = (function() {
"use strict";
class Emitter {
on(name, fn, ctx) {
const e = this.e || (this.e = {});
(e[name] || (e[name] = [])).push({
fn,
ctx
});
return this;
const e = this.e || (this.e = {});
(e[name] || (e[name] = [])).push({ fn, ctx });
return this;
}
once(name, fn, ctx) {
const self = this;
function listener(...args) {
self.off(name, listener);
fn.apply(ctx, args);
}
listener._ = fn;
return this.on(name, listener, ctx);
const self = this;
function listener(...args) {
self.off(name, listener);
fn.apply(ctx, args);
}
listener._ = fn;
return this.on(name, listener, ctx);
}
emit(name, ...data) {
const evtArr = ((this.e || (this.e = {}))[name] || []).slice();
for(let i = 0; i < evtArr.length; i += 1)evtArr[i].fn.apply(evtArr[i].ctx, data);
return this;
const evtArr = ((this.e || (this.e = {}))[name] || []).slice();
for (let i = 0; i < evtArr.length; i += 1) {
evtArr[i].fn.apply(evtArr[i].ctx, data);
}
return this;
}
off(name, callback) {
const e = this.e || (this.e = {});
const evts = e[name];
const liveEvents = [];
if (evts && callback) {
for(let i = 0, len = evts.length; i < len; i += 1)if (evts[i].fn !== callback && evts[i].fn._ !== callback) liveEvents.push(evts[i]);
const e = this.e || (this.e = {});
const evts = e[name];
const liveEvents = [];
if (evts && callback) {
for (let i = 0, len = evts.length; i < len; i += 1) {
if (evts[i].fn !== callback && evts[i].fn._ !== callback)
liveEvents.push(evts[i]);
}
if (liveEvents.length) e[name] = liveEvents;
else delete e[name];
return this;
}
if (liveEvents.length) {
e[name] = liveEvents;
} else {
delete e[name];
}
return this;
}
}
exports.default = Emitter;
},{"@parcel/transformer-js/src/esmodule-helpers.js":"8oCsH"}],"8oCsH":[function(require,module,exports,__globalThis) {
exports.interopDefault = function(a) {
return a && a.__esModule ? a : {
default: a
};
};
exports.defineInteropFlag = function(a) {
Object.defineProperty(a, '__esModule', {
value: true
});
};
exports.exportAll = function(source, dest) {
Object.keys(source).forEach(function(key) {
if (key === 'default' || key === '__esModule' || Object.prototype.hasOwnProperty.call(dest, key)) return;
Object.defineProperty(dest, key, {
enumerable: true,
get: function() {
return source[key];
}
});
});
return dest;
};
exports.export = function(dest, destName, get) {
Object.defineProperty(dest, destName, {
enumerable: true,
get: get
});
};
},{}],"kMCcV":[function(require,module,exports,__globalThis) {
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
parcelHelpers.defineInteropFlag(exports);
parcelHelpers.export(exports, "sleep", ()=>sleep);
parcelHelpers.export(exports, "runPromisesInSeries", ()=>runPromisesInSeries);
parcelHelpers.export(exports, "getFileName", ()=>getFileName);
parcelHelpers.export(exports, "clamp", ()=>clamp);
function sleep(ms) {
return new Promise((resolve)=>setTimeout(resolve, ms));
}
function runPromisesInSeries(ps) {
return ps.reduce((p, next)=>p.then(next), Promise.resolve());
}
function getFileName(name) {
const nameArray = name.split('.');
}
function sleep(ms) {
return new Promise((resolve) => setTimeout(resolve, ms));
}
function runPromisesInSeries(ps) {
return ps.reduce((p, next) => p.then(next), Promise.resolve());
}
function getFileName(name) {
const nameArray = name.split(".");
nameArray.pop();
return nameArray.join('.');
}
function clamp(num, a, b) {
return nameArray.join(".");
}
function clamp(num, a, b) {
return Math.max(Math.min(num, Math.max(a, b)), Math.min(a, b));
}
},{"@parcel/transformer-js/src/esmodule-helpers.js":"8oCsH"}]},["e0Gq7"], "e0Gq7", "parcelRequire4dc0", {})
//# sourceMappingURL=index.js.map
}
class ArtplayerToolThumbnail2 extends Emitter {
constructor(option = {}) {
super();
this.processing = false;
this.option = {};
this.setup(Object.assign({}, ArtplayerToolThumbnail2.DEFAULTS, option));
this.video = ArtplayerToolThumbnail2.creatVideo();
this.duration = 0;
this.inputChange = this.inputChange.bind(this);
this.ondrop = this.ondrop.bind(this);
this.option.fileInput.addEventListener("change", this.inputChange);
this.option.fileInput.addEventListener("dragover", ArtplayerToolThumbnail2.ondragover);
this.option.fileInput.addEventListener("drop", ArtplayerToolThumbnail2.ondrop);
}
static get DEFAULTS() {
return {
number: 60,
width: 160,
height: 90,
column: 10,
begin: 0,
end: Number.NaN
};
}
static ondragover(event) {
event.preventDefault();
}
ondrop(event) {
event.preventDefault();
const file = event.dataTransfer.files[0];
this.loadVideo(file);
}
setup(option = {}) {
this.option = Object.assign({}, this.option, option);
const { fileInput, number, width, column } = this.option;
this.errorHandle(fileInput instanceof Element, "The 'fileInput' is not a Element");
if (!(fileInput.tagName === "INPUT" && fileInput.type === "file")) {
fileInput.style.position = "relative";
const newFileInput = document.createElement("input");
newFileInput.type = "file";
newFileInput.style.position = "absolute";
newFileInput.style.width = "100%";
newFileInput.style.height = "100%";
newFileInput.style.left = "0";
newFileInput.style.top = "0";
newFileInput.style.right = "0";
newFileInput.style.bottom = "0";
newFileInput.style.opacity = "0";
fileInput.appendChild(newFileInput);
this.option.fileInput = newFileInput;
}
["number", "width", "column", "begin", "end"].forEach((item) => {
this.errorHandle(typeof this.option[item] === "number", `The '${item}' is not a number`);
});
this.option.number = clamp(number, 10, 1e3);
this.option.width = clamp(width, 10, 1e3);
this.option.column = clamp(column, 1, 1e3);
return this;
}
static creatVideo() {
const video = document.createElement("video");
video.style.position = "absolute";
video.style.top = "-9999px";
video.style.left = "-9999px";
video.muted = true;
video.controls = true;
document.body.appendChild(video);
return video;
}
inputChange(event) {
const file = this.option.fileInput.files[0];
this.loadVideo(file);
event.target.value = "";
}
loadVideo(file) {
if (file) {
const canPlayType = this.video.canPlayType(file.type);
this.errorHandle(
canPlayType === "maybe" || canPlayType === "probably",
`Playback of this file format is not supported: ${file.type}`
);
const videoUrl = URL.createObjectURL(file);
this.videoUrl = videoUrl;
this.file = file;
this.emit("file", this.file);
this.video.src = videoUrl;
this.emit("video", this.video);
}
}
start() {
if (!this.video.duration)
return sleep(1e3).then(() => this.start());
const { width, number, begin, end } = this.option;
const height = this.video.videoHeight / this.video.videoWidth * width;
this.option.height = height;
this.option.begin = clamp(begin, 0, this.video.duration);
this.option.end = clamp(end || this.video.duration, begin, this.video.duration);
this.errorHandle(this.option.end > this.option.begin, `End time must be greater than the start time`);
this.duration = this.option.end - this.option.begin;
this.density = number / this.duration;
this.errorHandle(this.file && this.video, "Please select the video file first");
this.errorHandle(!this.processing, "There is currently a task in progress, please wait a moment...");
this.errorHandle(this.density <= 1, `The preview density cannot be greater than 1, but got ${this.density}`);
const screenshotDate = this.creatScreenshotDate();
const canvas = this.creatCanvas();
const context2D = canvas.getContext("2d");
this.emit("canvas", canvas);
const promiseList = screenshotDate.map((item, index) => () => {
return new Promise((resolve) => {
this.video.oncanplay = () => {
context2D.drawImage(this.video, item.x, item.y, width, height);
canvas.toBlob((blob) => {
if (this.thumbnailUrl) {
URL.revokeObjectURL(this.thumbnailUrl);
}
this.thumbnailUrl = URL.createObjectURL(blob);
this.emit("update", this.thumbnailUrl, (index + 1) / number);
this.video.oncanplay = null;
resolve();
});
};
this.video.currentTime = item.time;
});
});
this.processing = true;
return runPromisesInSeries(promiseList).then(() => {
this.processing = false;
this.emit("done");
}).catch((err) => {
this.processing = false;
this.emit("error", err.message);
throw err;
});
}
creatScreenshotDate() {
const { number, width, height, column, begin } = this.option;
const timeGap = this.duration / number;
const timePoints = [begin + timeGap];
while (timePoints.length < number) {
const last = timePoints[timePoints.length - 1];
timePoints.push(last + timeGap);
}
return timePoints.map((item, index) => ({
time: item - timeGap / 2,
x: index % column * width,
y: Math.floor(index / column) * height
}));
}
creatCanvas() {
const { number, width, height, column } = this.option;
const canvas = document.createElement("canvas");
const context2D = canvas.getContext("2d");
canvas.width = width * column;
canvas.height = Math.ceil(number / column) * height + 30;
context2D.fillStyle = "black";
context2D.fillRect(0, 0, canvas.width, canvas.height);
context2D.font = "14px Georgia";
context2D.fillStyle = "#fff";
context2D.fillText(
`From: https://artplayer.org/, Number: ${number}, Width: ${width}, Height: ${height}, Column: ${column}`,
10,
canvas.height - 11
);
return canvas;
}
download() {
this.errorHandle(
this.file && this.thumbnailUrl,
"Download does not seem to be ready, please create preview first"
);
this.errorHandle(!this.processing, "There is currently a task in progress, please wait a moment...");
const elink = document.createElement("a");
const name = `${getFileName(this.file.name)}.png`;
elink.download = name;
elink.href = this.thumbnailUrl;
document.body.appendChild(elink);
elink.click();
document.body.removeChild(elink);
this.emit("download", name);
return this;
}
errorHandle(condition, msg) {
if (!condition) {
this.emit("error", msg);
throw new Error(msg);
}
}
destroy() {
this.option.fileInput.removeEventListener("change", this.inputChange);
this.option.fileInput.removeEventListener("dragover", ArtplayerToolThumbnail2.ondragover);
this.option.fileInput.removeEventListener("drop", ArtplayerToolThumbnail2.ondrop);
document.body.removeChild(this.video);
if (this.videoUrl) {
URL.revokeObjectURL(this.videoUrl);
}
if (this.thumbnailUrl) {
URL.revokeObjectURL(this.thumbnailUrl);
}
this.emit("destroy");
}
}
return ArtplayerToolThumbnail2;
})();
@@ -1 +0,0 @@
{"mappings":"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 truncated