36 lines
1.1 KiB
Svelte
36 lines
1.1 KiB
Svelte
|
<script lang="ts">
|
||
|
import { OsmConnection } from "../../Logic/Osm/OsmConnection"
|
||
|
import { Store, Stores, UIEventSource } from "../../Logic/UIEventSource"
|
||
|
import type Loc from "../../Models/Loc"
|
||
|
import { Utils } from "../../Utils"
|
||
|
import ThemesList from "./ThemesList.svelte"
|
||
|
import Translations from "../i18n/Translations"
|
||
|
import UserRelatedState from "../../Logic/State/UserRelatedState"
|
||
|
|
||
|
export let search: UIEventSource<string>
|
||
|
export let state: UserRelatedState & {
|
||
|
osmConnection: OsmConnection
|
||
|
locationControl?: UIEventSource<Loc>
|
||
|
}
|
||
|
export let onMainScreen: boolean = true
|
||
|
|
||
|
const t = Translations.t.general
|
||
|
const currentIds: Store<string[]> = state.installedUserThemes
|
||
|
const stableIds = Stores.ListStabilized<string>(currentIds)
|
||
|
$: customThemes = Utils.NoNull($stableIds.map((id) => state.GetUnofficialTheme(id)))
|
||
|
</script>
|
||
|
|
||
|
<ThemesList
|
||
|
{search}
|
||
|
{state}
|
||
|
{onMainScreen}
|
||
|
themes={customThemes}
|
||
|
isCustom={true}
|
||
|
hideThemes={false}
|
||
|
>
|
||
|
<svelte:fragment slot="title">
|
||
|
<!-- TODO: Change string to exclude html -->
|
||
|
{@html t.customThemeIntro.toString()}
|
||
|
</svelte:fragment>
|
||
|
</ThemesList>
|