UNPKG

@asymmetrik/ngx-leaflet-draw

Version:

Angular.io components for the Leaflet Draw plugin

137 lines 21.4 kB
import { Directive, EventEmitter, Input, Output } from '@angular/core'; import { Control, Draw, drawLocal } from 'leaflet'; import 'leaflet-draw'; import { LeafletDirectiveWrapper, LeafletUtil } from '@bluehalo/ngx-leaflet'; import { LeafletDrawUtil } from './leaflet-draw.util'; import * as i0 from "@angular/core"; import * as i1 from "@bluehalo/ngx-leaflet"; export class LeafletDrawDirective { constructor(leafletDirective, zone) { this.zone = zone; this.drawOptions = null; // Using 'any' here to avoid duplicating the DrawLocal interface with a bunch of optional properties this.drawLocal = null; // Configure callback function for the map this.drawReady = new EventEmitter(); // Draw Events this.onDrawCreated = new EventEmitter(); this.onDrawEdited = new EventEmitter(); this.onDrawDeleted = new EventEmitter(); this.onDrawStart = new EventEmitter(); this.onDrawStop = new EventEmitter(); this.onDrawVertex = new EventEmitter(); this.onDrawEditStart = new EventEmitter(); this.onDrawEditMove = new EventEmitter(); this.onDrawEditResize = new EventEmitter(); this.onDrawEditVertex = new EventEmitter(); this.onDrawEditStop = new EventEmitter(); this.onDrawDeleteStart = new EventEmitter(); this.onDrawDeleteStop = new EventEmitter(); this.onDrawToolbarOpened = new EventEmitter(); this.onDrawToolbarClosed = new EventEmitter(); this.onDrawMarkerContext = new EventEmitter(); this.leafletDirective = new LeafletDirectiveWrapper(leafletDirective); } ngOnInit() { this.leafletDirective.init(); // Configure localization options if (null != this.drawLocal) { LeafletDrawUtil.deepLiteralCopy(drawLocal, this.drawLocal); } // Create the control this.drawControl = new Control.Draw(this.drawOptions); // Add the control to the map this.leafletDirective.getMap().addControl(this.drawControl); // Register the main handler for events coming from the draw plugin const map = this.leafletDirective.getMap(); // add draw event pass throughs map.on(Draw.Event.CREATED, (e) => LeafletUtil.handleEvent(this.zone, this.onDrawCreated, e)); map.on(Draw.Event.EDITED, (e) => LeafletUtil.handleEvent(this.zone, this.onDrawEdited, e)); map.on(Draw.Event.DELETED, (e) => LeafletUtil.handleEvent(this.zone, this.onDrawDeleted, e)); map.on(Draw.Event.DRAWSTART, (e) => LeafletUtil.handleEvent(this.zone, this.onDrawStart, e)); map.on(Draw.Event.DRAWSTOP, (e) => LeafletUtil.handleEvent(this.zone, this.onDrawStop, e)); map.on(Draw.Event.EDITSTART, (e) => LeafletUtil.handleEvent(this.zone, this.onDrawEditStart, e)); map.on(Draw.Event.EDITMOVE, (e) => LeafletUtil.handleEvent(this.zone, this.onDrawEditMove, e)); map.on(Draw.Event.EDITRESIZE, (e) => LeafletUtil.handleEvent(this.zone, this.onDrawEditResize, e)); map.on(Draw.Event.EDITVERTEX, (e) => LeafletUtil.handleEvent(this.zone, this.onDrawEditVertex, e)); map.on(Draw.Event.EDITSTOP, (e) => LeafletUtil.handleEvent(this.zone, this.onDrawEditStop, e)); map.on(Draw.Event.DELETESTART, (e) => LeafletUtil.handleEvent(this.zone, this.onDrawDeleteStart, e)); map.on(Draw.Event.DELETESTOP, (e) => LeafletUtil.handleEvent(this.zone, this.onDrawDeleteStop, e)); map.on(Draw.Event.TOOLBAROPENED, (e) => LeafletUtil.handleEvent(this.zone, this.onDrawToolbarOpened, e)); map.on(Draw.Event.TOOLBARCLOSED, (e) => LeafletUtil.handleEvent(this.zone, this.onDrawToolbarClosed, e)); // Notify others that the draw control has been created this.drawReady.emit(this.drawControl); } ngOnDestroy() { this.leafletDirective.getMap().removeControl(this.drawControl); } getDrawControl() { return this.drawControl; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: LeafletDrawDirective, deps: [{ token: i1.LeafletDirective }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.1", type: LeafletDrawDirective, selector: "[leafletDraw]", inputs: { drawOptions: ["leafletDrawOptions", "drawOptions"], drawLocal: ["leafletDrawLocal", "drawLocal"] }, outputs: { drawReady: "leafletDrawReady", onDrawCreated: "leafletDrawCreated", onDrawEdited: "leafletDrawEdited", onDrawDeleted: "leafletDrawDeleted", onDrawStart: "leafletDrawStart", onDrawStop: "leafletDrawStop", onDrawVertex: "leafletDrawVertex", onDrawEditStart: "leafletDrawEditStart", onDrawEditMove: "leafletDrawEditMove", onDrawEditResize: "leafletDrawEditResize", onDrawEditVertex: "leafletDrawEditVertex", onDrawEditStop: "leafletDrawEditStop", onDrawDeleteStart: "leafletDrawDeleteStart", onDrawDeleteStop: "leafletDrawDeleteStop", onDrawToolbarOpened: "leafletDrawToolbarOpened", onDrawToolbarClosed: "leafletDrawToolbarClosed", onDrawMarkerContext: "leafletDrawMarkerContext" }, ngImport: i0 }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: LeafletDrawDirective, decorators: [{ type: Directive, args: [{ selector: '[leafletDraw]' }] }], ctorParameters: () => [{ type: i1.LeafletDirective }, { type: i0.NgZone }], propDecorators: { drawOptions: [{ type: Input, args: ['leafletDrawOptions'] }], drawLocal: [{ type: Input, args: ['leafletDrawLocal'] }], drawReady: [{ type: Output, args: ['leafletDrawReady'] }], onDrawCreated: [{ type: Output, args: ['leafletDrawCreated'] }], onDrawEdited: [{ type: Output, args: ['leafletDrawEdited'] }], onDrawDeleted: [{ type: Output, args: ['leafletDrawDeleted'] }], onDrawStart: [{ type: Output, args: ['leafletDrawStart'] }], onDrawStop: [{ type: Output, args: ['leafletDrawStop'] }], onDrawVertex: [{ type: Output, args: ['leafletDrawVertex'] }], onDrawEditStart: [{ type: Output, args: ['leafletDrawEditStart'] }], onDrawEditMove: [{ type: Output, args: ['leafletDrawEditMove'] }], onDrawEditResize: [{ type: Output, args: ['leafletDrawEditResize'] }], onDrawEditVertex: [{ type: Output, args: ['leafletDrawEditVertex'] }], onDrawEditStop: [{ type: Output, args: ['leafletDrawEditStop'] }], onDrawDeleteStart: [{ type: Output, args: ['leafletDrawDeleteStart'] }], onDrawDeleteStop: [{ type: Output, args: ['leafletDrawDeleteStop'] }], onDrawToolbarOpened: [{ type: Output, args: ['leafletDrawToolbarOpened'] }], onDrawToolbarClosed: [{ type: Output, args: ['leafletDrawToolbarClosed'] }], onDrawMarkerContext: [{ type: Output, args: ['leafletDrawMarkerContext'] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVhZmxldC1kcmF3LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1sZWFmbGV0LWRyYXcvc3JjL2xpYi9jb3JlL2xlYWZsZXQtZHJhdy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFrQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkYsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQWMsU0FBUyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQy9ELE9BQU8sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFBb0IsdUJBQXVCLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFL0YsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFLdEQsTUFBTSxPQUFPLG9CQUFvQjtJQWlDaEMsWUFBWSxnQkFBa0MsRUFBVSxJQUFZO1FBQVosU0FBSSxHQUFKLElBQUksQ0FBUTtRQTFCdkMsZ0JBQVcsR0FBbUMsSUFBSSxDQUFDO1FBRWhGLG9HQUFvRztRQUN6RSxjQUFTLEdBQVEsSUFBSSxDQUFDO1FBRWpELDBDQUEwQztRQUNkLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBZ0IsQ0FBQztRQUV6RSxjQUFjO1FBQ2dCLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQXNCLENBQUM7UUFDeEQsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBcUIsQ0FBQztRQUNwRCxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFzQixDQUFDO1FBQ3pELGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQXdCLENBQUM7UUFDeEQsZUFBVSxHQUFHLElBQUksWUFBWSxFQUF1QixDQUFDO1FBQ25ELGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQXlCLENBQUM7UUFDdEQsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBd0IsQ0FBQztRQUM1RCxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUF1QixDQUFDO1FBQ3ZELHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUF5QixDQUFDO1FBQzdELHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUF5QixDQUFDO1FBQy9ELG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQXVCLENBQUM7UUFDdEQsc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQTBCLENBQUM7UUFDaEUscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQXlCLENBQUM7UUFDMUQsd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQTRCLENBQUM7UUFDbkUsd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQTRCLENBQUM7UUFDbkUsd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQTRCLENBQUM7UUFHdEcsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksdUJBQXVCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsUUFBUTtRQUNQLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUU3QixpQ0FBaUM7UUFDakMsSUFBRyxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzNCLGVBQWUsQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM1RCxDQUFDO1FBRUQscUJBQXFCO1FBQ3JCLElBQUksQ0FBQyxXQUFXLEdBQUksSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUV2RCw2QkFBNkI7UUFDN0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFNUQsbUVBQW1FO1FBQ25FLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUUzQywrQkFBK0I7UUFDL0IsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsRyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBb0IsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5RyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBcUIsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqSCxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBdUIsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuSCxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBc0IsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoSCxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBdUIsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxF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MUMsTUFBTTt1QkFBQyxvQkFBb0I7Z0JBQ0MsWUFBWTtzQkFBeEMsTUFBTTt1QkFBQyxtQkFBbUI7Z0JBQ0csYUFBYTtzQkFBMUMsTUFBTTt1QkFBQyxvQkFBb0I7Z0JBQ0EsV0FBVztzQkFBdEMsTUFBTTt1QkFBQyxrQkFBa0I7Z0JBQ0MsVUFBVTtzQkFBcEMsTUFBTTt1QkFBQyxpQkFBaUI7Z0JBQ0ksWUFBWTtzQkFBeEMsTUFBTTt1QkFBQyxtQkFBbUI7Z0JBQ0ssZUFBZTtzQkFBOUMsTUFBTTt1QkFBQyxzQkFBc0I7Z0JBQ0MsY0FBYztzQkFBNUMsTUFBTTt1QkFBQyxxQkFBcUI7Z0JBQ0ksZ0JBQWdCO3NCQUFoRCxNQUFNO3VCQUFDLHVCQUF1QjtnQkFDRSxnQkFBZ0I7c0JBQWhELE1BQU07dUJBQUMsdUJBQXVCO2dCQUNBLGNBQWM7c0JBQTVDLE1BQU07dUJBQUMscUJBQXFCO2dCQUNLLGlCQUFpQjtzQkFBbEQsTUFBTTt1QkFBQyx3QkFBd0I7Z0JBQ0MsZ0JBQWdCO3NCQUFoRCxNQUFNO3VCQUFDLHVCQUF1QjtnQkFDSyxtQkFBbUI7c0JBQXRELE1BQU07dUJBQUMsMEJBQTBCO2dCQUNFLG1CQUFtQjtzQkFBdEQsTUFBTTt1QkFBQywwQkFBMEI7Z0JBQ0UsbUJBQW1CO3NCQUF0RCxNQUFNO3VCQUFDLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgTmdab25lLCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDb250cm9sLCBEcmF3LCBEcmF3RXZlbnRzLCBkcmF3TG9jYWwgfSBmcm9tICdsZWFmbGV0JztcbmltcG9ydCAnbGVhZmxldC1kcmF3JztcblxuaW1wb3J0IHsgTGVhZmxldERpcmVjdGl2ZSwgTGVhZmxldERpcmVjdGl2ZVdyYXBwZXIsIExlYWZsZXRVdGlsIH0gZnJvbSAnQGJsdWVoYWxvL25neC1sZWFmbGV0JztcblxuaW1wb3J0IHsgTGVhZmxldERyYXdVdGlsIH0gZnJvbSAnLi9sZWFmbGV0LWRyYXcudXRpbCc7XG5cbkBEaXJlY3RpdmUoe1xuXHRzZWxlY3RvcjogJ1tsZWFmbGV0RHJhd10nXG59KVxuZXhwb3J0IGNsYXNzIExlYWZsZXREcmF3RGlyZWN0aXZlXG5cdGltcGxlbWVudHMgT25Jbml0IHtcblxuXHRsZWFmbGV0RGlyZWN0aXZlOiBMZWFmbGV0RGlyZWN0aXZlV3JhcHBlcjtcblxuXHRkcmF3Q29udHJvbDogQ29udHJvbC5EcmF3O1xuXG5cdEBJbnB1dCgnbGVhZmxldERyYXdPcHRpb25zJykgZHJhd09wdGlvbnM6IENvbnRyb2wuRHJhd0NvbnN0cnVjdG9yT3B0aW9ucyA9IG51bGw7XG5cblx0Ly8gVXNpbmcgJ2FueScgaGVyZSB0byBhdm9pZCBkdXBsaWNhdGluZyB0aGUgRHJhd0xvY2FsIGludGVyZmFjZSB3aXRoIGEgYnVuY2ggb2Ygb3B0aW9uYWwgcHJvcGVydGllc1xuXHRASW5wdXQoJ2xlYWZsZXREcmF3TG9jYWwnKSBkcmF3TG9jYWw6IGFueSA9IG51bGw7XG5cblx0Ly8gQ29uZmlndXJlIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciB0aGUgbWFwXG5cdEBPdXRwdXQoJ2xlYWZsZXREcmF3UmVhZHknKSBkcmF3UmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyPENvbnRyb2wuRHJhdz4oKTtcblxuXHQvLyBEcmF3IEV2ZW50c1xuXHRAT3V0cHV0KCdsZWFmbGV0RHJhd0NyZWF0ZWQnKSBvbkRyYXdDcmVhdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxEcmF3RXZlbnRzLkNyZWF0ZWQ+KCk7XG5cdEBPdXRwdXQoJ2xlYWZsZXREcmF3RWRpdGVkJykgb25EcmF3RWRpdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxEcmF3RXZlbnRzLkVkaXRlZD4oKTtcblx0QE91dHB1dCgnbGVhZmxldERyYXdEZWxldGVkJykgb25EcmF3RGVsZXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RHJhd0V2ZW50cy5EZWxldGVkPigpO1xuXHRAT3V0cHV0KCdsZWFmbGV0RHJhd1N0YXJ0Jykgb25EcmF3U3RhcnQgPSBuZXcgRXZlbnRFbWl0dGVyPERyYXdFdmVudHMuRHJhd1N0YXJ0PigpO1xuXHRAT3V0cHV0KCdsZWFmbGV0RHJhd1N0b3AnKSBvbkRyYXdTdG9wID0gbmV3IEV2ZW50RW1pdHRlcjxEcmF3RXZlbnRzLkRyYXdTdG9wPigpO1xuXHRAT3V0cHV0KCdsZWFmbGV0RHJhd1ZlcnRleCcpIG9uRHJhd1ZlcnRleCA9IG5ldyBFdmVudEVtaXR0ZXI8RHJhd0V2ZW50cy5EcmF3VmVydGV4PigpO1xuXHRAT3V0cHV0KCdsZWFmbGV0RHJhd0VkaXRTdGFydCcpIG9uRHJhd0VkaXRTdGFydCA9IG5ldyBFdmVudEVtaXR0ZXI8RHJhd0V2ZW50cy5FZGl0U3RhcnQ+KCk7XG5cdEBPdXRwdXQoJ2xlYWZsZXREcmF3RWRpdE1vdmUnKSBvbkRyYXdFZGl0TW92ZSA9IG5ldyBFdmVudEVtaXR0ZXI8RHJhd0V2ZW50cy5FZGl0TW92ZT4oKTtcblx0QE91dHB1dCgnbGVhZmxldERyYXdFZGl0UmVzaXplJykgb25EcmF3RWRpdFJlc2l6ZSA9IG5ldyBFdmVudEVtaXR0ZXI8RHJhd0V2ZW50cy5FZGl0UmVzaXplPigpO1xuXHRAT3V0cHV0KCdsZWFmbGV0RHJhd0VkaXRWZXJ0ZXgnKSBvbkRyYXdFZGl0VmVydGV4ID0gbmV3IEV2ZW50RW1pdHRlcjxEcmF3RXZlbnRzLkVkaXRWZXJ0ZXg+KCk7XG5cdEBPdXRwdXQoJ2xlYWZsZXREcmF3RWRpdFN0b3AnKSBvbkRyYXdFZGl0U3RvcCA9IG5ldyBFdmVudEVtaXR0ZXI8RHJhd0V2ZW50cy5FZGl0U3RvcD4oKTtcblx0QE91dHB1dCgnbGVhZmxldERyYXdEZWxldGVTdGFydCcpIG9uRHJhd0RlbGV0ZVN0YXJ0ID0gbmV3IEV2ZW50RW1pdHRlcjxEcmF3RXZlbnRzLkRlbGV0ZVN0YXJ0PigpO1xuXHRAT3V0cHV0KCdsZWFmbGV0RHJhd0RlbGV0ZVN0b3AnKSBvbkRyYXdEZWxldGVTdG9wID0gbmV3IEV2ZW50RW1pdHRlcjxEcmF3RXZlbnRzLkRlbGV0ZVN0b3A+KCk7XG5cdEBPdXRwdXQoJ2xlYWZsZXREcmF3VG9vbGJhck9wZW5lZCcpIG9uRHJhd1Rvb2xiYXJPcGVuZWQgPSBuZXcgRXZlbnRFbWl0dGVyPERyYXdFdmVudHMuVG9vbGJhck9wZW5lZD4oKTtcblx0QE91dHB1dCgnbGVhZmxldERyYXdUb29sYmFyQ2xvc2VkJykgb25EcmF3VG9vbGJhckNsb3NlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RHJhd0V2ZW50cy5Ub29sYmFyQ2xvc2VkPigpO1xuXHRAT3V0cHV0KCdsZWFmbGV0RHJhd01hcmtlckNvbnRleHQnKSBvbkRyYXdNYXJrZXJDb250ZXh0ID0gbmV3IEV2ZW50RW1pdHRlcjxEcmF3RXZlbnRzLk1hcmtlckNvbnRleHQ+KCk7XG5cblx0Y29uc3RydWN0b3IobGVhZmxldERpcmVjdGl2ZTogTGVhZmxldERpcmVjdGl2ZSwgcHJpdmF0ZSB6b25lOiBOZ1pvbmUpIHtcblx0XHR0aGlzLmxlYWZsZXREaXJlY3RpdmUgPSBuZXcgTGVhZmxldERpcmVjdGl2ZVdyYXBwZXIobGVhZmxldERpcmVjdGl2ZSk7XG5cdH1cblxuXHRuZ09uSW5pdCgpIHtcblx0XHR0aGlzLmxlYWZsZXREaXJlY3RpdmUuaW5pdCgpO1xuXG5cdFx0Ly8gQ29uZmlndXJlIGxvY2FsaXphdGlvbiBvcHRpb25zXG5cdFx0aWYobnVsbCAhPSB0aGlzLmRyYXdMb2NhbCkge1xuXHRcdFx0TGVhZmxldERyYXdVdGlsLmRlZXBMaXRlcmFsQ29weShkcmF3TG9jYWwsIHRoaXMuZHJhd0xvY2FsKTtcblx0XHR9XG5cblx0XHQvLyBDcmVhdGUgdGhlIGNvbnRyb2xcblx0XHR0aGlzLmRyYXdDb250cm9sID0gIG5ldyBDb250cm9sLkRyYXcodGhpcy5kcmF3T3B0aW9ucyk7XG5cblx0XHQvLyBBZGQgdGhlIGNvbnRyb2wgdG8gdGhlIG1hcFxuXHRcdHRoaXMubGVhZmxldERpcmVjdGl2ZS5nZXRNYXAoKS5hZGRDb250cm9sKHRoaXMuZHJhd0NvbnRyb2wpO1xuXG5cdFx0Ly8gUmVnaXN0ZXIgdGhlIG1haW4gaGFuZGxlciBmb3IgZXZlbnRzIGNvbWluZyBmcm9tIHRoZSBkcmF3IHBsdWdpblxuXHRcdGNvbnN0IG1hcCA9IHRoaXMubGVhZmxldERpcmVjdGl2ZS5nZXRNYXAoKTtcblxuXHRcdC8vIGFkZCBkcmF3IGV2ZW50IHBhc3MgdGhyb3VnaHNcblx0XHRtYXAub24oRHJhdy5FdmVudC5DUkVBVEVELCAoZTogYW55KSA9PiBMZWFmbGV0VXRpbC5oYW5kbGVFdmVudCh0aGlzLnpvbmUsIHRoaXMub25EcmF3Q3JlYXRlZCwgZSkpO1xuXHRcdG1hcC5vbihEcmF3LkV2ZW50LkVESVRFRCwgKGU6IERyYXdFdmVudHMuRWRpdGVkKSA9PiBMZWFmbGV0VXRpbC5oYW5kbGVFdmVudCh0aGlzLnpvbmUsIHRoaXMub25EcmF3RWRpdGVkLCBlKSk7XG5cdFx0bWFwLm9uKERyYXcuRXZlbnQuREVMRVRFRCwgKGU6IERyYXdFdmVudHMuRGVsZXRlZCkgPT4gTGVhZmxldFV0aWwuaGFuZGxlRXZlbnQodGhpcy56b25lLCB0aGlzLm9uRHJhd0RlbGV0ZWQsIGUpKTtcblx0XHRtYXAub24oRHJhdy5FdmVudC5EUkFXU1RBUlQsIChlOiBEcmF3RXZlbnRzLkRyYXdTdGFydCkgPT4gTGVhZmxldFV0aWwuaGFuZGxlRXZlbnQodGhpcy56b25lLCB0aGlzLm9uRHJhd1N0YXJ0LCBlKSk7XG5cdFx0bWFwLm9uKERyYXcuRXZlbnQuRFJBV1NUT1AsIChlOiBEcmF3RXZlbnRzLkRyYXdTdG9wKSA9PiBMZWFmbGV0VXRpbC5oYW5kbGVFdmVudCh0aGlzLnpvbmUsIHRoaXMub25EcmF3U3RvcCwgZSkpO1xuXHRcdG1hcC5vbihEcmF3LkV2ZW50LkVESVRTVEFSVCwgKGU6IERyYXdFdmVudHMuRWRpdFN0YXJ0KSA9PiBMZWFmbGV0VXRpbC5oYW5kbGVFdmVudCh0aGlzLnpvbmUsIHRoaXMub25EcmF3RWRpdFN0YXJ0LCBlKSk7XG5cdFx0bWFwLm9uKERyYXcuRXZlbnQuRURJVE1PVkUsIChlOiBEcmF3RXZlbnRzLkVkaXRNb3ZlKSA9PiBMZWFmbGV0VXRpbC5oYW5kbGVFdmVudCh0aGlzLnpvbmUsIHRoaXMub25EcmF3RWRpdE1vdmUsIGUpKTtcblx0XHRtYXAub24oRHJhdy5FdmVudC5FRElUUkVTSVpFLCAoZTogRHJhd0V2ZW50cy5FZGl0UmVzaXplKSA9PiBMZWFmbGV0VXRpbC5oYW5kbGVFdmVudCh0aGlzLnpvbmUsIHRoaXMub25EcmF3RWRpdFJlc2l6ZSwgZSkpO1xuXHRcdG1hcC5vbihEcmF3LkV2ZW50LkVESVRWRVJURVgsIChlOiBEcmF3RXZlbnRzLkVkaXRWZXJ0ZXgpID0+IExlYWZsZXRVdGlsLmhhbmRsZUV2ZW50KHRoaXMuem9uZSwgdGhpcy5vbkRyYXdFZGl0VmVydGV4LCBlKSk7XG5cdFx0bWFwLm9uKERyYXcuRXZlbnQuRURJVFNUT1AsIChlOiBEcmF3RXZlbnRzLkVkaXRTdG9wKSA9PiBMZWFmbGV0VXRpbC5oYW5kbGVFdmVudCh0aGlzLnpvbmUsIHRoaXMub25EcmF3RWRpdFN0b3AsIGUpKTtcblx0XHRtYXAub24oRHJhdy5FdmVudC5ERUxFVEVTVEFSVCwgKGU6IERyYXdFdmVudHMuRGVsZXRlU3RhcnQpID0+IExlYWZsZXRVdGlsLmhhbmRsZUV2ZW50KHRoaXMuem9uZSwgdGhpcy5vbkRyYXdEZWxldGVTdGFydCwgZSkpO1xuXHRcdG1hcC5vbihEcmF3LkV2ZW50LkRFTEVURVNUT1AsIChlOiBEcmF3RXZlbnRzLkRlbGV0ZVN0b3ApID0+IExlYWZsZXRVdGlsLmhhbmRsZUV2ZW50KHRoaXMuem9uZSwgdGhpcy5vbkRyYXdEZWxldGVTdG9wLCBlKSk7XG5cdFx0bWFwLm9uKERyYXcuRXZlbnQuVE9PTEJBUk9QRU5FRCwgKGU6IERyYXdFdmVudHMuVG9vbGJhck9wZW5lZCkgPT4gTGVhZmxldFV0aWwuaGFuZGxlRXZlbnQodGhpcy56b25lLCB0aGlzLm9uRHJhd1Rvb2xiYXJPcGVuZWQsIGUpKTtcblx0XHRtYXAub24oRHJhdy5FdmVudC5UT09MQkFSQ0xPU0VELCAoZTogRHJhd0V2ZW50cy5Ub29sYmFyQ2xvc2VkKSA9PiBMZWFmbGV0VXRpbC5oYW5kbGVFdmVudCh0aGlzLnpvbmUsIHRoaXMub25EcmF3VG9vbGJhckNsb3NlZCwgZSkpO1xuXG5cdFx0Ly8gTm90aWZ5IG90aGVycyB0aGF0IHRoZSBkcmF3IGNvbnRyb2wgaGFzIGJlZW4gY3JlYXRlZFxuXHRcdHRoaXMuZHJhd1JlYWR5LmVtaXQodGhpcy5kcmF3Q29udHJvbCk7XG5cdH1cblxuXHRuZ09uRGVzdHJveSgpIHtcblx0XHR0aGlzLmxlYWZsZXREaXJlY3RpdmUuZ2V0TWFwKCkucmVtb3ZlQ29udHJvbCh0aGlzLmRyYXdDb250cm9sKTtcblx0fVxuXG5cdHB1YmxpYyBnZXREcmF3Q29udHJvbCgpIHtcblx0XHRyZXR1cm4gdGhpcy5kcmF3Q29udHJvbDtcblx0fVxuXG59XG4iXX0=