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