@loopstack/loopstack-studio 0.25.0 → 0.25.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 (196) hide show
  1. package/dist/components/ai-elements/message.js +2 -2
  2. package/dist/components/ai-elements/reasoning.js +9 -9
  3. package/dist/loopstack-studio.css +1 -1
  4. package/dist/node_modules/@chevrotain/gast/lib/src/helpers.js +2 -5
  5. package/dist/node_modules/@chevrotain/gast/lib/src/model.js +69 -72
  6. package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/{architecture-7HQA4BMR.js → architecture-YZFGNWBL.js} +2 -2
  7. package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/{chunk-TQ3KTPDO.js → chunk-2KRD3SAO.js} +1 -1
  8. package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/{chunk-4F5CHEZ2.js → chunk-67CJDMHE.js} +1 -1
  9. package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/{chunk-UMXZTB3W.js → chunk-7N4EOEYR.js} +5 -2
  10. package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/{chunk-PL6DKKU2.js → chunk-AA7GKIK3.js} +1 -1
  11. package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/chunk-CIAEETIT.js +23 -0
  12. package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/{chunk-SJTYNZTY.js → chunk-FOC6F5B3.js} +1 -1
  13. package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/chunk-K5T4RW27.js +1197 -0
  14. package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/{chunk-FRFDVMJY.js → chunk-KGLVRYIC.js} +1 -1
  15. package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/{chunk-B2363JML.js → chunk-LIHQZDEY.js} +1 -1
  16. package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/chunk-ORNJ4GCN.js +29 -0
  17. package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/{gitGraph-G5XIXVHT.js → gitGraph-7Q5UKJZL.js} +2 -2
  18. package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/info-OMHHGYJF.js +3 -0
  19. package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/packet-4T2RLAQJ.js +3 -0
  20. package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/pie-ZZUOXDRM.js +3 -0
  21. package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/radar-PYXPWWZC.js +3 -0
  22. package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/treeView-SZITEDCU.js +3 -0
  23. package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/treemap-W4RFUUIX.js +3 -0
  24. package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/wardley-RL74JXVD.js +3 -0
  25. package/dist/node_modules/@mermaid-js/parser/dist/mermaid-parser.core.js +27 -17
  26. package/dist/node_modules/@upsetjs/venn.js/build/venn.esm.js +903 -0
  27. package/dist/node_modules/@xyflow/react/dist/esm/index.js +76 -75
  28. package/dist/node_modules/@xyflow/system/dist/esm/index.js +30 -28
  29. package/dist/node_modules/chevrotain/lib/src/parse/cst/cst_visitor.js +31 -40
  30. package/dist/node_modules/chevrotain/lib/src/parse/errors_public.js +23 -26
  31. package/dist/node_modules/chevrotain/lib/src/parse/exceptions_public.js +12 -13
  32. package/dist/node_modules/chevrotain/lib/src/parse/grammar/checks.js +181 -205
  33. package/dist/node_modules/chevrotain/lib/src/parse/grammar/first.js +11 -13
  34. package/dist/node_modules/chevrotain/lib/src/parse/grammar/follow.js +12 -13
  35. package/dist/node_modules/chevrotain/lib/src/parse/grammar/gast/gast_resolver_public.js +8 -9
  36. package/dist/node_modules/chevrotain/lib/src/parse/grammar/interpreter.js +176 -183
  37. package/dist/node_modules/chevrotain/lib/src/parse/grammar/llk_lookahead.js +17 -19
  38. package/dist/node_modules/chevrotain/lib/src/parse/grammar/lookahead.js +153 -160
  39. package/dist/node_modules/chevrotain/lib/src/parse/grammar/resolver.js +10 -12
  40. package/dist/node_modules/chevrotain/lib/src/parse/grammar/rest.js +36 -38
  41. package/dist/node_modules/chevrotain/lib/src/parse/parser/parser.js +37 -45
  42. package/dist/node_modules/chevrotain/lib/src/parse/parser/traits/error_handler.js +12 -14
  43. package/dist/node_modules/chevrotain/lib/src/parse/parser/traits/gast_recorder.js +80 -86
  44. package/dist/node_modules/chevrotain/lib/src/parse/parser/traits/lexer_adapter.js +6 -2
  45. package/dist/node_modules/chevrotain/lib/src/parse/parser/traits/looksahead.js +39 -41
  46. package/dist/node_modules/chevrotain/lib/src/parse/parser/traits/perf_tracer.js +7 -8
  47. package/dist/node_modules/chevrotain/lib/src/parse/parser/traits/recognizer_api.js +69 -70
  48. package/dist/node_modules/chevrotain/lib/src/parse/parser/traits/recognizer_engine.js +215 -205
  49. package/dist/node_modules/chevrotain/lib/src/parse/parser/traits/recoverable.js +76 -76
  50. package/dist/node_modules/chevrotain/lib/src/parse/parser/traits/tree_builder.js +29 -39
  51. package/dist/node_modules/chevrotain/lib/src/scan/lexer.js +252 -274
  52. package/dist/node_modules/chevrotain/lib/src/scan/lexer_public.js +93 -106
  53. package/dist/node_modules/chevrotain/lib/src/scan/reg_exp.js +61 -61
  54. package/dist/node_modules/chevrotain/lib/src/scan/tokens.js +31 -41
  55. package/dist/node_modules/chevrotain/lib/src/scan/tokens_public.js +15 -18
  56. package/dist/node_modules/chevrotain-allstar/lib/all-star-lookahead.js +226 -226
  57. package/dist/node_modules/chevrotain-allstar/lib/atn.js +17 -17
  58. package/dist/node_modules/cytoscape/dist/cytoscape.esm.js +17 -14
  59. package/dist/node_modules/dagre-d3-es/src/dagre/greedy-fas.js +19 -19
  60. package/dist/node_modules/dagre-d3-es/src/dagre/layout.js +48 -48
  61. package/dist/node_modules/dagre-d3-es/src/dagre/nesting-graph.js +9 -9
  62. package/dist/node_modules/dagre-d3-es/src/dagre/order/cross-count.js +3 -3
  63. package/dist/node_modules/dagre-d3-es/src/dagre/order/index.js +11 -11
  64. package/dist/node_modules/dagre-d3-es/src/dagre/order/init-order.js +4 -4
  65. package/dist/node_modules/dagre-d3-es/src/dagre/order/resolve-conflicts.js +4 -4
  66. package/dist/node_modules/dagre-d3-es/src/dagre/order/sort-subgraph.js +8 -8
  67. package/dist/node_modules/dagre-d3-es/src/dagre/order/sort.js +5 -5
  68. package/dist/node_modules/dagre-d3-es/src/dagre/position/bk.js +61 -61
  69. package/dist/node_modules/dagre-d3-es/src/dagre/position/index.js +1 -1
  70. package/dist/node_modules/dagre-d3-es/src/dagre/rank/network-simplex.js +25 -25
  71. package/dist/node_modules/dagre-d3-es/src/dagre/rank/util.js +8 -8
  72. package/dist/node_modules/dagre-d3-es/src/dagre/util.js +48 -48
  73. package/dist/node_modules/dagre-d3-es/src/graphlib/graph.js +109 -109
  74. package/dist/node_modules/dagre-d3-es/src/graphlib/json.js +17 -17
  75. package/dist/node_modules/dompurify/dist/purify.es.js +67 -67
  76. package/dist/node_modules/katex/dist/katex.js +1256 -1209
  77. package/dist/node_modules/khroma/dist/methods/transparentize.js +3 -0
  78. package/dist/node_modules/lodash-es/_baseClone.js +2 -2
  79. package/dist/node_modules/lodash-es/_baseMatchesProperty.js +6 -6
  80. package/dist/node_modules/lodash-es/_baseToString.js +1 -1
  81. package/dist/node_modules/lodash-es/_baseUniq.js +1 -1
  82. package/dist/node_modules/lodash-es/_createSet.js +1 -1
  83. package/dist/node_modules/lodash-es/_getAllKeys.js +2 -2
  84. package/dist/node_modules/lodash-es/_getAllKeysIn.js +1 -1
  85. package/dist/node_modules/lodash-es/findIndex.js +2 -2
  86. package/dist/node_modules/lodash-es/flatMap.js +1 -1
  87. package/dist/node_modules/lodash-es/forEach.js +1 -1
  88. package/dist/node_modules/lodash-es/max.js +1 -1
  89. package/dist/node_modules/lodash-es/min.js +1 -1
  90. package/dist/node_modules/lodash-es/minBy.js +1 -1
  91. package/dist/node_modules/lodash-es/reduce.js +1 -1
  92. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/architectureDiagram-Q4EWVU46.js +691 -0
  93. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{blockDiagram-VD42YOAC.js → blockDiagram-DXYQGD6D.js} +183 -157
  94. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{c4Diagram-YG6GDRKO.js → c4Diagram-AHTNJAMY.js} +65 -63
  95. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-336JU56O.js +47 -0
  96. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{chunk-EXTU4WIE.js → chunk-426QAEUC.js} +1 -1
  97. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{chunk-B4BG7PRW.js → chunk-4TB4RGXK.js} +533 -393
  98. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-5FUZZQ4R.js +3638 -0
  99. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{chunk-S3R3BYOJ.js → chunk-5PVQY5BW.js} +1 -1
  100. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{chunk-HN2XXSSU.js → chunk-BSJP7CBP.js} +20 -14
  101. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{chunk-QN33PNHL.js → chunk-EDXVE4YY.js} +1 -1
  102. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-ENJZ2VHE.js +568 -0
  103. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-ICPOFSXX.js +2320 -0
  104. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{chunk-DI55MBZ5.js → chunk-OYMX7WX6.js} +35 -21
  105. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-U2HBQHQK.js +272 -0
  106. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{chunk-ATLVNIR6.js → chunk-X2U36JSP.js} +1 -1
  107. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{chunk-MI3HLSF2.js → chunk-XPW4576I.js} +11 -7
  108. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-YZCP3GAM.js +60 -0
  109. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-ZZ45TVLE.js +30 -0
  110. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{classDiagram-2ON5EDUG.js → classDiagram-6PBFFD2Q.js} +12 -11
  111. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{classDiagram-v2-WZHVMYZB.js → classDiagram-v2-HSJHXN6E.js} +12 -11
  112. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{dagre-6UL2VRFP.js → dagre-KV5264BT.js} +8 -8
  113. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/diagram-5BDNPKRD.js +99 -0
  114. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{diagram-PSM6KHXK.js → diagram-G4DWMVQ6.js} +20 -23
  115. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/diagram-MMDJMWI5.js +211 -0
  116. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{diagram-S2PKOQOG.js → diagram-TYMM5635.js} +4 -4
  117. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{erDiagram-Q2GNP2WA.js → erDiagram-SMLLAGMA.js} +486 -386
  118. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{flowDiagram-NV44I4VS.js → flowDiagram-DWJPFMVM.js} +915 -898
  119. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{ganttDiagram-JELNMOA3.js → ganttDiagram-T4ZO3ILL.js} +59 -29
  120. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/gitGraphDiagram-UUTBAWPF.js +728 -0
  121. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/infoDiagram-42DDH7IO.js +17 -0
  122. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/ishikawaDiagram-UXIWVN3A.js +714 -0
  123. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{journeyDiagram-XKPGCS4Q.js → journeyDiagram-VCZTEJTY.js} +32 -32
  124. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{kanban-definition-3W4ZIXB7.js → kanban-definition-6JOO6SKY.js} +13 -9
  125. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{mindmap-definition-VGOIOE7T.js → mindmap-definition-QFDTVHPH.js} +105 -59
  126. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/pieDiagram-DEJITSTG.js +117 -0
  127. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{quadrantDiagram-AYHSOK5B.js → quadrantDiagram-34T5L4WZ.js} +1 -1
  128. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{requirementDiagram-UZGBJVZJ.js → requirementDiagram-MS252O5E.js} +49 -19
  129. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{sankeyDiagram-TZEHDZUN.js → sankeyDiagram-XADWPNL6.js} +1 -1
  130. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/sequenceDiagram-FGHM5R23.js +4155 -0
  131. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{stateDiagram-FKZM4ZOC.js → stateDiagram-FHFEXIEX.js} +12 -12
  132. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{stateDiagram-v2-4FDKWEC3.js → stateDiagram-v2-QKLJ7IA2.js} +11 -11
  133. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/timeline-definition-GMOUNBTQ.js +1071 -0
  134. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/vennDiagram-DHZGUBPP.js +959 -0
  135. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/wardleyDiagram-NUSXRM2D.js +574 -0
  136. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{xychartDiagram-PRI3JC2R.js → xychartDiagram-5P7HB3ND.js} +38 -35
  137. package/dist/node_modules/mermaid/dist/mermaid.core.js +235 -192
  138. package/dist/node_modules/nanoid/url-alphabet/index.js +1 -1
  139. package/dist/node_modules/remend/dist/index.js +333 -264
  140. package/dist/node_modules/streamdown/dist/chunk-BO2N2NFS.js +2498 -0
  141. package/dist/node_modules/streamdown/dist/highlighted-body-OFNGDK62.js +35 -0
  142. package/dist/node_modules/streamdown/dist/index.js +1 -1
  143. package/dist/node_modules/streamdown/dist/mermaid-GHXKKRXX.js +3 -0
  144. package/dist/node_modules/streamdown/node_modules/marked/lib/marked.esm.js +672 -667
  145. package/dist/pages/DashboardPage.js +3 -3
  146. package/package.json +2 -2
  147. package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/chunk-TCCFYFTB.js +0 -787
  148. package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/info-VBDWY6EO.js +0 -3
  149. package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/packet-DYOGHKS2.js +0 -3
  150. package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/pie-VRWISCQL.js +0 -3
  151. package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/radar-ZZBFDIW7.js +0 -3
  152. package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/treemap-GDKQZRPO.js +0 -3
  153. package/dist/node_modules/chevrotain/lib/src/parse/parser/traits/context_assist.js +0 -16
  154. package/dist/node_modules/lodash-es/_arrayAggregator.js +0 -9
  155. package/dist/node_modules/lodash-es/_arrayEvery.js +0 -6
  156. package/dist/node_modules/lodash-es/_baseAggregator.js +0 -8
  157. package/dist/node_modules/lodash-es/_baseDifference.js +0 -22
  158. package/dist/node_modules/lodash-es/_baseEvery.js +0 -9
  159. package/dist/node_modules/lodash-es/_baseIsRegExp.js +0 -8
  160. package/dist/node_modules/lodash-es/_baseSlice.js +0 -8
  161. package/dist/node_modules/lodash-es/_baseSome.js +0 -9
  162. package/dist/node_modules/lodash-es/_createAggregator.js +0 -12
  163. package/dist/node_modules/lodash-es/assign.js +0 -14
  164. package/dist/node_modules/lodash-es/compact.js +0 -9
  165. package/dist/node_modules/lodash-es/difference.js +0 -8
  166. package/dist/node_modules/lodash-es/drop.js +0 -8
  167. package/dist/node_modules/lodash-es/dropRight.js +0 -8
  168. package/dist/node_modules/lodash-es/every.js +0 -11
  169. package/dist/node_modules/lodash-es/groupBy.js +0 -6
  170. package/dist/node_modules/lodash-es/head.js +0 -5
  171. package/dist/node_modules/lodash-es/includes.js +0 -13
  172. package/dist/node_modules/lodash-es/indexOf.js +0 -11
  173. package/dist/node_modules/lodash-es/isRegExp.js +0 -5
  174. package/dist/node_modules/lodash-es/negate.js +0 -16
  175. package/dist/node_modules/lodash-es/pickBy.js +0 -15
  176. package/dist/node_modules/lodash-es/reject.js +0 -10
  177. package/dist/node_modules/lodash-es/some.js +0 -11
  178. package/dist/node_modules/lodash-es/uniq.js +0 -6
  179. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/architectureDiagram-VXUJARFQ.js +0 -673
  180. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-ABZYJK2D.js +0 -1547
  181. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-CVBHYZKI.js +0 -10
  182. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-DR5Q36YT.js +0 -135
  183. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-JA3XYJ7Z.js +0 -247
  184. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-JZLCHNYA.js +0 -3516
  185. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-N4CR4FBY.js +0 -39
  186. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-QXUST7PY.js +0 -497
  187. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-TZMSLE5B.js +0 -55
  188. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/diagram-QEK2KX5R.js +0 -211
  189. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/gitGraphDiagram-V2S2FVAM.js +0 -621
  190. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/infoDiagram-HS3SLOUP.js +0 -18
  191. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/pieDiagram-ADFJNKIX.js +0 -117
  192. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/sequenceDiagram-WL72ISMW.js +0 -3560
  193. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/timeline-definition-IT6M3QCI.js +0 -833
  194. package/dist/node_modules/streamdown/dist/chunk-RLXIAIE6.js +0 -2189
  195. package/dist/node_modules/streamdown/dist/highlighted-body-B3W2YXNL.js +0 -33
  196. package/dist/node_modules/streamdown/dist/mermaid-3ZIDBTTL.js +0 -3
@@ -1,2189 +0,0 @@
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 };