ps-tcplayer
Version:
Tencent Cloud Player component with Vue2/Vue3 compatibility
1,422 lines (1,421 loc) • 887 kB
JavaScript
!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, "&").replace(/</g, "<").replace(/>/g, ">").replace(/\"/g, """).replace(/\'/g, "'").replace(/\//g, "/") : ""
}
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) {