UNPKG

@pano.video/panortc-react-native-sdk

Version:
201 lines (157 loc) 5.19 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _reactNative = require("react-native"); var _RtcAnnotation = _interopRequireDefault(require("./RtcAnnotation.native")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } const { /** * @ignore */ PanoRtcAnnotationManagerModule } = _reactNative.NativeModules; /** * @ignore */ const Prefix = PanoRtcAnnotationManagerModule.prefix; /** * @ignore */ const RtcAnnotationManagerEvent = new _reactNative.NativeEventEmitter(PanoRtcAnnotationManagerModule); /** * The {@link RtcAnnotationManager} class. */ class RtcAnnotationManager { constructor() { _defineProperty(this, "_annotations", new Map()); _defineProperty(this, "_listeners", new Map()); } /** * @ignore */ static _callMethod(method, args) { return PanoRtcAnnotationManagerModule.callMethod(method, args); } destroy() { this._annotations.forEach(value => { value.destroy(); }); this.removeAllListeners(); } /** * Adds the [`RtcAnnotationManagerEventHandler`]{@link RtcAnnotationManagerEventHandler} handler. * * After setting the [`RtcAnnotationManagerEventHandler`]{@link RtcAnnotationManagerEventHandler} handler, you can listen for `RtcAnnotationManager` events and receive the statistics of the corresponding RtcAnnotationManager instance. * @param event The event type. * @param listener The [`RtcAnnotationManagerEventHandler`]{@link RtcAnnotationManagerEventHandler} handler. */ addListener(event, listener) { const callback = res => { const { data } = res; // @ts-ignore listener(...data); }; let map = this._listeners.get(event); if (map === undefined) { map = new Map(); this._listeners.set(event, map); } RtcAnnotationManagerEvent.addListener(Prefix + event, callback); map.set(listener, callback); return { remove: () => { this.removeListener(event, listener); } }; } /** * Removes the [`RtcAnnotationManagerEventHandler`]{@link RtcAnnotationManagerEventHandler} handler. * * For callback events that you only want to listen for once, call this method to remove the specific [`RtcAnnotationManagerEventHandler`]{@link RtcAnnotationManagerEventHandler} objects after you have received them. * @param event The event type. * @param listener The [`RtcAnnotationManagerEventHandler`]{@link RtcAnnotationManagerEventHandler} handler. */ removeListener(event, listener) { const map = this._listeners.get(event); if (map === undefined) return; RtcAnnotationManagerEvent.removeListener(Prefix + event, map.get(listener)); map.delete(listener); } /** * Removes all the [`RtcAnnotationManagerEventHandler`]{@link RtcAnnotationManagerEventHandler} handlers. * @param event The event type. */ removeAllListeners(event) { if (event === undefined) { this._listeners.forEach((_, key) => { RtcAnnotationManagerEvent.removeAllListeners(Prefix + key); }); this._listeners.clear(); return; } RtcAnnotationManagerEvent.removeAllListeners(Prefix + event); this._listeners.delete(event); } /** * @~english * @brief Get video annotation object. * @param userId User ID * @param streamId Stream ID * @return * - PanoRtcAnnotation object * @~chinese * @brief 获取视频标注对象 * @param userId 用户ID * @param streamId 视频流ID * @return * - 视频标注对象 */ async getVideoAnnotation(userId, streamId) { let annotationId = await RtcAnnotationManager._callMethod('getVideoAnnotation', { userId, streamId }); if (typeof annotationId == 'string') { if (this._annotations.get(annotationId)) { return this._annotations.get(annotationId); } this._annotations.set(annotationId, new _RtcAnnotation.default(annotationId)); return this._annotations.get(annotationId); } return undefined; } /** * @~english * @brief Get share annotation object. * @param userId User ID * @return * - PanoRtcAnnotation object * @~chinese * @brief 获取共享标注对象 * @param userId 用户ID * @return * - 共享标注对象 */ async getShareAnnotation(userId) { let annotationId = await RtcAnnotationManager._callMethod('getShareAnnotation', { userId }); if (typeof annotationId == 'string') { if (this._annotations.get(annotationId)) { return this._annotations.get(annotationId); } this._annotations.set(annotationId, new _RtcAnnotation.default(annotationId)); return this._annotations.get(annotationId); } return undefined; } } /** * @ignore */ exports.default = RtcAnnotationManager; //# sourceMappingURL=RtcAnnotationManager.native.js.map