iceye-angular-cesium-fork
Version:
Angular library for working with Cesium.
61 lines • 8.23 kB
JavaScript
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VzaXVtLWV2ZW50LWJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNlc2l1bS9zcmMvbGliL2FuZ3VsYXItY2VzaXVtL3NlcnZpY2VzL21hcC1ldmVudHMtbWFuYW5nZXIvY2VzaXVtLWV2ZW50LWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN2RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUl2RixNQUFNLE9BQU8sa0JBQWtCO0lBRTdCLFlBQW9CLGFBQTRCO1FBQTVCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBVXhDLDRCQUF1QixHQUFHLElBQUksR0FBRyxFQUFzQyxDQUFDO0lBVGhGLENBQUM7SUFXTSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsS0FBa0IsRUFBRSxRQUE4QjtRQUMvRSxJQUFJLFFBQVEsRUFBRTtZQUNaLE9BQU8sR0FBRyxLQUFLLElBQUksUUFBUSxFQUFFLENBQUM7U0FDL0I7YUFBTTtZQUNMLE9BQU8sS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztJQUVELElBQUk7UUFDRixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLENBQUMsdUJBQXVCLENBQUM7SUFDOUUsQ0FBQztJQUVELEdBQUcsQ0FBQyxLQUFrQixFQUFFLFFBQThCO1FBQ3BELE1BQU0sU0FBUyxHQUFHLGtCQUFrQixDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN2RSxJQUFJLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDL0MsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ3BEO2FBQU07WUFDTCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ3hFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQzNELE9BQU8sYUFBYSxDQUFDO1NBQ3RCO0lBQ0gsQ0FBQztJQUVPLDJCQUEyQixDQUFDLEtBQWtCLEVBQUUsUUFBOEI7UUFDcEYsSUFBSSxxQkFBaUQsQ0FBQztRQUN0RCxJQUFJLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDakQscUJBQXFCLEdBQUcsSUFBSSxDQUFDLGtDQUFrQyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztTQUNsRjthQUFNO1lBQ0wscUJBQXFCLEdBQUcsT0FBTyxFQUFFLENBQUMsSUFBSSx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1NBQzFHO1FBQ0QscUJBQXFCLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDaEMsT0FBTyxxQkFBcUIsQ0FBQztJQUMvQixDQUFDO0lBRU8sa0NBQWtDLENBQUMsS0FBa0IsRUFBRSxRQUE2QjtRQUMxRixzQ0FBc0M7UUFDdEMsT0FBTyxJQUFJLHVCQUF1QixDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbkUsQ0FBQzs7QUE5Q2Esa0NBQWUsR0FBcUIsSUFBSSxHQUFHLENBQUM7SUFDeEQsV0FBVyxDQUFDLGVBQWU7SUFDM0IsV0FBVyxDQUFDLGdCQUFnQjtJQUM1QixXQUFXLENBQUMsaUJBQWlCO0NBQzlCLENBQUMsQ0FBQzs7WUFWSixVQUFVOzs7WUFSRixhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHVibGlzaCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENlc2l1bVNlcnZpY2UgfSBmcm9tICcuLi9jZXNpdW0vY2VzaXVtLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2VzaXVtRXZlbnQgfSBmcm9tICcuL2NvbnN0cy9jZXNpdW0tZXZlbnQuZW51bSc7XG5pbXBvcnQgeyBDZXNpdW1FdmVudE1vZGlmaWVyIH0gZnJvbSAnLi9jb25zdHMvY2VzaXVtLWV2ZW50LW1vZGlmaWVyLmVudW0nO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2VzaXVtUHVyZUV2ZW50T2JzZXJ2ZXIgfSBmcm9tICcuL2V2ZW50LW9ic2VydmVycy9jZXNpdW0tcHVyZS1ldmVudC1vYnNlcnZlcic7XG5pbXBvcnQgeyBDZXNpdW1Mb25nUHJlc3NPYnNlcnZlciB9IGZyb20gJy4vZXZlbnQtb2JzZXJ2ZXJzL2Nlc2l1bS1sb25nLXByZXNzLW9ic2VydmVyJztcbmltcG9ydCB7IENvbm5lY3RhYmxlT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ2VzaXVtRXZlbnRCdWlsZGVyIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNlc2l1bVNlcnZpY2U6IENlc2l1bVNlcnZpY2UpIHtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgbG9uZ1ByZXNzRXZlbnRzOiBTZXQ8Q2VzaXVtRXZlbnQ+ID0gbmV3IFNldChbXG4gICAgQ2VzaXVtRXZlbnQuTE9OR19MRUZUX1BSRVNTLFxuICAgIENlc2l1bUV2ZW50LkxPTkdfUklHSFRfUFJFU1MsXG4gICAgQ2VzaXVtRXZlbnQuTE9OR19NSURETEVfUFJFU1NcbiAgXSk7XG5cbiAgcHJpdmF0ZSBldmVudHNIYW5kbGVyOiBhbnk7XG4gIHByaXZhdGUgY2VzaXVtRXZlbnRzT2JzZXJ2YWJsZXMgPSBuZXcgTWFwPHN0cmluZywgQ29ubmVjdGFibGVPYnNlcnZhYmxlPGFueT4+KCk7XG5cbiAgcHVibGljIHN0YXRpYyBnZXRFdmVudEZ1bGxOYW1lKGV2ZW50OiBDZXNpdW1FdmVudCwgbW9kaWZpZXI/OiBDZXNpdW1FdmVudE1vZGlmaWVyKTogc3RyaW5nIHtcbiAgICBpZiAobW9kaWZpZXIpIHtcbiAgICAgIHJldHVybiBgJHtldmVudH1fJHttb2RpZmllcn1gO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZXZlbnQudG9TdHJpbmcoKTtcbiAgICB9XG4gIH1cblxuICBpbml0KCkge1xuICAgIHRoaXMuZXZlbnRzSGFuZGxlciA9IHRoaXMuY2VzaXVtU2VydmljZS5nZXRWaWV3ZXIoKS5zY3JlZW5TcGFjZUV2ZW50SGFuZGxlcjtcbiAgfVxuXG4gIGdldChldmVudDogQ2VzaXVtRXZlbnQsIG1vZGlmaWVyPzogQ2VzaXVtRXZlbnRNb2RpZmllcik6IENvbm5lY3RhYmxlT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBldmVudE5hbWUgPSBDZXNpdW1FdmVudEJ1aWxkZXIuZ2V0RXZlbnRGdWxsTmFtZShldmVudCwgbW9kaWZpZXIpO1xuICAgIGlmICh0aGlzLmNlc2l1bUV2ZW50c09ic2VydmFibGVzLmhhcyhldmVudE5hbWUpKSB7XG4gICAgICByZXR1cm4gdGhpcy5jZXNpdW1FdmVudHNPYnNlcnZhYmxlcy5nZXQoZXZlbnROYW1lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZXZlbnRPYnNlcnZlciA9IHRoaXMuY3JlYXRlQ2VzaXVtRXZlbnRPYnNlcnZhYmxlKGV2ZW50LCBtb2RpZmllcik7XG4gICAgICB0aGlzLmNlc2l1bUV2ZW50c09ic2VydmFibGVzLnNldChldmVudE5hbWUsIGV2ZW50T2JzZXJ2ZXIpO1xuICAgICAgcmV0dXJuIGV2ZW50T2JzZXJ2ZXI7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVDZXNpdW1FdmVudE9ic2VydmFibGUoZXZlbnQ6IENlc2l1bUV2ZW50LCBtb2RpZmllcj86IENlc2l1bUV2ZW50TW9kaWZpZXIpOiBDb25uZWN0YWJsZU9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IGNlc2l1bUV2ZW50T2JzZXJ2YWJsZTogQ29ubmVjdGFibGVPYnNlcnZhYmxlPGFueT47XG4gICAgaWYgKENlc2l1bUV2ZW50QnVpbGRlci5sb25nUHJlc3NFdmVudHMuaGFzKGV2ZW50KSkge1xuICAgICAgY2VzaXVtRXZlbnRPYnNlcnZhYmxlID0gdGhpcy5jcmVhdGVTcGVjaWFsQ2VzaXVtRXZlbnRPYnNlcnZhYmxlKGV2ZW50LCBtb2RpZmllcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNlc2l1bUV2ZW50T2JzZXJ2YWJsZSA9IHB1Ymxpc2goKShuZXcgQ2VzaXVtUHVyZUV2ZW50T2JzZXJ2ZXIoZXZlbnQsIG1vZGlmaWVyKS5pbml0KHRoaXMuZXZlbnRzSGFuZGxlcikpO1xuICAgIH1cbiAgICBjZXNpdW1FdmVudE9ic2VydmFibGUuY29ubmVjdCgpO1xuICAgIHJldHVybiBjZXNpdW1FdmVudE9ic2VydmFibGU7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVNwZWNpYWxDZXNpdW1FdmVudE9ic2VydmFibGUoZXZlbnQ6IENlc2l1bUV2ZW50LCBtb2RpZmllcjogQ2VzaXVtRXZlbnRNb2RpZmllcik6IENvbm5lY3RhYmxlT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAvLyBjb3VsZCBzdXBwb3J0IG1vcmUgZXZlbnRzIGlmIG5lZWRlZFxuICAgIHJldHVybiBuZXcgQ2VzaXVtTG9uZ1ByZXNzT2JzZXJ2ZXIoZXZlbnQsIG1vZGlmaWVyLCB0aGlzKS5pbml0KCk7XG4gIH1cbn1cblxuIl19