ag-studio-angular 1.0.0 → 1.1.0

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.
@@ -48,6 +48,13 @@ export class AngularFrameworkOverrides extends _VanillaFrameworkOverrides {
48
48
  get shouldWrapOutgoing() {
49
49
  return this._ngZone && NgZone.isInAngularZone();
50
50
  }
51
+ isFrameworkComponent(comp) {
52
+ if (!comp) {
53
+ return false;
54
+ }
55
+ const prototype = comp.prototype;
56
+ return prototype && 'agInit' in prototype;
57
+ }
51
58
  runInsideAngular(callback) {
52
59
  if (!this._ngZone || NgZone.isInAngularZone()) {
53
60
  return callback();
@@ -64,4 +71,4 @@ export class AngularFrameworkOverrides extends _VanillaFrameworkOverrides {
64
71
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AngularFrameworkOverrides, decorators: [{
65
72
  type: Injectable
66
73
  }], ctorParameters: () => [{ type: i0.NgZone }] });
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhckZyYW1ld29ya092ZXJyaWRlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FnLXN0dWRpby1hbmd1bGFyL3NyYy9saWIvYW5ndWxhckZyYW1ld29ya092ZXJyaWRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxXQUFXLENBQUM7O0FBS3ZELE1BQU0sT0FBTyx5QkFBMEIsU0FBUSwwQkFBMEI7SUFRckUsWUFBNkIsT0FBZTtRQUN4QyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFEUSxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBUG5CLHdCQUFtQixHQUFZLElBQUksQ0FBQztRQUU3RCw2RkFBNkY7UUFDNUUsNEJBQXVCLEdBQVksS0FBSyxDQUFDO1FBMkIxRCx5RkFBeUY7UUFDekYseUZBQXlGO1FBQ3pGLDJGQUEyRjtRQUMzRiw2RkFBNkY7UUFDN0YsMEdBQTBHO1FBQ2pHLGlCQUFZLEdBQTJFLENBQzVGLFFBQVEsRUFDUixNQUFNLEVBQ1IsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBWXZDOzs7V0FHRztRQUNNLGlCQUFZLEdBQWdDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUE1Qy9GLElBQUksQ0FBQyx1QkFBdUI7WUFDdkIsVUFBa0IsRUFBRSxvQkFBb0IsSUFBSSxDQUFDLENBQUUsVUFBa0IsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLENBQUM7UUFFaEcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMvQyxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztZQUN0QyxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFO2dCQUNuQyxJQUFJLE1BQU0sS0FBSyxpQkFBaUIsSUFBSSxNQUFNLEtBQUssa0JBQWtCLEVBQUUsQ0FBQztvQkFDaEUsd0hBQXdIO29CQUN4SCxnSUFBZ0k7b0JBQ2hJLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDcEQsQ0FBQztnQkFDRCwwSEFBMEg7Z0JBQzFILE9BQU8sUUFBUSxFQUFFLENBQUM7WUFDdEIsQ0FBQyxDQUFDO1FBQ04sQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdFLENBQUM7SUFDTCxDQUFDO0lBWUQ7Ozs7O09BS0c7SUFDSCxJQUFXLGtCQUFrQjtRQUN6QixPQUFPLElBQUksQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3BELENBQUM7SUFRRCxnQkFBZ0IsQ0FBSSxRQUFpQjtRQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxNQUFNLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQztZQUM1QyxPQUFPLFFBQVEsRUFBRSxDQUFDO1FBQ3RCLENBQUM7UUFFRCxpRUFBaUU7UUFDakUsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsaUJBQWlCLENBQUksUUFBaUIsRUFBRSxNQUF5QztRQUM3RSxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzdDLENBQUM7K0dBcEVRLHlCQUF5QjttSEFBekIseUJBQXlCOzs0RkFBekIseUJBQXlCO2tCQURyQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBfVmFuaWxsYUZyYW1ld29ya092ZXJyaWRlcyB9IGZyb20gJ2FnLXN0dWRpbyc7XG5cbmltcG9ydCB0eXBlIHsgRnJhbWV3b3JrT3ZlcnJpZGVzSW5jb21pbmdTb3VyY2UgfSBmcm9tICdhZy1ncmlkLWVudGVycHJpc2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQW5ndWxhckZyYW1ld29ya092ZXJyaWRlcyBleHRlbmRzIF9WYW5pbGxhRnJhbWV3b3JrT3ZlcnJpZGVzIHtcbiAgICBwdWJsaWMgb3ZlcnJpZGUgcmVhZG9ubHkgYmF0Y2hGcmFtZXdvcmtDb21wczogYm9vbGVhbiA9IHRydWU7XG5cbiAgICAvLyBGbGFnIHVzZWQgdG8gY29udHJvbCBab25lIGJlaGF2aW91ciB3aGVuIHJ1bm5pbmcgdGVzdHMgYXMgbWFueSB0ZXN0IGZlYXR1cmVzIHJlbHkgb24gWm9uZS5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGlzUnVubmluZ1dpdGhpblRlc3Rab25lOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IHJ1bk91dHNpZGU6IDxUPihjYWxsYmFjazogKCkgPT4gVCwgc291cmNlPzogRnJhbWV3b3JrT3ZlcnJpZGVzSW5jb21pbmdTb3VyY2UpID0+IFQ7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IF9uZ1pvbmU6IE5nWm9uZSkge1xuICAgICAgICBzdXBlcignYW5ndWxhcicpO1xuXG4gICAgICAgIHRoaXMuaXNSdW5uaW5nV2l0aGluVGVzdFpvbmUgPVxuICAgICAgICAgICAgKGdsb2JhbFRoaXMgYXMgYW55KT8uQUdfU1RVRElPX1VOREVSX1RFU1QgPz8gISEoZ2xvYmFsVGhpcyBhcyBhbnkpPy5ab25lPy5Bc3luY1Rlc3Rab25lU3BlYztcblxuICAgICAgICBpZiAoIXRoaXMuX25nWm9uZSkge1xuICAgICAgICAgICAgdGhpcy5ydW5PdXRzaWRlID0gKGNhbGxiYWNrKSA9PiBjYWxsYmFjaygpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNSdW5uaW5nV2l0aGluVGVzdFpvbmUpIHtcbiAgICAgICAgICAgIHRoaXMucnVuT3V0c2lkZSA9IChjYWxsYmFjaywgc291cmNlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHNvdXJjZSA9PT0gJ3Jlc2l6ZS1vYnNlcnZlcicgfHwgc291cmNlID09PSAncG9wdXBQb3NpdGlvbmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZW5zdXJlIHJlc2l6ZSBvYnNlcnZlciBjYWxsYmFja3MgYXJlIHJ1biBvdXRzaWRlIG9mIEFuZ3VsYXIgZXZlbiB1bmRlciB0ZXN0IGR1ZSB0byBKZXN0IG5vdCBzdXBwb3J0aW5nIFJlc2l6ZU9ic2VydmVyXG4gICAgICAgICAgICAgICAgICAgIC8vIHdoaWNoIG1lYW5zIGl0IGp1c3QgbG9vcHMgY29udGludW91c2x5IHdpdGggYSBzZXRUaW1lb3V0IHdpdGggbm8gd2F5IHRvIGZsdXNoIHRoZSBxdWV1ZSBvciBoYXZlIGZpeHR1cmUud2hlblN0YWJsZSgpIHJlc29sdmUuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoY2FsbGJhY2spO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBXaGVuIHVuZGVyIHRlc3QgcnVuIGluc2lkZSBBbmd1bGFyIHNvIHRoYXQgdGVzdHMgY2FuIHVzZSBmaXh0dXJlLndoZW5TdGFibGUoKSB0byB3YWl0IGZvciBhc3luYyBvcGVyYXRpb25zIHRvIGNvbXBsZXRlLlxuICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjaygpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucnVuT3V0c2lkZSA9IChjYWxsYmFjaykgPT4gdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKGNhbGxiYWNrKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE1ha2UgYWxsIGV2ZW50cyBydW4gb3V0c2lkZSBBbmd1bGFyIGFzIHRoZXkgb2Z0ZW4gdHJpZ2dlciB0aGUgc2V0dXAgb2YgZXZlbnQgbGlzdGVuZXJzXG4gICAgLy8gQnkgaGF2aW5nIHRoZSBldmVudCBsaXN0ZW5lcnMgb3V0c2lkZSBBbmd1bGFyIHdlIGNhbiBhdm9pZCB0cmlnZ2VyaW5nIGNoYW5nZSBkZXRlY3Rpb25cbiAgICAvLyBUaGlzIGFsc28gbWVhbnMgdGhhdCBpZiBhIHVzZXIgY2FsbHMgYW4gQUcgU3R1ZGlvIEFQSSBtZXRob2QgZnJvbSB3aXRoaW4gdGhlaXIgY29tcG9uZW50XG4gICAgLy8gdGhlIGludGVybmFsIHNpZGUgZWZmZWN0cyB3aWxsIG5vdCB0cmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb24uIFdpdGhvdXQgdGhpcyB0aGUgZXZlbnRzIHdvdWxkXG4gICAgLy8gcnVuIGluc2lkZSBBbmd1bGFyIGFuZCB0cmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb24gYXMgdGhlIHNvdXJjZSBvZiB0aGUgZXZlbnQgd2FzIHdpdGhpbiB0aGUgYW5ndWxhciB6b25lLlxuICAgIG92ZXJyaWRlIHdyYXBJbmNvbWluZzogPFQ+KGNhbGxiYWNrOiAoKSA9PiBULCBzb3VyY2U/OiBGcmFtZXdvcmtPdmVycmlkZXNJbmNvbWluZ1NvdXJjZSkgPT4gVCA9IChcbiAgICAgICAgY2FsbGJhY2ssXG4gICAgICAgIHNvdXJjZVxuICAgICkgPT4gdGhpcy5ydW5PdXRzaWRlKGNhbGxiYWNrLCBzb3VyY2UpO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHNob3VsZFdyYXBPdXRnb2luZyBwcm9wZXJ0eSBpcyB1c2VkIHRvIGRldGVybWluZSBpZiBldmVudHMgc2hvdWxkIGJlIHJ1biBvdXRzaWRlIG9mIEFuZ3VsYXIgb3Igbm90LlxuICAgICAqIElmIGFuIGV2ZW50IGhhbmRsZXIgaXMgcmVnaXN0ZXJlZCBvdXRzaWRlIG9mIEFuZ3VsYXIgdGhlbiB3ZSBzaG91bGQgbm90IHdyYXAgdGhlIGV2ZW50IGhhbmRsZXJcbiAgICAgKiB3aXRoIHJ1bkluc2lkZUFuZ3VsYXIoKSBhcyB0aGUgdXNlciBtYXkgbm90IGhhdmUgd2FudGVkIHRoaXMuXG4gICAgICogVGhpcyBpcyBhbHNvIHVzZWQgdG8gbm90IHdyYXAgaW50ZXJuYWwgZXZlbnQgbGlzdGVuZXJzIHRoYXQgYXJlIHJlZ2lzdGVyZWQgd2l0aCBSb3dOb2RlcyBhbmQgQ29sdW1ucy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHNob3VsZFdyYXBPdXRnb2luZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX25nWm9uZSAmJiBOZ1pvbmUuaXNJbkFuZ3VsYXJab25lKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWFrZSBzdXJlIHRoYXQgYW55IGNvZGUgdGhhdCBpcyBleGVjdXRlZCBvdXRzaWRlIG9mIEFHIFN0dWRpbyBpcyBydW5uaW5nIHdpdGhpbiB0aGUgQW5ndWxhciB6b25lLlxuICAgICAqIFRoaXMgbWVhbnMgdXNlcnMgY2FuIHVwZGF0ZSB0ZW1wbGF0ZXMgYW5kIHVzZSBiaW5kaW5nIHdpdGhvdXQgaGF2aW5nIHRvIGRvIGFueXRoaW5nIGV4dHJhLlxuICAgICAqL1xuICAgIG92ZXJyaWRlIHdyYXBPdXRnb2luZzogPFQ+KGNhbGxiYWNrOiAoKSA9PiBUKSA9PiBUID0gKGNhbGxiYWNrKSA9PiB0aGlzLnJ1bkluc2lkZUFuZ3VsYXIoY2FsbGJhY2spO1xuXG4gICAgcnVuSW5zaWRlQW5ndWxhcjxUPihjYWxsYmFjazogKCkgPT4gVCk6IFQge1xuICAgICAgICBpZiAoIXRoaXMuX25nWm9uZSB8fCBOZ1pvbmUuaXNJbkFuZ3VsYXJab25lKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBjYWxsYmFjaygpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2hlY2sgZm9yIF9uZ1pvbmUgZXhpc3RlbmNlIGFzIGl0IGlzIG5vdCBwcmVzZW50IHdoZW4gWm9uZWxlc3NcbiAgICAgICAgcmV0dXJuIHRoaXMuX25nWm9uZS5ydW4oY2FsbGJhY2spO1xuICAgIH1cblxuICAgIHJ1bk91dHNpZGVBbmd1bGFyPFQ+KGNhbGxiYWNrOiAoKSA9PiBULCBzb3VyY2U/OiBGcmFtZXdvcmtPdmVycmlkZXNJbmNvbWluZ1NvdXJjZSk6IFQge1xuICAgICAgICByZXR1cm4gdGhpcy5ydW5PdXRzaWRlKGNhbGxiYWNrLCBzb3VyY2UpO1xuICAgIH1cbn1cbiJdfQ==
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhckZyYW1ld29ya092ZXJyaWRlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FnLXN0dWRpby1hbmd1bGFyL3NyYy9saWIvYW5ndWxhckZyYW1ld29ya092ZXJyaWRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxXQUFXLENBQUM7O0FBS3ZELE1BQU0sT0FBTyx5QkFBMEIsU0FBUSwwQkFBMEI7SUFRckUsWUFBNkIsT0FBZTtRQUN4QyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFEUSxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBUDFCLHdCQUFtQixHQUFZLElBQUksQ0FBQztRQUV0RCw2RkFBNkY7UUFDNUUsNEJBQXVCLEdBQVksS0FBSyxDQUFDO1FBMkIxRCx5RkFBeUY7UUFDekYseUZBQXlGO1FBQ3pGLDJGQUEyRjtRQUMzRiw2RkFBNkY7UUFDN0YsMEdBQTBHO1FBQ2pHLGlCQUFZLEdBQTJFLENBQzVGLFFBQVEsRUFDUixNQUFNLEVBQ1IsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBWXZDOzs7V0FHRztRQUNNLGlCQUFZLEdBQWdDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUE1Qy9GLElBQUksQ0FBQyx1QkFBdUI7WUFDdkIsVUFBa0IsRUFBRSxvQkFBb0IsSUFBSSxDQUFDLENBQUUsVUFBa0IsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLENBQUM7UUFFaEcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMvQyxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztZQUN0QyxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFO2dCQUNuQyxJQUFJLE1BQU0sS0FBSyxpQkFBaUIsSUFBSSxNQUFNLEtBQUssa0JBQWtCLEVBQUUsQ0FBQztvQkFDaEUsd0hBQXdIO29CQUN4SCxnSUFBZ0k7b0JBQ2hJLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDcEQsQ0FBQztnQkFDRCwwSEFBMEg7Z0JBQzFILE9BQU8sUUFBUSxFQUFFLENBQUM7WUFDdEIsQ0FBQyxDQUFDO1FBQ04sQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdFLENBQUM7SUFDTCxDQUFDO0lBWUQ7Ozs7O09BS0c7SUFDSCxJQUFJLGtCQUFrQjtRQUNsQixPQUFPLElBQUksQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3BELENBQUM7SUFRUSxvQkFBb0IsQ0FBQyxJQUFTO1FBQ25DLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNSLE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUM7UUFDRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ2pDLE9BQU8sU0FBUyxJQUFJLFFBQVEsSUFBSSxTQUFTLENBQUM7SUFDOUMsQ0FBQztJQUVELGdCQUFnQixDQUFJLFFBQWlCO1FBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDO1lBQzVDLE9BQU8sUUFBUSxFQUFFLENBQUM7UUFDdEIsQ0FBQztRQUVELGlFQUFpRTtRQUNqRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxpQkFBaUIsQ0FBSSxRQUFpQixFQUFFLE1BQXlDO1FBQzdFLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDN0MsQ0FBQzsrR0E1RVEseUJBQXlCO21IQUF6Qix5QkFBeUI7OzRGQUF6Qix5QkFBeUI7a0JBRHJDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IF9WYW5pbGxhRnJhbWV3b3JrT3ZlcnJpZGVzIH0gZnJvbSAnYWctc3R1ZGlvJztcblxuaW1wb3J0IHR5cGUgeyBGcmFtZXdvcmtPdmVycmlkZXNJbmNvbWluZ1NvdXJjZSB9IGZyb20gJ2FnLWdyaWQtZW50ZXJwcmlzZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBbmd1bGFyRnJhbWV3b3JrT3ZlcnJpZGVzIGV4dGVuZHMgX1ZhbmlsbGFGcmFtZXdvcmtPdmVycmlkZXMge1xuICAgIG92ZXJyaWRlIHJlYWRvbmx5IGJhdGNoRnJhbWV3b3JrQ29tcHM6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgLy8gRmxhZyB1c2VkIHRvIGNvbnRyb2wgWm9uZSBiZWhhdmlvdXIgd2hlbiBydW5uaW5nIHRlc3RzIGFzIG1hbnkgdGVzdCBmZWF0dXJlcyByZWx5IG9uIFpvbmUuXG4gICAgcHJpdmF0ZSByZWFkb25seSBpc1J1bm5pbmdXaXRoaW5UZXN0Wm9uZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBydW5PdXRzaWRlOiA8VD4oY2FsbGJhY2s6ICgpID0+IFQsIHNvdXJjZT86IEZyYW1ld29ya092ZXJyaWRlc0luY29taW5nU291cmNlKSA9PiBUO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBfbmdab25lOiBOZ1pvbmUpIHtcbiAgICAgICAgc3VwZXIoJ2FuZ3VsYXInKTtcblxuICAgICAgICB0aGlzLmlzUnVubmluZ1dpdGhpblRlc3Rab25lID1cbiAgICAgICAgICAgIChnbG9iYWxUaGlzIGFzIGFueSk/LkFHX1NUVURJT19VTkRFUl9URVNUID8/ICEhKGdsb2JhbFRoaXMgYXMgYW55KT8uWm9uZT8uQXN5bmNUZXN0Wm9uZVNwZWM7XG5cbiAgICAgICAgaWYgKCF0aGlzLl9uZ1pvbmUpIHtcbiAgICAgICAgICAgIHRoaXMucnVuT3V0c2lkZSA9IChjYWxsYmFjaykgPT4gY2FsbGJhY2soKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzUnVubmluZ1dpdGhpblRlc3Rab25lKSB7XG4gICAgICAgICAgICB0aGlzLnJ1bk91dHNpZGUgPSAoY2FsbGJhY2ssIHNvdXJjZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzb3VyY2UgPT09ICdyZXNpemUtb2JzZXJ2ZXInIHx8IHNvdXJjZSA9PT0gJ3BvcHVwUG9zaXRpb25pbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGVuc3VyZSByZXNpemUgb2JzZXJ2ZXIgY2FsbGJhY2tzIGFyZSBydW4gb3V0c2lkZSBvZiBBbmd1bGFyIGV2ZW4gdW5kZXIgdGVzdCBkdWUgdG8gSmVzdCBub3Qgc3VwcG9ydGluZyBSZXNpemVPYnNlcnZlclxuICAgICAgICAgICAgICAgICAgICAvLyB3aGljaCBtZWFucyBpdCBqdXN0IGxvb3BzIGNvbnRpbnVvdXNseSB3aXRoIGEgc2V0VGltZW91dCB3aXRoIG5vIHdheSB0byBmbHVzaCB0aGUgcXVldWUgb3IgaGF2ZSBmaXh0dXJlLndoZW5TdGFibGUoKSByZXNvbHZlLlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKGNhbGxiYWNrKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gV2hlbiB1bmRlciB0ZXN0IHJ1biBpbnNpZGUgQW5ndWxhciBzbyB0aGF0IHRlc3RzIGNhbiB1c2UgZml4dHVyZS53aGVuU3RhYmxlKCkgdG8gd2FpdCBmb3IgYXN5bmMgb3BlcmF0aW9ucyB0byBjb21wbGV0ZS5cbiAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJ1bk91dHNpZGUgPSAoY2FsbGJhY2spID0+IHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcihjYWxsYmFjayk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBNYWtlIGFsbCBldmVudHMgcnVuIG91dHNpZGUgQW5ndWxhciBhcyB0aGV5IG9mdGVuIHRyaWdnZXIgdGhlIHNldHVwIG9mIGV2ZW50IGxpc3RlbmVyc1xuICAgIC8vIEJ5IGhhdmluZyB0aGUgZXZlbnQgbGlzdGVuZXJzIG91dHNpZGUgQW5ndWxhciB3ZSBjYW4gYXZvaWQgdHJpZ2dlcmluZyBjaGFuZ2UgZGV0ZWN0aW9uXG4gICAgLy8gVGhpcyBhbHNvIG1lYW5zIHRoYXQgaWYgYSB1c2VyIGNhbGxzIGFuIEFHIFN0dWRpbyBBUEkgbWV0aG9kIGZyb20gd2l0aGluIHRoZWlyIGNvbXBvbmVudFxuICAgIC8vIHRoZSBpbnRlcm5hbCBzaWRlIGVmZmVjdHMgd2lsbCBub3QgdHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uLiBXaXRob3V0IHRoaXMgdGhlIGV2ZW50cyB3b3VsZFxuICAgIC8vIHJ1biBpbnNpZGUgQW5ndWxhciBhbmQgdHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uIGFzIHRoZSBzb3VyY2Ugb2YgdGhlIGV2ZW50IHdhcyB3aXRoaW4gdGhlIGFuZ3VsYXIgem9uZS5cbiAgICBvdmVycmlkZSB3cmFwSW5jb21pbmc6IDxUPihjYWxsYmFjazogKCkgPT4gVCwgc291cmNlPzogRnJhbWV3b3JrT3ZlcnJpZGVzSW5jb21pbmdTb3VyY2UpID0+IFQgPSAoXG4gICAgICAgIGNhbGxiYWNrLFxuICAgICAgICBzb3VyY2VcbiAgICApID0+IHRoaXMucnVuT3V0c2lkZShjYWxsYmFjaywgc291cmNlKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBzaG91bGRXcmFwT3V0Z29pbmcgcHJvcGVydHkgaXMgdXNlZCB0byBkZXRlcm1pbmUgaWYgZXZlbnRzIHNob3VsZCBiZSBydW4gb3V0c2lkZSBvZiBBbmd1bGFyIG9yIG5vdC5cbiAgICAgKiBJZiBhbiBldmVudCBoYW5kbGVyIGlzIHJlZ2lzdGVyZWQgb3V0c2lkZSBvZiBBbmd1bGFyIHRoZW4gd2Ugc2hvdWxkIG5vdCB3cmFwIHRoZSBldmVudCBoYW5kbGVyXG4gICAgICogd2l0aCBydW5JbnNpZGVBbmd1bGFyKCkgYXMgdGhlIHVzZXIgbWF5IG5vdCBoYXZlIHdhbnRlZCB0aGlzLlxuICAgICAqIFRoaXMgaXMgYWxzbyB1c2VkIHRvIG5vdCB3cmFwIGludGVybmFsIGV2ZW50IGxpc3RlbmVycyB0aGF0IGFyZSByZWdpc3RlcmVkIHdpdGggUm93Tm9kZXMgYW5kIENvbHVtbnMuXG4gICAgICovXG4gICAgZ2V0IHNob3VsZFdyYXBPdXRnb2luZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX25nWm9uZSAmJiBOZ1pvbmUuaXNJbkFuZ3VsYXJab25lKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWFrZSBzdXJlIHRoYXQgYW55IGNvZGUgdGhhdCBpcyBleGVjdXRlZCBvdXRzaWRlIG9mIEFHIFN0dWRpbyBpcyBydW5uaW5nIHdpdGhpbiB0aGUgQW5ndWxhciB6b25lLlxuICAgICAqIFRoaXMgbWVhbnMgdXNlcnMgY2FuIHVwZGF0ZSB0ZW1wbGF0ZXMgYW5kIHVzZSBiaW5kaW5nIHdpdGhvdXQgaGF2aW5nIHRvIGRvIGFueXRoaW5nIGV4dHJhLlxuICAgICAqL1xuICAgIG92ZXJyaWRlIHdyYXBPdXRnb2luZzogPFQ+KGNhbGxiYWNrOiAoKSA9PiBUKSA9PiBUID0gKGNhbGxiYWNrKSA9PiB0aGlzLnJ1bkluc2lkZUFuZ3VsYXIoY2FsbGJhY2spO1xuXG4gICAgb3ZlcnJpZGUgaXNGcmFtZXdvcmtDb21wb25lbnQoY29tcDogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghY29tcCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHByb3RvdHlwZSA9IGNvbXAucHJvdG90eXBlO1xuICAgICAgICByZXR1cm4gcHJvdG90eXBlICYmICdhZ0luaXQnIGluIHByb3RvdHlwZTtcbiAgICB9XG5cbiAgICBydW5JbnNpZGVBbmd1bGFyPFQ+KGNhbGxiYWNrOiAoKSA9PiBUKTogVCB7XG4gICAgICAgIGlmICghdGhpcy5fbmdab25lIHx8IE5nWm9uZS5pc0luQW5ndWxhclpvbmUoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaGVjayBmb3IgX25nWm9uZSBleGlzdGVuY2UgYXMgaXQgaXMgbm90IHByZXNlbnQgd2hlbiBab25lbGVzc1xuICAgICAgICByZXR1cm4gdGhpcy5fbmdab25lLnJ1bihjYWxsYmFjayk7XG4gICAgfVxuXG4gICAgcnVuT3V0c2lkZUFuZ3VsYXI8VD4oY2FsbGJhY2s6ICgpID0+IFQsIHNvdXJjZT86IEZyYW1ld29ya092ZXJyaWRlc0luY29taW5nU291cmNlKTogVCB7XG4gICAgICAgIHJldHVybiB0aGlzLnJ1bk91dHNpZGUoY2FsbGJhY2ssIHNvdXJjZSk7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FnLXN0dWRpby1hbmd1bGFyL3NyYy9saWIvaW50ZXJmYWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7XG4gICAgQWdCYXNlUmVnaXN0cnksXG4gICAgQWdCYXNlV2lkZ2V0RGVmaW5pdGlvbixcbiAgICBBZ0RlZmF1bHRXaWRnZXRUeXBlLFxuICAgIEFnTWF5YmVQcm9taXNlLFxuICAgIEFnVHlwZVNjcmlwdENvbXBvbmVudCxcbiAgICBBZ1dpZGdldERhdGEsXG4gICAgQWdXaWRnZXREYXRhRm9ybWF0LFxuICAgIEFnV2lkZ2V0UGFyYW1zLFxuICAgIEFnV2lkZ2V0UmVnaXN0cnksXG59IGZyb20gJ2FnLXN0dWRpbyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWdDdXN0b21Db21wb25lbnQ8VFBhcmFtcywgVFJldHVybiA9IHZvaWQ+IHtcbiAgICAvKiogQ2FsbGVkIG9uY2Ugb24gaW5pdGlhbGlzYXRpb24gd2l0aCBwYXJhbXMgZm9yIHJlbmRlcmluZyB0aGlzIGNvbXBvbmVudC4gKi9cbiAgICBhZ0luaXQocGFyYW1zOiBUUGFyYW1zKTogQWdNYXliZVByb21pc2U8VFJldHVybj47XG5cbiAgICAvKiogQ2FsbGVkIGZvciBldmVyeSBzdWJzZXF1ZW50IHBhcmFtcyB1cGRhdGUuICovXG4gICAgcmVmcmVzaD8ocGFyYW1zOiBUUGFyYW1zKTogQWdNYXliZVByb21pc2U8VFJldHVybj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWdXaWRnZXREZWZpbml0aW9uPFxuICAgIFRXaWRnZXRUeXBlIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nLFxuICAgIFRJbiBleHRlbmRzIEFnV2lkZ2V0RGF0YTx1bmtub3duLCBBZ1dpZGdldERhdGFGb3JtYXQ8dW5rbm93bj4+ID0gYW55LFxuICAgIFRPdXQgZXh0ZW5kcyBBZ1dpZGdldERhdGE8dW5rbm93biwgQWdXaWRnZXREYXRhRm9ybWF0PHVua25vd24+PiA9IFRJbixcbiAgICBUT3B0aW9ucyA9IHVua25vd24sXG4+IGV4dGVuZHMgQWdCYXNlV2lkZ2V0RGVmaW5pdGlvbjxUV2lkZ2V0VHlwZSwgVEluLCBUT3V0LCBUT3B0aW9ucz4ge1xuICAgIC8qKlxuICAgICAqIEN1c3RvbSBjb21wb25lbnQuIEVpdGhlcjpcbiAgICAgKiAtIEEgYHN0cmluZ2AgdGhhdCBtYXRjaGVzIGEgY3VzdG9tIGNvbXBvbmVudCBpbiB0aGUgc3R1ZGlvIGBjb21wb25lbnRzYCBwcm9wZXJ0eVxuICAgICAqIC0gQSBjdXN0b20gQW5ndWxhciBjb21wb25lbnQgY2xhc3NcbiAgICAgKiAtIEEgY3VzdG9tIFR5cGVTY3JpcHQgY29tcG9uZW50IChubyBBbmd1bGFyOyB3b3JraW5nIGRpcmVjdGx5IHdpdGggdGhlIERPTSlcbiAgICAgKi9cbiAgICBjb21wOlxuICAgICAgICB8IHN0cmluZ1xuICAgICAgICB8IFR5cGU8QWdDdXN0b21Db21wb25lbnQ8QWdXaWRnZXRQYXJhbXM8VE91dD4+PlxuICAgICAgICB8IChuZXcgKCkgPT4gQWdUeXBlU2NyaXB0Q29tcG9uZW50PEFnV2lkZ2V0UGFyYW1zPFRPdXQ+Pik7XG59XG5cbnR5cGUgU3RyaW5nQ29tcFdpZGdldFR5cGU8VERlZiBleHRlbmRzIEFnQmFzZVdpZGdldERlZmluaXRpb24+ID0gVERlZlsnY29tcCddIGV4dGVuZHMgc3RyaW5nID8gVERlZiA6IG5ldmVyO1xuXG50eXBlIEV4dHJhY3RTdGF0ZUZyb21EZWY8VERlZj4gPSBURGVmIGV4dGVuZHMgQWdXaWRnZXREZWZpbml0aW9uPGFueSwgYW55LCBpbmZlciBUU3RhdGU+ID8gVFN0YXRlIDogbmV2ZXI7XG5cbnR5cGUgTWF0Y2hpbmdEZWY8VERlZiwgVFdpZGdldFR5cGU+ID0gVERlZiBleHRlbmRzIHsgaWQ6IFRXaWRnZXRUeXBlIH0gPyBURGVmIDogbmV2ZXI7XG5cbnR5cGUgV2lkZ2V0Q3VzdG9tQ29tcDxUUGFyYW1zIGV4dGVuZHMgQWdXaWRnZXRQYXJhbXM+ID1cbiAgICB8IFR5cGU8QWdDdXN0b21Db21wb25lbnQ8VFBhcmFtcz4+XG4gICAgfCAobmV3ICgpID0+IEFnVHlwZVNjcmlwdENvbXBvbmVudDxUUGFyYW1zPik7XG5cbmV4cG9ydCB0eXBlIEFnQ3VzdG9tQ29tcG9uZW50RGVmczxUUmVnaXN0cnkgZXh0ZW5kcyBBZ0Jhc2VSZWdpc3RyeT4gPSB7XG4gICAgW0sgaW4gRXhjbHVkZTxTdHJpbmdDb21wV2lkZ2V0VHlwZTxBZ1dpZGdldFJlZ2lzdHJ5PFRSZWdpc3RyeT4+Wydjb21wJ10sIEFnRGVmYXVsdFdpZGdldFR5cGU+XT86IFdpZGdldEN1c3RvbUNvbXA8XG4gICAgICAgIEFnV2lkZ2V0UGFyYW1zPEV4dHJhY3RTdGF0ZUZyb21EZWY8TWF0Y2hpbmdEZWY8QWdXaWRnZXRSZWdpc3RyeTxUUmVnaXN0cnk+LCBLPj4+XG4gICAgPjtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWdSZWdpc3RyeSBleHRlbmRzIEFnQmFzZVJlZ2lzdHJ5IHtcbiAgICB3aWRnZXRzOiByZWFkb25seSBBZ1dpZGdldERlZmluaXRpb25bXTtcblxuICAgIGNvbXBvbmVudHM6IEFnQ3VzdG9tQ29tcG9uZW50RGVmczx0aGlzPjtcbn1cbiJdfQ==
@@ -1,4 +1,6 @@
1
1
  export * from './lib/ag-studio.component';
2
2
  export * from './lib/ag-studio.module';
3
3
  export * from './lib/angularFrameworkOverrides';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FnLXN0dWRpby1hbmd1bGFyL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLGlDQUFpQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvYWctc3R1ZGlvLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hZy1zdHVkaW8ubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FuZ3VsYXJGcmFtZXdvcmtPdmVycmlkZXMnO1xuIl19
4
+ export * from './lib/angularFrameworkComponentWrapper';
5
+ export * from './lib/interfaces';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FnLXN0dWRpby1hbmd1bGFyL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2FnLXN0dWRpby5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYWctc3R1ZGlvLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hbmd1bGFyRnJhbWV3b3JrT3ZlcnJpZGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FuZ3VsYXJGcmFtZXdvcmtDb21wb25lbnRXcmFwcGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ludGVyZmFjZXMnO1xuIl19
@@ -1,6 +1,110 @@
1
1
  import * as i0 from '@angular/core';
2
- import { NgZone, Injectable, EventEmitter, booleanAttribute, Output, Input, ViewEncapsulation, Component, NgModule } from '@angular/core';
3
- import { _VanillaFrameworkOverrides, _combineAttributesAndStudioProperties, _createStudio, _processPropertyChanges, _BOOLEAN_MIXED_STUDIO_PROPERTIES } from 'ag-studio';
2
+ import { inject, ViewContainerRef, Component, Injectable, NgZone, EventEmitter, booleanAttribute, Output, Input, ViewEncapsulation, NgModule } from '@angular/core';
3
+ import { _BaseComponentWrapper, _VanillaFrameworkOverrides, _combineAttributesAndStudioProperties, _createStudio, _processPropertyChanges, _BOOLEAN_MIXED_STUDIO_PROPERTIES } from 'ag-studio';
4
+ import { _removeFromParent } from 'ag-grid-enterprise';
5
+
6
+ // To speed up the removal of custom components we create a number of shards to contain them.
7
+ // Removing a single component calls a function within Angular called removeFromArray.
8
+ // This is a lot faster if the array is smaller.
9
+ class AgComponentContainer {
10
+ constructor() {
11
+ this.vcr = inject(ViewContainerRef);
12
+ }
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AgComponentContainer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AgComponentContainer, selector: "ag-component-container", ngImport: i0, template: '', isInline: true }); }
15
+ }
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AgComponentContainer, decorators: [{
17
+ type: Component,
18
+ args: [{
19
+ selector: 'ag-component-container',
20
+ template: '',
21
+ }]
22
+ }] });
23
+ const NUM_SHARDS = 16;
24
+ let shardIdx = 0;
25
+ function createComponentContainers(vcr) {
26
+ const containerMap = new Map();
27
+ for (let i = 0; i < NUM_SHARDS; i++) {
28
+ const container = vcr.createComponent(AgComponentContainer);
29
+ containerMap.set(i, container);
30
+ _removeFromParent(container.location.nativeElement);
31
+ }
32
+ return containerMap;
33
+ }
34
+ class AngularFrameworkComponentWrapper extends _BaseComponentWrapper {
35
+ setViewContainerRef(viewContainerRef, angularFrameworkOverrides) {
36
+ this.viewContainerRef = viewContainerRef;
37
+ this.frameworkOverrides = angularFrameworkOverrides;
38
+ }
39
+ createWrapper(OriginalConstructor) {
40
+ this.compShards ??= createComponentContainers(this.viewContainerRef);
41
+ return new DynamicAgNg2Component(this.frameworkOverrides, this, OriginalConstructor);
42
+ }
43
+ createComponent(componentType) {
44
+ shardIdx = (shardIdx + 1) % NUM_SHARDS;
45
+ const container = this.compShards.get(shardIdx);
46
+ return container.instance.vcr.createComponent(componentType);
47
+ }
48
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AngularFrameworkComponentWrapper, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
49
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AngularFrameworkComponentWrapper }); }
50
+ }
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AngularFrameworkComponentWrapper, decorators: [{
52
+ type: Injectable
53
+ }] });
54
+ class DynamicAgNg2Component {
55
+ constructor(frameworkOverrides, frameworkCompWrapper, OriginalConstructor) {
56
+ this.frameworkOverrides = frameworkOverrides;
57
+ this.frameworkCompWrapper = frameworkCompWrapper;
58
+ this.OriginalConstructor = OriginalConstructor;
59
+ }
60
+ init(params) {
61
+ return new Promise((resolve) => {
62
+ this.frameworkOverrides.runInsideAngular(() => {
63
+ this._init(params).then((result) => {
64
+ this._componentRef.changeDetectorRef.detectChanges();
65
+ resolve(result);
66
+ });
67
+ });
68
+ });
69
+ }
70
+ async _init(params) {
71
+ this._componentRef = this.frameworkCompWrapper.createComponent(this.OriginalConstructor);
72
+ const instance = this._componentRef.instance;
73
+ this._frameworkComponentInstance = instance;
74
+ this._eGui = this._componentRef.location.nativeElement;
75
+ // Angular appends the component to the DOM, so remove it
76
+ _removeFromParent(this._eGui);
77
+ return instance.agInit?.(params);
78
+ }
79
+ async refresh(params) {
80
+ return this.frameworkOverrides.runInsideAngular(() => this._frameworkComponentInstance.refresh?.(params));
81
+ }
82
+ getGui() {
83
+ return this._eGui;
84
+ }
85
+ /** `getGui()` returns the `ng-component` element. This returns the actual root element. */
86
+ getRootElement() {
87
+ return this._eGui.firstChild;
88
+ }
89
+ destroy() {
90
+ if (typeof this._frameworkComponentInstance?.destroy === 'function') {
91
+ this._frameworkComponentInstance.destroy();
92
+ }
93
+ this._componentRef?.destroy();
94
+ }
95
+ getFrameworkComponentInstance() {
96
+ return this._frameworkComponentInstance;
97
+ }
98
+ hasMethod(name) {
99
+ return this._frameworkComponentInstance[name] != null;
100
+ }
101
+ callMethod(name, args) {
102
+ return this.frameworkOverrides.runInsideAngular(() => this._frameworkComponentInstance[name](...args));
103
+ }
104
+ addMethod(name, callback) {
105
+ this[name] = callback;
106
+ }
107
+ }
4
108
 
