fp/services/bright/assets/vendor/player.js

1609 lines
56 KiB
JavaScript
Raw Normal View History

2025-01-11 03:10:04 +00:00
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __commonJS = (cb, mod) => function __require() {
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
// ../../node_modules/tseep/lib/types.js
var require_types = __commonJS({
"../../node_modules/tseep/lib/types.js"(exports2) {
"use strict";
Object.defineProperty(exports2, "__esModule", { value: true });
}
});
// ../../node_modules/tseep/lib/task-collection/utils.js
var require_utils = __commonJS({
"../../node_modules/tseep/lib/task-collection/utils.js"(exports2) {
"use strict";
Object.defineProperty(exports2, "__esModule", { value: true });
exports2._fast_remove_single = void 0;
function _fast_remove_single(arr, index) {
if (index === -1)
return;
if (index === 0)
arr.shift();
else if (index === arr.length - 1)
arr.length = arr.length - 1;
else
arr.splice(index, 1);
}
exports2._fast_remove_single = _fast_remove_single;
}
});
// ../../node_modules/tseep/lib/task-collection/bake-collection.js
var require_bake_collection = __commonJS({
"../../node_modules/tseep/lib/task-collection/bake-collection.js"(exports, module) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.bakeCollectionVariadic = exports.bakeCollectionAwait = exports.bakeCollection = exports.BAKED_EMPTY_FUNC = void 0;
exports.BAKED_EMPTY_FUNC = function() {
};
var FORLOOP_FALLBACK = 1500;
function generateArgsDefCode(numArgs) {
var argsDefCode2 = "";
if (numArgs === 0)
return argsDefCode2;
for (var i = 0; i < numArgs - 1; ++i) {
argsDefCode2 += "arg" + String(i) + ", ";
}
argsDefCode2 += "arg" + String(numArgs - 1);
return argsDefCode2;
}
function generateBodyPartsCode(argsDefCode2, collectionLength) {
var funcDefCode2 = "", funcCallCode2 = "";
for (var i = 0; i < collectionLength; ++i) {
funcDefCode2 += "var f".concat(i, " = collection[").concat(i, "];\n");
funcCallCode2 += "f".concat(i, "(").concat(argsDefCode2, ")\n");
}
return { funcDefCode: funcDefCode2, funcCallCode: funcCallCode2 };
}
function generateBodyPartsVariadicCode(collectionLength) {
var funcDefCode2 = "", funcCallCode2 = "";
for (var i = 0; i < collectionLength; ++i) {
funcDefCode2 += "var f".concat(i, " = collection[").concat(i, "];\n");
funcCallCode2 += "f".concat(i, ".apply(undefined, arguments)\n");
}
return { funcDefCode: funcDefCode2, funcCallCode: funcCallCode2 };
}
function bakeCollection(collection, fixedArgsNum) {
if (collection.length === 0)
return exports.BAKED_EMPTY_FUNC;
else if (collection.length === 1)
return collection[0];
var funcFactoryCode;
if (collection.length < FORLOOP_FALLBACK) {
var argsDefCode = generateArgsDefCode(fixedArgsNum);
var _a = generateBodyPartsCode(argsDefCode, collection.length), funcDefCode = _a.funcDefCode, funcCallCode = _a.funcCallCode;
funcFactoryCode = "(function(collection) {\n ".concat(funcDefCode, "\n collection = undefined;\n return (function(").concat(argsDefCode, ") {\n ").concat(funcCallCode, "\n });\n })");
} else {
var argsDefCode = generateArgsDefCode(fixedArgsNum);
if (collection.length % 10 === 0) {
funcFactoryCode = "(function(collection) {\n return (function(".concat(argsDefCode, ") {\n for (var i = 0; i < collection.length; i += 10) {\n collection[i](").concat(argsDefCode, ");\n collection[i+1](").concat(argsDefCode, ");\n collection[i+2](").concat(argsDefCode, ");\n collection[i+3](").concat(argsDefCode, ");\n collection[i+4](").concat(argsDefCode, ");\n collection[i+5](").concat(argsDefCode, ");\n collection[i+6](").concat(argsDefCode, ");\n collection[i+7](").concat(argsDefCode, ");\n collection[i+8](").concat(argsDefCode, ");\n collection[i+9](").concat(argsDefCode, ");\n }\n });\n })");
} else if (collection.length % 4 === 0) {
funcFactoryCode = "(function(collection) {\n return (function(".concat(argsDefCode, ") {\n for (var i = 0; i < collection.length; i += 4) {\n collection[i](").concat(argsDefCode, ");\n collection[i+1](").concat(argsDefCode, ");\n collection[i+2](").concat(argsDefCode, ");\n collection[i+3](").concat(argsDefCode, ");\n }\n });\n })");
} else if (collection.length % 3 === 0) {
funcFactoryCode = "(function(collection) {\n return (function(".concat(argsDefCode, ") {\n for (var i = 0; i < collection.length; i += 3) {\n collection[i](").concat(argsDefCode, ");\n collection[i+1](").concat(argsDefCode, ");\n collection[i+2](").concat(argsDefCode, ");\n }\n });\n })");
} else {
funcFactoryCode = "(function(collection) {\n return (function(".concat(argsDefCode, ") {\n for (var i = 0; i < collection.length; ++i) {\n collection[i](").concat(argsDefCode, ");\n }\n });\n })");
}
}
{
var bakeCollection_1 = void 0;
var fixedArgsNum_1 = void 0;
var bakeCollectionVariadic_1 = void 0;
var bakeCollectionAwait_1 = void 0;
var funcFactory = eval(funcFactoryCode);
return funcFactory(collection);
}
}
exports.bakeCollection = bakeCollection;
function bakeCollectionAwait(collection, fixedArgsNum) {
if (collection.length === 0)
return exports.BAKED_EMPTY_FUNC;
else if (collection.length === 1)
return collection[0];
var funcFactoryCode;
if (collection.length < FORLOOP_FALLBACK) {
var argsDefCode = generateArgsDefCode(fixedArgsNum);
var _a = generateBodyPartsCode(argsDefCode, collection.length), funcDefCode = _a.funcDefCode, funcCallCode = _a.funcCallCode;
funcFactoryCode = "(function(collection) {\n ".concat(funcDefCode, "\n collection = undefined;\n return (function(").concat(argsDefCode, ") {\n return Promise.all([ ").concat(funcCallCode, " ]);\n });\n })");
} else {
var argsDefCode = generateArgsDefCode(fixedArgsNum);
funcFactoryCode = "(function(collection) {\n return (function(".concat(argsDefCode, ") {\n var promises = Array(collection.length);\n for (var i = 0; i < collection.length; ++i) {\n promises[i] = collection[i](").concat(argsDefCode, ");\n }\n return Promise.all(promises);\n });\n })");
}
{
var bakeCollection_2 = void 0;
var fixedArgsNum_2 = void 0;
var bakeCollectionVariadic_2 = void 0;
var bakeCollectionAwait_2 = void 0;
var funcFactory = eval(funcFactoryCode);
return funcFactory(collection);
}
}
exports.bakeCollectionAwait = bakeCollectionAwait;
function bakeCollectionVariadic(collection) {
if (collection.length === 0)
return exports.BAKED_EMPTY_FUNC;
else if (collection.length === 1)
return collection[0];
var funcFactoryCode;
if (collection.length < FORLOOP_FALLBACK) {
var _a = generateBodyPartsVariadicCode(collection.length), funcDefCode = _a.funcDefCode, funcCallCode = _a.funcCallCode;
funcFactoryCode = "(function(collection) {\n ".concat(funcDefCode, "\n collection = undefined;\n return (function() {\n ").concat(funcCallCode, "\n });\n })");
} else {
funcFactoryCode = "(function(collection) {\n return (function() {\n for (var i = 0; i < collection.length; ++i) {\n collection[i].apply(undefined, arguments);\n }\n });\n })";
}
{
var bakeCollection_3 = void 0;
var fixedArgsNum = void 0;
var bakeCollectionVariadic_3 = void 0;
var bakeCollectionAwait_3 = void 0;
var funcFactory = eval(funcFactoryCode);
return funcFactory(collection);
}
}
exports.bakeCollectionVariadic = bakeCollectionVariadic;
}
});
// ../../node_modules/tseep/lib/task-collection/task-collection.js
var require_task_collection = __commonJS({
"../../node_modules/tseep/lib/task-collection/task-collection.js"(exports2) {
"use strict";
var __spreadArray = exports2 && exports2.__spreadArray || function(to, from, pack) {
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
};
Object.defineProperty(exports2, "__esModule", { value: true });
exports2.TaskCollection = void 0;
var utils_1 = require_utils();
var bake_collection_1 = require_bake_collection();
function push_norebuild(a, b) {
var len = this.length;
if (len > 1) {
if (b) {
var _a2;
(_a2 = this._tasks).push.apply(_a2, arguments);
this.length += arguments.length;
} else {
this._tasks.push(a);
this.length++;
}
} else {
if (b) {
if (len === 1) {
var newAr = Array(1 + arguments.length);
newAr.push(newAr);
newAr.push.apply(newAr, arguments);
this._tasks = newAr;
} else {
var newAr = Array(arguments.length);
newAr.push.apply(newAr, arguments);
this._tasks = newAr;
}
this.length += arguments.length;
} else {
if (len === 1)
this._tasks = [this._tasks, a];
else
this._tasks = a;
this.length++;
}
}
}
function push_rebuild(a, b) {
var len = this.length;
if (len > 1) {
if (b) {
var _a2;
(_a2 = this._tasks).push.apply(_a2, arguments);
this.length += arguments.length;
} else {
this._tasks.push(a);
this.length++;
}
} else {
if (b) {
if (len === 1) {
var newAr = Array(1 + arguments.length);
newAr.push(newAr);
newAr.push.apply(newAr, arguments);
this._tasks = newAr;
} else {
var newAr = Array(arguments.length);
newAr.push.apply(newAr, arguments);
this._tasks = newAr;
}
this.length += arguments.length;
} else {
if (len === 1)
this._tasks = [this._tasks, a];
else
this._tasks = a;
this.length++;
}
}
if (this.firstEmitBuildStrategy)
this.call = rebuild_on_first_call;
else
this.rebuild();
}
function removeLast_norebuild(a) {
if (this.length === 0)
return;
if (this.length === 1) {
if (this._tasks === a) {
this.length = 0;
}
} else {
(0, utils_1._fast_remove_single)(this._tasks, this._tasks.lastIndexOf(a));
if (this._tasks.length === 1) {
this._tasks = this._tasks[0];
this.length = 1;
} else
this.length = this._tasks.length;
}
}
function removeLast_rebuild(a) {
if (this.length === 0)
return;
if (this.length === 1) {
if (this._tasks === a) {
this.length = 0;
}
if (this.firstEmitBuildStrategy) {
this.call = bake_collection_1.BAKED_EMPTY_FUNC;
return;
} else {
this.rebuild();
return;
}
} else {
(0, utils_1._fast_remove_single)(this._tasks, this._tasks.lastIndexOf(a));
if (this._tasks.length === 1) {
this._tasks = this._tasks[0];
this.length = 1;
} else
this.length = this._tasks.length;
}
if (this.firstEmitBuildStrategy)
this.call = rebuild_on_first_call;
else
this.rebuild();
}
function insert_norebuild(index) {
var _b;
var func = [];
for (var _i = 1; _i < arguments.length; _i++) {
func[_i - 1] = arguments[_i];
}
if (this.length === 0) {
this._tasks = func;
this.length = 1;
} else if (this.length === 1) {
func.unshift(this._tasks);
this._tasks = func;
this.length = this._tasks.length;
} else {
(_b = this._tasks).splice.apply(_b, __spreadArray([index, 0], func, false));
this.length = this._tasks.length;
}
}
function insert_rebuild(index) {
var _b;
var func = [];
for (var _i = 1; _i < arguments.length; _i++) {
func[_i - 1] = arguments[_i];
}
if (this.length === 0) {
this._tasks = func;
this.length = 1;
} else if (this.length === 1) {
func.unshift(this._tasks);
this._tasks = func;
this.length = this._tasks.length;
} else {
(_b = this._tasks).splice.apply(_b, __spreadArray([index, 0], func, false));
this.length = this._tasks.length;
}
if (this.firstEmitBuildStrategy)
this.call = rebuild_on_first_call;
else
this.rebuild();
}
function rebuild_noawait() {
if (this.length === 0)
this.call = bake_collection_1.BAKED_EMPTY_FUNC;
else if (this.length === 1)
this.call = this._tasks;
else
this.call = (0, bake_collection_1.bakeCollection)(this._tasks, this.argsNum);
}
function rebuild_await() {
if (this.length === 0)
this.call = bake_collection_1.BAKED_EMPTY_FUNC;
else if (this.length === 1)
this.call = this._tasks;
else
this.call = (0, bake_collection_1.bakeCollectionAwait)(this._tasks, this.argsNum);
}
function rebuild_on_first_call() {
this.rebuild();
this.call.apply(void 0, arguments);
}
var TaskCollection = (
/** @class */
/* @__PURE__ */ function() {
function TaskCollection2(argsNum, autoRebuild, initialTasks, awaitTasks) {
if (autoRebuild === void 0) {
autoRebuild = true;
}
if (initialTasks === void 0) {
initialTasks = null;
}
if (awaitTasks === void 0) {
awaitTasks = false;
}
this.awaitTasks = awaitTasks;
this.call = bake_collection_1.BAKED_EMPTY_FUNC;
this.argsNum = argsNum;
this.firstEmitBuildStrategy = true;
if (awaitTasks)
this.rebuild = rebuild_await.bind(this);
else
this.rebuild = rebuild_noawait.bind(this);
this.setAutoRebuild(autoRebuild);
if (initialTasks) {
if (typeof initialTasks === "function") {
this._tasks = initialTasks;
this.length = 1;
} else {
this._tasks = initialTasks;
this.length = initialTasks.length;
}
} else {
this._tasks = null;
this.length = 0;
}
if (autoRebuild)
this.rebuild();
}
return TaskCollection2;
}()
);
exports2.TaskCollection = TaskCollection;
function fastClear() {
this._tasks = null;
this.length = 0;
this.call = bake_collection_1.BAKED_EMPTY_FUNC;
}
function clear() {
this._tasks = null;
this.length = 0;
this.call = bake_collection_1.BAKED_EMPTY_FUNC;
}
function growArgsNum(argsNum) {
if (this.argsNum < argsNum) {
this.argsNum = argsNum;
if (this.firstEmitBuildStrategy)
this.call = rebuild_on_first_call;
else
this.rebuild();
}
}
function setAutoRebuild(newVal) {
if (newVal) {
this.push = push_rebuild.bind(this);
this.insert = insert_rebuild.bind(this);
this.removeLast = removeLast_rebuild.bind(this);
} else {
this.push = push_norebuild.bind(this);
this.insert = insert_norebuild.bind(this);
this.removeLast = removeLast_norebuild.bind(this);
}
}
function tasksAsArray() {
if (this.length === 0)
return [];
if (this.length === 1)
return [this._tasks];
return this._tasks;
}
function setTasks(tasks) {
if (tasks.length === 0) {
this.length = 0;
this.call = bake_collection_1.BAKED_EMPTY_FUNC;
} else if (tasks.length === 1) {
this.length = 1;
this.call = tasks[0];
this._tasks = tasks[0];
} else {
this.length = tasks.length;
this._tasks = tasks;
if (this.firstEmitBuildStrategy)
this.call = rebuild_on_first_call;
else
this.rebuild();
}
}
TaskCollection.prototype.fastClear = fastClear;
TaskCollection.prototype.clear = clear;
TaskCollection.prototype.growArgsNum = growArgsNum;
TaskCollection.prototype.setAutoRebuild = setAutoRebuild;
TaskCollection.prototype.tasksAsArray = tasksAsArray;
TaskCollection.prototype.setTasks = setTasks;
}
});
// ../../node_modules/tseep/lib/task-collection/index.js
var require_task_collection2 = __commonJS({
"../../node_modules/tseep/lib/task-collection/index.js"(exports2) {
"use strict";
var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
if (k2 === void 0) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() {
return m[k];
} };
}
Object.defineProperty(o, k2, desc);
} : function(o, m, k, k2) {
if (k2 === void 0) k2 = k;
o[k2] = m[k];
});
var __exportStar = exports2 && exports2.__exportStar || function(m, exports3) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding(exports3, m, p);
};
Object.defineProperty(exports2, "__esModule", { value: true });
__exportStar(require_task_collection(), exports2);
}
});
// ../../node_modules/tseep/lib/utils.js
var require_utils2 = __commonJS({
"../../node_modules/tseep/lib/utils.js"(exports2) {
"use strict";
Object.defineProperty(exports2, "__esModule", { value: true });
exports2.nullObj = void 0;
function nullObj() {
var x = {};
x.__proto__ = null;
return x;
}
exports2.nullObj = nullObj;
}
});
// ../../node_modules/tseep/lib/ee.js
var require_ee = __commonJS({
"../../node_modules/tseep/lib/ee.js"(exports2) {
"use strict";
var __spreadArray = exports2 && exports2.__spreadArray || function(to, from, pack) {
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
};
Object.defineProperty(exports2, "__esModule", { value: true });
exports2.EventEmitter = void 0;
var task_collection_1 = require_task_collection2();
var utils_1 = require_utils();
var utils_2 = require_utils2();
function emit(event, a, b, c, d, e) {
var ev = this.events[event];
if (ev) {
if (ev.length === 0)
return false;
if (ev.argsNum < 6) {
ev.call(a, b, c, d, e);
} else {
var arr = new Array(ev.argsNum);
for (var i = 0, len = arr.length; i < len; ++i) {
arr[i] = arguments[i + 1];
}
ev.call.apply(void 0, arr);
}
return true;
}
return false;
}
function emitHasOnce(event, a, b, c, d, e) {
var ev = this.events[event];
var argsArr;
if (ev !== void 0) {
if (ev.length === 0)
return false;
if (ev.argsNum < 6) {
ev.call(a, b, c, d, e);
} else {
argsArr = new Array(ev.argsNum);
for (var i = 0, len = argsArr.length; i < len; ++i) {
argsArr[i] = arguments[i + 1];
}
ev.call.apply(void 0, argsArr);
}
}
var oev = this.onceEvents[event];
if (oev) {
if (typeof oev === "function") {
this.onceEvents[event] = void 0;
if (arguments.length < 6) {
oev(a, b, c, d, e);
} else {
if (argsArr === void 0) {
argsArr = new Array(arguments.length - 1);
for (var i = 0, len = argsArr.length; i < len; ++i) {
argsArr[i] = arguments[i + 1];
}
}
oev.apply(void 0, argsArr);
}
} else {
var fncs = oev;
this.onceEvents[event] = void 0;
if (arguments.length < 6) {
for (var i = 0; i < fncs.length; ++i) {
fncs[i](a, b, c, d, e);
}
} else {
if (argsArr === void 0) {
argsArr = new Array(arguments.length - 1);
for (var i = 0, len = argsArr.length; i < len; ++i) {
argsArr[i] = arguments[i + 1];
}
}
for (var i = 0; i < fncs.length; ++i) {
fncs[i].apply(void 0, argsArr);
}
}
}
return true;
}
return ev !== void 0;
}
var EventEmitter2 = (
/** @class */
function() {
function EventEmitter3() {
this.events = (0, utils_2.nullObj)();
this.onceEvents = (0, utils_2.nullObj)();
this._symbolKeys = /* @__PURE__ */ new Set();
this.maxListeners = Infinity;
}
Object.defineProperty(EventEmitter3.prototype, "_eventsCount", {
get: function() {
return this.eventNames().length;
},
enumerable: false,
configurable: true
});
return EventEmitter3;
}()
);
exports2.EventEmitter = EventEmitter2;
function once(event, listener) {
if (this.emit === emit) {
this.emit = emitHasOnce;
}
switch (typeof this.onceEvents[event]) {
case "undefined":
this.onceEvents[event] = listener;
if (typeof event === "symbol")
this._symbolKeys.add(event);
break;
case "function":
this.onceEvents[event] = [this.onceEvents[event], listener];
break;
case "object":
this.onceEvents[event].push(listener);
}
return this;
}
function addListener(event, listener, argsNum) {
if (argsNum === void 0) {
argsNum = listener.length;
}
if (typeof listener !== "function")
throw new TypeError("The listener must be a function");
var evtmap = this.events[event];
if (!evtmap) {
this.events[event] = new task_collection_1.TaskCollection(argsNum, true, listener, false);
if (typeof event === "symbol")
this._symbolKeys.add(event);
} else {
evtmap.push(listener);
evtmap.growArgsNum(argsNum);
if (this.maxListeners !== Infinity && this.maxListeners <= evtmap.length)
console.warn('Maximum event listeners for "'.concat(String(event), '" event!'));
}
return this;
}
function removeListener(event, listener) {
var evt = this.events[event];
if (evt) {
evt.removeLast(listener);
}
var evto = this.onceEvents[event];
if (evto) {
if (typeof evto === "function") {
this.onceEvents[event] = void 0;
} else if (typeof evto === "object") {
if (evto.length === 1 && evto[0] === listener) {
this.onceEvents[event] = void 0;
} else {
(0, utils_1._fast_remove_single)(evto, evto.lastIndexOf(listener));
}
}
}
return this;
}
function addListenerBound(event, listener, bindTo, argsNum) {
if (bindTo === void 0) {
bindTo = this;
}
if (argsNum === void 0) {
argsNum = listener.length;
}
if (!this.boundFuncs)
this.boundFuncs = /* @__PURE__ */ new Map();
var bound = listener.bind(bindTo);
this.boundFuncs.set(listener, bound);
return this.addListener(event, bound, argsNum);
}
function removeListenerBound(event, listener) {
var _a2, _b;
var bound = (_a2 = this.boundFuncs) === null || _a2 === void 0 ? void 0 : _a2.get(listener);
(_b = this.boundFuncs) === null || _b === void 0 ? void 0 : _b.delete(listener);
return this.removeListener(event, bound);
}
function hasListeners(event) {
return this.events[event] && !!this.events[event].length;
}
function prependListener(event, listener, argsNum) {
if (argsNum === void 0) {
argsNum = listener.length;
}
if (typeof listener !== "function")
throw new TypeError("The listener must be a function");
var evtmap = this.events[event];
if (!evtmap || !(evtmap instanceof task_collection_1.TaskCollection)) {
evtmap = this.events[event] = new task_collection_1.TaskCollection(argsNum, true, listener, false);
if (typeof event === "symbol")
this._symbolKeys.add(event);
} else {
evtmap.insert(0, listener);
evtmap.growArgsNum(argsNum);
if (this.maxListeners !== Infinity && this.maxListeners <= evtmap.length)
console.warn('Maximum event listeners for "'.concat(String(event), '" event!'));
}
return this;
}
function prependOnceListener(event, listener) {
if (this.emit === emit) {
this.emit = emitHasOnce;
}
var evtmap = this.onceEvents[event];
if (!evtmap) {
this.onceEvents[event] = [listener];
if (typeof event === "symbol")
this._symbolKeys.add(event);
} else if (typeof evtmap !== "object") {
this.onceEvents[event] = [listener, evtmap];
if (typeof event === "symbol")
this._symbolKeys.add(event);
} else {
evtmap.unshift(listener);
if (this.maxListeners !== Infinity && this.maxListeners <= evtmap.length) {
console.warn('Maximum event listeners for "'.concat(String(event), '" once event!'));
}
}
return this;
}
function removeAllListeners(event) {
if (event === void 0) {
this.events = (0, utils_2.nullObj)();
this.onceEvents = (0, utils_2.nullObj)();
this._symbolKeys = /* @__PURE__ */ new Set();
} else {
this.events[event] = void 0;
this.onceEvents[event] = void 0;
if (typeof event === "symbol")
this._symbolKeys.delete(event);
}
return this;
}
function setMaxListeners(n) {
this.maxListeners = n;
return this;
}
function getMaxListeners() {
return this.maxListeners;
}
function listeners(event) {
if (this.emit === emit)
return this.events[event] ? this.events[event].tasksAsArray().slice() : [];
else {
if (this.events[event] && this.onceEvents[event]) {
return __spreadArray(__spreadArray([], this.events[event].tasksAsArray(), true), typeof this.onceEvents[event] === "function" ? [this.onceEvents[event]] : this.onceEvents[event], true);
} else if (this.events[event])
return this.events[event].tasksAsArray();
else if (this.onceEvents[event])
return typeof this.onceEvents[event] === "function" ? [this.onceEvents[event]] : this.onceEvents[event];
else
return [];
}
}
function eventNames() {
var _this = this;
if (this.emit === emit) {
var keys = Object.keys(this.events);
return __spreadArray(__spreadArray([], keys, true), Array.from(this._symbolKeys), true).filter(function(x) {
return x in _this.events && _this.events[x] && _this.events[x].length;
});
} else {
var keys = Object.keys(this.events).filter(function(x) {
return _this.events[x] && _this.events[x].length;
});
var keysO = Object.keys(this.onceEvents).filter(function(x) {
return _this.onceEvents[x] && _this.onceEvents[x].length;
});
return __spreadArray(__spreadArray(__spreadArray([], keys, true), keysO, true), Array.from(this._symbolKeys).filter(function(x) {
return x in _this.events && _this.events[x] && _this.events[x].length || x in _this.onceEvents && _this.onceEvents[x] && _this.onceEvents[x].length;
}), true);
}
}
function listenerCount(type) {
if (this.emit === emit)
return this.events[type] && this.events[type].length || 0;
else
return (this.events[type] && this.events[type].length || 0) + (this.onceEvents[type] && this.onceEvents[type].length || 0);
}
EventEmitter2.prototype.emit = emit;
EventEmitter2.prototype.on = addListener;
EventEmitter2.prototype.once = once;
EventEmitter2.prototype.addListener = addListener;
EventEmitter2.prototype.removeListener = removeListener;
EventEmitter2.prototype.addListenerBound = addListenerBound;
EventEmitter2.prototype.removeListenerBound = removeListenerBound;
EventEmitter2.prototype.hasListeners = hasListeners;
EventEmitter2.prototype.prependListener = prependListener;
EventEmitter2.prototype.prependOnceListener = prependOnceListener;
EventEmitter2.prototype.off = removeListener;
EventEmitter2.prototype.removeAllListeners = removeAllListeners;
EventEmitter2.prototype.setMaxListeners = setMaxListeners;
EventEmitter2.prototype.getMaxListeners = getMaxListeners;
EventEmitter2.prototype.listeners = listeners;
EventEmitter2.prototype.eventNames = eventNames;
EventEmitter2.prototype.listenerCount = listenerCount;
}
});
// ../../node_modules/tseep/lib/index.js
var require_lib = __commonJS({
"../../node_modules/tseep/lib/index.js"(exports2) {
"use strict";
var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
if (k2 === void 0) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() {
return m[k];
} };
}
Object.defineProperty(o, k2, desc);
} : function(o, m, k, k2) {
if (k2 === void 0) k2 = k;
o[k2] = m[k];
});
var __exportStar = exports2 && exports2.__exportStar || function(m, exports3) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding(exports3, m, p);
};
Object.defineProperty(exports2, "__esModule", { value: true });
__exportStar(require_types(), exports2);
__exportStar(require_ee(), exports2);
}
});
// src/hls-player.ts
import Hls from "hls.js";
// ../shared/src/assert.ts
function assert(value, message = "value is null") {
if (value === null || value === void 0) {
throw Error(message);
}
}
// src/hls-player.ts
var import_tseep = __toESM(require_lib(), 1);
// src/event-manager.ts
var EventManager = class {
constructor() {
__publicField(this, "bindings_", /* @__PURE__ */ new Set());
__publicField(this, "listen", (target) => (type, listener, context) => {
const binding = createBinding(target, type, listener, context);
this.bindings_.add(binding);
});
__publicField(this, "listenOnce", (target) => (type, listener, context) => {
const binding = createBinding(target, type, listener, context, true);
this.bindings_.add(binding);
});
__publicField(this, "unlisten", (target) => (type, listener) => {
const binding = Array.from(this.bindings_).find(
(binding2) => binding2.target === target && binding2.type === type && binding2.listener === listener
);
if (binding) {
binding.remove();
this.bindings_.delete(binding);
}
});
}
removeAll() {
this.bindings_.forEach((binding) => {
binding.remove();
});
this.bindings_.clear();
}
};
function createBinding(target, type, listener, context, once) {
const methodMap = {
add: target.addEventListener?.bind(target) ?? target.on?.bind(target),
remove: target.removeEventListener?.bind(target) ?? target.off?.bind(target)
};
const remove = () => {
methodMap.remove?.(type, callback);
};
const callback = async (...args) => {
try {
await listener.apply(context, args);
if (once) {
remove();
}
} catch (error) {
console.error(error);
}
};
methodMap.add?.(type, callback);
return {
target,
type,
listener,
context,
once,
remove
};
}
// src/helpers.ts
function preciseFloat(value) {
return Math.round((value + Number.EPSILON) * 100) / 100;
}
function getLangCode(key) {
const value = key ? langCodes[key]?.split(",")[0] : null;
if (!value) {
return "Unknown";
}
return `${value[0].toUpperCase()}${value.slice(1)}`;
}
var langCodes = {
sr: "\u0441\u0440\u043F\u0441\u043A\u0438 \u0458\u0435\u0437\u0438\u043A",
ro: "Rom\xE2n\u0103",
ii: "\uA188\uA320\uA4BF Nuosuhxop",
ty: "Reo Tahiti",
tl: "Wikang Tagalog",
yi: "\u05D9\u05D9\u05B4\u05D3\u05D9\u05E9",
ak: "Akan",
ms: "Bahasa Melayu, \u0628\u0647\u0627\u0633 \u0645\u0644\u0627\u064A\u0648",
ar: "\u0627\u0644\u0639\u0631\u0628\u064A\u0629",
no: "Norsk",
oj: "\u140A\u14C2\u1511\u14C8\u142F\u14A7\u140E\u14D0",
ff: "Fulfulde, Pulaar, Pular",
fa: "\u0641\u0627\u0631\u0633\u06CC",
sq: "Shqip",
ay: "aymar aru",
az: "az\u0259rbaycan dili",
zh: "\u4E2D\u6587 (Zh\u014Dngw\xE9n), \u6C49\u8BED, \u6F22\u8A9E",
cr: "\u14C0\u1426\u1403\u152D\u140D\u140F\u1423",
et: "eesti, eesti keel",
gn: "Ava\xF1e'\u1EBD",
ik: "I\xF1upiaq, I\xF1upiatun",
iu: "\u1403\u14C4\u1483\u144E\u1450\u1466",
kr: "Kanuri",
kv: "\u043A\u043E\u043C\u0438 \u043A\u044B\u0432",
kg: "Kikongo",
ku: "Kurd\xEE, \u0623\u06C7\u0632\u0628\u06D0\u0643",
lv: "latvie\u0161u valoda",
mg: "fiteny malagasy",
mn: "\u041C\u043E\u043D\u0433\u043E\u043B \u0445\u044D\u043B",
om: "Afaan Oromoo",
ps: "\u067E\u069A\u062A\u0648",
qu: "Runa Simi, Kichwa",
sc: "sardu",
sw: "Kiswahili",
uz: "O'zbek, \u040E\u0437\u0431\u0435\u043A, ",
za: "Saw cue\u014B\u0185, Saw cuengh",
bi: "Bislama",
nb: "Norsk Bokm\xE5l",
nn: "Norsk Nynorsk",
id: "Bahasa Indonesia",
tw: "Twi",
eo: "Esperanto",
ia: "Interlingua",
ie: "Originally called Occidental; then Interlingue after WWII",
io: "Ido",
vo: "Volap\xFCk",
bh: "\u092D\u094B\u091C\u092A\u0941\u0930\u0940",
he: "\u05E2\u05D1\u05E8\u05D9\u05EA",
sa: "\u0938\u0902\u0938\u094D\u0915\u0943\u0924\u092E\u094D",
cu: "\u0469\u0437\u044B\u043A\u044A \u0441\u043B\u043E\u0432\u0463\u043D\u044C\u0441\u043A\u044A",
pi: "\u092A\u093E\u0934\u093F",
ae: "avesta",
la: "latine, lingua latina",
hy: "\u0540\u0561\u0575\u0565\u0580\u0565\u0576",
ss: "SiSwati",
bo: "\u0F56\u0F7C\u0F51\u0F0B\u0F61\u0F72\u0F42",
nr: "isiNdebele",
sl: "Slovenski Jezik, Sloven\u0161\u010Dina",
or: "\u0B13\u0B21\u0B3C\u0B3F\u0B06",
nd: "isiNdebele",
na: "Dorerin Naoero",
mi: "te reo M\u0101ori",
mr: "\u092E\u0930\u093E\u0920\u0940",
lu: "Kiluba",
rn: "Ikirundi",
km: "\u1781\u17D2\u1798\u17C2\u179A, \u1781\u17C1\u1798\u179A\u1797\u17B6\u179F\u17B6, \u1797\u17B6\u179F\u17B6\u1781\u17D2\u1798\u17C2\u179A",
fy: "Frysk",
bn: "\u09AC\u09BE\u0982\u09B2\u09BE",
av: "\u0430\u0432\u0430\u0440 \u043C\u0430\u0446\u04C0, \u043C\u0430\u0433\u04C0\u0430\u0440\u0443\u043B \u043C\u0430\u0446\u04C0",
ab: "\u0430\u04A7\u0441\u0443\u0430 \u0431\u044B\u0437\u0448\u04D9\u0430, \u0430\u04A7\u0441\u0448\u04D9\u0430",
aa: "Afaraf",
af: "Afrikaans",
am: "\u12A0\u121B\u122D\u129B",
an: "aragon\xE9s",
as: "\u0985\u09B8\u09AE\u09C0\u09AF\u09BC\u09BE",
bm: "bamanankan",
ba: "\u0431\u0430\u0448\u04A1\u043E\u0440\u0442 \u0442\u0435\u043B\u0435",
eu: "euskara, euskera",
be: "\u0431\u0435\u043B\u0430\u0440\u0443\u0441\u043A\u0430\u044F \u043C\u043E\u0432\u0430",
bs: "bosanski jezik",
br: "brezhoneg",
bg: "\u0431\u044A\u043B\u0433\u0430\u0440\u0441\u043A\u0438 \u0435\u0437\u0438\u043A",
my: "\u1017\u1019\u102C\u1005\u102C",
ca: "catal\xE0, valenci\xE0",
ch: "Chamoru",
ce: "\u043D\u043E\u0445\u0447\u0438\u0439\u043D \u043C\u043E\u0442\u0442",
ny: "chiChe\u0175a, chinyanja",
cv: "\u0447\u04D1\u0432\u0430\u0448 \u0447\u04D7\u043B\u0445\u0438",
kw: "Kernewek",
co: "corsu, lingua corsa",
hr: "hrvatski jezik",
cs: "\u010De\u0161tina, \u010Desk\xFD jazyk",
da: "dansk",
dv: "\u078B\u07A8\u0788\u07AC\u0780\u07A8",
nl: "Nederlands, Vlaams",
dz: "\u0F62\u0FAB\u0F7C\u0F44\u0F0B\u0F41",
en: "English",
ee: "E\u028Begbe",
fo: "f\xF8royskt",
fj: "vosa Vakaviti",
fi: "suomi, suomen kieli",
fr: "fran\xE7ais, langue fran\xE7aise",
gl: "Galego",
ka: "\u10E5\u10D0\u10E0\u10D7\u10E3\u10DA\u10D8",
de: "Deutsch",
el: "\u03B5\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AC",
gu: "\u0A97\u0AC1\u0A9C\u0AB0\u0ABE\u0AA4\u0AC0",
ht: "Krey\xF2l ayisyen",
ha: "(Hausa) \u0647\u064E\u0648\u064F\u0633\u064E",
hz: "Otjiherero",
hi: "\u0939\u093F\u0928\u094D\u0926\u0940, \u0939\u093F\u0902\u0926\u0940",
ho: "Hiri Motu",
hu: "magyar",
ga: "Gaeilge",
ig: "As\u1EE5s\u1EE5 Igbo",
is: "\xCDslenska",
it: "Italiano",
ja: "\u65E5\u672C\u8A9E (\u306B\u307B\u3093\u3054)",
jv: "\uA9A7\uA9B1\uA997\uA9AE, Basa Jawa",
kl: "kalaallisut, kalaallit oqaasii",
kn: "\u0C95\u0CA8\u0CCD\u0CA8\u0CA1",
ks: "\u0915\u0936\u094D\u092E\u0940\u0930\u0940, \u0643\u0634\u0645\u064A\u0631\u064A",
kk: "\u049B\u0430\u0437\u0430\u049B \u0442\u0456\u043B\u0456",
ki: "G\u0129k\u0169y\u0169",
rw: "Ikinyarwanda",
ky: "\u041A\u044B\u0440\u0433\u044B\u0437\u0447\u0430, \u041A\u044B\u0440\u0433\u044B\u0437 \u0442\u0438\u043B\u0438",
ko: "\uD55C\uAD6D\uC5B4",
kj: "Kuanyama",
lb: "L\xEBtzebuergesch",
lg: "Luganda",
li: "Limburgs",
ln: "Ling\xE1la",
lo: "\u0E9E\u0EB2\u0EAA\u0EB2\u0EA5\u0EB2\u0EA7",
lt: "lietuvi\u0173 kalba",
gv: "Gaelg, Gailck",
mk: "\u043C\u0430\u043A\u0435\u0434\u043E\u043D\u0441\u043A\u0438 \u0458\u0430\u0437\u0438\u043A",
ml: "\u0D2E\u0D32\u0D2F\u0D3E\u0D33\u0D02",
mt: "Malti",
mh: "Kajin M\u0327aje\u013C",
nv: "Din\xE9 bizaad",
ne: "\u0928\u0947\u092A\u093E\u0932\u0940",
ng: "Owambo",
oc: "occitan, lenga d'\xF2c",
os: "\u0438\u0440\u043E\u043D \xE6\u0432\u0437\u0430\u0433",
pa: "\u0A2A\u0A70\u0A1C\u0A3E\u0A2C\u0A40",
pl: "j\u0119zyk polski, polszczyzna",
pt: "Portugu\xEAs",
rm: "Rumantsch Grischun",
ru: "\u0440\u0443\u0441\u0441\u043A\u0438\u0439",
sd: "\u0938\u093F\u0928\u094D\u0927\u0940, \u0633\u0646\u068C\u064A\u060C \u0633\u0646\u062F\u06BE\u06CC",
se: "Davvis\xE1megiella",
sm: "gagana fa'a Samoa",
sg: "y\xE2ng\xE2 t\xEE s\xE4ng\xF6",
gd: "G\xE0idhlig",
sn: "chiShona",
si: "\u0DC3\u0DD2\u0D82\u0DC4\u0DBD",
sk: "Sloven\u010Dina, Slovensk\xFD Jazyk",
so: "Soomaaliga, af Soomaali",
st: "Sesotho",
es: "Espa\xF1ol",
su: "Basa Sunda",
sv: "Svenska",
ta: "\u0BA4\u0BAE\u0BBF\u0BB4\u0BCD",
te: "\u0C24\u0C46\u0C32\u0C41\u0C17\u0C41",
tg: "\u0442\u043E\u04B7\u0438\u043A\u04E3, to\xE7ik\u012B, \u062A\u0627\u062C\u06CC\u06A9\u06CC",
th: "\u0E44\u0E17\u0E22",
ti: "\u1275\u130D\u122D\u129B",
tk: "T\xFCrkmen, \u0422\u04AF\u0440\u043A\u043C\u0435\u043D",
tn: "Setswana",
to: "Faka Tonga",
tr: "T\xFCrk\xE7e",
ts: "Xitsonga",
tt: "\u0442\u0430\u0442\u0430\u0440 \u0442\u0435\u043B\u0435, tatar tele",
ug: "\u0626\u06C7\u064A\u063A\u06C7\u0631\u0686\u06D5, Uyghurche",
uk: "\u0423\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0430",
ur: "\u0627\u0631\u062F\u0648",
ve: "Tshiven\u1E13a",
vi: "Ti\u1EBFng Vi\u1EC7t",
wa: "Walon",
cy: "Cymraeg",
wo: "Wollof",
xh: "isiXhosa",
yo: "Yor\xF9b\xE1",
zu: "isiZulu"
};
// src/types.ts
var Events = /* @__PURE__ */ ((Events2) => {
Events2["RESET"] = "reset";
Events2["READY"] = "ready";
Events2["STARTED"] = "started";
Events2["PLAYHEAD_CHANGE"] = "playheadChange";
Events2["TIME_CHANGE"] = "timeChange";
Events2["VOLUME_CHANGE"] = "volumeChange";
Events2["QUALITIES_CHANGE"] = "qualitiesChange";
Events2["AUDIO_TRACKS_CHANGE"] = "audioTracksChange";
Events2["SUBTITLE_TRACKS_CHANGE"] = "subtitleTracksChange";
Events2["AUTO_QUALITY_CHANGE"] = "autoQualityChange";
Events2["INTERSTITIAL_CHANGE"] = "interstitialChange";
Events2["SEEKING_CHANGE"] = "seekingChange";
Events2["CUEPOINTS_CHANGE"] = "cuePointsChange";
return Events2;
})(Events || {});
// src/state.ts
var noState = {
playhead: "idle",
ready: false,
started: false,
time: 0,
duration: NaN,
interstitial: null,
qualities: [],
autoQuality: false,
audioTracks: [],
subtitleTracks: [],
volume: 1,
seeking: false,
cuePoints: []
};
var State = class {
constructor(params_) {
this.params_ = params_;
__publicField(this, "timerId_");
__publicField(this, "ready", noState.ready);
__publicField(this, "playhead", noState.playhead);
__publicField(this, "started", noState.started);
__publicField(this, "time", noState.time);
__publicField(this, "duration", noState.duration);
__publicField(this, "interstitial", noState.interstitial);
__publicField(this, "qualities", noState.qualities);
__publicField(this, "autoQuality", noState.autoQuality);
__publicField(this, "audioTracks", noState.audioTracks);
__publicField(this, "subtitleTracks", noState.subtitleTracks);
__publicField(this, "volume", noState.volume);
__publicField(this, "seeking", noState.seeking);
__publicField(this, "cuePoints", noState.cuePoints);
this.requestTimingSync();
}
setReady() {
if (this.ready) {
return;
}
this.ready = true;
this.requestTimingSync();
this.params_.onEvent("ready" /* READY */);
}
setPlayhead(playhead) {
if (playhead === this.playhead) {
return;
}
this.playhead = playhead;
if (playhead === "pause") {
this.requestTimingSync();
}
this.params_.onEvent("playheadChange" /* PLAYHEAD_CHANGE */);
}
setStarted() {
if (this.started) {
return;
}
this.started = true;
this.params_.onEvent("started" /* STARTED */);
}
setInterstitial(interstitial) {
this.interstitial = interstitial;
this.setSeeking(false);
this.params_.onEvent("interstitialChange" /* INTERSTITIAL_CHANGE */);
}
setAsset(asset) {
if (!this.interstitial) {
return;
}
if (asset) {
this.interstitial.asset = {
time: 0,
duration: NaN,
...asset
};
this.requestTimingSync();
} else {
this.interstitial.asset = null;
}
}
setQualities(qualities, autoQuality) {
const diff = (items) => items.find((item) => item.active)?.height;
if (diff(this.qualities) !== diff(qualities)) {
this.qualities = qualities;
this.params_.onEvent("qualitiesChange" /* QUALITIES_CHANGE */);
}
if (autoQuality !== this.autoQuality) {
this.autoQuality = autoQuality;
this.params_.onEvent("autoQualityChange" /* AUTO_QUALITY_CHANGE */);
}
}
setAudioTracks(audioTracks) {
const diff = (items) => items.find((item) => item.active)?.id;
if (diff(this.audioTracks) !== diff(audioTracks)) {
this.audioTracks = audioTracks;
this.params_.onEvent("audioTracksChange" /* AUDIO_TRACKS_CHANGE */);
}
}
setSubtitleTracks(subtitleTracks) {
const diff = (items) => items.find((item) => item.active)?.id;
if (
// TODO: Come up with a generic logical check.
!this.subtitleTracks.length && subtitleTracks.length || diff(this.subtitleTracks) !== diff(subtitleTracks)
) {
this.subtitleTracks = subtitleTracks;
this.params_.onEvent("subtitleTracksChange" /* SUBTITLE_TRACKS_CHANGE */);
}
}
setVolume(volume) {
if (volume === this.volume) {
return;
}
this.volume = volume;
this.params_.onEvent("volumeChange" /* VOLUME_CHANGE */);
}
setSeeking(seeking) {
if (seeking === this.seeking) {
return;
}
this.seeking = seeking;
this.requestTimingSync();
this.params_.onEvent("seekingChange" /* SEEKING_CHANGE */);
}
setCuePoints(cuePoints) {
this.cuePoints = cuePoints;
this.requestTimingSync();
this.params_.onEvent("cuePointsChange" /* CUEPOINTS_CHANGE */);
}
requestTimingSync() {
clearTimeout(this.timerId_);
this.timerId_ = window.setTimeout(() => {
this.requestTimingSync();
}, 250);
const timing = this.params_.getTiming();
let shouldEmit = false;
if (this.updateTimeDuration_(this, timing.primary)) {
shouldEmit = true;
}
if (this.interstitial?.asset && this.updateTimeDuration_(this.interstitial.asset, timing.asset)) {
shouldEmit = true;
}
if (shouldEmit) {
this.params_.onEvent("timeChange" /* TIME_CHANGE */);
}
}
updateTimeDuration_(target, shim) {
if (!shim) {
return false;
}
if (!Number.isFinite(shim.duration)) {
return false;
}
const oldTime = target.time;
target.time = preciseFloat(shim.currentTime);
const oldDuration = target.duration;
target.duration = preciseFloat(shim.duration);
if (target.time > target.duration) {
target.time = target.duration;
}
return oldTime !== target.time || oldDuration !== target.duration;
}
};
function getState(state, name) {
return state?.[name] ?? noState[name];
}
// src/hls-player.ts
var HlsPlayer = class {
constructor(container) {
this.container = container;
__publicField(this, "media_");
__publicField(this, "eventManager_", new EventManager());
__publicField(this, "hls_", null);
__publicField(this, "state_", null);
__publicField(this, "emitter_", new import_tseep.EventEmitter());
__publicField(this, "on", this.emitter_.on.bind(this.emitter_));
__publicField(this, "off", this.emitter_.off.bind(this.emitter_));
__publicField(this, "once", this.emitter_.once.bind(this.emitter_));
this.media_ = this.createMedia_();
}
createMedia_() {
const media = document.createElement("video");
this.container.appendChild(media);
media.style.position = "absolute";
media.style.inset = "0";
media.style.width = "100%";
media.style.height = "100%";
return media;
}
load(url) {
this.unload();
this.bindMediaListeners_();
const hls = this.createHls_();
this.state_ = new State({
onEvent: (event) => this.emit_(event),
getTiming: () => ({
primary: hls.interstitialsManager?.primary ?? hls.media,
asset: hls.interstitialsManager?.playerQueue.find(
(player) => player.assetItem === hls.interstitialsManager?.playingAsset
)
})
});
hls.attachMedia(this.media_);
hls.loadSource(url);
this.hls_ = hls;
}
unload() {
this.eventManager_.removeAll();
this.state_ = null;
if (this.hls_) {
this.hls_.destroy();
this.hls_ = null;
}
this.emit_("reset" /* RESET */);
}
destroy() {
this.emitter_.removeAllListeners();
this.unload();
}
playOrPause() {
if (!this.state_) {
return;
}
const shouldPause = this.state_.playhead === "play" || this.state_.playhead === "playing";
if (shouldPause) {
this.media_.pause();
} else {
this.media_.play();
}
}
seekTo(time) {
assert(this.hls_);
if (this.state_?.interstitial) {
return false;
}
if (this.hls_.interstitialsManager) {
this.hls_.interstitialsManager.primary.seekTo(time);
} else {
this.media_.currentTime = time;
}
return true;
}
setQuality(height) {
assert(this.hls_);
if (height === null) {
this.hls_.nextLevel = -1;
} else {
const loadLevel = this.hls_.levels[this.hls_.loadLevel];
assert(loadLevel, "No level found for loadLevel index");
const idx = this.hls_.levels.findIndex((level) => {
return level.height === height && level.audioCodec?.substring(0, 4) === loadLevel.audioCodec?.substring(0, 4);
});
if (idx < 0) {
throw new Error("Could not find matching level");
}
this.hls_.nextLevel = idx;
}
this.updateQualities_();
}
setAudioTrack(id) {
assert(this.hls_);
const audioTrack = this.state_?.audioTracks.find(
(track) => track.id === id
);
assert(audioTrack);
this.hls_.setAudioOption({
lang: audioTrack.track.lang,
channels: audioTrack.track.channels,
name: audioTrack.track.name
});
}
setSubtitleTrack(id) {
assert(this.hls_);
if (id === null) {
this.hls_.subtitleTrack = -1;
return;
}
const subtitleTrack = this.state_?.subtitleTracks.find(
(track) => track.id === id
);
assert(subtitleTrack);
this.hls_.setSubtitleOption({
lang: subtitleTrack.track.lang,
name: subtitleTrack.track.name
});
}
setVolume(volume) {
this.media_.volume = volume;
this.media_.muted = volume === 0;
this.state_?.setVolume(volume);
}
get ready() {
return getState(this.state_, "ready");
}
get playhead() {
return getState(this.state_, "playhead");
}
get started() {
return getState(this.state_, "started");
}
get time() {
return getState(this.state_, "time");
}
get duration() {
return getState(this.state_, "duration");
}
get seeking() {
return getState(this.state_, "seeking");
}
get interstitial() {
return getState(this.state_, "interstitial");
}
get qualities() {
return getState(this.state_, "qualities");
}
get autoQuality() {
return getState(this.state_, "autoQuality");
}
get audioTracks() {
return getState(this.state_, "audioTracks");
}
get subtitleTracks() {
return getState(this.state_, "subtitleTracks");
}
get volume() {
return getState(this.state_, "volume");
}
get seekableStart() {
if (this.hls_) {
return this.hls_.interstitialsManager?.primary?.seekableStart ?? 0;
}
return NaN;
}
get live() {
return this.hls_?.levels[this.hls_.currentLevel]?.details?.live ?? false;
}
get cuePoints() {
return getState(this.state_, "cuePoints");
}
createHls_() {
const hls = new Hls();
const listen = this.eventManager_.listen(hls);
listen(Hls.Events.MANIFEST_LOADED, () => {
this.updateQualities_();
this.updateAudioTracks_();
this.updateSubtitleTracks_();
});
listen(Hls.Events.INTERSTITIAL_STARTED, () => {
this.state_?.setInterstitial({
asset: null
});
});
listen(Hls.Events.INTERSTITIAL_ASSET_STARTED, (_, data) => {
const listResponseAsset = data.event.assetListResponse?.ASSETS[data.assetListIndex];
this.state_?.setAsset({
type: listResponseAsset["SPRS-KIND"]
});
});
listen(Hls.Events.INTERSTITIAL_ASSET_ENDED, () => {
this.state_?.setAsset(null);
});
listen(Hls.Events.INTERSTITIAL_ENDED, () => {
this.state_?.setInterstitial(null);
});
listen(Hls.Events.LEVELS_UPDATED, () => {
this.updateQualities_();
});
listen(Hls.Events.LEVEL_SWITCHING, () => {
this.updateQualities_();
});
listen(Hls.Events.AUDIO_TRACKS_UPDATED, () => {
this.updateAudioTracks_();
});
listen(Hls.Events.AUDIO_TRACK_SWITCHING, () => {
this.updateAudioTracks_();
});
listen(Hls.Events.SUBTITLE_TRACKS_UPDATED, () => {
this.updateSubtitleTracks_();
});
listen(Hls.Events.SUBTITLE_TRACK_SWITCH, () => {
this.updateSubtitleTracks_();
});
listen(Hls.Events.INTERSTITIALS_UPDATED, (_, data) => {
const cuePoints = data.schedule.reduce((acc, item) => {
if (item.event) {
acc.push(item.start);
}
return acc;
}, []);
this.state_?.setCuePoints(cuePoints);
});
return hls;
}
updateQualities_() {
assert(this.hls_);
const group = [];
for (const level2 of this.hls_.levels) {
let item = group.find((item2) => item2.height === level2.height);
if (!item) {
item = {
height: level2.height,
levels: []
};
group.push(item);
}
item.levels.push(level2);
}
const level = this.hls_.levels[this.hls_.nextLoadLevel];
const qualities = group.map((item) => {
return {
...item,
active: item.height === level.height
};
});
qualities.sort((a, b) => b.height - a.height);
const autoQuality = this.hls_.autoLevelEnabled;
this.state_?.setQualities(qualities, autoQuality);
}
updateAudioTracks_() {
assert(this.hls_);
const tracks = this.hls_.allAudioTracks.map((track, index) => {
let label = getLangCode(track.lang);
if (track.channels === "6") {
label += " 5.1";
}
return {
id: index,
active: this.hls_?.audioTracks.includes(track) ? track.id === this.hls_.audioTrack : false,
label,
track
};
});
this.state_?.setAudioTracks(tracks);
}
updateSubtitleTracks_() {
assert(this.hls_);
const tracks = this.hls_.allSubtitleTracks.map(
(track, index) => {
return {
id: index,
active: this.hls_?.subtitleTracks.includes(track) ? track.id === this.hls_.subtitleTrack : false,
label: getLangCode(track.lang),
track
};
}
);
this.state_?.setSubtitleTracks(tracks);
}
bindMediaListeners_() {
const listen = this.eventManager_.listen(this.media_);
listen("canplay", () => {
this.state_?.setReady();
});
listen("play", () => {
this.state_?.setPlayhead("play");
});
listen("playing", () => {
this.state_?.setStarted();
this.state_?.setPlayhead("playing");
});
listen("pause", () => {
this.state_?.setPlayhead("pause");
});
listen("volumechange", () => {
this.state_?.setVolume(this.media_.volume);
});
listen("seeking", () => {
this.state_?.setSeeking(true);
});
listen("seeked", () => {
this.state_?.setSeeking(false);
});
}
emit_(event) {
this.emitter_.emit(event);
this.emitter_.emit("*", event);
}
};
export {
Events,
HlsPlayer
};
//# sourceMappingURL=index.js.map