UNPKG

meet-addons-sdk

Version:

SDK for easy creation of addons for meet.rs

208 lines 9.63 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.AddonsSdk = exports.LogLevel = void 0; var messages_1 = require("./messages"); __exportStar(require("./context"), exports); __exportStar(require("./messages"), exports); var LogLevel; (function (LogLevel) { LogLevel[LogLevel["Trace"] = 1] = "Trace"; LogLevel[LogLevel["Debug"] = 2] = "Debug"; LogLevel[LogLevel["Errors"] = 9] = "Errors"; })(LogLevel = exports.LogLevel || (exports.LogLevel = {})); var AddonsSdk = /** @class */ (function () { /** * Creates an instance of AddonsSdk. * @memberof AddonsSdk */ function AddonsSdk() { var _this = this; this.logLevel = LogLevel.Errors; /** * Informs the host that addon needs to be reinitialized with * fresh init context in order to operate properly * (e.g. addon token expired and addon needs from host new token) * @memberof AddonsSdk */ this.initRequest = function () { _this.sendMessage(new messages_1.InitRequestMessage()); }; this.handleReceivedMessage = function (messageEvent) { if (_this.logLevel <= LogLevel.Trace) { // tslint:disable-next-line: no-console console.log('[SDK][Index]::handleReceivedMessage', messageEvent); } if (!messageEvent || messageEvent.source === window || !messageEvent.data || !messageEvent.origin) { if (_this.logLevel <= LogLevel.Trace) { // tslint:disable-next-line: no-console console.warn('[SDK][Index]::handleReceivedMessage-invalid source, data ot origin', messageEvent); } return; } if (_this.host && _this.host.origin && messageEvent.origin !== _this.host.origin) { if (_this.logLevel <= LogLevel.Trace) { // tslint:disable-next-line: no-console console.warn('[SDK][Index]::handleReceivedMessage-invalid message origin', messageEvent); } return; } if (typeof messageEvent.data !== 'string') { if (_this.logLevel <= LogLevel.Trace) { // tslint:disable-next-line: no-console console.warn('[SDK][Index]::handleReceivedMessage - invalid event data', messageEvent.data); } return; } var hostMessage = JSON.parse(messageEvent.data); if (!hostMessage || !hostMessage.type) { if (_this.logLevel <= LogLevel.Trace) { // tslint:disable-next-line: no-console console.warn('[SDK][Index]::handleReceivedMessage-invalid message data', messageEvent); } return; } switch (hostMessage.type) { case messages_1.MessageType.INIT: var context = hostMessage; _this.preprocessInitMessage(context); _this.onInit(context); return; case messages_1.MessageType.INIT_REQUESTED: case messages_1.MessageType.DATA: case messages_1.MessageType.READY: case messages_1.MessageType.TOOLTIPS: case messages_1.MessageType.PARTICIPANTS: case messages_1.MessageType.MEET_STATE: case messages_1.MessageType.HOST_CHANGED: case messages_1.MessageType.REPOSITION: case messages_1.MessageType.USER_PROFILE: case messages_1.MessageType.STATE_ACTIVE: case messages_1.MessageType.STATE_INACTIVE: case messages_1.MessageType.BADGE_TEXT_UPDATE: case messages_1.MessageType.HOST_SHELL_REQUEST: case messages_1.MessageType.HOST_KEYBOARD_DOWN: case messages_1.MessageType.TOKEN_REFRESH: case messages_1.MessageType.HOST_ACTIVATION_REQUEST: case messages_1.MessageType.SNAPSHOT_LOAD_REQUEST: case messages_1.MessageType.HOST_KEYBOARD_DOWN: if (_this.logLevel <= LogLevel.Trace) { // tslint:disable-next-line: no-console console.log('[SDK][Index]::handleReceivedMessage-switch', hostMessage.type, hostMessage); } break; default: if (_this.logLevel <= LogLevel.Debug) { _this.errorHandler('[AddonsSdk]:onReceived - Unknown host message of type:' + hostMessage.type); } return; } if (_this.logLevel <= LogLevel.Trace) { // tslint:disable-next-line: no-console console.log('[SDK][Index]::handleReceivedMessage-onMessage->', hostMessage); } _this.onMessage(hostMessage); }; this.handleKeyboardEvent = function (ev) { var message = new messages_1.KeyDownMessage(); message.altKey = ev.altKey; message.ctrlKey = ev.ctrlKey; message.keyCode = ev.keyCode; message.metaKey = ev.metaKey; message.shiftKey = ev.shiftKey; message.returnValue = ev.returnValue; if (_this.logLevel <= LogLevel.Trace) { // tslint:disable-next-line: no-console console.log("[SDK][Index]::handleKeyboardEvent", { message: message }); } _this.onKeyDown(message); _this.sendMessage(message); }; this.onInit = this.preprocessInitMessage; this.onMessage = function (_message) { if (_this.logLevel <= LogLevel.Trace) { // tslint:disable-next-line: no-console console.log('[SDK][onMessage]-NOP', { _message: _message }); } }; this.errorHandler = function (_message) { var _optionalParams = []; for (var _i = 1; _i < arguments.length; _i++) { _optionalParams[_i - 1] = arguments[_i]; } // tslint:disable-next-line: no-console console.error('[SDK][ErrorHandler]-NOP', { _message: _message, _optionalParams: _optionalParams }); }; this.onKeyDown = function (keyDownMessage) { // tslint:disable-next-line: no-console if (_this.logLevel <= LogLevel.Trace) { console.log('[SDK][onKeyDown]-NOP', { keyDownMessage: keyDownMessage }); } }; if (this.logLevel <= LogLevel.Debug) { // tslint:disable-next-line: no-console console.log('[SDK][Index]::ctor - observing messages: *', { postMessage: postMessage }); } window.addEventListener('message', this.handleReceivedMessage); document.documentElement.addEventListener("keydown", this.handleKeyboardEvent); } /** * Informs the interested parties that sdk is initialized and * ready to receive messages from host and other participants. * * @memberof AddonsSdk */ AddonsSdk.prototype.ready = function () { var postMessage = JSON.stringify(new messages_1.ReadyMessage()); if (this.logLevel <= LogLevel.Debug) { // tslint:disable-next-line: no-console console.log('[SDK][Index]::ready - origin: *', postMessage); } window.parent.postMessage(postMessage, '*'); }; /** * Send a message through the host to other participants * using addon at the same time * * @param {string} type * @param {*} [payload] * @memberof Sync */ AddonsSdk.prototype.sendMessage = function (message) { if (!this.host) { this.errorHandler('You can not send messages before SDK is initialized'); return; } var postMessage = JSON.stringify(message); if (this.logLevel <= LogLevel.Debug) { // tslint:disable-next-line: no-console console.warn('[SDK][Index]::sendMessage', postMessage, this.host.origin); } window.parent.postMessage(postMessage, this.host.origin); }; AddonsSdk.prototype.preprocessInitMessage = function (context) { this.host = context.host; if (this.logLevel <= LogLevel.Trace) { // tslint:disable-next-line: no-console console.log('[SDK][Index]::preprocessInitMessage-> host', this.host); } }; return AddonsSdk; }()); exports.AddonsSdk = AddonsSdk; // exposing sdk as a global variable window.vivani = window.vivani || { sdk: new AddonsSdk() }; window.vivani.sdk = window.vivani.sdk || new AddonsSdk(); exports.default = window.vivani.sdk; //# sourceMappingURL=index.js.map