9 lines
7.1 KiB
JavaScript
9 lines
7.1 KiB
JavaScript
|
|
|
||
|
|
/*!
|
||
|
|
* artplayer-plugin-chapter.js v1.0.0
|
||
|
|
* Github: https://github.com/zhw2590582/ArtPlayer
|
||
|
|
* (c) 2017-2024 Harvey Zack
|
||
|
|
* Released under the MIT License.
|
||
|
|
*/
|
||
|
|
!function (e, t, r, a, n) { var o = "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : "undefined" != typeof window ? window : "undefined" != typeof global ? global : {}, i = "function" == typeof o[a] && o[a], l = i.cache || {}, d = "undefined" != typeof module && "function" == typeof module.require && module.require.bind(module); function p(t, r) { if (!l[t]) { if (!e[t]) { var n = "function" == typeof o[a] && o[a]; if (!r && n) return n(t, !0); if (i) return i(t, !0); if (d && "string" == typeof t) return d(t); var s = Error("Cannot find module '" + t + "'"); throw s.code = "MODULE_NOT_FOUND", s } c.resolve = function (r) { var a = e[t][1][r]; return null != a ? a : r }, c.cache = {}; var u = l[t] = new p.Module(t); e[t][0].call(u.exports, c, u, u.exports, this) } return l[t].exports; function c(e) { var t = c.resolve(e); return !1 === t ? {} : p(t) } } p.isParcelRequire = !0, p.Module = function (e) { this.id = e, this.bundle = p, this.exports = {} }, p.modules = e, p.cache = l, p.parent = i, p.register = function (t, r) { e[t] = [function (e, t) { t.exports = r }, {}] }, Object.defineProperty(p, "root", { get: function () { return o[a] } }), o[a] = p; for (var s = 0; s < t.length; s++)p(t[s]); if (r) { var u = p(r); "object" == typeof exports && "undefined" != typeof module ? module.exports = u : "function" == typeof define && define.amd && define(function () { return u }) } }({ eSFsM: [function (e, t, r) { var a = e("@parcel/transformer-js/src/esmodule-helpers.js"); a.defineInteropFlag(r), a.export(r, "default", () => i); var n = e("bundle-text:./style.less"), o = a.interopDefault(n); function i(e = {}) { return t => { let { $player: r } = t.template, { setStyle: a, append: n, clamp: o, query: i, isMobile: l, addClass: d, removeClass: p } = t.constructor.utils, s = `<div class="art-chapter"><div class="art-chapter-inner"><div class="art-progress-hover"></div><div class="art-progress-loaded"></div><div class="art-progress-played"></div></div></div>`, u = null, c = [], f = t.query(".art-control-progress"), h = t.query(".art-control-progress-inner"), g = n(h, '<div class="art-chapters"></div>'), y = n(h, '<div class="art-chapter-title"></div>'); function m({ $chapter: e, width: t }) { let r = e.dataset.title.trim(); if (r) { a(y, "display", "flex"), y.innerText = r; let e = y.clientWidth; t <= e / 2 ? a(y, "left", 0) : t > h.clientWidth - e / 2 ? a(y, "left", `${h.clientWidth - e}px`) : a(y, "left", `${t - e / 2}px`) } else a(y, "display", "none") } function v(e = []) { if (c = [], g.innerText = "", p(r, "artplayer-plugin-chapter"), Array.isArray(e) && e.length && t.duration) { e = e.sort((e, t) => e.start - t.start); for (let r = 0; r < e.length; r++) { let a = e[r], n = e[r + 1]; if (a.end === 1 / 0 && (a.end = t.duration), "number" != typeof a.start || "number" != typeof a.end || "string" != typeof a.title) throw Error("Illegal chapter data type"); if (a.start < 0 || a.end > t.duration || a.start >= a.end || n && a.end > n.start) throw Error("Illegal chapter time point") } e[0].start > 0 && e.unshift({ start: 0, end: e[0].start, title: "" }), e[e.length - 1].end < t.duration && e.push({ start: e[e.length - 1].end, end: t.duration, title: "" }); for (let t = 0; t < e.length - 1; t++)e[t].end !== e[t + 1].start && e.splice(t + 1, 0, { start: e[t].end, end: e[t + 1].start, title: "" }); c = e.map(e => { let r = n(g, s), a = o(e.start, 0, t.duration), l = o(e.end, 0, t.duration), d = l - a, p = d / t.duration; return r.dataset.start = a, r.dataset.end = l, r.dataset.duration = d, r.dataset.title = e.title.trim(), r.style.width = `${100 * p}%`, { $chapter: r, $hover: i(".art-progress-hover", r), $loaded: i(".art-progress-loaded", r), $played: i(".art-progress-played", r) } }), d(r, "artplayer-plugin-chapter"), t.emit("setBar", "loaded", t.loaded || 0) } } return t.on("setBar", (e, r, n) => { if (c.length) for (let o = 0; o < c.length; o++) { let { $chapter: i, $loaded: d, $played: p, $hover: s } = c[o], f = { hover: s, loaded: d, played: p }[e]; if (!f) return; let h = g.clientWidth * r,
|