@asymmetrik/ngx-leaflet-draw
Version:
Angular.io components for the Leaflet Draw plugin
137 lines • 21.4 kB
JavaScript
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=