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.

79 lines (72 loc) 2.07 kB
import { __decorate } from 'tslib'; import { Component, NgZone, ɵɵdefineInjectable, ɵɵinject, Injectable, NgModule } from '@angular/core'; let JsBridgeComponent = class JsBridgeComponent { constructor() { } ngOnInit() { } }; JsBridgeComponent = __decorate([ Component({ selector: 'hd-js-bridge', template: ` <p> js-bridge works! </p> ` }) ], JsBridgeComponent); 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 = ɵɵdefineInjectable({ factory: function JsBridgeService_Factory() { return new JsBridgeService(ɵɵinject(NgZone)); }, token: JsBridgeService, providedIn: "root" }); JsBridgeService = __decorate([ Injectable({ providedIn: 'root' }) ], JsBridgeService); var JsBridgeModule_1; let JsBridgeModule = JsBridgeModule_1 = class JsBridgeModule { static forRoot() { return { ngModule: JsBridgeModule_1, providers: [JsBridgeService] }; } }; JsBridgeModule = JsBridgeModule_1 = __decorate([ NgModule({ declarations: [JsBridgeComponent], imports: [], exports: [] }) ], JsBridgeModule); /* * Public API Surface of js-bridge */ /** * Generated bundle index. Do not edit. */ export { JsBridgeModule, JsBridgeService, JsBridgeComponent as ɵa }; //# sourceMappingURL=hardpool-js-bridge.js.map