@loopstack/loopstack-studio 0.21.0 → 0.21.2

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 (668) hide show
  1. package/dist/components/LoadingCentered.js +2 -2
  2. package/dist/components/ai-elements/code-block.js +96 -0
  3. package/dist/components/ai-elements/message.js +87 -0
  4. package/dist/components/ai-elements/prompt-input.js +321 -0
  5. package/dist/components/ai-elements/reasoning.js +124 -0
  6. package/dist/components/ai-elements/shimmer.js +37 -0
  7. package/dist/components/ai-elements/sources.js +65 -0
  8. package/dist/components/ai-elements/tool.js +158 -0
  9. package/dist/components/content/ErrorAlert.js +17 -0
  10. package/dist/components/data-table/DataTable.js +99 -96
  11. package/dist/components/dynamic-form/CodeContent.js +2 -2
  12. package/dist/components/dynamic-form/FormElement.js +3 -3
  13. package/dist/components/dynamic-form/FormElementHeader.js +2 -2
  14. package/dist/components/dynamic-form/ObjectController.js +2 -2
  15. package/dist/components/layout/MainLayout.js +0 -1
  16. package/dist/components/lists/ListView.js +62 -59
  17. package/dist/components/loopstack-elements/link.js +115 -0
  18. package/dist/components/ui/button-group.js +13 -0
  19. package/dist/components/ui/command.js +7 -0
  20. package/dist/components/ui/context-menu.js +63 -0
  21. package/dist/components/ui/hover-card.js +6 -0
  22. package/dist/components/ui/input-group.js +85 -0
  23. package/dist/components/ui/select.js +2 -2
  24. package/dist/components/ui/table.js +2 -2
  25. package/dist/components/ui/tabs.js +54 -0
  26. package/dist/components/ui-widgets/UiActions.js +24 -0
  27. package/dist/components/ui-widgets/UiWidget.js +43 -0
  28. package/dist/components/ui-widgets/widgets/AiPromptInput.js +43 -0
  29. package/dist/components/ui-widgets/widgets/ButtonFullWidth.js +23 -0
  30. package/dist/components/ui-widgets/widgets/SubmitButton.js +23 -0
  31. package/dist/events/sse-client-events.js +7 -0
  32. package/dist/features/code-explorer/CodeExplorer.js +69 -0
  33. package/dist/features/code-explorer/components/CodeExplorerTree.js +43 -0
  34. package/dist/features/code-explorer/components/CodeExplorerTreeNode.js +82 -0
  35. package/dist/features/code-explorer/components/FileContentViewer.js +237 -0
  36. package/dist/features/code-explorer/components/FileTabsBar.js +191 -0
  37. package/dist/features/code-explorer/providers/CodeExplorerProvider.js +165 -0
  38. package/dist/features/code-explorer/utils/fileIcons.js +42 -0
  39. package/dist/features/dashboard/Dashboard.js +125 -0
  40. package/dist/features/dashboard/RunItem.js +76 -0
  41. package/dist/features/dashboard/RunList.js +32 -0
  42. package/dist/features/debug/components/ConfigFlowViewer.js +79 -0
  43. package/dist/features/debug/components/PipelineDebugHeader.js +48 -0
  44. package/dist/features/debug/components/PipelineDebugLegend.js +68 -0
  45. package/dist/features/debug/components/PipelineFlowViewer.js +109 -0
  46. package/dist/features/debug/components/pipeline-flow/StateNode.js +111 -0
  47. package/dist/features/debug/components/pipeline-flow/WorkflowGraph.js +41 -0
  48. package/dist/features/debug/components/pipeline-flow/WorkflowTransitionEdge.js +97 -0
  49. package/dist/features/debug/lib/edge-paths.js +47 -0
  50. package/dist/features/debug/lib/flow-utils.js +247 -0
  51. package/dist/features/health/LocalHealthCheck.js +80 -67
  52. package/dist/features/oauth/OAuthCallbackPage.js +2 -0
  53. package/dist/features/oauth/OAuthPromptRenderer.js +223 -0
  54. package/dist/features/oauth/index.js +3 -0
  55. package/dist/features/oauth/useOAuthPopup.js +83 -0
  56. package/dist/features/workbench/NavigationItems.js +52 -0
  57. package/dist/features/workbench/Workbench.js +101 -0
  58. package/dist/features/workbench/WorkbenchNavigation.js +38 -0
  59. package/dist/features/workbench/WorkflowItem.js +67 -0
  60. package/dist/features/workbench/WorkflowList.js +110 -0
  61. package/dist/features/workbench/components/DocumentItem.js +27 -0
  62. package/dist/features/workbench/components/DocumentList.js +40 -0
  63. package/dist/features/workbench/components/DocumentMetadataPills.js +63 -0
  64. package/dist/features/workbench/components/DocumentRenderer.js +54 -0
  65. package/dist/features/workbench/components/NavigationItem.js +68 -0
  66. package/dist/features/workbench/components/PipelineHistoryList.js +56 -0
  67. package/dist/features/workbench/components/WorkbenchSettingsModal.js +89 -0
  68. package/dist/features/workbench/components/WorkbenchSidebar.js +109 -0
  69. package/dist/features/workbench/components/WorkflowForms.js +22 -0
  70. package/dist/features/workbench/components/WorkflowHistoryItem.js +144 -0
  71. package/dist/features/workbench/components/buttons/WorkflowButtons.js +85 -0
  72. package/dist/features/workbench/components/document-details/DocumentDetails.js +425 -0
  73. package/dist/features/workbench/components/document-details/PromptDetails.js +146 -0
  74. package/dist/features/workbench/components/document-renderer/AiMessage.js +56 -0
  75. package/dist/features/workbench/components/document-renderer/AiMessageContent.js +174 -0
  76. package/dist/features/workbench/components/document-renderer/DocumentDebugRenderer.js +30 -0
  77. package/dist/features/workbench/components/document-renderer/DocumentFormRenderer.js +79 -0
  78. package/dist/features/workbench/components/document-renderer/DocumentMessageRenderer.js +10 -0
  79. package/dist/features/workbench/components/document-renderer/ErrorMessageRenderer.js +13 -0
  80. package/dist/features/workbench/components/document-renderer/LinkMessageRenderer.js +17 -0
  81. package/dist/features/workbench/components/document-renderer/MarkdownMessageRenderer.js +10 -0
  82. package/dist/features/workbench/components/document-renderer/PlainMessageRenderer.js +9 -0
  83. package/dist/features/workbench/hooks/useAutoScrollBottom.js +29 -0
  84. package/dist/features/workbench/hooks/useIntersectionObserver.js +44 -0
  85. package/dist/features/workbench/hooks/useScrollToListItem.js +23 -0
  86. package/dist/features/workbench/providers/ScrollProvider.js +22 -0
  87. package/dist/features/workbench/providers/WorkbenchContextProvider.js +3 -0
  88. package/dist/features/workspaces/Workspaces.js +166 -99
  89. package/dist/features/workspaces/components/CreateWorkspace.js +101 -78
  90. package/dist/features/workspaces/components/ExecutionTimeline.js +1 -1
  91. package/dist/hooks/index.js +1 -0
  92. package/dist/hooks/useAuth.js +25 -4
  93. package/dist/hooks/useDashboard.js +23 -0
  94. package/dist/hooks/useDocuments.js +45 -0
  95. package/dist/hooks/useFiles.js +63 -0
  96. package/dist/hooks/useNamespaceTree.js +27 -0
  97. package/dist/hooks/useNamespaces.js +34 -0
  98. package/dist/hooks/usePipelines.js +83 -6
  99. package/dist/hooks/useWorkflows.js +122 -0
  100. package/dist/hooks/useWorkspaces.js +49 -29
  101. package/dist/index.d.ts +88 -10
  102. package/dist/index.js +11 -1
  103. package/dist/lib/requireParam.js +6 -0
  104. package/dist/loopstack-studio.css +1 -1
  105. package/dist/node_modules/@ai-sdk/provider/dist/index.js +65 -0
  106. package/dist/node_modules/@ai-sdk/provider-utils/dist/index.js +1008 -0
  107. package/dist/node_modules/@dagrejs/dagre/dist/dagre.esm.js +1968 -0
  108. package/dist/node_modules/@shikijs/core/dist/index.js +1420 -0
  109. package/dist/node_modules/@shikijs/engine-oniguruma/dist/index.js +236 -0
  110. package/dist/node_modules/@shikijs/engine-oniguruma/dist/wasm-inlined.js +2 -0
  111. package/dist/node_modules/@shikijs/langs/dist/abap.js +2 -0
  112. package/dist/node_modules/@shikijs/langs/dist/actionscript-3.js +2 -0
  113. package/dist/node_modules/@shikijs/langs/dist/ada.js +2 -0
  114. package/dist/node_modules/@shikijs/langs/dist/angular-expression.js +2 -0
  115. package/dist/node_modules/@shikijs/langs/dist/angular-html.js +14 -0
  116. package/dist/node_modules/@shikijs/langs/dist/angular-inline-style.js +3 -0
  117. package/dist/node_modules/@shikijs/langs/dist/angular-inline-template.js +8 -0
  118. package/dist/node_modules/@shikijs/langs/dist/angular-let-declaration.js +3 -0
  119. package/dist/node_modules/@shikijs/langs/dist/angular-template-blocks.js +8 -0
  120. package/dist/node_modules/@shikijs/langs/dist/angular-template.js +3 -0
  121. package/dist/node_modules/@shikijs/langs/dist/angular-ts.js +16 -0
  122. package/dist/node_modules/@shikijs/langs/dist/apache.js +2 -0
  123. package/dist/node_modules/@shikijs/langs/dist/apex.js +2 -0
  124. package/dist/node_modules/@shikijs/langs/dist/apl.js +14 -0
  125. package/dist/node_modules/@shikijs/langs/dist/applescript.js +2 -0
  126. package/dist/node_modules/@shikijs/langs/dist/ara.js +2 -0
  127. package/dist/node_modules/@shikijs/langs/dist/asciidoc.js +2 -0
  128. package/dist/node_modules/@shikijs/langs/dist/asm.js +2 -0
  129. package/dist/node_modules/@shikijs/langs/dist/astro.js +16 -0
  130. package/dist/node_modules/@shikijs/langs/dist/awk.js +2 -0
  131. package/dist/node_modules/@shikijs/langs/dist/ballerina.js +2 -0
  132. package/dist/node_modules/@shikijs/langs/dist/bat.js +2 -0
  133. package/dist/node_modules/@shikijs/langs/dist/beancount.js +2 -0
  134. package/dist/node_modules/@shikijs/langs/dist/berry.js +2 -0
  135. package/dist/node_modules/@shikijs/langs/dist/bibtex.js +2 -0
  136. package/dist/node_modules/@shikijs/langs/dist/bicep.js +2 -0
  137. package/dist/node_modules/@shikijs/langs/dist/bird2.js +2 -0
  138. package/dist/node_modules/@shikijs/langs/dist/blade.js +18 -0
  139. package/dist/node_modules/@shikijs/langs/dist/bsl.js +3 -0
  140. package/dist/node_modules/@shikijs/langs/dist/c.js +2 -0
  141. package/dist/node_modules/@shikijs/langs/dist/c3.js +2 -0
  142. package/dist/node_modules/@shikijs/langs/dist/cadence.js +2 -0
  143. package/dist/node_modules/@shikijs/langs/dist/cairo.js +3 -0
  144. package/dist/node_modules/@shikijs/langs/dist/clarity.js +2 -0
  145. package/dist/node_modules/@shikijs/langs/dist/clojure.js +2 -0
  146. package/dist/node_modules/@shikijs/langs/dist/cmake.js +2 -0
  147. package/dist/node_modules/@shikijs/langs/dist/cobol.js +8 -0
  148. package/dist/node_modules/@shikijs/langs/dist/codeowners.js +2 -0
  149. package/dist/node_modules/@shikijs/langs/dist/codeql.js +2 -0
  150. package/dist/node_modules/@shikijs/langs/dist/coffee.js +3 -0
  151. package/dist/node_modules/@shikijs/langs/dist/common-lisp.js +2 -0
  152. package/dist/node_modules/@shikijs/langs/dist/coq.js +2 -0
  153. package/dist/node_modules/@shikijs/langs/dist/cpp-macro.js +10 -0
  154. package/dist/node_modules/@shikijs/langs/dist/cpp.js +12 -0
  155. package/dist/node_modules/@shikijs/langs/dist/crystal.js +16 -0
  156. package/dist/node_modules/@shikijs/langs/dist/csharp.js +2 -0
  157. package/dist/node_modules/@shikijs/langs/dist/css.js +2 -0
  158. package/dist/node_modules/@shikijs/langs/dist/csv.js +2 -0
  159. package/dist/node_modules/@shikijs/langs/dist/cue.js +2 -0
  160. package/dist/node_modules/@shikijs/langs/dist/cypher.js +2 -0
  161. package/dist/node_modules/@shikijs/langs/dist/d.js +2 -0
  162. package/dist/node_modules/@shikijs/langs/dist/dart.js +2 -0
  163. package/dist/node_modules/@shikijs/langs/dist/dax.js +2 -0
  164. package/dist/node_modules/@shikijs/langs/dist/desktop.js +2 -0
  165. package/dist/node_modules/@shikijs/langs/dist/diff.js +2 -0
  166. package/dist/node_modules/@shikijs/langs/dist/docker.js +2 -0
  167. package/dist/node_modules/@shikijs/langs/dist/dotenv.js +2 -0
  168. package/dist/node_modules/@shikijs/langs/dist/dream-maker.js +2 -0
  169. package/dist/node_modules/@shikijs/langs/dist/edge.js +10 -0
  170. package/dist/node_modules/@shikijs/langs/dist/elixir.js +3 -0
  171. package/dist/node_modules/@shikijs/langs/dist/elm.js +3 -0
  172. package/dist/node_modules/@shikijs/langs/dist/emacs-lisp.js +2 -0
  173. package/dist/node_modules/@shikijs/langs/dist/erb.js +8 -0
  174. package/dist/node_modules/@shikijs/langs/dist/erlang.js +3 -0
  175. package/dist/node_modules/@shikijs/langs/dist/es-tag-css.js +10 -0
  176. package/dist/node_modules/@shikijs/langs/dist/es-tag-glsl.js +10 -0
  177. package/dist/node_modules/@shikijs/langs/dist/es-tag-html.js +10 -0
  178. package/dist/node_modules/@shikijs/langs/dist/es-tag-sql.js +8 -0
  179. package/dist/node_modules/@shikijs/langs/dist/es-tag-xml.js +3 -0
  180. package/dist/node_modules/@shikijs/langs/dist/fennel.js +2 -0
  181. package/dist/node_modules/@shikijs/langs/dist/fish.js +2 -0
  182. package/dist/node_modules/@shikijs/langs/dist/fluent.js +2 -0
  183. package/dist/node_modules/@shikijs/langs/dist/fortran-fixed-form.js +3 -0
  184. package/dist/node_modules/@shikijs/langs/dist/fortran-free-form.js +2 -0
  185. package/dist/node_modules/@shikijs/langs/dist/fsharp.js +3 -0
  186. package/dist/node_modules/@shikijs/langs/dist/gdresource.js +8 -0
  187. package/dist/node_modules/@shikijs/langs/dist/gdscript.js +2 -0
  188. package/dist/node_modules/@shikijs/langs/dist/gdshader.js +2 -0
  189. package/dist/node_modules/@shikijs/langs/dist/genie.js +2 -0
  190. package/dist/node_modules/@shikijs/langs/dist/gherkin.js +2 -0
  191. package/dist/node_modules/@shikijs/langs/dist/git-commit.js +3 -0
  192. package/dist/node_modules/@shikijs/langs/dist/git-rebase.js +3 -0
  193. package/dist/node_modules/@shikijs/langs/dist/gleam.js +2 -0
  194. package/dist/node_modules/@shikijs/langs/dist/glimmer-js.js +12 -0
  195. package/dist/node_modules/@shikijs/langs/dist/glimmer-ts.js +12 -0
  196. package/dist/node_modules/@shikijs/langs/dist/glsl.js +3 -0
  197. package/dist/node_modules/@shikijs/langs/dist/gn.js +2 -0
  198. package/dist/node_modules/@shikijs/langs/dist/gnuplot.js +2 -0
  199. package/dist/node_modules/@shikijs/langs/dist/go.js +2 -0
  200. package/dist/node_modules/@shikijs/langs/dist/graphql.js +12 -0
  201. package/dist/node_modules/@shikijs/langs/dist/groovy.js +2 -0
  202. package/dist/node_modules/@shikijs/langs/dist/hack.js +8 -0
  203. package/dist/node_modules/@shikijs/langs/dist/haml.js +8 -0
  204. package/dist/node_modules/@shikijs/langs/dist/handlebars.js +12 -0
  205. package/dist/node_modules/@shikijs/langs/dist/haskell.js +2 -0
  206. package/dist/node_modules/@shikijs/langs/dist/haxe.js +2 -0
  207. package/dist/node_modules/@shikijs/langs/dist/hcl.js +2 -0
  208. package/dist/node_modules/@shikijs/langs/dist/hjson.js +2 -0
  209. package/dist/node_modules/@shikijs/langs/dist/hlsl.js +2 -0
  210. package/dist/node_modules/@shikijs/langs/dist/html-derivative.js +3 -0
  211. package/dist/node_modules/@shikijs/langs/dist/html.js +8 -0
  212. package/dist/node_modules/@shikijs/langs/dist/http.js +12 -0
  213. package/dist/node_modules/@shikijs/langs/dist/hurl.js +10 -0
  214. package/dist/node_modules/@shikijs/langs/dist/hxml.js +3 -0
  215. package/dist/node_modules/@shikijs/langs/dist/hy.js +2 -0
  216. package/dist/node_modules/@shikijs/langs/dist/imba.js +2 -0
  217. package/dist/node_modules/@shikijs/langs/dist/ini.js +2 -0
  218. package/dist/node_modules/@shikijs/langs/dist/java.js +2 -0
  219. package/dist/node_modules/@shikijs/langs/dist/javascript.js +2 -0
  220. package/dist/node_modules/@shikijs/langs/dist/jinja-html.js +3 -0
  221. package/dist/node_modules/@shikijs/langs/dist/jinja.js +3 -0
  222. package/dist/node_modules/@shikijs/langs/dist/jison.js +3 -0
  223. package/dist/node_modules/@shikijs/langs/dist/json.js +2 -0
  224. package/dist/node_modules/@shikijs/langs/dist/json5.js +2 -0
  225. package/dist/node_modules/@shikijs/langs/dist/jsonc.js +2 -0
  226. package/dist/node_modules/@shikijs/langs/dist/jsonl.js +2 -0
  227. package/dist/node_modules/@shikijs/langs/dist/jsonnet.js +2 -0
  228. package/dist/node_modules/@shikijs/langs/dist/jssm.js +2 -0
  229. package/dist/node_modules/@shikijs/langs/dist/jsx.js +2 -0
  230. package/dist/node_modules/@shikijs/langs/dist/julia.js +14 -0
  231. package/dist/node_modules/@shikijs/langs/dist/just.js +16 -0
  232. package/dist/node_modules/@shikijs/langs/dist/kdl.js +2 -0
  233. package/dist/node_modules/@shikijs/langs/dist/kotlin.js +2 -0
  234. package/dist/node_modules/@shikijs/langs/dist/kusto.js +2 -0
  235. package/dist/node_modules/@shikijs/langs/dist/latex.js +3 -0
  236. package/dist/node_modules/@shikijs/langs/dist/lean.js +2 -0
  237. package/dist/node_modules/@shikijs/langs/dist/less.js +2 -0
  238. package/dist/node_modules/@shikijs/langs/dist/liquid.js +12 -0
  239. package/dist/node_modules/@shikijs/langs/dist/llvm.js +2 -0
  240. package/dist/node_modules/@shikijs/langs/dist/log.js +2 -0
  241. package/dist/node_modules/@shikijs/langs/dist/logo.js +2 -0
  242. package/dist/node_modules/@shikijs/langs/dist/lua.js +3 -0
  243. package/dist/node_modules/@shikijs/langs/dist/luau.js +2 -0
  244. package/dist/node_modules/@shikijs/langs/dist/make.js +2 -0
  245. package/dist/node_modules/@shikijs/langs/dist/markdown-nix.js +2 -0
  246. package/dist/node_modules/@shikijs/langs/dist/markdown-vue.js +2 -0
  247. package/dist/node_modules/@shikijs/langs/dist/markdown.js +2 -0
  248. package/dist/node_modules/@shikijs/langs/dist/marko.js +12 -0
  249. package/dist/node_modules/@shikijs/langs/dist/matlab.js +2 -0
  250. package/dist/node_modules/@shikijs/langs/dist/mdc.js +10 -0
  251. package/dist/node_modules/@shikijs/langs/dist/mdx.js +2 -0
  252. package/dist/node_modules/@shikijs/langs/dist/mermaid.js +2 -0
  253. package/dist/node_modules/@shikijs/langs/dist/mipsasm.js +2 -0
  254. package/dist/node_modules/@shikijs/langs/dist/mojo.js +2 -0
  255. package/dist/node_modules/@shikijs/langs/dist/moonbit.js +2 -0
  256. package/dist/node_modules/@shikijs/langs/dist/move.js +2 -0
  257. package/dist/node_modules/@shikijs/langs/dist/narrat.js +2 -0
  258. package/dist/node_modules/@shikijs/langs/dist/nextflow-groovy.js +2 -0
  259. package/dist/node_modules/@shikijs/langs/dist/nextflow.js +3 -0
  260. package/dist/node_modules/@shikijs/langs/dist/nginx.js +3 -0
  261. package/dist/node_modules/@shikijs/langs/dist/nim.js +18 -0
  262. package/dist/node_modules/@shikijs/langs/dist/nix.js +3 -0
  263. package/dist/node_modules/@shikijs/langs/dist/nushell.js +2 -0
  264. package/dist/node_modules/@shikijs/langs/dist/objective-c.js +2 -0
  265. package/dist/node_modules/@shikijs/langs/dist/objective-cpp.js +2 -0
  266. package/dist/node_modules/@shikijs/langs/dist/ocaml.js +2 -0
  267. package/dist/node_modules/@shikijs/langs/dist/odin.js +2 -0
  268. package/dist/node_modules/@shikijs/langs/dist/openscad.js +2 -0
  269. package/dist/node_modules/@shikijs/langs/dist/pascal.js +2 -0
  270. package/dist/node_modules/@shikijs/langs/dist/perl.js +14 -0
  271. package/dist/node_modules/@shikijs/langs/dist/php.js +16 -0
  272. package/dist/node_modules/@shikijs/langs/dist/pkl.js +2 -0
  273. package/dist/node_modules/@shikijs/langs/dist/plsql.js +2 -0
  274. package/dist/node_modules/@shikijs/langs/dist/po.js +2 -0
  275. package/dist/node_modules/@shikijs/langs/dist/polar.js +2 -0
  276. package/dist/node_modules/@shikijs/langs/dist/postcss.js +2 -0
  277. package/dist/node_modules/@shikijs/langs/dist/powerquery.js +2 -0
  278. package/dist/node_modules/@shikijs/langs/dist/powershell.js +2 -0
  279. package/dist/node_modules/@shikijs/langs/dist/prisma.js +2 -0
  280. package/dist/node_modules/@shikijs/langs/dist/prolog.js +2 -0
  281. package/dist/node_modules/@shikijs/langs/dist/proto.js +2 -0
  282. package/dist/node_modules/@shikijs/langs/dist/pug.js +10 -0
  283. package/dist/node_modules/@shikijs/langs/dist/puppet.js +2 -0
  284. package/dist/node_modules/@shikijs/langs/dist/purescript.js +2 -0
  285. package/dist/node_modules/@shikijs/langs/dist/python.js +2 -0
  286. package/dist/node_modules/@shikijs/langs/dist/qml.js +3 -0
  287. package/dist/node_modules/@shikijs/langs/dist/qmldir.js +2 -0
  288. package/dist/node_modules/@shikijs/langs/dist/qss.js +2 -0
  289. package/dist/node_modules/@shikijs/langs/dist/r.js +2 -0
  290. package/dist/node_modules/@shikijs/langs/dist/racket.js +2 -0
  291. package/dist/node_modules/@shikijs/langs/dist/raku.js +2 -0
  292. package/dist/node_modules/@shikijs/langs/dist/razor.js +8 -0
  293. package/dist/node_modules/@shikijs/langs/dist/reg.js +2 -0
  294. package/dist/node_modules/@shikijs/langs/dist/regexp.js +2 -0
  295. package/dist/node_modules/@shikijs/langs/dist/rel.js +2 -0
  296. package/dist/node_modules/@shikijs/langs/dist/riscv.js +2 -0
  297. package/dist/node_modules/@shikijs/langs/dist/ron.js +2 -0
  298. package/dist/node_modules/@shikijs/langs/dist/rosmsg.js +2 -0
  299. package/dist/node_modules/@shikijs/langs/dist/rst.js +20 -0
  300. package/dist/node_modules/@shikijs/langs/dist/ruby.js +28 -0
  301. package/dist/node_modules/@shikijs/langs/dist/rust.js +2 -0
  302. package/dist/node_modules/@shikijs/langs/dist/sas.js +3 -0
  303. package/dist/node_modules/@shikijs/langs/dist/sass.js +2 -0
  304. package/dist/node_modules/@shikijs/langs/dist/scala.js +2 -0
  305. package/dist/node_modules/@shikijs/langs/dist/scheme.js +2 -0
  306. package/dist/node_modules/@shikijs/langs/dist/scss.js +3 -0
  307. package/dist/node_modules/@shikijs/langs/dist/sdbl.js +2 -0
  308. package/dist/node_modules/@shikijs/langs/dist/shaderlab.js +3 -0
  309. package/dist/node_modules/@shikijs/langs/dist/shellscript.js +2 -0
  310. package/dist/node_modules/@shikijs/langs/dist/shellsession.js +3 -0
  311. package/dist/node_modules/@shikijs/langs/dist/smalltalk.js +2 -0
  312. package/dist/node_modules/@shikijs/langs/dist/solidity.js +2 -0
  313. package/dist/node_modules/@shikijs/langs/dist/soy.js +3 -0
  314. package/dist/node_modules/@shikijs/langs/dist/sparql.js +3 -0
  315. package/dist/node_modules/@shikijs/langs/dist/splunk.js +2 -0
  316. package/dist/node_modules/@shikijs/langs/dist/sql.js +2 -0
  317. package/dist/node_modules/@shikijs/langs/dist/ssh-config.js +2 -0
  318. package/dist/node_modules/@shikijs/langs/dist/stata.js +3 -0
  319. package/dist/node_modules/@shikijs/langs/dist/stylus.js +2 -0
  320. package/dist/node_modules/@shikijs/langs/dist/surrealql.js +3 -0
  321. package/dist/node_modules/@shikijs/langs/dist/svelte.js +12 -0
  322. package/dist/node_modules/@shikijs/langs/dist/swift.js +2 -0
  323. package/dist/node_modules/@shikijs/langs/dist/system-verilog.js +2 -0
  324. package/dist/node_modules/@shikijs/langs/dist/systemd.js +2 -0
  325. package/dist/node_modules/@shikijs/langs/dist/talonscript.js +2 -0
  326. package/dist/node_modules/@shikijs/langs/dist/tasl.js +2 -0
  327. package/dist/node_modules/@shikijs/langs/dist/tcl.js +2 -0
  328. package/dist/node_modules/@shikijs/langs/dist/templ.js +10 -0
  329. package/dist/node_modules/@shikijs/langs/dist/terraform.js +2 -0
  330. package/dist/node_modules/@shikijs/langs/dist/tex.js +3 -0
  331. package/dist/node_modules/@shikijs/langs/dist/toml.js +2 -0
  332. package/dist/node_modules/@shikijs/langs/dist/ts-tags.js +16 -0
  333. package/dist/node_modules/@shikijs/langs/dist/tsv.js +2 -0
  334. package/dist/node_modules/@shikijs/langs/dist/tsx.js +2 -0
  335. package/dist/node_modules/@shikijs/langs/dist/turtle.js +2 -0
  336. package/dist/node_modules/@shikijs/langs/dist/twig.js +16 -0
  337. package/dist/node_modules/@shikijs/langs/dist/typescript.js +2 -0
  338. package/dist/node_modules/@shikijs/langs/dist/typespec.js +2 -0
  339. package/dist/node_modules/@shikijs/langs/dist/typst.js +2 -0
  340. package/dist/node_modules/@shikijs/langs/dist/v.js +2 -0
  341. package/dist/node_modules/@shikijs/langs/dist/vala.js +2 -0
  342. package/dist/node_modules/@shikijs/langs/dist/vb.js +2 -0
  343. package/dist/node_modules/@shikijs/langs/dist/verilog.js +2 -0
  344. package/dist/node_modules/@shikijs/langs/dist/vhdl.js +2 -0
  345. package/dist/node_modules/@shikijs/langs/dist/viml.js +2 -0
  346. package/dist/node_modules/@shikijs/langs/dist/vue-directives.js +2 -0
  347. package/dist/node_modules/@shikijs/langs/dist/vue-html.js +3 -0
  348. package/dist/node_modules/@shikijs/langs/dist/vue-interpolations.js +2 -0
  349. package/dist/node_modules/@shikijs/langs/dist/vue-sfc-style-variable-injection.js +3 -0
  350. package/dist/node_modules/@shikijs/langs/dist/vue-vine.js +16 -0
  351. package/dist/node_modules/@shikijs/langs/dist/vue.js +24 -0
  352. package/dist/node_modules/@shikijs/langs/dist/vyper.js +2 -0
  353. package/dist/node_modules/@shikijs/langs/dist/wasm.js +2 -0
  354. package/dist/node_modules/@shikijs/langs/dist/wenyan.js +2 -0
  355. package/dist/node_modules/@shikijs/langs/dist/wgsl.js +2 -0
  356. package/dist/node_modules/@shikijs/langs/dist/wikitext.js +2 -0
  357. package/dist/node_modules/@shikijs/langs/dist/wit.js +2 -0
  358. package/dist/node_modules/@shikijs/langs/dist/wolfram.js +2 -0
  359. package/dist/node_modules/@shikijs/langs/dist/xml.js +3 -0
  360. package/dist/node_modules/@shikijs/langs/dist/xsl.js +3 -0
  361. package/dist/node_modules/@shikijs/langs/dist/yaml.js +2 -0
  362. package/dist/node_modules/@shikijs/langs/dist/zenscript.js +2 -0
  363. package/dist/node_modules/@shikijs/langs/dist/zig.js +2 -0
  364. package/dist/node_modules/@shikijs/themes/dist/andromeeda.js +2 -0
  365. package/dist/node_modules/@shikijs/themes/dist/aurora-x.js +2 -0
  366. package/dist/node_modules/@shikijs/themes/dist/ayu-dark.js +2 -0
  367. package/dist/node_modules/@shikijs/themes/dist/ayu-light.js +2 -0
  368. package/dist/node_modules/@shikijs/themes/dist/ayu-mirage.js +2 -0
  369. package/dist/node_modules/@shikijs/themes/dist/catppuccin-frappe.js +2 -0
  370. package/dist/node_modules/@shikijs/themes/dist/catppuccin-latte.js +2 -0
  371. package/dist/node_modules/@shikijs/themes/dist/catppuccin-macchiato.js +2 -0
  372. package/dist/node_modules/@shikijs/themes/dist/catppuccin-mocha.js +2 -0
  373. package/dist/node_modules/@shikijs/themes/dist/dark-plus.js +2 -0
  374. package/dist/node_modules/@shikijs/themes/dist/dracula-soft.js +2 -0
  375. package/dist/node_modules/@shikijs/themes/dist/dracula.js +2 -0
  376. package/dist/node_modules/@shikijs/themes/dist/everforest-dark.js +2 -0
  377. package/dist/node_modules/@shikijs/themes/dist/everforest-light.js +2 -0
  378. package/dist/node_modules/@shikijs/themes/dist/github-dark-default.js +2 -0
  379. package/dist/node_modules/@shikijs/themes/dist/github-dark-dimmed.js +2 -0
  380. package/dist/node_modules/@shikijs/themes/dist/github-dark-high-contrast.js +2 -0
  381. package/dist/node_modules/@shikijs/themes/dist/github-dark.js +2 -0
  382. package/dist/node_modules/@shikijs/themes/dist/github-light-default.js +2 -0
  383. package/dist/node_modules/@shikijs/themes/dist/github-light-high-contrast.js +2 -0
  384. package/dist/node_modules/@shikijs/themes/dist/github-light.js +2 -0
  385. package/dist/node_modules/@shikijs/themes/dist/gruvbox-dark-hard.js +2 -0
  386. package/dist/node_modules/@shikijs/themes/dist/gruvbox-dark-medium.js +2 -0
  387. package/dist/node_modules/@shikijs/themes/dist/gruvbox-dark-soft.js +2 -0
  388. package/dist/node_modules/@shikijs/themes/dist/gruvbox-light-hard.js +2 -0
  389. package/dist/node_modules/@shikijs/themes/dist/gruvbox-light-medium.js +2 -0
  390. package/dist/node_modules/@shikijs/themes/dist/gruvbox-light-soft.js +2 -0
  391. package/dist/node_modules/@shikijs/themes/dist/horizon-bright.js +2 -0
  392. package/dist/node_modules/@shikijs/themes/dist/horizon.js +2 -0
  393. package/dist/node_modules/@shikijs/themes/dist/houston.js +2 -0
  394. package/dist/node_modules/@shikijs/themes/dist/kanagawa-dragon.js +2 -0
  395. package/dist/node_modules/@shikijs/themes/dist/kanagawa-lotus.js +2 -0
  396. package/dist/node_modules/@shikijs/themes/dist/kanagawa-wave.js +2 -0
  397. package/dist/node_modules/@shikijs/themes/dist/laserwave.js +2 -0
  398. package/dist/node_modules/@shikijs/themes/dist/light-plus.js +2 -0
  399. package/dist/node_modules/@shikijs/themes/dist/material-theme-darker.js +2 -0
  400. package/dist/node_modules/@shikijs/themes/dist/material-theme-lighter.js +2 -0
  401. package/dist/node_modules/@shikijs/themes/dist/material-theme-ocean.js +2 -0
  402. package/dist/node_modules/@shikijs/themes/dist/material-theme-palenight.js +2 -0
  403. package/dist/node_modules/@shikijs/themes/dist/material-theme.js +2 -0
  404. package/dist/node_modules/@shikijs/themes/dist/min-dark.js +2 -0
  405. package/dist/node_modules/@shikijs/themes/dist/min-light.js +2 -0
  406. package/dist/node_modules/@shikijs/themes/dist/monokai.js +2 -0
  407. package/dist/node_modules/@shikijs/themes/dist/night-owl-light.js +2 -0
  408. package/dist/node_modules/@shikijs/themes/dist/night-owl.js +2 -0
  409. package/dist/node_modules/@shikijs/themes/dist/nord.js +2 -0
  410. package/dist/node_modules/@shikijs/themes/dist/one-dark-pro.js +2 -0
  411. package/dist/node_modules/@shikijs/themes/dist/one-light.js +2 -0
  412. package/dist/node_modules/@shikijs/themes/dist/plastic.js +2 -0
  413. package/dist/node_modules/@shikijs/themes/dist/poimandres.js +2 -0
  414. package/dist/node_modules/@shikijs/themes/dist/red.js +2 -0
  415. package/dist/node_modules/@shikijs/themes/dist/rose-pine-dawn.js +2 -0
  416. package/dist/node_modules/@shikijs/themes/dist/rose-pine-moon.js +2 -0
  417. package/dist/node_modules/@shikijs/themes/dist/rose-pine.js +2 -0
  418. package/dist/node_modules/@shikijs/themes/dist/slack-dark.js +2 -0
  419. package/dist/node_modules/@shikijs/themes/dist/slack-ochin.js +2 -0
  420. package/dist/node_modules/@shikijs/themes/dist/snazzy-light.js +2 -0
  421. package/dist/node_modules/@shikijs/themes/dist/solarized-dark.js +2 -0
  422. package/dist/node_modules/@shikijs/themes/dist/solarized-light.js +2 -0
  423. package/dist/node_modules/@shikijs/themes/dist/synthwave-84.js +2 -0
  424. package/dist/node_modules/@shikijs/themes/dist/tokyo-night.js +2 -0
  425. package/dist/node_modules/@shikijs/themes/dist/vesper.js +2 -0
  426. package/dist/node_modules/@shikijs/themes/dist/vitesse-black.js +2 -0
  427. package/dist/node_modules/@shikijs/themes/dist/vitesse-dark.js +2 -0
  428. package/dist/node_modules/@shikijs/themes/dist/vitesse-light.js +2 -0
  429. package/dist/node_modules/@shikijs/types/dist/index.js +6 -0
  430. package/dist/node_modules/@shikijs/vscode-textmate/dist/index.js +1580 -0
  431. package/dist/node_modules/@ungap/structured-clone/esm/deserialize.js +51 -0
  432. package/dist/node_modules/@ungap/structured-clone/esm/index.js +4 -0
  433. package/dist/node_modules/@ungap/structured-clone/esm/serialize.js +91 -0
  434. package/dist/node_modules/@ungap/structured-clone/esm/types.js +2 -0
  435. package/dist/node_modules/@xyflow/react/dist/esm/index.js +3280 -0
  436. package/dist/node_modules/@xyflow/system/dist/esm/index.js +1839 -0
  437. package/dist/node_modules/ai/dist/index.js +1083 -0
  438. package/dist/node_modules/bail/index.js +4 -0
  439. package/dist/node_modules/character-entities-html4/index.js +255 -0
  440. package/dist/node_modules/character-entities-legacy/index.js +2 -0
  441. package/dist/node_modules/chevrotain/lib/src/parse/errors_public.js +6 -1
  442. package/dist/node_modules/chevrotain/lib/src/scan/lexer.js +4 -10
  443. package/dist/node_modules/chevrotain/lib/src/scan/lexer_public.js +56 -65
  444. package/dist/node_modules/classcat/index.js +8 -0
  445. package/dist/node_modules/comma-separated-tokens/index.js +5 -1
  446. package/dist/node_modules/d3/src/index.js +5 -0
  447. package/dist/node_modules/d3-drag/src/constant.js +2 -0
  448. package/dist/node_modules/d3-drag/src/drag.js +112 -0
  449. package/dist/node_modules/d3-drag/src/event.js +60 -0
  450. package/dist/node_modules/d3-drag/src/nodrag.js +13 -0
  451. package/dist/node_modules/d3-drag/src/noevent.js +11 -0
  452. package/dist/node_modules/d3-interpolate/src/zoom.js +39 -0
  453. package/dist/node_modules/d3-selection/src/pointer.js +16 -0
  454. package/dist/node_modules/d3-selection/src/sourceEvent.js +6 -0
  455. package/dist/node_modules/d3-zoom/src/constant.js +2 -0
  456. package/dist/node_modules/d3-zoom/src/event.js +26 -0
  457. package/dist/node_modules/d3-zoom/src/index.js +1 -1
  458. package/dist/node_modules/d3-zoom/src/noevent.js +7 -0
  459. package/dist/node_modules/d3-zoom/src/zoom.js +214 -1
  460. package/dist/node_modules/decode-named-character-reference/index.dom.js +8 -0
  461. package/dist/node_modules/entities/dist/esm/decode-codepoint.js +35 -0
  462. package/dist/node_modules/entities/dist/esm/decode.js +129 -0
  463. package/dist/node_modules/entities/dist/esm/generated/decode-data-html.js +2 -0
  464. package/dist/node_modules/estree-util-is-identifier-name/lib/index.js +5 -0
  465. package/dist/node_modules/extend/index.js +37 -0
  466. package/dist/node_modules/hast-util-from-parse5/lib/index.js +121 -0
  467. package/dist/node_modules/hast-util-raw/lib/index.js +204 -0
  468. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/doctype.js +34 -0
  469. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/error-codes.js +5 -0
  470. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/foreign-content.js +150 -0
  471. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/html.js +267 -0
  472. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/token.js +9 -0
  473. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/unicode.js +65 -0
  474. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/index.js +8 -0
  475. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/parser/formatting-element-list.js +69 -0
  476. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/parser/index.js +1936 -0
  477. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/parser/open-element-stack.js +239 -0
  478. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/serializer/index.js +22 -0
  479. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/tokenizer/index.js +1451 -0
  480. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/tokenizer/preprocessor.js +75 -0
  481. package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/tree-adapters/default.js +155 -0
  482. package/dist/node_modules/hast-util-sanitize/lib/index.js +159 -0
  483. package/dist/node_modules/hast-util-sanitize/lib/schema.js +73 -0
  484. package/dist/node_modules/hast-util-to-html/lib/handle/comment.js +9 -0
  485. package/dist/node_modules/hast-util-to-html/lib/handle/doctype.js +4 -0
  486. package/dist/node_modules/hast-util-to-html/lib/handle/element.js +47 -0
  487. package/dist/node_modules/hast-util-to-html/lib/handle/index.js +27 -0
  488. package/dist/node_modules/hast-util-to-html/lib/handle/raw.js +5 -0
  489. package/dist/node_modules/hast-util-to-html/lib/handle/root.js +4 -0
  490. package/dist/node_modules/hast-util-to-html/lib/handle/text.js +6 -0
  491. package/dist/node_modules/hast-util-to-html/lib/index.js +46 -0
  492. package/dist/node_modules/hast-util-to-html/lib/omission/closing.js +84 -0
  493. package/dist/node_modules/hast-util-to-html/lib/omission/omission.js +8 -0
  494. package/dist/node_modules/hast-util-to-html/lib/omission/opening.js +37 -0
  495. package/dist/node_modules/hast-util-to-html/lib/omission/util/siblings.js +12 -0
  496. package/dist/node_modules/hast-util-to-jsx-runtime/lib/index.js +251 -0
  497. package/dist/node_modules/hast-util-to-parse5/lib/index.js +113 -0
  498. package/dist/node_modules/hast-util-whitespace/lib/index.js +8 -0
  499. package/dist/node_modules/html-url-attributes/lib/index.js +34 -0
  500. package/dist/node_modules/html-void-elements/index.js +23 -0
  501. package/dist/node_modules/inline-style-parser/cjs/index.js +88 -0
  502. package/dist/node_modules/lodash/_Symbol.js +7 -0
  503. package/dist/node_modules/lodash/_baseGetTag.js +13 -0
  504. package/dist/node_modules/lodash/_baseTrim.js +11 -0
  505. package/dist/node_modules/lodash/_freeGlobal.js +6 -0
  506. package/dist/node_modules/lodash/_getRawTag.js +17 -0
  507. package/dist/node_modules/lodash/_objectToString.js +10 -0
  508. package/dist/node_modules/lodash/_root.js +8 -0
  509. package/dist/node_modules/lodash/_trimmedEndIndex.js +11 -0
  510. package/dist/node_modules/lodash/debounce.js +53 -0
  511. package/dist/node_modules/lodash/isObject.js +10 -0
  512. package/dist/node_modules/lodash/isObjectLike.js +9 -0
  513. package/dist/node_modules/lodash/isSymbol.js +12 -0
  514. package/dist/node_modules/lodash/now.js +10 -0
  515. package/dist/node_modules/lodash/toNumber.js +22 -0
  516. package/dist/node_modules/mdast-util-from-markdown/lib/index.js +555 -0
  517. package/dist/node_modules/mdast-util-to-hast/lib/footer.js +101 -0
  518. package/dist/node_modules/mdast-util-to-hast/lib/handlers/blockquote.js +10 -0
  519. package/dist/node_modules/mdast-util-to-hast/lib/handlers/break.js +13 -0
  520. package/dist/node_modules/mdast-util-to-hast/lib/handlers/code.js +20 -0
  521. package/dist/node_modules/mdast-util-to-hast/lib/handlers/delete.js +10 -0
  522. package/dist/node_modules/mdast-util-to-hast/lib/handlers/emphasis.js +10 -0
  523. package/dist/node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js +28 -0
  524. package/dist/node_modules/mdast-util-to-hast/lib/handlers/heading.js +10 -0
  525. package/dist/node_modules/mdast-util-to-hast/lib/handlers/html.js +10 -0
  526. package/dist/node_modules/mdast-util-to-hast/lib/handlers/image-reference.js +19 -0
  527. package/dist/node_modules/mdast-util-to-hast/lib/handlers/image.js +13 -0
  528. package/dist/node_modules/mdast-util-to-hast/lib/handlers/index.js +54 -0
  529. package/dist/node_modules/mdast-util-to-hast/lib/handlers/inline-code.js +15 -0
  530. package/dist/node_modules/mdast-util-to-hast/lib/handlers/link-reference.js +16 -0
  531. package/dist/node_modules/mdast-util-to-hast/lib/handlers/link.js +13 -0
  532. package/dist/node_modules/mdast-util-to-hast/lib/handlers/list-item.js +57 -0
  533. package/dist/node_modules/mdast-util-to-hast/lib/handlers/list.js +18 -0
  534. package/dist/node_modules/mdast-util-to-hast/lib/handlers/paragraph.js +10 -0
  535. package/dist/node_modules/mdast-util-to-hast/lib/handlers/root.js +8 -0
  536. package/dist/node_modules/mdast-util-to-hast/lib/handlers/strong.js +10 -0
  537. package/dist/node_modules/mdast-util-to-hast/lib/handlers/table-cell.js +10 -0
  538. package/dist/node_modules/mdast-util-to-hast/lib/handlers/table-row.js +22 -0
  539. package/dist/node_modules/mdast-util-to-hast/lib/handlers/table.js +33 -0
  540. package/dist/node_modules/mdast-util-to-hast/lib/handlers/text.js +9 -0
  541. package/dist/node_modules/mdast-util-to-hast/lib/handlers/thematic-break.js +10 -0
  542. package/dist/node_modules/mdast-util-to-hast/lib/index.js +17 -0
  543. package/dist/node_modules/mdast-util-to-hast/lib/revert.js +18 -0
  544. package/dist/node_modules/mdast-util-to-hast/lib/state.js +106 -0
  545. package/dist/node_modules/micromark/lib/constructs.js +79 -0
  546. package/dist/node_modules/micromark/lib/create-tokenizer.js +175 -0
  547. package/dist/node_modules/micromark/lib/initialize/content.js +32 -0
  548. package/dist/node_modules/micromark/lib/initialize/document.js +101 -0
  549. package/dist/node_modules/micromark/lib/initialize/flow.js +23 -0
  550. package/dist/node_modules/micromark/lib/initialize/text.js +84 -0
  551. package/dist/node_modules/micromark/lib/parse.js +27 -0
  552. package/dist/node_modules/micromark/lib/postprocess.js +6 -0
  553. package/dist/node_modules/micromark/lib/preprocess.js +30 -0
  554. package/dist/node_modules/micromark-core-commonmark/lib/attention.js +112 -0
  555. package/dist/node_modules/micromark-core-commonmark/lib/autolink.js +41 -0
  556. package/dist/node_modules/micromark-core-commonmark/lib/block-quote.js +36 -0
  557. package/dist/node_modules/micromark-core-commonmark/lib/character-escape.js +15 -0
  558. package/dist/node_modules/micromark-core-commonmark/lib/character-reference.js +27 -0
  559. package/dist/node_modules/micromark-core-commonmark/lib/code-fenced.js +88 -0
  560. package/dist/node_modules/micromark-core-commonmark/lib/code-indented.js +42 -0
  561. package/dist/node_modules/micromark-core-commonmark/lib/code-text.js +41 -0
  562. package/dist/node_modules/micromark-core-commonmark/lib/content.js +46 -0
  563. package/dist/node_modules/micromark-core-commonmark/lib/definition.js +59 -0
  564. package/dist/node_modules/micromark-core-commonmark/lib/hard-break-escape.js +15 -0
  565. package/dist/node_modules/micromark-core-commonmark/lib/heading-atx.js +65 -0
  566. package/dist/node_modules/micromark-core-commonmark/lib/html-flow.js +140 -0
  567. package/dist/node_modules/micromark-core-commonmark/lib/html-text.js +98 -0
  568. package/dist/node_modules/micromark-core-commonmark/lib/label-end.js +157 -0
  569. package/dist/node_modules/micromark-core-commonmark/lib/label-start-image.js +21 -0
  570. package/dist/node_modules/micromark-core-commonmark/lib/label-start-link.js +18 -0
  571. package/dist/node_modules/micromark-core-commonmark/lib/line-ending.js +12 -0
  572. package/dist/node_modules/micromark-core-commonmark/lib/list.js +77 -0
  573. package/dist/node_modules/micromark-core-commonmark/lib/setext-underline.js +57 -0
  574. package/dist/node_modules/micromark-core-commonmark/lib/thematic-break.js +23 -0
  575. package/dist/node_modules/micromark-factory-destination/index.js +24 -0
  576. package/dist/node_modules/micromark-factory-label/index.js +18 -0
  577. package/dist/node_modules/micromark-factory-title/index.js +22 -0
  578. package/dist/node_modules/micromark-factory-whitespace/index.js +10 -0
  579. package/dist/node_modules/micromark-util-character/index.js +6 -5
  580. package/dist/node_modules/micromark-util-chunked/index.js +4 -1
  581. package/dist/node_modules/micromark-util-decode-numeric-character-reference/index.js +5 -0
  582. package/dist/node_modules/micromark-util-decode-string/index.js +15 -0
  583. package/dist/node_modules/micromark-util-html-tag-name/index.js +7 -0
  584. package/dist/node_modules/micromark-util-sanitize-uri/index.js +16 -0
  585. package/dist/node_modules/micromark-util-subtokenize/index.js +33 -0
  586. package/dist/node_modules/micromark-util-subtokenize/lib/splice-buffer.js +55 -0
  587. package/dist/node_modules/motion/dist/es/react.js +3 -0
  588. package/dist/node_modules/nanoid/index.browser.js +7 -0
  589. package/dist/node_modules/nanoid/url-alphabet/index.js +2 -0
  590. package/dist/node_modules/property-information/index.js +1 -0
  591. package/dist/node_modules/property-information/lib/hast-to-react.js +20 -0
  592. package/dist/node_modules/rehype-harden/dist/index.js +168 -0
  593. package/dist/node_modules/rehype-raw/lib/index.js +10 -0
  594. package/dist/node_modules/rehype-sanitize/lib/index.js +7 -0
  595. package/dist/node_modules/remark-parse/lib/index.js +14 -0
  596. package/dist/node_modules/remark-rehype/lib/index.js +16 -0
  597. package/dist/node_modules/remend/dist/index.js +459 -0
  598. package/dist/node_modules/shiki/dist/bundle-full.js +11 -0
  599. package/dist/node_modules/shiki/dist/langs.js +1278 -0
  600. package/dist/node_modules/shiki/dist/themes.js +393 -0
  601. package/dist/node_modules/shiki/dist/wasm.js +2 -0
  602. package/dist/node_modules/space-separated-tokens/index.js +4 -1
  603. package/dist/node_modules/streamdown/dist/chunk-RLXIAIE6.js +2189 -0
  604. package/dist/node_modules/streamdown/dist/highlighted-body-B3W2YXNL.js +33 -0
  605. package/dist/node_modules/streamdown/dist/index.js +2 -0
  606. package/dist/node_modules/streamdown/dist/mermaid-3ZIDBTTL.js +3 -0
  607. package/dist/node_modules/streamdown/node_modules/marked/lib/marked.esm.js +1421 -0
  608. package/dist/node_modules/stringify-entities/lib/constant/dangerous.js +11 -0
  609. package/dist/node_modules/stringify-entities/lib/core.js +21 -0
  610. package/dist/node_modules/stringify-entities/lib/index.js +6 -0
  611. package/dist/node_modules/stringify-entities/lib/util/format-smart.js +12 -0
  612. package/dist/node_modules/stringify-entities/lib/util/to-decimal.js +6 -0
  613. package/dist/node_modules/stringify-entities/lib/util/to-hexadecimal.js +6 -0
  614. package/dist/node_modules/stringify-entities/lib/util/to-named.js +15 -0
  615. package/dist/node_modules/style-to-js/cjs/index.js +17 -0
  616. package/dist/node_modules/style-to-js/cjs/utilities.js +16 -0
  617. package/dist/node_modules/style-to-object/cjs/index.js +21 -0
  618. package/dist/node_modules/trim-lines/index.js +19 -0
  619. package/dist/node_modules/trough/lib/index.js +48 -0
  620. package/dist/node_modules/unified/lib/callable-instance.js +7 -0
  621. package/dist/node_modules/unified/lib/index.js +160 -0
  622. package/dist/node_modules/unified/node_modules/is-plain-obj/index.js +6 -0
  623. package/dist/node_modules/unist-util-position/lib/index.js +20 -0
  624. package/dist/node_modules/unist-util-stringify-position/lib/index.js +13 -0
  625. package/dist/node_modules/vfile/lib/index.js +87 -0
  626. package/dist/node_modules/vfile/lib/minpath.browser.js +97 -0
  627. package/dist/node_modules/vfile/lib/minproc.browser.js +5 -0
  628. package/dist/node_modules/vfile/lib/minurl.browser.js +29 -0
  629. package/dist/node_modules/vfile/lib/minurl.shared.js +4 -0
  630. package/dist/node_modules/vfile-location/lib/index.js +41 -0
  631. package/dist/node_modules/vfile-message/lib/index.js +22 -0
  632. package/dist/node_modules/zod/v3/ZodError.js +79 -0
  633. package/dist/node_modules/zod/v3/errors.js +6 -0
  634. package/dist/node_modules/zod/v3/helpers/errorUtil.js +5 -0
  635. package/dist/node_modules/zod/v3/helpers/parseUtil.js +90 -0
  636. package/dist/node_modules/zod/v3/helpers/util.js +72 -0
  637. package/dist/node_modules/zod/v3/locales/en.js +58 -0
  638. package/dist/node_modules/zod/v3/types.js +2425 -0
  639. package/dist/node_modules/zod/v4/classic/errors.js +21 -0
  640. package/dist/node_modules/zod/v4/classic/iso.js +29 -0
  641. package/dist/node_modules/zod/v4/classic/parse.js +4 -0
  642. package/dist/node_modules/zod/v4/classic/schemas.js +392 -0
  643. package/dist/node_modules/zod/v4/core/api.js +532 -0
  644. package/dist/node_modules/zod/v4/core/checks.js +283 -0
  645. package/dist/node_modules/zod/v4/core/core.js +44 -0
  646. package/dist/node_modules/zod/v4/core/doc.js +21 -0
  647. package/dist/node_modules/zod/v4/core/errors.js +40 -0
  648. package/dist/node_modules/zod/v4/core/json-schema-processors.js +305 -0
  649. package/dist/node_modules/zod/v4/core/parse.js +66 -0
  650. package/dist/node_modules/zod/v4/core/regexes.js +28 -0
  651. package/dist/node_modules/zod/v4/core/registries.js +38 -0
  652. package/dist/node_modules/zod/v4/core/schemas.js +863 -0
  653. package/dist/node_modules/zod/v4/core/to-json-schema.js +220 -0
  654. package/dist/node_modules/zod/v4/core/util.js +267 -0
  655. package/dist/node_modules/zod/v4/core/versions.js +6 -0
  656. package/dist/node_modules/zwitch/index.js +14 -0
  657. package/dist/pages/DashboardPage.js +58 -0
  658. package/dist/pages/DebugWorkflowDetailsPage.js +121 -0
  659. package/dist/pages/DebugWorkflowsPage.js +130 -0
  660. package/dist/pages/EmbedWorkbenchPage.js +73 -0
  661. package/dist/pages/PipelineDebugPage.js +114 -0
  662. package/dist/pages/WorkbenchPage.js +67 -0
  663. package/dist/pages/WorkspacePage.js +1 -1
  664. package/dist/providers/ComponentOverridesProvider.js +12 -0
  665. package/dist/providers/InvalidationEventsProvider.js +43 -0
  666. package/dist/providers/SseProvider.js +44 -0
  667. package/dist/routing/LocalRouter.js +3 -0
  668. package/package.json +3 -3
