markstream-svelte 0.0.1-beta.1

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.
Files changed (233) hide show
  1. package/README.md +77 -0
  2. package/dist/components/AdmonitionNode.svelte +8 -0
  3. package/dist/components/AdmonitionNode.svelte.d.ts +23 -0
  4. package/dist/components/AdmonitionNode.svelte.d.ts.map +1 -0
  5. package/dist/components/BlockquoteNode.svelte +10 -0
  6. package/dist/components/BlockquoteNode.svelte.d.ts +24 -0
  7. package/dist/components/BlockquoteNode.svelte.d.ts.map +1 -0
  8. package/dist/components/CheckboxNode.svelte +5 -0
  9. package/dist/components/CheckboxNode.svelte.d.ts +22 -0
  10. package/dist/components/CheckboxNode.svelte.d.ts.map +1 -0
  11. package/dist/components/CodeBlockNode.svelte +944 -0
  12. package/dist/components/CodeBlockNode.svelte.d.ts +43 -0
  13. package/dist/components/CodeBlockNode.svelte.d.ts.map +1 -0
  14. package/dist/components/D2BlockNode.svelte +272 -0
  15. package/dist/components/D2BlockNode.svelte.d.ts +33 -0
  16. package/dist/components/D2BlockNode.svelte.d.ts.map +1 -0
  17. package/dist/components/DefinitionListNode.svelte +8 -0
  18. package/dist/components/DefinitionListNode.svelte.d.ts +23 -0
  19. package/dist/components/DefinitionListNode.svelte.d.ts.map +1 -0
  20. package/dist/components/EmojiNode.svelte +7 -0
  21. package/dist/components/EmojiNode.svelte.d.ts +22 -0
  22. package/dist/components/EmojiNode.svelte.d.ts.map +1 -0
  23. package/dist/components/EmphasisNode.svelte +8 -0
  24. package/dist/components/EmphasisNode.svelte.d.ts +24 -0
  25. package/dist/components/EmphasisNode.svelte.d.ts.map +1 -0
  26. package/dist/components/FallbackComponent.svelte +8 -0
  27. package/dist/components/FallbackComponent.svelte.d.ts +23 -0
  28. package/dist/components/FallbackComponent.svelte.d.ts.map +1 -0
  29. package/dist/components/FootnoteAnchorNode.svelte +21 -0
  30. package/dist/components/FootnoteAnchorNode.svelte.d.ts +22 -0
  31. package/dist/components/FootnoteAnchorNode.svelte.d.ts.map +1 -0
  32. package/dist/components/FootnoteNode.svelte +19 -0
  33. package/dist/components/FootnoteNode.svelte.d.ts +24 -0
  34. package/dist/components/FootnoteNode.svelte.d.ts.map +1 -0
  35. package/dist/components/FootnoteReferenceNode.svelte +26 -0
  36. package/dist/components/FootnoteReferenceNode.svelte.d.ts +22 -0
  37. package/dist/components/FootnoteReferenceNode.svelte.d.ts.map +1 -0
  38. package/dist/components/HardBreakNode.svelte +1 -0
  39. package/dist/components/HardBreakNode.svelte.d.ts +27 -0
  40. package/dist/components/HardBreakNode.svelte.d.ts.map +1 -0
  41. package/dist/components/HeadingNode.svelte +15 -0
  42. package/dist/components/HeadingNode.svelte.d.ts +24 -0
  43. package/dist/components/HeadingNode.svelte.d.ts.map +1 -0
  44. package/dist/components/HighlightNode.svelte +8 -0
  45. package/dist/components/HighlightNode.svelte.d.ts +24 -0
  46. package/dist/components/HighlightNode.svelte.d.ts.map +1 -0
  47. package/dist/components/HtmlBlockNode.svelte +8 -0
  48. package/dist/components/HtmlBlockNode.svelte.d.ts +23 -0
  49. package/dist/components/HtmlBlockNode.svelte.d.ts.map +1 -0
  50. package/dist/components/HtmlInlineNode.svelte +8 -0
  51. package/dist/components/HtmlInlineNode.svelte.d.ts +23 -0
  52. package/dist/components/HtmlInlineNode.svelte.d.ts.map +1 -0
  53. package/dist/components/HtmlPreviewFrame.svelte +13 -0
  54. package/dist/components/HtmlPreviewFrame.svelte.d.ts +26 -0
  55. package/dist/components/HtmlPreviewFrame.svelte.d.ts.map +1 -0
  56. package/dist/components/ImageNode.svelte +86 -0
  57. package/dist/components/ImageNode.svelte.d.ts +25 -0
  58. package/dist/components/ImageNode.svelte.d.ts.map +1 -0
  59. package/dist/components/InfographicBlockNode.svelte +429 -0
  60. package/dist/components/InfographicBlockNode.svelte.d.ts +34 -0
  61. package/dist/components/InfographicBlockNode.svelte.d.ts.map +1 -0
  62. package/dist/components/InlineCodeNode.svelte +7 -0
  63. package/dist/components/InlineCodeNode.svelte.d.ts +22 -0
  64. package/dist/components/InlineCodeNode.svelte.d.ts.map +1 -0
  65. package/dist/components/InlineWrapNode.svelte +10 -0
  66. package/dist/components/InlineWrapNode.svelte.d.ts +25 -0
  67. package/dist/components/InlineWrapNode.svelte.d.ts.map +1 -0
  68. package/dist/components/InsertNode.svelte +8 -0
  69. package/dist/components/InsertNode.svelte.d.ts +24 -0
  70. package/dist/components/InsertNode.svelte.d.ts.map +1 -0
  71. package/dist/components/LinkNode.svelte +41 -0
  72. package/dist/components/LinkNode.svelte.d.ts +25 -0
  73. package/dist/components/LinkNode.svelte.d.ts.map +1 -0
  74. package/dist/components/ListItemNode.svelte +9 -0
  75. package/dist/components/ListItemNode.svelte.d.ts +24 -0
  76. package/dist/components/ListItemNode.svelte.d.ts.map +1 -0
  77. package/dist/components/ListNode.svelte +16 -0
  78. package/dist/components/ListNode.svelte.d.ts +24 -0
  79. package/dist/components/ListNode.svelte.d.ts.map +1 -0
  80. package/dist/components/MarkdownCodeBlockNode.svelte +7 -0
  81. package/dist/components/MarkdownCodeBlockNode.svelte.d.ts +23 -0
  82. package/dist/components/MarkdownCodeBlockNode.svelte.d.ts.map +1 -0
  83. package/dist/components/MathBlockNode.svelte +96 -0
  84. package/dist/components/MathBlockNode.svelte.d.ts +22 -0
  85. package/dist/components/MathBlockNode.svelte.d.ts.map +1 -0
  86. package/dist/components/MathInlineNode.svelte +103 -0
  87. package/dist/components/MathInlineNode.svelte.d.ts +22 -0
  88. package/dist/components/MathInlineNode.svelte.d.ts.map +1 -0
  89. package/dist/components/MermaidBlockNode.svelte +557 -0
  90. package/dist/components/MermaidBlockNode.svelte.d.ts +40 -0
  91. package/dist/components/MermaidBlockNode.svelte.d.ts.map +1 -0
  92. package/dist/components/NodeOutlet.svelte +192 -0
  93. package/dist/components/NodeOutlet.svelte.d.ts +24 -0
  94. package/dist/components/NodeOutlet.svelte.d.ts.map +1 -0
  95. package/dist/components/NodeRenderer.svelte +349 -0
  96. package/dist/components/NodeRenderer.svelte.d.ts +64 -0
  97. package/dist/components/NodeRenderer.svelte.d.ts.map +1 -0
  98. package/dist/components/ParagraphNode.svelte +21 -0
  99. package/dist/components/ParagraphNode.svelte.d.ts +24 -0
  100. package/dist/components/ParagraphNode.svelte.d.ts.map +1 -0
  101. package/dist/components/PreCodeNode.svelte +13 -0
  102. package/dist/components/PreCodeNode.svelte.d.ts +22 -0
  103. package/dist/components/PreCodeNode.svelte.d.ts.map +1 -0
  104. package/dist/components/ReferenceNode.svelte +8 -0
  105. package/dist/components/ReferenceNode.svelte.d.ts +23 -0
  106. package/dist/components/ReferenceNode.svelte.d.ts.map +1 -0
  107. package/dist/components/RenderChildren.svelte +12 -0
  108. package/dist/components/RenderChildren.svelte.d.ts +24 -0
  109. package/dist/components/RenderChildren.svelte.d.ts.map +1 -0
  110. package/dist/components/StrikethroughNode.svelte +8 -0
  111. package/dist/components/StrikethroughNode.svelte.d.ts +24 -0
  112. package/dist/components/StrikethroughNode.svelte.d.ts.map +1 -0
  113. package/dist/components/StrongNode.svelte +8 -0
  114. package/dist/components/StrongNode.svelte.d.ts +24 -0
  115. package/dist/components/StrongNode.svelte.d.ts.map +1 -0
  116. package/dist/components/SubscriptNode.svelte +8 -0
  117. package/dist/components/SubscriptNode.svelte.d.ts +24 -0
  118. package/dist/components/SubscriptNode.svelte.d.ts.map +1 -0
  119. package/dist/components/SuperscriptNode.svelte +8 -0
  120. package/dist/components/SuperscriptNode.svelte.d.ts +24 -0
  121. package/dist/components/SuperscriptNode.svelte.d.ts.map +1 -0
  122. package/dist/components/TableNode.svelte +8 -0
  123. package/dist/components/TableNode.svelte.d.ts +23 -0
  124. package/dist/components/TableNode.svelte.d.ts.map +1 -0
  125. package/dist/components/TextNode.svelte +37 -0
  126. package/dist/components/TextNode.svelte.d.ts +25 -0
  127. package/dist/components/TextNode.svelte.d.ts.map +1 -0
  128. package/dist/components/ThematicBreakNode.svelte +1 -0
  129. package/dist/components/ThematicBreakNode.svelte.d.ts +27 -0
  130. package/dist/components/ThematicBreakNode.svelte.d.ts.map +1 -0
  131. package/dist/components/Tooltip.svelte +4 -0
  132. package/dist/components/Tooltip.svelte.d.ts +21 -0
  133. package/dist/components/Tooltip.svelte.d.ts.map +1 -0
  134. package/dist/components/VmrContainerNode.svelte +8 -0
  135. package/dist/components/VmrContainerNode.svelte.d.ts +23 -0
  136. package/dist/components/VmrContainerNode.svelte.d.ts.map +1 -0
  137. package/dist/components/shared/diagram-height.d.ts +10 -0
  138. package/dist/components/shared/diagram-height.d.ts.map +1 -0
  139. package/dist/components/shared/diagram-height.js +52 -0
  140. package/dist/components/shared/node-helpers.d.ts +108 -0
  141. package/dist/components/shared/node-helpers.d.ts.map +1 -0
  142. package/dist/components/shared/node-helpers.js +220 -0
  143. package/dist/components/shared/node-outlet-helpers.d.ts +9 -0
  144. package/dist/components/shared/node-outlet-helpers.d.ts.map +1 -0
  145. package/dist/components/shared/node-outlet-helpers.js +92 -0
  146. package/dist/components/shared/render-window.d.ts +19 -0
  147. package/dist/components/shared/render-window.d.ts.map +1 -0
  148. package/dist/components/shared/render-window.js +63 -0
  149. package/dist/components/shared/renderNodeHtml.d.ts +4 -0
  150. package/dist/components/shared/renderNodeHtml.d.ts.map +1 -0
  151. package/dist/components/shared/renderNodeHtml.js +19 -0
  152. package/dist/components/shared/rich-block-helpers.d.ts +7 -0
  153. package/dist/components/shared/rich-block-helpers.d.ts.map +1 -0
  154. package/dist/components/shared/rich-block-helpers.js +76 -0
  155. package/dist/customComponents.d.ts +10 -0
  156. package/dist/customComponents.d.ts.map +1 -0
  157. package/dist/customComponents.js +66 -0
  158. package/dist/enhanceRenderedHtml.d.ts +21 -0
  159. package/dist/enhanceRenderedHtml.d.ts.map +1 -0
  160. package/dist/enhanceRenderedHtml.js +768 -0
  161. package/dist/hydrateCustomTagContent.d.ts +3 -0
  162. package/dist/hydrateCustomTagContent.d.ts.map +1 -0
  163. package/dist/hydrateCustomTagContent.js +130 -0
  164. package/dist/i18n/useSafeI18n.d.ts +5 -0
  165. package/dist/i18n/useSafeI18n.d.ts.map +1 -0
  166. package/dist/i18n/useSafeI18n.js +42 -0
  167. package/dist/index.css +2009 -0
  168. package/dist/index.d.ts +78 -0
  169. package/dist/index.d.ts.map +1 -0
  170. package/dist/index.js +66 -0
  171. package/dist/index.px.css +2009 -0
  172. package/dist/index.tailwind.css +2009 -0
  173. package/dist/optional/d2.d.ts +7 -0
  174. package/dist/optional/d2.d.ts.map +1 -0
  175. package/dist/optional/d2.js +67 -0
  176. package/dist/optional/infographic.d.ts +2 -0
  177. package/dist/optional/infographic.d.ts.map +1 -0
  178. package/dist/optional/infographic.js +29 -0
  179. package/dist/optional/katex.d.ts +7 -0
  180. package/dist/optional/katex.d.ts.map +1 -0
  181. package/dist/optional/katex.js +93 -0
  182. package/dist/optional/mermaid.d.ts +7 -0
  183. package/dist/optional/mermaid.d.ts.map +1 -0
  184. package/dist/optional/mermaid.js +171 -0
  185. package/dist/optional/monaco.d.ts +5 -0
  186. package/dist/optional/monaco.d.ts.map +1 -0
  187. package/dist/optional/monaco.js +70 -0
  188. package/dist/parseNestedMarkdownToNodes.d.ts +15 -0
  189. package/dist/parseNestedMarkdownToNodes.d.ts.map +1 -0
  190. package/dist/parseNestedMarkdownToNodes.js +66 -0
  191. package/dist/renderMarkdownHtml.d.ts +31 -0
  192. package/dist/renderMarkdownHtml.d.ts.map +1 -0
  193. package/dist/renderMarkdownHtml.js +465 -0
  194. package/dist/sanitizeHtmlContent.d.ts +3 -0
  195. package/dist/sanitizeHtmlContent.d.ts.map +1 -0
  196. package/dist/sanitizeHtmlContent.js +175 -0
  197. package/dist/sanitizeSvg.d.ts +3 -0
  198. package/dist/sanitizeSvg.d.ts.map +1 -0
  199. package/dist/sanitizeSvg.js +76 -0
  200. package/dist/tailwind-entry.d.ts +2 -0
  201. package/dist/tailwind-entry.d.ts.map +1 -0
  202. package/dist/tailwind-entry.js +1 -0
  203. package/dist/tooltip/singletonTooltip.d.ts +8 -0
  204. package/dist/tooltip/singletonTooltip.d.ts.map +1 -0
  205. package/dist/tooltip/singletonTooltip.js +124 -0
  206. package/dist/types/monaco.d.ts +66 -0
  207. package/dist/types/monaco.d.ts.map +1 -0
  208. package/dist/types/monaco.js +1 -0
  209. package/dist/utils/languageIcon.d.ts +8 -0
  210. package/dist/utils/languageIcon.d.ts.map +1 -0
  211. package/dist/utils/languageIcon.js +182 -0
  212. package/dist/utils/normalizeKaTeXRenderInput.d.ts +2 -0
  213. package/dist/utils/normalizeKaTeXRenderInput.d.ts.map +1 -0
  214. package/dist/utils/normalizeKaTeXRenderInput.js +7 -0
  215. package/dist/workers/katexCdnWorker.d.ts +21 -0
  216. package/dist/workers/katexCdnWorker.d.ts.map +1 -0
  217. package/dist/workers/katexCdnWorker.js +193 -0
  218. package/dist/workers/katexRenderer.worker.d.ts +2 -0
  219. package/dist/workers/katexRenderer.worker.d.ts.map +1 -0
  220. package/dist/workers/katexRenderer.worker.js +55 -0
  221. package/dist/workers/katexWorkerClient.d.ts +36 -0
  222. package/dist/workers/katexWorkerClient.d.ts.map +1 -0
  223. package/dist/workers/katexWorkerClient.js +270 -0
  224. package/dist/workers/mermaidCdnWorker.d.ts +16 -0
  225. package/dist/workers/mermaidCdnWorker.d.ts.map +1 -0
  226. package/dist/workers/mermaidCdnWorker.js +235 -0
  227. package/dist/workers/mermaidParser.worker.d.ts +2 -0
  228. package/dist/workers/mermaidParser.worker.d.ts.map +1 -0
  229. package/dist/workers/mermaidParser.worker.js +85 -0
  230. package/dist/workers/mermaidWorkerClient.d.ts +16 -0
  231. package/dist/workers/mermaidWorkerClient.d.ts.map +1 -0
  232. package/dist/workers/mermaidWorkerClient.js +170 -0
  233. package/package.json +95 -0
