@hardpool/js-bridge
Version:
Bridge between pure vanilla javascript and angular. Expose selected methods of angular component on javascript window object and call them from external javascript application. Making angular app plugable/co-exist with other front end app.
49 lines • 4.51 kB
JavaScript
import { __decorate, __read, __spread } from "tslib";
import { Injectable, NgZone } from '@angular/core';
import * as i0 from "@angular/core";
var JsBridgeService = /** @class */ (function () {
// private zone: NgZone;
function JsBridgeService(zone) {
this.zone = zone;
// this.zone = zone;
}
JsBridgeService.prototype.exposeMethod = function (classRef, namespace, fnName) {
var _this = this;
if (!window[namespace])
window[namespace] = {};
var _fnName;
if (fnName instanceof Array)
_fnName = fnName;
else
_fnName = [fnName];
_fnName.forEach(function (fnName) {
window[namespace][fnName] = function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
return _this.zone.run(function () { return classRef[fnName].apply(classRef, __spread(args)); });
};
});
};
JsBridgeService.prototype.executeMethod = function (namespace, methodName) {
var _a;
var args = [];
for (var _i = 2; _i < arguments.length; _i++) {
args[_i - 2] = arguments[_i];
}
return (_a = window[namespace])[methodName].apply(_a, __spread(args));
};
JsBridgeService.ctorParameters = function () { return [
{ type: NgZone }
]; };
JsBridgeService.ɵprov = i0.ɵɵdefineInjectable({ factory: function JsBridgeService_Factory() { return new JsBridgeService(i0.ɵɵinject(i0.NgZone)); }, token: JsBridgeService, providedIn: "root" });
JsBridgeService = __decorate([
Injectable({
providedIn: 'root'
})
], JsBridgeService);
return JsBridgeService;
}());
export { JsBridgeService };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMtYnJpZGdlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AaGFyZHBvb2wvanMtYnJpZGdlLyIsInNvdXJjZXMiOlsibGliL2pzLWJyaWRnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLbkQ7SUFFRSx3QkFBd0I7SUFFekIseUJBQW9CLElBQVk7UUFBWixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQy9CLG9CQUFvQjtJQUNyQixDQUFDO0lBRU0sc0NBQVksR0FBbkIsVUFBb0IsUUFBYSxFQUFFLFNBQWlCLEVBQUUsTUFBeUI7UUFBL0UsaUJBV0M7UUFWQSxJQUFHLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztZQUNwQixNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLElBQUksT0FBaUIsQ0FBQztRQUN0QixJQUFHLE1BQU0sWUFBWSxLQUFLO1lBQ3pCLE9BQU8sR0FBRyxNQUFNLENBQUM7O1lBRWpCLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BCLE9BQU8sQ0FBQyxPQUFPLENBQUMsVUFBQSxNQUFNO1lBQ3JCLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRztnQkFBQyxjQUFjO3FCQUFkLFVBQWMsRUFBZCxxQkFBYyxFQUFkLElBQWM7b0JBQWQseUJBQWM7O2dCQUFLLE9BQUEsS0FBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBTSxPQUFBLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBaEIsUUFBUSxXQUFZLElBQUksSUFBeEIsQ0FBeUIsQ0FBQztZQUE5QyxDQUE4QyxDQUFDO1FBQ2hHLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVNLHVDQUFhLEdBQXBCLFVBQXFCLFNBQWlCLEVBQUUsVUFBa0I7O1FBQUUsY0FBYzthQUFkLFVBQWMsRUFBZCxxQkFBYyxFQUFkLElBQWM7WUFBZCw2QkFBYzs7UUFDekUsT0FBTyxDQUFBLEtBQU0sTUFBTyxDQUFDLFNBQVMsQ0FBQyxDQUFBLENBQUMsVUFBVSxDQUFDLG9CQUFJLElBQUksR0FBRTtJQUN0RCxDQUFDOztnQkFuQnlCLE1BQU07OztJQUpwQixlQUFlO1FBSDNCLFVBQVUsQ0FBQztZQUNWLFVBQVUsRUFBRSxNQUFNO1NBQ25CLENBQUM7T0FDVyxlQUFlLENBeUIzQjswQkE5QkQ7Q0E4QkMsQUF6QkQsSUF5QkM7U0F6QlksZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBKc0JyaWRnZVNlcnZpY2Uge1xuXG4gIC8vIHByaXZhdGUgem9uZTogTmdab25lO1xuXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgem9uZTogTmdab25lKSB7XG5cdFx0Ly8gdGhpcy56b25lID0gem9uZTtcblx0fVxuXG5cdHB1YmxpYyBleHBvc2VNZXRob2QoY2xhc3NSZWY6IGFueSwgbmFtZXNwYWNlOiBzdHJpbmcsIGZuTmFtZTogc3RyaW5nW10gfCBzdHJpbmcpOiB2b2lkIHtcblx0XHRpZighd2luZG93W25hbWVzcGFjZV0pXG5cdFx0XHR3aW5kb3dbbmFtZXNwYWNlXSA9IHt9O1xuXHRcdGxldCBfZm5OYW1lOiBzdHJpbmdbXTtcblx0XHRpZihmbk5hbWUgaW5zdGFuY2VvZiBBcnJheSlcblx0XHRcdF9mbk5hbWUgPSBmbk5hbWU7XG5cdFx0ZWxzZVxuXHRcdFx0X2ZuTmFtZSA9IFtmbk5hbWVdO1xuXHRcdF9mbk5hbWUuZm9yRWFjaChmbk5hbWUgPT4ge1xuXHRcdFx0d2luZG93W25hbWVzcGFjZV1bZm5OYW1lXSA9ICguLi5hcmdzOiBhbnlbXSkgPT4gdGhpcy56b25lLnJ1bigoKSA9PiBjbGFzc1JlZltmbk5hbWVdKC4uLmFyZ3MpKTtcblx0XHR9KTtcblx0fVxuXG5cdHB1YmxpYyBleGVjdXRlTWV0aG9kKG5hbWVzcGFjZTogc3RyaW5nLCBtZXRob2ROYW1lOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKXtcblx0XHRyZXR1cm4gKDxhbnk+d2luZG93KVtuYW1lc3BhY2VdW21ldGhvZE5hbWVdKC4uLmFyZ3MpO1xuXHR9XG5cbn1cbiJdfQ==