完善
This commit is contained in:
8734
package-lock.json
generated
Normal file
8734
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
@@ -29,6 +29,7 @@ const VIDEO_MIME_TYPES: Record<string, string> = {
|
||||
};
|
||||
|
||||
interface MarkdownAstNode {
|
||||
type?: string;
|
||||
position?: {
|
||||
start?: { offset?: number };
|
||||
end?: { offset?: number };
|
||||
@@ -51,6 +52,7 @@ interface MarkdownTree {
|
||||
|
||||
interface MarkdownBlock {
|
||||
id: string;
|
||||
type: string;
|
||||
source: string;
|
||||
html: string;
|
||||
startOffset: number;
|
||||
@@ -367,6 +369,7 @@ function parseBlocks(md: string) {
|
||||
const source = md.slice(startOffset, endOffset);
|
||||
return {
|
||||
id: `${index}-${startOffset}-${endOffset}`,
|
||||
type: node.type || "unknown",
|
||||
source,
|
||||
html: renderBlockHtml(source),
|
||||
startOffset,
|
||||
@@ -381,6 +384,7 @@ function parseBlocks(md: string) {
|
||||
markdownBlocks.value = [
|
||||
{
|
||||
id: "fallback-0",
|
||||
type: "unknown",
|
||||
source: md,
|
||||
html: renderBlockHtml(md),
|
||||
startOffset: 0,
|
||||
@@ -1072,7 +1076,7 @@ defineExpose({
|
||||
<div v-if="renderError" class="text-red-500 text-sm">
|
||||
⚠ Markdown 解析错误
|
||||
</div>
|
||||
<div v-else class="markdown-preview py-2" v-html="renderedHtml" />
|
||||
<div v-else class="markdown-preview" v-html="renderedHtml" />
|
||||
</div>
|
||||
|
||||
<!-- Mixed mode -->
|
||||
@@ -1116,6 +1120,9 @@ defineExpose({
|
||||
:value="editingSource"
|
||||
rows="1"
|
||||
class="markdown-block-editor"
|
||||
:class="{
|
||||
'markdown-block-editor-soft-wrap': block.type === 'paragraph',
|
||||
}"
|
||||
@input="onBlockInput"
|
||||
@keydown="onBlockKeydown"
|
||||
@blur="finalizeBlockEdit"
|
||||
@@ -1315,20 +1322,24 @@ defineExpose({
|
||||
.markdown-block-editor {
|
||||
display: block;
|
||||
width: 100%;
|
||||
min-height: calc((1em * 1.6) + 1.5rem + 2px);
|
||||
min-height: 1.625em;
|
||||
resize: none;
|
||||
overflow: hidden;
|
||||
border: 1px solid var(--app-accent-muted);
|
||||
border-radius: 0.375rem;
|
||||
background-color: var(--app-surface);
|
||||
border: 0;
|
||||
border-radius: 0;
|
||||
background: transparent;
|
||||
color: var(--app-text);
|
||||
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
|
||||
font-size: 0.92em;
|
||||
line-height: 1.6;
|
||||
margin: 0.375rem 0;
|
||||
padding: 0.75rem 0.875rem;
|
||||
font: inherit;
|
||||
line-height: inherit;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
outline: none;
|
||||
box-shadow: 0 0 0 3px color-mix(in srgb, var(--app-accent) 12%, transparent);
|
||||
box-shadow: none;
|
||||
caret-color: var(--app-accent);
|
||||
}
|
||||
|
||||
.markdown-block-editor-soft-wrap {
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
.markdown-block-editor::placeholder,
|
||||
|
||||
Reference in New Issue
Block a user