angular-cesium
Version:
Angular library for working with Cesium.
65 lines • 8.55 kB
JavaScript
var CesiumEventBuilder_1;
import { __decorate, __metadata } from "tslib";
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';
let CesiumEventBuilder = CesiumEventBuilder_1 = 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_1.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_1.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.ctorParameters = () => [
{ type: CesiumService }
];
CesiumEventBuilder.longPressEvents = new Set([
CesiumEvent.LONG_LEFT_PRESS,
CesiumEvent.LONG_RIGHT_PRESS,
CesiumEvent.LONG_MIDDLE_PRESS
]);
CesiumEventBuilder = CesiumEventBuilder_1 = __decorate([
Injectable(),
__metadata("design:paramtypes", [CesiumService])
], CesiumEventBuilder);
export { CesiumEventBuilder };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VzaXVtLWV2ZW50LWJ1aWxkZXIuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hbmd1bGFyLWNlc2l1bS8iLCJzb3VyY2VzIjpbImxpYi9hbmd1bGFyLWNlc2l1bS9zZXJ2aWNlcy9tYXAtZXZlbnRzLW1hbmFuZ2VyL2Nlc2l1bS1ldmVudC1idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN2RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUl2RixJQUFhLGtCQUFrQiwwQkFBL0IsTUFBYSxrQkFBa0I7SUFFN0IsWUFBb0IsYUFBNEI7UUFBNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFVeEMsNEJBQXVCLEdBQUcsSUFBSSxHQUFHLEVBQXNDLENBQUM7SUFUaEYsQ0FBQztJQVdNLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFrQixFQUFFLFFBQThCO1FBQy9FLElBQUksUUFBUSxFQUFFO1lBQ1osT0FBTyxHQUFHLEtBQUssSUFBSSxRQUFRLEVBQUUsQ0FBQztTQUMvQjthQUFNO1lBQ0wsT0FBTyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDekI7SUFDSCxDQUFDO0lBRUQsSUFBSTtRQUNGLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQztJQUM5RSxDQUFDO0lBRUQsR0FBRyxDQUFDLEtBQWtCLEVBQUUsUUFBOEI7UUFDcEQsTUFBTSxTQUFTLEdBQUcsb0JBQWtCLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksSUFBSSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUMvQyxPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDcEQ7YUFBTTtZQUNMLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDeEUsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDM0QsT0FBTyxhQUFhLENBQUM7U0FDdEI7SUFDSCxDQUFDO0lBRU8sMkJBQTJCLENBQUMsS0FBa0IsRUFBRSxRQUE4QjtRQUNwRixJQUFJLHFCQUFpRCxDQUFDO1FBQ3RELElBQUksb0JBQWtCLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNqRCxxQkFBcUIsR0FBRyxJQUFJLENBQUMsa0NBQWtDLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1NBQ2xGO2FBQU07WUFDTCxxQkFBcUIsR0FBRyxPQUFPLEVBQUUsQ0FBQyxJQUFJLHVCQUF1QixDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7U0FDMUc7UUFDRCxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNoQyxPQUFPLHFCQUFxQixDQUFDO0lBQy9CLENBQUM7SUFFTyxrQ0FBa0MsQ0FBQyxLQUFrQixFQUFFLFFBQTZCO1FBQzFGLHNDQUFzQztRQUN0QyxPQUFPLElBQUksdUJBQXVCLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNuRSxDQUFDO0NBQ0YsQ0FBQTs7WUFsRG9DLGFBQWE7O0FBR2xDLGtDQUFlLEdBQXFCLElBQUksR0FBRyxDQUFDO0lBQ3hELFdBQVcsQ0FBQyxlQUFlO0lBQzNCLFdBQVcsQ0FBQyxnQkFBZ0I7SUFDNUIsV0FBVyxDQUFDLGlCQUFpQjtDQUM5QixDQUFDLENBQUM7QUFUUSxrQkFBa0I7SUFEOUIsVUFBVSxFQUFFO3FDQUd3QixhQUFhO0dBRnJDLGtCQUFrQixDQW9EOUI7U0FwRFksa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHVibGlzaCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENlc2l1bVNlcnZpY2UgfSBmcm9tICcuLi9jZXNpdW0vY2VzaXVtLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2VzaXVtRXZlbnQgfSBmcm9tICcuL2NvbnN0cy9jZXNpdW0tZXZlbnQuZW51bSc7XG5pbXBvcnQgeyBDZXNpdW1FdmVudE1vZGlmaWVyIH0gZnJvbSAnLi9jb25zdHMvY2VzaXVtLWV2ZW50LW1vZGlmaWVyLmVudW0nO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2VzaXVtUHVyZUV2ZW50T2JzZXJ2ZXIgfSBmcm9tICcuL2V2ZW50LW9ic2VydmVycy9jZXNpdW0tcHVyZS1ldmVudC1vYnNlcnZlcic7XG5pbXBvcnQgeyBDZXNpdW1Mb25nUHJlc3NPYnNlcnZlciB9IGZyb20gJy4vZXZlbnQtb2JzZXJ2ZXJzL2Nlc2l1bS1sb25nLXByZXNzLW9ic2VydmVyJztcbmltcG9ydCB7IENvbm5lY3RhYmxlT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ2VzaXVtRXZlbnRCdWlsZGVyIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNlc2l1bVNlcnZpY2U6IENlc2l1bVNlcnZpY2UpIHtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgbG9uZ1ByZXNzRXZlbnRzOiBTZXQ8Q2VzaXVtRXZlbnQ+ID0gbmV3IFNldChbXG4gICAgQ2VzaXVtRXZlbnQuTE9OR19MRUZUX1BSRVNTLFxuICAgIENlc2l1bUV2ZW50LkxPTkdfUklHSFRfUFJFU1MsXG4gICAgQ2VzaXVtRXZlbnQuTE9OR19NSURETEVfUFJFU1NcbiAgXSk7XG5cbiAgcHJpdmF0ZSBldmVudHNIYW5kbGVyOiBhbnk7XG4gIHByaXZhdGUgY2VzaXVtRXZlbnRzT2JzZXJ2YWJsZXMgPSBuZXcgTWFwPHN0cmluZywgQ29ubmVjdGFibGVPYnNlcnZhYmxlPGFueT4+KCk7XG5cbiAgcHVibGljIHN0YXRpYyBnZXRFdmVudEZ1bGxOYW1lKGV2ZW50OiBDZXNpdW1FdmVudCwgbW9kaWZpZXI/OiBDZXNpdW1FdmVudE1vZGlmaWVyKTogc3RyaW5nIHtcbiAgICBpZiAobW9kaWZpZXIpIHtcbiAgICAgIHJldHVybiBgJHtldmVudH1fJHttb2RpZmllcn1gO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZXZlbnQudG9TdHJpbmcoKTtcbiAgICB9XG4gIH1cblxuICBpbml0KCkge1xuICAgIHRoaXMuZXZlbnRzSGFuZGxlciA9IHRoaXMuY2VzaXVtU2VydmljZS5nZXRWaWV3ZXIoKS5zY3JlZW5TcGFjZUV2ZW50SGFuZGxlcjtcbiAgfVxuXG4gIGdldChldmVudDogQ2VzaXVtRXZlbnQsIG1vZGlmaWVyPzogQ2VzaXVtRXZlbnRNb2RpZmllcik6IENvbm5lY3RhYmxlT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBldmVudE5hbWUgPSBDZXNpdW1FdmVudEJ1aWxkZXIuZ2V0RXZlbnRGdWxsTmFtZShldmVudCwgbW9kaWZpZXIpO1xuICAgIGlmICh0aGlzLmNlc2l1bUV2ZW50c09ic2VydmFibGVzLmhhcyhldmVudE5hbWUpKSB7XG4gICAgICByZXR1cm4gdGhpcy5jZXNpdW1FdmVudHNPYnNlcnZhYmxlcy5nZXQoZXZlbnROYW1lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZXZlbnRPYnNlcnZlciA9IHRoaXMuY3JlYXRlQ2VzaXVtRXZlbnRPYnNlcnZhYmxlKGV2ZW50LCBtb2RpZmllcik7XG4gICAgICB0aGlzLmNlc2l1bUV2ZW50c09ic2VydmFibGVzLnNldChldmVudE5hbWUsIGV2ZW50T2JzZXJ2ZXIpO1xuICAgICAgcmV0dXJuIGV2ZW50T2JzZXJ2ZXI7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVDZXNpdW1FdmVudE9ic2VydmFibGUoZXZlbnQ6IENlc2l1bUV2ZW50LCBtb2RpZmllcj86IENlc2l1bUV2ZW50TW9kaWZpZXIpOiBDb25uZWN0YWJsZU9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IGNlc2l1bUV2ZW50T2JzZXJ2YWJsZTogQ29ubmVjdGFibGVPYnNlcnZhYmxlPGFueT47XG4gICAgaWYgKENlc2l1bUV2ZW50QnVpbGRlci5sb25nUHJlc3NFdmVudHMuaGFzKGV2ZW50KSkge1xuICAgICAgY2VzaXVtRXZlbnRPYnNlcnZhYmxlID0gdGhpcy5jcmVhdGVTcGVjaWFsQ2VzaXVtRXZlbnRPYnNlcnZhYmxlKGV2ZW50LCBtb2RpZmllcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNlc2l1bUV2ZW50T2JzZXJ2YWJsZSA9IHB1Ymxpc2goKShuZXcgQ2VzaXVtUHVyZUV2ZW50T2JzZXJ2ZXIoZXZlbnQsIG1vZGlmaWVyKS5pbml0KHRoaXMuZXZlbnRzSGFuZGxlcikpO1xuICAgIH1cbiAgICBjZXNpdW1FdmVudE9ic2VydmFibGUuY29ubmVjdCgpO1xuICAgIHJldHVybiBjZXNpdW1FdmVudE9ic2VydmFibGU7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVNwZWNpYWxDZXNpdW1FdmVudE9ic2VydmFibGUoZXZlbnQ6IENlc2l1bUV2ZW50LCBtb2RpZmllcjogQ2VzaXVtRXZlbnRNb2RpZmllcik6IENvbm5lY3RhYmxlT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAvLyBjb3VsZCBzdXBwb3J0IG1vcmUgZXZlbnRzIGlmIG5lZWRlZFxuICAgIHJldHVybiBuZXcgQ2VzaXVtTG9uZ1ByZXNzT2JzZXJ2ZXIoZXZlbnQsIG1vZGlmaWVyLCB0aGlzKS5pbml0KCk7XG4gIH1cbn1cblxuIl19