UNPKG

playable

Version:

Video player based on HTML5Video

124 lines 6.34 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ChromecastEvents = void 0; var tslib_1 = require("tslib"); var chromecast_output_1 = (0, tslib_1.__importDefault)(require("../playback-engine/output/chromecast/chromecast-output")); var script_injector_1 = (0, tslib_1.__importDefault)(require("../../utils/script-injector")); var FRAMEWORK_LINK = 'https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1'; var ChromecastEvents; (function (ChromecastEvents) { ChromecastEvents["CHROMECAST_INITED"] = "ui-events/chromecast-inited"; ChromecastEvents["CHROMECAST_CASTS_STARTED"] = "ui-events/chromecast-started"; ChromecastEvents["CHROMECAST_CASTS_RESUMED"] = "ui-events/chromecast-resumed"; ChromecastEvents["CHROMECAST_CASTS_STOPED"] = "ui-events/chromecast-stoped"; ChromecastEvents["CHROMECAST_NOT_CONNECTED"] = "ui-events/chromecast-not-connected"; ChromecastEvents["CHROMECAST_CONNECTING"] = "ui-events/chromecast-connecting"; ChromecastEvents["CHROMECAST_CONNECTED"] = "ui-events/chromecast-connected"; ChromecastEvents["CHROMECAST_NO_DEVICES_AVAILABLE"] = "ui-events/chromecast-not-available"; })(ChromecastEvents = exports.ChromecastEvents || (exports.ChromecastEvents = {})); var ChromecastManager = /** @class */ (function () { function ChromecastManager(_a) { var engine = _a.engine, eventEmitter = _a.eventEmitter; this._engine = engine; this._eventEmitter = eventEmitter; this._initCastContext = this._initCastContext.bind(this); this._onCastStateChange = this._onCastStateChange.bind(this); this._onSessionStateChange = this._onSessionStateChange.bind(this); this._insertCastCallback(); } ChromecastManager.prototype._insertCastCallback = function () { if (ChromecastManager._chromecastInited) { return; } ChromecastManager._chromecastInited = true; window.__onGCastApiAvailable = this._initCastContext; (0, script_injector_1.default)(FRAMEWORK_LINK); }; ChromecastManager.prototype._initCastContext = function (isAvailable) { if (isAvailable && ChromecastManager._isCastApiInited) { var cast_1 = window.cast; var chrome_1 = window.chrome; this._context = cast_1.framework.CastContext.getInstance(); this._context.setOptions({ receiverApplicationId: chrome_1.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID, autoJoinPolicy: chrome_1.cast.AutoJoinPolicy.ORIGIN_SCOPED, }); this._bindToContextEvents(); this._eventEmitter.emitAsync(ChromecastEvents.CHROMECAST_INITED); } }; Object.defineProperty(ChromecastManager, "_isCastApiInited", { get: function () { var cast = window.cast; var chrome = window.chrome; return Boolean(cast && cast.framework && chrome && chrome.cast); }, enumerable: false, configurable: true }); ChromecastManager.prototype._onCastStateChange = function (event) { switch (event.castState) { case cast.framework.CastState.NOT_CONNECTED: this._eventEmitter.emitAsync(ChromecastEvents.CHROMECAST_NOT_CONNECTED); break; case cast.framework.CastState.CONNECTING: this._eventEmitter.emitAsync(ChromecastEvents.CHROMECAST_CONNECTING); break; case cast.framework.CastState.CONNECTED: this._eventEmitter.emitAsync(ChromecastEvents.CHROMECAST_CONNECTED); break; case cast.framework.CastState.NO_DEVICES_AVAILABLE: this._eventEmitter.emitAsync(ChromecastEvents.CHROMECAST_NO_DEVICES_AVAILABLE); break; default: break; } }; ChromecastManager.prototype._onSessionStateChange = function (event) { var context = this._context; var engine = this._engine; var eventEmitter = this._eventEmitter; var cast = window.cast; var startTime; switch (event.sessionState) { case cast.framework.SessionState.SESSION_STARTED: startTime = engine.getCurrentTime(); engine.changeOutput(new chromecast_output_1.default(eventEmitter), function () { engine.seekTo(startTime); eventEmitter.emitAsync(ChromecastEvents.CHROMECAST_CASTS_STARTED); }); break; case cast.framework.SessionState.SESSION_RESUMED: // start cast to chromecast -> reload page -> SESSION_RESUMED startTime = context .getCurrentSession() .getMediaSession() .getEstimatedTime(); engine.changeOutput(new chromecast_output_1.default(eventEmitter), function () { engine.seekTo(startTime); eventEmitter.emitAsync(ChromecastEvents.CHROMECAST_CASTS_RESUMED); }); break; case cast.framework.SessionState.SESSION_ENDED: engine.resetOutput(); eventEmitter.emitAsync(ChromecastEvents.CHROMECAST_CASTS_STOPED); break; default: break; } }; ChromecastManager.prototype._bindToContextEvents = function () { var context = this._context; context.addEventListener(window.cast.framework.CastContextEventType.CAST_STATE_CHANGED, this._onCastStateChange); context.addEventListener(window.cast.framework.CastContextEventType.SESSION_STATE_CHANGED, this._onSessionStateChange); }; ChromecastManager.prototype.destroy = function () { var context = this._context; context.removeEventListener(cast.framework.CastContextEventType.CAST_STATE_CHANGED, this._onCastStateChange); context.addEventListener(cast.framework.CastContextEventType.SESSION_STATE_CHANGED, this._onSessionStateChange); }; ChromecastManager.moduleName = 'chromecastManager'; ChromecastManager.dependencies = ['eventEmitter', 'engine', 'rootContainer']; return ChromecastManager; }()); exports.default = ChromecastManager; //# sourceMappingURL=chromecast-manager.js.map