markstream-svelte 0.0.1-beta.2 → 0.0.1-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/AdmonitionNode.svelte +9 -3
- package/dist/components/AdmonitionNode.svelte.d.ts +4 -18
- package/dist/components/BlockquoteNode.svelte +10 -4
- package/dist/components/BlockquoteNode.svelte.d.ts +4 -18
- package/dist/components/CheckboxNode.svelte +3 -1
- package/dist/components/CheckboxNode.svelte.d.ts +4 -18
- package/dist/components/CodeBlockNode.svelte +124 -93
- package/dist/components/CodeBlockNode.svelte.d.ts +4 -18
- package/dist/components/D2BlockNode.svelte +57 -34
- package/dist/components/D2BlockNode.svelte.d.ts +4 -18
- package/dist/components/DefinitionListNode.svelte +9 -3
- package/dist/components/DefinitionListNode.svelte.d.ts +4 -18
- package/dist/components/EmojiNode.svelte +8 -2
- package/dist/components/EmojiNode.svelte.d.ts +4 -18
- package/dist/components/EmphasisNode.svelte +11 -3
- package/dist/components/EmphasisNode.svelte.d.ts +6 -20
- package/dist/components/FallbackComponent.svelte +9 -3
- package/dist/components/FallbackComponent.svelte.d.ts +4 -18
- package/dist/components/FootnoteAnchorNode.svelte +7 -3
- package/dist/components/FootnoteAnchorNode.svelte.d.ts +4 -18
- package/dist/components/FootnoteNode.svelte +11 -7
- package/dist/components/FootnoteNode.svelte.d.ts +6 -20
- package/dist/components/FootnoteReferenceNode.svelte +8 -4
- package/dist/components/FootnoteReferenceNode.svelte.d.ts +4 -18
- package/dist/components/HeadingNode.svelte +11 -7
- package/dist/components/HeadingNode.svelte.d.ts +6 -20
- package/dist/components/HighlightNode.svelte +12 -3
- package/dist/components/HighlightNode.svelte.d.ts +6 -20
- package/dist/components/HtmlBlockNode.svelte +8 -3
- package/dist/components/HtmlBlockNode.svelte.d.ts +5 -19
- package/dist/components/HtmlInlineNode.svelte +9 -3
- package/dist/components/HtmlInlineNode.svelte.d.ts +5 -19
- package/dist/components/HtmlPreviewFrame.svelte +19 -7
- package/dist/components/HtmlPreviewFrame.svelte.d.ts +6 -20
- package/dist/components/ImageNode.svelte +38 -23
- package/dist/components/ImageNode.svelte.d.ts +4 -18
- package/dist/components/InfographicBlockNode.svelte +72 -48
- package/dist/components/InfographicBlockNode.svelte.d.ts +4 -18
- package/dist/components/InlineCodeNode.svelte +8 -2
- package/dist/components/InlineCodeNode.svelte.d.ts +4 -18
- package/dist/components/InlineWrapNode.svelte +15 -5
- package/dist/components/InlineWrapNode.svelte.d.ts +6 -20
- package/dist/components/InsertNode.svelte +12 -3
- package/dist/components/InsertNode.svelte.d.ts +6 -20
- package/dist/components/LinkNode.svelte +15 -9
- package/dist/components/LinkNode.svelte.d.ts +7 -21
- package/dist/components/ListItemNode.svelte +13 -4
- package/dist/components/ListItemNode.svelte.d.ts +6 -20
- package/dist/components/ListNode.svelte +12 -6
- package/dist/components/ListNode.svelte.d.ts +6 -20
- package/dist/components/MarkdownCodeBlockNode.svelte +10 -2
- package/dist/components/MarkdownCodeBlockNode.svelte.d.ts +5 -19
- package/dist/components/MathBlockNode.svelte +15 -11
- package/dist/components/MathBlockNode.svelte.d.ts +4 -18
- package/dist/components/MathInlineNode.svelte +16 -12
- package/dist/components/MathInlineNode.svelte.d.ts +4 -18
- package/dist/components/MermaidBlockNode.svelte +92 -63
- package/dist/components/MermaidBlockNode.svelte.d.ts +9 -23
- package/dist/components/NodeOutlet.svelte +6 -5
- package/dist/components/NodeOutlet.svelte.d.ts +2 -2
- package/dist/components/NodeRenderer.svelte +2 -1
- package/dist/components/ParagraphNode.svelte +14 -7
- package/dist/components/ParagraphNode.svelte.d.ts +6 -20
- package/dist/components/PreCodeNode.svelte +15 -7
- package/dist/components/PreCodeNode.svelte.d.ts +4 -18
- package/dist/components/ReferenceNode.svelte +12 -3
- package/dist/components/ReferenceNode.svelte.d.ts +5 -19
- package/dist/components/RenderChildren.svelte +6 -5
- package/dist/components/RenderChildren.svelte.d.ts +2 -2
- package/dist/components/StrikethroughNode.svelte +12 -3
- package/dist/components/StrikethroughNode.svelte.d.ts +6 -20
- package/dist/components/StrongNode.svelte +11 -3
- package/dist/components/StrongNode.svelte.d.ts +6 -20
- package/dist/components/SubscriptNode.svelte +12 -3
- package/dist/components/SubscriptNode.svelte.d.ts +6 -20
- package/dist/components/SuperscriptNode.svelte +12 -3
- package/dist/components/SuperscriptNode.svelte.d.ts +6 -20
- package/dist/components/TableNode.svelte +12 -3
- package/dist/components/TableNode.svelte.d.ts +5 -19
- package/dist/components/TextNode.svelte +27 -12
- package/dist/components/TextNode.svelte.d.ts +7 -21
- package/dist/components/Tooltip.svelte +2 -1
- package/dist/components/Tooltip.svelte.d.ts +4 -18
- package/dist/components/VmrContainerNode.svelte +12 -3
- package/dist/components/VmrContainerNode.svelte.d.ts +5 -19
- package/dist/components/shared/node-helpers.d.ts +72 -9
- package/dist/components/shared/node-outlet-helpers.d.ts +3 -1
- package/dist/customComponents.d.ts +1 -1
- package/dist/enhanceRenderedHtml.d.ts +7 -5
- package/dist/enhanceRenderedHtml.js +2 -1
- package/dist/hydrateCustomTagContent.js +6 -3
- package/dist/index.d.ts +1 -1
- package/dist/optional/d2.d.ts +13 -2
- package/dist/optional/infographic.d.ts +13 -1
- package/dist/optional/katex.d.ts +5 -2
- package/dist/optional/mermaid.d.ts +23 -2
- package/dist/optional/monaco.d.ts +18 -1
- package/dist/parseNestedMarkdownToNodes.d.ts +6 -1
- package/dist/types/monaco.d.ts +3 -3
- package/package.json +2 -2
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import type { SvelteRenderableNode, SvelteRenderContext } from './shared/node-helpers'
|
|
3
3
|
import { renderNodeHtml } from './shared/renderNodeHtml'
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
|
|
5
|
+
interface Props {
|
|
6
|
+
node: SvelteRenderableNode;
|
|
7
|
+
context?: SvelteRenderContext | undefined;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
let { node, context = undefined }: Props = $props();
|
|
11
|
+
|
|
12
|
+
let html = $derived(renderNodeHtml(node, context));
|
|
7
13
|
</script>
|
|
8
14
|
{@html html}
|
|
@@ -1,22 +1,8 @@
|
|
|
1
1
|
import type { SvelteRenderableNode, SvelteRenderContext } from './shared/node-helpers';
|
|
2
|
-
interface
|
|
3
|
-
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
4
|
-
$$bindings?: Bindings;
|
|
5
|
-
} & Exports;
|
|
6
|
-
(internal: unknown, props: Props & {
|
|
7
|
-
$$events?: Events;
|
|
8
|
-
$$slots?: Slots;
|
|
9
|
-
}): Exports & {
|
|
10
|
-
$set?: any;
|
|
11
|
-
$on?: any;
|
|
12
|
-
};
|
|
13
|
-
z_$$bindings?: Bindings;
|
|
14
|
-
}
|
|
15
|
-
declare const AdmonitionNode: $$__sveltets_2_IsomorphicComponent<{
|
|
2
|
+
interface Props {
|
|
16
3
|
node: SvelteRenderableNode;
|
|
17
4
|
context?: SvelteRenderContext | undefined;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
type AdmonitionNode = InstanceType<typeof AdmonitionNode>;
|
|
5
|
+
}
|
|
6
|
+
declare const AdmonitionNode: import("svelte").Component<Props, {}, "">;
|
|
7
|
+
type AdmonitionNode = ReturnType<typeof AdmonitionNode>;
|
|
22
8
|
export default AdmonitionNode;
|
|
@@ -2,9 +2,15 @@
|
|
|
2
2
|
import type { SvelteRenderableNode, SvelteRenderContext } from './shared/node-helpers'
|
|
3
3
|
import RenderChildren from './RenderChildren.svelte'
|
|
4
4
|
import { getNodeList, getString } from './shared/node-helpers'
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
|
|
6
|
+
interface Props {
|
|
7
|
+
node: SvelteRenderableNode;
|
|
8
|
+
context?: SvelteRenderContext | undefined;
|
|
9
|
+
indexKey?: string | number | undefined;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
let { node, context = undefined, indexKey = undefined }: Props = $props();
|
|
13
|
+
|
|
14
|
+
let cite = $derived(getString((node as any)?.cite));
|
|
9
15
|
</script>
|
|
10
16
|
<blockquote class="blockquote blockquote-node" dir="auto" cite={cite || undefined}><RenderChildren nodes={getNodeList((node as any)?.children)} context={context} prefix={String(indexKey ?? 'blockquote') + '-blockquote'} /></blockquote>
|
|
@@ -1,23 +1,9 @@
|
|
|
1
1
|
import type { SvelteRenderableNode, SvelteRenderContext } from './shared/node-helpers';
|
|
2
|
-
interface
|
|
3
|
-
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
4
|
-
$$bindings?: Bindings;
|
|
5
|
-
} & Exports;
|
|
6
|
-
(internal: unknown, props: Props & {
|
|
7
|
-
$$events?: Events;
|
|
8
|
-
$$slots?: Slots;
|
|
9
|
-
}): Exports & {
|
|
10
|
-
$set?: any;
|
|
11
|
-
$on?: any;
|
|
12
|
-
};
|
|
13
|
-
z_$$bindings?: Bindings;
|
|
14
|
-
}
|
|
15
|
-
declare const BlockquoteNode: $$__sveltets_2_IsomorphicComponent<{
|
|
2
|
+
interface Props {
|
|
16
3
|
node: SvelteRenderableNode;
|
|
17
4
|
context?: SvelteRenderContext | undefined;
|
|
18
5
|
indexKey?: string | number | undefined;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
type BlockquoteNode = InstanceType<typeof BlockquoteNode>;
|
|
6
|
+
}
|
|
7
|
+
declare const BlockquoteNode: import("svelte").Component<Props, {}, "">;
|
|
8
|
+
type BlockquoteNode = ReturnType<typeof BlockquoteNode>;
|
|
23
9
|
export default BlockquoteNode;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import type { SvelteRenderableNode } from './shared/node-helpers'
|
|
3
|
-
|
|
3
|
+
|
|
4
|
+
type Props = { node: SvelteRenderableNode };
|
|
5
|
+
let { node }: Props = $props()
|
|
4
6
|
</script>
|
|
5
7
|
<input class="checkbox-node" type="checkbox" disabled checked={Boolean((node as any)?.checked)} />
|
|
@@ -1,21 +1,7 @@
|
|
|
1
1
|
import type { SvelteRenderableNode } from './shared/node-helpers';
|
|
2
|
-
|
|
3
|
-
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
4
|
-
$$bindings?: Bindings;
|
|
5
|
-
} & Exports;
|
|
6
|
-
(internal: unknown, props: Props & {
|
|
7
|
-
$$events?: Events;
|
|
8
|
-
$$slots?: Slots;
|
|
9
|
-
}): Exports & {
|
|
10
|
-
$set?: any;
|
|
11
|
-
$on?: any;
|
|
12
|
-
};
|
|
13
|
-
z_$$bindings?: Bindings;
|
|
14
|
-
}
|
|
15
|
-
declare const CheckboxNode: $$__sveltets_2_IsomorphicComponent<{
|
|
2
|
+
type Props = {
|
|
16
3
|
node: SvelteRenderableNode;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
type CheckboxNode = InstanceType<typeof CheckboxNode>;
|
|
4
|
+
};
|
|
5
|
+
declare const CheckboxNode: import("svelte").Component<Props, {}, "">;
|
|
6
|
+
type CheckboxNode = ReturnType<typeof CheckboxNode>;
|
|
21
7
|
export default CheckboxNode;
|
|
@@ -10,27 +10,53 @@
|
|
|
10
10
|
import { copyTextToClipboard, resolveCssSize } from './shared/rich-block-helpers'
|
|
11
11
|
import { getString, sanitizeClassToken } from './shared/node-helpers'
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
13
|
+
type Props = {
|
|
14
|
+
node: SvelteRenderableNode
|
|
15
|
+
context?: SvelteRenderContext | undefined
|
|
16
|
+
isDark?: boolean | undefined
|
|
17
|
+
loading?: boolean | undefined
|
|
18
|
+
stream?: boolean | undefined
|
|
19
|
+
darkTheme?: CodeBlockMonacoTheme | undefined
|
|
20
|
+
lightTheme?: CodeBlockMonacoTheme | undefined
|
|
21
|
+
themes?: CodeBlockMonacoTheme[] | undefined
|
|
22
|
+
monacoOptions?: CodeBlockMonacoOptions | undefined
|
|
23
|
+
minWidth?: string | number | undefined
|
|
24
|
+
maxWidth?: string | number | undefined
|
|
25
|
+
isShowPreview?: boolean
|
|
26
|
+
enableFontSizeControl?: boolean
|
|
27
|
+
showHeader?: boolean
|
|
28
|
+
showCopyButton?: boolean
|
|
29
|
+
showExpandButton?: boolean
|
|
30
|
+
showPreviewButton?: boolean
|
|
31
|
+
showCollapseButton?: boolean
|
|
32
|
+
showFontSizeButtons?: boolean
|
|
33
|
+
htmlPreviewAllowScripts?: boolean
|
|
34
|
+
htmlPreviewSandbox?: string | undefined
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
let {
|
|
38
|
+
node,
|
|
39
|
+
context = undefined,
|
|
40
|
+
isDark = undefined,
|
|
41
|
+
loading = undefined,
|
|
42
|
+
stream = undefined,
|
|
43
|
+
darkTheme = undefined,
|
|
44
|
+
lightTheme = undefined,
|
|
45
|
+
themes = undefined,
|
|
46
|
+
monacoOptions = undefined,
|
|
47
|
+
minWidth = undefined,
|
|
48
|
+
maxWidth = undefined,
|
|
49
|
+
isShowPreview = true,
|
|
50
|
+
enableFontSizeControl = true,
|
|
51
|
+
showHeader = true,
|
|
52
|
+
showCopyButton = true,
|
|
53
|
+
showExpandButton = true,
|
|
54
|
+
showPreviewButton = true,
|
|
55
|
+
showCollapseButton = true,
|
|
56
|
+
showFontSizeButtons = true,
|
|
57
|
+
htmlPreviewAllowScripts = false,
|
|
58
|
+
htmlPreviewSandbox = undefined
|
|
59
|
+
}: Props = $props()
|
|
34
60
|
|
|
35
61
|
const { t } = useSafeI18n()
|
|
36
62
|
const defaultDiffHideUnchangedRegions = Object.freeze({
|
|
@@ -95,82 +121,86 @@
|
|
|
95
121
|
languageRetryTimer = setTimeout(retry, 50)
|
|
96
122
|
}
|
|
97
123
|
|
|
98
|
-
let editorHost: HTMLDivElement | null = null
|
|
99
|
-
let helpers: any = null
|
|
100
|
-
let runtimeMonacoOptions: Record<string, any> | null = null
|
|
101
|
-
let ensureMonacoPromise: Promise<void> | null = null
|
|
102
|
-
let editorReady = false
|
|
103
|
-
let useFallback = false
|
|
104
|
-
let fallbackLanguage = ''
|
|
105
|
-
let editorKind: 'single' | 'diff' | null = null
|
|
106
|
-
let createEditorPromise: Promise<void> | null = null
|
|
107
|
-
let mounted = false
|
|
108
|
-
let collapsed = false
|
|
109
|
-
let expanded = false
|
|
110
|
-
let copied = false
|
|
111
|
-
let previewOpen = false
|
|
112
|
-
let codeFontSize = 13
|
|
113
|
-
let copyTimer: ReturnType<typeof setTimeout> | null = null
|
|
114
|
-
let lifecycleId = 0
|
|
115
|
-
let heightSyncRaf: number | null = null
|
|
116
|
-
let heightSyncDisposables: Array<{ dispose?: () => void } | (() => void)> = []
|
|
117
|
-
let lastLayoutWidth: number | null = null
|
|
118
|
-
let lastLayoutHeight: number | null = null
|
|
119
|
-
let lastThemeRequest = ''
|
|
120
|
-
let languageRetryTimer: ReturnType<typeof setTimeout> | null = null
|
|
121
|
-
let loadingSettledRefreshPromise: Promise<void> | null = null
|
|
122
|
-
let loadingSettledRefreshTimer: ReturnType<typeof setTimeout> | null = null
|
|
123
|
-
let lastSettledRefreshSignature = ''
|
|
124
|
-
let tokenizeTimer: ReturnType<typeof setTimeout> | null = null
|
|
125
|
-
let tokenizeRaf: number | null = null
|
|
126
|
-
let tokenizeShouldRefreshModelValue = false
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
124
|
+
let editorHost: HTMLDivElement | null = $state(null)
|
|
125
|
+
let helpers: any = $state(null)
|
|
126
|
+
let runtimeMonacoOptions: Record<string, any> | null = $state(null)
|
|
127
|
+
let ensureMonacoPromise: Promise<void> | null = $state(null)
|
|
128
|
+
let editorReady = $state(false)
|
|
129
|
+
let useFallback = $state(false)
|
|
130
|
+
let fallbackLanguage = $state('')
|
|
131
|
+
let editorKind: 'single' | 'diff' | null = $state(null)
|
|
132
|
+
let createEditorPromise: Promise<void> | null = $state(null)
|
|
133
|
+
let mounted = $state(false)
|
|
134
|
+
let collapsed = $state(false)
|
|
135
|
+
let expanded = $state(false)
|
|
136
|
+
let copied = $state(false)
|
|
137
|
+
let previewOpen = $state(false)
|
|
138
|
+
let codeFontSize = $state(13)
|
|
139
|
+
let copyTimer: ReturnType<typeof setTimeout> | null = $state(null)
|
|
140
|
+
let lifecycleId = $state(0)
|
|
141
|
+
let heightSyncRaf: number | null = $state(null)
|
|
142
|
+
let heightSyncDisposables: Array<{ dispose?: () => void } | (() => void)> = $state([])
|
|
143
|
+
let lastLayoutWidth: number | null = $state(null)
|
|
144
|
+
let lastLayoutHeight: number | null = $state(null)
|
|
145
|
+
let lastThemeRequest = $state('')
|
|
146
|
+
let languageRetryTimer: ReturnType<typeof setTimeout> | null = $state(null)
|
|
147
|
+
let loadingSettledRefreshPromise: Promise<void> | null = $state(null)
|
|
148
|
+
let loadingSettledRefreshTimer: ReturnType<typeof setTimeout> | null = $state(null)
|
|
149
|
+
let lastSettledRefreshSignature = $state('')
|
|
150
|
+
let tokenizeTimer: ReturnType<typeof setTimeout> | null = $state(null)
|
|
151
|
+
let tokenizeRaf: number | null = $state(null)
|
|
152
|
+
let tokenizeShouldRefreshModelValue = $state(false)
|
|
153
|
+
|
|
154
|
+
let rawLanguage = $derived(getString((node as any)?.language).trim())
|
|
155
|
+
let canonicalLanguage = $derived(normalizeLanguageIdentifier(rawLanguage))
|
|
156
|
+
let monacoLanguage = $derived(resolveMonacoLanguageId(canonicalLanguage || rawLanguage || 'plaintext'))
|
|
157
|
+
let code = $derived(getResolvedCode(node))
|
|
158
|
+
let diff = $derived(Boolean((node as any)?.diff))
|
|
159
|
+
let originalCode = $derived(getString((node as any)?.originalCode))
|
|
160
|
+
let updatedCode = $derived(getString((node as any)?.updatedCode))
|
|
161
|
+
let nodeLoading = $derived((node as any)?.loading === true)
|
|
162
|
+
let resolvedLoading = $derived(loading ?? nodeLoading)
|
|
163
|
+
let resolvedStream = $derived(stream ?? context?.codeBlockStream ?? true)
|
|
164
|
+
let resolvedIsDark = $derived(isDark ?? context?.isDark ?? false)
|
|
165
|
+
let resolvedThemes = $derived(context?.codeBlockThemes)
|
|
166
|
+
let mergedMonacoOptions = $derived({ ...(resolvedThemes?.monacoOptions || {}), ...(monacoOptions || {}) })
|
|
167
|
+
let resolvedMonacoOptions = $derived(buildResolvedMonacoOptions())
|
|
168
|
+
let requestedTheme = $derived(getThemeName(
|
|
143
169
|
resolvedIsDark
|
|
144
170
|
? darkTheme ?? resolvedThemes?.darkTheme
|
|
145
171
|
: lightTheme ?? resolvedThemes?.lightTheme,
|
|
146
172
|
resolvedIsDark ? 'vitesse-dark' : 'vitesse-light',
|
|
147
|
-
)
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
173
|
+
))
|
|
174
|
+
let defaultCodeFontSize = $derived(Number(mergedMonacoOptions.fontSize) || 13)
|
|
175
|
+
let minWidthValue = $derived(resolveCssSize(minWidth ?? resolvedThemes?.minWidth))
|
|
176
|
+
let maxWidthValue = $derived(resolveCssSize(maxWidth ?? resolvedThemes?.maxWidth))
|
|
177
|
+
let containerStyle = $derived([
|
|
152
178
|
minWidthValue ? `min-width: ${minWidthValue}` : '',
|
|
153
179
|
maxWidthValue ? `max-width: ${maxWidthValue}` : '',
|
|
154
|
-
].filter(Boolean).join('; ')
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
180
|
+
].filter(Boolean).join('; '))
|
|
181
|
+
let languageIcon = $derived(getLanguageIcon(canonicalLanguage || rawLanguage || 'plain'))
|
|
182
|
+
let displayLanguage = $derived(languageMap[canonicalLanguage] || (rawLanguage ? rawLanguage.toUpperCase() : languageMap['']))
|
|
183
|
+
let isPreviewable = $derived(isShowPreview !== false && (canonicalLanguage === 'html' || canonicalLanguage === 'svg'))
|
|
184
|
+
let previewTitle = $derived(canonicalLanguage === 'svg' ? t('artifacts.svgPreviewTitle') : t('artifacts.htmlPreviewTitle'))
|
|
185
|
+
let shouldDelayEditor = $derived(resolvedStream === false && resolvedLoading)
|
|
186
|
+
let documentStreaming = $derived(context?.final === false || resolvedLoading)
|
|
187
|
+
let shouldDeferStreamingLanguage = $derived(resolvedStream !== false && documentStreaming && (isLikelyIncompleteLanguageIdentifier(rawLanguage) || isStreamingLanguagePrefix(rawLanguage)))
|
|
188
|
+
let shouldRender = $derived(!(resolvedLoading && !code.trim()))
|
|
189
|
+
let preLanguageClass = $derived(sanitizeClassToken(rawLanguage || monacoLanguage))
|
|
190
|
+
let showPreWhileMonacoLoads = $derived(!useFallback && !shouldDelayEditor && !shouldDeferStreamingLanguage && !editorReady)
|
|
191
|
+
let showPreFallback = $derived(useFallback || shouldDelayEditor || shouldDeferStreamingLanguage || showPreWhileMonacoLoads)
|
|
192
|
+
let settledRefreshSignature = $derived(diff
|
|
167
193
|
? `${monacoLanguage}\0${originalCode}\0${updatedCode || code}`
|
|
168
|
-
: `${monacoLanguage}\0${code}`
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
fallbackLanguage
|
|
172
|
-
|
|
173
|
-
|
|
194
|
+
: `${monacoLanguage}\0${code}`)
|
|
195
|
+
|
|
196
|
+
$effect(() => {
|
|
197
|
+
if (useFallback && fallbackLanguage && rawLanguage !== fallbackLanguage && isLikelyIncompleteLanguageIdentifier(fallbackLanguage)) {
|
|
198
|
+
useFallback = false
|
|
199
|
+
fallbackLanguage = ''
|
|
200
|
+
}
|
|
201
|
+
})
|
|
202
|
+
|
|
203
|
+
$effect(() => {
|
|
174
204
|
void mounted
|
|
175
205
|
void resolvedLoading
|
|
176
206
|
void settledRefreshSignature
|
|
@@ -182,8 +212,9 @@
|
|
|
182
212
|
queueLoadingSettledRefresh()
|
|
183
213
|
}
|
|
184
214
|
}
|
|
185
|
-
}
|
|
186
|
-
|
|
215
|
+
})
|
|
216
|
+
|
|
217
|
+
$effect(() => {
|
|
187
218
|
void mounted
|
|
188
219
|
void editorHost
|
|
189
220
|
void shouldRender
|
|
@@ -201,7 +232,7 @@
|
|
|
201
232
|
void expanded
|
|
202
233
|
if (mounted)
|
|
203
234
|
void syncEditor()
|
|
204
|
-
}
|
|
235
|
+
})
|
|
205
236
|
|
|
206
237
|
onMount(() => {
|
|
207
238
|
mounted = true
|
|
@@ -1,19 +1,6 @@
|
|
|
1
1
|
import type { CodeBlockMonacoOptions, CodeBlockMonacoTheme } from '../types/monaco';
|
|
2
2
|
import type { SvelteRenderableNode, SvelteRenderContext } from './shared/node-helpers';
|
|
3
|
-
|
|
4
|
-
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
5
|
-
$$bindings?: Bindings;
|
|
6
|
-
} & Exports;
|
|
7
|
-
(internal: unknown, props: Props & {
|
|
8
|
-
$$events?: Events;
|
|
9
|
-
$$slots?: Slots;
|
|
10
|
-
}): Exports & {
|
|
11
|
-
$set?: any;
|
|
12
|
-
$on?: any;
|
|
13
|
-
};
|
|
14
|
-
z_$$bindings?: Bindings;
|
|
15
|
-
}
|
|
16
|
-
declare const CodeBlockNode: $$__sveltets_2_IsomorphicComponent<{
|
|
3
|
+
type Props = {
|
|
17
4
|
node: SvelteRenderableNode;
|
|
18
5
|
context?: SvelteRenderContext | undefined;
|
|
19
6
|
isDark?: boolean | undefined;
|
|
@@ -35,8 +22,7 @@ declare const CodeBlockNode: $$__sveltets_2_IsomorphicComponent<{
|
|
|
35
22
|
showFontSizeButtons?: boolean;
|
|
36
23
|
htmlPreviewAllowScripts?: boolean;
|
|
37
24
|
htmlPreviewSandbox?: string | undefined;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
type CodeBlockNode = InstanceType<typeof CodeBlockNode>;
|
|
25
|
+
};
|
|
26
|
+
declare const CodeBlockNode: import("svelte").Component<Props, {}, "">;
|
|
27
|
+
type CodeBlockNode = ReturnType<typeof CodeBlockNode>;
|
|
42
28
|
export default CodeBlockNode;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import type { SvelteRenderableNode, SvelteRenderContext } from './shared/node-helpers'
|
|
3
|
-
import {
|
|
3
|
+
import { onDestroy, onMount, untrack } from 'svelte'
|
|
4
4
|
import { useSafeI18n } from '../i18n/useSafeI18n'
|
|
5
5
|
import { getD2 } from '../optional/d2'
|
|
6
6
|
import { extractRenderedSvg, toSafeSvgMarkup } from '../sanitizeSvg'
|
|
@@ -29,50 +29,73 @@
|
|
|
29
29
|
AB5: '#F59E0B',
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
32
|
+
type Props = {
|
|
33
|
+
node: SvelteRenderableNode
|
|
34
|
+
context?: SvelteRenderContext | undefined
|
|
35
|
+
maxHeight?: string | null | undefined
|
|
36
|
+
loading?: boolean | undefined
|
|
37
|
+
isDark?: boolean | undefined
|
|
38
|
+
themeId?: number | null | undefined
|
|
39
|
+
darkThemeId?: number | null | undefined
|
|
40
|
+
showHeader?: boolean
|
|
41
|
+
showModeToggle?: boolean
|
|
42
|
+
showCopyButton?: boolean
|
|
43
|
+
showExportButton?: boolean
|
|
44
|
+
showCollapseButton?: boolean
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
let {
|
|
48
|
+
node,
|
|
49
|
+
context = undefined,
|
|
50
|
+
maxHeight = '500px',
|
|
51
|
+
loading = undefined,
|
|
52
|
+
isDark = undefined,
|
|
53
|
+
themeId = undefined,
|
|
54
|
+
darkThemeId = undefined,
|
|
55
|
+
showHeader = true,
|
|
56
|
+
showModeToggle = true,
|
|
57
|
+
showCopyButton = true,
|
|
58
|
+
showExportButton = true,
|
|
59
|
+
showCollapseButton = true
|
|
60
|
+
}: Props = $props()
|
|
44
61
|
|
|
45
62
|
const { t } = useSafeI18n()
|
|
46
63
|
|
|
47
|
-
let mounted = false
|
|
48
|
-
let renderToken = 0
|
|
49
|
-
let lastSignature = ''
|
|
50
|
-
let activeRenderSignature = ''
|
|
51
|
-
let svgMarkup = ''
|
|
52
|
-
let renderError = ''
|
|
53
|
-
let rendering = false
|
|
54
|
-
let rerenderQueued = false
|
|
55
|
-
let rerenderForce = false
|
|
56
|
-
let copied = false
|
|
57
|
-
let collapsed = false
|
|
58
|
-
let showSource = false
|
|
64
|
+
let mounted = $state(false)
|
|
65
|
+
let renderToken = $state(0)
|
|
66
|
+
let lastSignature = $state('')
|
|
67
|
+
let activeRenderSignature = $state('')
|
|
68
|
+
let svgMarkup = $state('')
|
|
69
|
+
let renderError = $state('')
|
|
70
|
+
let rendering = $state(false)
|
|
71
|
+
let rerenderQueued = $state(false)
|
|
72
|
+
let rerenderForce = $state(false)
|
|
73
|
+
let copied = $state(false)
|
|
74
|
+
let collapsed = $state(false)
|
|
75
|
+
let showSource = $state(false)
|
|
59
76
|
let copyTimer: ReturnType<typeof setTimeout> | null = null
|
|
60
77
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
78
|
+
let source = $derived(getString((node as any)?.code))
|
|
79
|
+
let resolvedLoading = $derived(loading ?? (node as any)?.loading === true)
|
|
80
|
+
let resolvedIsDark = $derived(isDark ?? context?.isDark ?? false)
|
|
81
|
+
let shouldRender = $derived(!(resolvedLoading && !source.trim()))
|
|
82
|
+
let showSourceFallback = $derived(showSource || !svgMarkup)
|
|
83
|
+
let renderStyle = $derived(maxHeight && maxHeight !== 'none' ? `max-height: ${maxHeight}` : '')
|
|
67
84
|
|
|
68
85
|
onMount(() => {
|
|
69
86
|
mounted = true
|
|
70
87
|
void renderD2(true)
|
|
71
88
|
})
|
|
72
89
|
|
|
73
|
-
|
|
74
|
-
if (mounted)
|
|
75
|
-
|
|
90
|
+
$effect(() => {
|
|
91
|
+
if (mounted) {
|
|
92
|
+
const _sig = getRenderSignature()
|
|
93
|
+
const _collapsed = collapsed
|
|
94
|
+
const _showSource = showSource
|
|
95
|
+
untrack(() => {
|
|
96
|
+
void renderD2()
|
|
97
|
+
})
|
|
98
|
+
}
|
|
76
99
|
})
|
|
77
100
|
|
|
78
101
|
onDestroy(() => {
|
|
@@ -1,18 +1,5 @@
|
|
|
1
1
|
import type { SvelteRenderableNode, SvelteRenderContext } from './shared/node-helpers';
|
|
2
|
-
|
|
3
|
-
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
4
|
-
$$bindings?: Bindings;
|
|
5
|
-
} & Exports;
|
|
6
|
-
(internal: unknown, props: Props & {
|
|
7
|
-
$$events?: Events;
|
|
8
|
-
$$slots?: Slots;
|
|
9
|
-
}): Exports & {
|
|
10
|
-
$set?: any;
|
|
11
|
-
$on?: any;
|
|
12
|
-
};
|
|
13
|
-
z_$$bindings?: Bindings;
|
|
14
|
-
}
|
|
15
|
-
declare const D2BlockNode: $$__sveltets_2_IsomorphicComponent<{
|
|
2
|
+
type Props = {
|
|
16
3
|
node: SvelteRenderableNode;
|
|
17
4
|
context?: SvelteRenderContext | undefined;
|
|
18
5
|
maxHeight?: string | null | undefined;
|
|
@@ -25,8 +12,7 @@ declare const D2BlockNode: $$__sveltets_2_IsomorphicComponent<{
|
|
|
25
12
|
showCopyButton?: boolean;
|
|
26
13
|
showExportButton?: boolean;
|
|
27
14
|
showCollapseButton?: boolean;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
type D2BlockNode = InstanceType<typeof D2BlockNode>;
|
|
15
|
+
};
|
|
16
|
+
declare const D2BlockNode: import("svelte").Component<Props, {}, "">;
|
|
17
|
+
type D2BlockNode = ReturnType<typeof D2BlockNode>;
|
|
32
18
|
export default D2BlockNode;
|
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import type { SvelteRenderableNode, SvelteRenderContext } from './shared/node-helpers'
|
|
3
3
|
import { renderNodeHtml } from './shared/renderNodeHtml'
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
|
|
5
|
+
interface Props {
|
|
6
|
+
node: SvelteRenderableNode;
|
|
7
|
+
context?: SvelteRenderContext | undefined;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
let { node, context = undefined }: Props = $props();
|
|
11
|
+
|
|
12
|
+
let html = $derived(renderNodeHtml(node, context));
|
|
7
13
|
</script>
|
|
8
14
|
{@html html}
|
|
@@ -1,22 +1,8 @@
|
|
|
1
1
|
import type { SvelteRenderableNode, SvelteRenderContext } from './shared/node-helpers';
|
|
2
|
-
interface
|
|
3
|
-
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
4
|
-
$$bindings?: Bindings;
|
|
5
|
-
} & Exports;
|
|
6
|
-
(internal: unknown, props: Props & {
|
|
7
|
-
$$events?: Events;
|
|
8
|
-
$$slots?: Slots;
|
|
9
|
-
}): Exports & {
|
|
10
|
-
$set?: any;
|
|
11
|
-
$on?: any;
|
|
12
|
-
};
|
|
13
|
-
z_$$bindings?: Bindings;
|
|
14
|
-
}
|
|
15
|
-
declare const DefinitionListNode: $$__sveltets_2_IsomorphicComponent<{
|
|
2
|
+
interface Props {
|
|
16
3
|
node: SvelteRenderableNode;
|
|
17
4
|
context?: SvelteRenderContext | undefined;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
type DefinitionListNode = InstanceType<typeof DefinitionListNode>;
|
|
5
|
+
}
|
|
6
|
+
declare const DefinitionListNode: import("svelte").Component<Props, {}, "">;
|
|
7
|
+
type DefinitionListNode = ReturnType<typeof DefinitionListNode>;
|
|
22
8
|
export default DefinitionListNode;
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import type { SvelteRenderableNode } from './shared/node-helpers'
|
|
3
3
|
import { getString } from './shared/node-helpers'
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
|
|
5
|
+
interface Props {
|
|
6
|
+
node: SvelteRenderableNode;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
let { node }: Props = $props();
|
|
10
|
+
|
|
11
|
+
let value = $derived(getString((node as any)?.raw || (node as any)?.markup || (node as any)?.content || (node as any)?.name));
|
|
6
12
|
</script>
|
|
7
13
|
<span class="emoji-node">{value}</span>
|