| 
									
										
										
										
											2023-11-19 01:05:15 +01:00
										 |  |  | <script lang="ts"> | 
					
						
							| 
									
										
										
										
											2023-12-01 15:23:28 +01:00
										 |  |  |   import { OsmConnectionFeatureSwitches } from "../Logic/State/FeatureSwitchState" | 
					
						
							|  |  |  |   import { OsmConnection } from "../Logic/Osm/OsmConnection" | 
					
						
							|  |  |  |   import { QueryParameters } from "../Logic/Web/QueryParameters" | 
					
						
							|  |  |  |   import UserRelatedState from "../Logic/State/UserRelatedState" | 
					
						
							|  |  |  |   import LanguagePicker from "./InputElement/LanguagePicker.svelte" | 
					
						
							|  |  |  |   import Translations from "./i18n/Translations" | 
					
						
							|  |  |  |   import Logo from "../assets/svg/Logo.svelte" | 
					
						
							|  |  |  |   import Tr from "./Base/Tr.svelte" | 
					
						
							|  |  |  |   import MoreScreen from "./BigComponents/MoreScreen" | 
					
						
							|  |  |  |   import LoginToggle from "./Base/LoginToggle.svelte" | 
					
						
							|  |  |  |   import Pencil from "../assets/svg/Pencil.svelte" | 
					
						
							|  |  |  |   import Constants from "../Models/Constants" | 
					
						
							| 
									
										
										
										
											2023-12-13 02:16:53 +01:00
										 |  |  |   import { Store, UIEventSource } from "../Logic/UIEventSource" | 
					
						
							|  |  |  |   import { placeholder } from "../Utils/placeholder" | 
					
						
							|  |  |  |   import { SearchIcon } from "@rgossiaux/svelte-heroicons/solid" | 
					
						
							|  |  |  |   import ThemesList from "./BigComponents/ThemesList.svelte" | 
					
						
							|  |  |  |   import { LayoutInformation } from "../Models/ThemeConfig/LayoutConfig" | 
					
						
							|  |  |  |   import * as themeOverview from "../assets/generated/theme_overview.json" | 
					
						
							|  |  |  |   import UnofficialThemeList from "./BigComponents/UnofficialThemeList.svelte" | 
					
						
							| 
									
										
										
										
											2024-01-22 04:29:51 +01:00
										 |  |  |   import Eye from "../assets/svg/Eye.svelte" | 
					
						
							| 
									
										
										
										
											2024-06-16 16:27:58 +02:00
										 |  |  |   import LoginButton from "./Base/LoginButton.svelte" | 
					
						
							|  |  |  |   import ChevronDoubleRight from "@babeard/svelte-heroicons/mini/ChevronDoubleRight" | 
					
						
							|  |  |  |   import Mastodon from "../assets/svg/Mastodon.svelte" | 
					
						
							|  |  |  |   import Liberapay from "../assets/svg/Liberapay.svelte" | 
					
						
							|  |  |  |   import Bug from "../assets/svg/Bug.svelte" | 
					
						
							|  |  |  |   import Github from "../assets/svg/Github.svelte" | 
					
						
							| 
									
										
										
										
											2024-06-21 02:46:54 +02:00
										 |  |  |   import { Utils } from "../Utils" | 
					
						
							|  |  |  |   import { ArrowTrendingUp } from "@babeard/svelte-heroicons/solid/ArrowTrendingUp" | 
					
						
							| 
									
										
										
										
											2024-09-02 03:47:54 +02:00
										 |  |  |   import Searchbar from "./Base/Searchbar.svelte" | 
					
						
							| 
									
										
										
										
											2023-11-19 01:05:15 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-12-01 15:23:28 +01:00
										 |  |  |   const featureSwitches = new OsmConnectionFeatureSwitches() | 
					
						
							| 
									
										
										
										
											2023-11-19 01:05:15 +01:00
										 |  |  |   const osmConnection = new OsmConnection({ | 
					
						
							|  |  |  |     fakeUser: featureSwitches.featureSwitchFakeUser.data, | 
					
						
							|  |  |  |     oauth_token: QueryParameters.GetQueryParameter( | 
					
						
							|  |  |  |       "oauth_token", | 
					
						
							|  |  |  |       undefined, | 
					
						
							| 
									
										
										
										
											2023-12-21 01:46:18 +01:00
										 |  |  |       "Used to complete the login" | 
					
						
							| 
									
										
										
										
											2024-06-16 16:41:57 +02:00
										 |  |  |     ), | 
					
						
							| 
									
										
										
										
											2023-12-01 15:23:28 +01:00
										 |  |  |   }) | 
					
						
							|  |  |  |   const state = new UserRelatedState(osmConnection) | 
					
						
							|  |  |  |   const t = Translations.t.index | 
					
						
							| 
									
										
										
										
											2023-12-13 02:16:53 +01:00
										 |  |  |   const tr = Translations.t.general.morescreen | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-12-01 15:23:28 +01:00
										 |  |  |   let userLanguages = osmConnection.userDetails.map((ud) => ud.languages) | 
					
						
							| 
									
										
										
										
											2024-09-02 03:47:54 +02:00
										 |  |  |   let themeSearchText: UIEventSource<string | undefined> = new UIEventSource<string>("") | 
					
						
							| 
									
										
										
										
											2023-12-13 02:16:53 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-16 16:41:57 +02:00
										 |  |  |   document.addEventListener("keydown", function (event) { | 
					
						
							| 
									
										
										
										
											2023-12-13 02:16:53 +01:00
										 |  |  |     if (event.ctrlKey && event.code === "KeyF") { | 
					
						
							|  |  |  |       document.getElementById("theme-search")?.focus() | 
					
						
							|  |  |  |       event.preventDefault() | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   let visitedHiddenThemes: Store<LayoutInformation[]> | 
					
						
							|  |  |  |   const hiddenThemes: LayoutInformation[] = | 
					
						
							|  |  |  |     (themeOverview["default"] ?? themeOverview)?.filter((layout) => layout.hideFromOverview) ?? [] | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     const prefix = "mapcomplete-hidden-theme-" | 
					
						
							|  |  |  |     const userPreferences = state.osmConnection.preferencesHandler.preferences | 
					
						
							| 
									
										
										
										
											2023-12-21 01:46:18 +01:00
										 |  |  |     visitedHiddenThemes = userPreferences.map((preferences) => { | 
					
						
							| 
									
										
										
										
											2023-12-13 02:16:53 +01:00
										 |  |  |       const knownIds = new Set<string>( | 
					
						
							|  |  |  |         Object.keys(preferences) | 
					
						
							|  |  |  |           .filter((key) => key.startsWith(prefix)) | 
					
						
							| 
									
										
										
										
											2023-12-21 01:46:18 +01:00
										 |  |  |           .map((key) => key.substring(prefix.length, key.length - "-enabled".length)) | 
					
						
							| 
									
										
										
										
											2023-12-13 02:16:53 +01:00
										 |  |  |       ) | 
					
						
							| 
									
										
										
										
											2024-02-20 13:33:38 +01:00
										 |  |  |       return hiddenThemes.filter( | 
					
						
							|  |  |  |         (theme) => | 
					
						
							|  |  |  |           knownIds.has(theme.id) || | 
					
						
							|  |  |  |           state.osmConnection.userDetails.data.name === "Pieter Vander Vennet" | 
					
						
							|  |  |  |       ) | 
					
						
							| 
									
										
										
										
											2023-12-13 02:16:53 +01:00
										 |  |  |     }) | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2023-11-19 01:05:15 +01:00
										 |  |  | </script> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-15 02:21:18 +02:00
										 |  |  | <main> | 
					
						
							| 
									
										
										
										
											2024-06-16 16:27:58 +02:00
										 |  |  |   <div class="m-4 flex flex-col"> | 
					
						
							|  |  |  |     <LanguagePicker | 
					
						
							|  |  |  |       clss="self-end max-w-full" | 
					
						
							|  |  |  |       assignTo={state.language} | 
					
						
							|  |  |  |       availableLanguages={t.title.SupportedLanguages()} | 
					
						
							|  |  |  |       preferredLanguages={userLanguages} | 
					
						
							|  |  |  |     /> | 
					
						
							| 
									
										
										
										
											2023-11-19 01:05:15 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-16 16:27:58 +02:00
										 |  |  |     <div class="mt-4 flex"> | 
					
						
							|  |  |  |       <div class="m-3 flex-none"> | 
					
						
							|  |  |  |         <Logo alt="MapComplete Logo" class="h-12 w-12 sm:h-24 sm:w-24" /> | 
					
						
							|  |  |  |       </div> | 
					
						
							| 
									
										
										
										
											2023-11-19 01:05:15 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-20 04:21:29 +02:00
										 |  |  |       <div class="link-underline flex flex-col"> | 
					
						
							| 
									
										
										
										
											2024-06-16 16:27:58 +02:00
										 |  |  |         <h1 class="m-0 font-extrabold tracking-tight md:text-6xl"> | 
					
						
							|  |  |  |           <Tr t={t.title} /> | 
					
						
							|  |  |  |         </h1> | 
					
						
							| 
									
										
										
										
											2024-06-20 04:21:29 +02:00
										 |  |  |         <Tr | 
					
						
							|  |  |  |           cls="mr-4 text-base font-semibold sm:text-lg md:mt-5 md:text-xl lg:mx-0" | 
					
						
							|  |  |  |           t={Translations.t.index.intro} | 
					
						
							|  |  |  |         /> | 
					
						
							|  |  |  |         <a href="#about"> | 
					
						
							|  |  |  |           <Tr t={Translations.t.index.learnMore} /> | 
					
						
							|  |  |  |           <ChevronDoubleRight class="inline h-4 w-4" /> | 
					
						
							|  |  |  |         </a> | 
					
						
							| 
									
										
										
										
											2024-06-16 16:27:58 +02:00
										 |  |  |       </div> | 
					
						
							|  |  |  |     </div> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-09-02 12:48:15 +02:00
										 |  |  |     <Searchbar | 
					
						
							|  |  |  |       value={themeSearchText} | 
					
						
							|  |  |  |       placeholder={tr.searchForATheme} | 
					
						
							|  |  |  |       on:search={() => MoreScreen.applySearch(themeSearchText.data)} | 
					
						
							|  |  |  |     /> | 
					
						
							| 
									
										
										
										
											2024-06-16 16:27:58 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     <ThemesList search={themeSearchText} {state} themes={MoreScreen.officialThemes} /> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     <LoginToggle {state}> | 
					
						
							| 
									
										
										
										
											2024-07-25 19:06:30 +02:00
										 |  |  |       <LoginButton clss="primary" {osmConnection} slot="not-logged-in"> | 
					
						
							| 
									
										
										
										
											2024-08-09 16:55:08 +02:00
										 |  |  |         <Tr t={t.logIn} /> | 
					
						
							| 
									
										
										
										
											2024-07-25 19:06:30 +02:00
										 |  |  |       </LoginButton> | 
					
						
							| 
									
										
										
										
											2024-06-16 16:27:58 +02:00
										 |  |  |       <ThemesList | 
					
						
							|  |  |  |         hideThemes={false} | 
					
						
							|  |  |  |         isCustom={false} | 
					
						
							|  |  |  |         search={themeSearchText} | 
					
						
							|  |  |  |         {state} | 
					
						
							|  |  |  |         themes={$visitedHiddenThemes} | 
					
						
							|  |  |  |       > | 
					
						
							|  |  |  |         <svelte:fragment slot="title"> | 
					
						
							|  |  |  |           <h3> | 
					
						
							|  |  |  |             <Tr t={tr.previouslyHiddenTitle} /> | 
					
						
							|  |  |  |           </h3> | 
					
						
							|  |  |  |           <p> | 
					
						
							|  |  |  |             <Tr | 
					
						
							|  |  |  |               t={tr.hiddenExplanation.Subs({ | 
					
						
							| 
									
										
										
										
											2024-06-16 16:41:57 +02:00
										 |  |  |                 hidden_discovered: $visitedHiddenThemes.length.toString(), | 
					
						
							|  |  |  |                 total_hidden: hiddenThemes.length.toString(), | 
					
						
							|  |  |  |               })} | 
					
						
							| 
									
										
										
										
											2024-06-16 16:27:58 +02:00
										 |  |  |             /> | 
					
						
							|  |  |  |           </p> | 
					
						
							|  |  |  |         </svelte:fragment> | 
					
						
							|  |  |  |       </ThemesList> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       <UnofficialThemeList search={themeSearchText} {state} /> | 
					
						
							| 
									
										
										
										
											2024-06-16 19:00:43 +02:00
										 |  |  |     </LoginToggle> | 
					
						
							| 
									
										
										
										
											2024-06-16 16:27:58 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-21 02:46:54 +02:00
										 |  |  |     <a | 
					
						
							| 
									
										
										
										
											2024-06-24 13:11:35 +02:00
										 |  |  |       class="button flex" | 
					
						
							| 
									
										
										
										
											2024-06-21 02:46:54 +02:00
										 |  |  |       href={window.location.protocol + "//" + window.location.host + "/studio.html"} | 
					
						
							|  |  |  |     > | 
					
						
							|  |  |  |       <Pencil class="mr-2 h-6 w-6" /> | 
					
						
							|  |  |  |       <Tr t={Translations.t.general.morescreen.createYourOwnTheme} /> | 
					
						
							|  |  |  |     </a> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-20 04:21:29 +02:00
										 |  |  |     <h3 id="about"> | 
					
						
							|  |  |  |       <Tr t={Translations.t.index.about} /> | 
					
						
							|  |  |  |     </h3> | 
					
						
							|  |  |  |     <Tr cls="link-underline" t={Translations.t.general.aboutMapComplete.intro} /> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     <span class="link-underline flex flex-col gap-y-1"> | 
					
						
							|  |  |  |       <a class="flex" href="https://github.com/pietervdvn/MapComplete/" target="_blank"> | 
					
						
							|  |  |  |         <Github class="mr-2 h-6 w-6" /> | 
					
						
							|  |  |  |         <Tr t={Translations.t.general.attribution.gotoSourceCode} /> | 
					
						
							|  |  |  |       </a> | 
					
						
							|  |  |  |       <a class="flex" href="https://github.com/pietervdvn/MapComplete/issues" target="_blank"> | 
					
						
							|  |  |  |         <Bug class="mr-2 h-6 w-6" /> | 
					
						
							|  |  |  |         <Tr t={Translations.t.general.attribution.openIssueTracker} /> | 
					
						
							|  |  |  |       </a> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-21 02:46:54 +02:00
										 |  |  |       <a class="flex" href={Utils.OsmChaLinkFor(7)} target="_blank"> | 
					
						
							| 
									
										
										
										
											2024-06-24 13:11:35 +02:00
										 |  |  |         <ArrowTrendingUp class="mr-2 h-6 w-6" /> | 
					
						
							|  |  |  |         <Tr t={Translations.t.general.attribution.openOsmchaLastWeek} /> | 
					
						
							| 
									
										
										
										
											2024-06-21 02:46:54 +02:00
										 |  |  |       </a> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-20 04:21:29 +02:00
										 |  |  |       <a class="flex" href="https://en.osm.town/@MapComplete" target="_blank"> | 
					
						
							|  |  |  |         <Mastodon class="mr-2 h-6 w-6" /> | 
					
						
							|  |  |  |         <Tr t={Translations.t.general.attribution.followOnMastodon} /> | 
					
						
							|  |  |  |       </a> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       <a class="flex" href="https://liberapay.com/pietervdvn/" target="_blank"> | 
					
						
							|  |  |  |         <Liberapay class="mr-2 h-6 w-6" /> | 
					
						
							|  |  |  |         <Tr t={Translations.t.general.attribution.donate} /> | 
					
						
							|  |  |  |       </a> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       <a | 
					
						
							|  |  |  |         class="flex" | 
					
						
							|  |  |  |         href={window.location.protocol + "//" + window.location.host + "/privacy.html"} | 
					
						
							|  |  |  |       > | 
					
						
							|  |  |  |         <Eye class="mr-2 h-6 w-6" /> | 
					
						
							|  |  |  |         <Tr t={Translations.t.privacy.title} /> | 
					
						
							|  |  |  |       </a> | 
					
						
							|  |  |  |     </span> | 
					
						
							| 
									
										
										
										
											2024-06-16 16:27:58 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     <Tr t={tr.streetcomplete} /> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     <div class="subtle mb-16 self-end"> | 
					
						
							|  |  |  |       v{Constants.vNumber} | 
					
						
							|  |  |  |     </div> | 
					
						
							| 
									
										
										
										
											2023-11-19 01:05:15 +01:00
										 |  |  |   </div> | 
					
						
							| 
									
										
										
										
											2024-06-15 02:21:18 +02:00
										 |  |  | </main> |