@eliorar/angular-cesium
Version:
Angular library for working with Cesium.
61 lines • 8.68 kB
JavaScript
import { publish } from 'rxjs/operators';
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';
import * as i0 from "@angular/core";
import * as i1 from "../cesium/cesium.service";
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.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: CesiumEventBuilder, deps: [{ token: i1.CesiumService }], target: i0.ɵɵFactoryTarget.Injectable });
CesiumEventBuilder.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: CesiumEventBuilder });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: CesiumEventBuilder, decorators: [{
type: Injectable
}], ctorParameters: function () { return [{ type: i1.CesiumService }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VzaXVtLWV2ZW50LWJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNlc2l1bS9zcmMvbGliL2FuZ3VsYXItY2VzaXVtL3NlcnZpY2VzL21hcC1ldmVudHMtbWFuYW5nZXIvY2VzaXVtLWV2ZW50LWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXZDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUV2RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQ3JGLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDhDQUE4QyxDQUFDOzs7QUFJckYsTUFBTSxPQUFPLGtCQUFrQjtJQUU3QixZQUFvQixhQUE0QjtRQUE1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQVV4Qyw0QkFBdUIsR0FBRyxJQUFJLEdBQUcsRUFBc0MsQ0FBQztJQVRoRixDQUFDO0lBV00sTUFBTSxDQUFDLGdCQUFnQixDQUFDLEtBQWtCLEVBQUUsUUFBOEI7UUFDL0UsSUFBSSxRQUFRLEVBQUU7WUFDWixPQUFPLEdBQUcsS0FBSyxJQUFJLFFBQVEsRUFBRSxDQUFDO1NBQy9CO2FBQU07WUFDTCxPQUFPLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUN6QjtJQUNILENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxDQUFDLHVCQUF1QixDQUFDO0lBQzlFLENBQUM7SUFFRCxHQUFHLENBQUMsS0FBa0IsRUFBRSxRQUE4QjtRQUNwRCxNQUFNLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDdkUsSUFBSSxJQUFJLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQy9DLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUNwRDthQUFNO1lBQ0wsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztZQUN4RSxJQUFJLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUMsQ0FBQztZQUMzRCxPQUFPLGFBQWEsQ0FBQztTQUN0QjtJQUNILENBQUM7SUFFTywyQkFBMkIsQ0FBQyxLQUFrQixFQUFFLFFBQThCO1FBQ3BGLElBQUkscUJBQWlELENBQUM7UUFDdEQsSUFBSSxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2pELHFCQUFxQixHQUFHLElBQUksQ0FBQyxrQ0FBa0MsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7U0FDbEY7YUFBTTtZQUNMLHFCQUFxQixHQUFHLE9BQU8sRUFBRSxDQUFDLElBQUksdUJBQXVCLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztTQUMxRztRQUNELHFCQUFxQixDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2hDLE9BQU8scUJBQXFCLENBQUM7SUFDL0IsQ0FBQztJQUVPLGtDQUFrQyxDQUFDLEtBQWtCLEVBQUUsUUFBNkI7UUFDMUYsc0NBQXNDO1FBQ3RDLE9BQU8sSUFBSSx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ25FLENBQUM7O0FBOUNhLGtDQUFlLEdBQXFCLElBQUksR0FBRyxDQUFDO0lBQ3hELFdBQVcsQ0FBQyxlQUFlO0lBQzNCLFdBQVcsQ0FBQyxnQkFBZ0I7SUFDNUIsV0FBVyxDQUFDLGlCQUFpQjtDQUM5QixDQUFFLENBQUE7K0dBVFEsa0JBQWtCO21IQUFsQixrQkFBa0I7MkZBQWxCLGtCQUFrQjtrQkFEOUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7cHVibGlzaH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtDZXNpdW1TZXJ2aWNlfSBmcm9tICcuLi9jZXNpdW0vY2VzaXVtLnNlcnZpY2UnO1xuaW1wb3J0IHtDZXNpdW1FdmVudH0gZnJvbSAnLi9jb25zdHMvY2VzaXVtLWV2ZW50LmVudW0nO1xuaW1wb3J0IHtDZXNpdW1FdmVudE1vZGlmaWVyfSBmcm9tICcuL2NvbnN0cy9jZXNpdW0tZXZlbnQtbW9kaWZpZXIuZW51bSc7XG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDZXNpdW1QdXJlRXZlbnRPYnNlcnZlcn0gZnJvbSAnLi9ldmVudC1vYnNlcnZlcnMvY2VzaXVtLXB1cmUtZXZlbnQtb2JzZXJ2ZXInO1xuaW1wb3J0IHtDZXNpdW1Mb25nUHJlc3NPYnNlcnZlcn0gZnJvbSAnLi9ldmVudC1vYnNlcnZlcnMvY2VzaXVtLWxvbmctcHJlc3Mtb2JzZXJ2ZXInO1xuaW1wb3J0IHtDb25uZWN0YWJsZU9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ2VzaXVtRXZlbnRCdWlsZGVyIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNlc2l1bVNlcnZpY2U6IENlc2l1bVNlcnZpY2UpIHtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgbG9uZ1ByZXNzRXZlbnRzOiBTZXQ8Q2VzaXVtRXZlbnQ+ID0gbmV3IFNldChbXG4gICAgQ2VzaXVtRXZlbnQuTE9OR19MRUZUX1BSRVNTLFxuICAgIENlc2l1bUV2ZW50LkxPTkdfUklHSFRfUFJFU1MsXG4gICAgQ2VzaXVtRXZlbnQuTE9OR19NSURETEVfUFJFU1NcbiAgXSk7XG5cbiAgcHJpdmF0ZSBldmVudHNIYW5kbGVyOiBhbnk7XG4gIHByaXZhdGUgY2VzaXVtRXZlbnRzT2JzZXJ2YWJsZXMgPSBuZXcgTWFwPHN0cmluZywgQ29ubmVjdGFibGVPYnNlcnZhYmxlPGFueT4+KCk7XG5cbiAgcHVibGljIHN0YXRpYyBnZXRFdmVudEZ1bGxOYW1lKGV2ZW50OiBDZXNpdW1FdmVudCwgbW9kaWZpZXI/OiBDZXNpdW1FdmVudE1vZGlmaWVyKTogc3RyaW5nIHtcbiAgICBpZiAobW9kaWZpZXIpIHtcbiAgICAgIHJldHVybiBgJHtldmVudH1fJHttb2RpZmllcn1gO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZXZlbnQudG9TdHJpbmcoKTtcbiAgICB9XG4gIH1cblxuICBpbml0KCkge1xuICAgIHRoaXMuZXZlbnRzSGFuZGxlciA9IHRoaXMuY2VzaXVtU2VydmljZS5nZXRWaWV3ZXIoKS5zY3JlZW5TcGFjZUV2ZW50SGFuZGxlcjtcbiAgfVxuXG4gIGdldChldmVudDogQ2VzaXVtRXZlbnQsIG1vZGlmaWVyPzogQ2VzaXVtRXZlbnRNb2RpZmllcik6IENvbm5lY3RhYmxlT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBldmVudE5hbWUgPSBDZXNpdW1FdmVudEJ1aWxkZXIuZ2V0RXZlbnRGdWxsTmFtZShldmVudCwgbW9kaWZpZXIpO1xuICAgIGlmICh0aGlzLmNlc2l1bUV2ZW50c09ic2VydmFibGVzLmhhcyhldmVudE5hbWUpKSB7XG4gICAgICByZXR1cm4gdGhpcy5jZXNpdW1FdmVudHNPYnNlcnZhYmxlcy5nZXQoZXZlbnROYW1lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZXZlbnRPYnNlcnZlciA9IHRoaXMuY3JlYXRlQ2VzaXVtRXZlbnRPYnNlcnZhYmxlKGV2ZW50LCBtb2RpZmllcik7XG4gICAgICB0aGlzLmNlc2l1bUV2ZW50c09ic2VydmFibGVzLnNldChldmVudE5hbWUsIGV2ZW50T2JzZXJ2ZXIpO1xuICAgICAgcmV0dXJuIGV2ZW50T2JzZXJ2ZXI7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVDZXNpdW1FdmVudE9ic2VydmFibGUoZXZlbnQ6IENlc2l1bUV2ZW50LCBtb2RpZmllcj86IENlc2l1bUV2ZW50TW9kaWZpZXIpOiBDb25uZWN0YWJsZU9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IGNlc2l1bUV2ZW50T2JzZXJ2YWJsZTogQ29ubmVjdGFibGVPYnNlcnZhYmxlPGFueT47XG4gICAgaWYgKENlc2l1bUV2ZW50QnVpbGRlci5sb25nUHJlc3NFdmVudHMuaGFzKGV2ZW50KSkge1xuICAgICAgY2VzaXVtRXZlbnRPYnNlcnZhYmxlID0gdGhpcy5jcmVhdGVTcGVjaWFsQ2VzaXVtRXZlbnRPYnNlcnZhYmxlKGV2ZW50LCBtb2RpZmllcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNlc2l1bUV2ZW50T2JzZXJ2YWJsZSA9IHB1Ymxpc2goKShuZXcgQ2VzaXVtUHVyZUV2ZW50T2JzZXJ2ZXIoZXZlbnQsIG1vZGlmaWVyKS5pbml0KHRoaXMuZXZlbnRzSGFuZGxlcikpO1xuICAgIH1cbiAgICBjZXNpdW1FdmVudE9ic2VydmFibGUuY29ubmVjdCgpO1xuICAgIHJldHVybiBjZXNpdW1FdmVudE9ic2VydmFibGU7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVNwZWNpYWxDZXNpdW1FdmVudE9ic2VydmFibGUoZXZlbnQ6IENlc2l1bUV2ZW50LCBtb2RpZmllcjogQ2VzaXVtRXZlbnRNb2RpZmllcik6IENvbm5lY3RhYmxlT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAvLyBjb3VsZCBzdXBwb3J0IG1vcmUgZXZlbnRzIGlmIG5lZWRlZFxuICAgIHJldHVybiBuZXcgQ2VzaXVtTG9uZ1ByZXNzT2JzZXJ2ZXIoZXZlbnQsIG1vZGlmaWVyLCB0aGlzKS5pbml0KCk7XG4gIH1cbn1cblxuIl19