UNPKG

@eliorar/angular-cesium

Version:

Angular library for working with Cesium.

79 lines 10.7 kB
import { ChangeDetectionStrategy, Component, ViewChild, ViewContainerRef } from '@angular/core'; import * as i0 from "@angular/core"; import * as i1 from "../../services/context-menu/context-menu.service"; import * as i2 from "../ac-html/ac-html.component"; import * as i3 from "@angular/common"; /** * 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.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: AcContextMenuWrapperComponent, deps: [{ token: i1.ContextMenuService }, { token: i0.ChangeDetectorRef }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Component }); AcContextMenuWrapperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: AcContextMenuWrapperComponent, selector: "ac-context-menu-wrapper", viewQueries: [{ propertyName: "viewContainerRef", first: true, predicate: ["contextMenuContainer"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: ` <ac-html *ngIf="contextMenuService.showContextMenu" [props]="{position: contextMenuService.position}"> <ng-template #contextMenuContainer></ng-template> </ac-html> `, isInline: true, components: [{ type: i2.AcHtmlComponent, selector: "ac-html", inputs: ["props"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: 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> `, styles: [], changeDetection: ChangeDetectionStrategy.OnPush, }] }], ctorParameters: function () { return [{ type: i1.ContextMenuService }, { type: i0.ChangeDetectorRef }, { type: i0.ComponentFactoryResolver }]; }, propDecorators: { viewContainerRef: [{ type: ViewChild, args: ['contextMenuContainer', { read: ViewContainerRef }] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWMtY29udGV4dC1tZW51LXdyYXBwZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jZXNpdW0vc3JjL2xpYi9hbmd1bGFyLWNlc2l1bS9jb21wb25lbnRzL2FjLWNvbnRleHQtbWVudS13cmFwcGVyL2FjLWNvbnRleHQtbWVudS13cmFwcGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFJVCxTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2pCLE1BQU0sZUFBZSxDQUFDOzs7OztBQUt2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Qkc7QUFZSCxNQUFNLE9BQU8sNkJBQTZCO0lBT3hDLFlBQW1CLGtCQUFzQyxFQUNyQyxFQUFxQixFQUNyQix3QkFBa0Q7UUFGbkQsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUNyQyxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNyQiw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO0lBQ3RFLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLDZCQUE2QjtZQUNoQyxJQUFJLENBQUMsa0JBQWtCLENBQUMseUJBQXlCLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUM3RixJQUFJLENBQUMsMkJBQTJCO1lBQzlCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDNUMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQWMsQ0FBQyxDQUFDO2dCQUN2SCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQzlCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztnQkFDNUUsWUFBWSxDQUFDLFFBQTZCLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUN4RixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyw2QkFBNkIsRUFBRTtZQUN0QyxJQUFJLENBQUMsNkJBQTZCLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDbEQ7UUFFRCxJQUFJLElBQUksQ0FBQywyQkFBMkIsRUFBRTtZQUNwQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDaEQ7SUFDSCxDQUFDOzswSEFqQ1UsNkJBQTZCOzhHQUE3Qiw2QkFBNkIsb0tBS0csZ0JBQWdCLDZCQWJqRDs7OztHQUlUOzJGQUlVLDZCQUE2QjtrQkFWekMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUseUJBQXlCO29CQUNuQyxRQUFRLEVBQUU7Ozs7R0FJVDtvQkFDRCxNQUFNLEVBQUUsRUFBRTtvQkFDVixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQ7Z0xBTWdFLGdCQUFnQjtzQkFBOUUsU0FBUzt1QkFBQyxzQkFBc0IsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbnRleHRNZW51U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29udGV4dC1tZW51L2NvbnRleHQtbWVudS5zZXJ2aWNlJztcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7QmFzaWNDb250ZXh0TWVudX0gZnJvbSAnLi4vLi4vbW9kZWxzL2Jhc2ljLWNvbnRleHQtbWVudSc7XG5cbi8qKlxuICogVGhpcyBjb21wb25lbnQgaXMgdXNlZCB0byBpbmplY3QgdGhlIGNvbXBvbmVudCB0aGF0IGlzIHBhc3NlZCB0byB0aGUgQ29udGV4dE1lbnVTZXJ2aWNlIHdoZW4gb3BlbmluZyBhIGNvbnRleHQgbWVudS5cbiAqIEl0IHNob3VsZG4ndCBiZSB1c2VkIGRpcmVjdGx5LlxuICpcbiAqIHVzYWdlOlxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gV2Ugd2FudCB0byBvcGVuIHRoZSBjb250ZXh0IG1lbnUgb24gbW91c2UgcmlnaHQgY2xpY2suXG4gKiAvLyBSZWdpc3RlciB0byBtb3VzZSByaWdodCBjbGljayB3aXRoIHRoZSBNYXBFdmVudHNNYW5hZ2VyXG4gKiB0aGlzLm1hcEV2ZW50c01hbmFnZXIucmVnaXN0ZXIoeyBldmVudDogQ2VzaXVtRXZlbnQuUklHSFRfQ0xJQ0ssIHBpY2s6IFBpY2tPcHRpb25zLk5PX1BJQ0sgfSlcbiAqICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICogICAgICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLmNvb3JkaW5hdGVDb252ZXJ0ZXIuc2NyZWVuVG9DYXJ0ZXNpYW4zKGV2ZW50Lm1vdmVtZW50LmVuZFBvc2l0aW9uLCB0cnVlKTtcbiAqICAgICAgIGlmICghcG9zaXRpb24pIHtcbiAqICAgICAgICAgcmV0dXJuO1xuICogICAgICAgfVxuICogICAgICAgLy8gT3BlbiB0aGUgY29udGV4dCBtZW51IG9uIHRoZSBwb3NpdGlvbiB0aGF0IHdhcyBjbGlja2VkIGFuZCBwYXNzIHNvbWUgZGF0YSB0byBNeUN1c3RvbUNvbnRleHRNZW51Q29tcG9uZW50LlxuICogICAgICAgdGhpcy5jb250ZXh0TWVudVNlcnZpY2Uub3BlbihcbiAqICAgICAgICAgTXlDdXN0b21Db250ZXh0TWVudUNvbXBvbmVudCxcbiAqICAgICAgICAgcG9zaXRpb24sXG4gKiAgICAgICAgIHsgZGF0YTogeyBpdGVtczogWydOZXcgVHJhY2snLCAnQ2hhbmdlIE1hcCcsICdDb250ZXh0IE1lbnUnLCAnRG8gU29tZXRoaW5nJ10gfSB9XG4gKiAgICAgICApXG4gKiAgICB9KTtcbiAqXG4gKiBgYGBcbiAqL1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhYy1jb250ZXh0LW1lbnUtd3JhcHBlcicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGFjLWh0bWwgKm5nSWY9XCJjb250ZXh0TWVudVNlcnZpY2Uuc2hvd0NvbnRleHRNZW51XCIgW3Byb3BzXT1cIntwb3NpdGlvbjogY29udGV4dE1lbnVTZXJ2aWNlLnBvc2l0aW9ufVwiPlxuICAgICAgPG5nLXRlbXBsYXRlICNjb250ZXh0TWVudUNvbnRhaW5lcj48L25nLXRlbXBsYXRlPlxuICAgIDwvYWMtaHRtbD5cbiAgYCxcbiAgc3R5bGVzOiBbXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEFjQ29udGV4dE1lbnVXcmFwcGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIHByaXZhdGUgY29udGV4dE1lbnVDaGFuZ2VTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBjb250ZXh0TWVudU9wZW5TdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBAVmlld0NoaWxkKCdjb250ZXh0TWVudUNvbnRhaW5lcicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjb250ZXh0TWVudVNlcnZpY2U6IENvbnRleHRNZW51U2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgICAgICAgIHByaXZhdGUgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIpIHtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY29udGV4dE1lbnVDaGFuZ2VTdWJzY3JpcHRpb24gPVxuICAgICAgdGhpcy5jb250ZXh0TWVudVNlcnZpY2UuY29udGV4dE1lbnVDaGFuZ2VOb3RpZmllci5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCkpO1xuICAgIHRoaXMuY29udGV4dE1lbnVPcGVuU3Vic2NyaXB0aW9uID1cbiAgICAgIHRoaXMuY29udGV4dE1lbnVTZXJ2aWNlLm9uT3Blbi5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBjb25zdCBjb21wb25lbnRGYWN0b3J5ID0gdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkodGhpcy5jb250ZXh0TWVudVNlcnZpY2UuY29udGVudCBhcyBhbnkpO1xuICAgICAgICB0aGlzLnZpZXdDb250YWluZXJSZWYuY2xlYXIoKTtcbiAgICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnRGYWN0b3J5KTtcbiAgICAgICAgKGNvbXBvbmVudFJlZi5pbnN0YW5jZSBhcyBCYXNpY0NvbnRleHRNZW51KS5kYXRhID0gdGhpcy5jb250ZXh0TWVudVNlcnZpY2Uub3B0aW9ucy5kYXRhO1xuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29udGV4dE1lbnVDaGFuZ2VTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuY29udGV4dE1lbnVDaGFuZ2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb250ZXh0TWVudU9wZW5TdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuY29udGV4dE1lbnVPcGVuU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG59XG4iXX0=