UNPKG

ol-contextmenu

Version:
137 lines (124 loc) 5.17 kB
import { CombinedOnSignature } from 'ol/Observable'; import { Coordinate } from 'ol/coordinate'; import { default as default_2 } from 'ol/control/Control'; import { default as default_3 } from 'ol/Map'; import { default as default_4 } from 'ol/events/Event'; import { default as default_5 } from 'ol/MapBrowserEvent'; import { EventsKey } from 'ol/events'; import { EventTypes as EventTypes_2 } from 'ol/Observable'; import { ObjectEvent } from 'ol/Object'; import { OnSignature } from 'ol/Observable'; import { Pixel } from 'ol/pixel'; import { TinyEmitter } from 'tiny-emitter'; import { Types } from 'ol/ObjectEventType'; export declare type CallbackObject = { coordinate: Coordinate; data: unknown; }; declare class ContextMenu extends default_2 { protected map: default_3; protected emitter: TinyEmitter; protected container: HTMLDivElement; protected coordinate: Coordinate; protected pixel: Pixel; protected contextMenuEventListener: (evt: MouseEvent) => void; protected entryCallbackEventListener: (evt: MouseEvent) => void; protected mapMoveListener: () => void; protected lineHeight: number; protected disabled: boolean; protected opened: boolean; protected items: Item[]; protected menuEntries: Map<string, MenuEntry>; on: OnSignature<EventTypes_2 | `${CustomEventTypes.CLOSE}`, default_4, EventsKey> & OnSignature<`${CustomEventTypes.OPEN}` | `${CustomEventTypes.BEFOREOPEN}`, ContextMenuEvent, EventsKey> & OnSignature<Types, ObjectEvent, EventsKey> & CombinedOnSignature<EventTypes_2 | Types | `${CustomEventTypes.OPEN}` | `${CustomEventTypes.CLOSE}` | `${CustomEventTypes.BEFOREOPEN}`, EventsKey>; once: OnSignature<EventTypes_2 | `${CustomEventTypes.CLOSE}`, default_4, EventsKey> & OnSignature<`${CustomEventTypes.OPEN}` | `${CustomEventTypes.BEFOREOPEN}`, ContextMenuEvent, EventsKey> & OnSignature<Types, ObjectEvent, EventsKey> & CombinedOnSignature<EventTypes_2 | Types | `${CustomEventTypes.OPEN}` | `${CustomEventTypes.CLOSE}` | `${CustomEventTypes.BEFOREOPEN}`, EventsKey>; un: OnSignature<EventTypes_2 | `${CustomEventTypes.CLOSE}`, default_4, void> & OnSignature<`${CustomEventTypes.OPEN}` | `${CustomEventTypes.BEFOREOPEN}`, ContextMenuEvent, EventsKey> & OnSignature<Types, ObjectEvent, void> & CombinedOnSignature<EventTypes_2 | Types | `${CustomEventTypes.OPEN}` | `${CustomEventTypes.CLOSE}` | `${CustomEventTypes.BEFOREOPEN}`, void>; options: Options; constructor(opts?: Partial<Options>); clear(): void; enable(): void; disable(): void; getDefaultItems(): SingleItem[]; countItems(): number; extend(items: Item[]): void; closeMenu(): void; isOpen(): boolean; updatePosition(pixel: Pixel): void; pop(): void; shift(): void; push(item: Item): void; setMap(map: default_3): void; protected removeListeners(): void; protected removeMenuEntry(id: string): void; protected handleContextMenu(evt: MouseEvent): void; protected openMenu(evt: MouseEvent): void; protected getMenuEntriesLength(): number; protected calculateMenuSize(): { h: number; w: number; }; protected calculateVerticalPosition(mapSize: [number, number], spaceLeft: { h: number; w: number; }, menuSize: { h: number; w: number; }): number; protected adjustPositionAfterRender(mapSize: [number, number], menuSize: { h: number; w: number; }): void; protected positionContainer(): void; protected handleMapMove(): void; protected handleEntryCallback(evt: MouseEvent): void; protected handleAddMenuEntry(item: MenuEntry, element: HTMLLIElement): void; } export default ContextMenu; export declare class ContextMenuEvent extends default_5<any> { constructor(options: { map: default_3; originalEvent: MouseEvent | PointerEvent; type: `${CustomEventTypes.OPEN}` | `${CustomEventTypes.BEFOREOPEN}`; }); } export declare enum CustomEventTypes { BEFOREOPEN = "beforeopen", OPEN = "open", CLOSE = "close", ADD_MENU_ENTRY = "add-menu-entry" } export declare enum EventTypes { CONTEXTMENU = "contextmenu", CLICK = "click", DBLCLICK = "dblclick" } export declare type Item = SingleItem | ItemSeparator | ItemWithNested; export declare type ItemSeparator = '-'; export declare type ItemWithNested = { classname?: string; icon?: string; items: Item[]; text: string; }; export declare type MenuEntry = { callback: null | SingleItem['callback']; data: unknown; id: string; isInsideSubmenu: boolean; isSeparator: boolean; isSubmenu: boolean; }; export declare type Options = { defaultItems: boolean; eventType: `${EventTypes}`; items: Item[]; scrollAt: number; width: number; }; export declare type SingleItem = { callback: (object: CallbackObject, map: default_3) => void; classname?: string; data?: unknown; icon?: string; text: string; }; export { }