UNPKG

@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
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==