@@ -0,0 +1,2189 @@
1
+ "use client";
2
+ import { SKIP, visitParents } from "../../unist-util-visit-parents/lib/index.js";
3
+ import { visit } from "../../unist-util-visit/lib/index.js";
4
+ import remarkGfm from "../../remark-gfm/lib/index.js";
5
+ import { harden } from "../../rehype-harden/dist/index.js";
6
+ import rehypeRaw from "../../rehype-raw/lib/index.js";
7
+ import { defaultSchema } from "../../hast-util-sanitize/lib/schema.js";
8
+ import rehypeSanitize from "../../rehype-sanitize/lib/index.js";
9
+ import { pr } from "../../remend/dist/index.js";
10
+ import { toJsxRuntime } from "../../hast-util-to-jsx-runtime/lib/index.js";
11
+ import { urlAttributes } from "../../html-url-attributes/lib/index.js";
12
+ import remarkParse from "../../remark-parse/lib/index.js";
13
+ import remarkRehype from "../../remark-rehype/lib/index.js";
14
+ import { unified } from "../../unified/lib/index.js";
15
+ import { x } from "../node_modules/marked/lib/marked.esm.js";
16
+ import { Suspense, cloneElement, createContext, isValidElement, lazy, memo, useCallback, useContext, useEffect, useId, useMemo, useRef, useState, useTransition } from "react";
17
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
18
+ import { clsx } from "clsx";
19
+ import { twMerge } from "tailwind-merge";
20
+ import { createPortal } from "react-dom";
21
+ var Oo = 300, Vo = "300px", Ao = 500;
22
+ function Ge(e = {}) {
23
+ let { immediate: n = !1, debounceDelay: r = Oo, rootMargin: i = Vo, idleTimeout: a = Ao } = e, [o, s] = useState(!1), c = useRef(null), l = useRef(null), u = useRef(null), d = useMemo(() => (e) => {
24
+ let n = Date.now();
25
+ return window.setTimeout(() => {
26
+ e({
27
+ didTimeout: !1,
28
+ timeRemaining: () => Math.max(0, 50 - (Date.now() - n))
29
+ });
30
+ }, 1);
31
+ }, []), p = useMemo(() => typeof window < "u" && window.requestIdleCallback ? (e, n) => window.requestIdleCallback(e, n) : d, [d]), m = useMemo(() => typeof window < "u" && window.cancelIdleCallback ? (e) => window.cancelIdleCallback(e) : (e) => {
32
+ clearTimeout(e);
33
+ }, []);
34
+ return useEffect(() => {
35
+ if (n) {
36
+ s(!0);
37
+ return;
38
+ }
39
+ let e = c.current;
40
+ if (!e) return;
41
+ l.current &&= (clearTimeout(l.current), null), u.current &&= (m(u.current), null);
42
+ let o = () => {
43
+ l.current &&= (clearTimeout(l.current), null), u.current &&= (m(u.current), null);
44
+ }, d = (e) => {
45
+ u.current = p((n) => {
46
+ n.timeRemaining() > 0 || n.didTimeout ? (s(!0), e.disconnect()) : u.current = p(() => {
47
+ s(!0), e.disconnect();
48
+ }, { timeout: a / 2 });
49
+ }, { timeout: a });
50
+ }, h = (e) => {
51
+ o(), l.current = window.setTimeout(() => {
52
+ var n;
53
+ let r = e.takeRecords();
54
+ (r.length === 0 || (n = r.at(-1)?.isIntersecting) != null && n) && d(e);
55
+ }, r);
56
+ }, g = (e, n) => {
57
+ e.isIntersecting ? h(n) : o();
58
+ }, _ = new IntersectionObserver((e) => {
59
+ for (let n of e) g(n, _);
60
+ }, {
61
+ rootMargin: i,
62
+ threshold: 0
63
+ });
64
+ return _.observe(e), () => {
65
+ l.current && clearTimeout(l.current), u.current && m(u.current), _.disconnect();
66
+ };
67
+ }, [
68
+ n,
69
+ r,
70
+ i,
71
+ a,
72
+ m,
73
+ p
74
+ ]), {
75
+ shouldRender: o,
76
+ containerRef: c
77
+ };
78
+ }
79
+ var Ye = /\s/, qo = /^\s+$/, _o = new Set([
80
+ "code",
81
+ "pre",
82
+ "svg",
83
+ "math",
84
+ "annotation"
85
+ ]), Zo = (e) => typeof e == "object" && !!e && "type" in e && e.type === "element", Wo = (e) => e.some((e) => Zo(e) && _o.has(e.tagName)), $o = (e) => {
86
+ let n = [], r = "", i = !1;
87
+ for (let a of e) {
88
+ let e = Ye.test(a);
89
+ e !== i && r && (n.push(r), r = ""), r += a, i = e;
90
+ }
91
+ return r && n.push(r), n;
92
+ }, Fo = (e) => {
93
+ let n = [], r = "";
94
+ for (let i of e) Ye.test(i) ? r += i : (r &&= (n.push(r), ""), n.push(i));
95
+ return r && n.push(r), n;
96
+ }, Uo = (e, n, r, i) => ({
97
+ type: "element",
98
+ tagName: "span",
99
+ properties: {
100
+ "data-sd-animate": !0,
101
+ style: `--sd-animation:sd-${n};--sd-duration:${r}ms;--sd-easing:${i}`
102
+ },
103
+ children: [{
104
+ type: "text",
105
+ value: e
106
+ }]
107
+ }), Xo = (n, r, i) => {
108
+ let a = r.at(-1);
109
+ if (!(a && "children" in a)) return;
110
+ if (Wo(r)) return SKIP;
111
+ let o = a, s = o.children.indexOf(n);
112
+ if (s === -1) return;
113
+ let c = n.value;
114
+ if (!c.trim()) return;
115
+ let l = (i.sep === "char" ? Fo(c) : $o(c)).map((e) => qo.test(e) ? {
116
+ type: "text",
117
+ value: e
118
+ } : Uo(e, i.animation, i.duration, i.easing));
119
+ return o.children.splice(s, 1, ...l), s + l.length;
120
+ };
121
+ function Q(e) {
122
+ let r = {
123
+ animation: e?.animation ?? "fadeIn",
124
+ duration: e?.duration ?? 150,
125
+ easing: e?.easing ?? "ease",
126
+ sep: e?.sep ?? "word"
127
+ };
128
+ return {
129
+ name: "animate",
130
+ type: "animate",
131
+ rehypePlugin: () => (e) => {
132
+ visitParents(e, "text", (e, n) => Xo(e, n, r));
133
+ }
134
+ };
135
+ }
136
+ Q();
137
+ var Re = createContext(!1), Ie = () => useContext(Re), f = (...e) => twMerge(clsx(e)), q = (e, n, r) => {
138
+ let i = typeof n == "string" ? new Blob([n], { type: r }) : n, a = URL.createObjectURL(i), o = document.createElement("a");
139
+ o.href = a, o.download = e, document.body.appendChild(o), o.click(), document.body.removeChild(o), URL.revokeObjectURL(a);
140
+ }, tn = f("block", "before:content-[counter(line)]", "before:inline-block", "before:[counter-increment:line]", "before:w-6", "before:mr-4", "before:text-[13px]", "before:text-right", "before:text-muted-foreground/50", "before:font-mono", "before:select-none"), on = (e) => {
141
+ let n = {};
142
+ for (let r of e.split(";")) {
143
+ let e = r.indexOf(":");
144
+ if (e > 0) {
145
+ let i = r.slice(0, e).trim(), a = r.slice(e + 1).trim();
146
+ i && a && (n[i] = a);
147
+ }
148
+ }
149
+ return n;
150
+ }, Qe = memo(({ children: e, result: n, language: r, className: i, ...a }) => {
151
+ let o = useMemo(() => {
152
+ let e = {};
153
+ return n.bg && (e["--sdm-bg"] = n.bg), n.fg && (e["--sdm-fg"] = n.fg), n.rootStyle && Object.assign(e, on(n.rootStyle)), e;
154
+ }, [
155
+ n.bg,
156
+ n.fg,
157
+ n.rootStyle
158
+ ]);
159
+ return jsx("div", {
160
+ className: f(i, "overflow-hidden rounded-md border border-border bg-background p-4 text-sm"),
161
+ "data-language": r,
162
+ "data-streamdown": "code-block-body",
163
+ ...a,
164
+ children: jsx("pre", {
165
+ className: f(i, "bg-[var(--sdm-bg,inherit]", "dark:bg-[var(--shiki-dark-bg,var(--sdm-bg,inherit)]"),
166
+ style: o,
167
+ children: jsx("code", {
168
+ className: "[counter-increment:line_0] [counter-reset:line]",
169
+ children: n.tokens.map((e, n) => jsx("span", {
170
+ className: tn,
171
+ children: e.map((e, n) => {
172
+ let r = {}, i = !!e.bgColor;
173
+ if (e.color && (r["--sdm-c"] = e.color), e.bgColor && (r["--sdm-tbg"] = e.bgColor), e.htmlStyle) for (let [n, a] of Object.entries(e.htmlStyle)) n === "color" ? r["--sdm-c"] = a : n === "background-color" ? (r["--sdm-tbg"] = a, i = !0) : r[n] = a;
174
+ return jsx("span", {
175
+ className: f("text-[var(--sdm-c,inherit)]", "dark:text-[var(--shiki-dark,var(--sdm-c,inherit))]", i && "bg-[var(--sdm-tbg)]", i && "dark:bg-[var(--shiki-dark-bg,var(--sdm-tbg))]"),
176
+ style: r,
177
+ ...e.htmlAttrs,
178
+ children: e.content
179
+ }, n);
180
+ })
181
+ }, n))
182
+ })
183
+ })
184
+ });
185
+ }, (e, n) => e.result === n.result && e.language === n.language && e.className === n.className), et = ({ className: e, language: n, style: r, isIncomplete: i, ...a }) => jsx("div", {
186
+ className: f("my-4 flex w-full flex-col gap-2 rounded-xl border border-border bg-sidebar p-2", e),
187
+ "data-incomplete": i || void 0,
188
+ "data-language": n,
189
+ "data-streamdown": "code-block",
190
+ style: {
191
+ contentVisibility: "auto",
192
+ containIntrinsicSize: "auto 200px",
193
+ ...r
194
+ },
195
+ ...a
196
+ }), Se = createContext({ code: "" }), de = () => useContext(Se), ot = ({ language: e }) => jsx("div", {
197
+ className: "flex h-8 items-center text-muted-foreground text-xs",
198
+ "data-language": e,
199
+ "data-streamdown": "code-block-header",
200
+ children: jsx("span", {
201
+ className: "ml-1 font-mono lowercase",
202
+ children: e
203
+ })
204
+ }), cn = /\n+$/, dn = lazy(() => import("./highlighted-body-B3W2YXNL.js").then((e) => ({ default: e.HighlightedCodeBlockBody }))), rt = ({ code: e, language: n, className: r, children: i, isIncomplete: a = !1, ...o }) => {
205
+ let s = useMemo(() => e.replace(cn, ""), [e]), c = useMemo(() => ({
206
+ bg: "transparent",
207
+ fg: "inherit",
208
+ tokens: s.split("\n").map((e) => [{
209
+ content: e,
210
+ color: "inherit",
211
+ bgColor: "transparent",
212
+ htmlStyle: {},
213
+ offset: 0
214
+ }])
215
+ }), [s]);
216
+ return jsx(Se.Provider, {
217
+ value: { code: e },
218
+ children: jsxs(et, {
219
+ isIncomplete: a,
220
+ language: n,
221
+ children: [
222
+ jsx(ot, { language: n }),
223
+ i ? jsx("div", {
224
+ className: "pointer-events-none sticky top-2 z-10 -mt-10 flex h-8 items-center justify-end",
225
+ children: jsx("div", {
226
+ className: "pointer-events-auto flex shrink-0 items-center gap-2 rounded-md border border-sidebar bg-sidebar/80 px-1.5 py-1 supports-[backdrop-filter]:bg-sidebar/70 supports-[backdrop-filter]:backdrop-blur",
227
+ "data-streamdown": "code-block-actions",
228
+ children: i
229
+ })
230
+ }) : null,
231
+ jsx(Suspense, {
232
+ fallback: jsx(Qe, {
233
+ className: r,
234
+ language: n,
235
+ result: c,
236
+ ...o
237
+ }),
238
+ children: jsx(dn, {
239
+ className: r,
240
+ code: s,
241
+ language: n,
242
+ raw: c,
243
+ ...o
244
+ })
245
+ })
246
+ ]
247
+ })
248
+ });
249
+ }, J = (e) => jsx("svg", {
250
+ color: "currentColor",
251
+ height: 16,
252
+ strokeLinejoin: "round",
253
+ viewBox: "0 0 16 16",
254
+ width: 16,
255
+ ...e,
256
+ children: jsx("path", {
257
+ clipRule: "evenodd",
258
+ d: "M15.5607 3.99999L15.0303 4.53032L6.23744 13.3232C5.55403 14.0066 4.44599 14.0066 3.76257 13.3232L4.2929 12.7929L3.76257 13.3232L0.969676 10.5303L0.439346 9.99999L1.50001 8.93933L2.03034 9.46966L4.82323 12.2626C4.92086 12.3602 5.07915 12.3602 5.17678 12.2626L13.9697 3.46966L14.5 2.93933L15.5607 3.99999Z",
259
+ fill: "currentColor",
260
+ fillRule: "evenodd"
261
+ })
262
+ }), K = (e) => jsx("svg", {
263
+ color: "currentColor",
264
+ height: 16,
265
+ strokeLinejoin: "round",
266
+ viewBox: "0 0 16 16",
267
+ width: 16,
268
+ ...e,
269
+ children: jsx("path", {
270
+ clipRule: "evenodd",
271
+ d: "M2.75 0.5C1.7835 0.5 1 1.2835 1 2.25V9.75C1 10.7165 1.7835 11.5 2.75 11.5H3.75H4.5V10H3.75H2.75C2.61193 10 2.5 9.88807 2.5 9.75V2.25C2.5 2.11193 2.61193 2 2.75 2H8.25C8.38807 2 8.5 2.11193 8.5 2.25V3H10V2.25C10 1.2835 9.2165 0.5 8.25 0.5H2.75ZM7.75 4.5C6.7835 4.5 6 5.2835 6 6.25V13.75C6 14.7165 6.7835 15.5 7.75 15.5H13.25C14.2165 15.5 15 14.7165 15 13.75V6.25C15 5.2835 14.2165 4.5 13.25 4.5H7.75ZM7.5 6.25C7.5 6.11193 7.61193 6 7.75 6H13.25C13.3881 6 13.5 6.11193 13.5 6.25V13.75C13.5 13.8881 13.3881 14 13.25 14H7.75C7.61193 14 7.5 13.8881 7.5 13.75V6.25Z",
272
+ fill: "currentColor",
273
+ fillRule: "evenodd"
274
+ })
275
+ }), Z = (e) => jsx("svg", {
276
+ color: "currentColor",
277
+ height: 16,
278
+ strokeLinejoin: "round",
279
+ viewBox: "0 0 16 16",
280
+ width: 16,
281
+ ...e,
282
+ children: jsx("path", {
283
+ clipRule: "evenodd",
284
+ d: "M8.75 1V1.75V8.68934L10.7197 6.71967L11.25 6.18934L12.3107 7.25L11.7803 7.78033L8.70711 10.8536C8.31658 11.2441 7.68342 11.2441 7.29289 10.8536L4.21967 7.78033L3.68934 7.25L4.75 6.18934L5.28033 6.71967L7.25 8.68934V1.75V1H8.75ZM13.5 9.25V13.5H2.5V9.25V8.5H1V9.25V14C1 14.5523 1.44771 15 2 15H14C14.5523 15 15 14.5523 15 14V9.25V8.5H13.5V9.25Z",
285
+ fill: "currentColor",
286
+ fillRule: "evenodd"
287
+ })
288
+ }), st = (e) => jsxs("svg", {
289
+ color: "currentColor",
290
+ height: 16,
291
+ strokeLinejoin: "round",
292
+ viewBox: "0 0 16 16",
293
+ width: 16,
294
+ ...e,
295
+ children: [
296
+ jsx("path", {
297
+ d: "M8 0V4",
298
+ stroke: "currentColor",
299
+ strokeWidth: "1.5"
300
+ }),
301
+ jsx("path", {
302
+ d: "M8 16V12",
303
+ opacity: "0.5",
304
+ stroke: "currentColor",
305
+ strokeWidth: "1.5"
306
+ }),
307
+ jsx("path", {
308
+ d: "M3.29773 1.52783L5.64887 4.7639",
309
+ opacity: "0.9",
310
+ stroke: "currentColor",
311
+ strokeWidth: "1.5"
312
+ }),
313
+ jsx("path", {
314
+ d: "M12.7023 1.52783L10.3511 4.7639",
315
+ opacity: "0.1",
316
+ stroke: "currentColor",
317
+ strokeWidth: "1.5"
318
+ }),
319
+ jsx("path", {
320
+ d: "M12.7023 14.472L10.3511 11.236",
321
+ opacity: "0.4",
322
+ stroke: "currentColor",
323
+ strokeWidth: "1.5"
324
+ }),
325
+ jsx("path", {
326
+ d: "M3.29773 14.472L5.64887 11.236",
327
+ opacity: "0.6",
328
+ stroke: "currentColor",
329
+ strokeWidth: "1.5"
330
+ }),
331
+ jsx("path", {
332
+ d: "M15.6085 5.52783L11.8043 6.7639",
333
+ opacity: "0.2",
334
+ stroke: "currentColor",
335
+ strokeWidth: "1.5"
336
+ }),
337
+ jsx("path", {
338
+ d: "M0.391602 10.472L4.19583 9.23598",
339
+ opacity: "0.7",
340
+ stroke: "currentColor",
341
+ strokeWidth: "1.5"
342
+ }),
343
+ jsx("path", {
344
+ d: "M15.6085 10.4722L11.8043 9.2361",
345
+ opacity: "0.3",
346
+ stroke: "currentColor",
347
+ strokeWidth: "1.5"
348
+ }),
349
+ jsx("path", {
350
+ d: "M0.391602 5.52783L4.19583 6.7639",
351
+ opacity: "0.8",
352
+ stroke: "currentColor",
353
+ strokeWidth: "1.5"
354
+ })
355
+ ]
356
+ }), at = (e) => jsx("svg", {
357
+ color: "currentColor",
358
+ height: 16,
359
+ strokeLinejoin: "round",
360
+ viewBox: "0 0 16 16",
361
+ width: 16,
362
+ ...e,
363
+ children: jsx("path", {
364
+ clipRule: "evenodd",
365
+ d: "M1 5.25V6H2.5V5.25V2.5H5.25H6V1H5.25H2C1.44772 1 1 1.44772 1 2V5.25ZM5.25 14.9994H6V13.4994H5.25H2.5V10.7494V9.99939H1V10.7494V13.9994C1 14.5517 1.44772 14.9994 2 14.9994H5.25ZM15 10V10.75V14C15 14.5523 14.5523 15 14 15H10.75H10V13.5H10.75H13.5V10.75V10H15ZM10.75 1H10V2.5H10.75H13.5V5.25V6H15V5.25V2C15 1.44772 14.5523 1 14 1H10.75Z",
366
+ fill: "currentColor",
367
+ fillRule: "evenodd"
368
+ })
369
+ }), it = (e) => jsx("svg", {
370
+ color: "currentColor",
371
+ height: 16,
372
+ strokeLinejoin: "round",
373
+ viewBox: "0 0 16 16",
374
+ width: 16,
375
+ ...e,
376
+ children: jsx("path", {
377
+ clipRule: "evenodd",
378
+ d: "M13.5 8C13.5 4.96643 11.0257 2.5 7.96452 2.5C5.42843 2.5 3.29365 4.19393 2.63724 6.5H5.25H6V8H5.25H0.75C0.335787 8 0 7.66421 0 7.25V2.75V2H1.5V2.75V5.23347C2.57851 2.74164 5.06835 1 7.96452 1C11.8461 1 15 4.13001 15 8C15 11.87 11.8461 15 7.96452 15C5.62368 15 3.54872 13.8617 2.27046 12.1122L1.828 11.5066L3.03915 10.6217L3.48161 11.2273C4.48831 12.6051 6.12055 13.5 7.96452 13.5C11.0257 13.5 13.5 11.0336 13.5 8Z",
379
+ fill: "currentColor",
380
+ fillRule: "evenodd"
381
+ })
382
+ }), me = (e) => jsx("svg", {
383
+ color: "currentColor",
384
+ height: 16,
385
+ strokeLinejoin: "round",
386
+ viewBox: "0 0 16 16",
387
+ width: 16,
388
+ ...e,
389
+ children: jsx("path", {
390
+ clipRule: "evenodd",
391
+ d: "M12.4697 13.5303L13 14.0607L14.0607 13L13.5303 12.4697L9.06065 7.99999L13.5303 3.53032L14.0607 2.99999L13 1.93933L12.4697 2.46966L7.99999 6.93933L3.53032 2.46966L2.99999 1.93933L1.93933 2.99999L2.46966 3.53032L6.93933 7.99999L2.46966 12.4697L1.93933 13L2.99999 14.0607L3.53032 13.5303L7.99999 9.06065L12.4697 13.5303Z",
392
+ fill: "currentColor",
393
+ fillRule: "evenodd"
394
+ })
395
+ }), Ee = (e) => jsx("svg", {
396
+ color: "currentColor",
397
+ height: 16,
398
+ strokeLinejoin: "round",
399
+ viewBox: "0 0 16 16",
400
+ width: 16,
401
+ ...e,
402
+ children: jsx("path", {
403
+ clipRule: "evenodd",
404
+ d: "M13.5 10.25V13.25C13.5 13.3881 13.3881 13.5 13.25 13.5H2.75C2.61193 13.5 2.5 13.3881 2.5 13.25L2.5 2.75C2.5 2.61193 2.61193 2.5 2.75 2.5H5.75H6.5V1H5.75H2.75C1.7835 1 1 1.7835 1 2.75V13.25C1 14.2165 1.7835 15 2.75 15H13.25C14.2165 15 15 14.2165 15 13.25V10.25V9.5H13.5V10.25ZM9 1H9.75H14.2495C14.6637 1 14.9995 1.33579 14.9995 1.75V6.25V7H13.4995V6.25V3.56066L8.53033 8.52978L8 9.06011L6.93934 7.99945L7.46967 7.46912L12.4388 2.5H9.75H9V1Z",
405
+ fill: "currentColor",
406
+ fillRule: "evenodd"
407
+ })
408
+ }), lt = (e) => jsx("svg", {
409
+ color: "currentColor",
410
+ height: 16,
411
+ strokeLinejoin: "round",
412
+ viewBox: "0 0 16 16",
413
+ width: 16,
414
+ ...e,
415
+ children: jsx("path", {
416
+ clipRule: "evenodd",
417
+ d: "M1.5 6.5C1.5 3.73858 3.73858 1.5 6.5 1.5C9.26142 1.5 11.5 3.73858 11.5 6.5C11.5 9.26142 9.26142 11.5 6.5 11.5C3.73858 11.5 1.5 9.26142 1.5 6.5ZM6.5 0C2.91015 0 0 2.91015 0 6.5C0 10.0899 2.91015 13 6.5 13C8.02469 13 9.42677 12.475 10.5353 11.596L13.9697 15.0303L14.5 15.5607L15.5607 14.5L15.0303 13.9697L11.596 10.5353C12.475 9.42677 13 8.02469 13 6.5C13 2.91015 10.0899 0 6.5 0ZM4.125 5.875H4.75H5.875V4.75V4.125H7.125V4.75V5.875H8.25H8.875V7.125H8.25H7.125V8.25V8.875H5.875V8.25V7.125H4.75H4.125V5.875Z",
418
+ fill: "currentColor",
419
+ fillRule: "evenodd"
420
+ })
421
+ }), ct = (e) => jsx("svg", {
422
+ color: "currentColor",
423
+ height: 16,
424
+ strokeLinejoin: "round",
425
+ viewBox: "0 0 16 16",
426
+ width: 16,
427
+ ...e,
428
+ children: jsx("path", {
429
+ clipRule: "evenodd",
430
+ d: "M1.5 6.5C1.5 3.73858 3.73858 1.5 6.5 1.5C9.26142 1.5 11.5 3.73858 11.5 6.5C11.5 9.26142 9.26142 11.5 6.5 11.5C3.73858 11.5 1.5 9.26142 1.5 6.5ZM6.5 0C2.91015 0 0 2.91015 0 6.5C0 10.0899 2.91015 13 6.5 13C8.02469 13 9.42677 12.475 10.5353 11.596L13.9697 15.0303L14.5 15.5607L15.5607 14.5L15.0303 13.9697L11.596 10.5353C12.475 9.42677 13 8.02469 13 6.5C13 2.91015 10.0899 0 6.5 0ZM4.125 5.875H4.75H8.25H8.875V7.125H8.25H4.75H4.125V5.875Z",
431
+ fill: "currentColor",
432
+ fillRule: "evenodd"
433
+ })
434
+ }), He = ({ onCopy: e, onError: n, timeout: r = 2e3, children: i, className: a, code: o, ...s }) => {
435
+ let [c, l] = useState(!1), u = useRef(0), { code: d } = de(), { isAnimating: p } = useContext(R), m = o ?? d, h = async () => {
436
+ var i;
437
+ if (typeof window > "u" || !((i = navigator == null ? void 0 : navigator.clipboard) != null && i.writeText)) {
438
+ n?.(/* @__PURE__ */ Error("Clipboard API not available"));
439
+ return;
440
+ }
441
+ try {
442
+ c || (await navigator.clipboard.writeText(m), l(!0), e?.(), u.current = window.setTimeout(() => l(!1), r));
443
+ } catch (e) {
444
+ n?.(e);
445
+ }
446
+ };
447
+ useEffect(() => () => {
448
+ window.clearTimeout(u.current);
449
+ }, []);
450
+ let g = c ? J : K;
451
+ return jsx("button", {
452
+ className: f("cursor-pointer p-1 text-muted-foreground transition-all hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50", a),
453
+ "data-streamdown": "code-block-copy-button",
454
+ disabled: p,
455
+ onClick: h,
456
+ title: "Copy Code",
457
+ type: "button",
458
+ ...s,
459
+ children: i ?? jsx(g, { size: 14 })
460
+ });
461
+ }, mt = {
462
+ "1c": "1c",
463
+ "1c-query": "1cq",
464
+ abap: "abap",
465
+ "actionscript-3": "as",
466
+ ada: "ada",
467
+ adoc: "adoc",
468
+ "angular-html": "html",
469
+ "angular-ts": "ts",
470
+ apache: "conf",
471
+ apex: "cls",
472
+ apl: "apl",
473
+ applescript: "applescript",
474
+ ara: "ara",
475
+ asciidoc: "adoc",
476
+ asm: "asm",
477
+ astro: "astro",
478
+ awk: "awk",
479
+ ballerina: "bal",
480
+ bash: "sh",
481
+ bat: "bat",
482
+ batch: "bat",
483
+ be: "be",
484
+ beancount: "beancount",
485
+ berry: "berry",
486
+ bibtex: "bib",
487
+ bicep: "bicep",
488
+ blade: "blade.php",
489
+ bsl: "bsl",
490
+ c: "c",
491
+ "c#": "cs",
492
+ "c++": "cpp",
493
+ cadence: "cdc",
494
+ cairo: "cairo",
495
+ cdc: "cdc",
496
+ clarity: "clar",
497
+ clj: "clj",
498
+ clojure: "clj",
499
+ "closure-templates": "soy",
500
+ cmake: "cmake",
501
+ cmd: "cmd",
502
+ cobol: "cob",
503
+ codeowners: "CODEOWNERS",
504
+ codeql: "ql",
505
+ coffee: "coffee",
506
+ coffeescript: "coffee",
507
+ "common-lisp": "lisp",
508
+ console: "sh",
509
+ coq: "v",
510
+ cpp: "cpp",
511
+ cql: "cql",
512
+ crystal: "cr",
513
+ cs: "cs",
514
+ csharp: "cs",
515
+ css: "css",
516
+ csv: "csv",
517
+ cue: "cue",
518
+ cypher: "cql",
519
+ d: "d",
520
+ dart: "dart",
521
+ dax: "dax",
522
+ desktop: "desktop",
523
+ diff: "diff",
524
+ docker: "dockerfile",
525
+ dockerfile: "dockerfile",
526
+ dotenv: "env",
527
+ "dream-maker": "dm",
528
+ edge: "edge",
529
+ elisp: "el",
530
+ elixir: "ex",
531
+ elm: "elm",
532
+ "emacs-lisp": "el",
533
+ erb: "erb",
534
+ erl: "erl",
535
+ erlang: "erl",
536
+ f: "f",
537
+ "f#": "fs",
538
+ f03: "f03",
539
+ f08: "f08",
540
+ f18: "f18",
541
+ f77: "f77",
542
+ f90: "f90",
543
+ f95: "f95",
544
+ fennel: "fnl",
545
+ fish: "fish",
546
+ fluent: "ftl",
547
+ for: "for",
548
+ "fortran-fixed-form": "f",
549
+ "fortran-free-form": "f90",
550
+ fs: "fs",
551
+ fsharp: "fs",
552
+ fsl: "fsl",
553
+ ftl: "ftl",
554
+ gdresource: "tres",
555
+ gdscript: "gd",
556
+ gdshader: "gdshader",
557
+ genie: "gs",
558
+ gherkin: "feature",
559
+ "git-commit": "gitcommit",
560
+ "git-rebase": "gitrebase",
561
+ gjs: "js",
562
+ gleam: "gleam",
563
+ "glimmer-js": "js",
564
+ "glimmer-ts": "ts",
565
+ glsl: "glsl",
566
+ gnuplot: "plt",
567
+ go: "go",
568
+ gql: "gql",
569
+ graphql: "graphql",
570
+ groovy: "groovy",
571
+ gts: "gts",
572
+ hack: "hack",
573
+ haml: "haml",
574
+ handlebars: "hbs",
575
+ haskell: "hs",
576
+ haxe: "hx",
577
+ hbs: "hbs",
578
+ hcl: "hcl",
579
+ hjson: "hjson",
580
+ hlsl: "hlsl",
581
+ hs: "hs",
582
+ html: "html",
583
+ "html-derivative": "html",
584
+ http: "http",
585
+ hxml: "hxml",
586
+ hy: "hy",
587
+ imba: "imba",
588
+ ini: "ini",
589
+ jade: "jade",
590
+ java: "java",
591
+ javascript: "js",
592
+ jinja: "jinja",
593
+ jison: "jison",
594
+ jl: "jl",
595
+ js: "js",
596
+ json: "json",
597
+ json5: "json5",
598
+ jsonc: "jsonc",
599
+ jsonl: "jsonl",
600
+ jsonnet: "jsonnet",
601
+ jssm: "jssm",
602
+ jsx: "jsx",
603
+ julia: "jl",
604
+ kotlin: "kt",
605
+ kql: "kql",
606
+ kt: "kt",
607
+ kts: "kts",
608
+ kusto: "kql",
609
+ latex: "tex",
610
+ lean: "lean",
611
+ lean4: "lean",
612
+ less: "less",
613
+ liquid: "liquid",
614
+ lisp: "lisp",
615
+ lit: "lit",
616
+ llvm: "ll",
617
+ log: "log",
618
+ logo: "logo",
619
+ lua: "lua",
620
+ luau: "luau",
621
+ make: "mak",
622
+ makefile: "mak",
623
+ markdown: "md",
624
+ marko: "marko",
625
+ matlab: "m",
626
+ md: "md",
627
+ mdc: "mdc",
628
+ mdx: "mdx",
629
+ mediawiki: "wiki",
630
+ mermaid: "mmd",
631
+ mips: "s",
632
+ mipsasm: "s",
633
+ mmd: "mmd",
634
+ mojo: "mojo",
635
+ move: "move",
636
+ nar: "nar",
637
+ narrat: "narrat",
638
+ nextflow: "nf",
639
+ nf: "nf",
640
+ nginx: "conf",
641
+ nim: "nim",
642
+ nix: "nix",
643
+ nu: "nu",
644
+ nushell: "nu",
645
+ objc: "m",
646
+ "objective-c": "m",
647
+ "objective-cpp": "mm",
648
+ ocaml: "ml",
649
+ pascal: "pas",
650
+ perl: "pl",
651
+ perl6: "p6",
652
+ php: "php",
653
+ plsql: "pls",
654
+ po: "po",
655
+ polar: "polar",
656
+ postcss: "pcss",
657
+ pot: "pot",
658
+ potx: "potx",
659
+ powerquery: "pq",
660
+ powershell: "ps1",
661
+ prisma: "prisma",
662
+ prolog: "pl",
663
+ properties: "properties",
664
+ proto: "proto",
665
+ protobuf: "proto",
666
+ ps: "ps",
667
+ ps1: "ps1",
668
+ pug: "pug",
669
+ puppet: "pp",
670
+ purescript: "purs",
671
+ py: "py",
672
+ python: "py",
673
+ ql: "ql",
674
+ qml: "qml",
675
+ qmldir: "qmldir",
676
+ qss: "qss",
677
+ r: "r",
678
+ racket: "rkt",
679
+ raku: "raku",
680
+ razor: "cshtml",
681
+ rb: "rb",
682
+ reg: "reg",
683
+ regex: "regex",
684
+ regexp: "regexp",
685
+ rel: "rel",
686
+ riscv: "s",
687
+ rs: "rs",
688
+ rst: "rst",
689
+ ruby: "rb",
690
+ rust: "rs",
691
+ sas: "sas",
692
+ sass: "sass",
693
+ scala: "scala",
694
+ scheme: "scm",
695
+ scss: "scss",
696
+ sdbl: "sdbl",
697
+ sh: "sh",
698
+ shader: "shader",
699
+ shaderlab: "shader",
700
+ shell: "sh",
701
+ shellscript: "sh",
702
+ shellsession: "sh",
703
+ smalltalk: "st",
704
+ solidity: "sol",
705
+ soy: "soy",
706
+ sparql: "rq",
707
+ spl: "spl",
708
+ splunk: "spl",
709
+ sql: "sql",
710
+ "ssh-config": "config",
711
+ stata: "do",
712
+ styl: "styl",
713
+ stylus: "styl",
714
+ svelte: "svelte",
715
+ swift: "swift",
716
+ "system-verilog": "sv",
717
+ systemd: "service",
718
+ talon: "talon",
719
+ talonscript: "talon",
720
+ tasl: "tasl",
721
+ tcl: "tcl",
722
+ templ: "templ",
723
+ terraform: "tf",
724
+ tex: "tex",
725
+ tf: "tf",
726
+ tfvars: "tfvars",
727
+ toml: "toml",
728
+ ts: "ts",
729
+ "ts-tags": "ts",
730
+ tsp: "tsp",
731
+ tsv: "tsv",
732
+ tsx: "tsx",
733
+ turtle: "ttl",
734
+ twig: "twig",
735
+ typ: "typ",
736
+ typescript: "ts",
737
+ typespec: "tsp",
738
+ typst: "typ",
739
+ v: "v",
740
+ vala: "vala",
741
+ vb: "vb",
742
+ verilog: "v",
743
+ vhdl: "vhdl",
744
+ vim: "vim",
745
+ viml: "vim",
746
+ vimscript: "vim",
747
+ vue: "vue",
748
+ "vue-html": "html",
749
+ "vue-vine": "vine",
750
+ vy: "vy",
751
+ vyper: "vy",
752
+ wasm: "wasm",
753
+ wenyan: "wy",
754
+ wgsl: "wgsl",
755
+ wiki: "wiki",
756
+ wikitext: "wiki",
757
+ wit: "wit",
758
+ wl: "wl",
759
+ wolfram: "wl",
760
+ xml: "xml",
761
+ xsl: "xsl",
762
+ yaml: "yaml",
763
+ yml: "yml",
764
+ zenscript: "zs",
765
+ zig: "zig",
766
+ zsh: "zsh",
767
+ 文言: "wy"
768
+ }, ut = ({ onDownload: e, onError: n, language: r, children: i, className: a, code: o, ...s }) => {
769
+ let { code: c } = de(), { isAnimating: l } = useContext(R), u = o ?? c, d = `file.${r && r in mt ? mt[r] : "txt"}`, p = () => {
770
+ try {
771
+ q(d, u, "text/plain"), e?.();
772
+ } catch (e) {
773
+ n?.(e);
774
+ }
775
+ };
776
+ return jsx("button", {
777
+ className: f("cursor-pointer p-1 text-muted-foreground transition-all hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50", a),
778
+ "data-streamdown": "code-block-download-button",
779
+ disabled: l,
780
+ onClick: p,
781
+ title: "Download file",
782
+ type: "button",
783
+ ...s,
784
+ children: i ?? jsx(Z, { size: 14 })
785
+ });
786
+ }, ft = () => jsxs("div", {
787
+ className: "w-full divide-y divide-border overflow-hidden rounded-xl border border-border",
788
+ children: [jsx("div", { className: "h-[46px] w-full bg-muted/80" }), jsx("div", {
789
+ className: "flex w-full items-center justify-center p-4",
790
+ children: jsx(st, { className: "size-4 animate-spin" })
791
+ })]
792
+ }), Cn = /\.[^/.]+$/, ht = ({ node: e, className: n, src: r, alt: i, onLoad: a, onError: o, ...s }) => {
793
+ let c = useRef(null), [l, u] = useState(!1), [d, p] = useState(!1), m = s.width != null || s.height != null, h = (l || m) && !d, g = d && !m;
794
+ useEffect(() => {
795
+ let e = c.current;
796
+ if (e != null && e.complete) {
797
+ let n = e.naturalWidth > 0;
798
+ u(n), p(!n);
799
+ }
800
+ }, []);
801
+ let _ = useCallback((e) => {
802
+ u(!0), p(!1), a?.(e);
803
+ }, [a]), v = useCallback((e) => {
804
+ u(!1), p(!0), o?.(e);
805
+ }, [o]), y = async () => {
806
+ if (r) try {
807
+ let e = await (await fetch(r)).blob(), n = new URL(r, window.location.origin).pathname.split("/").pop() || "", a = n.split(".").pop(), o = n.includes(".") && a !== void 0 && a.length <= 4, s = "";
808
+ if (o) s = n;
809
+ else {
810
+ let r = e.type, a = "png";
811
+ r.includes("jpeg") || r.includes("jpg") ? a = "jpg" : r.includes("png") ? a = "png" : r.includes("svg") ? a = "svg" : r.includes("gif") ? a = "gif" : r.includes("webp") && (a = "webp"), s = `${(i || n || "image").replace(Cn, "")}.${a}`;
812
+ }
813
+ q(s, e, e.type);
814
+ } catch {
815
+ window.open(r, "_blank");
816
+ }
817
+ };
818
+ return r ? jsxs("div", {
819
+ className: "group relative my-4 inline-block",
820
+ "data-streamdown": "image-wrapper",
821
+ children: [
822
+ jsx("img", {
823
+ alt: i,
824
+ className: f("max-w-full rounded-lg", g && "hidden", n),
825
+ "data-streamdown": "image",
826
+ onError: v,
827
+ onLoad: _,
828
+ ref: c,
829
+ src: r,
830
+ ...s
831
+ }),
832
+ g && jsx("span", {
833
+ className: "text-muted-foreground text-xs italic",
834
+ "data-streamdown": "image-fallback",
835
+ children: "Image not available"
836
+ }),
837
+ jsx("div", { className: "pointer-events-none absolute inset-0 hidden rounded-lg bg-black/10 group-hover:block" }),
838
+ h && jsx("button", {
839
+ className: f("absolute right-2 bottom-2 flex h-8 w-8 cursor-pointer items-center justify-center rounded-md border border-border bg-background/90 shadow-sm backdrop-blur-sm transition-all duration-200 hover:bg-background", "opacity-0 group-hover:opacity-100"),
840
+ onClick: y,
841
+ title: "Download image",
842
+ type: "button",
843
+ children: jsx(Z, { size: 14 })
844
+ })
845
+ ]
846
+ }) : null;
847
+ }, oe = 0, Mn = () => {
848
+ oe += 1, oe === 1 && (document.body.style.overflow = "hidden");
849
+ }, Tn = () => {
850
+ oe = Math.max(0, oe - 1), oe === 0 && (document.body.style.overflow = "");
851
+ }, kt = ({ url: e, isOpen: n, onClose: r, onConfirm: i }) => {
852
+ let [a, o] = useState(!1), s = useCallback(async () => {
853
+ try {
854
+ await navigator.clipboard.writeText(e), o(!0), setTimeout(() => o(!1), 2e3);
855
+ } catch {}
856
+ }, [e]), c = useCallback(() => {
857
+ i(), r();
858
+ }, [i, r]);
859
+ return useEffect(() => {
860
+ if (n) {
861
+ Mn();
862
+ let e = (e) => {
863
+ e.key === "Escape" && r();
864
+ };
865
+ return document.addEventListener("keydown", e), () => {
866
+ document.removeEventListener("keydown", e), Tn();
867
+ };
868
+ }
869
+ }, [n, r]), n ? jsx("div", {
870
+ className: "fixed inset-0 z-50 flex items-center justify-center bg-background/50 backdrop-blur-sm",
871
+ "data-streamdown": "link-safety-modal",
872
+ onClick: r,
873
+ onKeyDown: (e) => {
874
+ e.key === "Escape" && r();
875
+ },
876
+ role: "button",
877
+ tabIndex: 0,
878
+ children: jsxs("div", {
879
+ className: "relative mx-4 flex w-full max-w-md flex-col gap-4 rounded-xl border bg-background p-6 shadow-lg",
880
+ onClick: (e) => e.stopPropagation(),
881
+ onKeyDown: (e) => e.stopPropagation(),
882
+ role: "presentation",
883
+ children: [
884
+ jsx("button", {
885
+ className: "absolute top-4 right-4 rounded-md p-1 text-muted-foreground transition-all hover:bg-muted hover:text-foreground",
886
+ onClick: r,
887
+ title: "Close",
888
+ type: "button",
889
+ children: jsx(me, { size: 16 })
890
+ }),
891
+ jsxs("div", {
892
+ className: "flex flex-col gap-2",
893
+ children: [jsxs("div", {
894
+ className: "flex items-center gap-2 font-semibold text-lg",
895
+ children: [jsx(Ee, { size: 20 }), jsx("span", { children: "Open external link?" })]
896
+ }), jsx("p", {
897
+ className: "text-muted-foreground text-sm",
898
+ children: "You're about to visit an external website."
899
+ })]
900
+ }),
901
+ jsx("div", {
902
+ className: f("break-all rounded-md bg-muted p-3 font-mono text-sm", e.length > 100 && "max-h-32 overflow-y-auto"),
903
+ children: e
904
+ }),
905
+ jsxs("div", {
906
+ className: "flex gap-2",
907
+ children: [jsx("button", {
908
+ className: "flex flex-1 items-center justify-center gap-2 rounded-md border bg-background px-4 py-2 font-medium text-sm transition-all hover:bg-muted",
909
+ onClick: s,
910
+ type: "button",
911
+ children: a ? jsxs(Fragment$1, { children: [jsx(J, { size: 14 }), jsx("span", { children: "Copied" })] }) : jsxs(Fragment$1, { children: [jsx(K, { size: 14 }), jsx("span", { children: "Copy link" })] })
912
+ }), jsxs("button", {
913
+ className: "flex flex-1 items-center justify-center gap-2 rounded-md bg-primary px-4 py-2 font-medium text-primary-foreground text-sm transition-all hover:bg-primary/90",
914
+ onClick: c,
915
+ type: "button",
916
+ children: [jsx(Ee, { size: 14 }), jsx("span", { children: "Open link" })]
917
+ })]
918
+ })
919
+ ]
920
+ })
921
+ }) : null;
922
+ }, pe = createContext(null), Ct = () => useContext(pe), Ks = () => Ct()?.code ?? null, G = () => Ct()?.mermaid ?? null, vt = (e, n) => new Promise((n, r) => {
923
+ let i = "data:image/svg+xml;base64," + btoa(unescape(encodeURIComponent(e))), a = new Image();
924
+ a.crossOrigin = "anonymous", a.onload = () => {
925
+ let e = document.createElement("canvas"), i = a.width * 5, o = a.height * 5;
926
+ e.width = i, e.height = o;
927
+ let s = e.getContext("2d");
928
+ if (!s) {
929
+ r(/* @__PURE__ */ Error("Failed to create 2D canvas context for PNG export"));
930
+ return;
931
+ }
932
+ s.drawImage(a, 0, 0, i, o), e.toBlob((e) => {
933
+ if (!e) {
934
+ r(/* @__PURE__ */ Error("Failed to create PNG blob"));
935
+ return;
936
+ }
937
+ n(e);
938
+ }, "image/png");
939
+ }, a.onerror = () => r(/* @__PURE__ */ Error("Failed to load SVG image")), a.src = i;
940
+ }), Pt = ({ chart: e, children: n, className: r, onDownload: i, config: a, onError: o }) => {
941
+ let [s, c] = useState(!1), l = useRef(null), { isAnimating: u } = useContext(R), d = G(), p = async (n) => {
942
+ try {
943
+ if (n === "mmd") {
944
+ q("diagram.mmd", e, "text/plain"), c(!1), i?.(n);
945
+ return;
946
+ }
947
+ if (!d) {
948
+ o?.(/* @__PURE__ */ Error("Mermaid plugin not available"));
949
+ return;
950
+ }
951
+ let r = d.getMermaid(a), s = e.split("").reduce((e, n) => (e << 5) - e + n.charCodeAt(0) | 0, 0), l = `mermaid-${Math.abs(s)}-${Date.now()}-${Math.random().toString(36).substring(2, 9)}`, { svg: u } = await r.render(l, e);
952
+ if (!u) {
953
+ o?.(/* @__PURE__ */ Error("SVG not found. Please wait for the diagram to render."));
954
+ return;
955
+ }
956
+ if (n === "svg") {
957
+ q("diagram.svg", u, "image/svg+xml"), c(!1), i?.(n);
958
+ return;
959
+ }
960
+ if (n === "png") {
961
+ q("diagram.png", await vt(u), "image/png"), i?.(n), c(!1);
962
+ return;
963
+ }
964
+ } catch (e) {
965
+ o?.(e);
966
+ }
967
+ };
968
+ return useEffect(() => {
969
+ let e = (e) => {
970
+ let n = e.composedPath();
971
+ l.current && !n.includes(l.current) && c(!1);
972
+ };
973
+ return document.addEventListener("mousedown", e), () => {
974
+ document.removeEventListener("mousedown", e);
975
+ };
976
+ }, []), jsxs("div", {
977
+ className: "relative",
978
+ ref: l,
979
+ children: [jsx("button", {
980
+ className: f("cursor-pointer p-1 text-muted-foreground transition-all hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50", r),
981
+ disabled: u,
982
+ onClick: () => c(!s),
983
+ title: "Download diagram",
984
+ type: "button",
985
+ children: n ?? jsx(Z, { size: 14 })
986
+ }), s ? jsxs("div", {
987
+ className: "absolute top-full right-0 z-10 mt-1 min-w-[120px] overflow-hidden rounded-md border border-border bg-background shadow-lg",
988
+ children: [
989
+ jsx("button", {
990
+ className: "w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40",
991
+ onClick: () => p("svg"),
992
+ title: "Download diagram as SVG",
993
+ type: "button",
994
+ children: "SVG"
995
+ }),
996
+ jsx("button", {
997
+ className: "w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40",
998
+ onClick: () => p("png"),
999
+ title: "Download diagram as PNG",
1000
+ type: "button",
1001
+ children: "PNG"
1002
+ }),
1003
+ jsx("button", {
1004
+ className: "w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40",
1005
+ onClick: () => p("mmd"),
1006
+ title: "Download diagram as MMD",
1007
+ type: "button",
1008
+ children: "MMD"
1009
+ })
1010
+ ]
1011
+ }) : null]
1012
+ });
1013
+ }, re = 0, On = () => {
1014
+ re += 1, re === 1 && (document.body.style.overflow = "hidden");
1015
+ }, Vn = () => {
1016
+ re = Math.max(0, re - 1), re === 0 && (document.body.style.overflow = "");
1017
+ }, Lt = ({ chart: e, config: n, onFullscreen: r, onExit: i, className: a, ...o }) => {
1018
+ let [s, c] = useState(!1), { isAnimating: l, controls: u } = useContext(R), d = (() => {
1019
+ if (typeof u == "boolean") return u;
1020
+ let e = u.mermaid;
1021
+ return e === !1 ? !1 : e === !0 || e === void 0 ? !0 : e.panZoom !== !1;
1022
+ })(), p = () => {
1023
+ c(!s);
1024
+ };
1025
+ return useEffect(() => {
1026
+ if (s) {
1027
+ On();
1028
+ let e = (e) => {
1029
+ e.key === "Escape" && c(!1);
1030
+ };
1031
+ return document.addEventListener("keydown", e), () => {
1032
+ document.removeEventListener("keydown", e), Vn();
1033
+ };
1034
+ }
1035
+ }, [s]), useEffect(() => {
1036
+ s ? r?.() : i && i();
1037
+ }, [
1038
+ s,
1039
+ r,
1040
+ i
1041
+ ]), jsxs(Fragment$1, { children: [jsx("button", {
1042
+ className: f("cursor-pointer p-1 text-muted-foreground transition-all hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50", a),
1043
+ disabled: l,
1044
+ onClick: p,
1045
+ title: "View fullscreen",
1046
+ type: "button",
1047
+ ...o,
1048
+ children: jsx(at, { size: 14 })
1049
+ }), s ? createPortal(jsxs("div", {
1050
+ className: "fixed inset-0 z-50 flex items-center justify-center bg-background/95 backdrop-blur-sm",
1051
+ onClick: p,
1052
+ onKeyDown: (e) => {
1053
+ e.key === "Escape" && p();
1054
+ },
1055
+ role: "button",
1056
+ tabIndex: 0,
1057
+ children: [jsx("button", {
1058
+ className: "absolute top-4 right-4 z-10 rounded-md p-2 text-muted-foreground transition-all hover:bg-muted hover:text-foreground",
1059
+ onClick: p,
1060
+ title: "Exit fullscreen",
1061
+ type: "button",
1062
+ children: jsx(me, { size: 20 })
1063
+ }), jsx("div", {
1064
+ className: "flex size-full items-center justify-center p-4",
1065
+ onClick: (e) => e.stopPropagation(),
1066
+ onKeyDown: (e) => e.stopPropagation(),
1067
+ role: "presentation",
1068
+ children: jsx(Nt, {
1069
+ chart: e,
1070
+ className: "size-full [&_svg]:h-auto [&_svg]:w-auto",
1071
+ config: n,
1072
+ fullscreen: !0,
1073
+ showControls: d
1074
+ })
1075
+ })]
1076
+ }), document.body) : null] });
1077
+ }, ue = (e) => {
1078
+ let n = [], r = [], i = e.querySelectorAll("thead th");
1079
+ for (let e of i) n.push(e.textContent?.trim() || "");
1080
+ let a = e.querySelectorAll("tbody tr");
1081
+ for (let e of a) {
1082
+ let n = [], i = e.querySelectorAll("td");
1083
+ for (let e of i) n.push(e.textContent?.trim() || "");
1084
+ r.push(n);
1085
+ }
1086
+ return {
1087
+ headers: n,
1088
+ rows: r
1089
+ };
1090
+ }, fe = (e) => {
1091
+ let { headers: n, rows: r } = e, i = (e) => {
1092
+ let n = !1, r = !1;
1093
+ for (let i of e) {
1094
+ if (i === "\"") {
1095
+ n = !0, r = !0;
1096
+ break;
1097
+ }
1098
+ (i === "," || i === "\n") && (n = !0);
1099
+ }
1100
+ return n ? r ? `"${e.replace(/"/g, "\"\"")}"` : `"${e}"` : e;
1101
+ }, a = n.length > 0 ? r.length + 1 : r.length, o = Array(a), s = 0;
1102
+ n.length > 0 && (o[s] = n.map(i).join(","), s += 1);
1103
+ for (let e of r) o[s] = e.map(i).join(","), s += 1;
1104
+ return o.join("\n");
1105
+ }, Rt = (e) => {
1106
+ let { headers: n, rows: r } = e, i = (e) => {
1107
+ let n = !1;
1108
+ for (let r of e) if (r === " " || r === "\n" || r === "\r") {
1109
+ n = !0;
1110
+ break;
1111
+ }
1112
+ if (!n) return e;
1113
+ let r = [];
1114
+ for (let n of e) n === " " ? r.push("\\t") : n === "\n" ? r.push("\\n") : n === "\r" ? r.push("\\r") : r.push(n);
1115
+ return r.join("");
1116
+ }, a = n.length > 0 ? r.length + 1 : r.length, o = Array(a), s = 0;
1117
+ n.length > 0 && (o[s] = n.map(i).join(" "), s += 1);
1118
+ for (let e of r) o[s] = e.map(i).join(" "), s += 1;
1119
+ return o.join("\n");
1120
+ }, De = (e) => {
1121
+ let n = !1;
1122
+ for (let r of e) if (r === "\\" || r === "|") {
1123
+ n = !0;
1124
+ break;
1125
+ }
1126
+ if (!n) return e;
1127
+ let r = [];
1128
+ for (let n of e) n === "\\" ? r.push("\\\\") : n === "|" ? r.push("\\|") : r.push(n);
1129
+ return r.join("");
1130
+ }, se = (e) => {
1131
+ let { headers: n, rows: r } = e;
1132
+ if (n.length === 0) return "";
1133
+ let i = Array(r.length + 2), a = 0;
1134
+ i[a] = `| ${n.map((e) => De(e)).join(" | ")} |`, a += 1;
1135
+ let o = Array(n.length);
1136
+ for (let e = 0; e < n.length; e += 1) o[e] = "---";
1137
+ i[a] = `| ${o.join(" | ")} |`, a += 1;
1138
+ for (let e of r) if (e.length < n.length) {
1139
+ let r = Array(n.length);
1140
+ for (let i = 0; i < n.length; i += 1) r[i] = i < e.length ? De(e[i]) : "";
1141
+ i[a] = `| ${r.join(" | ")} |`, a += 1;
1142
+ } else i[a] = `| ${e.map((e) => De(e)).join(" | ")} |`, a += 1;
1143
+ return i.join("\n");
1144
+ }, Ht = ({ children: e, className: n, onCopy: r, onError: i, timeout: a = 2e3 }) => {
1145
+ let [o, s] = useState(!1), [c, l] = useState(!1), u = useRef(null), d = useRef(0), { isAnimating: p } = useContext(R), m = async (e) => {
1146
+ var n;
1147
+ if (typeof window > "u" || !((n = navigator == null ? void 0 : navigator.clipboard) != null && n.write)) {
1148
+ i?.(/* @__PURE__ */ Error("Clipboard API not available"));
1149
+ return;
1150
+ }
1151
+ try {
1152
+ let n = (u.current?.closest("[data-streamdown=\"table-wrapper\"]"))?.querySelector("table");
1153
+ if (!n) {
1154
+ i?.(/* @__PURE__ */ Error("Table not found"));
1155
+ return;
1156
+ }
1157
+ let o = ue(n), c = ({
1158
+ csv: fe,
1159
+ tsv: Rt,
1160
+ md: se
1161
+ }[e] || se)(o), p = new ClipboardItem({
1162
+ "text/plain": new Blob([c], { type: "text/plain" }),
1163
+ "text/html": new Blob([n.outerHTML], { type: "text/html" })
1164
+ });
1165
+ await navigator.clipboard.write([p]), l(!0), s(!1), r?.(e), d.current = window.setTimeout(() => l(!1), a);
1166
+ } catch (e) {
1167
+ i?.(e);
1168
+ }
1169
+ };
1170
+ useEffect(() => {
1171
+ let e = (e) => {
1172
+ let n = e.composedPath();
1173
+ u.current && !n.includes(u.current) && s(!1);
1174
+ };
1175
+ return document.addEventListener("mousedown", e), () => {
1176
+ document.removeEventListener("mousedown", e), window.clearTimeout(d.current);
1177
+ };
1178
+ }, []);
1179
+ let h = c ? J : K;
1180
+ return jsxs("div", {
1181
+ className: "relative",
1182
+ ref: u,
1183
+ children: [jsx("button", {
1184
+ className: f("cursor-pointer p-1 text-muted-foreground transition-all hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50", n),
1185
+ disabled: p,
1186
+ onClick: () => s(!o),
1187
+ title: "Copy table",
1188
+ type: "button",
1189
+ children: e ?? jsx(h, { size: 14 })
1190
+ }), o ? jsxs("div", {
1191
+ className: "absolute top-full right-0 z-10 mt-1 min-w-[120px] overflow-hidden rounded-md border border-border bg-background shadow-lg",
1192
+ children: [
1193
+ jsx("button", {
1194
+ className: "w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40",
1195
+ onClick: () => m("md"),
1196
+ title: "Copy table as Markdown",
1197
+ type: "button",
1198
+ children: "Markdown"
1199
+ }),
1200
+ jsx("button", {
1201
+ className: "w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40",
1202
+ onClick: () => m("csv"),
1203
+ title: "Copy table as CSV",
1204
+ type: "button",
1205
+ children: "CSV"
1206
+ }),
1207
+ jsx("button", {
1208
+ className: "w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40",
1209
+ onClick: () => m("tsv"),
1210
+ title: "Copy table as TSV",
1211
+ type: "button",
1212
+ children: "TSV"
1213
+ })
1214
+ ]
1215
+ }) : null]
1216
+ });
1217
+ }, Dt = ({ children: e, className: n, onDownload: r, onError: i }) => {
1218
+ let [a, o] = useState(!1), s = useRef(null), { isAnimating: c } = useContext(R), l = (e) => {
1219
+ try {
1220
+ let n = (s.current?.closest("[data-streamdown=\"table-wrapper\"]"))?.querySelector("table");
1221
+ if (!n) {
1222
+ i?.(/* @__PURE__ */ Error("Table not found"));
1223
+ return;
1224
+ }
1225
+ let a = ue(n), c = e === "csv" ? fe(a) : se(a);
1226
+ q(`table.${e === "csv" ? "csv" : "md"}`, c, e === "csv" ? "text/csv" : "text/markdown"), o(!1), r?.(e);
1227
+ } catch (e) {
1228
+ i?.(e);
1229
+ }
1230
+ };
1231
+ return useEffect(() => {
1232
+ let e = (e) => {
1233
+ let n = e.composedPath();
1234
+ s.current && !n.includes(s.current) && o(!1);
1235
+ };
1236
+ return document.addEventListener("mousedown", e), () => {
1237
+ document.removeEventListener("mousedown", e);
1238
+ };
1239
+ }, []), jsxs("div", {
1240
+ className: "relative",
1241
+ ref: s,
1242
+ children: [jsx("button", {
1243
+ className: f("cursor-pointer p-1 text-muted-foreground transition-all hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50", n),
1244
+ disabled: c,
1245
+ onClick: () => o(!a),
1246
+ title: "Download table",
1247
+ type: "button",
1248
+ children: e ?? jsx(Z, { size: 14 })
1249
+ }), a ? jsxs("div", {
1250
+ className: "absolute top-full right-0 z-10 mt-1 min-w-[120px] overflow-hidden rounded-md border border-border bg-background shadow-lg",
1251
+ children: [jsx("button", {
1252
+ className: "w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40",
1253
+ onClick: () => l("csv"),
1254
+ title: "Download table as CSV",
1255
+ type: "button",
1256
+ children: "CSV"
1257
+ }), jsx("button", {
1258
+ className: "w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40",
1259
+ onClick: () => l("markdown"),
1260
+ title: "Download table as Markdown",
1261
+ type: "button",
1262
+ children: "Markdown"
1263
+ })]
1264
+ }) : null]
1265
+ });
1266
+ }, Vt = ({ children: e, className: n, showControls: r, ...i }) => jsxs("div", {
1267
+ className: "my-4 flex flex-col gap-2 rounded-lg border border-border bg-sidebar p-2",
1268
+ "data-streamdown": "table-wrapper",
1269
+ children: [r ? jsxs("div", {
1270
+ className: "flex items-center justify-end gap-1",
1271
+ children: [jsx(Ht, {}), jsx(Dt, {})]
1272
+ }) : null, jsx("div", {
1273
+ className: "border-collapse overflow-x-auto overscroll-y-auto rounded-md border border-border bg-background",
1274
+ children: jsx("table", {
1275
+ className: f("w-full divide-y divide-border", n),
1276
+ "data-streamdown": "table",
1277
+ ...i,
1278
+ children: e
1279
+ })
1280
+ })]
1281
+ }), Jn = lazy(() => import("./mermaid-3ZIDBTTL.js").then((e) => ({ default: e.Mermaid }))), Kn = /language-([^\s]+)/;
1282
+ function ke(e, n) {
1283
+ if (!(e != null && e.position || n != null && n.position)) return !0;
1284
+ if (!(e != null && e.position && n != null && n.position)) return !1;
1285
+ let r = e.position.start, i = n.position.start, a = e.position.end, o = n.position.end;
1286
+ return r?.line === i?.line && r?.column === i?.column && a?.line === o?.line && a?.column === o?.column;
1287
+ }
1288
+ function N(e, n) {
1289
+ return e.className === n.className && ke(e.node, n.node);
1290
+ }
1291
+ var Ve = (e, n) => typeof e == "boolean" ? e : e[n] !== !1, he = (e, n) => {
1292
+ if (typeof e == "boolean") return e;
1293
+ let r = e.mermaid;
1294
+ return r === !1 ? !1 : r === !0 || r === void 0 ? !0 : r[n] !== !1;
1295
+ }, je = memo(({ children: e, className: n, node: r, ...i }) => jsx("ol", {
1296
+ className: f("list-inside list-decimal whitespace-normal [li_&]:pl-6", n),
1297
+ "data-streamdown": "ordered-list",
1298
+ ...i,
1299
+ children: e
1300
+ }), (e, n) => N(e, n));
1301
+ je.displayName = "MarkdownOl";
1302
+ var At = memo(({ children: e, className: n, node: r, ...i }) => jsx("li", {
1303
+ className: f("py-1 [&>p]:inline", n),
1304
+ "data-streamdown": "list-item",
1305
+ ...i,
1306
+ children: e
1307
+ }), (e, n) => e.className === n.className && ke(e.node, n.node));
1308
+ At.displayName = "MarkdownLi";
1309
+ var jt = memo(({ children: e, className: n, node: r, ...i }) => jsx("ul", {
1310
+ className: f("list-inside list-disc whitespace-normal [li_&]:pl-6", n),
1311
+ "data-streamdown": "unordered-list",
1312
+ ...i,
1313
+ children: e
1314
+ }), (e, n) => N(e, n));
1315
+ jt.displayName = "MarkdownUl";
1316
+ var zt = memo(({ className: e, node: n, ...r }) => jsx("hr", {
1317
+ className: f("my-6 border-border", e),
1318
+ "data-streamdown": "horizontal-rule",
1319
+ ...r
1320
+ }), (e, n) => N(e, n));
1321
+ zt.displayName = "MarkdownHr";
1322
+ var qt = memo(({ children: e, className: n, node: r, ...i }) => jsx("span", {
1323
+ className: f("font-semibold", n),
1324
+ "data-streamdown": "strong",
1325
+ ...i,
1326
+ children: e
1327
+ }), (e, n) => N(e, n));
1328
+ qt.displayName = "MarkdownStrong";
1329
+ var _t = memo(({ children: e, className: n, href: r, node: i, ...a }) => {
1330
+ let { linkSafety: o } = useContext(R), [s, c] = useState(!1), l = r === "streamdown:incomplete-link", u = useCallback(async (e) => {
1331
+ if (!(!(o != null && o.enabled && r) || l)) {
1332
+ if (e.preventDefault(), o.onLinkCheck && await o.onLinkCheck(r)) {
1333
+ window.open(r, "_blank", "noreferrer");
1334
+ return;
1335
+ }
1336
+ c(!0);
1337
+ }
1338
+ }, [
1339
+ o,
1340
+ r,
1341
+ l
1342
+ ]), d = useCallback(() => {
1343
+ r && window.open(r, "_blank", "noreferrer");
1344
+ }, [r]), p = useCallback(() => {
1345
+ c(!1);
1346
+ }, []), m = {
1347
+ url: r ?? "",
1348
+ isOpen: s,
1349
+ onClose: p,
1350
+ onConfirm: d
1351
+ };
1352
+ return o != null && o.enabled && r ? jsxs(Fragment$1, { children: [jsx("button", {
1353
+ className: f("wrap-anywhere appearance-none text-left font-medium text-primary underline", n),
1354
+ "data-incomplete": l,
1355
+ "data-streamdown": "link",
1356
+ onClick: u,
1357
+ type: "button",
1358
+ children: e
1359
+ }), o.renderModal ? o.renderModal(m) : jsx(kt, { ...m })] }) : jsx("a", {
1360
+ className: f("wrap-anywhere font-medium text-primary underline", n),
1361
+ "data-incomplete": l,
1362
+ "data-streamdown": "link",
1363
+ href: r,
1364
+ rel: "noreferrer",
1365
+ target: "_blank",
1366
+ ...a,
1367
+ children: e
1368
+ });
1369
+ }, (e, n) => N(e, n) && e.href === n.href);
1370
+ _t.displayName = "MarkdownA";
1371
+ var Zt = memo(({ children: e, className: n, node: r, ...i }) => jsx("h1", {
1372
+ className: f("mt-6 mb-2 font-semibold text-3xl", n),
1373
+ "data-streamdown": "heading-1",
1374
+ ...i,
1375
+ children: e
1376
+ }), (e, n) => N(e, n));
1377
+ Zt.displayName = "MarkdownH1";
1378
+ var Wt = memo(({ children: e, className: n, node: r, ...i }) => jsx("h2", {
1379
+ className: f("mt-6 mb-2 font-semibold text-2xl", n),
1380
+ "data-streamdown": "heading-2",
1381
+ ...i,
1382
+ children: e
1383
+ }), (e, n) => N(e, n));
1384
+ Wt.displayName = "MarkdownH2";
1385
+ var $t = memo(({ children: e, className: n, node: r, ...i }) => jsx("h3", {
1386
+ className: f("mt-6 mb-2 font-semibold text-xl", n),
1387
+ "data-streamdown": "heading-3",
1388
+ ...i,
1389
+ children: e
1390
+ }), (e, n) => N(e, n));
1391
+ $t.displayName = "MarkdownH3";
1392
+ var Ft = memo(({ children: e, className: n, node: r, ...i }) => jsx("h4", {
1393
+ className: f("mt-6 mb-2 font-semibold text-lg", n),
1394
+ "data-streamdown": "heading-4",
1395
+ ...i,
1396
+ children: e
1397
+ }), (e, n) => N(e, n));
1398
+ Ft.displayName = "MarkdownH4";
1399
+ var Ut = memo(({ children: e, className: n, node: r, ...i }) => jsx("h5", {
1400
+ className: f("mt-6 mb-2 font-semibold text-base", n),
1401
+ "data-streamdown": "heading-5",
1402
+ ...i,
1403
+ children: e
1404
+ }), (e, n) => N(e, n));
1405
+ Ut.displayName = "MarkdownH5";
1406
+ var Xt = memo(({ children: e, className: n, node: r, ...i }) => jsx("h6", {
1407
+ className: f("mt-6 mb-2 font-semibold text-sm", n),
1408
+ "data-streamdown": "heading-6",
1409
+ ...i,
1410
+ children: e
1411
+ }), (e, n) => N(e, n));
1412
+ Xt.displayName = "MarkdownH6";
1413
+ var Jt = memo(({ children: e, className: n, node: r, ...i }) => {
1414
+ let { controls: a } = useContext(R);
1415
+ return jsx(Vt, {
1416
+ className: n,
1417
+ showControls: Ve(a, "table"),
1418
+ ...i,
1419
+ children: e
1420
+ });
1421
+ }, (e, n) => N(e, n));
1422
+ Jt.displayName = "MarkdownTable";
1423
+ var Kt = memo(({ children: e, className: n, node: r, ...i }) => jsx("thead", {
1424
+ className: f("bg-muted/80", n),
1425
+ "data-streamdown": "table-header",
1426
+ ...i,
1427
+ children: e
1428
+ }), (e, n) => N(e, n));
1429
+ Kt.displayName = "MarkdownThead";
1430
+ var Gt = memo(({ children: e, className: n, node: r, ...i }) => jsx("tbody", {
1431
+ className: f("divide-y divide-border", n),
1432
+ "data-streamdown": "table-body",
1433
+ ...i,
1434
+ children: e
1435
+ }), (e, n) => N(e, n));
1436
+ Gt.displayName = "MarkdownTbody";
1437
+ var Yt = memo(({ children: e, className: n, node: r, ...i }) => jsx("tr", {
1438
+ className: f("border-border", n),
1439
+ "data-streamdown": "table-row",
1440
+ ...i,
1441
+ children: e
1442
+ }), (e, n) => N(e, n));
1443
+ Yt.displayName = "MarkdownTr";
1444
+ var Qt = memo(({ children: e, className: n, node: r, ...i }) => jsx("th", {
1445
+ className: f("whitespace-nowrap px-4 py-2 text-left font-semibold text-sm", n),
1446
+ "data-streamdown": "table-header-cell",
1447
+ ...i,
1448
+ children: e
1449
+ }), (e, n) => N(e, n));
1450
+ Qt.displayName = "MarkdownTh";
1451
+ var eo = memo(({ children: e, className: n, node: r, ...i }) => jsx("td", {
1452
+ className: f("px-4 py-2 text-sm", n),
1453
+ "data-streamdown": "table-cell",
1454
+ ...i,
1455
+ children: e
1456
+ }), (e, n) => N(e, n));
1457
+ eo.displayName = "MarkdownTd";
1458
+ var to = memo(({ children: e, className: n, node: r, ...i }) => jsx("blockquote", {
1459
+ className: f("my-4 border-muted-foreground/30 border-l-4 pl-4 text-muted-foreground italic", n),
1460
+ "data-streamdown": "blockquote",
1461
+ ...i,
1462
+ children: e
1463
+ }), (e, n) => N(e, n));
1464
+ to.displayName = "MarkdownBlockquote";
1465
+ var oo = memo(({ children: e, className: n, node: r, ...i }) => jsx("sup", {
1466
+ className: f("text-sm", n),
1467
+ "data-streamdown": "superscript",
1468
+ ...i,
1469
+ children: e
1470
+ }), (e, n) => N(e, n));
1471
+ oo.displayName = "MarkdownSup";
1472
+ var no = memo(({ children: e, className: n, node: r, ...i }) => jsx("sub", {
1473
+ className: f("text-sm", n),
1474
+ "data-streamdown": "subscript",
1475
+ ...i,
1476
+ children: e
1477
+ }), (e, n) => N(e, n));
1478
+ no.displayName = "MarkdownSub";
1479
+ var ro = memo(({ children: e, className: n, node: r, ...i }) => {
1480
+ if ("data-footnotes" in i) {
1481
+ let r = (e) => {
1482
+ if (!isValidElement(e)) return !1;
1483
+ let n = Array.isArray(e.props.children) ? e.props.children : [e.props.children], r = !1, i = !1;
1484
+ for (let e of n) if (e) {
1485
+ if (typeof e == "string") e.trim() !== "" && (r = !0);
1486
+ else if (isValidElement(e)) if (e.props?.["data-footnote-backref"] !== void 0) i = !0;
1487
+ else {
1488
+ let n = Array.isArray(e.props.children) ? e.props.children : [e.props.children];
1489
+ for (let e of n) {
1490
+ if (typeof e == "string" && e.trim() !== "") {
1491
+ r = !0;
1492
+ break;
1493
+ }
1494
+ if (isValidElement(e) && e.props?.["data-footnote-backref"] === void 0) {
1495
+ r = !0;
1496
+ break;
1497
+ }
1498
+ }
1499
+ }
1500
+ }
1501
+ return i && !r;
1502
+ }, a = Array.isArray(e) ? e.map((e) => {
1503
+ if (!isValidElement(e)) return e;
1504
+ if (e.type === je) {
1505
+ let n = (Array.isArray(e.props.children) ? e.props.children : [e.props.children]).filter((e) => !r(e));
1506
+ return n.length === 0 ? null : {
1507
+ ...e,
1508
+ props: {
1509
+ ...e.props,
1510
+ children: n
1511
+ }
1512
+ };
1513
+ }
1514
+ return e;
1515
+ }) : e;
1516
+ return (Array.isArray(a) ? a.some((e) => e !== null) : a !== null) ? jsx("section", {
1517
+ className: n,
1518
+ ...i,
1519
+ children: a
1520
+ }) : null;
1521
+ }
1522
+ return jsx("section", {
1523
+ className: n,
1524
+ ...i,
1525
+ children: e
1526
+ });
1527
+ }, (e, n) => N(e, n));
1528
+ ro.displayName = "MarkdownSection";
1529
+ var so = memo(({ node: e, className: n, children: r, ...i }) => {
1530
+ let a = !("data-block" in i), { mermaid: o, controls: s } = useContext(R), c = G(), l = Ie();
1531
+ if (a) return jsx("code", {
1532
+ className: f("rounded bg-muted px-1.5 py-0.5 font-mono text-sm", n),
1533
+ "data-streamdown": "inline-code",
1534
+ ...i,
1535
+ children: r
1536
+ });
1537
+ let u = (n?.match(Kn))?.at(1) ?? "", d = "";
1538
+ if (isValidElement(r) && r.props && typeof r.props == "object" && "children" in r.props && typeof r.props.children == "string" ? d = r.props.children : typeof r == "string" && (d = r), u === "mermaid" && c) {
1539
+ let e = Ve(s, "mermaid"), r = he(s, "download"), i = he(s, "copy"), a = he(s, "fullscreen"), c = he(s, "panZoom"), l = e && (r || i || a);
1540
+ return jsx(Suspense, {
1541
+ fallback: jsx(ft, {}),
1542
+ children: jsxs("div", {
1543
+ className: f("group relative my-4 flex w-full flex-col gap-2 rounded-xl border border-border bg-sidebar p-2", n),
1544
+ "data-streamdown": "mermaid-block",
1545
+ children: [
1546
+ jsx("div", {
1547
+ className: "flex h-8 items-center text-muted-foreground text-xs",
1548
+ children: jsx("span", {
1549
+ className: "ml-1 font-mono lowercase",
1550
+ children: "mermaid"
1551
+ })
1552
+ }),
1553
+ l ? jsx("div", {
1554
+ className: "pointer-events-none sticky top-2 z-10 -mt-10 flex h-8 items-center justify-end",
1555
+ children: jsxs("div", {
1556
+ className: "pointer-events-auto flex shrink-0 items-center gap-2 rounded-md border border-sidebar bg-sidebar/80 px-1.5 py-1 supports-[backdrop-filter]:bg-sidebar/70 supports-[backdrop-filter]:backdrop-blur",
1557
+ "data-streamdown": "mermaid-block-actions",
1558
+ children: [
1559
+ r ? jsx(Pt, {
1560
+ chart: d,
1561
+ config: o?.config
1562
+ }) : null,
1563
+ i ? jsx(He, { code: d }) : null,
1564
+ a ? jsx(Lt, {
1565
+ chart: d,
1566
+ config: o?.config
1567
+ }) : null
1568
+ ]
1569
+ })
1570
+ }) : null,
1571
+ jsx("div", {
1572
+ className: "rounded-md border border-border bg-background",
1573
+ children: jsx(Jn, {
1574
+ chart: d,
1575
+ config: o?.config,
1576
+ showControls: c
1577
+ })
1578
+ })
1579
+ ]
1580
+ })
1581
+ });
1582
+ }
1583
+ let p = Ve(s, "code");
1584
+ return jsx(rt, {
1585
+ className: n,
1586
+ code: d,
1587
+ isIncomplete: l,
1588
+ language: u,
1589
+ children: p ? jsxs(Fragment$1, { children: [jsx(ut, {
1590
+ code: d,
1591
+ language: u
1592
+ }), jsx(He, {})] }) : null
1593
+ });
1594
+ }, (e, n) => e.className === n.className && ke(e.node, n.node));
1595
+ so.displayName = "MarkdownCode";
1596
+ var ao = memo(ht, (e, n) => e.className === n.className && ke(e.node, n.node));
1597
+ ao.displayName = "MarkdownImg";
1598
+ var io = memo(({ children: e, node: n, ...r }) => {
1599
+ let i = (Array.isArray(e) ? e : [e]).filter((e) => e != null && e !== "");
1600
+ if (i.length === 1 && isValidElement(i[0])) {
1601
+ let n = i[0].props.node?.tagName;
1602
+ if (n === "img" || n === "code" && "data-block" in i[0].props) return jsx(Fragment$1, { children: e });
1603
+ }
1604
+ return jsx("p", {
1605
+ ...r,
1606
+ children: e
1607
+ });
1608
+ }, (e, n) => N(e, n));
1609
+ io.displayName = "MarkdownParagraph";
1610
+ var lo = {
1611
+ ol: je,
1612
+ li: At,
1613
+ ul: jt,
1614
+ hr: zt,
1615
+ strong: qt,
1616
+ a: _t,
1617
+ h1: Zt,
1618
+ h2: Wt,
1619
+ h3: $t,
1620
+ h4: Ft,
1621
+ h5: Ut,
1622
+ h6: Xt,
1623
+ table: Jt,
1624
+ thead: Kt,
1625
+ tbody: Gt,
1626
+ tr: Yt,
1627
+ th: Qt,
1628
+ td: eo,
1629
+ blockquote: to,
1630
+ code: so,
1631
+ img: ao,
1632
+ pre: ({ children: e }) => isValidElement(e) ? cloneElement(e, { "data-block": "true" }) : e,
1633
+ sup: oo,
1634
+ sub: no,
1635
+ p: io,
1636
+ section: ro
1637
+ }, Qn = /^[ \t]{0,3}(`{3,}|~{3,})/, er = /^\|?[ \t]*:?-{1,}:?[ \t]*(\|[ \t]*:?-{1,}:?[ \t]*)*\|?$/, ze = (e) => {
1638
+ let n = e.split("\n"), r = null, i = 0;
1639
+ for (let e of n) {
1640
+ let n = Qn.exec(e);
1641
+ if (r === null) {
1642
+ if (n) {
1643
+ let e = n[1];
1644
+ r = e[0], i = e.length;
1645
+ }
1646
+ } else if (n) {
1647
+ let e = n[1], a = e[0], o = e.length;
1648
+ a === r && o >= i && (r = null, i = 0);
1649
+ }
1650
+ }
1651
+ return r !== null;
1652
+ }, co = (e) => {
1653
+ let n = e.split("\n");
1654
+ for (let e of n) {
1655
+ let n = e.trim();
1656
+ if (n.length > 0 && n.includes("|") && er.test(n)) return !0;
1657
+ }
1658
+ return !1;
1659
+ }, mo = () => (e) => {
1660
+ visit(e, "html", (e, n, r) => {
1661
+ !r || typeof n != "number" || (r.children[n] = {
1662
+ type: "text",
1663
+ value: e.value
1664
+ });
1665
+ });
1666
+ }, uo = [], fo = { allowDangerousHtml: !0 }, Ce = /* @__PURE__ */ new WeakMap(), go = new class {
1667
+ constructor() {
1668
+ this.cache = /* @__PURE__ */ new Map(), this.keyCache = /* @__PURE__ */ new WeakMap(), this.maxSize = 100;
1669
+ }
1670
+ generateCacheKey(e) {
1671
+ let n = this.keyCache.get(e);
1672
+ if (n) return n;
1673
+ let r = e.rehypePlugins, i = e.remarkPlugins, a = e.remarkRehypeOptions;
1674
+ if (!(r || i || a)) {
1675
+ let n = "default";
1676
+ return this.keyCache.set(e, n), n;
1677
+ }
1678
+ let o = (e) => {
1679
+ if (!e || e.length === 0) return "";
1680
+ let n = "";
1681
+ for (let r = 0; r < e.length; r += 1) {
1682
+ let i = e[r];
1683
+ if (r > 0 && (n += ","), Array.isArray(i)) {
1684
+ let [e, r] = i;
1685
+ if (typeof e == "function") {
1686
+ let r = Ce.get(e);
1687
+ r || (r = e.name, Ce.set(e, r)), n += r;
1688
+ } else n += String(e);
1689
+ n += ":", n += JSON.stringify(r);
1690
+ } else if (typeof i == "function") {
1691
+ let e = Ce.get(i);
1692
+ e || (e = i.name, Ce.set(i, e)), n += e;
1693
+ } else n += String(i);
1694
+ }
1695
+ return n;
1696
+ }, s = o(r), c = `${o(i)}::${s}::${a ? JSON.stringify(a) : ""}`;
1697
+ return this.keyCache.set(e, c), c;
1698
+ }
1699
+ get(e) {
1700
+ let n = this.generateCacheKey(e), r = this.cache.get(n);
1701
+ return r && (this.cache.delete(n), this.cache.set(n, r)), r;
1702
+ }
1703
+ set(e, n) {
1704
+ let r = this.generateCacheKey(e);
1705
+ if (this.cache.size >= this.maxSize) {
1706
+ let e = this.cache.keys().next().value;
1707
+ e && this.cache.delete(e);
1708
+ }
1709
+ this.cache.set(r, n);
1710
+ }
1711
+ clear() {
1712
+ this.cache.clear();
1713
+ }
1714
+ }(), Ze = (e) => {
1715
+ let n = dr(e), r = e.children || "";
1716
+ return br(n.runSync(n.parse(r), r), e);
1717
+ }, dr = (e) => {
1718
+ let n = go.get(e);
1719
+ if (n) return n;
1720
+ let r = pr$1(e);
1721
+ return go.set(e, r), r;
1722
+ }, mr = (e) => e.some((e) => Array.isArray(e) ? e[0] === rehypeRaw : e === rehypeRaw), pr$1 = (e) => {
1723
+ let n = e.rehypePlugins || uo, r = e.remarkPlugins || uo, i = mr(n) ? r : [...r, mo], a = e.remarkRehypeOptions ? {
1724
+ ...fo,
1725
+ ...e.remarkRehypeOptions
1726
+ } : fo;
1727
+ return unified().use(remarkParse).use(i).use(remarkRehype, a).use(n);
1728
+ }, bo = (e) => e, ur = (e, n, r, i) => {
1729
+ r ? e.children.splice(n, 1) : e.children[n] = {
1730
+ type: "text",
1731
+ value: i
1732
+ };
1733
+ }, fr = (e, n) => {
1734
+ for (let r in urlAttributes) if (Object.hasOwn(urlAttributes, r) && Object.hasOwn(e.properties, r)) {
1735
+ let i = e.properties[r], a = urlAttributes[r];
1736
+ (a === null || a.includes(e.tagName)) && (e.properties[r] = n(String(i || ""), r, e) ?? void 0);
1737
+ }
1738
+ }, gr = (e, n, r, i, a, o) => {
1739
+ let s = !1;
1740
+ return i ? s = !i.includes(e.tagName) : a && (s = a.includes(e.tagName)), !s && o && typeof n == "number" && (s = !o(e, n, r)), s;
1741
+ }, br = (e, n) => {
1742
+ let { allowElement: i, allowedElements: a, disallowedElements: o, skipHtml: s, unwrapDisallowed: c, urlTransform: l } = n;
1743
+ if (i || a || o || s || l) {
1744
+ let n = l || bo;
1745
+ visit(e, (e, r, l) => {
1746
+ if (e.type === "raw" && l && typeof r == "number") return ur(l, r, s, e.value), r;
1747
+ if (e.type === "element" && (fr(e, n), gr(e, r, l, a, o, i) && l && typeof r == "number")) return c && e.children ? l.children.splice(r, 1, ...e.children) : l.children.splice(r, 1), r;
1748
+ });
1749
+ }
1750
+ return toJsxRuntime(e, {
1751
+ Fragment: Fragment$1,
1752
+ components: n.components,
1753
+ ignoreInvalidStyle: !0,
1754
+ jsx,
1755
+ jsxs,
1756
+ passKeys: !0,
1757
+ passNode: !0
1758
+ });
1759
+ }, yr = /\[\^[\w-]{1,200}\](?!:)/, wr = /\[\^[\w-]{1,200}\]:/, kr = /<(\w+)[\s>]/, Cr = new Set([
1760
+ "area",
1761
+ "base",
1762
+ "br",
1763
+ "col",
1764
+ "embed",
1765
+ "hr",
1766
+ "img",
1767
+ "input",
1768
+ "link",
1769
+ "meta",
1770
+ "param",
1771
+ "source",
1772
+ "track",
1773
+ "wbr"
1774
+ ]), ho = /* @__PURE__ */ new Map(), yo = /* @__PURE__ */ new Map(), vr = (e) => {
1775
+ let n = e.toLowerCase(), r = ho.get(n);
1776
+ if (r) return r;
1777
+ let i = RegExp(`<${n}(?=[\\s>/])[^>]*>`, "gi");
1778
+ return ho.set(n, i), i;
1779
+ }, xr = (e) => {
1780
+ let n = e.toLowerCase(), r = yo.get(n);
1781
+ if (r) return r;
1782
+ let i = RegExp(`</${n}(?=[\\s>])[^>]*>`, "gi");
1783
+ return yo.set(n, i), i;
1784
+ }, wo = (e, n) => {
1785
+ if (Cr.has(n.toLowerCase())) return 0;
1786
+ let r = e.match(vr(n));
1787
+ if (!r) return 0;
1788
+ let i = 0;
1789
+ for (let e of r) e.trimEnd().endsWith("/>") || (i += 1);
1790
+ return i;
1791
+ }, ko = (e, n) => {
1792
+ let r = e.match(xr(n));
1793
+ return r ? r.length : 0;
1794
+ }, Pr = (e) => {
1795
+ let n = 0;
1796
+ for (let r = 0; r < e.length - 1; r += 1) e[r] === "$" && e[r + 1] === "$" && (n += 1, r += 1);
1797
+ return n;
1798
+ }, We = (e) => {
1799
+ let n = yr.test(e), r = wr.test(e);
1800
+ if (n || r) return [e];
1801
+ let i = x.lex(e, { gfm: !0 }), a = [], o = [], s = !1;
1802
+ for (let e of i) {
1803
+ let n = e.raw, r = a.length;
1804
+ if (o.length > 0) {
1805
+ a[r - 1] += n;
1806
+ let e = o.at(-1), i = wo(n, e), s = ko(n, e);
1807
+ for (let n = 0; n < i; n += 1) o.push(e);
1808
+ for (let n = 0; n < s; n += 1) o.length > 0 && o.at(-1) === e && o.pop();
1809
+ continue;
1810
+ }
1811
+ if (e.type === "html" && e.block) {
1812
+ let e = n.match(kr);
1813
+ if (e) {
1814
+ let r = e[1];
1815
+ wo(n, r) > ko(n, r) && o.push(r);
1816
+ }
1817
+ }
1818
+ if (r > 0 && !s) {
1819
+ let e = a[r - 1];
1820
+ if (Pr(e) % 2 == 1) {
1821
+ a[r - 1] = e + n;
1822
+ continue;
1823
+ }
1824
+ }
1825
+ a.push(n), e.type !== "space" && (s = e.type === "code");
1826
+ }
1827
+ return a;
1828
+ }, Co = (e, n) => {
1829
+ if (!n.length) return e;
1830
+ let r = e;
1831
+ for (let e of n) {
1832
+ let n = RegExp(`(<${e}(?=[\\s>/])[^>]*>)([\\s\\S]*?)(</${e}\\s*>)`, "gi");
1833
+ r = r.replace(n, (e, n, r, i) => n + r.replace(/\n\n/g, "\n<!---->\n") + i);
1834
+ }
1835
+ return r;
1836
+ }, Br = /^[ \t]*<[\w!/?-]/, Dr = /(^|\n)[ \t]{4,}(?=<[\w!/?-])/g, Or = (e) => typeof e != "string" || e.length === 0 || !Br.test(e) ? e : e.replace(Dr, "$1"), ve = {
1837
+ ...defaultSchema,
1838
+ protocols: {
1839
+ ...defaultSchema.protocols,
1840
+ href: [...defaultSchema.protocols?.href ?? [], "tel"]
1841
+ }
1842
+ }, Fe = {
1843
+ raw: rehypeRaw,
1844
+ sanitize: [rehypeSanitize, ve],
1845
+ harden: [harden, {
1846
+ allowedImagePrefixes: ["*"],
1847
+ allowedLinkPrefixes: ["*"],
1848
+ allowedProtocols: ["*"],
1849
+ defaultOrigin: void 0,
1850
+ allowDataImages: !0
1851
+ }]
1852
+ }, Vr = { gfm: [remarkGfm, {}] }, vo = Object.values(Fe), Ar = Object.values(Vr), jr = {
1853
+ block: " ▋",
1854
+ circle: " ●"
1855
+ }, R = createContext({
1856
+ shikiTheme: ["github-light", "github-dark"],
1857
+ controls: !0,
1858
+ isAnimating: !1,
1859
+ mode: "streaming",
1860
+ mermaid: void 0,
1861
+ linkSafety: { enabled: !0 }
1862
+ }), No = memo(({ content: e, shouldParseIncompleteMarkdown: n, shouldNormalizeHtmlIndentation: r, index: i, isIncomplete: a, ...o }) => {
1863
+ let s = typeof e == "string" && r ? Or(e) : e;
1864
+ return jsx(Re.Provider, {
1865
+ value: a,
1866
+ children: jsx(Ze, {
1867
+ ...o,
1868
+ children: s
1869
+ })
1870
+ });
1871
+ }, (e, n) => {
1872
+ if (e.content !== n.content || e.shouldNormalizeHtmlIndentation !== n.shouldNormalizeHtmlIndentation || e.index !== n.index || e.isIncomplete !== n.isIncomplete) return !1;
1873
+ if (e.components !== n.components) {
1874
+ let r = Object.keys(e.components || {}), i = Object.keys(n.components || {});
1875
+ if (r.length !== i.length || r.some((r) => e.components?.[r] !== n.components?.[r])) return !1;
1876
+ }
1877
+ return !(e.rehypePlugins !== n.rehypePlugins || e.remarkPlugins !== n.remarkPlugins);
1878
+ });
1879
+ No.displayName = "Block";
1880
+ var qr = ["github-light", "github-dark"], _r = memo(({ children: e, mode: n = "streaming", parseIncompleteMarkdown: r = !0, normalizeHtmlIndentation: i = !1, components: a, rehypePlugins: o = vo, remarkPlugins: s = Ar, className: u, shikiTheme: d = qr, mermaid: p, controls: m = !0, isAnimating: h = !1, animated: g, BlockComponent: _ = No, parseMarkdownIntoBlocksFn: v = We, caret: y, plugins: b, remend: S, linkSafety: C = { enabled: !0 }, allowedTags: w, ...T }) => {
1881
+ let O = useId(), [A, j] = useTransition(), M = useMemo(() => w ? Object.keys(w) : [], [w]), P = useMemo(() => {
1882
+ if (typeof e != "string") return "";
1883
+ let i = n === "streaming" && r ? pr(e, S) : e;
1884
+ return M.length > 0 && (i = Co(i, M)), i;
1885
+ }, [
1886
+ e,
1887
+ n,
1888
+ r,
1889
+ S,
1890
+ M
1891
+ ]), F = useMemo(() => v(P), [P, v]), [I, L] = useState(F);
1892
+ useEffect(() => {
1893
+ n === "streaming" ? j(() => {
1894
+ L(F);
1895
+ }) : L(F);
1896
+ }, [F, n]);
1897
+ let z = n === "streaming" ? I : F, B = useMemo(() => z.map((e, n) => `${O}-${n}`), [z.length, O]), V = useMemo(() => g ? g === !0 ? Q() : Q(g) : null, [g]), H = useMemo(() => ({
1898
+ shikiTheme: (b?.code)?.getThemes() ?? d,
1899
+ controls: m,
1900
+ isAnimating: h,
1901
+ mode: n,
1902
+ mermaid: p,
1903
+ linkSafety: C
1904
+ }), [
1905
+ d,
1906
+ m,
1907
+ h,
1908
+ n,
1909
+ p,
1910
+ C,
1911
+ b?.code
1912
+ ]), U = useMemo(() => ({
1913
+ ...lo,
1914
+ ...a
1915
+ }), [a]), W = useMemo(() => {
1916
+ let e = [];
1917
+ return b != null && b.cjk && (e = [...e, ...b.cjk.remarkPluginsBefore]), e = [...e, ...s], b != null && b.cjk && (e = [...e, ...b.cjk.remarkPluginsAfter]), b != null && b.math && (e = [...e, b.math.remarkPlugin]), e;
1918
+ }, [
1919
+ s,
1920
+ b?.math,
1921
+ b?.cjk
1922
+ ]), Y = useMemo(() => {
1923
+ let e = o;
1924
+ if (w && Object.keys(w).length > 0 && o === vo) {
1925
+ let n = {
1926
+ ...ve,
1927
+ tagNames: [...ve.tagNames ?? [], ...Object.keys(w)],
1928
+ attributes: {
1929
+ ...ve.attributes,
1930
+ ...w
1931
+ }
1932
+ };
1933
+ e = [
1934
+ Fe.raw,
1935
+ [rehypeSanitize, n],
1936
+ Fe.harden
1937
+ ];
1938
+ }
1939
+ return b != null && b.math && (e = [...e, b.math.rehypePlugin]), V && h && (e = [...e, V.rehypePlugin]), e;
1940
+ }, [
1941
+ o,
1942
+ b?.math,
1943
+ V,
1944
+ h,
1945
+ w
1946
+ ]), X = useMemo(() => {
1947
+ if (!h || z.length === 0) return !1;
1948
+ let e = z.at(-1);
1949
+ return ze(e) || co(e);
1950
+ }, [h, z]), $ = useMemo(() => y && h && !X ? { "--streamdown-caret": `"${jr[y]}"` } : void 0, [
1951
+ y,
1952
+ h,
1953
+ X
1954
+ ]);
1955
+ return n === "static" ? jsx(pe.Provider, {
1956
+ value: b ?? null,
1957
+ children: jsx(R.Provider, {
1958
+ value: H,
1959
+ children: jsx("div", {
1960
+ className: f("space-y-4 whitespace-normal *:first:mt-0 *:last:mb-0", u),
1961
+ children: jsx(Ze, {
1962
+ components: U,
1963
+ rehypePlugins: Y,
1964
+ remarkPlugins: W,
1965
+ ...T,
1966
+ children: P
1967
+ })
1968
+ })
1969
+ })
1970
+ }) : jsx(pe.Provider, {
1971
+ value: b ?? null,
1972
+ children: jsx(R.Provider, {
1973
+ value: H,
1974
+ children: jsxs("div", {
1975
+ className: f("space-y-4 whitespace-normal *:first:mt-0 *:last:mb-0", y && !X ? "*:last:after:inline *:last:after:align-baseline *:last:after:content-[var(--streamdown-caret)]" : null, u),
1976
+ style: $,
1977
+ children: [z.length === 0 && y && h && jsx("span", {}), z.map((e, n) => {
1978
+ let a = n === z.length - 1;
1979
+ return jsx(_, {
1980
+ components: U,
1981
+ content: e,
1982
+ index: n,
1983
+ isIncomplete: h && a && ze(e),
1984
+ rehypePlugins: Y,
1985
+ remarkPlugins: W,
1986
+ shouldNormalizeHtmlIndentation: i,
1987
+ shouldParseIncompleteMarkdown: r,
1988
+ ...T
1989
+ }, B[n]);
1990
+ })]
1991
+ })
1992
+ })
1993
+ });
1994
+ }, (e, n) => e.children === n.children && e.shikiTheme === n.shikiTheme && e.isAnimating === n.isAnimating && e.animated === n.animated && e.mode === n.mode && e.plugins === n.plugins && e.className === n.className && e.linkSafety === n.linkSafety && e.normalizeHtmlIndentation === n.normalizeHtmlIndentation);
1995
+ _r.displayName = "Streamdown";
1996
+ var So = ({ children: e, className: n, minZoom: r = .5, maxZoom: i = 3, zoomStep: a = .1, showControls: o = !0, initialZoom: s = 1, fullscreen: c = !1 }) => {
1997
+ let l = useRef(null), u = useRef(null), [d, p] = useState(s), [m, h] = useState({
1998
+ x: 0,
1999
+ y: 0
2000
+ }), [g, _] = useState(!1), [v, y] = useState({
2001
+ x: 0,
2002
+ y: 0
2003
+ }), [b, S] = useState({
2004
+ x: 0,
2005
+ y: 0
2006
+ }), C = useCallback((e) => {
2007
+ p((n) => Math.max(r, Math.min(i, n + e)));
2008
+ }, [r, i]), T = useCallback(() => {
2009
+ C(a);
2010
+ }, [C, a]), E = useCallback(() => {
2011
+ C(-a);
2012
+ }, [C, a]), D = useCallback(() => {
2013
+ p(s), h({
2014
+ x: 0,
2015
+ y: 0
2016
+ });
2017
+ }, [s]), k = useCallback((e) => {
2018
+ e.preventDefault(), C(e.deltaY > 0 ? -a : a);
2019
+ }, [C, a]), A = useCallback((e) => {
2020
+ if (e.button !== 0 || e.isPrimary === !1) return;
2021
+ _(!0), y({
2022
+ x: e.clientX,
2023
+ y: e.clientY
2024
+ }), S(m);
2025
+ let n = e.currentTarget;
2026
+ n instanceof HTMLElement && n.setPointerCapture(e.pointerId);
2027
+ }, [m]), j = useCallback((e) => {
2028
+ if (!g) return;
2029
+ e.preventDefault();
2030
+ let n = e.clientX - v.x, r = e.clientY - v.y;
2031
+ h({
2032
+ x: b.x + n,
2033
+ y: b.y + r
2034
+ });
2035
+ }, [
2036
+ g,
2037
+ v,
2038
+ b
2039
+ ]), M = useCallback((e) => {
2040
+ _(!1);
2041
+ let n = e.currentTarget;
2042
+ n instanceof HTMLElement && n.releasePointerCapture(e.pointerId);
2043
+ }, []);
2044
+ return useEffect(() => {
2045
+ let e = l.current;
2046
+ if (e) return e.addEventListener("wheel", k, { passive: !1 }), () => {
2047
+ e.removeEventListener("wheel", k);
2048
+ };
2049
+ }, [k]), useEffect(() => {
2050
+ let e = u.current;
2051
+ if (e && g) return document.body.style.userSelect = "none", e.addEventListener("pointermove", j, { passive: !1 }), e.addEventListener("pointerup", M), e.addEventListener("pointercancel", M), () => {
2052
+ document.body.style.userSelect = "", e.removeEventListener("pointermove", j), e.removeEventListener("pointerup", M), e.removeEventListener("pointercancel", M);
2053
+ };
2054
+ }, [
2055
+ g,
2056
+ j,
2057
+ M
2058
+ ]), jsxs("div", {
2059
+ className: f("relative flex flex-col", c ? "h-full w-full" : "min-h-28 w-full", n),
2060
+ ref: l,
2061
+ style: { cursor: g ? "grabbing" : "grab" },
2062
+ children: [o ? jsxs("div", {
2063
+ className: f("absolute z-10 flex flex-col gap-1 rounded-md border border-border bg-background/80 p-1 supports-[backdrop-filter]:bg-background/70 supports-[backdrop-filter]:backdrop-blur-sm", c ? "bottom-4 left-4" : "bottom-2 left-2"),
2064
+ children: [
2065
+ jsx("button", {
2066
+ className: "flex items-center justify-center rounded p-1.5 text-muted-foreground transition-colors hover:bg-muted hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50",
2067
+ disabled: d >= i,
2068
+ onClick: T,
2069
+ title: "Zoom in",
2070
+ type: "button",
2071
+ children: jsx(lt, { size: 16 })
2072
+ }),
2073
+ jsx("button", {
2074
+ className: "flex items-center justify-center rounded p-1.5 text-muted-foreground transition-colors hover:bg-muted hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50",
2075
+ disabled: d <= r,
2076
+ onClick: E,
2077
+ title: "Zoom out",
2078
+ type: "button",
2079
+ children: jsx(ct, { size: 16 })
2080
+ }),
2081
+ jsx("button", {
2082
+ className: "flex items-center justify-center rounded p-1.5 text-muted-foreground transition-colors hover:bg-muted hover:text-foreground",
2083
+ onClick: D,
2084
+ title: "Reset zoom and pan",
2085
+ type: "button",
2086
+ children: jsx(it, { size: 16 })
2087
+ })
2088
+ ]
2089
+ }) : null, jsx("div", {
2090
+ className: f("flex-1 origin-center transition-transform duration-150 ease-out", c ? "flex h-full w-full items-center justify-center" : "flex w-full items-center justify-center"),
2091
+ onPointerDown: A,
2092
+ ref: u,
2093
+ role: "application",
2094
+ style: {
2095
+ transform: `translate(${m.x}px, ${m.y}px) scale(${d})`,
2096
+ transformOrigin: "center center",
2097
+ touchAction: "none",
2098
+ willChange: "transform"
2099
+ },
2100
+ children: e
2101
+ })]
2102
+ });
2103
+ }, Nt = ({ chart: e, className: n, config: r, fullscreen: i = !1, showControls: a = !0 }) => {
2104
+ let [o, s] = useState(null), [c, l] = useState(!1), [u, d] = useState(""), [p, m] = useState(""), [h, g] = useState(0), { mermaid: _ } = useContext(R), v = G(), y = _?.errorComponent, { shouldRender: b, containerRef: S } = Ge({ immediate: i });
2105
+ if (useEffect(() => {
2106
+ if (b) {
2107
+ if (!v) {
2108
+ s("Mermaid plugin not available. Please add the mermaid plugin to enable diagram rendering.");
2109
+ return;
2110
+ }
2111
+ (async () => {
2112
+ try {
2113
+ s(null), l(!0);
2114
+ let n = v.getMermaid(r), i = e.split("").reduce((e, n) => (e << 5) - e + n.charCodeAt(0) | 0, 0), a = `mermaid-${Math.abs(i)}-${Date.now()}-${Math.random().toString(36).substring(2, 9)}`, { svg: o } = await n.render(a, e);
2115
+ d(o), m(o);
2116
+ } catch (e) {
2117
+ p || u || s(e instanceof Error ? e.message : "Failed to render Mermaid chart");
2118
+ } finally {
2119
+ l(!1);
2120
+ }
2121
+ })();
2122
+ }
2123
+ }, [
2124
+ e,
2125
+ r,
2126
+ h,
2127
+ b,
2128
+ v
2129
+ ]), !(b || u || p)) return jsx("div", {
2130
+ className: f("my-4 min-h-[200px]", n),
2131
+ ref: S
2132
+ });
2133
+ if (c && !u && !p) return jsx("div", {
2134
+ className: f("my-4 flex justify-center p-4", n),
2135
+ ref: S,
2136
+ children: jsxs("div", {
2137
+ className: "flex items-center space-x-2 text-muted-foreground",
2138
+ children: [jsx("div", { className: "h-4 w-4 animate-spin rounded-full border-current border-b-2" }), jsx("span", {
2139
+ className: "text-sm",
2140
+ children: "Loading diagram..."
2141
+ })]
2142
+ })
2143
+ });
2144
+ if (o && !u && !p) return y ? jsx("div", {
2145
+ ref: S,
2146
+ children: jsx(y, {
2147
+ chart: e,
2148
+ error: o,
2149
+ retry: () => g((e) => e + 1)
2150
+ })
2151
+ }) : jsxs("div", {
2152
+ className: f("rounded-md bg-red-50 p-4", n),
2153
+ ref: S,
2154
+ children: [jsxs("p", {
2155
+ className: "font-mono text-red-700 text-sm",
2156
+ children: ["Mermaid Error: ", o]
2157
+ }), jsxs("details", {
2158
+ className: "mt-2",
2159
+ children: [jsx("summary", {
2160
+ className: "cursor-pointer text-red-600 text-xs",
2161
+ children: "Show Code"
2162
+ }), jsx("pre", {
2163
+ className: "mt-2 overflow-x-auto rounded bg-red-100 p-2 text-red-800 text-xs",
2164
+ children: e
2165
+ })]
2166
+ })]
2167
+ });
2168
+ let C = u || p;
2169
+ return jsx("div", {
2170
+ className: f("size-full", n),
2171
+ "data-streamdown": "mermaid",
2172
+ ref: S,
2173
+ children: jsx(So, {
2174
+ className: f(i ? "size-full overflow-hidden" : "overflow-hidden", n),
2175
+ fullscreen: i,
2176
+ maxZoom: 3,
2177
+ minZoom: .5,
2178
+ showControls: a,
2179
+ zoomStep: .1,
2180
+ children: jsx("div", {
2181
+ "aria-label": "Mermaid chart",
2182
+ className: f("flex justify-center", i ? "size-full items-center" : null),
2183
+ dangerouslySetInnerHTML: { __html: C },
2184
+ role: "img"
2185
+ })
2186
+ })
2187
+ });
2188
+ };
2189
+ export { Fe, Ie, Ks, No, Nt, Or, Q, Qe, R, Vr, We, _r, bo };