173 lines
5.3 KiB
Svelte
173 lines
5.3 KiB
Svelte
<script lang="ts">
|
|
import { fade } from 'svelte/transition'
|
|
import { cubicOut } from 'svelte/easing';
|
|
|
|
import { type Editor } from '@tiptap/core';
|
|
import Undo from './icons/undo.svelte';
|
|
import Redo from './icons/redo.svelte';
|
|
// import { Separator } from '$lib/components/ui/separator/index.js';
|
|
import Bold from './icons/bold.svelte';
|
|
import Italic from './icons/italic.svelte';
|
|
import Underline from './icons/underline.svelte';
|
|
import Strikethrough from './icons/strikethrough.svelte';
|
|
import Link from './icons/link.svelte';
|
|
import Code from './icons/code.svelte';
|
|
import BlockQuote from './icons/block-quote.svelte';
|
|
import Subscript from './icons/subscript.svelte';
|
|
import BulletList from './icons/buttle-list.svelte'; // Typo in the icon name
|
|
import OrderedList from './icons/ordered-list.svelte';
|
|
import TaskList from './icons/task-list.svelte';
|
|
import Highlighter from './icons/highlighter.svelte';
|
|
import Superscript from './icons/superscript.svelte';
|
|
import Textcolor from './icons/textcolor.svelte';
|
|
import Align from './icons/textalign.svelte';
|
|
import Quickcolor from './icons/quickcolor.svelte';
|
|
import Table from './icons/table.svelte';
|
|
// import Image from './icons/image.svelte';
|
|
import Text from './icons/text.svelte';
|
|
import SearchReplace from './icons/search-replace.svelte';
|
|
|
|
interface Props {
|
|
editor: Editor;
|
|
show_button_kv?: any;
|
|
}
|
|
|
|
let { editor, show_button_kv }: Props = $props();
|
|
|
|
let show_button_kv_defaults: any = {
|
|
undo: true,
|
|
redo: true,
|
|
|
|
text: false,
|
|
|
|
bold: true,
|
|
italic: true,
|
|
underline: true,
|
|
strikethrough: false,
|
|
align: false,
|
|
link: false,
|
|
code: false,
|
|
blockquote: false,
|
|
subscript: false,
|
|
superscript: false,
|
|
bullet_list: true,
|
|
ordered_list: true,
|
|
task_list: false,
|
|
image: false,
|
|
table: false,
|
|
text_color: false,
|
|
highlighter: false,
|
|
quick_color: false,
|
|
search_replace: false,
|
|
};
|
|
console.log('show_button_kv', show_button_kv);
|
|
if (show_button_kv) {
|
|
show_button_kv = {...show_button_kv_defaults, ...show_button_kv};
|
|
} else {
|
|
show_button_kv = show_button_kv_defaults;
|
|
}
|
|
</script>
|
|
|
|
<div
|
|
transition:fade={{delay: 250, duration: 750, easing: cubicOut}}
|
|
class="
|
|
flex flex-row flex-wrap gap-0.5
|
|
w-full items-center justify-between
|
|
overflow-auto border-b p-1
|
|
transition-all duration-1000
|
|
"
|
|
>
|
|
<span
|
|
class:hidden={!show_button_kv.undo && !show_button_kv.redo}
|
|
>
|
|
{#if show_button_kv.undo}
|
|
<Undo {editor} />
|
|
{/if}
|
|
{#if show_button_kv.redo}
|
|
<Redo {editor} />
|
|
{/if}
|
|
</span>
|
|
<!-- <Separator orientation="vertical" class="h-fit" /> -->
|
|
<span
|
|
class:hidden={!show_button_kv.text}
|
|
>
|
|
{#if show_button_kv.text}
|
|
<Text {editor} />
|
|
{/if}
|
|
</span>
|
|
<span
|
|
class:hidden={!show_button_kv.bold && !show_button_kv.italic && !show_button_kv.underline && !show_button_kv.strikethrough}
|
|
>
|
|
{#if show_button_kv.bold}
|
|
<Bold {editor} />
|
|
{/if}
|
|
{#if show_button_kv.italic}
|
|
<Italic {editor} />
|
|
{/if}
|
|
{#if show_button_kv.underline}
|
|
<Underline {editor} />
|
|
{/if}
|
|
{#if show_button_kv.strikethrough}
|
|
<Strikethrough {editor} />
|
|
{/if}
|
|
</span>
|
|
<span
|
|
class:hidden={!show_button_kv.align && !show_button_kv.link && !show_button_kv.code && !show_button_kv.blockquote && !show_button_kv.subscript && !show_button_kv.superscript && !show_button_kv.bullet_list && !show_button_kv.ordered_list && !show_button_kv.task_list && !show_button_kv.image && !show_button_kv.table}
|
|
>
|
|
{#if show_button_kv.align}
|
|
<Align {editor} />
|
|
{/if}
|
|
{#if show_button_kv.link}
|
|
<Link {editor} />
|
|
{/if}
|
|
{#if show_button_kv.code}
|
|
<Code {editor} />
|
|
{/if}
|
|
{#if show_button_kv.blockquote}
|
|
<BlockQuote {editor} />
|
|
{/if}
|
|
{#if show_button_kv.subscript}
|
|
<Subscript {editor} />
|
|
{/if}
|
|
{#if show_button_kv.superscript}
|
|
<Superscript {editor} />
|
|
{/if}
|
|
{#if show_button_kv.bullet_list}
|
|
<BulletList {editor} />
|
|
{/if}
|
|
{#if show_button_kv.ordered_list}
|
|
<OrderedList {editor} />
|
|
{/if}
|
|
{#if show_button_kv.task_list}
|
|
<TaskList {editor} />
|
|
{/if}
|
|
<!-- {#if show_button_kv.image}
|
|
<Image {editor} />
|
|
{/if} -->
|
|
{#if show_button_kv.table}
|
|
<Table {editor} />
|
|
{/if}
|
|
</span>
|
|
<span
|
|
class:hidden={!show_button_kv.text_color && !show_button_kv.highlighter && !show_button_kv.quick_color}
|
|
>
|
|
cxx
|
|
{#if show_button_kv.text_color}
|
|
<Textcolor {editor} />
|
|
{/if}
|
|
{#if show_button_kv.highlighter}
|
|
<Highlighter {editor} />
|
|
{/if}
|
|
{#if show_button_kv.quick_color}
|
|
<Quickcolor {editor} />
|
|
{/if}
|
|
</span>
|
|
<span
|
|
class:hidden={!show_button_kv.search_replace}
|
|
>
|
|
{#if show_button_kv.search_replace}
|
|
<SearchReplace {editor} />
|
|
{/if}
|
|
</span>
|
|
</div>
|