UNPKG

angular-cesium

Version:
61 lines 8.46 kB
import { publish } from 'rxjs/operators'; import { CesiumService } from '../cesium/cesium.service'; import { CesiumEvent } from './consts/cesium-event.enum'; import { Injectable } from '@angular/core'; import { CesiumPureEventObserver } from './event-observers/cesium-pure-event-observer'; import { CesiumLongPressObserver } from './event-observers/cesium-long-press-observer'; export class CesiumEventBuilder { constructor(cesiumService) { this.cesiumService = cesiumService; this.cesiumEventsObservables = new Map(); } static getEventFullName(event, modifier) { if (modifier) { return `${event}_${modifier}`; } else { return event.toString(); } } init() { this.eventsHandler = this.cesiumService.getViewer().screenSpaceEventHandler; } get(event, modifier) { const eventName = CesiumEventBuilder.getEventFullName(event, modifier); if (this.cesiumEventsObservables.has(eventName)) { return this.cesiumEventsObservables.get(eventName); } else { const eventObserver = this.createCesiumEventObservable(event, modifier); this.cesiumEventsObservables.set(eventName, eventObserver); return eventObserver; } } createCesiumEventObservable(event, modifier) { let cesiumEventObservable; if (CesiumEventBuilder.longPressEvents.has(event)) { cesiumEventObservable = this.createSpecialCesiumEventObservable(event, modifier); } else { cesiumEventObservable = publish()(new CesiumPureEventObserver(event, modifier).init(this.eventsHandler)); } cesiumEventObservable.connect(); return cesiumEventObservable; } createSpecialCesiumEventObservable(event, modifier) { // could support more events if needed return new CesiumLongPressObserver(event, modifier, this).init(); } } CesiumEventBuilder.longPressEvents = new Set([ CesiumEvent.LONG_LEFT_PRESS, CesiumEvent.LONG_RIGHT_PRESS, CesiumEvent.LONG_MIDDLE_PRESS ]); CesiumEventBuilder.decorators = [ { type: Injectable } ]; CesiumEventBuilder.ctorParameters = () => [ { type: CesiumService } ]; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VzaXVtLWV2ZW50LWJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNlc2l1bS9zcmMvbGliL2FuZ3VsYXItY2VzaXVtL3NlcnZpY2VzL21hcC1ldmVudHMtbWFuYW5nZXIvY2VzaXVtLWV2ZW50LWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN2RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUl2RixNQUFNLE9BQU8sa0JBQWtCO0lBRTdCLFlBQW9CLGFBQTRCO1FBQTVCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBVXhDLDRCQUF1QixHQUFHLElBQUksR0FBRyxFQUFzQyxDQUFDO0lBVGhGLENBQUM7SUFXTSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsS0FBa0IsRUFBRSxRQUE4QjtRQUMvRSxJQUFJLFFBQVEsRUFBRTtZQUNaLE9BQU8sR0FBRyxLQUFLLElBQUksUUFBUSxFQUFFLENBQUM7U0FDL0I7YUFBTTtZQUNMLE9BQU8sS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztJQUVELElBQUk7UUFDRixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLENBQUMsdUJBQXVCLENBQUM7SUFDOUUsQ0FBQztJQUVELEdBQUcsQ0FBQyxLQUFrQixFQUFFLFFBQThCO1FBQ3BELE1BQU0sU0FBUyxHQUFHLGtCQUFrQixDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN2RSxJQUFJLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDL0MsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ3BEO2FBQU07WUFDTCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ3hFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQzNELE9BQU8sYUFBYSxDQUFDO1NBQ3RCO0lBQ0gsQ0FBQztJQUVPLDJCQUEyQixDQUFDLEtBQWtCLEVBQUUsUUFBOEI7UUFDcEYsSUFBSSxxQkFBaUQsQ0FBQztRQUN0RCxJQUFJLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDakQscUJBQXFCLEdBQUcsSUFBSSxDQUFDLGtDQUFrQyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztTQUNsRjthQUFNO1lBQ0wscUJBQXFCLEdBQUcsT0FBTyxFQUFFLENBQUMsSUFBSSx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1NBQzFHO1FBQ0QscUJBQXFCLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDaEMsT0FBTyxxQkFBcUIsQ0FBQztJQUMvQixDQUFDO0lBRU8sa0NBQWtDLENBQUMsS0FBa0IsRUFBRSxRQUE2QjtRQUMxRixzQ0FBc0M7UUFDdEMsT0FBTyxJQUFJLHVCQUF1QixDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbkUsQ0FBQzs7QUE5Q2Esa0NBQWUsR0FBcUIsSUFBSSxHQUFHLENBQUM7SUFDeEQsV0FBVyxDQUFDLGVBQWU7SUFDM0IsV0FBVyxDQUFDLGdCQUFnQjtJQUM1QixXQUFXLENBQUMsaUJBQWlCO0NBQzlCLENBQUMsQ0FBQzs7WUFWSixVQUFVOzs7WUFSRixhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHVibGlzaCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQ2VzaXVtU2VydmljZSB9IGZyb20gJy4uL2Nlc2l1bS9jZXNpdW0uc2VydmljZSc7XHJcbmltcG9ydCB7IENlc2l1bUV2ZW50IH0gZnJvbSAnLi9jb25zdHMvY2VzaXVtLWV2ZW50LmVudW0nO1xyXG5pbXBvcnQgeyBDZXNpdW1FdmVudE1vZGlmaWVyIH0gZnJvbSAnLi9jb25zdHMvY2VzaXVtLWV2ZW50LW1vZGlmaWVyLmVudW0nO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENlc2l1bVB1cmVFdmVudE9ic2VydmVyIH0gZnJvbSAnLi9ldmVudC1vYnNlcnZlcnMvY2VzaXVtLXB1cmUtZXZlbnQtb2JzZXJ2ZXInO1xyXG5pbXBvcnQgeyBDZXNpdW1Mb25nUHJlc3NPYnNlcnZlciB9IGZyb20gJy4vZXZlbnQtb2JzZXJ2ZXJzL2Nlc2l1bS1sb25nLXByZXNzLW9ic2VydmVyJztcclxuaW1wb3J0IHsgQ29ubmVjdGFibGVPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBDZXNpdW1FdmVudEJ1aWxkZXIge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNlc2l1bVNlcnZpY2U6IENlc2l1bVNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgbG9uZ1ByZXNzRXZlbnRzOiBTZXQ8Q2VzaXVtRXZlbnQ+ID0gbmV3IFNldChbXHJcbiAgICBDZXNpdW1FdmVudC5MT05HX0xFRlRfUFJFU1MsXHJcbiAgICBDZXNpdW1FdmVudC5MT05HX1JJR0hUX1BSRVNTLFxyXG4gICAgQ2VzaXVtRXZlbnQuTE9OR19NSURETEVfUFJFU1NcclxuICBdKTtcclxuXHJcbiAgcHJpdmF0ZSBldmVudHNIYW5kbGVyOiBhbnk7XHJcbiAgcHJpdmF0ZSBjZXNpdW1FdmVudHNPYnNlcnZhYmxlcyA9IG5ldyBNYXA8c3RyaW5nLCBDb25uZWN0YWJsZU9ic2VydmFibGU8YW55Pj4oKTtcclxuXHJcbiAgcHVibGljIHN0YXRpYyBnZXRFdmVudEZ1bGxOYW1lKGV2ZW50OiBDZXNpdW1FdmVudCwgbW9kaWZpZXI/OiBDZXNpdW1FdmVudE1vZGlmaWVyKTogc3RyaW5nIHtcclxuICAgIGlmIChtb2RpZmllcikge1xyXG4gICAgICByZXR1cm4gYCR7ZXZlbnR9XyR7bW9kaWZpZXJ9YDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBldmVudC50b1N0cmluZygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5pdCgpIHtcclxuICAgIHRoaXMuZXZlbnRzSGFuZGxlciA9IHRoaXMuY2VzaXVtU2VydmljZS5nZXRWaWV3ZXIoKS5zY3JlZW5TcGFjZUV2ZW50SGFuZGxlcjtcclxuICB9XHJcblxyXG4gIGdldChldmVudDogQ2VzaXVtRXZlbnQsIG1vZGlmaWVyPzogQ2VzaXVtRXZlbnRNb2RpZmllcik6IENvbm5lY3RhYmxlT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IGV2ZW50TmFtZSA9IENlc2l1bUV2ZW50QnVpbGRlci5nZXRFdmVudEZ1bGxOYW1lKGV2ZW50LCBtb2RpZmllcik7XHJcbiAgICBpZiAodGhpcy5jZXNpdW1FdmVudHNPYnNlcnZhYmxlcy5oYXMoZXZlbnROYW1lKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5jZXNpdW1FdmVudHNPYnNlcnZhYmxlcy5nZXQoZXZlbnROYW1lKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGV2ZW50T2JzZXJ2ZXIgPSB0aGlzLmNyZWF0ZUNlc2l1bUV2ZW50T2JzZXJ2YWJsZShldmVudCwgbW9kaWZpZXIpO1xyXG4gICAgICB0aGlzLmNlc2l1bUV2ZW50c09ic2VydmFibGVzLnNldChldmVudE5hbWUsIGV2ZW50T2JzZXJ2ZXIpO1xyXG4gICAgICByZXR1cm4gZXZlbnRPYnNlcnZlcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlQ2VzaXVtRXZlbnRPYnNlcnZhYmxlKGV2ZW50OiBDZXNpdW1FdmVudCwgbW9kaWZpZXI/OiBDZXNpdW1FdmVudE1vZGlmaWVyKTogQ29ubmVjdGFibGVPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgbGV0IGNlc2l1bUV2ZW50T2JzZXJ2YWJsZTogQ29ubmVjdGFibGVPYnNlcnZhYmxlPGFueT47XHJcbiAgICBpZiAoQ2VzaXVtRXZlbnRCdWlsZGVyLmxvbmdQcmVzc0V2ZW50cy5oYXMoZXZlbnQpKSB7XHJcbiAgICAgIGNlc2l1bUV2ZW50T2JzZXJ2YWJsZSA9IHRoaXMuY3JlYXRlU3BlY2lhbENlc2l1bUV2ZW50T2JzZXJ2YWJsZShldmVudCwgbW9kaWZpZXIpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY2VzaXVtRXZlbnRPYnNlcnZhYmxlID0gcHVibGlzaCgpKG5ldyBDZXNpdW1QdXJlRXZlbnRPYnNlcnZlcihldmVudCwgbW9kaWZpZXIpLmluaXQodGhpcy5ldmVudHNIYW5kbGVyKSk7XHJcbiAgICB9XHJcbiAgICBjZXNpdW1FdmVudE9ic2VydmFibGUuY29ubmVjdCgpO1xyXG4gICAgcmV0dXJuIGNlc2l1bUV2ZW50T2JzZXJ2YWJsZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlU3BlY2lhbENlc2l1bUV2ZW50T2JzZXJ2YWJsZShldmVudDogQ2VzaXVtRXZlbnQsIG1vZGlmaWVyOiBDZXNpdW1FdmVudE1vZGlmaWVyKTogQ29ubmVjdGFibGVPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgLy8gY291bGQgc3VwcG9ydCBtb3JlIGV2ZW50cyBpZiBuZWVkZWRcclxuICAgIHJldHVybiBuZXcgQ2VzaXVtTG9uZ1ByZXNzT2JzZXJ2ZXIoZXZlbnQsIG1vZGlmaWVyLCB0aGlzKS5pbml0KCk7XHJcbiAgfVxyXG59XHJcblxyXG4iXX0=