| 
									
										
										
										
											2023-06-16 02:36:11 +02:00
										 |  |  | <script lang="ts"> | 
					
						
							| 
									
										
										
										
											2023-12-01 15:23:28 +01:00
										 |  |  |   import NextButton from "./Base/NextButton.svelte" | 
					
						
							|  |  |  |   import { Store, UIEventSource } from "../Logic/UIEventSource" | 
					
						
							|  |  |  |   import EditLayerState, { EditThemeState } from "./Studio/EditLayerState" | 
					
						
							|  |  |  |   import EditLayer from "./Studio/EditLayer.svelte" | 
					
						
							|  |  |  |   import Loading from "../assets/svg/Loading.svelte" | 
					
						
							|  |  |  |   import StudioServer from "./Studio/StudioServer" | 
					
						
							|  |  |  |   import LoginToggle from "./Base/LoginToggle.svelte" | 
					
						
							|  |  |  |   import { OsmConnection } from "../Logic/Osm/OsmConnection" | 
					
						
							|  |  |  |   import { QueryParameters } from "../Logic/Web/QueryParameters" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   import layerSchemaRaw from "../../src/assets/schemas/layerconfigmeta.json" | 
					
						
							|  |  |  |   import layoutSchemaRaw from "../../src/assets/schemas/layoutconfigmeta.json" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   import If from "./Base/If.svelte" | 
					
						
							|  |  |  |   import BackButton from "./Base/BackButton.svelte" | 
					
						
							|  |  |  |   import ChooseLayerToEdit from "./Studio/ChooseLayerToEdit.svelte" | 
					
						
							|  |  |  |   import FloatOver from "./Base/FloatOver.svelte" | 
					
						
							|  |  |  |   import Walkthrough from "./Walkthrough/Walkthrough.svelte" | 
					
						
							|  |  |  |   import * as intro from "../assets/studio_introduction.json" | 
					
						
							|  |  |  |   import * as intro_tagrenderings from "../assets/studio_tagrenderings_intro.json" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   import { QuestionMarkCircleIcon } from "@babeard/svelte-heroicons/mini" | 
					
						
							|  |  |  |   import type { ConfigMeta } from "./Studio/configMeta" | 
					
						
							|  |  |  |   import EditTheme from "./Studio/EditTheme.svelte" | 
					
						
							|  |  |  |   import * as meta from "../../package.json" | 
					
						
							|  |  |  |   import Checkbox from "./Base/Checkbox.svelte" | 
					
						
							|  |  |  |   import { Utils } from "../Utils" | 
					
						
							|  |  |  |   import Translations from "./i18n/Translations" | 
					
						
							|  |  |  |   import Tr from "./Base/Tr.svelte" | 
					
						
							|  |  |  |   import Add from "../assets/svg/Add.svelte" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   export let studioUrl = | 
					
						
							| 
									
										
										
										
											2023-11-09 16:30:26 +01:00
										 |  |  |     window.location.hostname === "127.0.0.2" | 
					
						
							|  |  |  |       ? "http://127.0.0.1:1235" | 
					
						
							|  |  |  |       : "https://studio.mapcomplete.org" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-01-19 17:31:35 +01:00
										 |  |  |   const oauth_token = QueryParameters.GetQueryParameter( | 
					
						
							|  |  |  |     "oauth_token", | 
					
						
							|  |  |  |     undefined, | 
					
						
							| 
									
										
										
										
											2024-02-20 13:33:38 +01:00
										 |  |  |     "Used to complete the login" | 
					
						
							| 
									
										
										
										
											2023-11-09 16:30:26 +01:00
										 |  |  |   ) | 
					
						
							| 
									
										
										
										
											2024-01-19 17:31:35 +01:00
										 |  |  |   let osmConnection = new OsmConnection({ | 
					
						
							|  |  |  |     oauth_token, | 
					
						
							|  |  |  |   }) | 
					
						
							| 
									
										
										
										
											2023-11-09 16:30:26 +01:00
										 |  |  |   const expertMode = UIEventSource.asBoolean( | 
					
						
							|  |  |  |     osmConnection.GetPreference("studio-expert-mode", "false", { | 
					
						
							|  |  |  |       documentation: "Indicates if more options are shown in mapcomplete studio", | 
					
						
							| 
									
										
										
										
											2024-02-20 13:33:38 +01:00
										 |  |  |     }) | 
					
						
							| 
									
										
										
										
											2023-11-09 16:30:26 +01:00
										 |  |  |   ) | 
					
						
							|  |  |  |   expertMode.addCallbackAndRunD((expert) => console.log("Expert mode is", expert)) | 
					
						
							|  |  |  |   const createdBy = osmConnection.userDetails.data.name | 
					
						
							|  |  |  |   const uid = osmConnection.userDetails.map((ud) => ud?.uid) | 
					
						
							|  |  |  |   const studio = new StudioServer(studioUrl, uid) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   let layersWithErr = UIEventSource.FromPromiseWithErr(studio.fetchOverview()) | 
					
						
							| 
									
										
										
										
											2024-02-20 13:33:38 +01:00
										 |  |  |   let layers: Store<{ owner: number; id: string }[]> = layersWithErr.mapD((l) => | 
					
						
							|  |  |  |     l["success"]?.filter((l) => l.category === "layers") | 
					
						
							| 
									
										
										
										
											2023-11-09 16:30:26 +01:00
										 |  |  |   ) | 
					
						
							|  |  |  |   let selfLayers = layers.mapD((ls) => ls.filter((l) => l.owner === uid.data), [uid]) | 
					
						
							|  |  |  |   let otherLayers = layers.mapD( | 
					
						
							|  |  |  |     (ls) => ls.filter((l) => l.owner !== undefined && l.owner !== uid.data), | 
					
						
							| 
									
										
										
										
											2024-02-20 13:33:38 +01:00
										 |  |  |     [uid] | 
					
						
							| 
									
										
										
										
											2023-11-09 16:30:26 +01:00
										 |  |  |   ) | 
					
						
							|  |  |  |   let officialLayers = layers.mapD((ls) => ls.filter((l) => l.owner === undefined), [uid]) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-20 13:33:38 +01:00
										 |  |  |   let themes: Store<{ owner: number; id: string }[]> = layersWithErr.mapD((l) => | 
					
						
							|  |  |  |     l["success"]?.filter((l) => l.category === "themes") | 
					
						
							| 
									
										
										
										
											2023-11-09 16:30:26 +01:00
										 |  |  |   ) | 
					
						
							|  |  |  |   let selfThemes = themes.mapD((ls) => ls.filter((l) => l.owner === uid.data), [uid]) | 
					
						
							|  |  |  |   let otherThemes = themes.mapD( | 
					
						
							|  |  |  |     (ls) => ls.filter((l) => l.owner !== undefined && l.owner !== uid.data), | 
					
						
							| 
									
										
										
										
											2024-02-20 13:33:38 +01:00
										 |  |  |     [uid] | 
					
						
							| 
									
										
										
										
											2023-11-09 16:30:26 +01:00
										 |  |  |   ) | 
					
						
							|  |  |  |   let officialThemes = themes.mapD((ls) => ls.filter((l) => l.owner === undefined), [uid]) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   let state: | 
					
						
							|  |  |  |     | undefined | 
					
						
							|  |  |  |     | "edit_layer" | 
					
						
							|  |  |  |     | "edit_theme" | 
					
						
							|  |  |  |     | "editing_layer" | 
					
						
							|  |  |  |     | "editing_theme" | 
					
						
							|  |  |  |     | "loading" = undefined | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   const layerSchema: ConfigMeta[] = <any>layerSchemaRaw | 
					
						
							|  |  |  |   let editLayerState = new EditLayerState(layerSchema, studio, osmConnection, { expertMode }) | 
					
						
							| 
									
										
										
										
											2023-11-07 18:51:50 +01:00
										 |  |  |   let showIntro = editLayerState.showIntro | 
					
						
							| 
									
										
										
										
											2023-10-30 13:45:44 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-11-09 16:30:26 +01:00
										 |  |  |   const layoutSchema: ConfigMeta[] = <any>layoutSchemaRaw | 
					
						
							|  |  |  |   let editThemeState = new EditThemeState(layoutSchema, studio, { expertMode }) | 
					
						
							| 
									
										
										
										
											2023-10-30 13:45:44 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-11-09 16:30:26 +01:00
										 |  |  |   const version = meta.version | 
					
						
							| 
									
										
										
										
											2023-11-07 02:13:16 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-10-24 22:01:10 +02:00
										 |  |  |   async function editLayer(event: Event) { | 
					
						
							| 
									
										
										
										
											2024-01-03 14:57:26 +01:00
										 |  |  |     const layerId: { owner: number; id: string } = event["detail"] | 
					
						
							| 
									
										
										
										
											2023-11-09 16:30:26 +01:00
										 |  |  |     state = "loading" | 
					
						
							|  |  |  |     editLayerState.startSavingUpdates(false) | 
					
						
							|  |  |  |     editLayerState.configuration.setData(await studio.fetch(layerId.id, "layers", layerId.owner)) | 
					
						
							|  |  |  |     editLayerState.startSavingUpdates() | 
					
						
							|  |  |  |     state = "editing_layer" | 
					
						
							| 
									
										
										
										
											2023-10-13 18:46:56 +02:00
										 |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-10-30 13:45:44 +01:00
										 |  |  |   async function editTheme(event: Event) { | 
					
						
							| 
									
										
										
										
											2024-01-03 14:57:26 +01:00
										 |  |  |     const id: { id: string; owner: number } = event["detail"] | 
					
						
							| 
									
										
										
										
											2023-11-09 16:30:26 +01:00
										 |  |  |     state = "loading" | 
					
						
							|  |  |  |     editThemeState.startSavingUpdates(false) | 
					
						
							| 
									
										
										
										
											2024-01-19 17:31:35 +01:00
										 |  |  |     const layout = await studio.fetch(id.id, "themes", id.owner) | 
					
						
							|  |  |  |     editThemeState.configuration.setData(layout) | 
					
						
							| 
									
										
										
										
											2023-11-09 16:30:26 +01:00
										 |  |  |     editThemeState.startSavingUpdates() | 
					
						
							|  |  |  |     state = "editing_theme" | 
					
						
							| 
									
										
										
										
											2023-10-30 13:45:44 +01:00
										 |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-10-13 18:46:56 +02:00
										 |  |  |   async function createNewLayer() { | 
					
						
							| 
									
										
										
										
											2023-11-09 16:30:26 +01:00
										 |  |  |     state = "loading" | 
					
						
							| 
									
										
										
										
											2023-10-30 13:45:44 +01:00
										 |  |  |     const initialLayerConfig = { | 
					
						
							| 
									
										
										
										
											2023-10-24 22:01:10 +02:00
										 |  |  |       credits: createdBy, | 
					
						
							|  |  |  |       minzoom: 15, | 
					
						
							|  |  |  |       pointRendering: [ | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |           location: ["point", "centroid"], | 
					
						
							| 
									
										
										
										
											2023-11-09 16:30:26 +01:00
										 |  |  |           marker: [ | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |               icon: "circle", | 
					
						
							|  |  |  |               color: "white", | 
					
						
							|  |  |  |             }, | 
					
						
							|  |  |  |           ], | 
					
						
							|  |  |  |         }, | 
					
						
							| 
									
										
										
										
											2023-10-24 22:01:10 +02:00
										 |  |  |       ], | 
					
						
							| 
									
										
										
										
											2023-11-05 12:05:00 +01:00
										 |  |  |       tagRenderings: ["images"], | 
					
						
							| 
									
										
										
										
											2023-11-09 16:30:26 +01:00
										 |  |  |       lineRendering: [ | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |           width: 1, | 
					
						
							|  |  |  |           color: "blue", | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |       ], | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     editLayerState.configuration.setData(initialLayerConfig) | 
					
						
							|  |  |  |     editLayerState.startSavingUpdates() | 
					
						
							|  |  |  |     state = "editing_layer" | 
					
						
							| 
									
										
										
										
											2023-10-11 04:16:52 +02:00
										 |  |  |   } | 
					
						
							| 
									
										
										
										
											2023-06-16 02:36:11 +02:00
										 |  |  | </script> | 
					
						
							| 
									
										
										
										
											2023-10-11 04:16:52 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-20 13:33:38 +01:00
										 |  |  | <If condition={layersWithErr.map((d) => d?.["error"] !== undefined)}> | 
					
						
							| 
									
										
										
										
											2023-10-16 15:06:50 +02:00
										 |  |  |   <div> | 
					
						
							|  |  |  |     <div class="alert"> | 
					
						
							|  |  |  |       Something went wrong while contacting the MapComplete Studio Server: {$layersWithErr["error"]} | 
					
						
							|  |  |  |     </div> | 
					
						
							|  |  |  |     The server might be offline. Please: | 
					
						
							|  |  |  |     <ul> | 
					
						
							| 
									
										
										
										
											2023-11-09 16:30:26 +01:00
										 |  |  |       <li>Try again in a few minutes</li> | 
					
						
							| 
									
										
										
										
											2023-10-16 15:06:50 +02:00
										 |  |  |       <li> | 
					
						
							| 
									
										
										
										
											2023-11-09 16:30:26 +01:00
										 |  |  |         Contact <a href="https://app.element.io/#/room/#MapComplete:matrix.org"> | 
					
						
							| 
									
										
										
										
											2024-02-20 13:33:38 +01:00
										 |  |  |           the MapComplete community via the chat. | 
					
						
							|  |  |  |         </a> | 
					
						
							| 
									
										
										
										
											2023-11-23 15:47:16 +01:00
										 |  |  |         Someone might be able to help you | 
					
						
							| 
									
										
										
										
											2023-10-16 15:06:50 +02:00
										 |  |  |       </li> | 
					
						
							|  |  |  |       <li> | 
					
						
							|  |  |  |         File <a href="https://github.com/pietervdvn/MapComplete/issues">an issue</a> | 
					
						
							|  |  |  |       </li> | 
					
						
							|  |  |  |       <li> | 
					
						
							|  |  |  |         Contact the devs via <a href="mailto:info@posteo.net">email</a> | 
					
						
							|  |  |  |       </li> | 
					
						
							|  |  |  |     </ul> | 
					
						
							| 
									
										
										
										
											2023-10-07 03:07:32 +02:00
										 |  |  |   </div> | 
					
						
							| 
									
										
										
										
											2023-11-09 16:30:26 +01:00
										 |  |  |   <LoginToggle ignoreLoading={true} slot="else" state={{ osmConnection }}> | 
					
						
							| 
									
										
										
										
											2023-10-16 15:06:50 +02:00
										 |  |  |     <div slot="not-logged-in"> | 
					
						
							| 
									
										
										
										
											2023-10-17 17:03:13 +02:00
										 |  |  |       <NextButton clss="primary" on:click={() => osmConnection.AttemptLogin()}> | 
					
						
							| 
									
										
										
										
											2023-10-16 15:06:50 +02:00
										 |  |  |         Please log in to use MapComplete Studio | 
					
						
							| 
									
										
										
										
											2023-10-13 18:46:56 +02:00
										 |  |  |       </NextButton> | 
					
						
							|  |  |  |     </div> | 
					
						
							| 
									
										
										
										
											2023-10-16 15:06:50 +02:00
										 |  |  |     {#if state === undefined} | 
					
						
							| 
									
										
										
										
											2023-11-09 16:30:26 +01:00
										 |  |  |       <div class="flex h-full flex-col justify-between p-4"> | 
					
						
							|  |  |  |         <div class="flex w-full flex-col"> | 
					
						
							| 
									
										
										
										
											2023-11-07 02:13:16 +01:00
										 |  |  |           <h1>MapComplete Studio</h1> | 
					
						
							| 
									
										
										
										
											2023-10-24 22:01:10 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-01-21 23:50:23 +01:00
										 |  |  |           <NextButton on:click={() => (state = "edit_layer")}> | 
					
						
							|  |  |  |             <div class="flex flex-col items-start"> | 
					
						
							| 
									
										
										
										
											2024-02-20 13:33:38 +01:00
										 |  |  |               <div>Edit an existing layer</div> | 
					
						
							|  |  |  |               <div class="font-normal"> | 
					
						
							|  |  |  |                 Edit layers you created, others created or from the official MapComplete | 
					
						
							|  |  |  |               </div> | 
					
						
							| 
									
										
										
										
											2024-01-21 23:50:23 +01:00
										 |  |  |             </div> | 
					
						
							|  |  |  |           </NextButton> | 
					
						
							| 
									
										
										
										
											2023-11-09 16:30:26 +01:00
										 |  |  |           <NextButton on:click={() => createNewLayer()}>Create a new layer</NextButton> | 
					
						
							|  |  |  |           <NextButton on:click={() => (state = "edit_theme")}>Edit a theme</NextButton> | 
					
						
							|  |  |  |           <NextButton | 
					
						
							|  |  |  |             on:click={() => { | 
					
						
							|  |  |  |               editThemeState.configuration.setData({}) | 
					
						
							| 
									
										
										
										
											2023-11-10 16:34:35 +01:00
										 |  |  |               editThemeState.startSavingUpdates() | 
					
						
							| 
									
										
										
										
											2023-11-09 16:30:26 +01:00
										 |  |  |               state = "editing_theme" | 
					
						
							|  |  |  |             }} | 
					
						
							|  |  |  |           > | 
					
						
							| 
									
										
										
										
											2023-10-24 22:01:10 +02:00
										 |  |  |             Create a new theme | 
					
						
							| 
									
										
										
										
											2023-10-16 15:06:50 +02:00
										 |  |  |           </NextButton> | 
					
						
							| 
									
										
										
										
											2023-11-16 18:46:22 +01:00
										 |  |  |           <button | 
					
						
							|  |  |  |             class="small" | 
					
						
							| 
									
										
										
										
											2023-11-09 16:30:26 +01:00
										 |  |  |             on:click={() => { | 
					
						
							|  |  |  |               showIntro.setData("intro") | 
					
						
							|  |  |  |             }} | 
					
						
							|  |  |  |           > | 
					
						
							|  |  |  |             <QuestionMarkCircleIcon class="h-6 w-6" /> | 
					
						
							| 
									
										
										
										
											2023-10-24 22:01:10 +02:00
										 |  |  |             Show the introduction again | 
					
						
							| 
									
										
										
										
											2023-11-16 18:46:22 +01:00
										 |  |  |           </button> | 
					
						
							| 
									
										
										
										
											2023-12-01 15:23:28 +01:00
										 |  |  |           <a class="button flex" href={Utils.HomepageLink()}> | 
					
						
							| 
									
										
										
										
											2023-11-19 04:38:34 +01:00
										 |  |  |             <Add class="h-6 w-6" /> | 
					
						
							| 
									
										
										
										
											2023-11-16 18:46:22 +01:00
										 |  |  |             <Tr t={Translations.t.general.backToIndex} /> | 
					
						
							|  |  |  |           </a> | 
					
						
							| 
									
										
										
										
											2023-10-24 22:01:10 +02:00
										 |  |  |         </div> | 
					
						
							| 
									
										
										
										
											2023-11-07 02:13:16 +01:00
										 |  |  |         <div> | 
					
						
							| 
									
										
										
										
											2023-11-09 16:30:26 +01:00
										 |  |  |           <Checkbox selected={expertMode}>Enable more options (expert mode)</Checkbox> | 
					
						
							|  |  |  |           <span class="subtle">MapComplete version {version}</span> | 
					
						
							| 
									
										
										
										
											2023-11-07 02:13:16 +01:00
										 |  |  |         </div> | 
					
						
							| 
									
										
										
										
											2023-10-24 22:01:10 +02:00
										 |  |  |       </div> | 
					
						
							|  |  |  |     {:else if state === "edit_layer"} | 
					
						
							| 
									
										
										
										
											2023-11-09 16:30:26 +01:00
										 |  |  |       <div class="m-4 flex flex-col"> | 
					
						
							|  |  |  |         <BackButton | 
					
						
							|  |  |  |           clss="small p-1" | 
					
						
							|  |  |  |           imageClass="w-8 h-8" | 
					
						
							|  |  |  |           on:click={() => { | 
					
						
							|  |  |  |             state = undefined | 
					
						
							|  |  |  |           }} | 
					
						
							|  |  |  |         > | 
					
						
							|  |  |  |           MapComplete Studio | 
					
						
							| 
									
										
										
										
											2023-10-24 22:01:10 +02:00
										 |  |  |         </BackButton> | 
					
						
							|  |  |  |         <h2>Choose a layer to edit</h2> | 
					
						
							| 
									
										
										
										
											2023-11-02 04:35:32 +01:00
										 |  |  |         <ChooseLayerToEdit {osmConnection} layerIds={$selfLayers} on:layerSelected={editLayer}> | 
					
						
							| 
									
										
										
										
											2023-10-24 22:01:10 +02:00
										 |  |  |           <h3 slot="title">Your layers</h3> | 
					
						
							|  |  |  |         </ChooseLayerToEdit> | 
					
						
							| 
									
										
										
										
											2023-10-30 13:45:44 +01:00
										 |  |  |         <h3>Layers by other contributors</h3> | 
					
						
							| 
									
										
										
										
											2024-02-20 13:33:38 +01:00
										 |  |  |         <div> | 
					
						
							|  |  |  |           Selecting a layer will create a copy in your account that you edit. You will not change | 
					
						
							|  |  |  |           the version of the other contributor | 
					
						
							|  |  |  |         </div> | 
					
						
							| 
									
										
										
										
											2023-11-02 04:35:32 +01:00
										 |  |  |         <ChooseLayerToEdit {osmConnection} layerIds={$otherLayers} on:layerSelected={editLayer} /> | 
					
						
							| 
									
										
										
										
											2023-10-30 13:45:44 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |         <h3>Official layers by MapComplete</h3> | 
					
						
							| 
									
										
										
										
											2024-02-20 13:33:38 +01:00
										 |  |  |         <div> | 
					
						
							|  |  |  |           Selecting a layer will create a copy in your account. You will not change the version that | 
					
						
							|  |  |  |           is in MapComplete | 
					
						
							|  |  |  |         </div> | 
					
						
							| 
									
										
										
										
											2023-11-09 16:30:26 +01:00
										 |  |  |         <ChooseLayerToEdit | 
					
						
							|  |  |  |           {osmConnection} | 
					
						
							|  |  |  |           layerIds={$officialLayers} | 
					
						
							|  |  |  |           on:layerSelected={editLayer} | 
					
						
							|  |  |  |         /> | 
					
						
							| 
									
										
										
										
											2023-10-30 13:45:44 +01:00
										 |  |  |       </div> | 
					
						
							|  |  |  |     {:else if state === "edit_theme"} | 
					
						
							| 
									
										
										
										
											2023-11-09 16:30:26 +01:00
										 |  |  |       <div class="m-4 flex flex-col"> | 
					
						
							|  |  |  |         <BackButton | 
					
						
							|  |  |  |           clss="small p-1" | 
					
						
							|  |  |  |           imageClass="w-8 h-8" | 
					
						
							|  |  |  |           on:click={() => { | 
					
						
							|  |  |  |             state = undefined | 
					
						
							|  |  |  |           }} | 
					
						
							|  |  |  |         > | 
					
						
							|  |  |  |           MapComplete Studio | 
					
						
							| 
									
										
										
										
											2023-10-30 13:45:44 +01:00
										 |  |  |         </BackButton> | 
					
						
							|  |  |  |         <h2>Choose a theme to edit</h2> | 
					
						
							| 
									
										
										
										
											2023-11-02 04:35:32 +01:00
										 |  |  |         <ChooseLayerToEdit {osmConnection} layerIds={$selfThemes} on:layerSelected={editTheme}> | 
					
						
							| 
									
										
										
										
											2023-10-30 13:45:44 +01:00
										 |  |  |           <h3 slot="title">Your themes</h3> | 
					
						
							|  |  |  |         </ChooseLayerToEdit> | 
					
						
							|  |  |  |         <h3>Themes by other contributors</h3> | 
					
						
							| 
									
										
										
										
											2023-11-02 04:35:32 +01:00
										 |  |  |         <ChooseLayerToEdit {osmConnection} layerIds={$otherThemes} on:layerSelected={editTheme} /> | 
					
						
							| 
									
										
										
										
											2023-10-30 13:45:44 +01:00
										 |  |  |         <h3>Official themes by MapComplete</h3> | 
					
						
							| 
									
										
										
										
											2023-11-09 16:30:26 +01:00
										 |  |  |         <ChooseLayerToEdit | 
					
						
							|  |  |  |           {osmConnection} | 
					
						
							|  |  |  |           layerIds={$officialThemes} | 
					
						
							|  |  |  |           on:layerSelected={editTheme} | 
					
						
							|  |  |  |         /> | 
					
						
							| 
									
										
										
										
											2023-10-16 15:06:50 +02:00
										 |  |  |       </div> | 
					
						
							|  |  |  |     {:else if state === "loading"} | 
					
						
							| 
									
										
										
										
											2023-11-09 16:30:26 +01:00
										 |  |  |       <div class="h-8 w-8"> | 
					
						
							| 
									
										
										
										
											2023-10-16 15:06:50 +02:00
										 |  |  |         <Loading /> | 
					
						
							|  |  |  |       </div> | 
					
						
							|  |  |  |     {:else if state === "editing_layer"} | 
					
						
							| 
									
										
										
										
											2023-12-19 22:08:00 +01:00
										 |  |  |       <EditLayer | 
					
						
							|  |  |  |         state={editLayerState} | 
					
						
							|  |  |  |         backToStudio={() => { | 
					
						
							|  |  |  |           state = undefined | 
					
						
							|  |  |  |         }} | 
					
						
							|  |  |  |       > | 
					
						
							| 
									
										
										
										
											2023-11-09 16:30:26 +01:00
										 |  |  |         <BackButton | 
					
						
							|  |  |  |           clss="small p-1" | 
					
						
							|  |  |  |           imageClass="w-8 h-8" | 
					
						
							|  |  |  |           on:click={() => { | 
					
						
							|  |  |  |             state = undefined | 
					
						
							|  |  |  |           }} | 
					
						
							|  |  |  |         > | 
					
						
							|  |  |  |           MapComplete Studio | 
					
						
							| 
									
										
										
										
											2023-10-24 22:01:10 +02:00
										 |  |  |         </BackButton> | 
					
						
							| 
									
										
										
										
											2023-10-21 09:35:54 +02:00
										 |  |  |       </EditLayer> | 
					
						
							| 
									
										
										
										
											2023-10-30 13:45:44 +01:00
										 |  |  |     {:else if state === "editing_theme"} | 
					
						
							| 
									
										
										
										
											2023-11-07 02:13:16 +01:00
										 |  |  |       <EditTheme state={editThemeState}> | 
					
						
							| 
									
										
										
										
											2023-11-09 16:30:26 +01:00
										 |  |  |         <BackButton | 
					
						
							|  |  |  |           clss="small p-1" | 
					
						
							|  |  |  |           imageClass="w-8 h-8" | 
					
						
							|  |  |  |           on:click={() => { | 
					
						
							|  |  |  |             state = undefined | 
					
						
							|  |  |  |           }} | 
					
						
							|  |  |  |         > | 
					
						
							|  |  |  |           MapComplete Studio | 
					
						
							| 
									
										
										
										
											2023-10-30 13:45:44 +01:00
										 |  |  |         </BackButton> | 
					
						
							|  |  |  |       </EditTheme> | 
					
						
							| 
									
										
										
										
											2023-10-16 15:06:50 +02:00
										 |  |  |     {/if} | 
					
						
							| 
									
										
										
										
											2023-10-24 22:01:10 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-12-02 00:24:55 +01:00
										 |  |  |     {#if { intro, tagrenderings: intro_tagrenderings }[$showIntro]?.sections} | 
					
						
							|  |  |  |       <FloatOver | 
					
						
							|  |  |  |         on:close={() => { | 
					
						
							| 
									
										
										
										
											2023-12-19 22:08:00 +01:00
										 |  |  |           showIntro.setData("no") | 
					
						
							|  |  |  |         }} | 
					
						
							| 
									
										
										
										
											2023-12-02 00:24:55 +01:00
										 |  |  |       > | 
					
						
							|  |  |  |         <div class="flex h-full p-4 pr-12"> | 
					
						
							|  |  |  |           <Walkthrough | 
					
						
							|  |  |  |             pages={{ intro, tagrenderings: intro_tagrenderings }[$showIntro]?.sections} | 
					
						
							|  |  |  |             on:done={() => { | 
					
						
							| 
									
										
										
										
											2023-12-19 22:08:00 +01:00
										 |  |  |               showIntro.setData("no") | 
					
						
							|  |  |  |             }} | 
					
						
							| 
									
										
										
										
											2023-12-02 00:24:55 +01:00
										 |  |  |           /> | 
					
						
							|  |  |  |         </div> | 
					
						
							|  |  |  |       </FloatOver> | 
					
						
							|  |  |  |     {/if} | 
					
						
							|  |  |  |   </LoginToggle> | 
					
						
							|  |  |  | </If> |