@adaptabletools/adaptable-angular-aggrid 16.2.4 → 17.0.0-canary.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,82 @@
1
+ import { Directive, EventEmitter, Input, Output, } from '@angular/core';
2
+ import { Adaptable } from '@adaptabletools/adaptable/src/agGrid/Adaptable';
3
+ import { AdaptableAngularFrameworkComponentService } from './adaptable-angular-framework-component.service';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "./adaptable-angular-framework-component.service";
6
+ function getRandomInt(max) {
7
+ return Math.floor(Math.random() * Math.floor(max));
8
+ }
9
+ export class AdaptableAngularAgGridComponentDirective {
10
+ constructor(renderer, el, frameworkComponentService) {
11
+ this.renderer = renderer;
12
+ this.el = el;
13
+ this.frameworkComponentService = frameworkComponentService;
14
+ this.adaptableReady = new EventEmitter();
15
+ const seedId = `${getRandomInt(1000)}-${Date.now()}`;
16
+ this.adaptableContainerId = `adaptable-${seedId}`;
17
+ }
18
+ async ngOnInit() {
19
+ if (this.modules == null) {
20
+ throw new Error(`Attribute 'modules' is required. Please pass the ag-grid modules you use into AdapTable.
21
+ If you don't have extra modules, pass an empty array.`);
22
+ }
23
+ this.createAngularWrapperContainer();
24
+ this.adaptableOptions.containerOptions = this.adaptableOptions.containerOptions || {};
25
+ this.adaptableOptions.containerOptions.adaptableContainer = this.adaptableContainerId;
26
+ const adaptableApi = await Adaptable.initInternal(this.adaptableOptions, {
27
+ gridOptions: this.gridOptions,
28
+ waitForAgGrid: true,
29
+ variant: 'angular',
30
+ modules: this.modules,
31
+ });
32
+ adaptableApi.internalApi
33
+ .getAdaptableInstance()
34
+ ._onIncludeFired('FrameworkComponentChange', ({ command, frameworkComponent, containerDomNode, componentType }) => {
35
+ if (command === 'create') {
36
+ this.frameworkComponentService.createFrameworkComponent(frameworkComponent, containerDomNode, componentType, adaptableApi);
37
+ }
38
+ else {
39
+ this.frameworkComponentService.destroyFrameworkComponent(frameworkComponent, componentType, adaptableApi);
40
+ }
41
+ });
42
+ adaptableApi.eventApi.on('AdaptableReady', (adaptableReadyInfo) => this.adaptableReady.emit(adaptableReadyInfo));
43
+ this.adaptableApi = adaptableApi;
44
+ }
45
+ ngOnDestroy() {
46
+ if (!this.adaptableApi) {
47
+ return;
48
+ }
49
+ this.adaptableApi.destroy({
50
+ unmount: true,
51
+ destroyApi: false,
52
+ });
53
+ this.adaptableApi = null;
54
+ }
55
+ // creates the container for the adaptable toolbar and inserts it before the ag-grid element
56
+ createAngularWrapperContainer() {
57
+ const adaptableContainer = this.renderer.createElement('div');
58
+ adaptableContainer.style.setProperty('display', 'flex');
59
+ adaptableContainer.style.setProperty('flex-flow', 'var(--ab_flex-direction, column)');
60
+ this.renderer.setProperty(adaptableContainer, 'id', this.adaptableContainerId);
61
+ this.renderer.insertBefore(this.renderer.parentNode(this.el.nativeElement), adaptableContainer, this.el.nativeElement);
62
+ }
63
+ }
64
+ AdaptableAngularAgGridComponentDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdaptableAngularAgGridComponentDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i1.AdaptableAngularFrameworkComponentService }], target: i0.ɵɵFactoryTarget.Directive });
65
+ AdaptableAngularAgGridComponentDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: AdaptableAngularAgGridComponentDirective, selector: "ag-grid-angular[adaptableOptions]", inputs: { adaptableOptions: "adaptableOptions", modules: "modules", gridOptions: "gridOptions" }, outputs: { adaptableReady: "adaptableReady" }, providers: [AdaptableAngularFrameworkComponentService], ngImport: i0 });
66
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdaptableAngularAgGridComponentDirective, decorators: [{
67
+ type: Directive,
68
+ args: [{
69
+ selector: 'ag-grid-angular[adaptableOptions]',
70
+ // ensures each AG Grid instance has its own copy of the service (incl. the framework component references)
71
+ providers: [AdaptableAngularFrameworkComponentService],
72
+ }]
73
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i1.AdaptableAngularFrameworkComponentService }]; }, propDecorators: { adaptableOptions: [{
74
+ type: Input
75
+ }], modules: [{
76
+ type: Input
77
+ }], gridOptions: [{
78
+ type: Input
79
+ }], adaptableReady: [{
80
+ type: Output
81
+ }] } });
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRhYmxlLWFuZ3VsYXItYWctZ3JpZC1jb21wb25lbnQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYWRhcHRhYmxlLWFuZ3VsYXItYWdncmlkL3NyYy9saWIvYWRhcHRhYmxlLWFuZ3VsYXItYWctZ3JpZC1jb21wb25lbnQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFLdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBRTNFLE9BQU8sRUFBRSx5Q0FBeUMsRUFBRSxNQUFNLGlEQUFpRCxDQUFDOzs7QUFFNUcsU0FBUyxZQUFZLENBQUMsR0FBVztJQUMvQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNyRCxDQUFDO0FBT0QsTUFBTSxPQUFPLHdDQUF3QztJQVVuRCxZQUNVLFFBQW1CLEVBQ25CLEVBQWMsRUFDZCx5QkFBb0U7UUFGcEUsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ2QsOEJBQXlCLEdBQXpCLHlCQUF5QixDQUEyQztRQVJwRSxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFzQixDQUFDO1FBVWhFLE1BQU0sTUFBTSxHQUFHLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDO1FBRXJELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxhQUFhLE1BQU0sRUFBRSxDQUFDO0lBQ3BELENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUTtRQUNaLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLEVBQUU7WUFDeEIsTUFBTSxJQUFJLEtBQUssQ0FDYjsrREFDdUQsQ0FDeEQsQ0FBQztTQUNIO1FBRUQsSUFBSSxDQUFDLDZCQUE2QixFQUFFLENBQUM7UUFFckMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsSUFBSSxFQUFFLENBQUM7UUFDdEYsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztRQUV0RixNQUFNLFlBQVksR0FBRyxNQUFNLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3ZFLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztZQUM3QixhQUFhLEVBQUUsSUFBSTtZQUNuQixPQUFPLEVBQUUsU0FBUztZQUNsQixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87U0FDdEIsQ0FBQyxDQUFDO1FBRUgsWUFBWSxDQUFDLFdBQVc7YUFDckIsb0JBQW9CLEVBQUU7YUFDdEIsZUFBZSxDQUNkLDBCQUEwQixFQUMxQixDQUFDLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUU7WUFDbkUsSUFBSSxPQUFPLEtBQUssUUFBUSxFQUFFO2dCQUN4QixJQUFJLENBQUMseUJBQXlCLENBQUMsd0JBQXdCLENBQ3JELGtCQUErQyxFQUMvQyxnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLFlBQVksQ0FDYixDQUFDO2FBQ0g7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLHlCQUF5QixDQUFDLHlCQUF5QixDQUN0RCxrQkFBK0MsRUFDL0MsYUFBYSxFQUNiLFlBQVksQ0FDYixDQUFDO2FBQ0g7UUFDSCxDQUFDLENBQ0YsQ0FBQztRQUVKLFlBQVksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLGdCQUFnQixFQUFFLENBQUMsa0JBQXNDLEVBQUUsRUFBRSxDQUNwRixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUM3QyxDQUFDO1FBRUYsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7SUFDbkMsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUN0QixPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQztZQUN4QixPQUFPLEVBQUUsSUFBSTtZQUNiLFVBQVUsRUFBRSxLQUFLO1NBQ2xCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0lBQzNCLENBQUM7SUFFRCw0RkFBNEY7SUFDcEYsNkJBQTZCO1FBQ25DLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFOUQsa0JBQWtCLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDeEQsa0JBQWtCLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsa0NBQWtDLENBQUMsQ0FBQztRQUV0RixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDL0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEVBQy9DLGtCQUFrQixFQUNsQixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FDdEIsQ0FBQztJQUNKLENBQUM7O3NJQTdGVSx3Q0FBd0M7MEhBQXhDLHdDQUF3Qyw2TUFGeEMsQ0FBQyx5Q0FBeUMsQ0FBQzs0RkFFM0Msd0NBQXdDO2tCQUxwRCxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtQ0FBbUM7b0JBQzdDLDJHQUEyRztvQkFDM0csU0FBUyxFQUFFLENBQUMseUNBQXlDLENBQUM7aUJBQ3ZEO2lMQUVVLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFFSSxjQUFjO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBSZW5kZXJlcjIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR3JpZE9wdGlvbnMsIE1vZHVsZSB9IGZyb20gJ0BhZy1ncmlkLWNvbW11bml0eS9jb3JlJztcbmltcG9ydCB7IEFkYXB0YWJsZU9wdGlvbnMgfSBmcm9tICdAYWRhcHRhYmxldG9vbHMvYWRhcHRhYmxlL3NyYy9BZGFwdGFibGVPcHRpb25zL0FkYXB0YWJsZU9wdGlvbnMnO1xuaW1wb3J0IHsgQWRhcHRhYmxlUmVhZHlJbmZvIH0gZnJvbSAnQGFkYXB0YWJsZXRvb2xzL2FkYXB0YWJsZS9zcmMvQXBpL0V2ZW50cy9BZGFwdGFibGVSZWFkeSc7XG5pbXBvcnQgeyBBZGFwdGFibGVBcGkgfSBmcm9tICdAYWRhcHRhYmxldG9vbHMvYWRhcHRhYmxlL3NyYy9BcGkvQWRhcHRhYmxlQXBpJztcbmltcG9ydCB7IEFkYXB0YWJsZSB9IGZyb20gJ0BhZGFwdGFibGV0b29scy9hZGFwdGFibGUvc3JjL2FnR3JpZC9BZGFwdGFibGUnO1xuaW1wb3J0IHsgQW5ndWxhckZyYW1ld29ya0NvbXBvbmVudCB9IGZyb20gJ0BhZGFwdGFibGV0b29scy9hZGFwdGFibGUvdHlwZXMnO1xuaW1wb3J0IHsgQWRhcHRhYmxlQW5ndWxhckZyYW1ld29ya0NvbXBvbmVudFNlcnZpY2UgfSBmcm9tICcuL2FkYXB0YWJsZS1hbmd1bGFyLWZyYW1ld29yay1jb21wb25lbnQuc2VydmljZSc7XG5cbmZ1bmN0aW9uIGdldFJhbmRvbUludChtYXg6IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBNYXRoLmZsb29yKG1heCkpO1xufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdhZy1ncmlkLWFuZ3VsYXJbYWRhcHRhYmxlT3B0aW9uc10nLFxuICAvLyBlbnN1cmVzIGVhY2ggQUcgR3JpZCBpbnN0YW5jZSBoYXMgaXRzIG93biBjb3B5IG9mIHRoZSBzZXJ2aWNlIChpbmNsLiB0aGUgZnJhbWV3b3JrIGNvbXBvbmVudCByZWZlcmVuY2VzKVxuICBwcm92aWRlcnM6IFtBZGFwdGFibGVBbmd1bGFyRnJhbWV3b3JrQ29tcG9uZW50U2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIEFkYXB0YWJsZUFuZ3VsYXJBZ0dyaWRDb21wb25lbnREaXJlY3RpdmU8VERhdGEgPSBhbnk+IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQge1xuICBASW5wdXQoKSBhZGFwdGFibGVPcHRpb25zOiBBZGFwdGFibGVPcHRpb25zPFREYXRhPjtcbiAgQElucHV0KCkgbW9kdWxlczogTW9kdWxlW107XG4gIEBJbnB1dCgpIGdyaWRPcHRpb25zOiBHcmlkT3B0aW9uczxURGF0YT47XG5cbiAgQE91dHB1dCgpIGFkYXB0YWJsZVJlYWR5ID0gbmV3IEV2ZW50RW1pdHRlcjxBZGFwdGFibGVSZWFkeUluZm8+KCk7XG5cbiAgcHVibGljIGFkYXB0YWJsZUNvbnRhaW5lcklkOiBzdHJpbmc7XG4gIHByaXZhdGUgYWRhcHRhYmxlQXBpOiBBZGFwdGFibGVBcGk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBmcmFtZXdvcmtDb21wb25lbnRTZXJ2aWNlOiBBZGFwdGFibGVBbmd1bGFyRnJhbWV3b3JrQ29tcG9uZW50U2VydmljZVxuICApIHtcbiAgICBjb25zdCBzZWVkSWQgPSBgJHtnZXRSYW5kb21JbnQoMTAwMCl9LSR7RGF0ZS5ub3coKX1gO1xuXG4gICAgdGhpcy5hZGFwdGFibGVDb250YWluZXJJZCA9IGBhZGFwdGFibGUtJHtzZWVkSWR9YDtcbiAgfVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLm1vZHVsZXMgPT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgQXR0cmlidXRlICdtb2R1bGVzJyBpcyByZXF1aXJlZC4gUGxlYXNlIHBhc3MgdGhlIGFnLWdyaWQgbW9kdWxlcyB5b3UgdXNlIGludG8gQWRhcFRhYmxlLlxuICAgICAgICAgSWYgeW91IGRvbid0IGhhdmUgZXh0cmEgbW9kdWxlcywgcGFzcyBhbiBlbXB0eSBhcnJheS5gXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuY3JlYXRlQW5ndWxhcldyYXBwZXJDb250YWluZXIoKTtcblxuICAgIHRoaXMuYWRhcHRhYmxlT3B0aW9ucy5jb250YWluZXJPcHRpb25zID0gdGhpcy5hZGFwdGFibGVPcHRpb25zLmNvbnRhaW5lck9wdGlvbnMgfHwge307XG4gICAgdGhpcy5hZGFwdGFibGVPcHRpb25zLmNvbnRhaW5lck9wdGlvbnMuYWRhcHRhYmxlQ29udGFpbmVyID0gdGhpcy5hZGFwdGFibGVDb250YWluZXJJZDtcblxuICAgIGNvbnN0IGFkYXB0YWJsZUFwaSA9IGF3YWl0IEFkYXB0YWJsZS5pbml0SW50ZXJuYWwodGhpcy5hZGFwdGFibGVPcHRpb25zLCB7XG4gICAgICBncmlkT3B0aW9uczogdGhpcy5ncmlkT3B0aW9ucyxcbiAgICAgIHdhaXRGb3JBZ0dyaWQ6IHRydWUsXG4gICAgICB2YXJpYW50OiAnYW5ndWxhcicsXG4gICAgICBtb2R1bGVzOiB0aGlzLm1vZHVsZXMsXG4gICAgfSk7XG5cbiAgICBhZGFwdGFibGVBcGkuaW50ZXJuYWxBcGlcbiAgICAgIC5nZXRBZGFwdGFibGVJbnN0YW5jZSgpXG4gICAgICAuX29uSW5jbHVkZUZpcmVkKFxuICAgICAgICAnRnJhbWV3b3JrQ29tcG9uZW50Q2hhbmdlJyxcbiAgICAgICAgKHsgY29tbWFuZCwgZnJhbWV3b3JrQ29tcG9uZW50LCBjb250YWluZXJEb21Ob2RlLCBjb21wb25lbnRUeXBlIH0pID0+IHtcbiAgICAgICAgICBpZiAoY29tbWFuZCA9PT0gJ2NyZWF0ZScpIHtcbiAgICAgICAgICAgIHRoaXMuZnJhbWV3b3JrQ29tcG9uZW50U2VydmljZS5jcmVhdGVGcmFtZXdvcmtDb21wb25lbnQoXG4gICAgICAgICAgICAgIGZyYW1ld29ya0NvbXBvbmVudCBhcyBBbmd1bGFyRnJhbWV3b3JrQ29tcG9uZW50LFxuICAgICAgICAgICAgICBjb250YWluZXJEb21Ob2RlLFxuICAgICAgICAgICAgICBjb21wb25lbnRUeXBlLFxuICAgICAgICAgICAgICBhZGFwdGFibGVBcGlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZnJhbWV3b3JrQ29tcG9uZW50U2VydmljZS5kZXN0cm95RnJhbWV3b3JrQ29tcG9uZW50KFxuICAgICAgICAgICAgICBmcmFtZXdvcmtDb21wb25lbnQgYXMgQW5ndWxhckZyYW1ld29ya0NvbXBvbmVudCxcbiAgICAgICAgICAgICAgY29tcG9uZW50VHlwZSxcbiAgICAgICAgICAgICAgYWRhcHRhYmxlQXBpXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgIGFkYXB0YWJsZUFwaS5ldmVudEFwaS5vbignQWRhcHRhYmxlUmVhZHknLCAoYWRhcHRhYmxlUmVhZHlJbmZvOiBBZGFwdGFibGVSZWFkeUluZm8pID0+XG4gICAgICB0aGlzLmFkYXB0YWJsZVJlYWR5LmVtaXQoYWRhcHRhYmxlUmVhZHlJbmZvKVxuICAgICk7XG5cbiAgICB0aGlzLmFkYXB0YWJsZUFwaSA9IGFkYXB0YWJsZUFwaTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICghdGhpcy5hZGFwdGFibGVBcGkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5hZGFwdGFibGVBcGkuZGVzdHJveSh7XG4gICAgICB1bm1vdW50OiB0cnVlLFxuICAgICAgZGVzdHJveUFwaTogZmFsc2UsXG4gICAgfSk7XG4gICAgdGhpcy5hZGFwdGFibGVBcGkgPSBudWxsO1xuICB9XG5cbiAgLy8gY3JlYXRlcyB0aGUgY29udGFpbmVyIGZvciB0aGUgYWRhcHRhYmxlIHRvb2xiYXIgYW5kIGluc2VydHMgaXQgYmVmb3JlIHRoZSBhZy1ncmlkIGVsZW1lbnRcbiAgcHJpdmF0ZSBjcmVhdGVBbmd1bGFyV3JhcHBlckNvbnRhaW5lcigpOiB2b2lkIHtcbiAgICBjb25zdCBhZGFwdGFibGVDb250YWluZXIgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXG4gICAgYWRhcHRhYmxlQ29udGFpbmVyLnN0eWxlLnNldFByb3BlcnR5KCdkaXNwbGF5JywgJ2ZsZXgnKTtcbiAgICBhZGFwdGFibGVDb250YWluZXIuc3R5bGUuc2V0UHJvcGVydHkoJ2ZsZXgtZmxvdycsICd2YXIoLS1hYl9mbGV4LWRpcmVjdGlvbiwgY29sdW1uKScpO1xuXG4gICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eShhZGFwdGFibGVDb250YWluZXIsICdpZCcsIHRoaXMuYWRhcHRhYmxlQ29udGFpbmVySWQpO1xuICAgIHRoaXMucmVuZGVyZXIuaW5zZXJ0QmVmb3JlKFxuICAgICAgdGhpcy5yZW5kZXJlci5wYXJlbnROb2RlKHRoaXMuZWwubmF0aXZlRWxlbWVudCksXG4gICAgICBhZGFwdGFibGVDb250YWluZXIsXG4gICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnRcbiAgICApO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,18 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { AdaptableAngularAgGridComponentDirective } from './adaptable-angular-ag-grid-component.directive';
3
+ import * as i0 from "@angular/core";
4
+ export class AdaptableAngularAgGridModule {
5
+ }
6
+ AdaptableAngularAgGridModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdaptableAngularAgGridModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
7
+ AdaptableAngularAgGridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: AdaptableAngularAgGridModule, declarations: [AdaptableAngularAgGridComponentDirective], exports: [AdaptableAngularAgGridComponentDirective] });
8
+ AdaptableAngularAgGridModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdaptableAngularAgGridModule });
9
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdaptableAngularAgGridModule, decorators: [{
10
+ type: NgModule,
11
+ args: [{
12
+ declarations: [AdaptableAngularAgGridComponentDirective],
13
+ imports: [],
14
+ exports: [AdaptableAngularAgGridComponentDirective],
15
+ providers: [],
16
+ }]
17
+ }] });
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRhYmxlLWFuZ3VsYXItYWdncmlkLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FkYXB0YWJsZS1hbmd1bGFyLWFnZ3JpZC9zcmMvbGliL2FkYXB0YWJsZS1hbmd1bGFyLWFnZ3JpZC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsd0NBQXdDLEVBQUUsTUFBTSxpREFBaUQsQ0FBQzs7QUFRM0csTUFBTSxPQUFPLDRCQUE0Qjs7MEhBQTVCLDRCQUE0QjsySEFBNUIsNEJBQTRCLGlCQUx4Qix3Q0FBd0MsYUFFN0Msd0NBQXdDOzJIQUd2Qyw0QkFBNEI7NEZBQTVCLDRCQUE0QjtrQkFOeEMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyx3Q0FBd0MsQ0FBQztvQkFDeEQsT0FBTyxFQUFFLEVBQUU7b0JBQ1gsT0FBTyxFQUFFLENBQUMsd0NBQXdDLENBQUM7b0JBQ25ELFNBQVMsRUFBRSxFQUFFO2lCQUNkIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFkYXB0YWJsZUFuZ3VsYXJBZ0dyaWRDb21wb25lbnREaXJlY3RpdmUgfSBmcm9tICcuL2FkYXB0YWJsZS1hbmd1bGFyLWFnLWdyaWQtY29tcG9uZW50LmRpcmVjdGl2ZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW0FkYXB0YWJsZUFuZ3VsYXJBZ0dyaWRDb21wb25lbnREaXJlY3RpdmVdLFxuICBpbXBvcnRzOiBbXSxcbiAgZXhwb3J0czogW0FkYXB0YWJsZUFuZ3VsYXJBZ0dyaWRDb21wb25lbnREaXJlY3RpdmVdLFxuICBwcm92aWRlcnM6IFtdLFxufSlcbmV4cG9ydCBjbGFzcyBBZGFwdGFibGVBbmd1bGFyQWdHcmlkTW9kdWxlIHt9XG4iXX0=
@@ -0,0 +1,3 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ export const ADAPTABLE_API = new InjectionToken('ADAPTABLE_API');
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRhYmxlLWFuZ3VsYXItYWdncmlkLnRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYWRhcHRhYmxlLWFuZ3VsYXItYWdncmlkL3NyYy9saWIvYWRhcHRhYmxlLWFuZ3VsYXItYWdncmlkLnRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0MsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLElBQUksY0FBYyxDQUFlLGVBQWUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFkYXB0YWJsZUFwaSB9IGZyb20gJ0BhZGFwdGFibGV0b29scy9hZGFwdGFibGUvc3JjL3R5cGVzJztcblxuZXhwb3J0IGNvbnN0IEFEQVBUQUJMRV9BUEkgPSBuZXcgSW5qZWN0aW9uVG9rZW48QWRhcHRhYmxlQXBpPignQURBUFRBQkxFX0FQSScpO1xuIl19
@@ -0,0 +1,77 @@
1
+ import { createComponent, Injectable, Injector, } from '@angular/core';
2
+ import { ADAPTABLE_API } from './adaptable-angular-aggrid.token';
3
+ import * as i0 from "@angular/core";
4
+ export class AdaptableAngularFrameworkComponentService {
5
+ constructor(injector, environmentInjector, appRef) {
6
+ this.injector = injector;
7
+ this.environmentInjector = environmentInjector;
8
+ this.appRef = appRef;
9
+ this.toolbarComponentRefs = new WeakMap();
10
+ }
11
+ createFrameworkComponent(component, containerDomNode, componentType, adaptableApi) {
12
+ try {
13
+ adaptableApi.logInfo(`Creating framework component for ${componentType}`, containerDomNode);
14
+ if (this.toolbarComponentRefs.has(component)) {
15
+ adaptableApi.logInfo(`Creation of framework component ${componentType} skipped as it is already present`, containerDomNode);
16
+ return;
17
+ }
18
+ const angularComponentRef = this.createAngularComponent(component.type, containerDomNode, adaptableApi);
19
+ if (component.onSetup) {
20
+ Object.assign(angularComponentRef.instance, component.onSetup({ adaptableApi }));
21
+ }
22
+ this.toolbarComponentRefs.set(component, angularComponentRef);
23
+ }
24
+ catch (err) {
25
+ adaptableApi.logError(`Cannot correctly create framework component for ${componentType}`, err);
26
+ }
27
+ }
28
+ destroyFrameworkComponent(component, componentType, adaptableApi) {
29
+ adaptableApi.logInfo(`Destroying framework component for ${componentType}`);
30
+ const toolbarComponentRef = this.toolbarComponentRefs.get(component);
31
+ if (toolbarComponentRef) {
32
+ try {
33
+ toolbarComponentRef.destroy();
34
+ this.toolbarComponentRefs.delete(component);
35
+ }
36
+ catch (err) {
37
+ adaptableApi.logError(`Cannot correctly destroy framework component for ${componentType}`, err);
38
+ }
39
+ }
40
+ else {
41
+ adaptableApi.logInfo(`Cannot correctly destroy framework component for ${componentType} because the reference is no longer available`);
42
+ }
43
+ }
44
+ createAngularComponent(angularComponentType, domContainer, api) {
45
+ // extend standard DI context with AdaptableApi
46
+ const toolbarInjector = Injector.create({
47
+ providers: [
48
+ {
49
+ provide: ADAPTABLE_API,
50
+ useValue: api,
51
+ },
52
+ ],
53
+ parent: this.injector,
54
+ });
55
+ // create the component
56
+ const componentRef = createComponent(angularComponentType, {
57
+ hostElement: domContainer,
58
+ environmentInjector: this.environmentInjector,
59
+ elementInjector: toolbarInjector,
60
+ });
61
+ // Last step is to register the newly created ref using the `ApplicationRef` instance
62
+ // to include the component view into change detection cycles.
63
+ this.appRef.attachView(componentRef.hostView);
64
+ // trigger an early change detection
65
+ componentRef.changeDetectorRef.detectChanges();
66
+ return componentRef;
67
+ }
68
+ }
69
+ AdaptableAngularFrameworkComponentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdaptableAngularFrameworkComponentService, deps: [{ token: i0.Injector }, { token: i0.EnvironmentInjector }, { token: i0.ApplicationRef }], target: i0.ɵɵFactoryTarget.Injectable });
70
+ AdaptableAngularFrameworkComponentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdaptableAngularFrameworkComponentService, providedIn: 'root' });
71
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdaptableAngularFrameworkComponentService, decorators: [{
72
+ type: Injectable,
73
+ args: [{
74
+ providedIn: 'root',
75
+ }]
76
+ }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.EnvironmentInjector }, { type: i0.ApplicationRef }]; } });
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRhYmxlLWFuZ3VsYXItZnJhbWV3b3JrLWNvbXBvbmVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYWRhcHRhYmxlLWFuZ3VsYXItYWdncmlkL3NyYy9saWIvYWRhcHRhYmxlLWFuZ3VsYXItZnJhbWV3b3JrLWNvbXBvbmVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxlQUFlLEVBRWYsVUFBVSxFQUNWLFFBQVEsR0FFVCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7O0FBTWpFLE1BQU0sT0FBTyx5Q0FBeUM7SUFHcEQsWUFDVSxRQUFrQixFQUNsQixtQkFBd0MsRUFDeEMsTUFBc0I7UUFGdEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLFdBQU0sR0FBTixNQUFNLENBQWdCO1FBRTlCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLE9BQU8sRUFBb0QsQ0FBQztJQUM5RixDQUFDO0lBRUQsd0JBQXdCLENBQ3RCLFNBQW9DLEVBQ3BDLGdCQUE2QixFQUM3QixhQUFxQixFQUNyQixZQUEwQjtRQUUxQixJQUFJO1lBQ0YsWUFBWSxDQUFDLE9BQU8sQ0FBQyxvQ0FBb0MsYUFBYSxFQUFFLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztZQUM1RixJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQzVDLFlBQVksQ0FBQyxPQUFPLENBQ2xCLG1DQUFtQyxhQUFhLG1DQUFtQyxFQUNuRixnQkFBZ0IsQ0FDakIsQ0FBQztnQkFDRixPQUFPO2FBQ1I7WUFFRCxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FDckQsU0FBUyxDQUFDLElBQXFCLEVBQy9CLGdCQUFnQixFQUNoQixZQUFZLENBQ2IsQ0FBQztZQUVGLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRTtnQkFDckIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQzthQUNsRjtZQUVELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLG1CQUFtQixDQUFDLENBQUM7U0FDL0Q7UUFBQyxPQUFPLEdBQUcsRUFBRTtZQUNaLFlBQVksQ0FBQyxRQUFRLENBQ25CLG1EQUFtRCxhQUFhLEVBQUUsRUFDbEUsR0FBRyxDQUNKLENBQUM7U0FDSDtJQUNILENBQUM7SUFFRCx5QkFBeUIsQ0FDdkIsU0FBb0MsRUFDcEMsYUFBcUIsRUFDckIsWUFBMEI7UUFFMUIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxzQ0FBc0MsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUM1RSxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDckUsSUFBSSxtQkFBbUIsRUFBRTtZQUN2QixJQUFJO2dCQUNGLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUM5QixJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQzdDO1lBQUMsT0FBTyxHQUFHLEVBQUU7Z0JBQ1osWUFBWSxDQUFDLFFBQVEsQ0FDbkIsb0RBQW9ELGFBQWEsRUFBRSxFQUNuRSxHQUFHLENBQ0osQ0FBQzthQUNIO1NBQ0Y7YUFBTTtZQUNMLFlBQVksQ0FBQyxPQUFPLENBQ2xCLG9EQUFvRCxhQUFhLCtDQUErQyxDQUNqSCxDQUFDO1NBQ0g7SUFDSCxDQUFDO0lBRU8sc0JBQXNCLENBQzVCLG9CQUFtQyxFQUNuQyxZQUF5QixFQUN6QixHQUFpQjtRQUVqQiwrQ0FBK0M7UUFDL0MsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztZQUN0QyxTQUFTLEVBQUU7Z0JBQ1Q7b0JBQ0UsT0FBTyxFQUFFLGFBQWE7b0JBQ3RCLFFBQVEsRUFBRSxHQUFHO2lCQUNkO2FBQ0Y7WUFDRCxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVE7U0FDdEIsQ0FBQyxDQUFDO1FBRUgsdUJBQXVCO1FBQ3ZCLE1BQU0sWUFBWSxHQUFHLGVBQWUsQ0FBQyxvQkFBb0IsRUFBRTtZQUN6RCxXQUFXLEVBQUUsWUFBWTtZQUN6QixtQkFBbUIsRUFBRSxJQUFJLENBQUMsbUJBQW1CO1lBQzdDLGVBQWUsRUFBRSxlQUFlO1NBQ2pDLENBQUMsQ0FBQztRQUVILHFGQUFxRjtRQUNyRiw4REFBOEQ7UUFDOUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzlDLG9DQUFvQztRQUNwQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFL0MsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQzs7dUlBcEdVLHlDQUF5QzsySUFBekMseUNBQXlDLGNBRnhDLE1BQU07NEZBRVAseUNBQXlDO2tCQUhyRCxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFwcGxpY2F0aW9uUmVmLFxuICBDb21wb25lbnRSZWYsXG4gIGNyZWF0ZUNvbXBvbmVudCxcbiAgRW52aXJvbm1lbnRJbmplY3RvcixcbiAgSW5qZWN0YWJsZSxcbiAgSW5qZWN0b3IsXG4gIFR5cGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWRhcHRhYmxlQXBpIH0gZnJvbSAnQGFkYXB0YWJsZXRvb2xzL2FkYXB0YWJsZS9zcmMvQXBpL0FkYXB0YWJsZUFwaSc7XG5pbXBvcnQgeyBBREFQVEFCTEVfQVBJIH0gZnJvbSAnLi9hZGFwdGFibGUtYW5ndWxhci1hZ2dyaWQudG9rZW4nO1xuaW1wb3J0IHsgQW5ndWxhckZyYW1ld29ya0NvbXBvbmVudCB9IGZyb20gJ0BhZGFwdGFibGV0b29scy9hZGFwdGFibGUvdHlwZXMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQWRhcHRhYmxlQW5ndWxhckZyYW1ld29ya0NvbXBvbmVudFNlcnZpY2Uge1xuICBwcml2YXRlIHRvb2xiYXJDb21wb25lbnRSZWZzOiBXZWFrTWFwPEFuZ3VsYXJGcmFtZXdvcmtDb21wb25lbnQsIENvbXBvbmVudFJlZjx1bmtub3duPj47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBlbnZpcm9ubWVudEluamVjdG9yOiBFbnZpcm9ubWVudEluamVjdG9yLFxuICAgIHByaXZhdGUgYXBwUmVmOiBBcHBsaWNhdGlvblJlZlxuICApIHtcbiAgICB0aGlzLnRvb2xiYXJDb21wb25lbnRSZWZzID0gbmV3IFdlYWtNYXA8QW5ndWxhckZyYW1ld29ya0NvbXBvbmVudCwgQ29tcG9uZW50UmVmPHVua25vd24+PigpO1xuICB9XG5cbiAgY3JlYXRlRnJhbWV3b3JrQ29tcG9uZW50KFxuICAgIGNvbXBvbmVudDogQW5ndWxhckZyYW1ld29ya0NvbXBvbmVudCxcbiAgICBjb250YWluZXJEb21Ob2RlOiBIVE1MRWxlbWVudCxcbiAgICBjb21wb25lbnRUeXBlOiBzdHJpbmcsXG4gICAgYWRhcHRhYmxlQXBpOiBBZGFwdGFibGVBcGlcbiAgKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIGFkYXB0YWJsZUFwaS5sb2dJbmZvKGBDcmVhdGluZyBmcmFtZXdvcmsgY29tcG9uZW50IGZvciAke2NvbXBvbmVudFR5cGV9YCwgY29udGFpbmVyRG9tTm9kZSk7XG4gICAgICBpZiAodGhpcy50b29sYmFyQ29tcG9uZW50UmVmcy5oYXMoY29tcG9uZW50KSkge1xuICAgICAgICBhZGFwdGFibGVBcGkubG9nSW5mbyhcbiAgICAgICAgICBgQ3JlYXRpb24gb2YgZnJhbWV3b3JrIGNvbXBvbmVudCAke2NvbXBvbmVudFR5cGV9IHNraXBwZWQgYXMgaXQgaXMgYWxyZWFkeSBwcmVzZW50YCxcbiAgICAgICAgICBjb250YWluZXJEb21Ob2RlXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYW5ndWxhckNvbXBvbmVudFJlZiA9IHRoaXMuY3JlYXRlQW5ndWxhckNvbXBvbmVudChcbiAgICAgICAgY29tcG9uZW50LnR5cGUgYXMgVHlwZTx1bmtub3duPixcbiAgICAgICAgY29udGFpbmVyRG9tTm9kZSxcbiAgICAgICAgYWRhcHRhYmxlQXBpXG4gICAgICApO1xuXG4gICAgICBpZiAoY29tcG9uZW50Lm9uU2V0dXApIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihhbmd1bGFyQ29tcG9uZW50UmVmLmluc3RhbmNlLCBjb21wb25lbnQub25TZXR1cCh7IGFkYXB0YWJsZUFwaSB9KSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMudG9vbGJhckNvbXBvbmVudFJlZnMuc2V0KGNvbXBvbmVudCwgYW5ndWxhckNvbXBvbmVudFJlZik7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBhZGFwdGFibGVBcGkubG9nRXJyb3IoXG4gICAgICAgIGBDYW5ub3QgY29ycmVjdGx5IGNyZWF0ZSBmcmFtZXdvcmsgY29tcG9uZW50IGZvciAke2NvbXBvbmVudFR5cGV9YCxcbiAgICAgICAgZXJyXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGRlc3Ryb3lGcmFtZXdvcmtDb21wb25lbnQoXG4gICAgY29tcG9uZW50OiBBbmd1bGFyRnJhbWV3b3JrQ29tcG9uZW50LFxuICAgIGNvbXBvbmVudFR5cGU6IHN0cmluZyxcbiAgICBhZGFwdGFibGVBcGk6IEFkYXB0YWJsZUFwaVxuICApOiB2b2lkIHtcbiAgICBhZGFwdGFibGVBcGkubG9nSW5mbyhgRGVzdHJveWluZyBmcmFtZXdvcmsgY29tcG9uZW50IGZvciAke2NvbXBvbmVudFR5cGV9YCk7XG4gICAgY29uc3QgdG9vbGJhckNvbXBvbmVudFJlZiA9IHRoaXMudG9vbGJhckNvbXBvbmVudFJlZnMuZ2V0KGNvbXBvbmVudCk7XG4gICAgaWYgKHRvb2xiYXJDb21wb25lbnRSZWYpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRvb2xiYXJDb21wb25lbnRSZWYuZGVzdHJveSgpO1xuICAgICAgICB0aGlzLnRvb2xiYXJDb21wb25lbnRSZWZzLmRlbGV0ZShjb21wb25lbnQpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGFkYXB0YWJsZUFwaS5sb2dFcnJvcihcbiAgICAgICAgICBgQ2Fubm90IGNvcnJlY3RseSBkZXN0cm95IGZyYW1ld29yayBjb21wb25lbnQgZm9yICR7Y29tcG9uZW50VHlwZX1gLFxuICAgICAgICAgIGVyclxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBhZGFwdGFibGVBcGkubG9nSW5mbyhcbiAgICAgICAgYENhbm5vdCBjb3JyZWN0bHkgZGVzdHJveSBmcmFtZXdvcmsgY29tcG9uZW50IGZvciAke2NvbXBvbmVudFR5cGV9IGJlY2F1c2UgdGhlIHJlZmVyZW5jZSBpcyBubyBsb25nZXIgYXZhaWxhYmxlYFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUFuZ3VsYXJDb21wb25lbnQoXG4gICAgYW5ndWxhckNvbXBvbmVudFR5cGU6IFR5cGU8dW5rbm93bj4sXG4gICAgZG9tQ29udGFpbmVyOiBIVE1MRWxlbWVudCxcbiAgICBhcGk6IEFkYXB0YWJsZUFwaVxuICApOiBDb21wb25lbnRSZWY8dW5rbm93bj4ge1xuICAgIC8vIGV4dGVuZCBzdGFuZGFyZCBESSBjb250ZXh0IHdpdGggQWRhcHRhYmxlQXBpXG4gICAgY29uc3QgdG9vbGJhckluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogQURBUFRBQkxFX0FQSSxcbiAgICAgICAgICB1c2VWYWx1ZTogYXBpLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHBhcmVudDogdGhpcy5pbmplY3RvcixcbiAgICB9KTtcblxuICAgIC8vIGNyZWF0ZSB0aGUgY29tcG9uZW50XG4gICAgY29uc3QgY29tcG9uZW50UmVmID0gY3JlYXRlQ29tcG9uZW50KGFuZ3VsYXJDb21wb25lbnRUeXBlLCB7XG4gICAgICBob3N0RWxlbWVudDogZG9tQ29udGFpbmVyLFxuICAgICAgZW52aXJvbm1lbnRJbmplY3RvcjogdGhpcy5lbnZpcm9ubWVudEluamVjdG9yLFxuICAgICAgZWxlbWVudEluamVjdG9yOiB0b29sYmFySW5qZWN0b3IsXG4gICAgfSk7XG5cbiAgICAvLyBMYXN0IHN0ZXAgaXMgdG8gcmVnaXN0ZXIgdGhlIG5ld2x5IGNyZWF0ZWQgcmVmIHVzaW5nIHRoZSBgQXBwbGljYXRpb25SZWZgIGluc3RhbmNlXG4gICAgLy8gdG8gaW5jbHVkZSB0aGUgY29tcG9uZW50IHZpZXcgaW50byBjaGFuZ2UgZGV0ZWN0aW9uIGN5Y2xlcy5cbiAgICB0aGlzLmFwcFJlZi5hdHRhY2hWaWV3KGNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XG4gICAgLy8gdHJpZ2dlciBhbiBlYXJseSBjaGFuZ2UgZGV0ZWN0aW9uXG4gICAgY29tcG9uZW50UmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcblxuICAgIHJldHVybiBjb21wb25lbnRSZWY7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,9 @@
1
+ /*
2
+ * Public API Surface of adaptable-angular-aggrid
3
+ */
4
+ export * from './lib/adaptable-angular-ag-grid-component.directive';
5
+ export * from './lib/adaptable-angular-aggrid.module';
6
+ export * from '@adaptabletools/adaptable/src/types';
7
+ export { AdaptableQL, AdaptableBooleanExpressionFunctions, AdaptableScalarExpressionFunctions, AdaptableAggregatedBooleanExpressionFunctions, AdaptableAggregatedScalarExpressionFunctions, AdaptableObservableExpressionFunctions, } from '@adaptabletools/adaptable/agGrid';
8
+ export { ADAPTABLE_API } from './lib/adaptable-angular-aggrid.token';
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FkYXB0YWJsZS1hbmd1bGFyLWFnZ3JpZC9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELE9BQU8sRUFDTCxXQUFXLEVBQ1gsbUNBQW1DLEVBQ25DLGtDQUFrQyxFQUNsQyw2Q0FBNkMsRUFDN0MsNENBQTRDLEVBQzVDLHNDQUFzQyxHQUN2QyxNQUFNLGtDQUFrQyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgYWRhcHRhYmxlLWFuZ3VsYXItYWdncmlkXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvYWRhcHRhYmxlLWFuZ3VsYXItYWctZ3JpZC1jb21wb25lbnQuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FkYXB0YWJsZS1hbmd1bGFyLWFnZ3JpZC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnQGFkYXB0YWJsZXRvb2xzL2FkYXB0YWJsZS9zcmMvdHlwZXMnO1xuZXhwb3J0IHtcbiAgQWRhcHRhYmxlUUwsXG4gIEFkYXB0YWJsZUJvb2xlYW5FeHByZXNzaW9uRnVuY3Rpb25zLFxuICBBZGFwdGFibGVTY2FsYXJFeHByZXNzaW9uRnVuY3Rpb25zLFxuICBBZGFwdGFibGVBZ2dyZWdhdGVkQm9vbGVhbkV4cHJlc3Npb25GdW5jdGlvbnMsXG4gIEFkYXB0YWJsZUFnZ3JlZ2F0ZWRTY2FsYXJFeHByZXNzaW9uRnVuY3Rpb25zLFxuICBBZGFwdGFibGVPYnNlcnZhYmxlRXhwcmVzc2lvbkZ1bmN0aW9ucyxcbn0gZnJvbSAnQGFkYXB0YWJsZXRvb2xzL2FkYXB0YWJsZS9hZ0dyaWQnO1xuZXhwb3J0IHsgQURBUFRBQkxFX0FQSSB9IGZyb20gJy4vbGliL2FkYXB0YWJsZS1hbmd1bGFyLWFnZ3JpZC50b2tlbic7XG4iXX0=
@@ -0,0 +1,184 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, Injector, createComponent, Injectable, EventEmitter, Directive, Input, Output, NgModule } from '@angular/core';
3
+ import { Adaptable } from '@adaptabletools/adaptable/src/agGrid/Adaptable';
4
+ export * from '@adaptabletools/adaptable/src/types';
5
+ export { AdaptableAggregatedBooleanExpressionFunctions, AdaptableAggregatedScalarExpressionFunctions, AdaptableBooleanExpressionFunctions, AdaptableObservableExpressionFunctions, AdaptableQL, AdaptableScalarExpressionFunctions } from '@adaptabletools/adaptable/agGrid';
6
+
7
+ const ADAPTABLE_API = new InjectionToken('ADAPTABLE_API');
8
+
9
+ class AdaptableAngularFrameworkComponentService {
10
+ constructor(injector, environmentInjector, appRef) {
11
+ this.injector = injector;
12
+ this.environmentInjector = environmentInjector;
13
+ this.appRef = appRef;
14
+ this.toolbarComponentRefs = new WeakMap();
15
+ }
16
+ createFrameworkComponent(component, containerDomNode, componentType, adaptableApi) {
17
+ try {
18
+ adaptableApi.logInfo(`Creating framework component for ${componentType}`, containerDomNode);
19
+ if (this.toolbarComponentRefs.has(component)) {
20
+ adaptableApi.logInfo(`Creation of framework component ${componentType} skipped as it is already present`, containerDomNode);
21
+ return;
22
+ }
23
+ const angularComponentRef = this.createAngularComponent(component.type, containerDomNode, adaptableApi);
24
+ if (component.onSetup) {
25
+ Object.assign(angularComponentRef.instance, component.onSetup({ adaptableApi }));
26
+ }
27
+ this.toolbarComponentRefs.set(component, angularComponentRef);
28
+ }
29
+ catch (err) {
30
+ adaptableApi.logError(`Cannot correctly create framework component for ${componentType}`, err);
31
+ }
32
+ }
33
+ destroyFrameworkComponent(component, componentType, adaptableApi) {
34
+ adaptableApi.logInfo(`Destroying framework component for ${componentType}`);
35
+ const toolbarComponentRef = this.toolbarComponentRefs.get(component);
36
+ if (toolbarComponentRef) {
37
+ try {
38
+ toolbarComponentRef.destroy();
39
+ this.toolbarComponentRefs.delete(component);
40
+ }
41
+ catch (err) {
42
+ adaptableApi.logError(`Cannot correctly destroy framework component for ${componentType}`, err);
43
+ }
44
+ }
45
+ else {
46
+ adaptableApi.logInfo(`Cannot correctly destroy framework component for ${componentType} because the reference is no longer available`);
47
+ }
48
+ }
49
+ createAngularComponent(angularComponentType, domContainer, api) {
50
+ // extend standard DI context with AdaptableApi
51
+ const toolbarInjector = Injector.create({
52
+ providers: [
53
+ {
54
+ provide: ADAPTABLE_API,
55
+ useValue: api,
56
+ },
57
+ ],
58
+ parent: this.injector,
59
+ });
60
+ // create the component
61
+ const componentRef = createComponent(angularComponentType, {
62
+ hostElement: domContainer,
63
+ environmentInjector: this.environmentInjector,
64
+ elementInjector: toolbarInjector,
65
+ });
66
+ // Last step is to register the newly created ref using the `ApplicationRef` instance
67
+ // to include the component view into change detection cycles.
68
+ this.appRef.attachView(componentRef.hostView);
69
+ // trigger an early change detection
70
+ componentRef.changeDetectorRef.detectChanges();
71
+ return componentRef;
72
+ }
73
+ }
74
+ AdaptableAngularFrameworkComponentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdaptableAngularFrameworkComponentService, deps: [{ token: i0.Injector }, { token: i0.EnvironmentInjector }, { token: i0.ApplicationRef }], target: i0.ɵɵFactoryTarget.Injectable });
75
+ AdaptableAngularFrameworkComponentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdaptableAngularFrameworkComponentService, providedIn: 'root' });
76
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdaptableAngularFrameworkComponentService, decorators: [{
77
+ type: Injectable,
78
+ args: [{
79
+ providedIn: 'root',
80
+ }]
81
+ }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.EnvironmentInjector }, { type: i0.ApplicationRef }]; } });
82
+
83
+ function getRandomInt(max) {
84
+ return Math.floor(Math.random() * Math.floor(max));
85
+ }
86
+ class AdaptableAngularAgGridComponentDirective {
87
+ constructor(renderer, el, frameworkComponentService) {
88
+ this.renderer = renderer;
89
+ this.el = el;
90
+ this.frameworkComponentService = frameworkComponentService;
91
+ this.adaptableReady = new EventEmitter();
92
+ const seedId = `${getRandomInt(1000)}-${Date.now()}`;
93
+ this.adaptableContainerId = `adaptable-${seedId}`;
94
+ }
95
+ async ngOnInit() {
96
+ if (this.modules == null) {
97
+ throw new Error(`Attribute 'modules' is required. Please pass the ag-grid modules you use into AdapTable.
98
+ If you don't have extra modules, pass an empty array.`);
99
+ }
100
+ this.createAngularWrapperContainer();
101
+ this.adaptableOptions.containerOptions = this.adaptableOptions.containerOptions || {};
102
+ this.adaptableOptions.containerOptions.adaptableContainer = this.adaptableContainerId;
103
+ const adaptableApi = await Adaptable.initInternal(this.adaptableOptions, {
104
+ gridOptions: this.gridOptions,
105
+ waitForAgGrid: true,
106
+ variant: 'angular',
107
+ modules: this.modules,
108
+ });
109
+ adaptableApi.internalApi
110
+ .getAdaptableInstance()
111
+ ._onIncludeFired('FrameworkComponentChange', ({ command, frameworkComponent, containerDomNode, componentType }) => {
112
+ if (command === 'create') {
113
+ this.frameworkComponentService.createFrameworkComponent(frameworkComponent, containerDomNode, componentType, adaptableApi);
114
+ }
115
+ else {
116
+ this.frameworkComponentService.destroyFrameworkComponent(frameworkComponent, componentType, adaptableApi);
117
+ }
118
+ });
119
+ adaptableApi.eventApi.on('AdaptableReady', (adaptableReadyInfo) => this.adaptableReady.emit(adaptableReadyInfo));
120
+ this.adaptableApi = adaptableApi;
121
+ }
122
+ ngOnDestroy() {
123
+ if (!this.adaptableApi) {
124
+ return;
125
+ }
126
+ this.adaptableApi.destroy({
127
+ unmount: true,
128
+ destroyApi: false,
129
+ });
130
+ this.adaptableApi = null;
131
+ }
132
+ // creates the container for the adaptable toolbar and inserts it before the ag-grid element
133
+ createAngularWrapperContainer() {
134
+ const adaptableContainer = this.renderer.createElement('div');
135
+ adaptableContainer.style.setProperty('display', 'flex');
136
+ adaptableContainer.style.setProperty('flex-flow', 'var(--ab_flex-direction, column)');
137
+ this.renderer.setProperty(adaptableContainer, 'id', this.adaptableContainerId);
138
+ this.renderer.insertBefore(this.renderer.parentNode(this.el.nativeElement), adaptableContainer, this.el.nativeElement);
139
+ }
140
+ }
141
+ AdaptableAngularAgGridComponentDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdaptableAngularAgGridComponentDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: AdaptableAngularFrameworkComponentService }], target: i0.ɵɵFactoryTarget.Directive });
142
+ AdaptableAngularAgGridComponentDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: AdaptableAngularAgGridComponentDirective, selector: "ag-grid-angular[adaptableOptions]", inputs: { adaptableOptions: "adaptableOptions", modules: "modules", gridOptions: "gridOptions" }, outputs: { adaptableReady: "adaptableReady" }, providers: [AdaptableAngularFrameworkComponentService], ngImport: i0 });
143
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdaptableAngularAgGridComponentDirective, decorators: [{
144
+ type: Directive,
145
+ args: [{
146
+ selector: 'ag-grid-angular[adaptableOptions]',
147
+ // ensures each AG Grid instance has its own copy of the service (incl. the framework component references)
148
+ providers: [AdaptableAngularFrameworkComponentService],
149
+ }]
150
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: AdaptableAngularFrameworkComponentService }]; }, propDecorators: { adaptableOptions: [{
151
+ type: Input
152
+ }], modules: [{
153
+ type: Input
154
+ }], gridOptions: [{
155
+ type: Input
156
+ }], adaptableReady: [{
157
+ type: Output
158
+ }] } });
159
+
160
+ class AdaptableAngularAgGridModule {
161
+ }
162
+ AdaptableAngularAgGridModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdaptableAngularAgGridModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
163
+ AdaptableAngularAgGridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: AdaptableAngularAgGridModule, declarations: [AdaptableAngularAgGridComponentDirective], exports: [AdaptableAngularAgGridComponentDirective] });
164
+ AdaptableAngularAgGridModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdaptableAngularAgGridModule });
165
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdaptableAngularAgGridModule, decorators: [{
166
+ type: NgModule,
167
+ args: [{
168
+ declarations: [AdaptableAngularAgGridComponentDirective],
169
+ imports: [],
170
+ exports: [AdaptableAngularAgGridComponentDirective],
171
+ providers: [],
172
+ }]
173
+ }] });
174
+
175
+ /*
176
+ * Public API Surface of adaptable-angular-aggrid
177
+ */
178
+
179
+ /**
180
+ * Generated bundle index. Do not edit.
181
+ */
182
+
183
+ export { ADAPTABLE_API, AdaptableAngularAgGridComponentDirective, AdaptableAngularAgGridModule };
184
+ //# sourceMappingURL=adaptabletools-adaptable-angular-aggrid.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adaptabletools-adaptable-angular-aggrid.mjs","sources":["../../../projects/adaptable-angular-aggrid/src/lib/adaptable-angular-aggrid.token.ts","../../../projects/adaptable-angular-aggrid/src/lib/adaptable-angular-framework-component.service.ts","../../../projects/adaptable-angular-aggrid/src/lib/adaptable-angular-ag-grid-component.directive.ts","../../../projects/adaptable-angular-aggrid/src/lib/adaptable-angular-aggrid.module.ts","../../../projects/adaptable-angular-aggrid/src/public-api.ts","../../../projects/adaptable-angular-aggrid/src/adaptabletools-adaptable-angular-aggrid.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { AdaptableApi } from '@adaptabletools/adaptable/src/types';\n\nexport const ADAPTABLE_API = new InjectionToken<AdaptableApi>('ADAPTABLE_API');\n","import {\n ApplicationRef,\n ComponentRef,\n createComponent,\n EnvironmentInjector,\n Injectable,\n Injector,\n Type,\n} from '@angular/core';\nimport { AdaptableApi } from '@adaptabletools/adaptable/src/Api/AdaptableApi';\nimport { ADAPTABLE_API } from './adaptable-angular-aggrid.token';\nimport { AngularFrameworkComponent } from '@adaptabletools/adaptable/types';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AdaptableAngularFrameworkComponentService {\n private toolbarComponentRefs: WeakMap<AngularFrameworkComponent, ComponentRef<unknown>>;\n\n constructor(\n private injector: Injector,\n private environmentInjector: EnvironmentInjector,\n private appRef: ApplicationRef\n ) {\n this.toolbarComponentRefs = new WeakMap<AngularFrameworkComponent, ComponentRef<unknown>>();\n }\n\n createFrameworkComponent(\n component: AngularFrameworkComponent,\n containerDomNode: HTMLElement,\n componentType: string,\n adaptableApi: AdaptableApi\n ): void {\n try {\n adaptableApi.logInfo(`Creating framework component for ${componentType}`, containerDomNode);\n if (this.toolbarComponentRefs.has(component)) {\n adaptableApi.logInfo(\n `Creation of framework component ${componentType} skipped as it is already present`,\n containerDomNode\n );\n return;\n }\n\n const angularComponentRef = this.createAngularComponent(\n component.type as Type<unknown>,\n containerDomNode,\n adaptableApi\n );\n\n if (component.onSetup) {\n Object.assign(angularComponentRef.instance, component.onSetup({ adaptableApi }));\n }\n\n this.toolbarComponentRefs.set(component, angularComponentRef);\n } catch (err) {\n adaptableApi.logError(\n `Cannot correctly create framework component for ${componentType}`,\n err\n );\n }\n }\n\n destroyFrameworkComponent(\n component: AngularFrameworkComponent,\n componentType: string,\n adaptableApi: AdaptableApi\n ): void {\n adaptableApi.logInfo(`Destroying framework component for ${componentType}`);\n const toolbarComponentRef = this.toolbarComponentRefs.get(component);\n if (toolbarComponentRef) {\n try {\n toolbarComponentRef.destroy();\n this.toolbarComponentRefs.delete(component);\n } catch (err) {\n adaptableApi.logError(\n `Cannot correctly destroy framework component for ${componentType}`,\n err\n );\n }\n } else {\n adaptableApi.logInfo(\n `Cannot correctly destroy framework component for ${componentType} because the reference is no longer available`\n );\n }\n }\n\n private createAngularComponent(\n angularComponentType: Type<unknown>,\n domContainer: HTMLElement,\n api: AdaptableApi\n ): ComponentRef<unknown> {\n // extend standard DI context with AdaptableApi\n const toolbarInjector = Injector.create({\n providers: [\n {\n provide: ADAPTABLE_API,\n useValue: api,\n },\n ],\n parent: this.injector,\n });\n\n // create the component\n const componentRef = createComponent(angularComponentType, {\n hostElement: domContainer,\n environmentInjector: this.environmentInjector,\n elementInjector: toolbarInjector,\n });\n\n // Last step is to register the newly created ref using the `ApplicationRef` instance\n // to include the component view into change detection cycles.\n this.appRef.attachView(componentRef.hostView);\n // trigger an early change detection\n componentRef.changeDetectorRef.detectChanges();\n\n return componentRef;\n }\n}\n","import {\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n} from '@angular/core';\nimport { GridOptions, Module } from '@ag-grid-community/core';\nimport { AdaptableOptions } from '@adaptabletools/adaptable/src/AdaptableOptions/AdaptableOptions';\nimport { AdaptableReadyInfo } from '@adaptabletools/adaptable/src/Api/Events/AdaptableReady';\nimport { AdaptableApi } from '@adaptabletools/adaptable/src/Api/AdaptableApi';\nimport { Adaptable } from '@adaptabletools/adaptable/src/agGrid/Adaptable';\nimport { AngularFrameworkComponent } from '@adaptabletools/adaptable/types';\nimport { AdaptableAngularFrameworkComponentService } from './adaptable-angular-framework-component.service';\n\nfunction getRandomInt(max: number): number {\n return Math.floor(Math.random() * Math.floor(max));\n}\n\n@Directive({\n selector: 'ag-grid-angular[adaptableOptions]',\n // ensures each AG Grid instance has its own copy of the service (incl. the framework component references)\n providers: [AdaptableAngularFrameworkComponentService],\n})\nexport class AdaptableAngularAgGridComponentDirective<TData = any> implements OnDestroy, OnInit {\n @Input() adaptableOptions: AdaptableOptions<TData>;\n @Input() modules: Module[];\n @Input() gridOptions: GridOptions<TData>;\n\n @Output() adaptableReady = new EventEmitter<AdaptableReadyInfo>();\n\n public adaptableContainerId: string;\n private adaptableApi: AdaptableApi;\n\n constructor(\n private renderer: Renderer2,\n private el: ElementRef,\n private frameworkComponentService: AdaptableAngularFrameworkComponentService\n ) {\n const seedId = `${getRandomInt(1000)}-${Date.now()}`;\n\n this.adaptableContainerId = `adaptable-${seedId}`;\n }\n\n async ngOnInit() {\n if (this.modules == null) {\n throw new Error(\n `Attribute 'modules' is required. Please pass the ag-grid modules you use into AdapTable.\n If you don't have extra modules, pass an empty array.`\n );\n }\n\n this.createAngularWrapperContainer();\n\n this.adaptableOptions.containerOptions = this.adaptableOptions.containerOptions || {};\n this.adaptableOptions.containerOptions.adaptableContainer = this.adaptableContainerId;\n\n const adaptableApi = await Adaptable.initInternal(this.adaptableOptions, {\n gridOptions: this.gridOptions,\n waitForAgGrid: true,\n variant: 'angular',\n modules: this.modules,\n });\n\n adaptableApi.internalApi\n .getAdaptableInstance()\n ._onIncludeFired(\n 'FrameworkComponentChange',\n ({ command, frameworkComponent, containerDomNode, componentType }) => {\n if (command === 'create') {\n this.frameworkComponentService.createFrameworkComponent(\n frameworkComponent as AngularFrameworkComponent,\n containerDomNode,\n componentType,\n adaptableApi\n );\n } else {\n this.frameworkComponentService.destroyFrameworkComponent(\n frameworkComponent as AngularFrameworkComponent,\n componentType,\n adaptableApi\n );\n }\n }\n );\n\n adaptableApi.eventApi.on('AdaptableReady', (adaptableReadyInfo: AdaptableReadyInfo) =>\n this.adaptableReady.emit(adaptableReadyInfo)\n );\n\n this.adaptableApi = adaptableApi;\n }\n\n ngOnDestroy() {\n if (!this.adaptableApi) {\n return;\n }\n this.adaptableApi.destroy({\n unmount: true,\n destroyApi: false,\n });\n this.adaptableApi = null;\n }\n\n // creates the container for the adaptable toolbar and inserts it before the ag-grid element\n private createAngularWrapperContainer(): void {\n const adaptableContainer = this.renderer.createElement('div');\n\n adaptableContainer.style.setProperty('display', 'flex');\n adaptableContainer.style.setProperty('flex-flow', 'var(--ab_flex-direction, column)');\n\n this.renderer.setProperty(adaptableContainer, 'id', this.adaptableContainerId);\n this.renderer.insertBefore(\n this.renderer.parentNode(this.el.nativeElement),\n adaptableContainer,\n this.el.nativeElement\n );\n }\n}\n","import { NgModule } from '@angular/core';\nimport { AdaptableAngularAgGridComponentDirective } from './adaptable-angular-ag-grid-component.directive';\n\n@NgModule({\n declarations: [AdaptableAngularAgGridComponentDirective],\n imports: [],\n exports: [AdaptableAngularAgGridComponentDirective],\n providers: [],\n})\nexport class AdaptableAngularAgGridModule {}\n","/*\n * Public API Surface of adaptable-angular-aggrid\n */\n\nexport * from './lib/adaptable-angular-ag-grid-component.directive';\nexport * from './lib/adaptable-angular-aggrid.module';\nexport * from '@adaptabletools/adaptable/src/types';\nexport {\n AdaptableQL,\n AdaptableBooleanExpressionFunctions,\n AdaptableScalarExpressionFunctions,\n AdaptableAggregatedBooleanExpressionFunctions,\n AdaptableAggregatedScalarExpressionFunctions,\n AdaptableObservableExpressionFunctions,\n} from '@adaptabletools/adaptable/agGrid';\nexport { ADAPTABLE_API } from './lib/adaptable-angular-aggrid.token';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.AdaptableAngularFrameworkComponentService"],"mappings":"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"}