@@ -0,0 +1,192 @@
1
+ <script lang="ts">
2
+ import type { SvelteRenderableNode, SvelteRenderContext } from './shared/node-helpers'
3
+ import { STANDARD_HTML_TAGS } from 'stream-markdown-parser'
4
+ import { getCustomNodeComponents } from '../customComponents'
5
+ import AdmonitionNode from './AdmonitionNode.svelte'
6
+ import BlockquoteNode from './BlockquoteNode.svelte'
7
+ import CheckboxNode from './CheckboxNode.svelte'
8
+ import CodeBlockNode from './CodeBlockNode.svelte'
9
+ import D2BlockNode from './D2BlockNode.svelte'
10
+ import DefinitionListNode from './DefinitionListNode.svelte'
11
+ import EmojiNode from './EmojiNode.svelte'
12
+ import EmphasisNode from './EmphasisNode.svelte'
13
+ import FallbackComponent from './FallbackComponent.svelte'
14
+ import FootnoteAnchorNode from './FootnoteAnchorNode.svelte'
15
+ import FootnoteNode from './FootnoteNode.svelte'
16
+ import FootnoteReferenceNode from './FootnoteReferenceNode.svelte'
17
+ import HardBreakNode from './HardBreakNode.svelte'
18
+ import HeadingNode from './HeadingNode.svelte'
19
+ import HighlightNode from './HighlightNode.svelte'
20
+ import HtmlBlockNode from './HtmlBlockNode.svelte'
21
+ import HtmlInlineNode from './HtmlInlineNode.svelte'
22
+ import ImageNode from './ImageNode.svelte'
23
+ import InfographicBlockNode from './InfographicBlockNode.svelte'
24
+ import InlineCodeNode from './InlineCodeNode.svelte'
25
+ import InsertNode from './InsertNode.svelte'
26
+ import LinkNode from './LinkNode.svelte'
27
+ import ListItemNode from './ListItemNode.svelte'
28
+ import ListNode from './ListNode.svelte'
29
+ import MathBlockNode from './MathBlockNode.svelte'
30
+ import MathInlineNode from './MathInlineNode.svelte'
31
+ import MermaidBlockNode from './MermaidBlockNode.svelte'
32
+ import ParagraphNode from './ParagraphNode.svelte'
33
+ import PreCodeNode from './PreCodeNode.svelte'
34
+ import ReferenceNode from './ReferenceNode.svelte'
35
+ import StrikethroughNode from './StrikethroughNode.svelte'
36
+ import StrongNode from './StrongNode.svelte'
37
+ import SubscriptNode from './SubscriptNode.svelte'
38
+ import SuperscriptNode from './SuperscriptNode.svelte'
39
+ import TableNode from './TableNode.svelte'
40
+ import TextNode from './TextNode.svelte'
41
+ import ThematicBreakNode from './ThematicBreakNode.svelte'
42
+ import VmrContainerNode from './VmrContainerNode.svelte'
43
+ import { hasCompleteHtmlTagContent } from './shared/node-helpers'
44
+ import {
45
+ coerceBuiltinHtmlNode,
46
+ coerceCustomHtmlNode,
47
+ resolveHtmlTag,
48
+ resolveNodeOutletCodeMode,
49
+ resolveNodeOutletCustomComponent,
50
+ resolveNodeOutletCustomInputs,
51
+ } from './shared/node-outlet-helpers'
52
+
53
+ export let node: SvelteRenderableNode
54
+ export let context: SvelteRenderContext | undefined = undefined
55
+ export let indexKey: string | number | undefined = undefined
56
+
57
+ $: resolvedType = String((node as any)?.type || '')
58
+ $: customComponentMap = context?.customComponents || getCustomNodeComponents(context?.customId)
59
+ $: CustomComponent = resolveNodeOutletCustomComponent(node, context, customComponentMap)
60
+ $: customNode = coerceCustomHtmlNode(node)
61
+ $: customInputs = resolveNodeOutletCustomInputs(node, context) || {}
62
+ $: codeMode = resolveNodeOutletCodeMode(node, context)
63
+ $: htmlTag = resolveHtmlTag(node)
64
+ $: shouldEscapeHtmlTag = resolveShouldEscapeHtmlTag()
65
+ $: htmlRenderNode = coerceBuiltinHtmlNode(node, resolvedType)
66
+ $: codeBlockInstanceKey = `${String(indexKey ?? 'code-block')}:${String((node as any)?.language ?? '')}:${(node as any)?.diff ? 'diff' : 'code'}`
67
+ $: escapedTextNode = {
68
+ type: 'text',
69
+ content: String((node as any)?.content ?? (node as any)?.raw ?? ''),
70
+ raw: String((node as any)?.content ?? (node as any)?.raw ?? ''),
71
+ } as SvelteRenderableNode
72
+
73
+ function resolveShouldEscapeHtmlTag() {
74
+ if (resolvedType !== 'html_block' && resolvedType !== 'html_inline')
75
+ return false
76
+ if (context?.htmlPolicy === 'escape')
77
+ return true
78
+ if (!htmlTag)
79
+ return false
80
+ const customHtmlTags = context?.customHtmlTags ?? []
81
+ const isWhitelisted = customHtmlTags.some(t => String(t).toLowerCase() === htmlTag)
82
+ if (isWhitelisted)
83
+ return false
84
+ if (STANDARD_HTML_TAGS.has(htmlTag))
85
+ return false
86
+ return !hasCompleteHtmlTagContent((node as any)?.content ?? (node as any)?.raw, htmlTag)
87
+ }
88
+ </script>
89
+
90
+ {#if CustomComponent}
91
+ <svelte:component
92
+ this={CustomComponent}
93
+ node={customNode}
94
+ context={context}
95
+ ctx={context}
96
+ customId={context?.customId}
97
+ isDark={context?.isDark}
98
+ indexKey={indexKey}
99
+ typewriter={context?.typewriter}
100
+ {...customInputs}
101
+ />
102
+ {:else if resolvedType === 'text' || resolvedType === 'text_special'}
103
+ <TextNode {node} {context} {indexKey} typewriter={context?.typewriter} />
104
+ {:else if resolvedType === 'paragraph'}
105
+ <ParagraphNode {node} {context} {indexKey} />
106
+ {:else if resolvedType === 'heading'}
107
+ <HeadingNode {node} {context} {indexKey} />
108
+ {:else if resolvedType === 'blockquote'}
109
+ <BlockquoteNode {node} {context} {indexKey} />
110
+ {:else if resolvedType === 'list'}
111
+ <ListNode {node} {context} {indexKey} />
112
+ {:else if resolvedType === 'list_item'}
113
+ <ListItemNode {node} {context} {indexKey} />
114
+ {:else if resolvedType === 'table'}
115
+ <TableNode {node} {context} />
116
+ {:else if resolvedType === 'definition_list'}
117
+ <DefinitionListNode {node} {context} />
118
+ {:else if resolvedType === 'footnote'}
119
+ <FootnoteNode {node} {context} />
120
+ {:else if resolvedType === 'footnote_reference'}
121
+ <FootnoteReferenceNode {node} />
122
+ {:else if resolvedType === 'footnote_anchor'}
123
+ <FootnoteAnchorNode {node} />
124
+ {:else if resolvedType === 'admonition'}
125
+ <AdmonitionNode {node} {context} />
126
+ {:else if resolvedType === 'hardbreak'}
127
+ <HardBreakNode />
128
+ {:else if resolvedType === 'link'}
129
+ <LinkNode {node} {context} {indexKey} showTooltip={typeof context?.showTooltips === 'boolean' ? context?.showTooltips : undefined} />
130
+ {:else if resolvedType === 'image'}
131
+ <ImageNode {node} />
132
+ {:else if resolvedType === 'inline_code'}
133
+ <InlineCodeNode {node} />
134
+ {:else if resolvedType === 'strong'}
135
+ <StrongNode {node} {context} {indexKey} />
136
+ {:else if resolvedType === 'emphasis'}
137
+ <EmphasisNode {node} {context} {indexKey} />
138
+ {:else if resolvedType === 'strikethrough'}
139
+ <StrikethroughNode {node} {context} {indexKey} />
140
+ {:else if resolvedType === 'highlight'}
141
+ <HighlightNode {node} {context} {indexKey} />
142
+ {:else if resolvedType === 'insert'}
143
+ <InsertNode {node} {context} {indexKey} />
144
+ {:else if resolvedType === 'subscript'}
145
+ <SubscriptNode {node} {context} {indexKey} />
146
+ {:else if resolvedType === 'superscript'}
147
+ <SuperscriptNode {node} {context} {indexKey} />
148
+ {:else if resolvedType === 'checkbox' || resolvedType === 'checkbox_input'}
149
+ <CheckboxNode {node} />
150
+ {:else if resolvedType === 'emoji'}
151
+ <EmojiNode {node} />
152
+ {:else if resolvedType === 'reference'}
153
+ <ReferenceNode {node} {context} />
154
+ {:else if resolvedType === 'html_block'}
155
+ {#if shouldEscapeHtmlTag}
156
+ <TextNode node={escapedTextNode} {context} {indexKey} />
157
+ {:else}
158
+ <HtmlBlockNode node={htmlRenderNode} {context} />
159
+ {/if}
160
+ {:else if resolvedType === 'html_inline'}
161
+ {#if shouldEscapeHtmlTag}
162
+ <TextNode node={escapedTextNode} {context} {indexKey} />
163
+ {:else}
164
+ <HtmlInlineNode node={htmlRenderNode} {context} />
165
+ {/if}
166
+ {:else if resolvedType === 'vmr_container'}
167
+ <VmrContainerNode {node} {context} />
168
+ {:else if resolvedType === 'thematic_break'}
169
+ <ThematicBreakNode />
170
+ {:else if resolvedType === 'math_inline'}
171
+ <MathInlineNode {node} />
172
+ {:else if resolvedType === 'math_block'}
173
+ <MathBlockNode {node} />
174
+ {:else if resolvedType === 'code_block'}
175
+ {#if codeMode === 'mermaid'}
176
+ <MermaidBlockNode {node} {context} {...customInputs} />
177
+ {:else if codeMode === 'd2'}
178
+ <D2BlockNode {node} {context} {...customInputs} />
179
+ {:else if codeMode === 'infographic'}
180
+ <InfographicBlockNode {node} {context} {...customInputs} />
181
+ {:else if codeMode === 'pre'}
182
+ <PreCodeNode {node} />
183
+ {:else}
184
+ {#key codeBlockInstanceKey}
185
+ <CodeBlockNode {node} {context} {...customInputs} />
186
+ {/key}
187
+ {/if}
188
+ {:else if resolvedType === 'label_open' || resolvedType === 'label_close'}
189
+ <span hidden></span>
190
+ {:else}
191
+ <FallbackComponent {node} {context} />
192
+ {/if}
@@ -0,0 +1,24 @@
1
+ import type { SvelteRenderableNode, SvelteRenderContext } from './shared/node-helpers';
2
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
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 NodeOutlet: $$__sveltets_2_IsomorphicComponent<{
16
+ node: SvelteRenderableNode;
17
+ context?: SvelteRenderContext | undefined;
18
+ indexKey?: string | number | undefined;
19
+ }, {
20
+ [evt: string]: CustomEvent<any>;
21
+ }, {}, {}, string>;
22
+ type NodeOutlet = InstanceType<typeof NodeOutlet>;
23
+ export default NodeOutlet;
24
+ //# sourceMappingURL=NodeOutlet.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeOutlet.svelte.d.ts","sourceRoot":"","sources":["../../src/components/NodeOutlet.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAqOtF,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IAC9G,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAKD,QAAA,MAAM,UAAU;UAV+D,oBAAoB;cAAY,mBAAmB,GAAG,SAAS;eAAa,MAAM,GAAG,MAAM,GAAG,SAAS;;;kBAUvF,CAAC;AAC9E,KAAK,UAAU,GAAG,YAAY,CAAC,OAAO,UAAU,CAAC,CAAC;AACpD,eAAe,UAAU,CAAC"}
@@ -0,0 +1,349 @@
1
+ <script lang="ts">
2
+ import type {
3
+ NodeRendererEvents,
4
+ NodeRendererProps,
5
+ SvelteRenderableNode,
6
+ SvelteRenderContext,
7
+ } from './shared/node-helpers'
8
+ import { afterUpdate, onDestroy, onMount, tick } from 'svelte'
9
+ import { getCustomNodeComponents, subscribeCustomComponents } from '../customComponents'
10
+ import { disposeRenderedHtmlEnhancements, enhanceRenderedHtml } from '../enhanceRenderedHtml'
11
+ import NodeOutlet from './NodeOutlet.svelte'
12
+ import { buildRenderContext, resolveParsedNodes } from './shared/node-helpers'
13
+
14
+ export let content: NodeRendererProps['content'] = ''
15
+ export let nodes: NodeRendererProps['nodes'] = null
16
+ export let final: NodeRendererProps['final'] = undefined
17
+ export let parseOptions: NodeRendererProps['parseOptions'] = undefined
18
+ export let customMarkdownIt: NodeRendererProps['customMarkdownIt'] = undefined
19
+ export let debugPerformance = false
20
+ export let customHtmlTags: NodeRendererProps['customHtmlTags'] = undefined
21
+ export let htmlPolicy: NodeRendererProps['htmlPolicy'] = 'safe'
22
+ export let viewportPriority: NodeRendererProps['viewportPriority'] = true
23
+ export let codeBlockStream = true
24
+ export let codeBlockDarkTheme: NodeRendererProps['codeBlockDarkTheme'] = undefined
25
+ export let codeBlockLightTheme: NodeRendererProps['codeBlockLightTheme'] = undefined
26
+ export let codeBlockMonacoOptions: NodeRendererProps['codeBlockMonacoOptions'] = undefined
27
+ export let renderCodeBlocksAsPre = false
28
+ export let codeBlockMinWidth: NodeRendererProps['codeBlockMinWidth'] = undefined
29
+ export let codeBlockMaxWidth: NodeRendererProps['codeBlockMaxWidth'] = undefined
30
+ export let codeBlockProps: NodeRendererProps['codeBlockProps'] = undefined
31
+ export let mermaidProps: NodeRendererProps['mermaidProps'] = undefined
32
+ export let d2Props: NodeRendererProps['d2Props'] = undefined
33
+ export let infographicProps: NodeRendererProps['infographicProps'] = undefined
34
+ export let customComponents: NodeRendererProps['customComponents'] = undefined
35
+ export let showTooltips = true
36
+ export let themes: NodeRendererProps['themes'] = undefined
37
+ export let isDark = false
38
+ export let customId: NodeRendererProps['customId'] = undefined
39
+ export let indexKey: NodeRendererProps['indexKey'] = undefined
40
+ export let typewriter = true
41
+ export let batchRendering = true
42
+ export let initialRenderBatchSize = 40
43
+ export let renderBatchSize = 80
44
+ export let renderBatchDelay = 16
45
+ export let renderBatchBudgetMs = 6
46
+ export let renderBatchIdleTimeoutMs = 120
47
+ export let deferNodesUntilVisible = true
48
+ export let maxLiveNodes = 320
49
+ export let liveNodeBuffer = 60
50
+ export let allowHtml = true
51
+ export let className = ''
52
+ export let onCopy: NodeRendererEvents['onCopy'] = undefined
53
+ export let onHandleArtifactClick: NodeRendererEvents['onHandleArtifactClick'] = undefined
54
+ export let onClick: ((event: MouseEvent) => void) | undefined = undefined
55
+ export let onMouseover: ((event: MouseEvent) => void) | undefined = undefined
56
+ export let onMouseout: ((event: MouseEvent) => void) | undefined = undefined
57
+
58
+ let rootEl: HTMLDivElement | null = null
59
+ let parsedNodes: SvelteRenderableNode[] = []
60
+ let renderContext: SvelteRenderContext = { events: {} }
61
+ let customComponentsRevision = 0
62
+ let streamRenderVersion = 0
63
+ let previousContent: typeof content = undefined
64
+ let previousNodes: typeof nodes = undefined
65
+ let enhancementToken = 0
66
+ let enhancementHandle: { dispose: () => void } | null = null
67
+ let renderedNodeCount = 0
68
+ let renderBatchTimer: ReturnType<typeof setTimeout> | null = null
69
+ let renderBatchFrame: number | null = null
70
+ let renderBatchIdle: number | null = null
71
+ let renderBatchToken = 0
72
+ const textStreamState = new Map<string, string>()
73
+
74
+ $: props = {
75
+ content,
76
+ nodes,
77
+ final,
78
+ parseOptions,
79
+ customMarkdownIt,
80
+ debugPerformance,
81
+ customHtmlTags,
82
+ htmlPolicy,
83
+ viewportPriority,
84
+ codeBlockStream,
85
+ codeBlockDarkTheme,
86
+ codeBlockLightTheme,
87
+ codeBlockMonacoOptions,
88
+ renderCodeBlocksAsPre,
89
+ codeBlockMinWidth,
90
+ codeBlockMaxWidth,
91
+ codeBlockProps,
92
+ mermaidProps,
93
+ d2Props,
94
+ infographicProps,
95
+ customComponents,
96
+ showTooltips,
97
+ themes,
98
+ isDark,
99
+ customId,
100
+ indexKey,
101
+ typewriter,
102
+ batchRendering,
103
+ initialRenderBatchSize,
104
+ renderBatchSize,
105
+ renderBatchDelay,
106
+ renderBatchBudgetMs,
107
+ renderBatchIdleTimeoutMs,
108
+ deferNodesUntilVisible,
109
+ maxLiveNodes,
110
+ liveNodeBuffer,
111
+ allowHtml,
112
+ } satisfies NodeRendererProps
113
+
114
+ $: {
115
+ if (previousContent !== content || previousNodes !== nodes) {
116
+ streamRenderVersion += 1
117
+ previousContent = content
118
+ previousNodes = nodes
119
+ }
120
+ }
121
+
122
+ $: {
123
+ const start = debugPerformance && typeof performance !== 'undefined' ? performance.now() : 0
124
+ parsedNodes = resolveParsedNodes(props)
125
+ if (debugPerformance && typeof console !== 'undefined' && typeof performance !== 'undefined') {
126
+ console.info('[markstream-svelte][perf] parse(sync)', {
127
+ ms: Math.round(performance.now() - start),
128
+ nodes: parsedNodes.length,
129
+ contentLength: content?.length ?? 0,
130
+ })
131
+ }
132
+ }
133
+
134
+ $: {
135
+ void customComponentsRevision
136
+ const scopedCustomComponents = getCustomNodeComponents(customId)
137
+ const mergedCustomComponents = customComponents
138
+ ? { ...scopedCustomComponents, ...customComponents }
139
+ : scopedCustomComponents
140
+ renderContext = buildRenderContext(
141
+ {
142
+ ...props,
143
+ customComponents: mergedCustomComponents,
144
+ },
145
+ {
146
+ onCopy,
147
+ onHandleArtifactClick,
148
+ },
149
+ textStreamState,
150
+ streamRenderVersion,
151
+ )
152
+ }
153
+
154
+ $: {
155
+ void parsedNodes.length
156
+ void batchRendering
157
+ void initialRenderBatchSize
158
+ void renderBatchSize
159
+ void renderBatchDelay
160
+ void renderBatchBudgetMs
161
+ void renderBatchIdleTimeoutMs
162
+ void final
163
+ void renderedNodeCount
164
+ syncRenderedNodeWindow()
165
+ }
166
+ $: renderedNodes = parsedNodes.slice(0, Math.min(renderedNodeCount, parsedNodes.length))
167
+
168
+ onMount(() => {
169
+ const unsubscribe = subscribeCustomComponents(() => {
170
+ customComponentsRevision += 1
171
+ })
172
+ scheduleEnhancement()
173
+ return unsubscribe
174
+ })
175
+
176
+ afterUpdate(() => {
177
+ scheduleEnhancement()
178
+ })
179
+
180
+ onDestroy(() => {
181
+ enhancementToken += 1
182
+ cancelRenderBatch()
183
+ enhancementHandle?.dispose()
184
+ enhancementHandle = null
185
+ disposeRenderedHtmlEnhancements(rootEl)
186
+ })
187
+
188
+ function toPositiveInteger(value: unknown, fallback: number) {
189
+ const numeric = Number(value)
190
+ return Number.isFinite(numeric) && numeric > 0 ? Math.floor(numeric) : fallback
191
+ }
192
+
193
+ function syncRenderedNodeWindow() {
194
+ const total = parsedNodes.length
195
+ const initialCount = Math.min(total, toPositiveInteger(initialRenderBatchSize, 40))
196
+ const shouldBatch = final !== false && batchRendering !== false && total > initialCount
197
+
198
+ if (!shouldBatch) {
199
+ cancelRenderBatch()
200
+ if (renderedNodeCount !== total)
201
+ renderedNodeCount = total
202
+ return
203
+ }
204
+
205
+ if (renderedNodeCount <= 0 || renderedNodeCount > total)
206
+ renderedNodeCount = initialCount
207
+ else if (renderedNodeCount < initialCount)
208
+ renderedNodeCount = initialCount
209
+
210
+ scheduleRenderBatch()
211
+ }
212
+
213
+ function scheduleRenderBatch() {
214
+ if (renderedNodeCount >= parsedNodes.length || renderBatchTimer || renderBatchFrame != null || renderBatchIdle != null)
215
+ return
216
+ const token = ++renderBatchToken
217
+ const delay = Math.max(0, Number(renderBatchDelay) || 0)
218
+ const run = (deadline?: { timeRemaining?: () => number }) => {
219
+ renderBatchTimer = null
220
+ renderBatchFrame = null
221
+ renderBatchIdle = null
222
+ if (token !== renderBatchToken)
223
+ return
224
+ const batchSize = toPositiveInteger(renderBatchSize, 80)
225
+ const budget = Math.max(2, toPositiveInteger(renderBatchBudgetMs, 6))
226
+ let nextCount = renderedNodeCount
227
+ do {
228
+ nextCount = Math.min(parsedNodes.length, nextCount + batchSize)
229
+ if (!deadline)
230
+ break
231
+ const remaining = typeof deadline.timeRemaining === 'function' ? deadline.timeRemaining() : 0
232
+ if (remaining <= budget * 0.5)
233
+ break
234
+ } while (nextCount < parsedNodes.length)
235
+ if (nextCount !== renderedNodeCount)
236
+ renderedNodeCount = nextCount
237
+ }
238
+
239
+ const requestIdle = typeof window !== 'undefined' ? (window as any).requestIdleCallback as ((callback: (deadline: { timeRemaining?: () => number }) => void, options?: { timeout?: number }) => number) | undefined : undefined
240
+ if (requestIdle) {
241
+ renderBatchIdle = requestIdle(run, { timeout: Math.max(0, Number(renderBatchIdleTimeoutMs) || 120) })
242
+ return
243
+ }
244
+
245
+ if (typeof window !== 'undefined' && typeof window.requestAnimationFrame === 'function') {
246
+ renderBatchFrame = window.requestAnimationFrame(() => {
247
+ renderBatchFrame = null
248
+ if (delay > 0)
249
+ renderBatchTimer = setTimeout(run, delay)
250
+ else
251
+ run()
252
+ })
253
+ return
254
+ }
255
+
256
+ renderBatchTimer = setTimeout(run, delay)
257
+ }
258
+
259
+ function cancelRenderBatch() {
260
+ renderBatchToken += 1
261
+ if (renderBatchTimer) {
262
+ clearTimeout(renderBatchTimer)
263
+ renderBatchTimer = null
264
+ }
265
+ if (renderBatchFrame != null && typeof window !== 'undefined') {
266
+ window.cancelAnimationFrame(renderBatchFrame)
267
+ renderBatchFrame = null
268
+ }
269
+ const cancelIdle = typeof window !== 'undefined' ? (window as any).cancelIdleCallback as ((id: number) => void) | undefined : undefined
270
+ if (renderBatchIdle != null) {
271
+ cancelIdle?.(renderBatchIdle)
272
+ renderBatchIdle = null
273
+ }
274
+ }
275
+
276
+ async function scheduleEnhancement() {
277
+ if (!rootEl || typeof window === 'undefined')
278
+ return
279
+ const enhancementFinal = typeof final === 'boolean' ? final : !hasLoadingNodes(parsedNodes)
280
+ if (!enhancementFinal) {
281
+ enhancementToken += 1
282
+ enhancementHandle?.dispose()
283
+ enhancementHandle = null
284
+ return
285
+ }
286
+ const token = ++enhancementToken
287
+ await tick()
288
+ if (token !== enhancementToken || !rootEl)
289
+ return
290
+ enhancementHandle?.dispose()
291
+ enhancementHandle = await enhanceRenderedHtml(rootEl, {
292
+ final: enhancementFinal,
293
+ isDark,
294
+ renderCodeBlocksAsPre,
295
+ monacoOptions: codeBlockMonacoOptions,
296
+ codeBlockProps,
297
+ mermaidProps,
298
+ d2Props,
299
+ infographicProps,
300
+ showTooltips,
301
+ onCopy,
302
+ isCancelled: () => token !== enhancementToken,
303
+ })
304
+ }
305
+
306
+ function hasLoadingNodes(nodes: SvelteRenderableNode[]): boolean {
307
+ for (const node of nodes) {
308
+ if ((node as any)?.loading === true)
309
+ return true
310
+ if (hasLoadingNodes(((node as any)?.children || []) as SvelteRenderableNode[]))
311
+ return true
312
+ if (hasLoadingNodes(((node as any)?.items || []) as SvelteRenderableNode[]))
313
+ return true
314
+ }
315
+ return false
316
+ }
317
+
318
+ function handleMouseover(event: MouseEvent) {
319
+ const target = event.target as HTMLElement | null
320
+ if (target?.closest('[data-node-index]'))
321
+ onMouseover?.(event)
322
+ }
323
+
324
+ function handleMouseout(event: MouseEvent) {
325
+ const target = event.target as HTMLElement | null
326
+ if (target?.closest('[data-node-index]'))
327
+ onMouseout?.(event)
328
+ }
329
+ </script>
330
+
331
+ <!-- svelte-ignore a11y_click_events_have_key_events -->
332
+ <!-- svelte-ignore a11y_no_static_element_interactions -->
333
+ <!-- svelte-ignore a11y_mouse_events_have_key_events -->
334
+ <div
335
+ bind:this={rootEl}
336
+ class={'markstream-svelte markdown-renderer' + (isDark ? ' dark' : '') + (className ? ' ' + className : '')}
337
+ data-custom-id={customId}
338
+ onclick={onClick}
339
+ onmouseover={handleMouseover}
340
+ onmouseout={handleMouseout}
341
+ >
342
+ {#each renderedNodes as node, index ((indexKey != null ? String(indexKey) : 'markdown-renderer') + '-' + index)}
343
+ <div class="node-slot" data-node-index={index} data-node-type={(node as any)?.type}>
344
+ <div class:typewriter-node={typewriter !== false && String((node as any)?.type || '') !== 'code_block'} class="node-content" data-node-index={index}>
345
+ <NodeOutlet node={node} context={renderContext} indexKey={(indexKey != null ? String(indexKey) : 'markdown-renderer') + '-' + index} />
346
+ </div>
347
+ </div>
348
+ {/each}
349
+ </div>
@@ -0,0 +1,64 @@
1
+ import type { NodeRendererEvents, NodeRendererProps } from './shared/node-helpers';
2
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
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 NodeRenderer: $$__sveltets_2_IsomorphicComponent<{
16
+ content?: NodeRendererProps["content"];
17
+ nodes?: NodeRendererProps["nodes"];
18
+ final?: NodeRendererProps["final"];
19
+ parseOptions?: NodeRendererProps["parseOptions"];
20
+ customMarkdownIt?: NodeRendererProps["customMarkdownIt"];
21
+ debugPerformance?: boolean;
22
+ customHtmlTags?: NodeRendererProps["customHtmlTags"];
23
+ htmlPolicy?: NodeRendererProps["htmlPolicy"];
24
+ viewportPriority?: NodeRendererProps["viewportPriority"];
25
+ codeBlockStream?: boolean;
26
+ codeBlockDarkTheme?: NodeRendererProps["codeBlockDarkTheme"];
27
+ codeBlockLightTheme?: NodeRendererProps["codeBlockLightTheme"];
28
+ codeBlockMonacoOptions?: NodeRendererProps["codeBlockMonacoOptions"];
29
+ renderCodeBlocksAsPre?: boolean;
30
+ codeBlockMinWidth?: NodeRendererProps["codeBlockMinWidth"];
31
+ codeBlockMaxWidth?: NodeRendererProps["codeBlockMaxWidth"];
32
+ codeBlockProps?: NodeRendererProps["codeBlockProps"];
33
+ mermaidProps?: NodeRendererProps["mermaidProps"];
34
+ d2Props?: NodeRendererProps["d2Props"];
35
+ infographicProps?: NodeRendererProps["infographicProps"];
36
+ customComponents?: NodeRendererProps["customComponents"];
37
+ showTooltips?: boolean;
38
+ themes?: NodeRendererProps["themes"];
39
+ isDark?: boolean;
40
+ customId?: NodeRendererProps["customId"];
41
+ indexKey?: NodeRendererProps["indexKey"];
42
+ typewriter?: boolean;
43
+ batchRendering?: boolean;
44
+ initialRenderBatchSize?: number;
45
+ renderBatchSize?: number;
46
+ renderBatchDelay?: number;
47
+ renderBatchBudgetMs?: number;
48
+ renderBatchIdleTimeoutMs?: number;
49
+ deferNodesUntilVisible?: boolean;
50
+ maxLiveNodes?: number;
51
+ liveNodeBuffer?: number;
52
+ allowHtml?: boolean;
53
+ className?: string;
54
+ onCopy?: NodeRendererEvents["onCopy"];
55
+ onHandleArtifactClick?: NodeRendererEvents["onHandleArtifactClick"];
56
+ onClick?: ((event: MouseEvent) => void) | undefined;
57
+ onMouseover?: ((event: MouseEvent) => void) | undefined;
58
+ onMouseout?: ((event: MouseEvent) => void) | undefined;
59
+ }, {
60
+ [evt: string]: CustomEvent<any>;
61
+ }, {}, {}, string>;
62
+ type NodeRenderer = InstanceType<typeof NodeRenderer>;
63
+ export default NodeRenderer;
64
+ //# sourceMappingURL=NodeRenderer.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeRenderer.svelte.d.ts","sourceRoot":"","sources":["../../src/components/NodeRenderer.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACR,kBAAkB,EAClB,iBAAiB,EAGlB,MAAM,uBAAuB,CAAA;AA2VhC,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IAC9G,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAKD,QAAA,MAAM,YAAY;cAVm2C,iBAAiB,CAAC,SAAS,CAAC;YAAU,iBAAiB,CAAC,OAAO,CAAC;YAAU,iBAAiB,CAAC,OAAO,CAAC;mBAAiB,iBAAiB,CAAC,cAAc,CAAC;uBAAqB,iBAAiB,CAAC,kBAAkB,CAAC;;qBAA+D,iBAAiB,CAAC,gBAAgB,CAAC;iBAAe,iBAAiB,CAAC,YAAY,CAAC;uBAAqB,iBAAiB,CAAC,kBAAkB,CAAC;;yBAAiE,iBAAiB,CAAC,oBAAoB,CAAC;0BAAwB,iBAAiB,CAAC,qBAAqB,CAAC;6BAA2B,iBAAiB,CAAC,wBAAwB,CAAC;;wBAA4E,iBAAiB,CAAC,mBAAmB,CAAC;wBAAsB,iBAAiB,CAAC,mBAAmB,CAAC;qBAAmB,iBAAiB,CAAC,gBAAgB,CAAC;mBAAiB,iBAAiB,CAAC,cAAc,CAAC;cAAY,iBAAiB,CAAC,SAAS,CAAC;uBAAqB,iBAAiB,CAAC,kBAAkB,CAAC;uBAAqB,iBAAiB,CAAC,kBAAkB,CAAC;;aAA+C,iBAAiB,CAAC,QAAQ,CAAC;;eAAqC,iBAAiB,CAAC,UAAU,CAAC;eAAa,iBAAiB,CAAC,UAAU,CAAC;;;;;;;;;;;;;aAA+gB,kBAAkB,CAAC,QAAQ,CAAC;4BAA0B,kBAAkB,CAAC,uBAAuB,CAAC;cAAY,CAAC,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC,GAAG,SAAS;kBAAgB,CAAC,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC,GAAG,SAAS;iBAAe,CAAC,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC,GAAG,SAAS;;;kBAU1xG,CAAC;AAChF,KAAK,YAAY,GAAG,YAAY,CAAC,OAAO,YAAY,CAAC,CAAC;AACxD,eAAe,YAAY,CAAC"}
@@ -0,0 +1,21 @@
1
+ <script lang="ts">
2
+ import type { SvelteRenderableNode, SvelteRenderContext } from './shared/node-helpers'
3
+ import RenderChildren from './RenderChildren.svelte'
4
+ import NodeOutlet from './NodeOutlet.svelte'
5
+ import { getNodeList, splitParagraphChildren } from './shared/node-helpers'
6
+
7
+ export let node: SvelteRenderableNode
8
+ export let context: SvelteRenderContext | undefined = undefined
9
+ export let indexKey: string | number | undefined = undefined
10
+
11
+ $: prefix = String(indexKey ?? 'p')
12
+ $: parts = splitParagraphChildren(getNodeList((node as any)?.children))
13
+ </script>
14
+
15
+ {#each parts as part, index (prefix + '-' + index)}
16
+ {#if part.kind === 'inline'}
17
+ <p class="paragraph-node"><RenderChildren nodes={part.nodes} context={context} prefix={prefix + '-' + index} /></p>
18
+ {:else}
19
+ <NodeOutlet node={part.node} context={context} indexKey={prefix + '-' + index} />
20
+ {/if}
21
+ {/each}