From 19d934065c9b02314327e9a7e388a282acd3423c Mon Sep 17 00:00:00 2001 From: seaHi Date: Thu, 24 Sep 2026 08:48:16 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AE=9E=E7=8E=B0=E6=96=87=E7=AB=A0?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E5=99=A8=E5=A4=A7=E7=BA=B2=E5=AF=BC=E8=88=AA?= =?UTF-8?q?=E3=80=81=E4=BE=A7=E8=BE=B9=E6=A0=8F=E6=A0=87=E7=AD=BE=E9=A1=B5?= =?UTF-8?q?=E5=8F=8A=E5=BC=B9=E7=AA=97=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/admin/ArticleOutline.svelte | 92 ++++++++++ src/lib/components/admin/ContentEditor.svelte | 164 ++++++++++++++++++ .../components/admin/EditorSidebarTabs.svelte | 68 ++++++++ .../components/admin/MarkdownEditor.svelte | 65 ++++++- .../components/admin/OutlinePopover.svelte | 160 +++++++++++++++++ 5 files changed, 546 insertions(+), 3 deletions(-) create mode 100644 src/lib/components/admin/ArticleOutline.svelte create mode 100644 src/lib/components/admin/ContentEditor.svelte create mode 100644 src/lib/components/admin/EditorSidebarTabs.svelte create mode 100644 src/lib/components/admin/OutlinePopover.svelte diff --git a/src/lib/components/admin/ArticleOutline.svelte b/src/lib/components/admin/ArticleOutline.svelte new file mode 100644 index 0000000..78fdb0d --- /dev/null +++ b/src/lib/components/admin/ArticleOutline.svelte @@ -0,0 +1,92 @@ + + + + + diff --git a/src/lib/components/admin/ContentEditor.svelte b/src/lib/components/admin/ContentEditor.svelte new file mode 100644 index 0000000..91ce6b4 --- /dev/null +++ b/src/lib/components/admin/ContentEditor.svelte @@ -0,0 +1,164 @@ + + +{#if mode === 'edit'} + { + outline.active = activeHeadingAt(outline.headings, position); + }} + > + {#snippet toolbarEnd()}{/snippet} + +{:else} +
正文预览
+
{ + navigatingPreview = false; + }} + > + +
+{/if} + + diff --git a/src/lib/components/admin/EditorSidebarTabs.svelte b/src/lib/components/admin/EditorSidebarTabs.svelte new file mode 100644 index 0000000..947a8af --- /dev/null +++ b/src/lib/components/admin/EditorSidebarTabs.svelte @@ -0,0 +1,68 @@ + + + + + diff --git a/src/lib/components/admin/MarkdownEditor.svelte b/src/lib/components/admin/MarkdownEditor.svelte index 7c79209..691d71a 100644 --- a/src/lib/components/admin/MarkdownEditor.svelte +++ b/src/lib/components/admin/MarkdownEditor.svelte @@ -1,6 +1,7 @@
-
+
+ {@render toolbarEnd?.()}
diff --git a/src/lib/components/admin/OutlinePopover.svelte b/src/lib/components/admin/OutlinePopover.svelte new file mode 100644 index 0000000..73e619b --- /dev/null +++ b/src/lib/components/admin/OutlinePopover.svelte @@ -0,0 +1,160 @@ + + + { + if (open && !wrapper.contains(event.target as Node)) open = false; + }} + onkeydown={(event) => { + if (open && event.key === 'Escape') { + event.preventDefault(); + dismiss(); + } + }} + onresize={() => { + if (window.innerWidth > 900) open = false; + else positionPanel(); + }} +/> + +
{ + if (!wrapper.contains(event.relatedTarget as Node)) open = false; + }} +> + + {#if open} +
+
+ 大纲 +
+ { + open = false; + }} + /> +
+ {/if} +
+ +