53 lines
1.9 KiB
Svelte
53 lines
1.9 KiB
Svelte
<script lang="ts">
|
|
import {OsmConnection} from "../../Logic/Osm/OsmConnection"
|
|
import {UIEventSource} from "../../Logic/UIEventSource"
|
|
import * as themeOverview from "../../assets/generated/theme_overview.json"
|
|
import {Utils} from "../../Utils"
|
|
import ThemesList from "./ThemesList.svelte"
|
|
import Translations from "../i18n/Translations"
|
|
import {LayoutInformation} from "../../Models/ThemeConfig/LayoutConfig"
|
|
import LoginToggle from "../Base/LoginToggle.svelte";
|
|
|
|
export let search: UIEventSource<string>
|
|
export let state: { osmConnection: OsmConnection }
|
|
export let onMainScreen: boolean = true
|
|
|
|
const prefix = "mapcomplete-hidden-theme-"
|
|
const hiddenThemes: LayoutInformation[] = (themeOverview["default"] ?? themeOverview)?.filter(
|
|
(layout) => layout.hideFromOverview
|
|
) ?? []
|
|
const userPreferences = state.osmConnection.preferencesHandler.preferences
|
|
const t = Translations.t.general.morescreen
|
|
|
|
let knownThemesId: string[]
|
|
$: knownThemesId = Utils.NoNull(
|
|
Object.keys($userPreferences)
|
|
.filter((key) => key.startsWith(prefix))
|
|
.map((key) => key.substring(prefix.length, key.length - "-enabled".length))
|
|
)
|
|
$: console.log("Known theme ids:", knownThemesId)
|
|
$: knownThemes = hiddenThemes.filter((theme) => knownThemesId.includes(theme.id))
|
|
</script>
|
|
|
|
<LoginToggle {state}>
|
|
|
|
<ThemesList
|
|
hideThemes={false}
|
|
isCustom={false}
|
|
{onMainScreen}
|
|
{search}
|
|
{state}
|
|
themes={knownThemes}
|
|
>
|
|
<svelte:fragment slot="title">
|
|
<h3>{t.previouslyHiddenTitle.toString()}</h3>
|
|
<p>
|
|
{t.hiddenExplanation.Subs({
|
|
hidden_discovered: knownThemes.length.toString(),
|
|
total_hidden: hiddenThemes.length.toString(),
|
|
})}
|
|
</p>
|
|
</svelte:fragment>
|
|
</ThemesList>
|
|
|
|
</LoginToggle>
|