ag-grid-angular
Version:
AG Grid Angular Component
82 lines • 13.5 kB
JavaScript
import { Injectable } from '@angular/core';
import { BaseComponentWrapper, _removeFromParent } from 'ag-grid-community';
import * as i0 from "@angular/core";
export class AngularFrameworkComponentWrapper extends BaseComponentWrapper {
setViewContainerRef(viewContainerRef, angularFrameworkOverrides) {
this.viewContainerRef = viewContainerRef;
this.angularFrameworkOverrides = angularFrameworkOverrides;
}
createWrapper(OriginalConstructor) {
const angularFrameworkOverrides = this.angularFrameworkOverrides;
const that = this;
class DynamicAgNg2Component extends BaseGuiComponent {
init(params) {
angularFrameworkOverrides.runInsideAngular(() => {
super.init(params);
this._componentRef.changeDetectorRef.detectChanges();
});
}
createComponent() {
return angularFrameworkOverrides.runInsideAngular(() => that.createComponent(OriginalConstructor));
}
hasMethod(name) {
return wrapper.getFrameworkComponentInstance()[name] != null;
}
callMethod(name, args) {
const componentRef = this.getFrameworkComponentInstance();
const methodCall = componentRef[name];
// Special case for `doesFilterPass` as it's called very often and current implementation has
// this filter logic as part of the component when really it is just part of the filter model.
if (name === 'doesFilterPass') {
return methodCall.apply(componentRef, args);
}
return angularFrameworkOverrides.runInsideAngular(() => methodCall.apply(componentRef, args));
}
addMethod(name, callback) {
wrapper[name] = callback;
}
}
const wrapper = new DynamicAgNg2Component();
return wrapper;
}
createComponent(componentType) {
return this.viewContainerRef.createComponent(componentType);
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AngularFrameworkComponentWrapper, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AngularFrameworkComponentWrapper }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AngularFrameworkComponentWrapper, decorators: [{
type: Injectable
}] });
class BaseGuiComponent {
init(params) {
this._params = params;
this._componentRef = this.createComponent();
this._agAwareComponent = this._componentRef.instance;
this._frameworkComponentInstance = this._componentRef.instance;
this._eGui = this._componentRef.location.nativeElement;
// Angular appends the component to the DOM, so remove it
_removeFromParent(this._eGui);
this._agAwareComponent.agInit(this._params);
}
getGui() {
return this._eGui;
}
/** `getGui()` returns the `ng-component` element. This returns the actual root element. */
getRootElement() {
const firstChild = this._eGui.firstChild;
return firstChild;
}
destroy() {
if (this._frameworkComponentInstance && typeof this._frameworkComponentInstance.destroy === 'function') {
this._frameworkComponentInstance.destroy();
}
if (this._componentRef) {
this._componentRef.destroy();
}
}
getFrameworkComponentInstance() {
return this._frameworkComponentInstance;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhckZyYW1ld29ya0NvbXBvbmVudFdyYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hZy1ncmlkLWFuZ3VsYXIvc3JjL2xpYi9hbmd1bGFyRnJhbWV3b3JrQ29tcG9uZW50V3JhcHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQU01RSxNQUFNLE9BQU8sZ0NBQ1QsU0FBUSxvQkFBd0M7SUFNekMsbUJBQW1CLENBQ3RCLGdCQUFrQyxFQUNsQyx5QkFBb0Q7UUFFcEQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO1FBQ3pDLElBQUksQ0FBQyx5QkFBeUIsR0FBRyx5QkFBeUIsQ0FBQztJQUMvRCxDQUFDO0lBRVMsYUFBYSxDQUFDLG1CQUFvQztRQUN4RCxNQUFNLHlCQUF5QixHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQztRQUNqRSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7UUFDbEIsTUFBTSxxQkFDRixTQUFRLGdCQUFnRDtZQUcvQyxJQUFJLENBQUMsTUFBVztnQkFDckIseUJBQXlCLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFO29CQUM1QyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUNuQixJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUN6RCxDQUFDLENBQUMsQ0FBQztZQUNQLENBQUM7WUFFUyxlQUFlO2dCQUNyQixPQUFPLHlCQUF5QixDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO1lBQ3ZHLENBQUM7WUFFRCxTQUFTLENBQUMsSUFBWTtnQkFDbEIsT0FBTyxPQUFPLENBQUMsNkJBQTZCLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUM7WUFDakUsQ0FBQztZQUVELFVBQVUsQ0FBQyxJQUFZLEVBQUUsSUFBZ0I7Z0JBQ3JDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO2dCQUMxRCxNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3RDLDZGQUE2RjtnQkFDN0YsOEZBQThGO2dCQUM5RixJQUFJLElBQUksS0FBSyxnQkFBZ0IsRUFBRTtvQkFDM0IsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQztpQkFDL0M7Z0JBQ0QsT0FBTyx5QkFBeUIsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ2xHLENBQUM7WUFFRCxTQUFTLENBQUMsSUFBWSxFQUFFLFFBQWlDO2dCQUNwRCxPQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDO1lBQ3RDLENBQUM7U0FDSjtRQUNELE1BQU0sT0FBTyxHQUFHLElBQUkscUJBQXFCLEVBQUUsQ0FBQztRQUM1QyxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBRU0sZUFBZSxDQUFJLGFBQTBDO1FBQ2hFLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNoRSxDQUFDOytHQTFEUSxnQ0FBZ0M7bUhBQWhDLGdDQUFnQzs7NEZBQWhDLGdDQUFnQztrQkFENUMsVUFBVTs7QUE4RFgsTUFBZSxnQkFBZ0I7SUFPakIsSUFBSSxDQUFDLE1BQVM7UUFDcEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFFdEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDNUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDO1FBQ3JELElBQUksQ0FBQywyQkFBMkIsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQztRQUMvRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQztRQUN2RCx5REFBeUQ7UUFDekQsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTlCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFTSxNQUFNO1FBQ1QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFRCwyRkFBMkY7SUFDcEYsY0FBYztRQUNqQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQztRQUN6QyxPQUFPLFVBQXlCLENBQUM7SUFDckMsQ0FBQztJQUVNLE9BQU87UUFDVixJQUFJLElBQUksQ0FBQywyQkFBMkIsSUFBSSxPQUFPLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxPQUFPLEtBQUssVUFBVSxFQUFFO1lBQ3BHLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUM5QztRQUNELElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNwQixJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ2hDO0lBQ0wsQ0FBQztJQUVNLDZCQUE2QjtRQUNoQyxPQUFPLElBQUksQ0FBQywyQkFBMkIsQ0FBQztJQUM1QyxDQUFDO0NBR0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENvbXBvbmVudFJlZiwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgdHlwZSB7IEZyYW1ld29ya0NvbXBvbmVudFdyYXBwZXIsIFdyYXBwYWJsZUludGVyZmFjZSB9IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5JztcbmltcG9ydCB7IEJhc2VDb21wb25lbnRXcmFwcGVyLCBfcmVtb3ZlRnJvbVBhcmVudCB9IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5JztcblxuaW1wb3J0IHR5cGUgeyBBbmd1bGFyRnJhbWV3b3JrT3ZlcnJpZGVzIH0gZnJvbSAnLi9hbmd1bGFyRnJhbWV3b3JrT3ZlcnJpZGVzJztcbmltcG9ydCB0eXBlIHsgQWdGcmFtZXdvcmtDb21wb25lbnQgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQW5ndWxhckZyYW1ld29ya0NvbXBvbmVudFdyYXBwZXJcbiAgICBleHRlbmRzIEJhc2VDb21wb25lbnRXcmFwcGVyPFdyYXBwYWJsZUludGVyZmFjZT5cbiAgICBpbXBsZW1lbnRzIEZyYW1ld29ya0NvbXBvbmVudFdyYXBwZXJcbntcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWY7XG4gICAgcHJpdmF0ZSBhbmd1bGFyRnJhbWV3b3JrT3ZlcnJpZGVzOiBBbmd1bGFyRnJhbWV3b3JrT3ZlcnJpZGVzO1xuXG4gICAgcHVibGljIHNldFZpZXdDb250YWluZXJSZWYoXG4gICAgICAgIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIGFuZ3VsYXJGcmFtZXdvcmtPdmVycmlkZXM6IEFuZ3VsYXJGcmFtZXdvcmtPdmVycmlkZXNcbiAgICApIHtcbiAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyUmVmID0gdmlld0NvbnRhaW5lclJlZjtcbiAgICAgICAgdGhpcy5hbmd1bGFyRnJhbWV3b3JrT3ZlcnJpZGVzID0gYW5ndWxhckZyYW1ld29ya092ZXJyaWRlcztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY3JlYXRlV3JhcHBlcihPcmlnaW5hbENvbnN0cnVjdG9yOiB7IG5ldyAoKTogYW55IH0pOiBXcmFwcGFibGVJbnRlcmZhY2Uge1xuICAgICAgICBjb25zdCBhbmd1bGFyRnJhbWV3b3JrT3ZlcnJpZGVzID0gdGhpcy5hbmd1bGFyRnJhbWV3b3JrT3ZlcnJpZGVzO1xuICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgY2xhc3MgRHluYW1pY0FnTmcyQ29tcG9uZW50XG4gICAgICAgICAgICBleHRlbmRzIEJhc2VHdWlDb21wb25lbnQ8YW55LCBBZ0ZyYW1ld29ya0NvbXBvbmVudDxhbnk+PlxuICAgICAgICAgICAgaW1wbGVtZW50cyBXcmFwcGFibGVJbnRlcmZhY2VcbiAgICAgICAge1xuICAgICAgICAgICAgb3ZlcnJpZGUgaW5pdChwYXJhbXM6IGFueSk6IHZvaWQge1xuICAgICAgICAgICAgICAgIGFuZ3VsYXJGcmFtZXdvcmtPdmVycmlkZXMucnVuSW5zaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHN1cGVyLmluaXQocGFyYW1zKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY29tcG9uZW50UmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcHJvdGVjdGVkIGNyZWF0ZUNvbXBvbmVudCgpOiBDb21wb25lbnRSZWY8QWdGcmFtZXdvcmtDb21wb25lbnQ8YW55Pj4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBhbmd1bGFyRnJhbWV3b3JrT3ZlcnJpZGVzLnJ1bkluc2lkZUFuZ3VsYXIoKCkgPT4gdGhhdC5jcmVhdGVDb21wb25lbnQoT3JpZ2luYWxDb25zdHJ1Y3RvcikpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBoYXNNZXRob2QobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXIuZ2V0RnJhbWV3b3JrQ29tcG9uZW50SW5zdGFuY2UoKVtuYW1lXSAhPSBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYWxsTWV0aG9kKG5hbWU6IHN0cmluZywgYXJnczogSUFyZ3VtZW50cyk6IHZvaWQge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHRoaXMuZ2V0RnJhbWV3b3JrQ29tcG9uZW50SW5zdGFuY2UoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBtZXRob2RDYWxsID0gY29tcG9uZW50UmVmW25hbWVdO1xuICAgICAgICAgICAgICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgYGRvZXNGaWx0ZXJQYXNzYCBhcyBpdCdzIGNhbGxlZCB2ZXJ5IG9mdGVuIGFuZCBjdXJyZW50IGltcGxlbWVudGF0aW9uIGhhc1xuICAgICAgICAgICAgICAgIC8vIHRoaXMgZmlsdGVyIGxvZ2ljIGFzIHBhcnQgb2YgdGhlIGNvbXBvbmVudCB3aGVuIHJlYWxseSBpdCBpcyBqdXN0IHBhcnQgb2YgdGhlIGZpbHRlciBtb2RlbC5cbiAgICAgICAgICAgICAgICBpZiAobmFtZSA9PT0gJ2RvZXNGaWx0ZXJQYXNzJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWV0aG9kQ2FsbC5hcHBseShjb21wb25lbnRSZWYsIGFyZ3MpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYW5ndWxhckZyYW1ld29ya092ZXJyaWRlcy5ydW5JbnNpZGVBbmd1bGFyKCgpID0+IG1ldGhvZENhbGwuYXBwbHkoY29tcG9uZW50UmVmLCBhcmdzKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGFkZE1ldGhvZChuYW1lOiBzdHJpbmcsIGNhbGxiYWNrOiAoLi4uYXJnczogYW55W10pID0+IGFueSk6IHZvaWQge1xuICAgICAgICAgICAgICAgICh3cmFwcGVyIGFzIGFueSlbbmFtZV0gPSBjYWxsYmFjaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCB3cmFwcGVyID0gbmV3IER5bmFtaWNBZ05nMkNvbXBvbmVudCgpO1xuICAgICAgICByZXR1cm4gd3JhcHBlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlQ29tcG9uZW50PFQ+KGNvbXBvbmVudFR5cGU6IHsgbmV3ICguLi5hcmdzOiBhbnlbXSk6IFQgfSk6IENvbXBvbmVudFJlZjxUPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudFR5cGUpO1xuICAgIH1cbn1cblxuYWJzdHJhY3QgY2xhc3MgQmFzZUd1aUNvbXBvbmVudDxQLCBUIGV4dGVuZHMgQWdGcmFtZXdvcmtDb21wb25lbnQ8UD4+IHtcbiAgICBwcm90ZWN0ZWQgX3BhcmFtczogUDtcbiAgICBwcm90ZWN0ZWQgX2VHdWk6IEhUTUxFbGVtZW50O1xuICAgIHByb3RlY3RlZCBfY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8VD47XG4gICAgcHJvdGVjdGVkIF9hZ0F3YXJlQ29tcG9uZW50OiBUO1xuICAgIHByb3RlY3RlZCBfZnJhbWV3b3JrQ29tcG9uZW50SW5zdGFuY2U6IGFueTsgLy8gdGhlIHVzZXJzIGNvbXBvbmVudCAtIGZvciBhY2Nlc3NpbmcgbWV0aG9kcyB0aGV5IGNyZWF0ZVxuXG4gICAgcHJvdGVjdGVkIGluaXQocGFyYW1zOiBQKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3BhcmFtcyA9IHBhcmFtcztcblxuICAgICAgICB0aGlzLl9jb21wb25lbnRSZWYgPSB0aGlzLmNyZWF0ZUNvbXBvbmVudCgpO1xuICAgICAgICB0aGlzLl9hZ0F3YXJlQ29tcG9uZW50ID0gdGhpcy5fY29tcG9uZW50UmVmLmluc3RhbmNlO1xuICAgICAgICB0aGlzLl9mcmFtZXdvcmtDb21wb25lbnRJbnN0YW5jZSA9IHRoaXMuX2NvbXBvbmVudFJlZi5pbnN0YW5jZTtcbiAgICAgICAgdGhpcy5fZUd1aSA9IHRoaXMuX2NvbXBvbmVudFJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50O1xuICAgICAgICAvLyBBbmd1bGFyIGFwcGVuZHMgdGhlIGNvbXBvbmVudCB0byB0aGUgRE9NLCBzbyByZW1vdmUgaXRcbiAgICAgICAgX3JlbW92ZUZyb21QYXJlbnQodGhpcy5fZUd1aSk7XG5cbiAgICAgICAgdGhpcy5fYWdBd2FyZUNvbXBvbmVudC5hZ0luaXQodGhpcy5fcGFyYW1zKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0R3VpKCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VHdWk7XG4gICAgfVxuXG4gICAgLyoqIGBnZXRHdWkoKWAgcmV0dXJucyB0aGUgYG5nLWNvbXBvbmVudGAgZWxlbWVudC4gVGhpcyByZXR1cm5zIHRoZSBhY3R1YWwgcm9vdCBlbGVtZW50LiAqL1xuICAgIHB1YmxpYyBnZXRSb290RWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIGNvbnN0IGZpcnN0Q2hpbGQgPSB0aGlzLl9lR3VpLmZpcnN0Q2hpbGQ7XG4gICAgICAgIHJldHVybiBmaXJzdENoaWxkIGFzIEhUTUxFbGVtZW50O1xuICAgIH1cblxuICAgIHB1YmxpYyBkZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fZnJhbWV3b3JrQ29tcG9uZW50SW5zdGFuY2UgJiYgdHlwZW9mIHRoaXMuX2ZyYW1ld29ya0NvbXBvbmVudEluc3RhbmNlLmRlc3Ryb3kgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHRoaXMuX2ZyYW1ld29ya0NvbXBvbmVudEluc3RhbmNlLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fY29tcG9uZW50UmVmKSB7XG4gICAgICAgICAgICB0aGlzLl9jb21wb25lbnRSZWYuZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZyYW1ld29ya0NvbXBvbmVudEluc3RhbmNlKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9mcmFtZXdvcmtDb21wb25lbnRJbnN0YW5jZTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgY3JlYXRlQ29tcG9uZW50KCk6IENvbXBvbmVudFJlZjxUPjtcbn1cbiJdfQ==