meet-addons-sdk
Version:
SDK for easy creation of addons for meet.rs
208 lines • 9.63 kB
JavaScript
;
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