5
109
  class AngularFrameworkOverrides extends _VanillaFrameworkOverrides {
6
110
  constructor(_ngZone) {
@@ -49,6 +153,13 @@ class AngularFrameworkOverrides extends _VanillaFrameworkOverrides {
49
153
  get shouldWrapOutgoing() {
50
154
  return this._ngZone && NgZone.isInAngularZone();
51
155
  }
156
+ isFrameworkComponent(comp) {
157
+ if (!comp) {
158
+ return false;
159
+ }
160
+ const prototype = comp.prototype;
161
+ return prototype && 'agInit' in prototype;
162
+ }
52
163
  runInsideAngular(callback) {
53
164
  if (!this._ngZone || NgZone.isInAngularZone()) {
54
165
  return callback();
@@ -70,8 +181,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
70
181
  // False positive lint error, ElementRef and co can't be type imports
71
182
  // eslint-disable-next-line @typescript-eslint/consistent-type-imports
72
183
  class AgStudio {
73
- constructor(elementDef, _angularFrameworkOverrides) {
184
+ constructor(elementDef, _viewContainerRef, _angularFrameworkOverrides, _frameworkCompWrapper) {
185
+ this._viewContainerRef = _viewContainerRef;
74
186
  this._angularFrameworkOverrides = _angularFrameworkOverrides;
187
+ this._frameworkCompWrapper = _frameworkCompWrapper;
75
188
  this._initialised = false;
76
189
  this._destroyed = false;
77
190
  // in order to ensure firing of apiReady is deterministic
@@ -176,15 +289,33 @@ class AgStudio {
176
289
  */
177
290
  this.layout = undefined;
178
291
  /** AI Assistant configuration.
292
+ *
293
+ * NOTE: The **AI Assistant** is an experimental feature. Behaviour will be
294
+ * slightly different depending on the LLM being used, and results can vary across queries.
295
+ *
179
296
  * @initial
180
297
  */
181
298
  this.ai = undefined;
182
- /** Overrides for the layout and widget configs.
299
+ /** Data-layer configuration. Controls behaviours such as export row limits.
300
+ */
301
+ this.dataOptions = undefined;
302
+ /** @deprecated v1.1 Use `widgets` to customise the widget configurations and available widgets,
303
+ * and `page` to customise the page setup form.
304
+ *
305
+ * Overrides for the layout and widget configs.
183
306
  */
184
307
  this.overrides = undefined;
185
308
  /** Configure which panels are displayed and on which side.
186
309
  */
187
310
  this.panels = undefined;
311
+ /** Configure page (e.g. page setup form in page tab of edit panel).
312
+ */
313
+ this.page = undefined;
314
+ this.widgets = undefined;
315
+ /** Custom components (e.g. custom widget components) keyed by ID.
316
+ * Used to share components which can then be referenced directly by key in the definitions.
317
+ */
318
+ this.components = undefined;
188
319
  /** State has been updated.
189
320
  */
190
321
  this.stateUpdated = new EventEmitter();
@@ -208,6 +339,7 @@ class AgStudio {
208
339
  ngAfterViewInit() {
209
340
  // Run the setup outside of angular so all the event handlers that are created do not trigger change detection
210
341
  this._angularFrameworkOverrides.runOutsideAngular(() => {
342
+ this._frameworkCompWrapper.setViewContainerRef(this._viewContainerRef, this._angularFrameworkOverrides);
211
343
  // Get all the inputs that are valid AgStudioProperties
212
344
  const studioPropertiesKeys = Object.keys(this).filter((key) => !(key.startsWith('_') ||
213
345
  key == 'studioProperties' ||
@@ -224,6 +356,9 @@ class AgStudio {
224
356
  frameworkOverrides: this._angularFrameworkOverrides,
225
357
  setThemeOnRootDiv: true,
226
358
  modules: this.modules,
359
+ providedBeanInstances: {
360
+ frameworkCompWrapper: this._frameworkCompWrapper,
361
+ },
227
362
  };
228
363
  const api = _createStudio(this._nativeElement, mergedStudioProperties, studioParams);
229
364
  if (api) {
@@ -290,8 +425,8 @@ class AgStudio {
290
425
  }
291
426
  }
292
427
  }
293
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AgStudio, deps: [{ token: i0.ElementRef }, { token: AngularFrameworkOverrides }], target: i0.ɵɵFactoryTarget.Component }); }
294
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: AgStudio, isStandalone: true, selector: "ag-studio", inputs: { studioProperties: "studioProperties", modules: "modules", tabIndex: "tabIndex", enableRtl: ["enableRtl", "enableRtl", booleanAttribute], popupParent: "popupParent", theme: "theme", loadThemeGoogleFonts: ["loadThemeGoogleFonts", "loadThemeGoogleFonts", booleanAttribute], themeCssLayer: "themeCssLayer", styleNonce: "styleNonce", themeStyleContainer: "themeStyleContainer", getDocument: "getDocument", suppressTouch: ["suppressTouch", "suppressTouch", booleanAttribute], localeText: "localeText", getLocaleText: "getLocaleText", studioId: "studioId", context: "context", initialState: "initialState", data: "data", mode: "mode", layout: "layout", ai: "ai", overrides: "overrides", panels: "panels" }, outputs: { stateUpdated: "stateUpdated", apiReady: "apiReady", studioReady: "studioReady", errorRaised: "errorRaised" }, providers: [AngularFrameworkOverrides], usesOnChanges: true, ngImport: i0, template: '', isInline: true, encapsulation: i0.ViewEncapsulation.None }); }
428
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AgStudio, deps: [{ token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: AngularFrameworkOverrides }, { token: AngularFrameworkComponentWrapper }], target: i0.ɵɵFactoryTarget.Component }); }
429
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: AgStudio, isStandalone: true, selector: "ag-studio", inputs: { studioProperties: "studioProperties", modules: "modules", tabIndex: "tabIndex", enableRtl: ["enableRtl", "enableRtl", booleanAttribute], popupParent: "popupParent", theme: "theme", loadThemeGoogleFonts: ["loadThemeGoogleFonts", "loadThemeGoogleFonts", booleanAttribute], themeCssLayer: "themeCssLayer", styleNonce: "styleNonce", themeStyleContainer: "themeStyleContainer", getDocument: "getDocument", suppressTouch: ["suppressTouch", "suppressTouch", booleanAttribute], localeText: "localeText", getLocaleText: "getLocaleText", studioId: "studioId", context: "context", initialState: "initialState", data: "data", mode: "mode", layout: "layout", ai: "ai", dataOptions: "dataOptions", overrides: "overrides", panels: "panels", page: "page", widgets: "widgets", components: "components" }, outputs: { stateUpdated: "stateUpdated", apiReady: "apiReady", studioReady: "studioReady", errorRaised: "errorRaised" }, providers: [AngularFrameworkOverrides, AngularFrameworkComponentWrapper], usesOnChanges: true, ngImport: i0, template: '', isInline: true, encapsulation: i0.ViewEncapsulation.None }); }
295
430
  }
296
431
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AgStudio, decorators: [{
297
432
  type: Component,
@@ -299,11 +434,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
299
434
  selector: 'ag-studio',
300
435
  standalone: true,
301
436
  template: '',
302
- providers: [AngularFrameworkOverrides],
437
+ providers: [AngularFrameworkOverrides, AngularFrameworkComponentWrapper],
303
438
  // tell angular we don't want view encapsulation, we don't want a shadow root
304
439
  encapsulation: ViewEncapsulation.None,
305
440
  }]
306
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: AngularFrameworkOverrides }], propDecorators: { studioProperties: [{
441
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: AngularFrameworkOverrides }, { type: AngularFrameworkComponentWrapper }], propDecorators: { studioProperties: [{
307
442
  type: Input
308
443
  }], modules: [{
309
444
  type: Input
@@ -348,10 +483,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
348
483
  type: Input
349
484
  }], ai: [{
350
485
  type: Input
486
+ }], dataOptions: [{
487
+ type: Input
351
488
  }], overrides: [{
352
489
  type: Input
353
490
  }], panels: [{
354
491
  type: Input
492
+ }], page: [{
493
+ type: Input
494
+ }], widgets: [{
495
+ type: Input
496
+ }], components: [{
497
+ type: Input
355
498
  }], stateUpdated: [{
356
499
  type: Output
357
500
  }], apiReady: [{
@@ -371,7 +514,6 @@ function getValueOrCoercedValue(key, valueToUse) {
371
514
  if (booleanMixedStudioProperties.has(key)) {
372
515
  // Handle plain HTML boolean attributes and convert them to boolean values
373
516
  // Also handle the false string case to match Angular boolean attributes
374
- // eslint-disable-next-line sonarjs/no-nested-conditional
375
517
  return valueToUse === '' ? true : valueToUse === 'false' ? false : valueToUse;
376
518
  }
377
519
  return valueToUse;
@@ -394,5 +536,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
394
536
  * Generated bundle index. Do not edit.
395
537
  */
396
538
 
397
- export { AgStudio, AgStudioModule, AngularFrameworkOverrides };
539
+ export { AgComponentContainer, AgStudio, AgStudioModule, AngularFrameworkComponentWrapper, AngularFrameworkOverrides };
398
540
  //# sourceMappingURL=ag-studio-angular.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ag-studio-angular.mjs","sources":["../../../projects/ag-studio-angular/src/lib/angularFrameworkOverrides.ts","../../../projects/ag-studio-angular/src/lib/ag-studio.component.ts","../../../projects/ag-studio-angular/src/lib/ag-studio.module.ts","../../../projects/ag-studio-angular/src/ag-studio-angular.ts"],"sourcesContent":["import { Injectable, NgZone } from '@angular/core';\nimport { _VanillaFrameworkOverrides } from 'ag-studio';\n\nimport type { FrameworkOverridesIncomingSource } from 'ag-grid-enterprise';\n\n@Injectable()\nexport class AngularFrameworkOverrides extends _VanillaFrameworkOverrides {\n public override readonly batchFrameworkComps: boolean = true;\n\n // Flag used to control Zone behaviour when running tests as many test features rely on Zone.\n private readonly isRunningWithinTestZone: boolean = false;\n\n private readonly runOutside: <T>(callback: () => T, source?: FrameworkOverridesIncomingSource) => T;\n\n constructor(private readonly _ngZone: NgZone) {\n super('angular');\n\n this.isRunningWithinTestZone =\n (globalThis as any)?.AG_STUDIO_UNDER_TEST ?? !!(globalThis as any)?.Zone?.AsyncTestZoneSpec;\n\n if (!this._ngZone) {\n this.runOutside = (callback) => callback();\n } else if (this.isRunningWithinTestZone) {\n this.runOutside = (callback, source) => {\n if (source === 'resize-observer' || source === 'popupPositioning') {\n // ensure resize observer callbacks are run outside of Angular even under test due to Jest not supporting ResizeObserver\n // which means it just loops continuously with a setTimeout with no way to flush the queue or have fixture.whenStable() resolve.\n return this._ngZone.runOutsideAngular(callback);\n }\n // When under test run inside Angular so that tests can use fixture.whenStable() to wait for async operations to complete.\n return callback();\n };\n } else {\n this.runOutside = (callback) => this._ngZone.runOutsideAngular(callback);\n }\n }\n\n // Make all events run outside Angular as they often trigger the setup of event listeners\n // By having the event listeners outside Angular we can avoid triggering change detection\n // This also means that if a user calls an AG Studio API method from within their component\n // the internal side effects will not trigger change detection. Without this the events would\n // run inside Angular and trigger change detection as the source of the event was within the angular zone.\n override wrapIncoming: <T>(callback: () => T, source?: FrameworkOverridesIncomingSource) => T = (\n callback,\n source\n ) => this.runOutside(callback, source);\n\n /**\n * The shouldWrapOutgoing property is used to determine if events should be run outside of Angular or not.\n * If an event handler is registered outside of Angular then we should not wrap the event handler\n * with runInsideAngular() as the user may not have wanted this.\n * This is also used to not wrap internal event listeners that are registered with RowNodes and Columns.\n */\n public get shouldWrapOutgoing() {\n return this._ngZone && NgZone.isInAngularZone();\n }\n\n /**\n * Make sure that any code that is executed outside of AG Studio is running within the Angular zone.\n * This means users can update templates and use binding without having to do anything extra.\n */\n override wrapOutgoing: <T>(callback: () => T) => T = (callback) => this.runInsideAngular(callback);\n\n runInsideAngular<T>(callback: () => T): T {\n if (!this._ngZone || NgZone.isInAngularZone()) {\n return callback();\n }\n\n // Check for _ngZone existence as it is not present when Zoneless\n return this._ngZone.run(callback);\n }\n\n runOutsideAngular<T>(callback: () => T, source?: FrameworkOverridesIncomingSource): T {\n return this.runOutside(callback, source);\n }\n}\n","/* eslint-disable no-duplicate-imports */\n// False positive lint error, ElementRef and co can't be type imports\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n ViewEncapsulation,\n booleanAttribute,\n} from '@angular/core';\nimport type { AgStudioApi, AgStudioModule, AgStudioProperties, _StudioParams } from 'ag-studio';\nimport {\n _BOOLEAN_MIXED_STUDIO_PROPERTIES,\n _combineAttributesAndStudioProperties,\n _createStudio,\n _processPropertyChanges,\n} from 'ag-studio';\n// @START_IMPORTS@\nimport type {\n AgAiAssistant,\n AgDataEngine,\n AgDataSourcesDefinition,\n AgPageLayoutState,\n AgPanelConfig,\n AgReportState,\n AgStudioApiReadyEvent,\n AgStudioErrorRaisedEvent,\n AgStudioGetLocaleTextParams,\n AgStudioLocaleText,\n AgStudioMode,\n AgStudioOverrides,\n AgStudioReadyEvent,\n AgStudioStateUpdatedEvent,\n AgStudioTheme,\n} from 'ag-studio';\n\n// @END_IMPORTS@\n\nimport { AngularFrameworkOverrides } from './angularFrameworkOverrides';\n\n@Component({\n selector: 'ag-studio',\n standalone: true,\n template: '',\n providers: [AngularFrameworkOverrides],\n // tell angular we don't want view encapsulation, we don't want a shadow root\n encapsulation: ViewEncapsulation.None,\n})\nexport class AgStudio implements AfterViewInit, OnChanges, OnDestroy {\n // not intended for user to interact with. so putting _ in so if user gets reference\n // to this object, they kind'a know it's not part of the agreed interface\n private readonly _nativeElement: any;\n private _initialised = false;\n private _destroyed = false;\n\n // in order to ensure firing of apiReady is deterministic\n private _holdEvents = true;\n private _resolveFullyReady: () => void;\n private readonly _fullyReady: Promise<void> = new Promise((resolve) => {\n this._resolveFullyReady = resolve;\n });\n\n /** Dash Api available after onApiReady event has fired. */\n public api: AgStudioApi;\n\n constructor(\n elementDef: ElementRef,\n private readonly _angularFrameworkOverrides: AngularFrameworkOverrides\n ) {\n this._nativeElement = elementDef.nativeElement;\n // NOSONAR\n this._fullyReady.then(() => {\n // Register the status flag reset before any events are fired\n // so that we can swap to synchronous event firing as soon as the studio is ready\n this._holdEvents = false;\n });\n }\n\n ngAfterViewInit(): void {\n // Run the setup outside of angular so all the event handlers that are created do not trigger change detection\n this._angularFrameworkOverrides.runOutsideAngular(() => {\n // Get all the inputs that are valid AgStudioProperties\n const studioPropertiesKeys = Object.keys(this).filter(\n (key) =>\n !(\n key.startsWith('_') ||\n key == 'studioProperties' ||\n key == 'modules' ||\n this[key as keyof AgStudio] instanceof EventEmitter\n )\n );\n\n const coercedStudioProperties = {} as AgStudioProperties;\n for (const key of studioPropertiesKeys) {\n const valueToUse = getValueOrCoercedValue(key, this[key as keyof AgStudio]);\n coercedStudioProperties[key as keyof AgStudioProperties] = valueToUse;\n }\n\n const mergedStudioProperties = _combineAttributesAndStudioProperties(\n this.studioProperties,\n coercedStudioProperties,\n studioPropertiesKeys\n );\n\n const studioParams: _StudioParams = {\n globalListener: this.globalListener.bind(this),\n frameworkOverrides: this._angularFrameworkOverrides,\n setThemeOnRootDiv: true,\n modules: this.modules,\n };\n\n const api = _createStudio(this._nativeElement, mergedStudioProperties, studioParams);\n if (api) {\n this.api = api;\n }\n\n this._initialised = true;\n\n // sometimes, especially in large client apps apiReady can fire before ngAfterViewInit\n // this ties these together so that apiReady will always fire after agStudio's ngAfterViewInit\n // the actual containing component's ngAfterViewInit will fire just after agStudio's\n this._resolveFullyReady();\n });\n }\n\n public ngOnChanges(changes: any): void {\n if (this._initialised) {\n // Run the changes outside of angular so any event handlers that are created do not trigger change detection\n this._angularFrameworkOverrides.runOutsideAngular(() => {\n const studioProperties: AgStudioProperties = {};\n for (const key of Object.keys(changes)) {\n const value = changes[key];\n studioProperties[key as keyof AgStudioProperties] = value.currentValue;\n }\n _processPropertyChanges(studioProperties, this.api);\n });\n }\n }\n\n public ngOnDestroy(): void {\n if (this._initialised) {\n // need to do this before the destroy, so we know not to emit any events\n // while tearing down the studio.\n this._destroyed = true;\n // could be null if studio failed to initialise\n this.api?.destroy();\n }\n }\n\n // we'll emit the emit if a user is listening for a given event either on the component via normal angular binding\n // or via studioProperties\n protected isEmitterUsed(eventType: string): boolean {\n const emitter = <EventEmitter<any>>(<any>this)[eventType];\n // For RxJs compatibility we need to check for observed v7+ or observers v6\n const emitterAny = emitter as any;\n const hasEmitter = emitterAny?.observed ?? emitterAny?.observers?.length > 0;\n\n // apiReady => onApiReady\n const asEventName = `on${eventType.charAt(0).toUpperCase()}${eventType.substring(1)}`;\n const hasStudioPropertyListener = !!this.studioProperties && !!(this.studioProperties as any)[asEventName];\n\n return hasEmitter || hasStudioPropertyListener;\n }\n\n private globalListener(eventType: string, event: any): void {\n // if we are tearing down, don't emit angular events, as this causes\n // problems with the angular router\n if (this._destroyed) {\n return;\n }\n\n // generically look up the eventType\n const emitter = <EventEmitter<any>>(<any>this)[eventType];\n if (emitter && this.isEmitterUsed(eventType)) {\n // Make sure we emit within the angular zone, so change detection works properly\n const fireEmitter = () => this._angularFrameworkOverrides.runInsideAngular(() => emitter.emit(event));\n\n if (this._holdEvents) {\n // if the user is listening to events, wait for ngAfterViewInit to fire first, then emit the studio events\n this._fullyReady.then(() => fireEmitter());\n } else {\n fireEmitter();\n }\n }\n }\n\n /** Provided an initial studioProperties configuration to the component. If a property is specified in both studioProperties and via component binding the component binding takes precedence. */\n @Input() public studioProperties: AgStudioProperties | undefined;\n /**\n * Used to register AG Studio Modules directly with this instance of Studio.\n */\n @Input() public modules: AgStudioModule[] | undefined;\n\n // @START@\n /** Change this value to set the tabIndex order of Studio within your application.\n * @default 0\n * @initial\n */\n @Input() public tabIndex: number | undefined = undefined;\n /** Set to `true` to operate Studio in RTL (Right to Left) mode.\n * @default false\n * @initial\n */\n @Input({ transform: booleanAttribute }) public enableRtl: boolean | undefined = undefined;\n /** DOM element to use as the popup parent for Studio popups (context menus, etc.).\n */\n @Input() public popupParent: HTMLElement | null | undefined = undefined;\n /** Theme to apply to Studio.\n *\n * @default studioTheme\n */\n @Input() public theme: AgStudioTheme | undefined = undefined;\n /** If your theme uses a font that is available on Google Fonts, pass true to load it from Google's CDN.\n */\n @Input({ transform: booleanAttribute }) public loadThemeGoogleFonts: boolean | undefined = undefined;\n /** The CSS layer that this theme should be rendered onto. When specified,\n * Studio CSS will be wrapped in a `@layer ${themeCssLayer} { ... }` block.\n *\n * NOTE: when specifying `themeCssLayer` we recommend setting\n * `themeStyleContainer` to `document.body` to ensure that Studio CSS\n * comes after your application CSS, allowing your application to set the\n * order of layers.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/@layer\n */\n @Input() public themeCssLayer: string | undefined = undefined;\n /** The nonce attribute to set on style elements added to the document by\n * themes. If \"foo\" is passed to this property, Studio can use the Content\n * Security Policy `style-src 'nonce-foo'`, instead of the less secure\n * `style-src 'unsafe-inline'`.\n *\n * Note: CSP nonces are global to a page, where a page has multiple Studio components,\n * every one must have the same styleNonce set.\n */\n @Input() public styleNonce: string | undefined = undefined;\n /** An element to insert style elements into when injecting styles into the\n * Studio. Styles are inserted at the start of the element.\n *\n * If undefined, styles will be added to the document head for Studio components\n * rendered in the main document fragment, or to Studio wrapper element\n * for other Studio components (e.g. those rendered in a shadow DOM or detached from the\n * document).\n *\n * @initial\n */\n @Input() public themeStyleContainer: (HTMLElement | (() => HTMLElement | void)) | undefined = undefined;\n /** Allows overriding what `document` is used.\n * Use this when you want Studio to use a different `document` than the one available on the global scope.\n * This can happen if docking out components (something which Electron supports).\n */\n @Input() public getDocument: (() => Document) | undefined = undefined;\n /** Disables touch support (but does not remove the browser's efforts to simulate mouse events on touch).\n * @default false\n * @initial\n */\n @Input({ transform: booleanAttribute }) public suppressTouch: boolean | undefined = undefined;\n /** A map of key->value pairs for localising text within Studio.\n * @initial\n */\n @Input() public localeText: AgStudioLocaleText | undefined = undefined;\n /** A callback for localising text within Studio.\n * @initial\n */\n @Input() public getLocaleText: ((params: AgStudioGetLocaleTextParams) => string) | undefined = undefined;\n /** Provide a custom `studioId` for this instance of Studio. Value will be set on the root DOM node using the attribute `studio-id` as well as being accessible via the `api.getStudioId()` method.\n * @initial\n */\n @Input() public studioId: string | undefined = undefined;\n /** Provides a context object that is provided to different callbacks Studio uses. Used for passing additional information to the callbacks used by your application.\n * @initial\n */\n @Input() public context: any = undefined;\n /** Initial state for Studio. Only read once on initialization. Can be used in conjunction with `api.getState()` to save and restore Studio state.\n * @initial\n */\n @Input() public initialState: AgReportState | undefined = undefined;\n /** Defines the data sources used by Studio.\n *\n * If updated after initially being set, only changes to synchronous data will be processed.\n * Any other changes will be ignored (e.g. adding/removing data sources, updating fields, etc.)\n */\n @Input() public data: AgDataSourcesDefinition | AgDataEngine | undefined = undefined;\n /** Which mode Studio is in.\n * @default 'view'\n */\n @Input() public mode: AgStudioMode | undefined = undefined;\n /** Default layout styling.\n */\n @Input() public layout: Partial<AgPageLayoutState> | undefined = undefined;\n /** AI Assistant configuration.\n * @initial\n */\n @Input() public ai: AgAiAssistant | undefined = undefined;\n /** Overrides for the layout and widget configs.\n */\n @Input() public overrides: AgStudioOverrides | undefined = undefined;\n /** Configure which panels are displayed and on which side.\n */\n @Input() public panels: AgPanelConfig | undefined = undefined;\n\n /** State has been updated.\n */\n @Output() public stateUpdated: EventEmitter<AgStudioStateUpdatedEvent> =\n new EventEmitter<AgStudioStateUpdatedEvent>();\n /** The API has been initialised and is ready for most calls. The data engine has not been initialised yet, and the UI is not ready.\n */\n @Output() public apiReady: EventEmitter<AgStudioApiReadyEvent> = new EventEmitter<AgStudioApiReadyEvent>();\n /** The data engine has been initialised, and the UI has been created, but may not be fully rendered yet.\n */\n @Output() public studioReady: EventEmitter<AgStudioReadyEvent> = new EventEmitter<AgStudioReadyEvent>();\n /** An error has occurred within Studio.\n */\n @Output() public errorRaised: EventEmitter<AgStudioErrorRaisedEvent> = new EventEmitter<AgStudioErrorRaisedEvent>();\n\n // @END@\n}\n\nconst booleanMixedStudioProperties = new Set<string>(_BOOLEAN_MIXED_STUDIO_PROPERTIES);\n/**\n * Used to support the user setting combined boolean and string / object properties\n * as plain HTML attributes and us correctly mapping that to true.\n * For example cellSection can be boolean or an object\n */\nfunction getValueOrCoercedValue(key: string, valueToUse: any): any {\n if (booleanMixedStudioProperties.has(key)) {\n // Handle plain HTML boolean attributes and convert them to boolean values\n // Also handle the false string case to match Angular boolean attributes\n // eslint-disable-next-line sonarjs/no-nested-conditional\n return valueToUse === '' ? true : valueToUse === 'false' ? false : valueToUse;\n }\n return valueToUse;\n}\n","import { NgModule } from '@angular/core';\n\nimport { AgStudio } from './ag-studio.component';\n\n@NgModule({\n imports: [AgStudio],\n exports: [AgStudio],\n})\nexport class AgStudioModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.AngularFrameworkOverrides"],"mappings":"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"}
1
+ {"version":3,"file":"ag-studio-angular.mjs","sources":["../../../projects/ag-studio-angular/src/lib/angularFrameworkComponentWrapper.ts","../../../projects/ag-studio-angular/src/lib/angularFrameworkOverrides.ts","../../../projects/ag-studio-angular/src/lib/ag-studio.component.ts","../../../projects/ag-studio-angular/src/lib/ag-studio.module.ts","../../../projects/ag-studio-angular/src/ag-studio-angular.ts"],"sourcesContent":["import type { ComponentRef } from '@angular/core';\nimport { Component, Injectable, ViewContainerRef, inject } from '@angular/core';\nimport type { _FrameworkComponentWrapper, _WrappableInterface } from 'ag-studio';\nimport { _BaseComponentWrapper } from 'ag-studio';\n\nimport { _removeFromParent } from 'ag-grid-enterprise';\n\nimport type { AngularFrameworkOverrides } from './angularFrameworkOverrides';\nimport type { AgCustomComponent } from './interfaces';\n\n// To speed up the removal of custom components we create a number of shards to contain them.\n// Removing a single component calls a function within Angular called removeFromArray.\n// This is a lot faster if the array is smaller.\n@Component({\n selector: 'ag-component-container',\n template: '',\n})\nexport class AgComponentContainer {\n public vcr = inject(ViewContainerRef);\n}\nconst NUM_SHARDS = 16;\nlet shardIdx = 0;\n\nfunction createComponentContainers(vcr: ViewContainerRef): Map<number, ComponentRef<AgComponentContainer>> {\n const containerMap = new Map<number, ComponentRef<AgComponentContainer>>();\n for (let i = 0; i < NUM_SHARDS; i++) {\n const container = vcr.createComponent(AgComponentContainer);\n containerMap.set(i, container);\n _removeFromParent(container.location.nativeElement);\n }\n return containerMap;\n}\n\n@Injectable()\nexport class AngularFrameworkComponentWrapper\n extends _BaseComponentWrapper<_WrappableInterface>\n implements _FrameworkComponentWrapper\n{\n private viewContainerRef: ViewContainerRef;\n private frameworkOverrides: AngularFrameworkOverrides;\n private compShards: Map<number, ComponentRef<AgComponentContainer>>;\n\n setViewContainerRef(viewContainerRef: ViewContainerRef, angularFrameworkOverrides: AngularFrameworkOverrides) {\n this.viewContainerRef = viewContainerRef;\n this.frameworkOverrides = angularFrameworkOverrides;\n }\n\n protected createWrapper(OriginalConstructor: { new (): any }): _WrappableInterface {\n this.compShards ??= createComponentContainers(this.viewContainerRef);\n return new DynamicAgNg2Component(this.frameworkOverrides, this, OriginalConstructor);\n }\n\n createComponent<T>(componentType: { new (...args: any[]): T }): ComponentRef<T> {\n shardIdx = (shardIdx + 1) % NUM_SHARDS;\n const container = this.compShards.get(shardIdx)!;\n return container.instance.vcr.createComponent(componentType);\n }\n}\n\nclass DynamicAgNg2Component<P> implements _WrappableInterface {\n private _eGui: HTMLElement;\n private _componentRef: ComponentRef<AgCustomComponent<P>>;\n private _frameworkComponentInstance: any; // the user's component - for accessing methods they create\n\n constructor(\n private frameworkOverrides: AngularFrameworkOverrides,\n private frameworkCompWrapper: AngularFrameworkComponentWrapper,\n private OriginalConstructor: { new (): any }\n ) {}\n\n init(params: P): Promise<any> {\n return new Promise((resolve) => {\n this.frameworkOverrides.runInsideAngular(() => {\n this._init(params).then((result) => {\n this._componentRef.changeDetectorRef.detectChanges();\n resolve(result);\n });\n });\n });\n }\n\n private async _init(params: P): Promise<any> {\n this._componentRef = this.frameworkCompWrapper.createComponent(this.OriginalConstructor);\n const instance = this._componentRef.instance;\n this._frameworkComponentInstance = instance;\n this._eGui = this._componentRef.location.nativeElement;\n // Angular appends the component to the DOM, so remove it\n _removeFromParent(this._eGui);\n\n return instance.agInit?.(params);\n }\n\n async refresh(params: P): Promise<any> {\n return this.frameworkOverrides.runInsideAngular(() => this._frameworkComponentInstance.refresh?.(params));\n }\n\n getGui(): HTMLElement {\n return this._eGui;\n }\n\n /** `getGui()` returns the `ng-component` element. This returns the actual root element. */\n getRootElement(): HTMLElement {\n return this._eGui.firstChild as HTMLElement;\n }\n\n destroy(): void {\n if (typeof this._frameworkComponentInstance?.destroy === 'function') {\n this._frameworkComponentInstance.destroy();\n }\n this._componentRef?.destroy();\n }\n\n getFrameworkComponentInstance(): any {\n return this._frameworkComponentInstance;\n }\n\n hasMethod(name: string): boolean {\n return this._frameworkComponentInstance[name] != null;\n }\n\n callMethod(name: string, args: IArguments): any {\n return this.frameworkOverrides.runInsideAngular(() => this._frameworkComponentInstance[name](...args));\n }\n\n addMethod(name: string, callback: (...args: any[]) => any): void {\n (this as any)[name] = callback;\n }\n}\n","import { Injectable, NgZone } from '@angular/core';\nimport { _VanillaFrameworkOverrides } from 'ag-studio';\n\nimport type { FrameworkOverridesIncomingSource } from 'ag-grid-enterprise';\n\n@Injectable()\nexport class AngularFrameworkOverrides extends _VanillaFrameworkOverrides {\n override readonly batchFrameworkComps: boolean = true;\n\n // Flag used to control Zone behaviour when running tests as many test features rely on Zone.\n private readonly isRunningWithinTestZone: boolean = false;\n\n private readonly runOutside: <T>(callback: () => T, source?: FrameworkOverridesIncomingSource) => T;\n\n constructor(private readonly _ngZone: NgZone) {\n super('angular');\n\n this.isRunningWithinTestZone =\n (globalThis as any)?.AG_STUDIO_UNDER_TEST ?? !!(globalThis as any)?.Zone?.AsyncTestZoneSpec;\n\n if (!this._ngZone) {\n this.runOutside = (callback) => callback();\n } else if (this.isRunningWithinTestZone) {\n this.runOutside = (callback, source) => {\n if (source === 'resize-observer' || source === 'popupPositioning') {\n // ensure resize observer callbacks are run outside of Angular even under test due to Jest not supporting ResizeObserver\n // which means it just loops continuously with a setTimeout with no way to flush the queue or have fixture.whenStable() resolve.\n return this._ngZone.runOutsideAngular(callback);\n }\n // When under test run inside Angular so that tests can use fixture.whenStable() to wait for async operations to complete.\n return callback();\n };\n } else {\n this.runOutside = (callback) => this._ngZone.runOutsideAngular(callback);\n }\n }\n\n // Make all events run outside Angular as they often trigger the setup of event listeners\n // By having the event listeners outside Angular we can avoid triggering change detection\n // This also means that if a user calls an AG Studio API method from within their component\n // the internal side effects will not trigger change detection. Without this the events would\n // run inside Angular and trigger change detection as the source of the event was within the angular zone.\n override wrapIncoming: <T>(callback: () => T, source?: FrameworkOverridesIncomingSource) => T = (\n callback,\n source\n ) => this.runOutside(callback, source);\n\n /**\n * The shouldWrapOutgoing property is used to determine if events should be run outside of Angular or not.\n * If an event handler is registered outside of Angular then we should not wrap the event handler\n * with runInsideAngular() as the user may not have wanted this.\n * This is also used to not wrap internal event listeners that are registered with RowNodes and Columns.\n */\n get shouldWrapOutgoing() {\n return this._ngZone && NgZone.isInAngularZone();\n }\n\n /**\n * Make sure that any code that is executed outside of AG Studio is running within the Angular zone.\n * This means users can update templates and use binding without having to do anything extra.\n */\n override wrapOutgoing: <T>(callback: () => T) => T = (callback) => this.runInsideAngular(callback);\n\n override isFrameworkComponent(comp: any): boolean {\n if (!comp) {\n return false;\n }\n const prototype = comp.prototype;\n return prototype && 'agInit' in prototype;\n }\n\n runInsideAngular<T>(callback: () => T): T {\n if (!this._ngZone || NgZone.isInAngularZone()) {\n return callback();\n }\n\n // Check for _ngZone existence as it is not present when Zoneless\n return this._ngZone.run(callback);\n }\n\n runOutsideAngular<T>(callback: () => T, source?: FrameworkOverridesIncomingSource): T {\n return this.runOutside(callback, source);\n }\n}\n","/* eslint-disable no-duplicate-imports */\n// False positive lint error, ElementRef and co can't be type imports\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n ViewContainerRef,\n ViewEncapsulation,\n booleanAttribute,\n} from '@angular/core';\nimport type { AgDefaultRegistry, AgStudioApi, AgStudioModule, AgStudioProperties, _StudioParams } from 'ag-studio';\nimport {\n _BOOLEAN_MIXED_STUDIO_PROPERTIES,\n _combineAttributesAndStudioProperties,\n _createStudio,\n _processPropertyChanges,\n} from 'ag-studio';\n// @START_IMPORTS@\nimport type {\n AgAiAssistant,\n AgDataEngine,\n AgDataOptions,\n AgDataSourcesDefinition,\n AgPageConfig,\n AgPageLayoutState,\n AgPanelConfig,\n AgReportState,\n AgStudioApiReadyEvent,\n AgStudioErrorRaisedEvent,\n AgStudioGetLocaleTextParams,\n AgStudioLocaleText,\n AgStudioMode,\n AgStudioOverrides,\n AgStudioReadyEvent,\n AgStudioStateUpdatedEvent,\n AgStudioTheme,\n AgWidgetsConfig,\n} from 'ag-studio';\n\n// @END_IMPORTS@\n\nimport { AngularFrameworkComponentWrapper } from './angularFrameworkComponentWrapper';\nimport { AngularFrameworkOverrides } from './angularFrameworkOverrides';\nimport type { AgRegistry } from './interfaces';\n\n@Component({\n selector: 'ag-studio',\n standalone: true,\n template: '',\n providers: [AngularFrameworkOverrides, AngularFrameworkComponentWrapper],\n // tell angular we don't want view encapsulation, we don't want a shadow root\n encapsulation: ViewEncapsulation.None,\n})\nexport class AgStudio<TRegistry extends AgRegistry = AgDefaultRegistry> implements AfterViewInit, OnChanges, OnDestroy {\n // not intended for user to interact with. so putting _ in so if user gets reference\n // to this object, they kind'a know it's not part of the agreed interface\n private readonly _nativeElement: any;\n private _initialised = false;\n private _destroyed = false;\n\n // in order to ensure firing of apiReady is deterministic\n private _holdEvents = true;\n private _resolveFullyReady: () => void;\n private readonly _fullyReady: Promise<void> = new Promise((resolve) => {\n this._resolveFullyReady = resolve;\n });\n\n /** Studio Api available after onApiReady event has fired. */\n api: AgStudioApi<TRegistry>;\n\n constructor(\n elementDef: ElementRef,\n private readonly _viewContainerRef: ViewContainerRef,\n private readonly _angularFrameworkOverrides: AngularFrameworkOverrides,\n private readonly _frameworkCompWrapper: AngularFrameworkComponentWrapper\n ) {\n this._nativeElement = elementDef.nativeElement;\n // NOSONAR\n this._fullyReady.then(() => {\n // Register the status flag reset before any events are fired\n // so that we can swap to synchronous event firing as soon as the studio is ready\n this._holdEvents = false;\n });\n }\n\n ngAfterViewInit(): void {\n // Run the setup outside of angular so all the event handlers that are created do not trigger change detection\n this._angularFrameworkOverrides.runOutsideAngular(() => {\n this._frameworkCompWrapper.setViewContainerRef(this._viewContainerRef, this._angularFrameworkOverrides);\n\n // Get all the inputs that are valid AgStudioProperties\n const studioPropertiesKeys = Object.keys(this).filter(\n (key) =>\n !(\n key.startsWith('_') ||\n key == 'studioProperties' ||\n key == 'modules' ||\n this[key as keyof AgStudio] instanceof EventEmitter\n )\n );\n\n const coercedStudioProperties = {} as AgStudioProperties<TRegistry>;\n for (const key of studioPropertiesKeys) {\n const valueToUse = getValueOrCoercedValue(key, this[key as keyof AgStudio]);\n coercedStudioProperties[key as keyof AgStudioProperties] = valueToUse;\n }\n\n const mergedStudioProperties = _combineAttributesAndStudioProperties(\n this.studioProperties,\n coercedStudioProperties,\n studioPropertiesKeys\n );\n\n const studioParams: _StudioParams = {\n globalListener: this.globalListener.bind(this),\n frameworkOverrides: this._angularFrameworkOverrides,\n setThemeOnRootDiv: true,\n modules: this.modules,\n providedBeanInstances: {\n frameworkCompWrapper: this._frameworkCompWrapper,\n },\n };\n\n const api = _createStudio(this._nativeElement, mergedStudioProperties, studioParams);\n if (api) {\n this.api = api;\n }\n\n this._initialised = true;\n\n // sometimes, especially in large client apps apiReady can fire before ngAfterViewInit\n // this ties these together so that apiReady will always fire after agStudio's ngAfterViewInit\n // the actual containing component's ngAfterViewInit will fire just after agStudio's\n this._resolveFullyReady();\n });\n }\n\n public ngOnChanges(changes: any): void {\n if (this._initialised) {\n // Run the changes outside of angular so any event handlers that are created do not trigger change detection\n this._angularFrameworkOverrides.runOutsideAngular(() => {\n const studioProperties: AgStudioProperties<TRegistry> = {};\n for (const key of Object.keys(changes)) {\n const value = changes[key];\n studioProperties[key as keyof AgStudioProperties] = value.currentValue;\n }\n _processPropertyChanges(studioProperties, this.api);\n });\n }\n }\n\n public ngOnDestroy(): void {\n if (this._initialised) {\n // need to do this before the destroy, so we know not to emit any events\n // while tearing down the studio.\n this._destroyed = true;\n // could be null if studio failed to initialise\n this.api?.destroy();\n }\n }\n\n // we'll emit the emit if a user is listening for a given event either on the component via normal angular binding\n // or via studioProperties\n protected isEmitterUsed(eventType: string): boolean {\n const emitter = <EventEmitter<any>>(<any>this)[eventType];\n // For RxJs compatibility we need to check for observed v7+ or observers v6\n const emitterAny = emitter as any;\n const hasEmitter = emitterAny?.observed ?? emitterAny?.observers?.length > 0;\n\n // apiReady => onApiReady\n const asEventName = `on${eventType.charAt(0).toUpperCase()}${eventType.substring(1)}`;\n const hasStudioPropertyListener = !!this.studioProperties && !!(this.studioProperties as any)[asEventName];\n\n return hasEmitter || hasStudioPropertyListener;\n }\n\n private globalListener(eventType: string, event: any): void {\n // if we are tearing down, don't emit angular events, as this causes\n // problems with the angular router\n if (this._destroyed) {\n return;\n }\n\n // generically look up the eventType\n const emitter = <EventEmitter<any>>(<any>this)[eventType];\n if (emitter && this.isEmitterUsed(eventType)) {\n // Make sure we emit within the angular zone, so change detection works properly\n const fireEmitter = () => this._angularFrameworkOverrides.runInsideAngular(() => emitter.emit(event));\n\n if (this._holdEvents) {\n // if the user is listening to events, wait for ngAfterViewInit to fire first, then emit the studio events\n this._fullyReady.then(() => fireEmitter());\n } else {\n fireEmitter();\n }\n }\n }\n\n /** Provided an initial studioProperties configuration to the component. If a property is specified in both studioProperties and via component binding the component binding takes precedence. */\n @Input() public studioProperties: AgStudioProperties<TRegistry> | undefined;\n /**\n * Used to register AG Studio Modules directly with this instance of Studio.\n */\n @Input() public modules: AgStudioModule[] | undefined;\n\n // @START@\n /** Change this value to set the tabIndex order of Studio within your application.\n * @default 0\n * @initial\n */\n @Input() public tabIndex: number | undefined = undefined;\n /** Set to `true` to operate Studio in RTL (Right to Left) mode.\n * @default false\n * @initial\n */\n @Input({ transform: booleanAttribute }) public enableRtl: boolean | undefined = undefined;\n /** DOM element to use as the popup parent for Studio popups (context menus, etc.).\n */\n @Input() public popupParent: HTMLElement | null | undefined = undefined;\n /** Theme to apply to Studio.\n *\n * @default studioTheme\n */\n @Input() public theme: AgStudioTheme | undefined = undefined;\n /** If your theme uses a font that is available on Google Fonts, pass true to load it from Google's CDN.\n */\n @Input({ transform: booleanAttribute }) public loadThemeGoogleFonts: boolean | undefined = undefined;\n /** The CSS layer that this theme should be rendered onto. When specified,\n * Studio CSS will be wrapped in a `@layer ${themeCssLayer} { ... }` block.\n *\n * NOTE: when specifying `themeCssLayer` we recommend setting\n * `themeStyleContainer` to `document.body` to ensure that Studio CSS\n * comes after your application CSS, allowing your application to set the\n * order of layers.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/@layer\n */\n @Input() public themeCssLayer: string | undefined = undefined;\n /** The nonce attribute to set on style elements added to the document by\n * themes. If \"foo\" is passed to this property, Studio can use the Content\n * Security Policy `style-src 'nonce-foo'`, instead of the less secure\n * `style-src 'unsafe-inline'`.\n *\n * Note: CSP nonces are global to a page, where a page has multiple Studio components,\n * every one must have the same styleNonce set.\n */\n @Input() public styleNonce: string | undefined = undefined;\n /** An element to insert style elements into when injecting styles into the\n * Studio. Styles are inserted at the start of the element.\n *\n * If undefined, styles will be added to the document head for Studio components\n * rendered in the main document fragment, or to Studio wrapper element\n * for other Studio components (e.g. those rendered in a shadow DOM or detached from the\n * document).\n *\n * @initial\n */\n @Input() public themeStyleContainer: (HTMLElement | (() => HTMLElement | void)) | undefined = undefined;\n /** Allows overriding what `document` is used.\n * Use this when you want Studio to use a different `document` than the one available on the global scope.\n * This can happen if docking out components (something which Electron supports).\n */\n @Input() public getDocument: (() => Document) | undefined = undefined;\n /** Disables touch support (but does not remove the browser's efforts to simulate mouse events on touch).\n * @default false\n * @initial\n */\n @Input({ transform: booleanAttribute }) public suppressTouch: boolean | undefined = undefined;\n /** A map of key->value pairs for localising text within Studio.\n * @initial\n */\n @Input() public localeText: AgStudioLocaleText | undefined = undefined;\n /** A callback for localising text within Studio.\n * @initial\n */\n @Input() public getLocaleText: ((params: AgStudioGetLocaleTextParams) => string) | undefined = undefined;\n /** Provide a custom `studioId` for this instance of Studio. Value will be set on the root DOM node using the attribute `studio-id` as well as being accessible via the `api.getStudioId()` method.\n * @initial\n */\n @Input() public studioId: string | undefined = undefined;\n /** Provides a context object that is provided to different callbacks Studio uses. Used for passing additional information to the callbacks used by your application.\n * @initial\n */\n @Input() public context: any = undefined;\n /** Initial state for Studio. Only read once on initialization. Can be used in conjunction with `api.getState()` to save and restore Studio state.\n * @initial\n */\n @Input() public initialState: AgReportState<TRegistry> | undefined = undefined;\n /** Defines the data sources used by Studio.\n *\n * If updated after initially being set, only changes to synchronous data will be processed.\n * Any other changes will be ignored (e.g. adding/removing data sources, updating fields, etc.)\n */\n @Input() public data: AgDataSourcesDefinition | AgDataEngine | undefined = undefined;\n /** Which mode Studio is in.\n * @default 'view'\n */\n @Input() public mode: AgStudioMode | undefined = undefined;\n /** Default layout styling.\n */\n @Input() public layout: Partial<AgPageLayoutState> | undefined = undefined;\n /** AI Assistant configuration.\n *\n * NOTE: The **AI Assistant** is an experimental feature. Behaviour will be\n * slightly different depending on the LLM being used, and results can vary across queries.\n *\n * @initial\n */\n @Input() public ai: AgAiAssistant | undefined = undefined;\n /** Data-layer configuration. Controls behaviours such as export row limits.\n */\n @Input() public dataOptions: AgDataOptions | undefined = undefined;\n /** @deprecated v1.1 Use `widgets` to customise the widget configurations and available widgets,\n * and `page` to customise the page setup form.\n *\n * Overrides for the layout and widget configs.\n */\n @Input() public overrides: AgStudioOverrides | undefined = undefined;\n /** Configure which panels are displayed and on which side.\n */\n @Input() public panels: AgPanelConfig | undefined = undefined;\n /** Configure page (e.g. page setup form in page tab of edit panel).\n */\n @Input() public page: (AgPageConfig | ((config: AgPageConfig) => AgPageConfig)) | undefined = undefined;\n @Input() public widgets:\n | (AgWidgetsConfig<TRegistry> | ((widgets: AgWidgetsConfig<TRegistry>) => AgWidgetsConfig<TRegistry>))\n | undefined = undefined;\n /** Custom components (e.g. custom widget components) keyed by ID.\n * Used to share components which can then be referenced directly by key in the definitions.\n */\n @Input() public components: TRegistry['components'] | undefined = undefined;\n\n /** State has been updated.\n */\n @Output() public stateUpdated: EventEmitter<AgStudioStateUpdatedEvent> =\n new EventEmitter<AgStudioStateUpdatedEvent>();\n /** The API has been initialised and is ready for most calls. The data engine has not been initialised yet, and the UI is not ready.\n */\n @Output() public apiReady: EventEmitter<AgStudioApiReadyEvent> = new EventEmitter<AgStudioApiReadyEvent>();\n /** The data engine has been initialised, and the UI has been created, but may not be fully rendered yet.\n */\n @Output() public studioReady: EventEmitter<AgStudioReadyEvent> = new EventEmitter<AgStudioReadyEvent>();\n /** An error has occurred within Studio.\n */\n @Output() public errorRaised: EventEmitter<AgStudioErrorRaisedEvent> = new EventEmitter<AgStudioErrorRaisedEvent>();\n\n // @END@\n}\n\nconst booleanMixedStudioProperties = new Set<string>(_BOOLEAN_MIXED_STUDIO_PROPERTIES);\n/**\n * Used to support the user setting combined boolean and string / object properties\n * as plain HTML attributes and us correctly mapping that to true.\n * For example cellSection can be boolean or an object\n */\nfunction getValueOrCoercedValue(key: string, valueToUse: any): any {\n if (booleanMixedStudioProperties.has(key)) {\n // Handle plain HTML boolean attributes and convert them to boolean values\n // Also handle the false string case to match Angular boolean attributes\n return valueToUse === '' ? true : valueToUse === 'false' ? false : valueToUse;\n }\n return valueToUse;\n}\n","import { NgModule } from '@angular/core';\n\nimport { AgStudio } from './ag-studio.component';\n\n@NgModule({\n imports: [AgStudio],\n exports: [AgStudio],\n})\nexport class AgStudioModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.AngularFrameworkOverrides","i2.AngularFrameworkComponentWrapper"],"mappings":"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"}
@@ -1,26 +1,30 @@
1
- import { AfterViewInit, ElementRef, EventEmitter, OnChanges, OnDestroy } from '@angular/core';
2
- import type { AgStudioApi, AgStudioModule, AgStudioProperties } from 'ag-studio';
3
- import type { AgAiAssistant, AgDataEngine, AgDataSourcesDefinition, AgPageLayoutState, AgPanelConfig, AgReportState, AgStudioApiReadyEvent, AgStudioErrorRaisedEvent, AgStudioGetLocaleTextParams, AgStudioLocaleText, AgStudioMode, AgStudioOverrides, AgStudioReadyEvent, AgStudioStateUpdatedEvent, AgStudioTheme } from 'ag-studio';
1
+ import { AfterViewInit, ElementRef, EventEmitter, OnChanges, OnDestroy, ViewContainerRef } from '@angular/core';
2
+ import type { AgDefaultRegistry, AgStudioApi, AgStudioModule, AgStudioProperties } from 'ag-studio';
3
+ import type { AgAiAssistant, AgDataEngine, AgDataOptions, AgDataSourcesDefinition, AgPageConfig, AgPageLayoutState, AgPanelConfig, AgReportState, AgStudioApiReadyEvent, AgStudioErrorRaisedEvent, AgStudioGetLocaleTextParams, AgStudioLocaleText, AgStudioMode, AgStudioOverrides, AgStudioReadyEvent, AgStudioStateUpdatedEvent, AgStudioTheme, AgWidgetsConfig } from 'ag-studio';
4
+ import { AngularFrameworkComponentWrapper } from './angularFrameworkComponentWrapper';
4
5
  import { AngularFrameworkOverrides } from './angularFrameworkOverrides';
6
+ import type { AgRegistry } from './interfaces';
5
7
  import * as i0 from "@angular/core";
6
- export declare class AgStudio implements AfterViewInit, OnChanges, OnDestroy {
8
+ export declare class AgStudio<TRegistry extends AgRegistry = AgDefaultRegistry> implements AfterViewInit, OnChanges, OnDestroy {
9
+ private readonly _viewContainerRef;
7
10
  private readonly _angularFrameworkOverrides;
11
+ private readonly _frameworkCompWrapper;
8
12
  private readonly _nativeElement;
9
13
  private _initialised;
10
14
  private _destroyed;
11
15
  private _holdEvents;
12
16
  private _resolveFullyReady;
13
17
  private readonly _fullyReady;
14
- /** Dash Api available after onApiReady event has fired. */
15
- api: AgStudioApi;
16
- constructor(elementDef: ElementRef, _angularFrameworkOverrides: AngularFrameworkOverrides);
18
+ /** Studio Api available after onApiReady event has fired. */
19
+ api: AgStudioApi<TRegistry>;
20
+ constructor(elementDef: ElementRef, _viewContainerRef: ViewContainerRef, _angularFrameworkOverrides: AngularFrameworkOverrides, _frameworkCompWrapper: AngularFrameworkComponentWrapper);
17
21
  ngAfterViewInit(): void;
18
22
  ngOnChanges(changes: any): void;
19
23
  ngOnDestroy(): void;
20
24
  protected isEmitterUsed(eventType: string): boolean;
21
25
  private globalListener;
22
26
  /** Provided an initial studioProperties configuration to the component. If a property is specified in both studioProperties and via component binding the component binding takes precedence. */
23
- studioProperties: AgStudioProperties | undefined;
27
+ studioProperties: AgStudioProperties<TRegistry> | undefined;
24
28
  /**
25
29
  * Used to register AG Studio Modules directly with this instance of Studio.
26
30
  */
@@ -106,7 +110,7 @@ export declare class AgStudio implements AfterViewInit, OnChanges, OnDestroy {
106
110
  /** Initial state for Studio. Only read once on initialization. Can be used in conjunction with `api.getState()` to save and restore Studio state.
107
111
  * @initial
108
112
  */
109
- initialState: AgReportState | undefined;
113
+ initialState: AgReportState<TRegistry> | undefined;
110
114
  /** Defines the data sources used by Studio.
111
115
  *
112
116
  * If updated after initially being set, only changes to synchronous data will be processed.
@@ -121,15 +125,33 @@ export declare class AgStudio implements AfterViewInit, OnChanges, OnDestroy {
121
125
  */
122
126
  layout: Partial<AgPageLayoutState> | undefined;
123
127
  /** AI Assistant configuration.
128
+ *
129
+ * NOTE: The **AI Assistant** is an experimental feature. Behaviour will be
130
+ * slightly different depending on the LLM being used, and results can vary across queries.
131
+ *
124
132
  * @initial
125
133
  */
126
134
  ai: AgAiAssistant | undefined;
127
- /** Overrides for the layout and widget configs.
135
+ /** Data-layer configuration. Controls behaviours such as export row limits.
136
+ */
137
+ dataOptions: AgDataOptions | undefined;
138
+ /** @deprecated v1.1 Use `widgets` to customise the widget configurations and available widgets,
139
+ * and `page` to customise the page setup form.
140
+ *
141
+ * Overrides for the layout and widget configs.
128
142
  */
129
143
  overrides: AgStudioOverrides | undefined;
130
144
  /** Configure which panels are displayed and on which side.
131
145
  */
132
146
  panels: AgPanelConfig | undefined;
147
+ /** Configure page (e.g. page setup form in page tab of edit panel).
148
+ */
149
+ page: (AgPageConfig | ((config: AgPageConfig) => AgPageConfig)) | undefined;
150
+ widgets: (AgWidgetsConfig<TRegistry> | ((widgets: AgWidgetsConfig<TRegistry>) => AgWidgetsConfig<TRegistry>)) | undefined;
151
+ /** Custom components (e.g. custom widget components) keyed by ID.
152
+ * Used to share components which can then be referenced directly by key in the definitions.
153
+ */
154
+ components: TRegistry['components'] | undefined;
133
155
  /** State has been updated.
134
156
  */
135
157
  stateUpdated: EventEmitter<AgStudioStateUpdatedEvent>;
@@ -142,8 +164,8 @@ export declare class AgStudio implements AfterViewInit, OnChanges, OnDestroy {
142
164
  /** An error has occurred within Studio.
143
165
  */
144
166
  errorRaised: EventEmitter<AgStudioErrorRaisedEvent>;
145
- static ɵfac: i0.ɵɵFactoryDeclaration<AgStudio, never>;
146
- static ɵcmp: i0.ɵɵComponentDeclaration<AgStudio, "ag-studio", never, { "studioProperties": { "alias": "studioProperties"; "required": false; }; "modules": { "alias": "modules"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "enableRtl": { "alias": "enableRtl"; "required": false; }; "popupParent": { "alias": "popupParent"; "required": false; }; "theme": { "alias": "theme"; "required": false; }; "loadThemeGoogleFonts": { "alias": "loadThemeGoogleFonts"; "required": false; }; "themeCssLayer": { "alias": "themeCssLayer"; "required": false; }; "styleNonce": { "alias": "styleNonce"; "required": false; }; "themeStyleContainer": { "alias": "themeStyleContainer"; "required": false; }; "getDocument": { "alias": "getDocument"; "required": false; }; "suppressTouch": { "alias": "suppressTouch"; "required": false; }; "localeText": { "alias": "localeText"; "required": false; }; "getLocaleText": { "alias": "getLocaleText"; "required": false; }; "studioId": { "alias": "studioId"; "required": false; }; "context": { "alias": "context"; "required": false; }; "initialState": { "alias": "initialState"; "required": false; }; "data": { "alias": "data"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "layout": { "alias": "layout"; "required": false; }; "ai": { "alias": "ai"; "required": false; }; "overrides": { "alias": "overrides"; "required": false; }; "panels": { "alias": "panels"; "required": false; }; }, { "stateUpdated": "stateUpdated"; "apiReady": "apiReady"; "studioReady": "studioReady"; "errorRaised": "errorRaised"; }, never, never, true, never>;
167
+ static ɵfac: i0.ɵɵFactoryDeclaration<AgStudio<any>, never>;
168
+ static ɵcmp: i0.ɵɵComponentDeclaration<AgStudio<any>, "ag-studio", never, { "studioProperties": { "alias": "studioProperties"; "required": false; }; "modules": { "alias": "modules"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "enableRtl": { "alias": "enableRtl"; "required": false; }; "popupParent": { "alias": "popupParent"; "required": false; }; "theme": { "alias": "theme"; "required": false; }; "loadThemeGoogleFonts": { "alias": "loadThemeGoogleFonts"; "required": false; }; "themeCssLayer": { "alias": "themeCssLayer"; "required": false; }; "styleNonce": { "alias": "styleNonce"; "required": false; }; "themeStyleContainer": { "alias": "themeStyleContainer"; "required": false; }; "getDocument": { "alias": "getDocument"; "required": false; }; "suppressTouch": { "alias": "suppressTouch"; "required": false; }; "localeText": { "alias": "localeText"; "required": false; }; "getLocaleText": { "alias": "getLocaleText"; "required": false; }; "studioId": { "alias": "studioId"; "required": false; }; "context": { "alias": "context"; "required": false; }; "initialState": { "alias": "initialState"; "required": false; }; "data": { "alias": "data"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "layout": { "alias": "layout"; "required": false; }; "ai": { "alias": "ai"; "required": false; }; "dataOptions": { "alias": "dataOptions"; "required": false; }; "overrides": { "alias": "overrides"; "required": false; }; "panels": { "alias": "panels"; "required": false; }; "page": { "alias": "page"; "required": false; }; "widgets": { "alias": "widgets"; "required": false; }; "components": { "alias": "components"; "required": false; }; }, { "stateUpdated": "stateUpdated"; "apiReady": "apiReady"; "studioReady": "studioReady"; "errorRaised": "errorRaised"; }, never, never, true, never>;
147
169
  static ngAcceptInputType_enableRtl: unknown;
148
170
  static ngAcceptInputType_loadThemeGoogleFonts: unknown;
149
171
  static ngAcceptInputType_suppressTouch: unknown;
@@ -0,0 +1,25 @@
1
+ import type { ComponentRef } from '@angular/core';
2
+ import { ViewContainerRef } from '@angular/core';
3
+ import type { _FrameworkComponentWrapper, _WrappableInterface } from 'ag-studio';
4
+ import { _BaseComponentWrapper } from 'ag-studio';
5
+ import type { AngularFrameworkOverrides } from './angularFrameworkOverrides';
6
+ import * as i0 from "@angular/core";
7
+ export declare class AgComponentContainer {
8
+ vcr: ViewContainerRef;
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<AgComponentContainer, never>;
10
+ static ɵcmp: i0.ɵɵComponentDeclaration<AgComponentContainer, "ag-component-container", never, {}, {}, never, never, false, never>;
11
+ }
12
+ export declare class AngularFrameworkComponentWrapper extends _BaseComponentWrapper<_WrappableInterface> implements _FrameworkComponentWrapper {
13
+ private viewContainerRef;
14
+ private frameworkOverrides;
15
+ private compShards;
16
+ setViewContainerRef(viewContainerRef: ViewContainerRef, angularFrameworkOverrides: AngularFrameworkOverrides): void;
17
+ protected createWrapper(OriginalConstructor: {
18
+ new (): any;
19
+ }): _WrappableInterface;
20
+ createComponent<T>(componentType: {
21
+ new (...args: any[]): T;
22
+ }): ComponentRef<T>;
23
+ static ɵfac: i0.ɵɵFactoryDeclaration<AngularFrameworkComponentWrapper, never>;
24
+ static ɵprov: i0.ɵɵInjectableDeclaration<AngularFrameworkComponentWrapper>;
25
+ }