You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
1.8 KiB
63 lines
1.8 KiB
<script lang="ts"> |
|
import { Input, Label, Textarea, Toolbar, ToolbarButton } from "flowbite-svelte"; |
|
import { CodeOutline, EyeSolid } from "flowbite-svelte-icons"; |
|
import { editorText } from "$lib/stores"; |
|
import Preview from "$lib/components/Preview.svelte"; |
|
import Pharos from "$lib/parser"; |
|
import { ndk } from "$lib/ndk"; |
|
|
|
let parser: Pharos; |
|
let isEditing: boolean = true; |
|
|
|
$: rootIndexId = parser?.getRootIndexId(); |
|
|
|
const showPreview = () => { |
|
parser = new Pharos($ndk); |
|
parser.parse($editorText); |
|
isEditing = false; |
|
}; |
|
|
|
const hidePreview = () => { |
|
isEditing = true; |
|
}; |
|
</script> |
|
|
|
<main class='w-full flex justify-center'> |
|
<form class='max-w-2xl w-full'> |
|
<div class='flex flex-col space-y-4'> |
|
<div> |
|
<Label for='article-title' class='mb-2'>Article Title</Label> |
|
<Input type='text' id='article-title' placeholder='Title' required /> |
|
</div> |
|
<div> |
|
<Label for='article-author' class='mb-2'>Author Name</Label> |
|
<Input type='text' id='article-author' placeholder='Author' required /> |
|
</div> |
|
{#if isEditing} |
|
<Textarea |
|
id='article-content' |
|
rows=8 |
|
placeholder='Write AsciiDoc content' |
|
bind:value={$editorText} |
|
> |
|
<Toolbar slot='header' embedded> |
|
<ToolbarButton name='Preview' on:click={showPreview}> |
|
<EyeSolid class='w-6 h-6' /> |
|
</ToolbarButton> |
|
</Toolbar> |
|
</Textarea> |
|
{:else} |
|
<div> |
|
<Toolbar> |
|
<ToolbarButton name='Edit' on:click={hidePreview}> |
|
<CodeOutline class='w-6 h-6' /> |
|
</ToolbarButton> |
|
</Toolbar> |
|
{#if rootIndexId} |
|
<Preview {parser} {rootIndexId} /> |
|
{/if} |
|
</div> |
|
{/if} |
|
</div> |
|
</form> |
|
</main>
|
|
|