import { Observable } from 'rxjs'; import { Api } from './api'; import { MarkerCreateEvent, MarkerDeleteEvent, MarkerInitEvent, MarkerSelectedEvent, MarkerUpdateEvent } from '../types'; import { MarkerApi } from './marker-api'; export interface MarkerAwareApi extends Api { /** * Fires on loading the initial list of markers * @readonly */ onMarkerInit$: Observable; /** * Fires on marker create * @readonly */ onMarkerCreate$: Observable; /** * Fires on marker delete * @readonly */ onMarkerDelete$: Observable; /** * Fires on marker update * @readonly */ onMarkerUpdate$: Observable; /** * Fires on marker selected * @readonly */ onMarkerSelected$: Observable; /** * Track name */ get name(): string; /** * @returns all Markers */ getMarkers(): MarkerApi[]; /** * Adds a new marker * @param marker Marker Data */ addMarker(marker: Partial): MarkerApi; /** * Removes Marker by ID * @param id Marker ID */ removeMarker(id: string): void; /** * Removes all Markers */ removeAllMarkers(): void; /** * Updates Marker by ID * @param id Marker ID */ updateMarker(id: string, data: Partial): void; /** * Set selected Marker as active * @param id Marker ID */ toggleMarker(id: string): void; /** * Get currently active marker */ getSelectedMarker(): MarkerApi | undefined; }