UNPKG

rx-player

Version:
129 lines (128 loc) 4.62 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var log_1 = require("../../log"); var task_canceller_1 = require("../../utils/task_canceller"); /** * Implementation of an `ITextDisplayerInterface` for the Core, that can run in * a WebWorker (so, in a different thread than the `ITextDisplayer`). * * @class CoreTextDisplayerInterface */ var CoreTextDisplayerInterface = /** @class */ (function () { /** * @param {string} contentId * @param {Object} messageSender */ function CoreTextDisplayerInterface(contentId, messageSender) { this._contentId = contentId; this._messageSender = messageSender; this._queues = { pushTextData: [], remove: [] }; } /** * @see ITextDisplayerInterface */ CoreTextDisplayerInterface.prototype.pushTextData = function (infos) { var _this = this; return new Promise(function (resolve, reject) { _this._queues.pushTextData.push({ resolve: resolve, reject: reject }); _this._messageSender({ type: "push-text-data" /* CoreMessageType.PushTextData */, contentId: _this._contentId, value: infos, }); }); }; /** * @see ITextDisplayerInterface */ CoreTextDisplayerInterface.prototype.remove = function (start, end) { var _this = this; return new Promise(function (resolve, reject) { _this._queues.remove.push({ resolve: resolve, reject: reject }); _this._messageSender({ type: "remove-text-data" /* CoreMessageType.RemoveTextData */, contentId: _this._contentId, value: { start: start, end: end }, }); }); }; /** * @see ITextDisplayerInterface */ CoreTextDisplayerInterface.prototype.reset = function () { this._messageSender({ type: "reset-text-displayer" /* CoreMessageType.ResetTextDisplayer */, contentId: this._contentId, value: null, }); this._resetCurrentQueue("WorkerTextDisplayerInterface reset"); }; /** * @see ITextDisplayerInterface */ CoreTextDisplayerInterface.prototype.stop = function (reason) { this._messageSender({ type: "stop-text-displayer" /* CoreMessageType.StopTextDisplayer */, contentId: this._contentId, value: null, }); this._resetCurrentQueue(reason); }; CoreTextDisplayerInterface.prototype._resetCurrentQueue = function (reason) { var error = new task_canceller_1.CancellationError("WorkerTextDisplayerInterface queue", reason !== null && reason !== void 0 ? reason : "reset"); this._queues.pushTextData.forEach(function (elt) { elt.reject(error); }); this._queues.pushTextData.length = 0; this._queues.remove.forEach(function (elt) { elt.reject(error); }); this._queues.remove.length = 0; }; /** * @param {Array.<Object>} ranges */ CoreTextDisplayerInterface.prototype.onPushedTrackSuccess = function (ranges) { var element = this._queues.pushTextData.shift(); if (element === undefined) { log_1.default.error("text", "pushTextData success for inexistant operation"); return; } element.resolve(ranges); }; /** * @param {unknown} err */ CoreTextDisplayerInterface.prototype.onPushedTrackError = function (err) { var element = this._queues.pushTextData.shift(); if (element === undefined) { log_1.default.error("text", "pushTextData error for inexistant operation"); return; } element.reject(err); }; /** * @param {Array.<Object>} ranges */ CoreTextDisplayerInterface.prototype.onRemoveSuccess = function (ranges) { var element = this._queues.remove.shift(); if (element === undefined) { log_1.default.error("text", "remove success for inexistant operation"); return; } element.resolve(ranges); }; /** * @param {unknown} err */ CoreTextDisplayerInterface.prototype.onRemoveError = function (err) { var element = this._queues.remove.shift(); if (element === undefined) { log_1.default.error("text", "remove error for inexistant operation"); return; } element.reject(err); }; return CoreTextDisplayerInterface; }()); exports.default = CoreTextDisplayerInterface;