@eliorar/angular-cesium
Version:
Angular library for working with Cesium.
79 lines • 10.7 kB
JavaScript
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=