UNPKG

angular-cesium

Version:
73 lines 9.71 kB
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ComponentFactoryResolver, ViewChild, ViewContainerRef } from '@angular/core'; import { ContextMenuService } from '../../services/context-menu/context-menu.service'; /** * This component is used to inject the component that is passed to the ContextMenuService when opening a context menu. * It shouldn't be used directly. * * usage: * ```typescript * // We want to open the context menu on mouse right click. * // Register to mouse right click with the MapEventsManager * this.mapEventsManager.register({ event: CesiumEvent.RIGHT_CLICK, pick: PickOptions.NO_PICK }) * .subscribe(event => { * const position = this.coordinateConverter.screenToCartesian3(event.movement.endPosition, true); * if (!position) { * return; * } * // Open the context menu on the position that was clicked and pass some data to MyCustomContextMenuComponent. * this.contextMenuService.open( * MyCustomContextMenuComponent, * position, * { data: { items: ['New Track', 'Change Map', 'Context Menu', 'Do Something'] } } * ) * }); * * ``` */ export class AcContextMenuWrapperComponent { constructor(contextMenuService, cd, componentFactoryResolver) { this.contextMenuService = contextMenuService; this.cd = cd; this.componentFactoryResolver = componentFactoryResolver; } ngOnInit() { this.contextMenuChangeSubscription = this.contextMenuService.contextMenuChangeNotifier.subscribe(() => this.cd.detectChanges()); this.contextMenuOpenSubscription = this.contextMenuService.onOpen.subscribe(() => { const componentFactory = this.componentFactoryResolver.resolveComponentFactory(this.contextMenuService.content); this.viewContainerRef.clear(); const componentRef = this.viewContainerRef.createComponent(componentFactory); componentRef.instance.data = this.contextMenuService.options.data; this.cd.detectChanges(); }); } ngOnDestroy() { if (this.contextMenuChangeSubscription) { this.contextMenuChangeSubscription.unsubscribe(); } if (this.contextMenuOpenSubscription) { this.contextMenuOpenSubscription.unsubscribe(); } } } AcContextMenuWrapperComponent.decorators = [ { type: Component, args: [{ selector: 'ac-context-menu-wrapper', template: ` <ac-html *ngIf="contextMenuService.showContextMenu" [props]="{position: contextMenuService.position}"> <ng-template #contextMenuContainer></ng-template> </ac-html> `, changeDetection: ChangeDetectionStrategy.OnPush },] } ]; AcContextMenuWrapperComponent.ctorParameters = () => [ { type: ContextMenuService }, { type: ChangeDetectorRef }, { type: ComponentFactoryResolver } ]; AcContextMenuWrapperComponent.propDecorators = { viewContainerRef: [{ type: ViewChild, args: ['contextMenuContainer', { read: ViewContainerRef },] }] }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWMtY29udGV4dC1tZW51LXdyYXBwZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jZXNpdW0vc3JjL2xpYi9hbmd1bGFyLWNlc2l1bS9jb21wb25lbnRzL2FjLWNvbnRleHQtbWVudS13cmFwcGVyL2FjLWNvbnRleHQtbWVudS13cmFwcGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1Qsd0JBQXdCLEVBR3hCLFNBQVMsRUFDVCxnQkFBZ0IsRUFDakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFJdEY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJHO0FBWUgsTUFBTSxPQUFPLDZCQUE2QjtJQU94QyxZQUFtQixrQkFBc0MsRUFDckMsRUFBcUIsRUFDckIsd0JBQWtEO1FBRm5ELHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDckMsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFDckIsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtJQUN0RSxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyw2QkFBNkI7WUFDaEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7UUFDN0YsSUFBSSxDQUFDLDJCQUEyQjtZQUM5QixJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQzVDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFjLENBQUMsQ0FBQztnQkFDdkgsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUM5QixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLENBQUM7Z0JBQzVFLFlBQVksQ0FBQyxRQUE2QixDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDeEYsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMxQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsNkJBQTZCLEVBQUU7WUFDdEMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ2xEO1FBRUQsSUFBSSxJQUFJLENBQUMsMkJBQTJCLEVBQUU7WUFDcEMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ2hEO0lBQ0gsQ0FBQzs7O1lBM0NGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUseUJBQXlCO2dCQUNuQyxRQUFRLEVBQUU7Ozs7R0FJVDtnQkFFRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTthQUNoRDs7O1lBdENRLGtCQUFrQjtZQVJ6QixpQkFBaUI7WUFFakIsd0JBQXdCOzs7K0JBa0R2QixTQUFTLFNBQUMsc0JBQXNCLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0NvbnRhaW5lclJlZlxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250ZXh0TWVudVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb250ZXh0LW1lbnUvY29udGV4dC1tZW51LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQmFzaWNDb250ZXh0TWVudSB9IGZyb20gJy4uLy4uL21vZGVscy9iYXNpYy1jb250ZXh0LW1lbnUnO1xyXG5cclxuLyoqXHJcbiAqIFRoaXMgY29tcG9uZW50IGlzIHVzZWQgdG8gaW5qZWN0IHRoZSBjb21wb25lbnQgdGhhdCBpcyBwYXNzZWQgdG8gdGhlIENvbnRleHRNZW51U2VydmljZSB3aGVuIG9wZW5pbmcgYSBjb250ZXh0IG1lbnUuXHJcbiAqIEl0IHNob3VsZG4ndCBiZSB1c2VkIGRpcmVjdGx5LlxyXG4gKlxyXG4gKiB1c2FnZTpcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiAvLyBXZSB3YW50IHRvIG9wZW4gdGhlIGNvbnRleHQgbWVudSBvbiBtb3VzZSByaWdodCBjbGljay5cclxuICogLy8gUmVnaXN0ZXIgdG8gbW91c2UgcmlnaHQgY2xpY2sgd2l0aCB0aGUgTWFwRXZlbnRzTWFuYWdlclxyXG4gKiB0aGlzLm1hcEV2ZW50c01hbmFnZXIucmVnaXN0ZXIoeyBldmVudDogQ2VzaXVtRXZlbnQuUklHSFRfQ0xJQ0ssIHBpY2s6IFBpY2tPcHRpb25zLk5PX1BJQ0sgfSlcclxuICogICAgLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAqICAgICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5jb29yZGluYXRlQ29udmVydGVyLnNjcmVlblRvQ2FydGVzaWFuMyhldmVudC5tb3ZlbWVudC5lbmRQb3NpdGlvbiwgdHJ1ZSk7XHJcbiAqICAgICAgIGlmICghcG9zaXRpb24pIHtcclxuICogICAgICAgICByZXR1cm47XHJcbiAqICAgICAgIH1cclxuICogICAgICAgLy8gT3BlbiB0aGUgY29udGV4dCBtZW51IG9uIHRoZSBwb3NpdGlvbiB0aGF0IHdhcyBjbGlja2VkIGFuZCBwYXNzIHNvbWUgZGF0YSB0byBNeUN1c3RvbUNvbnRleHRNZW51Q29tcG9uZW50LlxyXG4gKiAgICAgICB0aGlzLmNvbnRleHRNZW51U2VydmljZS5vcGVuKFxyXG4gKiAgICAgICAgIE15Q3VzdG9tQ29udGV4dE1lbnVDb21wb25lbnQsXHJcbiAqICAgICAgICAgcG9zaXRpb24sXHJcbiAqICAgICAgICAgeyBkYXRhOiB7IGl0ZW1zOiBbJ05ldyBUcmFjaycsICdDaGFuZ2UgTWFwJywgJ0NvbnRleHQgTWVudScsICdEbyBTb21ldGhpbmcnXSB9IH1cclxuICogICAgICAgKVxyXG4gKiAgICB9KTtcclxuICpcclxuICogYGBgXHJcbiAqL1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhYy1jb250ZXh0LW1lbnUtd3JhcHBlcicsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxhYy1odG1sICpuZ0lmPVwiY29udGV4dE1lbnVTZXJ2aWNlLnNob3dDb250ZXh0TWVudVwiIFtwcm9wc109XCJ7cG9zaXRpb246IGNvbnRleHRNZW51U2VydmljZS5wb3NpdGlvbn1cIj5cclxuICAgICAgPG5nLXRlbXBsYXRlICNjb250ZXh0TWVudUNvbnRhaW5lcj48L25nLXRlbXBsYXRlPlxyXG4gICAgPC9hYy1odG1sPlxyXG4gIGAsXHJcbiAgc3R5bGVzOiBbXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFjQ29udGV4dE1lbnVXcmFwcGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICBwcml2YXRlIGNvbnRleHRNZW51Q2hhbmdlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBjb250ZXh0TWVudU9wZW5TdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgQFZpZXdDaGlsZCgnY29udGV4dE1lbnVDb250YWluZXInLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSkgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZjtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIGNvbnRleHRNZW51U2VydmljZTogQ29udGV4dE1lbnVTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIpIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5jb250ZXh0TWVudUNoYW5nZVN1YnNjcmlwdGlvbiA9XHJcbiAgICAgIHRoaXMuY29udGV4dE1lbnVTZXJ2aWNlLmNvbnRleHRNZW51Q2hhbmdlTm90aWZpZXIuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpKTtcclxuICAgIHRoaXMuY29udGV4dE1lbnVPcGVuU3Vic2NyaXB0aW9uID1cclxuICAgICAgdGhpcy5jb250ZXh0TWVudVNlcnZpY2Uub25PcGVuLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgY29tcG9uZW50RmFjdG9yeSA9IHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KHRoaXMuY29udGV4dE1lbnVTZXJ2aWNlLmNvbnRlbnQgYXMgYW55KTtcclxuICAgICAgICB0aGlzLnZpZXdDb250YWluZXJSZWYuY2xlYXIoKTtcclxuICAgICAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudEZhY3RvcnkpO1xyXG4gICAgICAgIChjb21wb25lbnRSZWYuaW5zdGFuY2UgYXMgQmFzaWNDb250ZXh0TWVudSkuZGF0YSA9IHRoaXMuY29udGV4dE1lbnVTZXJ2aWNlLm9wdGlvbnMuZGF0YTtcclxuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNvbnRleHRNZW51Q2hhbmdlU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIHRoaXMuY29udGV4dE1lbnVDaGFuZ2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5jb250ZXh0TWVudU9wZW5TdWJzY3JpcHRpb24pIHtcclxuICAgICAgdGhpcy5jb250ZXh0TWVudU9wZW5TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19