| 
									
										
										
										
											2023-09-27 22:21:35 +02:00
										 |  |  | import { Store, UIEventSource } from "../Logic/UIEventSource" | 
					
						
							|  |  |  | import BaseUIElement from "./BaseUIElement" | 
					
						
							| 
									
										
										
										
											2024-08-22 02:54:46 +02:00
										 |  |  | import LayoutConfig, { MinimalLayoutInformation } from "../Models/ThemeConfig/LayoutConfig" | 
					
						
							| 
									
										
										
										
											2024-06-16 16:06:26 +02:00
										 |  |  | import { | 
					
						
							|  |  |  |     FeatureSource, | 
					
						
							|  |  |  |     IndexedFeatureSource, | 
					
						
							| 
									
										
										
										
											2024-08-23 02:16:24 +02:00
										 |  |  |     WritableFeatureSource | 
					
						
							| 
									
										
										
										
											2024-06-16 16:06:26 +02:00
										 |  |  | } from "../Logic/FeatureSource/FeatureSource" | 
					
						
							| 
									
										
										
										
											2023-09-27 22:21:35 +02:00
										 |  |  | import { OsmConnection } from "../Logic/Osm/OsmConnection" | 
					
						
							|  |  |  | import { Changes } from "../Logic/Osm/Changes" | 
					
						
							|  |  |  | import { ExportableMap, MapProperties } from "../Models/MapProperties" | 
					
						
							|  |  |  | import LayerState from "../Logic/State/LayerState" | 
					
						
							| 
									
										
										
										
											2024-05-08 21:46:33 +02:00
										 |  |  | import { Feature, Geometry, Point, Polygon } from "geojson" | 
					
						
							| 
									
										
										
										
											2023-09-27 22:21:35 +02:00
										 |  |  | import FullNodeDatabaseSource from "../Logic/FeatureSource/TiledFeatureSource/FullNodeDatabaseSource" | 
					
						
							|  |  |  | import { MangroveIdentity } from "../Logic/Web/MangroveReviews" | 
					
						
							|  |  |  | import { GeoIndexedStoreForLayer } from "../Logic/FeatureSource/Actors/GeoIndexedStore" | 
					
						
							|  |  |  | import LayerConfig from "../Models/ThemeConfig/LayerConfig" | 
					
						
							|  |  |  | import FeatureSwitchState from "../Logic/State/FeatureSwitchState" | 
					
						
							|  |  |  | import { MenuState } from "../Models/MenuState" | 
					
						
							|  |  |  | import OsmObjectDownloader from "../Logic/Osm/OsmObjectDownloader" | 
					
						
							|  |  |  | import { RasterLayerPolygon } from "../Models/RasterLayers" | 
					
						
							|  |  |  | import { ImageUploadManager } from "../Logic/ImageProviders/ImageUploadManager" | 
					
						
							|  |  |  | import { OsmTags } from "../Models/OsmFeature" | 
					
						
							| 
									
										
										
										
											2023-11-22 19:39:19 +01:00
										 |  |  | import FavouritesFeatureSource from "../Logic/FeatureSource/Sources/FavouritesFeatureSource" | 
					
						
							| 
									
										
										
										
											2023-12-05 18:35:18 +01:00
										 |  |  | import { ProvidedImage } from "../Logic/ImageProviders/ImageProvider" | 
					
						
							| 
									
										
										
										
											2023-12-24 05:01:10 +01:00
										 |  |  | import GeoLocationHandler from "../Logic/Actors/GeoLocationHandler" | 
					
						
							| 
									
										
										
										
											2024-02-21 16:35:49 +01:00
										 |  |  | import { SummaryTileSourceRewriter } from "../Logic/FeatureSource/TiledFeatureSource/SummaryTileSource" | 
					
						
							|  |  |  | import LayoutSource from "../Logic/FeatureSource/Sources/LayoutSource" | 
					
						
							| 
									
										
										
										
											2024-03-04 15:31:09 +01:00
										 |  |  | import { Map as MlMap } from "maplibre-gl" | 
					
						
							|  |  |  | import ShowDataLayer from "./Map/ShowDataLayer" | 
					
						
							| 
									
										
										
										
											2024-07-19 11:37:20 +02:00
										 |  |  | import { CombinedFetcher } from "../Logic/Web/NearbyImagesSearch" | 
					
						
							| 
									
										
										
										
											2024-08-21 14:06:42 +02:00
										 |  |  | import { RecentSearch } from "../Logic/Geocoding/RecentSearch" | 
					
						
							| 
									
										
										
										
											2023-03-28 05:13:48 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * The state needed to render a special Visualisation. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | export interface SpecialVisualizationState { | 
					
						
							| 
									
										
										
										
											2023-09-27 22:21:35 +02:00
										 |  |  |     readonly guistate: MenuState | 
					
						
							|  |  |  |     readonly layout: LayoutConfig | 
					
						
							|  |  |  |     readonly featureSwitches: FeatureSwitchState | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     readonly layerState: LayerState | 
					
						
							| 
									
										
										
										
											2024-02-21 16:35:49 +01:00
										 |  |  |     readonly featureSummary: SummaryTileSourceRewriter | 
					
						
							| 
									
										
										
										
											2023-09-27 22:21:35 +02:00
										 |  |  |     readonly featureProperties: { | 
					
						
							| 
									
										
										
										
											2024-08-15 01:51:33 +02:00
										 |  |  |         getStore(id: string): UIEventSource<Record<string, string>>, | 
					
						
							| 
									
										
										
										
											2023-09-27 22:21:35 +02:00
										 |  |  |         trackFeature?(feature: { properties: OsmTags }) | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-21 16:35:49 +01:00
										 |  |  |     readonly indexedFeatures: IndexedFeatureSource & LayoutSource | 
					
						
							| 
									
										
										
										
											2023-09-27 22:21:35 +02:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Some features will create a new element that should be displayed. | 
					
						
							|  |  |  |      * These can be injected by appending them to this featuresource (and pinging it) | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     readonly newFeatures: WritableFeatureSource | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     readonly historicalUserLocations: WritableFeatureSource<Feature<Point>> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     readonly osmConnection: OsmConnection | 
					
						
							|  |  |  |     readonly featureSwitchUserbadge: Store<boolean> | 
					
						
							|  |  |  |     readonly featureSwitchIsTesting: Store<boolean> | 
					
						
							|  |  |  |     readonly changes: Changes | 
					
						
							|  |  |  |     readonly osmObjectDownloader: OsmObjectDownloader | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * State of the main map | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     readonly mapProperties: MapProperties & ExportableMap | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     readonly selectedElement: UIEventSource<Feature> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-08 21:46:33 +02:00
										 |  |  |     readonly currentView: FeatureSource<Feature<Polygon>> | 
					
						
							| 
									
										
										
										
											2023-11-22 19:39:19 +01:00
										 |  |  |     readonly favourites: FavouritesFeatureSource | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-27 22:21:35 +02:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * If data is currently being fetched from external sources | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     readonly dataIsLoading: Store<boolean> | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Only needed for 'ReplaceGeometryAction' | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     readonly fullNodeDatabase?: FullNodeDatabaseSource | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     readonly perLayer: ReadonlyMap<string, GeoIndexedStoreForLayer> | 
					
						
							|  |  |  |     readonly userRelatedState: { | 
					
						
							|  |  |  |         readonly imageLicense: UIEventSource<string> | 
					
						
							|  |  |  |         readonly showTags: UIEventSource<"no" | undefined | "always" | "yes" | "full"> | 
					
						
							|  |  |  |         readonly mangroveIdentity: MangroveIdentity | 
					
						
							|  |  |  |         readonly showAllQuestionsAtOnce: UIEventSource<boolean> | 
					
						
							| 
									
										
										
										
											2023-12-07 21:57:20 +01:00
										 |  |  |         readonly preferencesAsTags: UIEventSource<Record<string, string>> | 
					
						
							| 
									
										
										
										
											2023-09-27 22:21:35 +02:00
										 |  |  |         readonly language: UIEventSource<string> | 
					
						
							| 
									
										
										
										
											2024-08-22 02:54:46 +02:00
										 |  |  |         readonly recentlyVisitedThemes: Store<string[]> | 
					
						
							| 
									
										
										
										
											2023-09-27 22:21:35 +02:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     readonly imageUploadManager: ImageUploadManager | 
					
						
							| 
									
										
										
										
											2023-12-05 18:35:18 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     readonly previewedImage: UIEventSource<ProvidedImage> | 
					
						
							| 
									
										
										
										
											2024-07-19 11:37:20 +02:00
										 |  |  |     readonly nearbyImageSearcher: CombinedFetcher | 
					
						
							| 
									
										
										
										
											2023-12-24 05:01:10 +01:00
										 |  |  |     readonly geolocation: GeoLocationHandler | 
					
						
							| 
									
										
										
										
											2024-08-21 14:06:42 +02:00
										 |  |  |     readonly recentlySearched: RecentSearch | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-23 02:16:24 +02:00
										 |  |  |     getMatchingLayer(properties: Record<string, string>); | 
					
						
							| 
									
										
										
										
											2024-03-04 15:31:09 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     showCurrentLocationOn(map: Store<MlMap>): ShowDataLayer | 
					
						
							| 
									
										
										
										
											2024-08-23 02:16:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-20 15:12:51 +02:00
										 |  |  |     reportError(message: string): Promise<void> | 
					
						
							| 
									
										
										
										
											2023-03-28 05:13:48 +02:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2022-10-28 04:33:05 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | export interface SpecialVisualization { | 
					
						
							| 
									
										
										
										
											2023-09-27 22:21:35 +02:00
										 |  |  |     readonly funcName: string | 
					
						
							|  |  |  |     readonly docs: string | BaseUIElement | 
					
						
							|  |  |  |     readonly example?: string | 
					
						
							| 
									
										
										
										
											2024-01-14 22:24:35 +01:00
										 |  |  |     readonly needsUrls?: string[] | ((args: string[]) => string | string[]) | 
					
						
							| 
									
										
										
										
											2023-09-27 22:21:35 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Indicates that this special visualisation will make requests to the 'alLNodesDatabase' and that it thus should be included | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     readonly needsNodeDatabase?: boolean | 
					
						
							|  |  |  |     readonly args: { | 
					
						
							|  |  |  |         name: string | 
					
						
							|  |  |  |         defaultValue?: string | 
					
						
							|  |  |  |         doc: string | 
					
						
							|  |  |  |         required?: false | boolean | 
					
						
							|  |  |  |     }[] | 
					
						
							|  |  |  |     readonly getLayerDependencies?: (argument: string[]) => string[] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     structuredExamples?(): { feature: Feature<Geometry, Record<string, string>>; args: string[] }[] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     constr( | 
					
						
							|  |  |  |         state: SpecialVisualizationState, | 
					
						
							|  |  |  |         tagSource: UIEventSource<Record<string, string>>, | 
					
						
							|  |  |  |         argument: string[], | 
					
						
							|  |  |  |         feature: Feature, | 
					
						
							|  |  |  |         layer: LayerConfig | 
					
						
							|  |  |  |     ): BaseUIElement | 
					
						
							| 
									
										
										
										
											2022-10-28 04:33:05 +02:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2023-03-29 17:21:20 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | export type RenderingSpecification = | 
					
						
							| 
									
										
										
										
											2023-09-27 22:21:35 +02:00
										 |  |  |     | string | 
					
						
							|  |  |  |     | { | 
					
						
							| 
									
										
										
										
											2024-08-23 02:16:24 +02:00
										 |  |  |     func: SpecialVisualization | 
					
						
							|  |  |  |     args: string[] | 
					
						
							|  |  |  |     style: string | 
					
						
							|  |  |  | } |