angularFrameworkComponentWrapper.js 10 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import { __decorate } from "tslib";
  2. import { Injectable } from "@angular/core";
  3. import { BaseComponentWrapper } from 'ag-grid-community';
  4. let AngularFrameworkComponentWrapper = class AngularFrameworkComponentWrapper extends BaseComponentWrapper {
  5. setViewContainerRef(viewContainerRef) {
  6. this.viewContainerRef = viewContainerRef;
  7. }
  8. setComponentFactoryResolver(componentFactoryResolver) {
  9. this.componentFactoryResolver = componentFactoryResolver;
  10. }
  11. createWrapper(OriginalConstructor) {
  12. let that = this;
  13. class DynamicAgNg2Component extends BaseGuiComponent {
  14. init(params) {
  15. super.init(params);
  16. this._componentRef.changeDetectorRef.detectChanges();
  17. }
  18. createComponent() {
  19. return that.createComponent(OriginalConstructor);
  20. }
  21. hasMethod(name) {
  22. return wrapper.getFrameworkComponentInstance()[name] != null;
  23. }
  24. callMethod(name, args) {
  25. const componentRef = this.getFrameworkComponentInstance();
  26. return wrapper.getFrameworkComponentInstance()[name].apply(componentRef, args);
  27. }
  28. addMethod(name, callback) {
  29. wrapper[name] = callback;
  30. }
  31. }
  32. let wrapper = new DynamicAgNg2Component();
  33. return wrapper;
  34. }
  35. createComponent(componentType) {
  36. // used to cache the factory, but this a) caused issues when used with either webpack/angularcli with --prod
  37. // but more significantly, the underlying implementation of resolveComponentFactory uses a map too, so us
  38. // caching the factory here yields no performance benefits
  39. let factory = this.componentFactoryResolver.resolveComponentFactory(componentType);
  40. return this.viewContainerRef.createComponent(factory);
  41. }
  42. };
  43. AngularFrameworkComponentWrapper = __decorate([
  44. Injectable()
  45. ], AngularFrameworkComponentWrapper);
  46. export { AngularFrameworkComponentWrapper };
  47. class BaseGuiComponent {
  48. init(params) {
  49. this._params = params;
  50. this._componentRef = this.createComponent();
  51. this._agAwareComponent = this._componentRef.instance;
  52. this._frameworkComponentInstance = this._componentRef.instance;
  53. this._eGui = this._componentRef.location.nativeElement;
  54. this._agAwareComponent.agInit(this._params);
  55. }
  56. getGui() {
  57. return this._eGui;
  58. }
  59. destroy() {
  60. if (this._componentRef) {
  61. this._componentRef.destroy();
  62. }
  63. }
  64. getFrameworkComponentInstance() {
  65. return this._frameworkComponentInstance;
  66. }
  67. }
  68. //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhckZyYW1ld29ya0NvbXBvbmVudFdyYXBwZXIuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hZy1ncmlkLWFuZ3VsYXIvIiwic291cmNlcyI6WyJsaWIvYW5ndWxhckZyYW1ld29ya0NvbXBvbmVudFdyYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBeUMsVUFBVSxFQUFtQixNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUMsb0JBQW9CLEVBQStDLE1BQU0sbUJBQW1CLENBQUM7QUFJckcsSUFBYSxnQ0FBZ0MsR0FBN0MsTUFBYSxnQ0FBaUMsU0FBUSxvQkFBdUM7SUFJbEYsbUJBQW1CLENBQUMsZ0JBQWtDO1FBQ3pELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztJQUM3QyxDQUFDO0lBRU0sMkJBQTJCLENBQUMsd0JBQWtEO1FBQ2pGLElBQUksQ0FBQyx3QkFBd0IsR0FBRyx3QkFBd0IsQ0FBQztJQUM3RCxDQUFDO0lBRUQsYUFBYSxDQUFDLG1CQUFtQztRQUM3QyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7UUFFaEIsTUFBTSxxQkFBc0IsU0FBUSxnQkFBZ0Q7WUFDaEYsSUFBSSxDQUFDLE1BQVc7Z0JBQ1osS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDbkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN6RCxDQUFDO1lBRVMsZUFBZTtnQkFDckIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFDckQsQ0FBQztZQUVELFNBQVMsQ0FBQyxJQUFZO2dCQUNsQixPQUFPLE9BQU8sQ0FBQyw2QkFBNkIsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQztZQUNqRSxDQUFDO1lBRUQsVUFBVSxDQUFDLElBQVksRUFBRSxJQUFnQjtnQkFDckMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLDZCQUE2QixFQUFFLENBQUM7Z0JBQzFELE9BQU8sT0FBTyxDQUFDLDZCQUE2QixFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQTtZQUVsRixDQUFDO1lBRUQsU0FBUyxDQUFDLElBQVksRUFBRSxRQUFrQjtnQkFDdEMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQTtZQUM1QixDQUFDO1NBQ0o7UUFFRCxJQUFJLE9BQU8sR0FBMEIsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO1FBQ2pFLE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7SUFFTSxlQUFlLENBQUksYUFBMEM7UUFDaEUsNEdBQTRHO1FBQzVHLHlHQUF5RztRQUN6RywwREFBMEQ7UUFDMUQsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLHVCQUF1QixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ25GLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMxRCxDQUFDO0NBQ0osQ0FBQTtBQW5EWSxnQ0FBZ0M7SUFENUMsVUFBVSxFQUFFO0dBQ0EsZ0NBQWdDLENBbUQ1QztTQW5EWSxnQ0FBZ0M7QUFxRDdDLE1BQWUsZ0JBQWdCO0lBT2pCLElBQUksQ0FBQyxNQUFTO1FBQ3BCLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBRXRCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzVDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQztRQUNyRCxJQUFJLENBQUMsMkJBQTJCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUM7UUFDL0QsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUM7UUFFdkQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVNLE1BQU07UUFDVCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUVNLE9BQU87UUFDVixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDcEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUNoQztJQUNMLENBQUM7SUFFTSw2QkFBNkI7UUFDaEMsT0FBTyxJQUFJLENBQUMsMkJBQTJCLENBQUM7SUFDNUMsQ0FBQztDQUdKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIENvbXBvbmVudFJlZiwgSW5qZWN0YWJsZSwgVmlld0NvbnRhaW5lclJlZn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7QmFzZUNvbXBvbmVudFdyYXBwZXIsIEZyYW1ld29ya0NvbXBvbmVudFdyYXBwZXIsIFdyYXBhYmxlSW50ZXJmYWNlfSBmcm9tICdhZy1ncmlkLWNvbW11bml0eSc7XG5pbXBvcnQge0FnRnJhbWV3b3JrQ29tcG9uZW50fSBmcm9tIFwiLi9pbnRlcmZhY2VzXCI7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBbmd1bGFyRnJhbWV3b3JrQ29tcG9uZW50V3JhcHBlciBleHRlbmRzIEJhc2VDb21wb25lbnRXcmFwcGVyPFdyYXBhYmxlSW50ZXJmYWNlPiBpbXBsZW1lbnRzIEZyYW1ld29ya0NvbXBvbmVudFdyYXBwZXIge1xuICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZjtcbiAgICBwcml2YXRlIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyO1xuXG4gICAgcHVibGljIHNldFZpZXdDb250YWluZXJSZWYodmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge1xuICAgICAgICB0aGlzLnZpZXdDb250YWluZXJSZWYgPSB2aWV3Q29udGFpbmVyUmVmO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIoY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIpIHtcbiAgICAgICAgdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIgPSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI7XG4gICAgfVxuXG4gICAgY3JlYXRlV3JhcHBlcihPcmlnaW5hbENvbnN0cnVjdG9yOiB7IG5ldygpOiBhbnkgfSk6IFdyYXBhYmxlSW50ZXJmYWNlIHtcbiAgICAgICAgbGV0IHRoYXQgPSB0aGlzO1xuXG4gICAgICAgIGNsYXNzIER5bmFtaWNBZ05nMkNvbXBvbmVudCBleHRlbmRzIEJhc2VHdWlDb21wb25lbnQ8YW55LCBBZ0ZyYW1ld29ya0NvbXBvbmVudDxhbnk+PiBpbXBsZW1lbnRzIFdyYXBhYmxlSW50ZXJmYWNlIHtcbiAgICAgICAgICAgIGluaXQocGFyYW1zOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgICAgICAgICBzdXBlci5pbml0KHBhcmFtcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fY29tcG9uZW50UmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcHJvdGVjdGVkIGNyZWF0ZUNvbXBvbmVudCgpOiBDb21wb25lbnRSZWY8QWdGcmFtZXdvcmtDb21wb25lbnQ8YW55Pj4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGF0LmNyZWF0ZUNvbXBvbmVudChPcmlnaW5hbENvbnN0cnVjdG9yKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaGFzTWV0aG9kKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVyLmdldEZyYW1ld29ya0NvbXBvbmVudEluc3RhbmNlKClbbmFtZV0gIT0gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2FsbE1ldGhvZChuYW1lOiBzdHJpbmcsIGFyZ3M6IElBcmd1bWVudHMpOiB2b2lkIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLmdldEZyYW1ld29ya0NvbXBvbmVudEluc3RhbmNlKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXIuZ2V0RnJhbWV3b3JrQ29tcG9uZW50SW5zdGFuY2UoKVtuYW1lXS5hcHBseShjb21wb25lbnRSZWYsIGFyZ3MpXG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYWRkTWV0aG9kKG5hbWU6IHN0cmluZywgY2FsbGJhY2s6IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgICAgICAgICAgICAgd3JhcHBlcltuYW1lXSA9IGNhbGxiYWNrXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgd3JhcHBlcjogRHluYW1pY0FnTmcyQ29tcG9uZW50ID0gbmV3IER5bmFtaWNBZ05nMkNvbXBvbmVudCgpO1xuICAgICAgICByZXR1cm4gd3JhcHBlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlQ29tcG9uZW50PFQ+KGNvbXBvbmVudFR5cGU6IHsgbmV3KC4uLmFyZ3M6IGFueVtdKTogVDsgfSk6IENvbXBvbmVudFJlZjxUPiB7XG4gICAgICAgIC8vIHVzZWQgdG8gY2FjaGUgdGhlIGZhY3RvcnksIGJ1dCB0aGlzIGEpIGNhdXNlZCBpc3N1ZXMgd2hlbiB1c2VkIHdpdGggZWl0aGVyIHdlYnBhY2svYW5ndWxhcmNsaSB3aXRoIC0tcHJvZFxuICAgICAgICAvLyBidXQgbW9yZSBzaWduaWZpY2FudGx5LCB0aGUgdW5kZXJseWluZyBpbXBsZW1lbnRhdGlvbiBvZiByZXNvbHZlQ29tcG9uZW50RmFjdG9yeSB1c2VzIGEgbWFwIHRvbywgc28gdXNcbiAgICAgICAgLy8gY2FjaGluZyB0aGUgZmFjdG9yeSBoZXJlIHlpZWxkcyBubyBwZXJmb3JtYW5jZSBiZW5lZml0c1xuICAgICAgICBsZXQgZmFjdG9yeSA9IHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KGNvbXBvbmVudFR5cGUpO1xuICAgICAgICByZXR1cm4gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChmYWN0b3J5KTtcbiAgICB9XG59XG5cbmFic3RyYWN0IGNsYXNzIEJhc2VHdWlDb21wb25lbnQ8UCwgVCBleHRlbmRzIEFnRnJhbWV3b3JrQ29tcG9uZW50PFA+PiB7XG4gICAgcHJvdGVjdGVkIF9wYXJhbXM6IFA7XG4gICAgcHJvdGVjdGVkIF9lR3VpOiBIVE1MRWxlbWVudDtcbiAgICBwcm90ZWN0ZWQgX2NvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPFQ+O1xuICAgIHByb3RlY3RlZCBfYWdBd2FyZUNvbXBvbmVudDogVDtcbiAgICBwcm90ZWN0ZWQgX2ZyYW1ld29ya0NvbXBvbmVudEluc3RhbmNlOiBhbnk7ICAvLyB0aGUgdXNlcnMgY29tcG9uZW50IC0gZm9yIGFjY2Vzc2luZyBtZXRob2RzIHRoZXkgY3JlYXRlXG5cbiAgICBwcm90ZWN0ZWQgaW5pdChwYXJhbXM6IFApOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcGFyYW1zID0gcGFyYW1zO1xuXG4gICAgICAgIHRoaXMuX2NvbXBvbmVudFJlZiA9IHRoaXMuY3JlYXRlQ29tcG9uZW50KCk7XG4gICAgICAgIHRoaXMuX2FnQXdhcmVDb21wb25lbnQgPSB0aGlzLl9jb21wb25lbnRSZWYuaW5zdGFuY2U7XG4gICAgICAgIHRoaXMuX2ZyYW1ld29ya0NvbXBvbmVudEluc3RhbmNlID0gdGhpcy5fY29tcG9uZW50UmVmLmluc3RhbmNlO1xuICAgICAgICB0aGlzLl9lR3VpID0gdGhpcy5fY29tcG9uZW50UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgdGhpcy5fYWdBd2FyZUNvbXBvbmVudC5hZ0luaXQodGhpcy5fcGFyYW1zKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0R3VpKCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VHdWk7XG4gICAgfVxuXG4gICAgcHVibGljIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9jb21wb25lbnRSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RnJhbWV3b3JrQ29tcG9uZW50SW5zdGFuY2UoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZyYW1ld29ya0NvbXBvbmVudEluc3RhbmNlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBjcmVhdGVDb21wb25lbnQoKTogQ29tcG9uZW50UmVmPFQ+O1xufVxuIl19