2023-04-06 01:33:08 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								< script  lang = "ts" >  
						 
					
						
							
								
									
										
										
										
											2023-06-15 16:12:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  /**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * This component ties together all the steps that are needed to create a new point.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * There are many subcomponents which help with that
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   */
							 
						 
					
						
							
								
									
										
										
										
											2023-12-01 15:23:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  import type {  SpecialVisualizationState  }  from "../../SpecialVisualization"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  import PresetList from "./PresetList.svelte"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  import type PresetConfig from "../../../Models/ThemeConfig/PresetConfig"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  import LayerConfig from "../../../Models/ThemeConfig/LayerConfig"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  import Tr from "../../Base/Tr.svelte"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  import SubtleButton from "../../Base/SubtleButton.svelte"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  import Translations from "../../i18n/Translations.js"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  import TagHint from "../TagHint.svelte"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  import {  And  }  from "../../../Logic/Tags/And.js"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  import LoginToggle from "../../Base/LoginToggle.svelte"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  import Constants from "../../../Models/Constants.js"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  import FilteredLayer from "../../../Models/FilteredLayer"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  import {  Store ,  UIEventSource  }  from "../../../Logic/UIEventSource"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  import {  EyeIcon ,  EyeOffIcon  }  from "@rgossiaux/svelte-heroicons/solid"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  import LoginButton from "../../Base/LoginButton.svelte"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  import NewPointLocationInput from "../../BigComponents/NewPointLocationInput.svelte"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  import CreateNewNodeAction from "../../../Logic/Osm/Actions/CreateNewNodeAction"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  import {  OsmWay  }  from "../../../Logic/Osm/OsmObject"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  import {  Tag  }  from "../../../Logic/Tags/Tag"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  import type {  WayId  }  from "../../../Models/OsmFeature"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  import Loading from "../../Base/Loading.svelte"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  import type {  GlobalFilter  }  from "../../../Models/GlobalFilter"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  import {  onDestroy  }  from "svelte"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  import NextButton from "../../Base/NextButton.svelte"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  import BackButton from "../../Base/BackButton.svelte"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  import OpenBackgroundSelectorButton from "../../BigComponents/OpenBackgroundSelectorButton.svelte"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  import {  twJoin  }  from "tailwind-merge"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  import Confirm from "../../../assets/svg/Confirm.svelte"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  import Close from "../../../assets/svg/Close.svelte"
							 
						 
					
						
							
								
									
										
										
										
											2024-01-25 03:33:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  import Layers from "../../../assets/svg/Layers.svelte"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  import {  Translation  }  from "../../i18n/Translation"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  import ToSvelte from "../../Base/ToSvelte.svelte"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  import BaseUIElement from "../../BaseUIElement"
							 
						 
					
						
							
								
									
										
										
										
											2024-07-11 19:01:32 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  import TitledPanel from "../../Base/TitledPanel.svelte"
							 
						 
					
						
							
								
									
										
										
										
											2023-06-14 20:39:36 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-12-01 15:23:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  export let coordinate: {  lon : number ;  lat : number  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  export let state: SpecialVisualizationState
							 
						 
					
						
							
								
									
										
										
										
											2023-06-14 20:39:36 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-06-15 16:12:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  let selectedPreset: { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    preset: PresetConfig
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    layer: LayerConfig
							 
						 
					
						
							
								
									
										
										
										
											2024-01-25 03:33:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    icon: BaseUIElement
							 
						 
					
						
							
								
									
										
										
										
											2024-02-20 13:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    tags: Record< string ,  string > 
							 
						 
					
						
							
								
									
										
										
										
											2024-01-25 03:33:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    text: Translation
							 
						 
					
						
							
								
									
										
										
										
											2023-12-01 15:23:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } = undefined
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  let checkedOfGlobalFilters: number = 0
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  let confirmedCategory = false
							 
						 
					
						
							
								
									
										
										
										
											2023-06-15 16:12:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  $: if (selectedPreset === undefined) { 
							 
						 
					
						
							
								
									
										
										
										
											2023-12-01 15:23:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    confirmedCategory = false
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    creating = false
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    checkedOfGlobalFilters = 0
							 
						 
					
						
							
								
									
										
										
										
											2023-06-15 16:12:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  }
							 
						 
					
						
							
								
									
										
										
										
											2023-06-14 20:39:36 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-12-01 15:23:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  let flayer: FilteredLayer = undefined
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  let layerIsDisplayed: UIEventSource< boolean >  | undefined = undefined
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  let layerHasFilters: Store< boolean >  | undefined = undefined
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  let globalFilter: UIEventSource< GlobalFilter [ ] >  = state.layerState.globalFilters
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  let _globalFilter: GlobalFilter[] = []
							 
						 
					
						
							
								
									
										
										
										
											2023-06-15 16:12:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  onDestroy(
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    globalFilter.addCallbackAndRun((globalFilter) => { 
							 
						 
					
						
							
								
									
										
										
										
											2023-12-01 15:23:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      console.log("Global filters are", globalFilter)
							 
						 
					
						
							
								
									
										
										
										
											2024-11-14 02:21:10 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      _globalFilter = globalFilter?.filter((gf) => gf.onNewPoint !== undefined) ?? []
							 
						 
					
						
							
								
									
										
										
										
											2023-06-15 16:12:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    })
							 
						 
					
						
							
								
									
										
										
										
											2023-12-01 15:23:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  )
							 
						 
					
						
							
								
									
										
										
										
											2023-06-15 16:12:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  $: { 
							 
						 
					
						
							
								
									
										
										
										
											2023-12-01 15:23:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    flayer = state.layerState.filteredLayers.get(selectedPreset?.layer?.id)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    layerIsDisplayed = flayer?.isDisplayed
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    layerHasFilters = flayer?.hasFilter
							 
						 
					
						
							
								
									
										
										
										
											2023-06-15 16:12:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  }
							 
						 
					
						
							
								
									
										
										
										
											2023-12-01 15:23:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const t = Translations.t.general.add
							 
						 
					
						
							
								
									
										
										
										
											2023-06-14 20:39:36 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-12-01 15:23:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const zoom = state.mapProperties.zoom
							 
						 
					
						
							
								
									
										
										
										
											2023-06-14 20:39:36 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-12-01 15:23:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const isLoading = state.dataIsLoading
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  let preciseCoordinate: UIEventSource< {  lon : number ;  lat : number  } > = new UIEventSource(undefined)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  let snappedToObject: UIEventSource< string >  = new UIEventSource< string > (undefined)
							 
						 
					
						
							
								
									
										
										
										
											2023-06-14 20:39:36 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-06-15 16:12:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  // Small helper variable: if the map is tapped, we should let the 'Next'-button grab some attention as users have to click _that_ to continue, not the map
							 
						 
					
						
							
								
									
										
										
										
											2023-12-01 15:23:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  let preciseInputIsTapped = false
							 
						 
					
						
							
								
									
										
										
										
											2023-06-14 20:39:36 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-12-01 15:23:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  let creating = false
							 
						 
					
						
							
								
									
										
										
										
											2023-06-14 20:39:36 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-06-15 16:12:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  /**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * Call when the user should restart the flow by clicking on the map, e.g. because they disabled filters.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   * Will delete the lastclick-location
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   */
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function abort() { 
							 
						 
					
						
							
								
									
										
										
										
											2023-12-01 15:23:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    state.selectedElement.setData(undefined)
							 
						 
					
						
							
								
									
										
										
										
											2023-06-15 16:12:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    // When aborted, we force the contributors to place the pin _again_
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // This is because there might be a nearby object that was disabled; this forces them to re-evaluate the map
							 
						 
					
						
							
								
									
										
										
										
											2023-12-01 15:23:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    preciseInputIsTapped = false
							 
						 
					
						
							
								
									
										
										
										
											2023-06-15 16:12:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  }
							 
						 
					
						
							
								
									
										
										
										
											2023-04-06 01:33:08 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-06-15 16:12:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  async function confirm() { 
							 
						 
					
						
							
								
									
										
										
										
											2023-12-01 15:23:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    creating = true
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const location: {  lon : number ;  lat : number  }  = preciseCoordinate.data
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const snapTo: WayId | undefined = < WayId > snappedToObject.data
							 
						 
					
						
							
								
									
										
										
										
											2023-06-15 16:12:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const tags: Tag[] = selectedPreset.preset.tags.concat(
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      ..._globalFilter.map((f) => f?.onNewPoint?.tags ?? [])
							 
						 
					
						
							
								
									
										
										
										
											2023-12-01 15:23:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    )
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    console.log("Creating new point at", location, "snapped to", snapTo, "with tags", tags)
							 
						 
					
						
							
								
									
										
										
										
											2023-06-14 23:21:19 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-12-01 15:23:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    let snapToWay: undefined | OsmWay = undefined
							 
						 
					
						
							
								
									
										
										
										
											2023-09-27 22:38:30 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if (snapTo !== undefined &&  snapTo !== null) { 
							 
						 
					
						
							
								
									
										
										
										
											2023-12-01 15:23:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const downloaded = await state.osmObjectDownloader.DownloadObjectAsync(snapTo, 0)
							 
						 
					
						
							
								
									
										
										
										
											2023-06-15 16:12:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if (downloaded !== "deleted") { 
							 
						 
					
						
							
								
									
										
										
										
											2023-12-01 15:23:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        snapToWay = downloaded
							 
						 
					
						
							
								
									
										
										
										
											2023-06-15 16:12:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }
							 
						 
					
						
							
								
									
										
										
										
											2023-06-14 23:21:19 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-06-15 16:12:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const newElementAction = new CreateNewNodeAction(tags, location.lat, location.lon, { 
							 
						 
					
						
							
								
									
										
										
										
											2024-10-17 04:06:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      theme: state.theme?.id ?? "unkown",
							 
						 
					
						
							
								
									
										
										
										
											2023-06-15 16:12:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      changeType: "create",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      snapOnto: snapToWay,
							 
						 
					
						
							
								
									
										
										
										
											2024-07-21 10:52:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      reusePointWithinMeters: 1,
							 
						 
					
						
							
								
									
										
										
										
											2023-12-01 15:23:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    })
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    await state.changes.applyAction(newElementAction)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    state.newFeatures.features.ping()
							 
						 
					
						
							
								
									
										
										
										
											2023-06-15 16:12:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    // The 'changes' should have created a new point, which added this into the 'featureProperties'
							 
						 
					
						
							
								
									
										
										
										
											2023-12-01 15:23:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const newId = newElementAction.newElementId
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    console.log("Applied pending changes, fetching store for", newId)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const tagsStore = state.featureProperties.getStore(newId)
							 
						 
					
						
							
								
									
										
										
										
											2023-09-21 14:53:52 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if (!tagsStore) { 
							 
						 
					
						
							
								
									
										
										
										
											2023-12-01 15:23:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      console.error("Bug: no tagsStore found for", newId)
							 
						 
					
						
							
								
									
										
										
										
											2023-09-21 14:53:52 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }
							 
						 
					
						
							
								
									
										
										
										
											2023-06-15 16:12:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // Set some metainfo
							 
						 
					
						
							
								
									
										
										
										
											2023-12-01 15:23:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const properties = tagsStore.data
							 
						 
					
						
							
								
									
										
										
										
											2023-06-15 16:12:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if (snapTo) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        // metatags (starting with underscore) are not uploaded, so we can safely mark this
							 
						 
					
						
							
								
									
										
										
										
											2023-12-01 15:23:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        delete properties["_referencing_ways"]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        properties["_referencing_ways"] = `["${ snapTo } "]`
							 
						 
					
						
							
								
									
										
										
										
											2023-06-15 16:12:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      }
							 
						 
					
						
							
								
									
										
										
										
											2023-12-01 15:23:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      properties["_backend"] = state.osmConnection.Backend()
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      properties["_last_edit:timestamp"] = new Date().toISOString()
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const userdetails = state.osmConnection.userDetails.data
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      properties["_last_edit:contributor"] = userdetails.name
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      properties["_last_edit:uid"] = "" + userdetails.uid
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      tagsStore.ping()
							 
						 
					
						
							
								
									
										
										
										
											2023-05-14 03:24:13 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }
							 
						 
					
						
							
								
									
										
										
										
											2023-12-01 15:23:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const feature = state.indexedFeatures.featuresById.data.get(newId)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    console.log("Selecting feature", feature, "and opening their popup")
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    abort()
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    state.selectedElement.setData(feature)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    tagsStore.ping()
							 
						 
					
						
							
								
									
										
										
										
											2024-04-24 00:34:20 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    state.mapProperties.location.setData(location)
							 
						 
					
						
							
								
									
										
										
										
											2023-09-21 14:53:52 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function confirmSync() { 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-28 23:50:27 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    confirm()
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      .then((_) => console.debug("New point successfully handled"))
							 
						 
					
						
							
								
									
										
										
										
											2023-12-01 15:23:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      .catch((e) => console.error("Handling the new point went wrong due to", e))
							 
						 
					
						
							
								
									
										
										
										
											2023-06-15 16:12:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  }
							 
						 
					
						
							
								
									
										
										
										
											2023-04-06 01:33:08 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								< / script >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< LoginToggle  ignoreLoading = { true }  { state } >  
						 
					
						
							
								
									
										
										
										
											2023-06-15 16:12:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  <!--  This component is basically one big if/then/else flow checking for many conditions and edge cases that (in some cases) have to be handled;
 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-14 23:21:19 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      1. the first (and outermost) is of course: are we logged in?
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      2. What do we want to add?
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      3. Are all elements of this category visible? (i.e. there are no filters possibly hiding this, is the data still loading, ...) -->
							 
						 
					
						
							
								
									
										
										
										
											2023-06-15 16:12:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  < LoginButton  osmConnection = { state . osmConnection }  slot="not-logged-in" > 
							 
						 
					
						
							
								
									
										
										
										
											2023-12-04 16:09:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    < Tr  t = { Translations . t . general . add . pleaseLogin }  / > 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-15 16:12:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  < / LoginButton > 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-03 01:05:17 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  < div  class = "h-full w-full" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { #if  $zoom  <  Constants . minZoomLevelToAddNewPoint } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      < div  class = "alert" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        < Tr  t = { Translations . t . general . add . zoomInFurther }  / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { :else  if  $isLoading } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      < div  class = "alert" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        < Loading > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < Tr  t = { Translations . t . general . add . stillLoading }  / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        < / Loading > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { :else  if  selectedPreset  ===  undefined } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      <!--  First, select the correct preset  --> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      < PresetList 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { state } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        on:select={( event )  =>  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-09 16:30:26 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          selectedPreset = event.detail
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }}
							 
						 
					
						
							
								
									
										
										
										
											2023-06-15 16:12:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      />
							 
						 
					
						
							
								
									
										
										
										
											2023-11-03 01:05:17 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    { :else  if  ! $layerIsDisplayed } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      <!--  Check that the layer is enabled, so that we don't add a duplicate  --> 
							 
						 
					
						
							
								
									
										
										
										
											2024-07-11 19:01:32 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      < TitledPanel > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        < Tr  slot = "title"  t = { Translations . t . general . add . intro }  / > 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-14 20:39:36 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-07-11 19:01:32 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        < div  class = "alert flex items-center justify-center" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < EyeOffIcon  class = "w-8"  / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < Tr 
							 
						 
					
						
							
								
									
										
										
										
											2024-07-21 10:52:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            t={ Translations . t . general . add . layerNotEnabled . Subs ({ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              layer: selectedPreset.layer.name,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            })}
							 
						 
					
						
							
								
									
										
										
										
											2024-07-11 19:01:32 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          />
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        < div  class = "flex flex-wrap-reverse md:flex-nowrap" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < button 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            class="flex w-full gap-x-1"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            on:click={()  =>  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-07-21 10:52:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								              abort()
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              state.guistate.openFilterView(selectedPreset.layer)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            }}
							 
						 
					
						
							
								
									
										
										
										
											2024-07-11 19:01:32 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          >
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            < Layers  class = "w-12"  / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            < Tr  t = { Translations . t . general . add . openLayerControl }  / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < / button > 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-14 20:39:36 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-07-11 19:01:32 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          < button 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            class="primary flex w-full gap-x-1"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            on:click={()  =>  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-07-21 10:52:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								              layerIsDisplayed.setData(true)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              abort()
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            }}
							 
						 
					
						
							
								
									
										
										
										
											2024-07-11 19:01:32 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          >
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            < EyeIcon  class = "w-12"  / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            < Tr 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              t={ Translations . t . general . add . enableLayer . Subs ({  name : selectedPreset.layer.name  })} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            />
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < / button > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      < / TitledPanel > 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-03 01:05:17 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    { :else  if  $layerHasFilters } 
							 
						 
					
						
							
								
									
										
										
										
											2024-07-11 19:01:32 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      < TitledPanel > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        < Tr  slot = "title"  t = { Translations . t . general . add . intro }  / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        <!--  Some filters are enabled. The feature to add might already be mapped, but hidden  --> 
							 
						 
					
						
							
								
									
										
										
										
											2024-07-21 10:52:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        < div  class = "alert flex items-center justify-center" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < EyeOffIcon  class = "w-8"  / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < Tr  t = { Translations . t . general . add . disableFiltersExplanation }  / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        < div  class = "flex flex-wrap-reverse md:flex-nowrap" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < button 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            class="primary flex w-full gap-x-1"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            on:click={()  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              abort()
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              state.layerState.filteredLayers.get(selectedPreset.layer.id).disableAllFilters()
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            }}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          >
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            < EyeOffIcon  class = "w-12"  / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            < Tr  t = { Translations . t . general . add . disableFilters }  / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < / button > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < button 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            class="flex w-full gap-x-1"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            on:click={()  =>  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              abort()
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              state.guistate.openFilterView(selectedPreset.layer)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            }}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          >
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            < Layers  class = "w-12"  / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            < Tr  t = { Translations . t . general . add . openLayerControl }  / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < / button > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        < / div > 
							 
						 
					
						
							
								
									
										
										
										
											2024-07-11 19:01:32 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      < / TitledPanel > 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-03 01:05:17 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    { :else  if  ! confirmedCategory } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      <!--  Second, confirm the category  --> 
							 
						 
					
						
							
								
									
										
										
										
											2024-07-11 19:01:32 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      < TitledPanel > 
							 
						 
					
						
							
								
									
										
										
										
											2024-07-21 10:52:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        < Tr 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          slot="title"
							 
						 
					
						
							
								
									
										
										
										
											2023-11-03 01:05:17 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          t={ Translations . t . general . add . confirmTitle . Subs ({  title : selectedPreset.preset.title  })} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        />
							 
						 
					
						
							
								
									
										
										
										
											2023-06-14 20:39:36 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-07-21 10:52:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        { #if  selectedPreset . preset . description } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < Tr  t = { selectedPreset . preset . description }  / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { /if } 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-14 23:21:19 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-07-21 10:52:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        { #if  selectedPreset . preset . exampleImages } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < h3 > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { #if  selectedPreset . preset . exampleImages . length  ===  1 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              < Tr  t = { Translations . t . general . example }  / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { : else } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              < Tr  t = { Translations . t . general . examples }  / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { /if } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < / h3 > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < span  class = "flex flex-wrap items-stretch" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { #each  selectedPreset . preset . exampleImages  as  src } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              < img  { src }  class = "m-1 h-64 w-auto rounded-lg"  /> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { /each } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < / span > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { /if } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        < TagHint 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          embedIn={( tags )  =>  t . presetInfo . Subs ({  tags  })} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          { state } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          tags={ new  And ( selectedPreset . preset . tags )} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        />
							 
						 
					
						
							
								
									
										
										
										
											2023-06-14 20:39:36 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-07-21 10:52:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        < div  class = "flex w-full flex-wrap-reverse md:flex-nowrap" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < BackButton  on:click = {()  =>  ( selectedPreset  =  undefined )}  clss="w-full" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            < Tr  t = { t . backToSelect }  / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < / BackButton > 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-14 20:39:36 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-07-21 10:52:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          < NextButton  on:click = {()  =>  ( confirmedCategory  =  true )}  clss="primary  w-full " > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            < div  slot = "image"  class = "relative" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              < ToSvelte  construct = { selectedPreset . icon }  / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              < Confirm  class = "absolute bottom-0 right-0 h-4 w-4"  / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            < div  class = "w-full" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              < Tr  t = { selectedPreset . text }  / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < / NextButton > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        < / div > 
							 
						 
					
						
							
								
									
										
										
										
											2024-07-11 19:01:32 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      < / TitledPanel > 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-03 01:05:17 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    { :else  if  _globalFilter ? . length  >  0  &&  _globalFilter ? . length  >  checkedOfGlobalFilters } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      < Tr  t = { _globalFilter [ checkedOfGlobalFilters ]. onNewPoint ? . safetyCheck }  cls="mx-12"  /> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      < SubtleButton 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        on:click={()  =>  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-09 16:30:26 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          checkedOfGlobalFilters = checkedOfGlobalFilters + 1
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }}
							 
						 
					
						
							
								
									
										
										
										
											2023-11-03 01:05:17 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      >
							 
						 
					
						
							
								
									
										
										
										
											2023-11-19 04:38:34 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        < Confirm  slot = "image"  class = "h-12 w-12"  / > 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-03 01:05:17 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        < Tr 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          slot="message"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          t={ _globalFilter [ checkedOfGlobalFilters ]. onNewPoint ? . confirmAddNew . Subs ({ 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-20 13:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            preset: selectedPreset.text,
							 
						 
					
						
							
								
									
										
										
										
											2023-11-09 16:30:26 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          })}
							 
						 
					
						
							
								
									
										
										
										
											2023-11-03 01:05:17 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        />
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      < / SubtleButton > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      < SubtleButton 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        on:click={()  =>  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-09 16:30:26 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          globalFilter.setData([])
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          abort()
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }}
							 
						 
					
						
							
								
									
										
										
										
											2023-11-03 01:05:17 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      >
							 
						 
					
						
							
								
									
										
										
										
											2023-11-19 04:38:34 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        < Close  slot = "image"  class = "h-8 w-8"  / > 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-03 01:05:17 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        < Tr  slot = "message"  t = { Translations . t . general . cancel }  / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      < / SubtleButton > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { :else  if  ! creating } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-09 16:30:26 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      < div  class = "flex h-full flex-col" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        < div  class = "min-h-20 relative h-full w-full p-1" > 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-03 01:05:17 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          < div  class = "h-full w-full overflow-hidden rounded-xl" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            < NewPointLocationInput 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              on:click={()  =>  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-09 16:30:26 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                preciseInputIsTapped = true
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              }}
							 
						 
					
						
							
								
									
										
										
										
											2023-11-03 01:05:17 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								              value={ preciseCoordinate } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              snappedTo={ snappedToObject } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              { state } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              { coordinate } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              targetLayer={ selectedPreset . layer } 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-12 02:04:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								              presetProperties={ selectedPreset . preset . tags } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-03 01:05:17 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								              snapToLayers={ selectedPreset . preset . preciseInput . snapToLayers } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            />
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < / div > 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-14 23:21:19 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-03 01:05:17 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          < div 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            class={ twJoin ( 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-09 16:30:26 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								              !preciseInputIsTapped & &  "hidden",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              "absolute top-0 flex w-full justify-center p-12"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            )}
							 
						 
					
						
							
								
									
										
										
										
											2023-11-03 01:05:17 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          >
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            <!--  This is an _extra_ button that appears when the map is tapped  -  see usertest 2023 - 01 - 07  --> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            < NextButton  on:click = { confirmSync }  clss="primary  w-fit " > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              < div  class = "flex w-full justify-end gap-x-2" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                < Tr  t = { Translations . t . general . add . confirmLocation }  / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            < / NextButton > 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-15 16:12:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          < / div > 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-14 20:39:36 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-03 01:05:17 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          < div  class = "absolute bottom-0 left-0 p-4" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            < OpenBackgroundSelectorButton  { state }  /> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        < div  class = "flex flex-wrap-reverse md:flex-nowrap" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < BackButton  on:click = {()  =>  ( selectedPreset  =  undefined )}  clss="w-full" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            < Tr  t = { t . backToSelect }  / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < / BackButton > 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-14 23:21:19 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-03 01:05:17 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          < NextButton  on:click = { confirm }  clss= { "primary w-full" } > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            < div  class = "flex w-full justify-end gap-x-2" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              < Tr  t = { Translations . t . general . add . confirmLocation }  / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < / NextButton > 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-14 23:21:19 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        < / div > 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-03 01:05:17 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { : else } 
							 
						 
					
						
							
								
									
										
										
										
											2024-07-11 19:01:32 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      < Loading > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        < Tr  t = { Translations . t . general . add . creating }  / > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      < / Loading > 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-03 01:05:17 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    { /if } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  < / div > 
							 
						 
					
						
							
								
									
										
										
										
											2023-04-06 01:33:08 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								< / LoginToggle >