UNPKG

baasic-sdk-javascript

Version:

JavaScript SDK provides core functionality for building web and mobile applications on [Baasic](http://www.baasic.com/).

91 lines (90 loc) 3.88 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var common_1 = require("../../common"); var contracts_1 = require("../contracts"); var inversify_1 = require("inversify"); var utility = new common_1.Utility(); var BrowserEventHandler = /** @class */ (function () { function BrowserEventHandler(storageHandler, application) { this.storageHandler = storageHandler; this.application = application; this.messageBusKey = 'baasic-message-bus-' + this.application.getApiKey(); var jQueryLoaded = window.jQuery; if (jQueryLoaded) { this.triggerEvent = function (eventName, data) { var event = utility.extend($.Event(eventName), data); $(document).trigger(event); }; } else if (CustomEvent && typeof CustomEvent === 'function') { this.triggerEvent = function (eventName, data) { var event = utility.extend(new CustomEvent(eventName, { bubbles: true }), data); document.dispatchEvent(event); }; } else if (document.createEvent) { this.triggerEvent = function (eventName, data) { var event = utility.extend(document.createEvent('CustomEvent'), data); event.initEvent(eventName, true, true); document.dispatchEvent(event); }; } else { this.triggerEvent = function (eventName, data) { var doc = document; var event = utility.extend(doc.createEventObject(), data); event.eventType = eventName; doc.fireEvent('on' + event.eventType, event); }; } if (jQueryLoaded) { this.addEvent = function (eventName, func) { return $(window).on(eventName, func); }; } else if (window.addEventListener) { this.addEvent = function (eventName, func) { return window.addEventListener(eventName, func, false); }; } else if (window.attachEvent) { this.addEvent = function (eventName, func) { return window.attachEvent('on' + eventName, func); }; } else { this.addEvent = function (eventName, func) { return window['on' + eventName] = func; }; } this.initEventing(); } BrowserEventHandler.prototype.pushMessage = function (message, args) { this.storageHandler.remove(this.messageBusKey); this.storageHandler.set(this.messageBusKey, { message: message, args: args }); }; BrowserEventHandler.prototype.initEventing = function () { var self = this; this.addEvent('storage', function (e) { e = e || event; if (e.originalEvent) { e = e.originalEvent; } if (e.key === self.messageBusKey) { var value = e.newValue; if (value && value !== '') { var data = JSON.parse(value); if (typeof data === 'string') { data = JSON.parse(data); } self.triggerEvent(data.message.type, utility.extend(data.args, { app: self.application })); } } }); }; BrowserEventHandler = tslib_1.__decorate([ inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(contracts_1.TYPES.IStorageHandler)), tslib_1.__param(1, inversify_1.inject(contracts_1.TYPES.IBaasicApp)), tslib_1.__metadata("design:paramtypes", [Object, Object]) ], BrowserEventHandler); return BrowserEventHandler; }()); exports.BrowserEventHandler = BrowserEventHandler; ;