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