[ui] refactor TextViewer, deduplicate
parent
1c9026d13c
commit
cf9b090f71
|
@ -4,7 +4,7 @@
|
|||
import Spinner from "../../utils/Spinner.svelte";
|
||||
export let address: string;
|
||||
|
||||
let mode: "preview" | "full" | "markdown" = "markdown";
|
||||
let mode: "preview" | "full" | "markdown" = "preview";
|
||||
|
||||
$: textContent = (async () => {
|
||||
const response = await fetch(
|
||||
|
@ -19,46 +19,30 @@
|
|||
return text;
|
||||
}
|
||||
})();
|
||||
|
||||
const tabs = [
|
||||
["image", "preview", "Preview"],
|
||||
["shape-circle", "full", "Full"],
|
||||
["edit", "markdown", "Markdown"],
|
||||
] as [string, typeof mode, string][];
|
||||
</script>
|
||||
|
||||
<div class="text-preview">
|
||||
<header class="text-header">
|
||||
<div
|
||||
class="tab"
|
||||
class:active={mode == "preview"}
|
||||
on:click={() => (mode = "preview")}
|
||||
>
|
||||
<IconButton
|
||||
name="image"
|
||||
active={mode == "preview"}
|
||||
on:click={() => (mode = "preview")}
|
||||
/>
|
||||
<div class="label">Preview</div>
|
||||
</div>
|
||||
<div
|
||||
class="tab"
|
||||
class:active={mode == "full"}
|
||||
on:click={() => (mode = "full")}
|
||||
>
|
||||
<IconButton
|
||||
name="shape-circle"
|
||||
active={mode == "full"}
|
||||
on:click={() => (mode = "full")}
|
||||
/>
|
||||
<div class="label">Full</div>
|
||||
</div>
|
||||
<div
|
||||
class="tab"
|
||||
class:active={mode == "markdown"}
|
||||
on:click={() => (mode = "markdown")}
|
||||
>
|
||||
<IconButton
|
||||
name="edit"
|
||||
active={mode == "markdown"}
|
||||
on:click={() => (mode = "markdown")}
|
||||
/>
|
||||
<div class="label">Markdown</div>
|
||||
</div>
|
||||
{#each tabs as [icon, targetMode, label]}
|
||||
<div
|
||||
class="tab"
|
||||
class:active={mode == targetMode}
|
||||
on:click={() => (mode = targetMode)}
|
||||
>
|
||||
<IconButton
|
||||
name={icon}
|
||||
active={mode == targetMode}
|
||||
on:click={() => (mode = targetMode)}
|
||||
/>
|
||||
<div class="label">{label}</div>
|
||||
</div>
|
||||
{/each}
|
||||
</header>
|
||||
<div class="text" class:markdown={mode === "markdown"}>
|
||||
{#await textContent}
|
||||
|
|
Loading…
Reference in New Issue