@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.
- package/dist/components/ai-elements/message.js +2 -2
- package/dist/components/ai-elements/reasoning.js +9 -9
- package/dist/loopstack-studio.css +1 -1
- package/dist/node_modules/@chevrotain/gast/lib/src/helpers.js +2 -5
- package/dist/node_modules/@chevrotain/gast/lib/src/model.js +69 -72
- package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/{architecture-7HQA4BMR.js → architecture-YZFGNWBL.js} +2 -2
- package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/{chunk-TQ3KTPDO.js → chunk-2KRD3SAO.js} +1 -1
- package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/{chunk-4F5CHEZ2.js → chunk-67CJDMHE.js} +1 -1
- package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/{chunk-UMXZTB3W.js → chunk-7N4EOEYR.js} +5 -2
- package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/{chunk-PL6DKKU2.js → chunk-AA7GKIK3.js} +1 -1
- package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/chunk-CIAEETIT.js +23 -0
- package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/{chunk-SJTYNZTY.js → chunk-FOC6F5B3.js} +1 -1
- package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/chunk-K5T4RW27.js +1197 -0
- package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/{chunk-FRFDVMJY.js → chunk-KGLVRYIC.js} +1 -1
- package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/{chunk-B2363JML.js → chunk-LIHQZDEY.js} +1 -1
- package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/chunk-ORNJ4GCN.js +29 -0
- package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/{gitGraph-G5XIXVHT.js → gitGraph-7Q5UKJZL.js} +2 -2
- package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/info-OMHHGYJF.js +3 -0
- package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/packet-4T2RLAQJ.js +3 -0
- package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/pie-ZZUOXDRM.js +3 -0
- package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/radar-PYXPWWZC.js +3 -0
- package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/treeView-SZITEDCU.js +3 -0
- package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/treemap-W4RFUUIX.js +3 -0
- package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/wardley-RL74JXVD.js +3 -0
- package/dist/node_modules/@mermaid-js/parser/dist/mermaid-parser.core.js +27 -17
- package/dist/node_modules/@upsetjs/venn.js/build/venn.esm.js +903 -0
- package/dist/node_modules/@xyflow/react/dist/esm/index.js +76 -75
- package/dist/node_modules/@xyflow/system/dist/esm/index.js +30 -28
- package/dist/node_modules/chevrotain/lib/src/parse/cst/cst_visitor.js +31 -40
- package/dist/node_modules/chevrotain/lib/src/parse/errors_public.js +23 -26
- package/dist/node_modules/chevrotain/lib/src/parse/exceptions_public.js +12 -13
- package/dist/node_modules/chevrotain/lib/src/parse/grammar/checks.js +181 -205
- package/dist/node_modules/chevrotain/lib/src/parse/grammar/first.js +11 -13
- package/dist/node_modules/chevrotain/lib/src/parse/grammar/follow.js +12 -13
- package/dist/node_modules/chevrotain/lib/src/parse/grammar/gast/gast_resolver_public.js +8 -9
- package/dist/node_modules/chevrotain/lib/src/parse/grammar/interpreter.js +176 -183
- package/dist/node_modules/chevrotain/lib/src/parse/grammar/llk_lookahead.js +17 -19
- package/dist/node_modules/chevrotain/lib/src/parse/grammar/lookahead.js +153 -160
- package/dist/node_modules/chevrotain/lib/src/parse/grammar/resolver.js +10 -12
- package/dist/node_modules/chevrotain/lib/src/parse/grammar/rest.js +36 -38
- package/dist/node_modules/chevrotain/lib/src/parse/parser/parser.js +37 -45
- package/dist/node_modules/chevrotain/lib/src/parse/parser/traits/error_handler.js +12 -14
- package/dist/node_modules/chevrotain/lib/src/parse/parser/traits/gast_recorder.js +80 -86
- package/dist/node_modules/chevrotain/lib/src/parse/parser/traits/lexer_adapter.js +6 -2
- package/dist/node_modules/chevrotain/lib/src/parse/parser/traits/looksahead.js +39 -41
- package/dist/node_modules/chevrotain/lib/src/parse/parser/traits/perf_tracer.js +7 -8
- package/dist/node_modules/chevrotain/lib/src/parse/parser/traits/recognizer_api.js +69 -70
- package/dist/node_modules/chevrotain/lib/src/parse/parser/traits/recognizer_engine.js +215 -205
- package/dist/node_modules/chevrotain/lib/src/parse/parser/traits/recoverable.js +76 -76
- package/dist/node_modules/chevrotain/lib/src/parse/parser/traits/tree_builder.js +29 -39
- package/dist/node_modules/chevrotain/lib/src/scan/lexer.js +252 -274
- package/dist/node_modules/chevrotain/lib/src/scan/lexer_public.js +93 -106
- package/dist/node_modules/chevrotain/lib/src/scan/reg_exp.js +61 -61
- package/dist/node_modules/chevrotain/lib/src/scan/tokens.js +31 -41
- package/dist/node_modules/chevrotain/lib/src/scan/tokens_public.js +15 -18
- package/dist/node_modules/chevrotain-allstar/lib/all-star-lookahead.js +226 -226
- package/dist/node_modules/chevrotain-allstar/lib/atn.js +17 -17
- package/dist/node_modules/cytoscape/dist/cytoscape.esm.js +17 -14
- package/dist/node_modules/dagre-d3-es/src/dagre/greedy-fas.js +19 -19
- package/dist/node_modules/dagre-d3-es/src/dagre/layout.js +48 -48
- package/dist/node_modules/dagre-d3-es/src/dagre/nesting-graph.js +9 -9
- package/dist/node_modules/dagre-d3-es/src/dagre/order/cross-count.js +3 -3
- package/dist/node_modules/dagre-d3-es/src/dagre/order/index.js +11 -11
- package/dist/node_modules/dagre-d3-es/src/dagre/order/init-order.js +4 -4
- package/dist/node_modules/dagre-d3-es/src/dagre/order/resolve-conflicts.js +4 -4
- package/dist/node_modules/dagre-d3-es/src/dagre/order/sort-subgraph.js +8 -8
- package/dist/node_modules/dagre-d3-es/src/dagre/order/sort.js +5 -5
- package/dist/node_modules/dagre-d3-es/src/dagre/position/bk.js +61 -61
- package/dist/node_modules/dagre-d3-es/src/dagre/position/index.js +1 -1
- package/dist/node_modules/dagre-d3-es/src/dagre/rank/network-simplex.js +25 -25
- package/dist/node_modules/dagre-d3-es/src/dagre/rank/util.js +8 -8
- package/dist/node_modules/dagre-d3-es/src/dagre/util.js +48 -48
- package/dist/node_modules/dagre-d3-es/src/graphlib/graph.js +109 -109
- package/dist/node_modules/dagre-d3-es/src/graphlib/json.js +17 -17
- package/dist/node_modules/dompurify/dist/purify.es.js +67 -67
- package/dist/node_modules/katex/dist/katex.js +1256 -1209
- package/dist/node_modules/khroma/dist/methods/transparentize.js +3 -0
- package/dist/node_modules/lodash-es/_baseClone.js +2 -2
- package/dist/node_modules/lodash-es/_baseMatchesProperty.js +6 -6
- package/dist/node_modules/lodash-es/_baseToString.js +1 -1
- package/dist/node_modules/lodash-es/_baseUniq.js +1 -1
- package/dist/node_modules/lodash-es/_createSet.js +1 -1
- package/dist/node_modules/lodash-es/_getAllKeys.js +2 -2
- package/dist/node_modules/lodash-es/_getAllKeysIn.js +1 -1
- package/dist/node_modules/lodash-es/findIndex.js +2 -2
- package/dist/node_modules/lodash-es/flatMap.js +1 -1
- package/dist/node_modules/lodash-es/forEach.js +1 -1
- package/dist/node_modules/lodash-es/max.js +1 -1
- package/dist/node_modules/lodash-es/min.js +1 -1
- package/dist/node_modules/lodash-es/minBy.js +1 -1
- package/dist/node_modules/lodash-es/reduce.js +1 -1
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/architectureDiagram-Q4EWVU46.js +691 -0
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{blockDiagram-VD42YOAC.js → blockDiagram-DXYQGD6D.js} +183 -157
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{c4Diagram-YG6GDRKO.js → c4Diagram-AHTNJAMY.js} +65 -63
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-336JU56O.js +47 -0
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{chunk-EXTU4WIE.js → chunk-426QAEUC.js} +1 -1
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{chunk-B4BG7PRW.js → chunk-4TB4RGXK.js} +533 -393
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-5FUZZQ4R.js +3638 -0
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{chunk-S3R3BYOJ.js → chunk-5PVQY5BW.js} +1 -1
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{chunk-HN2XXSSU.js → chunk-BSJP7CBP.js} +20 -14
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{chunk-QN33PNHL.js → chunk-EDXVE4YY.js} +1 -1
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-ENJZ2VHE.js +568 -0
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-ICPOFSXX.js +2320 -0
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{chunk-DI55MBZ5.js → chunk-OYMX7WX6.js} +35 -21
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-U2HBQHQK.js +272 -0
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{chunk-ATLVNIR6.js → chunk-X2U36JSP.js} +1 -1
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{chunk-MI3HLSF2.js → chunk-XPW4576I.js} +11 -7
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-YZCP3GAM.js +60 -0
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-ZZ45TVLE.js +30 -0
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{classDiagram-2ON5EDUG.js → classDiagram-6PBFFD2Q.js} +12 -11
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{classDiagram-v2-WZHVMYZB.js → classDiagram-v2-HSJHXN6E.js} +12 -11
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{dagre-6UL2VRFP.js → dagre-KV5264BT.js} +8 -8
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/diagram-5BDNPKRD.js +99 -0
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{diagram-PSM6KHXK.js → diagram-G4DWMVQ6.js} +20 -23
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/diagram-MMDJMWI5.js +211 -0
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{diagram-S2PKOQOG.js → diagram-TYMM5635.js} +4 -4
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{erDiagram-Q2GNP2WA.js → erDiagram-SMLLAGMA.js} +486 -386
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{flowDiagram-NV44I4VS.js → flowDiagram-DWJPFMVM.js} +915 -898
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{ganttDiagram-JELNMOA3.js → ganttDiagram-T4ZO3ILL.js} +59 -29
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/gitGraphDiagram-UUTBAWPF.js +728 -0
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/infoDiagram-42DDH7IO.js +17 -0
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/ishikawaDiagram-UXIWVN3A.js +714 -0
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{journeyDiagram-XKPGCS4Q.js → journeyDiagram-VCZTEJTY.js} +32 -32
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{kanban-definition-3W4ZIXB7.js → kanban-definition-6JOO6SKY.js} +13 -9
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{mindmap-definition-VGOIOE7T.js → mindmap-definition-QFDTVHPH.js} +105 -59
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/pieDiagram-DEJITSTG.js +117 -0
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{quadrantDiagram-AYHSOK5B.js → quadrantDiagram-34T5L4WZ.js} +1 -1
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{requirementDiagram-UZGBJVZJ.js → requirementDiagram-MS252O5E.js} +49 -19
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{sankeyDiagram-TZEHDZUN.js → sankeyDiagram-XADWPNL6.js} +1 -1
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/sequenceDiagram-FGHM5R23.js +4155 -0
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{stateDiagram-FKZM4ZOC.js → stateDiagram-FHFEXIEX.js} +12 -12
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{stateDiagram-v2-4FDKWEC3.js → stateDiagram-v2-QKLJ7IA2.js} +11 -11
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/timeline-definition-GMOUNBTQ.js +1071 -0
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/vennDiagram-DHZGUBPP.js +959 -0
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/wardleyDiagram-NUSXRM2D.js +574 -0
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/{xychartDiagram-PRI3JC2R.js → xychartDiagram-5P7HB3ND.js} +38 -35
- package/dist/node_modules/mermaid/dist/mermaid.core.js +235 -192
- package/dist/node_modules/nanoid/url-alphabet/index.js +1 -1
- package/dist/node_modules/remend/dist/index.js +333 -264
- package/dist/node_modules/streamdown/dist/chunk-BO2N2NFS.js +2498 -0
- package/dist/node_modules/streamdown/dist/highlighted-body-OFNGDK62.js +35 -0
- package/dist/node_modules/streamdown/dist/index.js +1 -1
- package/dist/node_modules/streamdown/dist/mermaid-GHXKKRXX.js +3 -0
- package/dist/node_modules/streamdown/node_modules/marked/lib/marked.esm.js +672 -667
- package/dist/pages/DashboardPage.js +3 -3
- package/package.json +2 -2
- package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/chunk-TCCFYFTB.js +0 -787
- package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/info-VBDWY6EO.js +0 -3
- package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/packet-DYOGHKS2.js +0 -3
- package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/pie-VRWISCQL.js +0 -3
- package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/radar-ZZBFDIW7.js +0 -3
- package/dist/node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/treemap-GDKQZRPO.js +0 -3
- package/dist/node_modules/chevrotain/lib/src/parse/parser/traits/context_assist.js +0 -16
- package/dist/node_modules/lodash-es/_arrayAggregator.js +0 -9
- package/dist/node_modules/lodash-es/_arrayEvery.js +0 -6
- package/dist/node_modules/lodash-es/_baseAggregator.js +0 -8
- package/dist/node_modules/lodash-es/_baseDifference.js +0 -22
- package/dist/node_modules/lodash-es/_baseEvery.js +0 -9
- package/dist/node_modules/lodash-es/_baseIsRegExp.js +0 -8
- package/dist/node_modules/lodash-es/_baseSlice.js +0 -8
- package/dist/node_modules/lodash-es/_baseSome.js +0 -9
- package/dist/node_modules/lodash-es/_createAggregator.js +0 -12
- package/dist/node_modules/lodash-es/assign.js +0 -14
- package/dist/node_modules/lodash-es/compact.js +0 -9
- package/dist/node_modules/lodash-es/difference.js +0 -8
- package/dist/node_modules/lodash-es/drop.js +0 -8
- package/dist/node_modules/lodash-es/dropRight.js +0 -8
- package/dist/node_modules/lodash-es/every.js +0 -11
- package/dist/node_modules/lodash-es/groupBy.js +0 -6
- package/dist/node_modules/lodash-es/head.js +0 -5
- package/dist/node_modules/lodash-es/includes.js +0 -13
- package/dist/node_modules/lodash-es/indexOf.js +0 -11
- package/dist/node_modules/lodash-es/isRegExp.js +0 -5
- package/dist/node_modules/lodash-es/negate.js +0 -16
- package/dist/node_modules/lodash-es/pickBy.js +0 -15
- package/dist/node_modules/lodash-es/reject.js +0 -10
- package/dist/node_modules/lodash-es/some.js +0 -11
- package/dist/node_modules/lodash-es/uniq.js +0 -6
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/architectureDiagram-VXUJARFQ.js +0 -673
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-ABZYJK2D.js +0 -1547
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-CVBHYZKI.js +0 -10
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-DR5Q36YT.js +0 -135
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-JA3XYJ7Z.js +0 -247
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-JZLCHNYA.js +0 -3516
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-N4CR4FBY.js +0 -39
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-QXUST7PY.js +0 -497
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-TZMSLE5B.js +0 -55
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/diagram-QEK2KX5R.js +0 -211
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/gitGraphDiagram-V2S2FVAM.js +0 -621
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/infoDiagram-HS3SLOUP.js +0 -18
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/pieDiagram-ADFJNKIX.js +0 -117
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/sequenceDiagram-WL72ISMW.js +0 -3560
- package/dist/node_modules/mermaid/dist/chunks/mermaid.core/timeline-definition-IT6M3QCI.js +0 -833
- package/dist/node_modules/streamdown/dist/chunk-RLXIAIE6.js +0 -2189
- package/dist/node_modules/streamdown/dist/highlighted-body-B3W2YXNL.js +0 -33
- 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 };
|