UNPKG

ps-tcplayer

Version:

Tencent Cloud Player component with Vue2/Vue3 compatibility

1,422 lines (1,421 loc) 887 kB
!function(t, e) { "object" == typeof exports && "undefined" != typeof module ? module.exports = e(require("hls.js"), require("dashjs"), require("flv.js"), require("TXLivePlayer")) : "function" == typeof define && define.amd ? define(["hls.js", "dashjs", "flv.js", "TXLivePlayer"], e) : t.TCPlayer = e(t.Hls, t.dashjs, t.flvjs, t.TXLivePlayer) }(this, function(Hls$1, dashjs, flvjs, TXLivePlayer) { function unwrapExports(t) { return t && t.__esModule && Object.prototype.hasOwnProperty.call(t, "default") ? t["default"] : t } function createCommonjsModule(t, e) { return e = { exports: {} }, t(e, e.exports), e.exports } function each(t, e) { keys(t).forEach(function(i) { return e(t[i], i) }) } function reduce(t, e) { var i = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0; return keys(t).reduce(function(i, n) { return e(i, t[n], n) }, i) } function assign(t) { for (var e = arguments.length, i = Array(e > 1 ? e - 1 : 0), n = 1; n < e; n++) i[n - 1] = arguments[n]; return Object.assign ? Object.assign.apply(Object, [t].concat(i)) : (i.forEach(function(e) { e && each(e, function(e, i) { t[i] = e }) }), t) } function isObject$1(t) { return !!t && "object" === (void 0 === t ? "undefined" : _typeof(t)) } function isPlain(t) { return isObject$1(t) && "[object Object]" === toString.call(t) && t.constructor === Object } function isFunction(t) { return "function" == typeof t && "number" != typeof t.nodeType } function clean(t) { return t.replace(/\n\r?\s*/g, "") } function computedStyle(t, e) { if (!t || !e) return ""; if ("function" == typeof window_1.getComputedStyle) { var i = window_1.getComputedStyle(t); return i ? i[e] : "" } return t.currentStyle[e] || "" } function isNonBlankString(t) { return "string" == typeof t && /\S/.test(t) } function throwIfWhitespace(t) { if (/\s/.test(t)) throw new Error("class has illegal whitespace characters") } function classRegExp(t) { return new RegExp("(^|\\s)" + t + "($|\\s)") } function isReal() { return document_1 === window_1.document && "undefined" != typeof document_1.createElement } function isEl(t) { return isObject$1(t) && 1 === t.nodeType } function isInFrame() { try { return window_1.parent !== window_1.self } catch (t) { return !0 } } function createQuerier(t) { return function(e, i) { if (!isNonBlankString(e)) return document_1[t](null); isNonBlankString(i) && (i = document_1.querySelector(i)); var n = isEl(i) ? i : document_1; return n[t] && n[t](e) } } function createEl() { var t = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "div" , e = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {} , i = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {} , n = arguments[3] , r = document_1.createElement(t); return Object.getOwnPropertyNames(e).forEach(function(t) { var i = e[t]; -1 !== t.indexOf("aria-") || "role" === t || "type" === t ? (log$2.warn(tsml(_templateObject, t, i)), r.setAttribute(t, i)) : "textContent" === t ? textContent(r, i) : r[t] = i }), Object.getOwnPropertyNames(i).forEach(function(t) { r.setAttribute(t, i[t]) }), n && appendContent(r, n), r } function textContent(t, e) { return "undefined" == typeof t.textContent ? t.innerText = e : t.textContent = e, t } function prependTo(t, e) { e.firstChild ? e.insertBefore(t, e.firstChild) : e.appendChild(t) } function hasClass(t, e) { return throwIfWhitespace(e), t.classList ? t.classList.contains(e) : classRegExp(e).test(t.className) } function addClass(t, e) { return t.classList ? t.classList.add(e) : hasClass(t, e) || (t.className = (t.className + " " + e).trim()), t } function removeClass(t, e) { return t.classList ? t.classList.remove(e) : (throwIfWhitespace(e), t.className = t.className.split(/\s+/).filter(function(t) { return t !== e }).join(" ")), t } function toggleClass(t, e, i) { var n = hasClass(t, e); if ("function" == typeof i && (i = i(t, e)), "boolean" != typeof i && (i = !n), i !== n) return i ? addClass(t, e) : removeClass(t, e), t } function setAttributes(t, e) { Object.getOwnPropertyNames(e).forEach(function(i) { var n = e[i]; null === n || void 0 === n || !1 === n ? t.removeAttribute(i) : t.setAttribute(i, !0 === n ? "" : n) }) } function getAttributes(t) { var e = {}; if (t && t.attributes && t.attributes.length > 0) for (var i = t.attributes, n = i.length - 1; n >= 0; n--) { var r = i[n].name , o = i[n].value; "boolean" != typeof t[r] && -1 === ",autoplay,controls,playsinline,loop,muted,default,defaultMuted,".indexOf("," + r + ",") || (o = null !== o), e[r] = o } return e } function getAttribute(t, e) { return t.getAttribute(e) } function setAttribute(t, e, i) { t.setAttribute(e, i) } function removeAttribute(t, e) { t.removeAttribute(e) } function blockTextSelection() { document_1.body.focus(), document_1.onselectstart = function() { return !1 } } function unblockTextSelection() { document_1.onselectstart = function() { return !0 } } function getBoundingClientRect(t) { if (t && t.getBoundingClientRect && t.parentNode) { var e = t.getBoundingClientRect() , i = {}; return ["bottom", "height", "left", "right", "top", "width"].forEach(function(t) { e[t] !== undefined && (i[t] = e[t]) }), i.height || (i.height = parseFloat(computedStyle(t, "height"))), i.width || (i.width = parseFloat(computedStyle(t, "width"))), i } } function findPosition(t) { var e = void 0; if (t.getBoundingClientRect && t.parentNode && (e = t.getBoundingClientRect()), !e) return { left: 0, top: 0 }; var i = document_1.documentElement , n = document_1.body , r = i.clientLeft || n.clientLeft || 0 , o = window_1.pageXOffset || n.scrollLeft , s = e.left + o - r , a = i.clientTop || n.clientTop || 0 , l = window_1.pageYOffset || n.scrollTop , u = e.top + l - a; return { left: Math.round(s), top: Math.round(u) } } function getPointerPosition(t, e) { var i = {} , n = findPosition(t) , r = t.offsetWidth , o = t.offsetHeight , s = n.top , a = n.left , l = e.pageY , u = e.pageX; return e.changedTouches && (u = e.changedTouches[0].pageX, l = e.changedTouches[0].pageY), i.y = Math.max(0, Math.min(1, (s - l + o) / o)), i.x = Math.max(0, Math.min(1, (u - a) / r)), i } function isTextNode(t) { return isObject$1(t) && 3 === t.nodeType } function emptyEl(t) { for (; t.firstChild; ) t.removeChild(t.firstChild); return t } function normalizeContent(t) { return "function" == typeof t && (t = t()), (Array.isArray(t) ? t : [t]).map(function(t) { return "function" == typeof t && (t = t()), isEl(t) || isTextNode(t) ? t : "string" == typeof t && /\S/.test(t) ? document_1.createTextNode(t) : void 0 }).filter(function(t) { return t }) } function appendContent(t, e) { return normalizeContent(e).forEach(function(e) { return t.appendChild(e) }), t } function insertContent(t, e) { return appendContent(emptyEl(t), e) } function isSingleLeftClick(t) { return t.button === undefined && t.buttons === undefined || (0 === t.button && t.buttons === undefined || (9 === IE_VERSION || 0 === t.button && 1 === t.buttons)) } function newGUID() { return _guid++ } function getData(t) { var e = t[elIdAttr]; return e || (e = t[elIdAttr] = newGUID()), elData[e] || (elData[e] = {}), elData[e] } function hasData(t) { var e = t[elIdAttr]; return !!e && !!Object.getOwnPropertyNames(elData[e]).length } function removeData(t) { var e = t[elIdAttr]; if (e) { delete elData[e]; try { delete t[elIdAttr] } catch (i) { t.removeAttribute ? t.removeAttribute(elIdAttr) : t[elIdAttr] = null } } } function _cleanUpEvents(t, e) { var i = getData(t); 0 === i.handlers[e].length && (delete i.handlers[e], t.removeEventListener ? t.removeEventListener(e, i.dispatcher, !1) : t.detachEvent && t.detachEvent("on" + e, i.dispatcher)), Object.getOwnPropertyNames(i.handlers).length <= 0 && (delete i.handlers, delete i.dispatcher, delete i.disabled), 0 === Object.getOwnPropertyNames(i).length && removeData(t) } function _handleMultipleEvents(t, e, i, n) { i.forEach(function(i) { t(e, i, n) }) } function fixEvent(t) { function e() { return !0 } function i() { return !1 } if (!t || !t.isPropagationStopped) { var n = t || window_1.event; t = {}; for (var r in n) "layerX" !== r && "layerY" !== r && "keyLocation" !== r && "webkitMovementX" !== r && "webkitMovementY" !== r && ("returnValue" === r && n.preventDefault || (t[r] = n[r])); if (t.target || (t.target = t.srcElement || document_1), t.relatedTarget || (t.relatedTarget = t.fromElement === t.target ? t.toElement : t.fromElement), t.preventDefault = function() { n.preventDefault && n.preventDefault(), t.returnValue = !1, n.returnValue = !1, t.defaultPrevented = !0 } , t.defaultPrevented = !1, t.stopPropagation = function() { n.stopPropagation && n.stopPropagation(), t.cancelBubble = !0, n.cancelBubble = !0, t.isPropagationStopped = e } , t.isPropagationStopped = i, t.stopImmediatePropagation = function() { n.stopImmediatePropagation && n.stopImmediatePropagation(), t.isImmediatePropagationStopped = e, t.stopPropagation() } , t.isImmediatePropagationStopped = i, null !== t.clientX && t.clientX !== undefined) { var o = document_1.documentElement , s = document_1.body; t.pageX = t.clientX + (o && o.scrollLeft || s && s.scrollLeft || 0) - (o && o.clientLeft || s && s.clientLeft || 0), t.pageY = t.clientY + (o && o.scrollTop || s && s.scrollTop || 0) - (o && o.clientTop || s && s.clientTop || 0) } t.which = t.charCode || t.keyCode, null !== t.button && t.button !== undefined && (t.button = 1 & t.button ? 0 : 4 & t.button ? 1 : 2 & t.button ? 2 : 0) } return t } function on(t, e, i) { if (Array.isArray(e)) return _handleMultipleEvents(on, t, e, i); var n = getData(t); if (n.handlers || (n.handlers = {}), n.handlers[e] || (n.handlers[e] = []), i.guid || (i.guid = newGUID()), n.handlers[e].push(i), n.dispatcher || (n.disabled = !1, n.dispatcher = function(e, i) { if (!n.disabled) { e = fixEvent(e); var r = n.handlers[e.type]; if (r) for (var o = r.slice(0), s = 0, a = o.length; s < a && !e.isImmediatePropagationStopped(); s++) try { o[s].call(t, e, i) } catch (l) { log$2.error(l) } } } ), 1 === n.handlers[e].length) if (t.addEventListener) { var r = !1; _supportsPassive && passiveEvents.indexOf(e) > -1 && (r = { passive: !0 }), t.addEventListener(e, n.dispatcher, r) } else t.attachEvent && t.attachEvent("on" + e, n.dispatcher) } function off(t, e, i) { if (hasData(t)) { var n = getData(t); if (n.handlers) { if (Array.isArray(e)) return _handleMultipleEvents(off, t, e, i); var r = function(t, e) { n.handlers[e] = [], _cleanUpEvents(t, e) }; if (e !== undefined) { var o = n.handlers[e]; if (o) { if (!i) return void r(t, e); if (i.guid) for (var s = 0; s < o.length; s++) o[s].guid === i.guid && o.splice(s--, 1); _cleanUpEvents(t, e) } } else for (var a in n.handlers) Object.prototype.hasOwnProperty.call(n.handlers || {}, a) && r(t, a) } } } function trigger(t, e, i) { var n = hasData(t) ? getData(t) : {} , r = t.parentNode || t.ownerDocument; if ("string" == typeof e && (e = { type: e, target: t }), e = fixEvent(e), n.dispatcher && n.dispatcher.call(t, e, i), r && !e.isPropagationStopped() && !0 === e.bubbles) trigger.call(null, r, e, i); else if (!r && !e.defaultPrevented) { var o = getData(e.target); e.target[e.type] && (o.disabled = !0, "function" == typeof e.target[e.type] && e.target[e.type](), o.disabled = !1) } return !e.defaultPrevented } function one(t, e, i) { if (Array.isArray(e)) return _handleMultipleEvents(one, t, e, i); var n = function r() { off(t, e, r), i.apply(this, arguments) }; n.guid = i.guid = i.guid || newGUID(), on(t, e, n) } function autoSetupTimeout(t, e) { e && (videojs$2 = e), window_1.setTimeout(autoSetup, t) } function evented(t) { var e = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {} , i = e.eventBusKey; if (i) { if (!t[i].nodeName) throw new Error('The eventBusKey "' + i + '" does not refer to an element.'); t.eventBusEl_ = t[i] } else t.eventBusEl_ = createEl("span", { className: "vjs-event-bus" }); return assign(t, EventedMixin), t.on("dispose", function() { t.off(), window_1.setTimeout(function() { t.eventBusEl_ = null }, 0) }), t } function stateful(t, e) { return assign(t, StatefulMixin), t.state = assign({}, t.state, e), "function" == typeof t.handleStateChanged && isEvented(t) && t.on("statechanged", t.handleStateChanged), t } function toTitleCase(t) { return "string" != typeof t ? t : t.charAt(0).toUpperCase() + t.slice(1) } function titleCaseEquals(t, e) { return toTitleCase(t) === toTitleCase(e) } function mergeOptions() { for (var t = {}, e = arguments.length, i = Array(e), n = 0; n < e; n++) i[n] = arguments[n]; return i.forEach(function(e) { e && each(e, function(e, i) { if (!isPlain(e)) return void (t[i] = e); isPlain(t[i]) || (t[i] = {}), t[i] = mergeOptions(t[i], e) }) }), t } function extend() { var t, e, i, n, r, o, s = arguments[0] || {}, a = 1, l = arguments.length, u = !1; for ("boolean" == typeof s && (u = s, s = arguments[a] || {}, a++), "object" === (void 0 === s ? "undefined" : _typeof(s)) || isFunction(s) || (s = {}), a === l && (s = this, a--); a < l; a++) if (null != (t = arguments[a])) for (e in t) i = s[e], n = t[e], s !== n && (u && n && (isPlain(n) || (r = Array.isArray(n))) ? (r ? (r = !1, o = i && Array.isArray(i) ? i : []) : o = i && isPlain(i) ? i : {}, s[e] = extend(u, o, n)) : n !== undefined && (s[e] = n)); return s } function getParams(t, e) { var i = e.split("?")[1]; if (i) { var n = new RegExp("(^|&)" + t + "=([^&]*)(&|$)","i") , r = i.match(n); return null != r ? decodeURIComponent(r[2]) : null } } function guid() { function t() { return (65536 * (1 + Math.random()) | 0).toString(16).substring(1) } return t() + t() + "-" + t() + "-" + t() + "-" + t() + "-" + t() + t() + t() } function unifyProtocol(t) { t = t.replace(/^(http|https):/, ""); var e = window.location.protocol; return "http:" != e && "https:" != e && (e = "https:"), t = e + t } function replaceHost(t, e) { var i = /^http(s)?:\/\/(.*?)\// , n = t.match(i); return t.replace(n[2], e) } function getViewportSize() { var t = document , e = t.documentElement , i = t.body; return { width: e && e.clientWidth || i && i.offsetWidth || window.innerWidth || 0, height: e && e.clientHeight || i && i.offsetHeight || window.innerHeight || 0 } } function getTimeStamp() { return (new Date).getTime() } function getTimeStampBySecond() { return Date.parse(new Date) / 1e3 } function serializeParams(t) { var e = [] , i = function(t, i) { i = "function" == typeof i ? i() : i, i = null === i ? "" : i === undefined ? "" : i, e[e.length] = encodeURIComponent(t) + "=" + encodeURIComponent(i) }; return function n(t, r) { var o = void 0 , s = void 0 , a = void 0; if (t) if (Array.isArray(r)) for (o = 0, s = r.length; o < s; o++) n(t + "[" + ("object" === _typeof(r[o]) && r[o] ? o : "") + "]", r[o]); else if ("[object Object]" === String(r)) for (a in r) n(t + "[" + a + "]", r[a]); else i(t, r); else if (Array.isArray(r)) for (o = 0, s = r.length; o < s; o++) i(r[o].name, r[o].value); else for (a in r) n(a, r[a]); return e }("", t).join("&") } function encodeHTML(t) { return t.length ? String(t).replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/\"/g, "&quot;").replace(/\'/g, "&#39;").replace(/\//g, "&#x2F;") : "" } function rangeCheck(t, e, i) { if ("number" != typeof e || e < 0 || e > i) throw new Error("Failed to execute '" + t + "' on 'TimeRanges': The index provided (" + e + ") is non-numeric or out of bounds (0-" + i + ").") } function getRange(t, e, i, n) { return rangeCheck(t, n, i.length - 1), i[n][e] } function createTimeRangesObj(t) { return t === undefined || 0 === t.length ? { length: 0, start: function() { throw new Error("This TimeRanges object is empty") }, end: function() { throw new Error("This TimeRanges object is empty") } } : { length: t.length, start: getRange.bind(null, "start", 0, t), end: getRange.bind(null, "end", 1, t) } } function createTimeRanges(t, e) { return Array.isArray(t) ? createTimeRangesObj(t) : t === undefined || e === undefined ? createTimeRangesObj() : createTimeRangesObj([[t, e]]) } function bufferedPercent(t, e) { var i = 0 , n = void 0 , r = void 0; if (!e) return 0; t && t.length || (t = createTimeRanges(0, 0)); for (var o = 0; o < t.length; o++) n = t.start(o), r = t.end(o), r > e && (r = e), i += r - n; return i / e } function MediaError(t) { if (t instanceof MediaError) return t; "number" == typeof t ? this.code = t : "string" == typeof t ? this.message = t : isObject$1(t) && ("number" == typeof t.code && (this.code = t.code), assign(this, t)), this.message || (this.message = MediaError.defaultMessages[this.code] || "") } function SafeParseTuple(t, e) { var i, n = null; try { i = JSON.parse(t, e) } catch (r) { n = r } return [n, i] } function isPromise(t) { return t !== undefined && "function" == typeof t.then } function silencePromise(t) { isPromise(t) && t.then(null, function(t) {}) } function isFunction$1(t) { if (!t) return !1; var e = toString$1.call(t); return "[object Function]" === e || "function" == typeof t && "[object RegExp]" !== e || "undefined" != typeof window && (t === window.setTimeout || t === window.alert || t === window.confirm || t === window.prompt) } function extend$1() { for (var t = {}, e = 0; e < arguments.length; e++) { var i = arguments[e]; for (var n in i) hasOwnProperty.call(i, n) && (t[n] = i[n]) } return t } function forEachArray(t, e) { for (var i = 0; i < t.length; i++) e(t[i]) } function isEmpty(t) { for (var e in t) if (t.hasOwnProperty(e)) return !1; return !0 } function initParams(t, e, i) { var n = t; return isFunction_1(e) ? (i = e, "string" == typeof t && (n = { uri: t })) : n = immutable(e, { uri: t }), n.callback = i, n } function createXHR(t, e, i) { return e = initParams(t, e, i), _createXHR(e) } function _createXHR(t) { function e() { 4 === a.readyState && setTimeout(r, 0) } function i() { var t = undefined; if (t = a.response ? a.response : a.responseText || getXml(a), y) try { t = JSON.parse(t) } catch (e) {} return t } function n(t) { return clearTimeout(c), t instanceof Error || (t = new Error("" + (t || "Unknown XMLHttpRequest Error"))), t.statusCode = 0, s(t, m) } function r() { if (!u) { var e; clearTimeout(c), e = t.useXDR && a.status === undefined ? 200 : 1223 === a.status ? 204 : a.status; var n = m , r = null; return 0 !== e ? (n = { body: i(), statusCode: e, method: p, headers: {}, url: h, rawRequest: a }, a.getAllResponseHeaders && (n.headers = parseHeaders(a.getAllResponseHeaders()))) : r = new Error("Internal XMLHttpRequest Error"), s(r, n, n.body) } } if ("undefined" == typeof t.callback) throw new Error("callback argument missing"); var o = !1 , s = function(e, i, n) { o || (o = !0, t.callback(e, i, n)) } , a = t.xhr || null; a || (a = t.cors || t.useXDR ? new createXHR.XDomainRequest : new createXHR.XMLHttpRequest); var l, u, c, h = a.url = t.uri || t.url, p = a.method = t.method || "GET", d = t.body || t.data, f = a.headers = t.headers || {}, g = !!t.sync, y = !1, m = { body: undefined, headers: {}, statusCode: 0, method: p, url: h, rawRequest: a }; if ("json"in t && !1 !== t.json && (y = !0, f.accept || f.Accept || (f.Accept = "application/json"), "GET" !== p && "HEAD" !== p && (f["content-type"] || f["Content-Type"] || (f["Content-Type"] = "application/json"), d = JSON.stringify(!0 === t.json ? d : t.json))), a.onreadystatechange = e, a.onload = r, a.onerror = n, a.onprogress = function() {} , a.onabort = function() { u = !0 } , a.ontimeout = n, a.open(p, h, !g, t.username, t.password), g || (a.withCredentials = !!t.withCredentials), !g && t.timeout > 0 && (c = setTimeout(function() { if (!u) { u = !0, a.abort("timeout"); var t = new Error("XMLHttpRequest timeout"); t.code = "ETIMEDOUT", n(t) } }, t.timeout)), a.setRequestHeader) for (l in f) f.hasOwnProperty(l) && a.setRequestHeader(l, f[l]); else if (t.headers && !isEmpty(t.headers)) throw new Error("Headers cannot be set on an XDomainRequest object"); return "responseType"in t && (a.responseType = t.responseType), "beforeSend"in t && "function" == typeof t.beforeSend && t.beforeSend(a), a.send(d || null), a } function getXml(t) { if ("document" === t.responseType) return t.responseXML; var e = t.responseXML && "parsererror" === t.responseXML.documentElement.nodeName; return "" !== t.responseType || e ? null : t.responseXML } function noop() {} function ParsingError(t, e) { this.name = "ParsingError", this.code = t.code, this.message = e || t.message } function parseTimeStamp(t) { function e(t, e, i, n) { return 3600 * (0 | t) + 60 * (0 | e) + (0 | i) + (0 | n) / 1e3 } var i = t.match(/^(\d+):(\d{2})(:\d{2})?\.(\d{3})/); return i ? i[3] ? e(i[1], i[2], i[3].replace(":", ""), i[4]) : i[1] > 59 ? e(i[1], i[2], 0, i[4]) : e(0, i[1], i[2], i[4]) : null } function Settings() { this.values = _objCreate(null) } function parseOptions(t, e, i, n) { var r = n ? t.split(n) : [t]; for (var o in r) if ("string" == typeof r[o]) { var s = r[o].split(i); if (2 === s.length) { var a = s[0] , l = s[1]; e(a, l) } } } function parseCue(t, e, i) { function n() { var e = parseTimeStamp(t); if (null === e) throw new ParsingError(ParsingError.Errors.BadTimeStamp,"Malformed timestamp: " + o); return t = t.replace(/^[^\sa-zA-Z-]+/, ""), e } function r() { t = t.replace(/^\s+/, "") } var o = t; if (r(), e.startTime = n(), r(), "--\x3e" !== t.substr(0, 3)) throw new ParsingError(ParsingError.Errors.BadTimeStamp,"Malformed time stamp (time stamps must be separated by '--\x3e'): " + o); t = t.substr(3), r(), e.endTime = n(), r(), function(t, e) { var n = new Settings; parseOptions(t, function(t, e) { switch (t) { case "region": for (var r = i.length - 1; r >= 0; r--) if (i[r].id === e) { n.set(t, i[r].region); break } break; case "vertical": n.alt(t, e, ["rl", "lr"]); break; case "line": var o = e.split(",") , s = o[0]; n.integer(t, s), n.percent(t, s) && n.set("snapToLines", !1), n.alt(t, s, ["auto"]), 2 === o.length && n.alt("lineAlign", o[1], ["start", "middle", "end"]); break; case "position": o = e.split(","), n.percent(t, o[0]), 2 === o.length && n.alt("positionAlign", o[1], ["start", "middle", "end"]); break; case "size": n.percent(t, e); break; case "align": n.alt(t, e, ["start", "middle", "end", "left", "right"]) } }, /:/, /\s/), e.region = n.get("region", null), e.vertical = n.get("vertical", ""), e.line = n.get("line", "auto"), e.lineAlign = n.get("lineAlign", "start"), e.snapToLines = n.get("snapToLines", !0), e.size = n.get("size", 100), e.align = n.get("align", "middle"), e.position = n.get("position", { start: 0, left: 0, middle: 50, end: 100, right: 100 }, e.align), e.positionAlign = n.get("positionAlign", { start: "start", left: "start", middle: "middle", end: "end", right: "end" }, e.align) }(t, e) } function parseContent(t, e) { function i(t) { return ESCAPE[t] } for (var n, r = t.document.createElement("div"), o = r, s = []; null !== (n = function() { if (!e) return null; var t = e.match(/^([^<]*)(<[^>]+>?)?/); return function(t) { return e = e.substr(t.length), t }(t[1] ? t[1] : t[2]) }()); ) if ("<" !== n[0]) o.appendChild(t.document.createTextNode(function(t) { for (; u = t.match(/&(amp|lt|gt|lrm|rlm|nbsp);/); ) t = t.replace(u[0], i); return t }(n))); else { if ("/" === n[1]) { s.length && s[s.length - 1] === n.substr(2).replace(">", "") && (s.pop(), o = o.parentNode); continue } var a, l = parseTimeStamp(n.substr(1, n.length - 2)); if (l) { a = t.document.createProcessingInstruction("timestamp", l), o.appendChild(a); continue } var u = n.match(/^<([^.\s/0-9>]+)(\.[^\s\\>]+)?([^>\\]+)?(\\?)>?$/); if (!u) continue; if (!(a = function(e, i) { var n = TAG_NAME[e]; if (!n) return null; var r = t.document.createElement(n); r.localName = n; var o = TAG_ANNOTATION[e]; return o && i && (r[o] = i.trim()), r }(u[1], u[3]))) continue; if (!function(t, e) { return !NEEDS_PARENT[e.localName] || NEEDS_PARENT[e.localName] === t.localName }(o, a)) continue; u[2] && (a.className = u[2].substr(1).replace(".", " ")), s.push(u[1]), o.appendChild(a), o = a } return r } function isStrongRTLChar(t) { for (var e = 0; e < strongRTLRanges.length; e++) { var i = strongRTLRanges[e]; if (t >= i[0] && t <= i[1]) return !0 } return !1 } function determineBidi(t) { function e(t, e) { for (var i = e.childNodes.length - 1; i >= 0; i--) t.push(e.childNodes[i]) } function i(t) { if (!t || !t.length) return null; var n = t.pop() , r = n.textContent || n.innerText; if (r) { var o = r.match(/^.*(\n|\r)/); return o ? (t.length = 0, o[0]) : r } return "ruby" === n.tagName ? i(t) : n.childNodes ? (e(t, n), i(t)) : void 0 } var n, r = [], o = ""; if (!t || !t.childNodes) return "ltr"; for (e(r, t); o = i(r); ) for (var s = 0; s < o.length; s++) if (n = o.charCodeAt(s), isStrongRTLChar(n)) return "rtl"; return "ltr" } function computeLinePos(t) { if ("number" == typeof t.line && (t.snapToLines || t.line >= 0 && t.line <= 100)) return t.line; if (!t.track || !t.track.textTrackList || !t.track.textTrackList.mediaElement) return -1; for (var e = t.track, i = e.textTrackList, n = 0, r = 0; r < i.length && i[r] !== e; r++) "showing" === i[r].mode && n++; return -1 * ++n } function StyleBox() {} function CueStyleBox(t, e, i) { var n = /MSIE\s8\.0/.test(navigator.userAgent) , r = "rgba(255, 255, 255, 1)" , o = "rgba(0, 0, 0, 0.8)"; n && (r = "rgb(255, 255, 255)", o = "rgb(0, 0, 0)"), StyleBox.call(this), this.cue = e, this.cueDiv = parseContent(t, e.text); var s = { color: r, backgroundColor: o, position: "relative", left: 0, right: 0, top: 0, bottom: 0, display: "inline" }; n || (s.writingMode = "" === e.vertical ? "horizontal-tb" : "lr" === e.vertical ? "vertical-lr" : "vertical-rl", s.unicodeBidi = "plaintext"), this.applyStyles(s, this.cueDiv), this.div = t.document.createElement("div"), s = { textAlign: "middle" === e.align ? "center" : e.align, font: i.font, whiteSpace: "pre-line", position: "absolute" }, n || (s.direction = determineBidi(this.cueDiv), s.writingMode = "" === e.vertical ? "horizontal-tb" : "lr" === e.vertical ? "vertical-lr" : "vertical-rl".stylesunicodeBidi = "plaintext"), this.applyStyles(s), this.div.appendChild(this.cueDiv); var a = 0; switch (e.positionAlign) { case "start": a = e.position; break; case "middle": a = e.position - e.size / 2; break; case "end": a = e.position - e.size } "" === e.vertical ? this.applyStyles({ left: this.formatStyle(a, "%"), width: this.formatStyle(e.size, "%") }) : this.applyStyles({ top: this.formatStyle(a, "%"), height: this.formatStyle(e.size, "%") }), this.move = function(t) { this.applyStyles({ top: this.formatStyle(t.top, "px"), bottom: this.formatStyle(t.bottom, "px"), left: this.formatStyle(t.left, "px"), right: this.formatStyle(t.right, "px"), height: this.formatStyle(t.height, "px"), width: this.formatStyle(t.width, "px") }) } } function BoxPosition(t) { var e, i, n, r, o = /MSIE\s8\.0/.test(navigator.userAgent); if (t.div) { i = t.div.offsetHeight, n = t.div.offsetWidth, r = t.div.offsetTop; var s = (s = t.div.childNodes) && (s = s[0]) && s.getClientRects && s.getClientRects(); t = t.div.getBoundingClientRect(), e = s ? Math.max(s[0] && s[0].height || 0, t.height / s.length) : 0 } this.left = t.left, this.right = t.right, this.top = t.top || r, this.height = t.height || i, this.bottom = t.bottom || r + (t.height || i), this.width = t.width || n, this.lineHeight = e !== undefined ? e : t.lineHeight, o && !this.lineHeight && (this.lineHeight = 13) } function moveBoxToLinePosition(t, e, i, n) { var r = new BoxPosition(e) , o = e.cue , s = computeLinePos(o) , a = []; if (o.snapToLines) { var l; switch (o.vertical) { case "": a = ["+y", "-y"], l = "height"; break; case "rl": a = ["+x", "-x"], l = "width"; break; case "lr": a = ["-x", "+x"], l = "width" } var u = r.lineHeight , c = u * Math.round(s) , h = i[l] + u , p = a[0]; Math.abs(c) > h && (c = c < 0 ? -1 : 1, c *= Math.ceil(h / u) * u), s < 0 && (c += "" === o.vertical ? i.height : i.width, a = a.reverse()), r.move(p, c) } else { var d = r.lineHeight / i.height * 100; switch (o.lineAlign) { case "middle": s -= d / 2; break; case "end": s -= d } switch (o.vertical) { case "": e.applyStyles({ top: e.formatStyle(s, "%") }); break; case "rl": e.applyStyles({ left: e.formatStyle(s, "%") }); break; case "lr": e.applyStyles({ right: e.formatStyle(s, "%") }) } a = ["+y", "-x", "+x", "-y"], r = new BoxPosition(e) } var f = function(t, e) { for (var r, o = new BoxPosition(t), s = 1, a = 0; a < e.length; a++) { for (; t.overlapsOppositeAxis(i, e[a]) || t.within(i) && t.overlapsAny(n); ) t.move(e[a]); if (t.within(i)) return t; var l = t.intersectPercentage(i); s > l && (r = new BoxPosition(t), s = l), t = new BoxPosition(o) } return r || o }(r, a); e.move(f.toCSSCompatValues(i)) } function WebVTT$1() {} function findDirectionSetting(t) { return "string" == typeof t && (!!directionSetting[t.toLowerCase()] && t.toLowerCase()) } function findAlignSetting(t) { return "string" == typeof t && (!!alignSetting[t.toLowerCase()] && t.toLowerCase()) } function extend$2(t) { for (var e = 1; e < arguments.length; e++) { var i = arguments[e]; for (var n in i) t[n] = i[n] } return t } function VTTCue(t, e, i) { var n = this , r = /MSIE\s8\.0/.test(navigator.userAgent) , o = {}; r ? n = document.createElement("custom") : o.enumerable = !0, n.hasBeenReset = !1; var s = "" , a = !1 , l = t , u = e , c = i , h = null , p = "" , d = !0 , f = "auto" , g = "start" , y = 50 , m = "middle" , v = 50 , _ = "middle"; if (Object.defineProperty(n, "id", extend$2({}, o, { get: function() { return s }, set: function(t) { s = "" + t } })), Object.defineProperty(n, "pauseOnExit", extend$2({}, o, { get: function() { return a }, set: function(t) { a = !!t } })), Object.defineProperty(n, "startTime", extend$2({}, o, { get: function() { return l }, set: function(t) { if ("number" != typeof t) throw new TypeError("Start time must be set to a number."); l = t, this.hasBeenReset = !0 } })), Object.defineProperty(n, "endTime", extend$2({}, o, { get: function() { return u }, set: function(t) { if ("number" != typeof t) throw new TypeError("End time must be set to a number."); u = t, this.hasBeenReset = !0 } })), Object.defineProperty(n, "text", extend$2({}, o, { get: function() { return c }, set: function(t) { c = "" + t, this.hasBeenReset = !0 } })), Object.defineProperty(n, "region", extend$2({}, o, { get: function() { return h }, set: function(t) { h = t, this.hasBeenReset = !0 } })), Object.defineProperty(n, "vertical", extend$2({}, o, { get: function() { return p }, set: function(t) { var e = findDirectionSetting(t); if (!1 === e) throw new SyntaxError("An invalid or illegal string was specified."); p = e, this.hasBeenReset = !0 } })), Object.defineProperty(n, "snapToLines", extend$2({}, o, { get: function() { return d }, set: function(t) { d = !!t, this.hasBeenReset = !0 } })), Object.defineProperty(n, "line", extend$2({}, o, { get: function() { return f }, set: function(t) { if ("number" != typeof t && t !== autoKeyword) throw new SyntaxError("An invalid number or illegal string was specified."); f = t, this.hasBeenReset = !0 } })), Object.defineProperty(n, "lineAlign", extend$2({}, o, { get: function() { return g }, set: function(t) { var e = findAlignSetting(t); if (!e) throw new SyntaxError("An invalid or illegal string was specified."); g = e, this.hasBeenReset = !0 } })), Object.defineProperty(n, "position", extend$2({}, o, { get: function() { return y }, set: function(t) { if (t < 0 || t > 100) throw new Error("Position must be between 0 and 100."); y = t, this.hasBeenReset = !0 } })), Object.defineProperty(n, "positionAlign", extend$2({}, o, { get: function() { return m }, set: function(t) { var e = findAlignSetting(t); if (!e) throw new SyntaxError("An invalid or illegal string was specified."); m = e, this.hasBeenReset = !0 } })), Object.defineProperty(n, "size", extend$2({}, o, { get: function() { return v }, set: function(t) { if (t < 0 || t > 100) throw new Error("Size must be between 0 and 100."); v = t, this.hasBeenReset = !0 } })), Object.defineProperty(n, "align", extend$2({}, o, { get: function() { return _ }, set: function(t) { var e = findAlignSetting(t); if (!e) throw new SyntaxError("An invalid or illegal string was specified."); _ = e, this.hasBeenReset = !0 } })), n.displayState = undefined, r) return n } function findScrollSetting(t) { return "string" == typeof t && (!!scrollSetting[t.toLowerCase()] && t.toLowerCase()) } function isValidPercentValue(t) { return "number" == typeof t && t >= 0 && t <= 100 } function VTTRegion() { var t = 100 , e = 3 , i = 0 , n = 100 , r = 0 , o = 100 , s = ""; Object.defineProperties(this, { width: { enumerable: !0, get: function() { return t }, set: function(e) { if (!isValidPercentValue(e)) throw new Error("Width must be between 0 and 100."); t = e } }, lines: { enumerable: !0, get: function() { return e }, set: function(t) { if ("number" != typeof t) throw new TypeError("Lines must be set to a number."); e = t } }, regionAnchorY: { enumerable: !0, get: function() { return n }, set: function(t) { if (!isValidPercentValue(t)) throw new Error("RegionAnchorX must be between 0 and 100."); n = t } }, regionAnchorX: { enumerable: !0, get: function() { return i }, set: function(t) { if (!isValidPercentValue(t)) throw new Error("RegionAnchorY must be between 0 and 100."); i = t } }, viewportAnchorY: { enumerable: !0, get: function() { return o }, set: function(t) { if (!isValidPercentValue(t)) throw new Error("ViewportAnchorY must be between 0 and 100."); o = t } }, viewportAnchorX: { enumerable: !0, get: function() { return r }, set: function(t) { if (!isValidPercentValue(t)) throw new Error("ViewportAnchorX must be between 0 and 100."); r = t } }, scroll: { enumerable: !0, get: function() { return s }, set: function(t) { var e = findScrollSetting(t); if (!1 === e) throw new SyntaxError("An invalid or illegal string was specified."); s = e } } }) } function createTrackHelper(t, e, i, n) { var r = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {} , o = t.textTracks(); r.kind = e, i && (r.label = i), n && (r.language = n), r.tech = t; var s = new ALL.text.TrackClass(r); return o.addTrack(s), s } function use(t, e) { middlewares[t] = middlewares[t] || [], middlewares[t].push(e) } function setSource(t, e, i) { t.setTimeout(function() { return setSourceHelper(e, middlewares[e.type], i, t) }, 1) } function setTech(t, e) {