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.

36 lines 3.72 kB
import { __decorate } from "tslib"; import { Injectable, NgZone } from '@angular/core'; import * as i0 from "@angular/core"; let JsBridgeService = class JsBridgeService { // private zone: NgZone; constructor(zone) { this.zone = zone; // this.zone = zone; } exposeMethod(classRef, namespace, fnName) { if (!window[namespace]) window[namespace] = {}; let _fnName; if (fnName instanceof Array) _fnName = fnName; else _fnName = [fnName]; _fnName.forEach(fnName => { window[namespace][fnName] = (...args) => this.zone.run(() => classRef[fnName](...args)); }); } executeMethod(namespace, methodName, ...args) { return window[namespace][methodName](...args); } }; JsBridgeService.ctorParameters = () => [ { 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); export { JsBridgeService }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMtYnJpZGdlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AaGFyZHBvb2wvanMtYnJpZGdlLyIsInNvdXJjZXMiOlsibGliL2pzLWJyaWRnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLbkQsSUFBYSxlQUFlLEdBQTVCLE1BQWEsZUFBZTtJQUUxQix3QkFBd0I7SUFFekIsWUFBb0IsSUFBWTtRQUFaLFNBQUksR0FBSixJQUFJLENBQVE7UUFDL0Isb0JBQW9CO0lBQ3JCLENBQUM7SUFFTSxZQUFZLENBQUMsUUFBYSxFQUFFLFNBQWlCLEVBQUUsTUFBeUI7UUFDOUUsSUFBRyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7WUFDcEIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN4QixJQUFJLE9BQWlCLENBQUM7UUFDdEIsSUFBRyxNQUFNLFlBQVksS0FBSztZQUN6QixPQUFPLEdBQUcsTUFBTSxDQUFDOztZQUVqQixPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwQixPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3hCLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBVyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2hHLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVNLGFBQWEsQ0FBQyxTQUFpQixFQUFFLFVBQWtCLEVBQUUsR0FBRyxJQUFXO1FBQ3pFLE9BQWEsTUFBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDdEQsQ0FBQztDQUVELENBQUE7O1lBckIwQixNQUFNOzs7QUFKcEIsZUFBZTtJQUgzQixVQUFVLENBQUM7UUFDVixVQUFVLEVBQUUsTUFBTTtLQUNuQixDQUFDO0dBQ1csZUFBZSxDQXlCM0I7U0F6QlksZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBKc0JyaWRnZVNlcnZpY2Uge1xuXG4gIC8vIHByaXZhdGUgem9uZTogTmdab25lO1xuXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgem9uZTogTmdab25lKSB7XG5cdFx0Ly8gdGhpcy56b25lID0gem9uZTtcblx0fVxuXG5cdHB1YmxpYyBleHBvc2VNZXRob2QoY2xhc3NSZWY6IGFueSwgbmFtZXNwYWNlOiBzdHJpbmcsIGZuTmFtZTogc3RyaW5nW10gfCBzdHJpbmcpOiB2b2lkIHtcblx0XHRpZighd2luZG93W25hbWVzcGFjZV0pXG5cdFx0XHR3aW5kb3dbbmFtZXNwYWNlXSA9IHt9O1xuXHRcdGxldCBfZm5OYW1lOiBzdHJpbmdbXTtcblx0XHRpZihmbk5hbWUgaW5zdGFuY2VvZiBBcnJheSlcblx0XHRcdF9mbk5hbWUgPSBmbk5hbWU7XG5cdFx0ZWxzZVxuXHRcdFx0X2ZuTmFtZSA9IFtmbk5hbWVdO1xuXHRcdF9mbk5hbWUuZm9yRWFjaChmbk5hbWUgPT4ge1xuXHRcdFx0d2luZG93W25hbWVzcGFjZV1bZm5OYW1lXSA9ICguLi5hcmdzOiBhbnlbXSkgPT4gdGhpcy56b25lLnJ1bigoKSA9PiBjbGFzc1JlZltmbk5hbWVdKC4uLmFyZ3MpKTtcblx0XHR9KTtcblx0fVxuXG5cdHB1YmxpYyBleGVjdXRlTWV0aG9kKG5hbWVzcGFjZTogc3RyaW5nLCBtZXRob2ROYW1lOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKXtcblx0XHRyZXR1cm4gKDxhbnk+d2luZG93KVtuYW1lc3BhY2VdW21ldGhvZE5hbWVdKC4uLmFyZ3MpO1xuXHR9XG5cbn1cbiJdfQ==