UNPKG

@skyway-sdk/core

Version:

The official Next Generation JavaScript SDK for SkyWay

54 lines 1.88 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.detachElement = exports.attachElement = void 0; const common_1 = require("@skyway-sdk/common"); const errors_1 = require("../../errors"); const util_1 = require("../../util"); const log = new common_1.Logger('packages/core/src/media/stream/base.ts'); /**@internal */ function attachElement(element, track) { if ((element === null || element === void 0 ? void 0 : element.srcObject) === undefined) { throw (0, util_1.createError)({ operationName: 'attachElement', info: errors_1.errors.invalidElement, payload: { element }, path: log.prefix, }); } if (element.srcObject) { const stream = element.srcObject; const ended = stream.getTracks().find((t) => t.readyState === 'ended'); if (ended) { stream.removeTrack(ended); } const duplicate = stream.getTracks().find((t) => t.kind === track.kind); if (duplicate) { stream.removeTrack(duplicate); } stream.addTrack(track); } else { element.srcObject = new MediaStream([track]); } } exports.attachElement = attachElement; /**@internal */ function detachElement(element, track) { if ((element === null || element === void 0 ? void 0 : element.srcObject) === undefined) { throw (0, util_1.createError)({ operationName: 'attachElement', info: errors_1.errors.invalidElement, payload: { element }, path: log.prefix, }); } const stream = element.srcObject; if (stream.getTracks().length > 0) { stream.removeTrack(track); } if (stream.getTracks().length === 0) { element.srcObject = null; } } exports.detachElement = detachElement; //# sourceMappingURL=base.js.map