UNPKG

openplayerjs

Version:
1,130 lines (1,059 loc) 359 kB
(function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); else if(typeof define === 'function' && define.amd) define([], factory); else if(typeof exports === 'object') exports["openplayerjs"] = factory(); else root["openplayerjs"] = factory(); })(this, function() { return /******/ (function() { // webpackBootstrap /******/ var __webpack_modules__ = ({ /***/ 172: /***/ (function(module) { function _OverloadYield(e, d) { this.v = e, this.k = d; } module.exports = _OverloadYield, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ 373: /***/ (function(module) { function _regeneratorKeys(e) { var n = Object(e), r = []; for (var t in n) r.unshift(t); return function e() { for (; r.length;) if ((t = r.pop()) in n) return e.value = t, e.done = !1, e; return e.done = !0, e; }; } module.exports = _regeneratorKeys, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ 546: /***/ (function(module) { function _regeneratorDefine(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } module.exports = _regeneratorDefine = function regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, module.exports.__esModule = true, module.exports["default"] = module.exports, _regeneratorDefine(e, r, n, t); } module.exports = _regeneratorDefine, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ 579: /***/ (function(module, __unused_webpack_exports, __webpack_require__) { var _typeof = (__webpack_require__(738)["default"]); function _regeneratorValues(e) { if (null != e) { var t = e["function" == typeof Symbol && Symbol.iterator || "@@iterator"], r = 0; if (t) return t.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) return { next: function next() { return e && r >= e.length && (e = void 0), { value: e && e[r++], done: !e }; } }; } throw new TypeError(_typeof(e) + " is not iterable"); } module.exports = _regeneratorValues, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ 633: /***/ (function(module, __unused_webpack_exports, __webpack_require__) { var OverloadYield = __webpack_require__(172); var regenerator = __webpack_require__(993); var regeneratorAsync = __webpack_require__(869); var regeneratorAsyncGen = __webpack_require__(887); var regeneratorAsyncIterator = __webpack_require__(791); var regeneratorKeys = __webpack_require__(373); var regeneratorValues = __webpack_require__(579); function _regeneratorRuntime() { "use strict"; var r = regenerator(), e = r.m(_regeneratorRuntime), t = (Object.getPrototypeOf ? Object.getPrototypeOf(e) : e.__proto__).constructor; function n(r) { var e = "function" == typeof r && r.constructor; return !!e && (e === t || "GeneratorFunction" === (e.displayName || e.name)); } var o = { "throw": 1, "return": 2, "break": 3, "continue": 3 }; function a(r) { var e, t; return function (n) { e || (e = { stop: function stop() { return t(n.a, 2); }, "catch": function _catch() { return n.v; }, abrupt: function abrupt(r, e) { return t(n.a, o[r], e); }, delegateYield: function delegateYield(r, o, a) { return e.resultName = o, t(n.d, regeneratorValues(r), a); }, finish: function finish(r) { return t(n.f, r); } }, t = function t(r, _t, o) { n.p = e.prev, n.n = e.next; try { return r(_t, o); } finally { e.next = n.n; } }), e.resultName && (e[e.resultName] = n.v, e.resultName = void 0), e.sent = n.v, e.next = n.n; try { return r.call(this, e); } finally { n.p = e.prev, n.n = e.next; } }; } return (module.exports = _regeneratorRuntime = function _regeneratorRuntime() { return { wrap: function wrap(e, t, n, o) { return r.w(a(e), t, n, o && o.reverse()); }, isGeneratorFunction: n, mark: r.m, awrap: function awrap(r, e) { return new OverloadYield(r, e); }, AsyncIterator: regeneratorAsyncIterator, async: function async(r, e, t, o, u) { return (n(e) ? regeneratorAsyncGen : regeneratorAsync)(a(r), e, t, o, u); }, keys: regeneratorKeys, values: regeneratorValues }; }, module.exports.__esModule = true, module.exports["default"] = module.exports)(); } module.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ 738: /***/ (function(module) { function _typeof(o) { "@babel/helpers - typeof"; return module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, module.exports.__esModule = true, module.exports["default"] = module.exports, _typeof(o); } module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ 756: /***/ (function(module, __unused_webpack_exports, __webpack_require__) { // TODO(Babel 8): Remove this file. var runtime = __webpack_require__(633)(); module.exports = runtime; // Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736= try { regeneratorRuntime = runtime; } catch (accidentalStrictMode) { if (typeof globalThis === "object") { globalThis.regeneratorRuntime = runtime; } else { Function("r", "regeneratorRuntime = r")(runtime); } } /***/ }), /***/ 791: /***/ (function(module, __unused_webpack_exports, __webpack_require__) { var OverloadYield = __webpack_require__(172); var regeneratorDefine = __webpack_require__(546); function AsyncIterator(t, e) { function n(r, o, i, f) { try { var c = t[r](o), u = c.value; return u instanceof OverloadYield ? e.resolve(u.v).then(function (t) { n("next", t, i, f); }, function (t) { n("throw", t, i, f); }) : e.resolve(u).then(function (t) { c.value = t, i(c); }, function (t) { return n("throw", t, i, f); }); } catch (t) { f(t); } } var r; this.next || (regeneratorDefine(AsyncIterator.prototype), regeneratorDefine(AsyncIterator.prototype, "function" == typeof Symbol && Symbol.asyncIterator || "@asyncIterator", function () { return this; })), regeneratorDefine(this, "_invoke", function (t, o, i) { function f() { return new e(function (e, r) { n(t, i, e, r); }); } return r = r ? r.then(f, f) : f(); }, !0); } module.exports = AsyncIterator, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ 869: /***/ (function(module, __unused_webpack_exports, __webpack_require__) { var regeneratorAsyncGen = __webpack_require__(887); function _regeneratorAsync(n, e, r, t, o) { var a = regeneratorAsyncGen(n, e, r, t, o); return a.next().then(function (n) { return n.done ? n.value : a.next(); }); } module.exports = _regeneratorAsync, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ 887: /***/ (function(module, __unused_webpack_exports, __webpack_require__) { var regenerator = __webpack_require__(993); var regeneratorAsyncIterator = __webpack_require__(791); function _regeneratorAsyncGen(r, e, t, o, n) { return new regeneratorAsyncIterator(regenerator().w(r, e, t, o), n || Promise); } module.exports = _regeneratorAsyncGen, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ 993: /***/ (function(module, __unused_webpack_exports, __webpack_require__) { var regeneratorDefine = __webpack_require__(546); function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return regeneratorDefine(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (regeneratorDefine(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, regeneratorDefine(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, regeneratorDefine(u, "constructor", GeneratorFunctionPrototype), regeneratorDefine(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", regeneratorDefine(GeneratorFunctionPrototype, o, "GeneratorFunction"), regeneratorDefine(u), regeneratorDefine(u, o, "Generator"), regeneratorDefine(u, n, function () { return this; }), regeneratorDefine(u, "toString", function () { return "[object Generator]"; }), (module.exports = _regenerator = function _regenerator() { return { w: i, m: f }; }, module.exports.__esModule = true, module.exports["default"] = module.exports)(); } module.exports = _regenerator, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }) /******/ }); /************************************************************************/ /******/ // The module cache /******/ var __webpack_module_cache__ = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ var cachedModule = __webpack_module_cache__[moduleId]; /******/ if (cachedModule !== undefined) { /******/ return cachedModule.exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = __webpack_module_cache__[moduleId] = { /******/ // no module.id needed /******/ // no module.loaded needed /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /************************************************************************/ /******/ /* webpack/runtime/compat get default export */ /******/ !function() { /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function() { return module['default']; } : /******/ function() { return module; }; /******/ __webpack_require__.d(getter, { a: getter }); /******/ return getter; /******/ }; /******/ }(); /******/ /******/ /* webpack/runtime/define property getters */ /******/ !function() { /******/ // define getter functions for harmony exports /******/ __webpack_require__.d = function(exports, definition) { /******/ for(var key in definition) { /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); /******/ } /******/ } /******/ }; /******/ }(); /******/ /******/ /* webpack/runtime/hasOwnProperty shorthand */ /******/ !function() { /******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); } /******/ }(); /******/ /******/ /* webpack/runtime/make namespace object */ /******/ !function() { /******/ // define __esModule on exports /******/ __webpack_require__.r = function(exports) { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ }(); /******/ /************************************************************************/ var __webpack_exports__ = {}; // This entry needs to be wrapped in an IIFE because it needs to be in strict mode. !function() { "use strict"; // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, { "default": function() { return /* binding */ player; } }); ;// ./node_modules/@babel/runtime/helpers/esm/typeof.js function typeof_typeof(o) { "@babel/helpers - typeof"; return typeof_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, typeof_typeof(o); } ;// ./node_modules/@babel/runtime/helpers/esm/toPrimitive.js function toPrimitive(t, r) { if ("object" != typeof_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } ;// ./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js function toPropertyKey(t) { var i = toPrimitive(t, "string"); return "symbol" == typeof_typeof(i) ? i : i + ""; } ;// ./node_modules/@babel/runtime/helpers/esm/defineProperty.js function _defineProperty(e, r, t) { return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } ;// ./node_modules/@babel/runtime/helpers/esm/classCallCheck.js function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } ;// ./node_modules/@babel/runtime/helpers/esm/createClass.js function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o); } } function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } // EXTERNAL MODULE: ./node_modules/@babel/runtime/regenerator/index.js var regenerator = __webpack_require__(756); var regenerator_default = /*#__PURE__*/__webpack_require__.n(regenerator); ;// ./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js function _arrayWithHoles(r) { if (Array.isArray(r)) return r; } ;// ./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } ;// ./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } ;// ./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } ;// ./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } ;// ./node_modules/@babel/runtime/helpers/esm/slicedToArray.js function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); } ;// ./src/js/utils/constants.ts var NAV = typeof window !== 'undefined' ? window.navigator : null; var UA = NAV ? NAV.userAgent.toLowerCase() : null; var IS_IPAD = UA ? /ipad/i.test(UA) && !window.MSStream : false; var IS_IPHONE = UA ? /iphone/i.test(UA) && !window.MSStream : false; var IS_IPOD = UA ? /ipod/i.test(UA) && !window.MSStream : false; var IS_IOS = UA ? /ipad|iphone|ipod/i.test(UA) && !window.MSStream : false; var IS_ANDROID = UA ? /android/i.test(UA) : false; var IS_EDGE = NAV ? 'msLaunchUri' in NAV && !('documentMode' in document) : false; var IS_CHROME = UA ? /chrome/i.test(UA) : false; var IS_FIREFOX = UA ? /firefox/i.test(UA) : false; var IS_SAFARI = UA ? /safari/i.test(UA) && !IS_CHROME : false; var IS_STOCK_ANDROID = UA ? /^mozilla\/\d+\.\d+\s\(linux;\su;/i.test(UA) : false; var HAS_MSE = typeof window !== 'undefined' ? 'MediaSource' in window : false; var SUPPORTS_HLS = function SUPPORTS_HLS() { if (typeof window === 'undefined') { return false; } var mediaSource = window.MediaSource || window.WebKitMediaSource; var sourceBuffer = window.SourceBuffer || window.WebKitSourceBuffer; var isTypeSupported = mediaSource && typeof mediaSource.isTypeSupported === 'function' && mediaSource.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"'); var sourceBufferValidAPI = !sourceBuffer || sourceBuffer.prototype && typeof sourceBuffer.prototype.appendBuffer === 'function' && typeof sourceBuffer.prototype.remove === 'function'; return !!isTypeSupported && !!sourceBufferValidAPI && !IS_SAFARI; }; var DVR_THRESHOLD = 120; var EVENT_OPTIONS = { passive: false }; ;// ./src/js/utils/general.ts function getAbsoluteUrl(url) { var a = document.createElement('a'); a.href = url; return a.href; } function isVideo(element) { return element.tagName.toLowerCase() === 'video'; } function isAudio(element) { return element.tagName.toLowerCase() === 'audio'; } function loadScript(url) { return new Promise(function (resolve, reject) { var script = document.createElement('script'); script.src = url; script.async = true; script.onload = function () { script.remove(); resolve(); }; script.onerror = function () { script.remove(); reject(new Error("".concat(url, " could not be loaded"))); }; if (document.head) { document.head.appendChild(script); } }); } function offset(el) { var rect = el.getBoundingClientRect(); return { left: rect.left + (window.pageXOffset || document.documentElement.scrollLeft), top: rect.top + (window.pageYOffset || document.documentElement.scrollTop) }; } function sanitize(html) { var plainText = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; var parser = new DOMParser(); var content = parser.parseFromString(html, 'text/html'); var formattedContent = content.body || document.createElement('body'); var scripts = formattedContent.querySelectorAll('script'); for (var i = 0, total = scripts.length; i < total; i++) { scripts[i].remove(); } var _clean = function clean(element) { var nodes = element.children; for (var _i = 0, _total = nodes.length; _i < _total; _i++) { var node = nodes[_i]; var attributes = node.attributes; for (var j = 0, t = attributes.length; j < t; j++) { var _attributes$j = attributes[j], name = _attributes$j.name, value = _attributes$j.value; var val = value.replace(/\s+/g, '').toLowerCase(); if (['src', 'href', 'xlink:href'].includes(name)) { if (val.includes('javascript:') || val.includes('data:')) { node.removeAttribute(name); } } if (name.startsWith('on')) { node.removeAttribute(name); } } _clean(node); } }; _clean(formattedContent); return plainText ? (formattedContent.textContent || '').replace(/\s{2,}/g, '') : formattedContent.innerHTML; } function isXml(input) { var parsedXml; if (typeof DOMParser !== 'undefined') { parsedXml = function parsedXml(text) { return new DOMParser().parseFromString(text, 'text/xml'); }; } else { return false; } try { var response = parsedXml(input); if (response.getElementsByTagName('parsererror').length > 0) { return false; } } catch (e) { return false; } return true; } function isJson(item) { item = typeof item !== 'string' ? JSON.stringify(item) : item; try { item = JSON.parse(item); } catch (e) { return false; } if (_typeof(item) === 'object' && item !== null) { return true; } return false; } function addEvent(event, details) { var detail = {}; if (details && details.detail) { detail = { detail: details.detail }; } return new CustomEvent(event, detail); } ;// ./src/js/controls/captions.ts function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = captions_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } function captions_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return captions_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? captions_arrayLikeToArray(r, a) : void 0; } } function captions_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } var __classPrivateFieldSet = undefined && undefined.__classPrivateFieldSet || function (receiver, state, value, kind, f) { if (kind === "m") throw new TypeError("Private method is not writable"); if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); return kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value), value; }; var __classPrivateFieldGet = undefined && undefined.__classPrivateFieldGet || function (receiver, state, kind, f) { if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); }; var _Captions_player, _Captions_button, _Captions_captions, _Captions_menu, _Captions_events, _Captions_mediaTrackList, _Captions_hasTracks, _Captions_currentTrack, _Captions_default, _Captions_controlPosition, _Captions_controlLayer; var Captions = function () { function Captions(player, position, layer) { _classCallCheck(this, Captions); _Captions_player.set(this, void 0); _Captions_button.set(this, void 0); _Captions_captions.set(this, void 0); _Captions_menu.set(this, void 0); _Captions_events.set(this, { button: {}, global: {}, media: {} }); _Captions_mediaTrackList.set(this, void 0); _Captions_hasTracks.set(this, void 0); _Captions_currentTrack.set(this, void 0); _Captions_default.set(this, 'off'); _Captions_controlPosition.set(this, void 0); _Captions_controlLayer.set(this, void 0); __classPrivateFieldSet(this, _Captions_player, player, "f"); __classPrivateFieldSet(this, _Captions_controlPosition, position, "f"); __classPrivateFieldSet(this, _Captions_controlLayer, layer, "f"); this._formatMenuItems = this._formatMenuItems.bind(this); this._setDefaultTrack = this._setDefaultTrack.bind(this); this._showCaptions = this._showCaptions.bind(this); this._hideCaptions = this._hideCaptions.bind(this); } return _createClass(Captions, [{ key: "create", value: function create() { var _this = this; var _a; var _classPrivateFieldGe = __classPrivateFieldGet(this, _Captions_player, "f").getElement(), textTracks = _classPrivateFieldGe.textTracks; var _classPrivateFieldGe2 = __classPrivateFieldGet(this, _Captions_player, "f").getOptions(), labels = _classPrivateFieldGe2.labels, detachMenus = _classPrivateFieldGe2.detachMenus; __classPrivateFieldSet(this, _Captions_mediaTrackList, Object.keys(textTracks).map(function (k) { return textTracks[Number(k)]; }).filter(function (el) { return ['subtitles', 'captions'].includes(el.kind) && el.language; }), "f"); __classPrivateFieldSet(this, _Captions_hasTracks, !!__classPrivateFieldGet(this, _Captions_mediaTrackList, "f").length, "f"); if (!__classPrivateFieldGet(this, _Captions_hasTracks, "f")) { return; } __classPrivateFieldSet(this, _Captions_button, document.createElement('button'), "f"); __classPrivateFieldGet(this, _Captions_button, "f").className = "op-controls__captions op-control__".concat(__classPrivateFieldGet(this, _Captions_controlPosition, "f")); __classPrivateFieldGet(this, _Captions_button, "f").tabIndex = 0; __classPrivateFieldGet(this, _Captions_button, "f").type = 'button'; __classPrivateFieldGet(this, _Captions_button, "f").title = (labels === null || labels === void 0 ? void 0 : labels.toggleCaptions) || ''; __classPrivateFieldGet(this, _Captions_button, "f").setAttribute('aria-controls', __classPrivateFieldGet(this, _Captions_player, "f").id); __classPrivateFieldGet(this, _Captions_button, "f").setAttribute('aria-pressed', 'false'); __classPrivateFieldGet(this, _Captions_button, "f").setAttribute('aria-label', (labels === null || labels === void 0 ? void 0 : labels.toggleCaptions) || ''); __classPrivateFieldGet(this, _Captions_button, "f").setAttribute('data-active-captions', 'off'); __classPrivateFieldSet(this, _Captions_captions, document.createElement('div'), "f"); __classPrivateFieldGet(this, _Captions_captions, "f").className = 'op-captions'; var target = __classPrivateFieldGet(this, _Captions_player, "f").getContainer(); target.insertBefore(__classPrivateFieldGet(this, _Captions_captions, "f"), target.firstChild); if (detachMenus) { __classPrivateFieldGet(this, _Captions_button, "f").classList.add('op-control--no-hover'); __classPrivateFieldSet(this, _Captions_menu, document.createElement('div'), "f"); __classPrivateFieldGet(this, _Captions_menu, "f").className = 'op-settings op-captions__menu'; __classPrivateFieldGet(this, _Captions_menu, "f").setAttribute('aria-hidden', 'true'); __classPrivateFieldGet(this, _Captions_menu, "f").innerHTML = "<div class=\"op-settings__menu\" role=\"menu\" id=\"menu-item-captions\">\n <div class=\"op-settings__submenu-item\" tabindex=\"0\" role=\"menuitemradio\" aria-checked=\"".concat(__classPrivateFieldGet(this, _Captions_default, "f") === 'off' ? 'true' : 'false', "\">\n <div class=\"op-settings__submenu-label op-subtitles__option\" data-value=\"captions-off\">").concat(labels === null || labels === void 0 ? void 0 : labels.off, "</div>\n </div>\n </div>"); var itemContainer = document.createElement('div'); itemContainer.className = "op-controls__container op-control__".concat(__classPrivateFieldGet(this, _Captions_controlPosition, "f")); itemContainer.append(__classPrivateFieldGet(this, _Captions_button, "f"), __classPrivateFieldGet(this, _Captions_menu, "f")); __classPrivateFieldGet(this, _Captions_player, "f").getControls().getLayer(__classPrivateFieldGet(this, _Captions_controlLayer, "f")).append(itemContainer); var _iterator = _createForOfIteratorHelper(__classPrivateFieldGet(this, _Captions_mediaTrackList, "f")), _step; try { for (_iterator.s(); !(_step = _iterator.n()).done;) { var track = _step.value; var item = document.createElement('div'); var label = ((_a = labels === null || labels === void 0 ? void 0 : labels.lang) === null || _a === void 0 ? void 0 : _a[track.language]) || null; item.className = 'op-settings__submenu-item'; item.tabIndex = 0; item.setAttribute('role', 'menuitemradio'); item.setAttribute('aria-checked', __classPrivateFieldGet(this, _Captions_default, "f") === track.language ? 'true' : 'false'); item.innerHTML = "<div class=\"op-settings__submenu-label op-subtitles__option\"\n data-value=\"captions-".concat(track.language, "\">\n ").concat(label || track.label, "\n </div>"); __classPrivateFieldGet(this, _Captions_menu, "f").append(item); } } catch (err) { _iterator.e(err); } finally { _iterator.f(); } } else { __classPrivateFieldGet(this, _Captions_player, "f").getControls().getLayer(__classPrivateFieldGet(this, _Captions_controlLayer, "f")).append(__classPrivateFieldGet(this, _Captions_button, "f")); } __classPrivateFieldGet(this, _Captions_events, "f").button.click = function (e) { var _a; var button = e.target; if (detachMenus) { var menus = __classPrivateFieldGet(_this, _Captions_player, "f").getContainer().querySelectorAll('.op-settings'); for (var _i = 0, _Array$from = Array.from(menus); _i < _Array$from.length; _i++) { var menuItem = _Array$from[_i]; if (menuItem !== __classPrivateFieldGet(_this, _Captions_menu, "f")) { menuItem.setAttribute('aria-hidden', 'true'); } } if (__classPrivateFieldGet(_this, _Captions_menu, "f").getAttribute('aria-hidden') === 'true') { __classPrivateFieldGet(_this, _Captions_menu, "f").setAttribute('aria-hidden', 'false'); } else { __classPrivateFieldGet(_this, _Captions_menu, "f").setAttribute('aria-hidden', 'true'); } } else { button.setAttribute('aria-pressed', 'true'); if (button.classList.contains('op-controls__captions--on')) { button.classList.remove('op-controls__captions--on'); button.setAttribute('data-active-captions', 'off'); _this._hideCaptions(); } else { button.classList.add('op-controls__captions--on'); button.setAttribute('data-active-captions', ((_a = __classPrivateFieldGet(_this, _Captions_currentTrack, "f")) === null || _a === void 0 ? void 0 : _a.language) || 'off'); _this._showCaptions(); } var _iterator2 = _createForOfIteratorHelper(__classPrivateFieldGet(_this, _Captions_mediaTrackList, "f")), _step2; try { for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { var _track = _step2.value; _track.mode = button.getAttribute('data-active-captions') === _track.language ? 'showing' : 'hidden'; } } catch (err) { _iterator2.e(err); } finally { _iterator2.f(); } } }; __classPrivateFieldGet(this, _Captions_events, "f").button.mouseover = function () { if (!IS_IOS && !IS_ANDROID && detachMenus) { var menus = __classPrivateFieldGet(_this, _Captions_player, "f").getContainer().querySelectorAll('.op-settings'); for (var i = 0, total = menus.length; i < total; ++i) { if (menus[i] !== __classPrivateFieldGet(_this, _Captions_menu, "f")) { menus[i].setAttribute('aria-hidden', 'true'); } } if (__classPrivateFieldGet(_this, _Captions_menu, "f").getAttribute('aria-hidden') === 'true') { __classPrivateFieldGet(_this, _Captions_menu, "f").setAttribute('aria-hidden', 'false'); } } }; __classPrivateFieldGet(this, _Captions_events, "f").button.mouseout = function () { if (!IS_IOS && !IS_ANDROID && detachMenus) { var menus = __classPrivateFieldGet(_this, _Captions_player, "f").getContainer().querySelectorAll('.op-settings'); for (var i = 0, total = menus.length; i < total; ++i) { menus[i].setAttribute('aria-hidden', 'true'); } if (__classPrivateFieldGet(_this, _Captions_menu, "f").getAttribute('aria-hidden') === 'false') { __classPrivateFieldGet(_this, _Captions_menu, "f").setAttribute('aria-hidden', 'true'); } } }; __classPrivateFieldGet(this, _Captions_button, "f").addEventListener('click', __classPrivateFieldGet(this, _Captions_events, "f").button.click, EVENT_OPTIONS); __classPrivateFieldGet(this, _Captions_events, "f").global.click = function (e) { var option = e.target; if (option.closest("#".concat(__classPrivateFieldGet(_this, _Captions_player, "f").id)) && option.classList.contains('op-subtitles__option')) { var language = option.getAttribute('data-value').replace('captions-', ''); _this._hideCaptions(); if (language === 'off') { __classPrivateFieldSet(_this, _Captions_currentTrack, undefined, "f"); } var _iterator3 = _createForOfIteratorHelper(__classPrivateFieldGet(_this, _Captions_mediaTrackList, "f")), _step3; try { for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { var _track2 = _step3.value; _track2.mode = _track2.language === language ? 'showing' : 'hidden'; if (_track2.language === language) { __classPrivateFieldSet(_this, _Captions_currentTrack, _track2, "f"); _this._showCaptions(); } } } catch (err) { _iterator3.e(err); } finally { _iterator3.f(); } if (detachMenus) { if (__classPrivateFieldGet(_this, _Captions_button, "f").classList.contains('op-controls__captions--on')) { __classPrivateFieldGet(_this, _Captions_button, "f").classList.remove('op-controls__captions--on'); __classPrivateFieldGet(_this, _Captions_button, "f").setAttribute('data-active-captions', 'off'); } else { __classPrivateFieldGet(_this, _Captions_button, "f").classList.add('op-controls__captions--on'); __classPrivateFieldGet(_this, _Captions_button, "f").setAttribute('data-active-captions', language); } var captions = __classPrivateFieldGet(_this, _Captions_menu, "f").querySelectorAll('.op-settings__submenu-item'); for (var _i2 = 0, _Array$from2 = Array.from(captions); _i2 < _Array$from2.length; _i2++) { var caption = _Array$from2[_i2]; caption.setAttribute('aria-checked', 'false'); } option.parentElement.setAttribute('aria-checked', 'true'); __classPrivateFieldGet(_this, _Captions_menu, "f").setAttribute('aria-hidden', 'false'); } else { __classPrivateFieldGet(_this, _Captions_button, "f").setAttribute('data-active-captions', language); } var event = addEvent('captionschanged'); __classPrivateFieldGet(_this, _Captions_player, "f").getElement().dispatchEvent(event); } }; __classPrivateFieldGet(this, _Captions_events, "f").global.cuechange = function (e) { var _a; _this._hideCaptions(); var t = e.target; if (t.mode !== 'showing' || __classPrivateFieldGet(_this, _Captions_button, "f").getAttribute('data-active-captions') === 'off') { return; } if (t.activeCues && ((_a = t.activeCues) === null || _a === void 0 ? void 0 : _a.length) > 0) { _this._showCaptions(); } }; if (detachMenus) { __classPrivateFieldGet(this, _Captions_button, "f").addEventListener('mouseover', __classPrivateFieldGet(this, _Captions_events, "f").button.mouseover, EVENT_OPTIONS); __classPrivateFieldGet(this, _Captions_menu, "f").addEventListener('mouseover', __classPrivateFieldGet(this, _Captions_events, "f").button.mouseover, EVENT_OPTIONS); __classPrivateFieldGet(this, _Captions_menu, "f").addEventListener('mouseout', __classPrivateFieldGet(this, _Captions_events, "f").button.mouseout, EVENT_OPTIONS); __classPrivateFieldGet(this, _Captions_player, "f").getElement().addEventListener('controlshidden', __classPrivateFieldGet(this, _Captions_events, "f").button.mouseout, EVENT_OPTIONS); } document.addEventListener('click', __classPrivateFieldGet(this, _Captions_events, "f").global.click, EVENT_OPTIONS); var _iterator4 = _createForOfIteratorHelper(__classPrivateFieldGet(this, _Captions_mediaTrackList, "f")), _step4; try { for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { var _track3 = _step4.value; _track3.mode = _track3.mode !== 'showing' ? 'hidden' : _track3.mode; _track3.addEventListener('cuechange', __classPrivateFieldGet(this, _Captions_events, "f").global.cuechange, EVENT_OPTIONS); } } catch (err) { _iterator4.e(err); } finally { _iterator4.f(); } var targetTrack = __classPrivateFieldGet(this, _Captions_player, "f").getElement().querySelector('track:is([kind="subtitles"],[kind="captions"])[default]'); if (targetTrack) { var matchTrack = __classPrivateFieldGet(this, _Captions_mediaTrackList, "f").find(function (el) { return el.language === targetTrack.srclang; }); if (matchTrack) { this._setDefaultTrack(matchTrack); } } } }, { key: "destroy", value: function destroy() { var _classPrivateFieldGe3 = __classPrivateFieldGet(this, _Captions_player, "f").getOptions(), detachMenus = _classPrivateFieldGe3.detachMenus; if (!__classPrivateFieldGet(this, _Captions_hasTracks, "f")) { return; } var _iterator5 = _createForOfIteratorHelper(__classPrivateFieldGet(this, _Captions_mediaTrackList, "f")), _step5; try { for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) { var track = _step5.value; track.removeEventListener('cuechange', __classPrivateFieldGet(this, _Captions_events, "f").global.cuechange); } } catch (err) { _iterator5.e(err); } finally { _iterator5.f(); } document.removeEventListener('click', __classPrivateFieldGet(this, _Captions_events, "f").global.click); __classPrivateFieldGet(this, _Captions_button, "f").removeEventListener('click', __classPrivateFieldGet(this, _Captions_events, "f").button.click); if (detachMenus) { __classPrivateFieldGet(this, _Captions_button, "f").removeEventListener('mouseover', __classPrivateFieldGet(this, _Captions_events, "f").button.mouseover); __classPrivateFieldGet(this, _Captions_menu, "f").removeEventListener('mouseover', __classPrivateFieldGet(this, _Captions_events, "f").button.mouseover); __classPrivateFieldGet(this, _Captions_menu, "f").removeEventListener('mouseout', __classPrivateFieldGet(this, _Captions_events, "f").button.mouseout); __classPrivateFieldGet(this, _Captions_player, "f").getElement().removeEventListener('controlshidden', __classPrivateFieldGet(this, _Captions_events, "f").button.mouseout); __classPrivateFieldGet(this, _Captions_menu, "f").remove(); } __classPrivateFieldGet(this, _Captions_button, "f").remove(); } }, { key: "addSettings", value: function addSettings() { var _classPrivateFieldGe4 = __classPrivateFieldGet(this, _Captions_player, "f").getOptions(), detachMenus = _classPrivateFieldGe4.detachMenus, labels = _classPrivateFieldGe4.labels; if (detachMenus || __classPrivateFieldGet(this, _Captions_mediaTrackList, "f").length <= 1) { return {}; } var subitems = this._formatMenuItems(); return subitems.length > 2 ? { className: 'op-subtitles__option', default: __classPrivateFieldGet(this, _Captions_default, "f") || 'off', key: 'captions', name: (labels === null || labels === void 0 ? void 0 : labels.captions) || '', subitems: subitems } : {}; } }, { key: "_formatMenuItems", value: function _formatMenuItems() { var _classPrivateFieldGe5 = __classPrivateFieldGet(this, _Captions_player, "f").getOptions(), labels = _classPrivateFieldGe5.labels, detachMenus = _classPrivateFieldGe5.detachMenus; if (__classPrivateFieldGet(this, _Captions_mediaTrackList, "f").length <= 1 && !detachMenus) { return []; } var items = [{ key: 'off', label: (labels === null || labels === void 0 ? void 0 : labels.off) || '' }]; var _iterator6 = _createForOfIteratorHelper(__classPrivateFieldGet(this, _Captions_mediaTrackList, "f")), _step6; try { var _loop = function _loop() { var track = _step6.value; var label = (labels === null || labels === void 0 ? void 0 : labels.lang) ? labels.lang[track.language] : null; items = items.filter(function (el) { return el.key !== track.language; }); items.push({ key: track.language, label: label || track.label }); }; for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) { _loop(); } } catch (err) { _iterator6.e(err); } finally { _iterator6.f(); } return items; } }, { key: "_setDefaultTrack", value: function _setDefaultTrack(track) { var _a, _b; track.mode = 'showing'; __classPrivateFieldSet(this, _Captions_default, track.language, "f"); __classPrivateFieldGet(this, _Captions_button, "f").setAttribute('data-active-captions', __classPrivateFieldGet(this, _Captions_default, "f")); __classPrivateFieldGet(this, _Captions_button, "f").classList.add('op-controls__captions--on'); __classPrivateFieldGet(this, _Captions_captions, "f").classList.add('op-captions--on'); __classPrivateFieldSet(this, _Captions_currentTrack, track, "f"); var options = document.querySelectorAll('.op-settings__submenu-item') || []; for (var _i3 = 0, _Array$from3 = Array.from(options); _i3 < _Array$from3.length; _i3++) { var option = _Array$from3[_i3]; option.setAttribute('aria-checked', 'false'); } (_b = (_a = document.querySelector(".op-subtitles__option[data-value=\"captions-".concat(track.language, "\"]"))) === null || _a === void 0 ? void 0 : _a.parentElement) === null || _b === void 0 ? void 0 : _b.setAttribute('aria-checked', 'true'); } }, { key: "_showCaptions", value: function _showCaptions() { var _a; for (var _i4 = 0, _Array$from4 = Array.from(((_a = __classPrivateFieldGet(this, _Captions_currentTrack, "f")) === null || _a === void 0 ? void 0 : _a.activeCues) || []); _i4 < _Array$from4.length; _i4++) { var cue = _Array$from4[_i4]; var content = (cue === null || cue === void 0 ? void 0 : cue.text) || ''; if (content && __classPrivateFieldGet(this, _Captions_captions, "f")) { var caption = document.createElement('span'); caption.innerHTML = content; __classPrivateFieldGet(this, _Captions_captions, "f").prepend(caption); __classPrivateFieldGet(this, _Captions_captions, "f").classList.add('op-captions--on'); } else { this._hideCaptions(); } } } }, { key: "_hideCaptions", value: function _hideCaptions() { var _a; while ((_a = __classPrivateFieldGet(this, _Captions_captions, "f")) === null || _a === void 0 ? void 0 : _a.lastChild) { __classPrivateFieldGet(this, _Captions_captions, "f").removeChild(__classPrivateFieldGet(this, _Captions_captions, "f").lastChild); } } }]); }(); _Captions_player = new WeakMap(), _Captions_button = new WeakMap(), _Captions_captions = new WeakMap(), _Captions_menu = new WeakMap(), _Captions_events = new WeakMap(), _Captions_mediaTrackList = new WeakMap(), _Captions_hasTracks = new WeakMap(), _Captions_currentTrack = new WeakMap(), _Captions_default = new WeakMap(), _Captions_controlPosition = new WeakMap(), _Captions_controlLayer = new WeakMap(); /* harmony default export */ var captions = (Captions); ;// ./src/js/controls/fullscreen.ts var fullscreen_classPrivateFieldSet = undefined && undefined.__classPrivateFieldSet || function (receiver, state, value, kind, f) { if (kind === "m") throw new TypeError("Private method is not writable"); if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); return kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value), value; }; var fullscreen_classPrivateFieldGet = undefined && undefined.__classPrivateFieldGet || function (receiver, state, kind, f) { if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); if (typeof state === "function" ? receiver !== state || !f : !sta