research-copilot 0.2.5 → 0.2.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/app/out/main/index.mjs +26 -10
  2. package/app/out/renderer/assets/{MilkdownMarkdownEditor-2wg63TSu.js → MilkdownMarkdownEditor-wtbKgEbm.js} +50 -50
  3. package/app/out/renderer/assets/{arc-Bpvizsn8.js → arc-BqLtjO5D.js} +1 -1
  4. package/app/out/renderer/assets/{blockDiagram-c4efeb88-BopVnbxX.js → blockDiagram-c4efeb88-CHtvWbUe.js} +8 -8
  5. package/app/out/renderer/assets/{c4Diagram-c83219d4-DYK03hOG.js → c4Diagram-c83219d4-CGorl4p_.js} +3 -3
  6. package/app/out/renderer/assets/{channel-CmlMCRa3.js → channel-C4dnKIdE.js} +1 -1
  7. package/app/out/renderer/assets/{classDiagram-beda092f-oSGZIrY_.js → classDiagram-beda092f-CcVq8zgL.js} +6 -6
  8. package/app/out/renderer/assets/{classDiagram-v2-2358418a-BHM8844_.js → classDiagram-v2-2358418a-C1T7WzEm.js} +10 -10
  9. package/app/out/renderer/assets/{clone-PITMMgBv.js → clone-DxlJpy1a.js} +1 -1
  10. package/app/out/renderer/assets/{createText-1719965b-BN3FKtRi.js → createText-1719965b-C0d2kD0r.js} +2 -2
  11. package/app/out/renderer/assets/{edges-96097737-76OqZvY1.js → edges-96097737-CLaP5xIP.js} +3 -3
  12. package/app/out/renderer/assets/{erDiagram-0228fc6a-CtXOkjA1.js → erDiagram-0228fc6a-MUP9rxkZ.js} +5 -5
  13. package/app/out/renderer/assets/{flowDb-c6c81e3f-BCT1eQU9.js → flowDb-c6c81e3f-BPAie9_m.js} +1 -1
  14. package/app/out/renderer/assets/{flowDiagram-50d868cf-BKR9gSZL.js → flowDiagram-50d868cf-wPPnXbEC.js} +12 -12
  15. package/app/out/renderer/assets/{flowDiagram-v2-4f6560a1-CBGrwW2p.js → flowDiagram-v2-4f6560a1-Bla11wXJ.js} +12 -12
  16. package/app/out/renderer/assets/{flowchart-elk-definition-6af322e1-CQxHOjqj.js → flowchart-elk-definition-6af322e1-D05H4IzP.js} +6 -6
  17. package/app/out/renderer/assets/{ganttDiagram-a2739b55-BVsEi_1s.js → ganttDiagram-a2739b55-_HXvgcdj.js} +3 -3
  18. package/app/out/renderer/assets/{gitGraphDiagram-82fe8481-BlGuagiw.js → gitGraphDiagram-82fe8481-qK3Q1wq5.js} +2 -2
  19. package/app/out/renderer/assets/{graph-B-Uy9LVb.js → graph-C5ywDmPQ.js} +1 -1
  20. package/app/out/renderer/assets/{index-rMj6TAlT.js → index-0RdJfTuz.js} +4 -4
  21. package/app/out/renderer/assets/{index-5325376f-DFVM9bEE.js → index-5325376f-D3a5ZZZz.js} +6 -6
  22. package/app/out/renderer/assets/{index-Dt57Xb0R.js → index-BD3NNxzl.js} +3 -3
  23. package/app/out/renderer/assets/{index-DlUgEE0Z.js → index-BPbilNff.js} +3 -3
  24. package/app/out/renderer/assets/{index-B8_hOntP.js → index-BWngX05Q.js} +3 -3
  25. package/app/out/renderer/assets/{index-BllgkT3a.css → index-BcyuyYWv.css} +71 -56
  26. package/app/out/renderer/assets/{index-BcKf35dV.js → index-BlphXQkB.js} +6 -6
  27. package/app/out/renderer/assets/{index-DFnA5GRw.js → index-Bnopm9R6.js} +205 -59
  28. package/app/out/renderer/assets/{index-jJGUNJNs.js → index-ByTHdZ7D.js} +4 -4
  29. package/app/out/renderer/assets/{index-wvsLwV9F.js → index-CAV5KrKz.js} +3 -3
  30. package/app/out/renderer/assets/{index-j9e1ML36.js → index-CJfHLqJM.js} +1 -1
  31. package/app/out/renderer/assets/{index-PVPY9npp.js → index-CTYjTyUA.js} +3 -3
  32. package/app/out/renderer/assets/{index-BW7eNq5J.js → index-CUhOSCxv.js} +6 -6
  33. package/app/out/renderer/assets/{index-SoluVSbR.js → index-CsIY4rv7.js} +3 -3
  34. package/app/out/renderer/assets/{index-DkVOuuVx.js → index-CsvJ1nbq.js} +6 -6
  35. package/app/out/renderer/assets/{index-9DibXU9f.js → index-Ct5-4eln.js} +6 -6
  36. package/app/out/renderer/assets/{index-Dk7Wa0Je.js → index-CviTrzVQ.js} +3 -3
  37. package/app/out/renderer/assets/{index-CoEolmNf.js → index-Cvn9cLQy.js} +5 -5
  38. package/app/out/renderer/assets/{index-cLiUsMmu.js → index-DD3Ny6Vp.js} +6 -6
  39. package/app/out/renderer/assets/{index-C0Czl4Cv.js → index-DXSYlARx.js} +3 -3
  40. package/app/out/renderer/assets/{index-DlRaaYEU.js → index-DkxwQySh.js} +3 -3
  41. package/app/out/renderer/assets/{index-jMygKcX_.js → index-MnlXVp99.js} +3 -3
  42. package/app/out/renderer/assets/{index-BRtK-r6R.js → index-NTc0rY_G.js} +3 -3
  43. package/app/out/renderer/assets/{index-i5J_uYOr.js → index-UKpTDcKF.js} +6 -6
  44. package/app/out/renderer/assets/{index-BrQ_Y-LE.js → index-eO4trtHi.js} +3 -3
  45. package/app/out/renderer/assets/{infoDiagram-8eee0895-C6WcmMAB.js → infoDiagram-8eee0895-Y5yOIBzh.js} +2 -2
  46. package/app/out/renderer/assets/{journeyDiagram-c64418c1-wkVqZcQW.js → journeyDiagram-c64418c1-nxv9KGN2.js} +4 -4
  47. package/app/out/renderer/assets/{layout-C6Q0z3G5.js → layout-QkNm3OqP.js} +2 -2
  48. package/app/out/renderer/assets/{line-BDJIIoze.js → line-CcMLwlNB.js} +1 -1
  49. package/app/out/renderer/assets/{linear-95dGQxH4.js → linear-DZFvfKB-.js} +1 -1
  50. package/app/out/renderer/assets/{mindmap-definition-8da855dc-DWlj4Xm-.js → mindmap-definition-8da855dc-BLROjqLP.js} +3 -3
  51. package/app/out/renderer/assets/{pieDiagram-a8764435-CrdnVfOv.js → pieDiagram-a8764435-CEwkf3-w.js} +3 -3
  52. package/app/out/renderer/assets/{quadrantDiagram-1e28029f-M3YRJdbH.js → quadrantDiagram-1e28029f-Wtu-X7yj.js} +3 -3
  53. package/app/out/renderer/assets/{requirementDiagram-08caed73-C08ql71g.js → requirementDiagram-08caed73-BmHzmnoA.js} +5 -5
  54. package/app/out/renderer/assets/{sankeyDiagram-a04cb91d-C8ADDrm7.js → sankeyDiagram-a04cb91d-DR-ZBDLL.js} +2 -2
  55. package/app/out/renderer/assets/{sequenceDiagram-c5b8d532-gNfcaPex.js → sequenceDiagram-c5b8d532-CvKwzJJS.js} +3 -3
  56. package/app/out/renderer/assets/{stateDiagram-1ecb1508-CbYo7fPM.js → stateDiagram-1ecb1508-D9DTeGP_.js} +6 -6
  57. package/app/out/renderer/assets/{stateDiagram-v2-c2b004d7-C9NIgZa5.js → stateDiagram-v2-c2b004d7-CFD8lymK.js} +10 -10
  58. package/app/out/renderer/assets/{styles-b4e223ce-DgvzV6cM.js → styles-b4e223ce-rY8jQLYQ.js} +1 -1
  59. package/app/out/renderer/assets/{styles-ca3715f6-Dxd4UtQU.js → styles-ca3715f6-DkM1AvDm.js} +1 -1
  60. package/app/out/renderer/assets/{styles-d45a18b0-C0jzXR3J.js → styles-d45a18b0-Cg53i9fc.js} +4 -4
  61. package/app/out/renderer/assets/{svgDrawCommon-b86b1483-CjGKGyYF.js → svgDrawCommon-b86b1483-Dcml1adX.js} +1 -1
  62. package/app/out/renderer/assets/{timeline-definition-faaaa080-CRz7hPUx.js → timeline-definition-faaaa080-Dn53tAu-.js} +3 -3
  63. package/app/out/renderer/assets/{xychartDiagram-f5964ef8-BI-asLSS.js → xychartDiagram-f5964ef8-Dur19n8N.js} +5 -5
  64. package/app/out/renderer/index.html +2 -2
  65. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./MilkdownMarkdownEditor-2wg63TSu.js","./MilkdownMarkdownEditor-tTNRIB2K.css"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./MilkdownMarkdownEditor-wtbKgEbm.js","./MilkdownMarkdownEditor-tTNRIB2K.css"])))=>i.map(i=>d[i]);
2
2
  var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
3
3
  function getDefaultExportFromCjs(x) {
4
4
  return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
@@ -29825,7 +29825,7 @@ const MessageBubble = React$2.memo(function MessageBubble2({ msg, isSaved }) {
29825
29825
  return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `flex ${isUser ? "justify-end" : "justify-start"} group`, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
29826
29826
  "div",
29827
29827
  {
29828
- className: `relative max-w-[80%] rounded-2xl px-4 py-3 text-sm t-text ${!isUser ? "assistant-bubble" : ""}${!isUser && isSaved ? " border-l-2 border-[var(--color-status-success)]" : ""}`,
29828
+ className: `relative max-w-[90%] rounded-2xl px-4 py-3 text-sm t-text ${!isUser ? "assistant-bubble" : ""}${!isUser && isSaved ? " border-l-2 border-[var(--color-status-success)]" : ""}`,
29829
29829
  style: {
29830
29830
  background: isUser ? "var(--color-bubble-user)" : "var(--color-bubble-assistant)"
29831
29831
  },
@@ -29884,7 +29884,7 @@ function StreamingBubble() {
29884
29884
  return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex justify-start", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
29885
29885
  "div",
29886
29886
  {
29887
- className: "max-w-[80%] rounded-2xl px-4 py-3 text-sm t-text assistant-bubble",
29887
+ className: "max-w-[90%] rounded-2xl px-4 py-3 text-sm t-text assistant-bubble",
29888
29888
  style: { background: "var(--color-bubble-assistant)" },
29889
29889
  children: [
29890
29890
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "md-prose", style: { color: "var(--color-text)" }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Markdown, { remarkPlugins: remarkPlugins$1, children: text2 }) }),
@@ -29893,57 +29893,202 @@ function StreamingBubble() {
29893
29893
  }
29894
29894
  ) });
29895
29895
  }
29896
- const GAP_THRESHOLD_MS = 5 * 60 * 1e3;
29897
- function buildTimelineNodes(messages) {
29898
- const userAndAssistant = messages.filter((m) => m.role !== "system");
29899
- if (userAndAssistant.length < 6) return [];
29900
- const nodes = [];
29901
- let lastTs = 0;
29902
- let lastDate = "";
29903
- for (const msg of userAndAssistant) {
29904
- const gap = msg.timestamp - lastTs;
29905
- if (gap >= GAP_THRESHOLD_MS || lastTs === 0) {
29906
- const d = new Date(msg.timestamp);
29907
- const dateStr = d.toDateString();
29908
- const time = d.toLocaleTimeString([], { hour: "numeric", minute: "2-digit" });
29909
- let label;
29910
- const now2 = /* @__PURE__ */ new Date();
29911
- if (dateStr !== lastDate) {
29912
- const isToday = dateStr === now2.toDateString();
29913
- const yesterday = new Date(now2);
29914
- yesterday.setDate(yesterday.getDate() - 1);
29915
- const isYesterday = dateStr === yesterday.toDateString();
29916
- const dayLabel = isToday ? "" : isYesterday ? "Yest " : d.toLocaleDateString([], { month: "short", day: "numeric" }) + " ";
29917
- label = dayLabel + time;
29918
- lastDate = dateStr;
29919
- } else {
29920
- label = time;
29921
- }
29922
- nodes.push({ label, msgId: msg.id });
29923
- }
29924
- lastTs = msg.timestamp;
29925
- }
29926
- return nodes;
29896
+ function buildScrubNodes(messages) {
29897
+ return messages.filter((m) => m.role === "user").map((msg) => ({
29898
+ msgId: msg.id,
29899
+ preview: msg.content.replace(/^#+\s*/gm, "").slice(0, 100),
29900
+ time: msg.timestamp > 0 ? formatMessageTime(msg.timestamp) : ""
29901
+ }));
29927
29902
  }
29928
- function ChatTimeline({ messages }) {
29903
+ function ChatTimeline({ messages, scrollContainerRef }) {
29929
29904
  const requestScrollTo = useChatStore((s15) => s15.requestScrollTo);
29930
- const nodes = reactExports.useMemo(() => buildTimelineNodes(messages), [messages]);
29931
- if (nodes.length === 0) return null;
29932
- return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "absolute right-0 top-0 bottom-0 w-[56px] flex flex-col items-center py-4 pointer-events-none select-none", children: [
29933
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute top-4 bottom-4 w-px bg-[var(--color-border)]", style: { opacity: 0.3 } }),
29934
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "relative flex flex-col gap-0 w-full h-full justify-between", children: nodes.map((node2, i) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
29935
- "button",
29905
+ const nodes = reactExports.useMemo(() => buildScrubNodes(messages), [messages]);
29906
+ const positionsRef = reactExports.useRef([]);
29907
+ const [, forceUpdate] = reactExports.useState(0);
29908
+ const [hoveredIdx, setHoveredIdx] = reactExports.useState(null);
29909
+ const [hoverY, setHoverY] = reactExports.useState(0);
29910
+ const [viewport, setViewport] = reactExports.useState({ top: 0, height: 1 });
29911
+ const railRef = reactExports.useRef(null);
29912
+ const railHRef = reactExports.useRef(0);
29913
+ const RAIL_PAD = 8;
29914
+ const computePositions = reactExports.useCallback(() => {
29915
+ const container = scrollContainerRef.current;
29916
+ if (!container || nodes.length === 0) return;
29917
+ const scrollH = container.scrollHeight;
29918
+ if (scrollH <= 0) return;
29919
+ const containerRect = container.getBoundingClientRect();
29920
+ const scrollTop = container.scrollTop;
29921
+ const pos = nodes.map((node2) => {
29922
+ const el2 = container.querySelector(`[data-msg-id="${node2.msgId}"]`);
29923
+ if (!el2) return 0;
29924
+ const elRect = el2.getBoundingClientRect();
29925
+ const absTop = elRect.top - containerRect.top + scrollTop;
29926
+ return Math.min(Math.max(absTop / scrollH, 0), 1);
29927
+ });
29928
+ positionsRef.current = pos;
29929
+ forceUpdate((n) => n + 1);
29930
+ }, [nodes, scrollContainerRef]);
29931
+ reactExports.useEffect(() => {
29932
+ const container = scrollContainerRef.current;
29933
+ if (!container || nodes.length === 0) {
29934
+ positionsRef.current = [];
29935
+ return;
29936
+ }
29937
+ const raf = requestAnimationFrame(() => computePositions());
29938
+ const observer = new ResizeObserver(() => computePositions());
29939
+ observer.observe(container);
29940
+ return () => {
29941
+ cancelAnimationFrame(raf);
29942
+ observer.disconnect();
29943
+ };
29944
+ }, [nodes, messages, scrollContainerRef, computePositions]);
29945
+ reactExports.useEffect(() => {
29946
+ const rail = railRef.current;
29947
+ if (!rail) return;
29948
+ const obs = new ResizeObserver(([e]) => {
29949
+ railHRef.current = e.contentRect.height;
29950
+ forceUpdate((n) => n + 1);
29951
+ });
29952
+ obs.observe(rail);
29953
+ return () => obs.disconnect();
29954
+ }, []);
29955
+ reactExports.useEffect(() => {
29956
+ const container = scrollContainerRef.current;
29957
+ if (!container) return;
29958
+ const update = () => {
29959
+ const { scrollTop, scrollHeight, clientHeight } = container;
29960
+ if (scrollHeight <= 0) return;
29961
+ setViewport({
29962
+ top: scrollTop / scrollHeight,
29963
+ height: Math.min(clientHeight / scrollHeight, 1)
29964
+ });
29965
+ };
29966
+ update();
29967
+ container.addEventListener("scroll", update, { passive: true });
29968
+ const obs = new ResizeObserver(update);
29969
+ obs.observe(container);
29970
+ return () => {
29971
+ container.removeEventListener("scroll", update);
29972
+ obs.disconnect();
29973
+ };
29974
+ }, [scrollContainerRef, messages]);
29975
+ const toY = (ratio) => {
29976
+ const usable = railHRef.current - RAIL_PAD * 2;
29977
+ return usable > 0 ? RAIL_PAD + ratio * usable : 0;
29978
+ };
29979
+ const handleMouseMove = reactExports.useCallback((e) => {
29980
+ const rail = railRef.current;
29981
+ const positions2 = positionsRef.current;
29982
+ if (!rail || positions2.length === 0) return;
29983
+ const rect = rail.getBoundingClientRect();
29984
+ const y = e.clientY - rect.top;
29985
+ setHoverY(y);
29986
+ const usable = railHRef.current - RAIL_PAD * 2;
29987
+ if (usable <= 0) return;
29988
+ const ratio = Math.max(0, Math.min(1, (y - RAIL_PAD) / usable));
29989
+ let best = 0;
29990
+ let bestDist = Infinity;
29991
+ for (let i = 0; i < positions2.length; i++) {
29992
+ const d = Math.abs(positions2[i] - ratio);
29993
+ if (d < bestDist) {
29994
+ bestDist = d;
29995
+ best = i;
29996
+ }
29997
+ }
29998
+ setHoveredIdx(best);
29999
+ }, []);
30000
+ const handleMouseLeave = reactExports.useCallback(() => setHoveredIdx(null), []);
30001
+ const handleClick = reactExports.useCallback(() => {
30002
+ if (hoveredIdx !== null && nodes[hoveredIdx]) {
30003
+ requestScrollTo(nodes[hoveredIdx].msgId);
30004
+ }
30005
+ }, [hoveredIdx, nodes, requestScrollTo]);
30006
+ const positions = positionsRef.current;
30007
+ const railH = railHRef.current;
30008
+ const ready = nodes.length >= 3 && positions.length === nodes.length && railH > 0;
30009
+ const hovered = hoveredIdx !== null ? nodes[hoveredIdx] : null;
30010
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "absolute right-0 top-0 bottom-0 w-[48px] select-none", style: { zIndex: 10 }, children: [
30011
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
30012
+ "div",
29936
30013
  {
29937
- onClick: () => requestScrollTo(node2.msgId),
29938
- className: "pointer-events-auto group/dot relative flex items-center justify-center",
29939
- title: node2.label,
29940
- children: [
29941
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-[7px] h-[7px] rounded-full bg-[var(--color-text-muted)] group-hover/dot:bg-[var(--color-accent-soft)] transition-colors", style: { opacity: 0.5 } }),
29942
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "absolute right-full mr-2 whitespace-nowrap text-[10px] t-text-muted opacity-0 group-hover/dot:opacity-100 transition-opacity pointer-events-none", children: node2.label })
29943
- ]
29944
- },
29945
- node2.msgId
29946
- )) })
30014
+ ref: railRef,
30015
+ className: "absolute inset-0 cursor-pointer",
30016
+ role: "navigation",
30017
+ "aria-label": "Message timeline",
30018
+ onMouseMove: ready ? handleMouseMove : void 0,
30019
+ onMouseLeave: ready ? handleMouseLeave : void 0,
30020
+ onClick: ready ? handleClick : void 0,
30021
+ children: ready && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
30022
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
30023
+ "div",
30024
+ {
30025
+ className: "absolute left-[23px] w-px",
30026
+ style: { top: RAIL_PAD, bottom: RAIL_PAD, background: "var(--color-border)", opacity: 0.25 }
30027
+ }
30028
+ ),
30029
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
30030
+ "div",
30031
+ {
30032
+ className: "absolute left-[18px] w-[11px] rounded-full",
30033
+ style: {
30034
+ top: toY(viewport.top),
30035
+ height: Math.max(12, viewport.height * (railH - RAIL_PAD * 2)),
30036
+ background: "var(--color-accent-soft)",
30037
+ opacity: 0.15
30038
+ }
30039
+ }
30040
+ ),
30041
+ nodes.map((node2, i) => {
30042
+ const isActive = hoveredIdx === i;
30043
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
30044
+ "div",
30045
+ {
30046
+ className: "absolute",
30047
+ style: {
30048
+ top: toY(positions[i]),
30049
+ left: 17,
30050
+ width: isActive ? 16 : 8,
30051
+ height: isActive ? 3 : 2,
30052
+ borderRadius: 1,
30053
+ background: "var(--color-accent-soft)",
30054
+ opacity: isActive ? 1 : 0.35,
30055
+ transition: "width 80ms, height 80ms, opacity 80ms"
30056
+ }
30057
+ },
30058
+ node2.msgId
30059
+ );
30060
+ }),
30061
+ hoveredIdx !== null && /* @__PURE__ */ jsxRuntimeExports.jsx(
30062
+ "div",
30063
+ {
30064
+ className: "absolute pointer-events-none",
30065
+ style: { top: hoverY, left: 6, right: 6, height: 1, background: "var(--color-accent-soft)", opacity: 0.6 }
30066
+ }
30067
+ )
30068
+ ] })
30069
+ }
30070
+ ),
30071
+ ready && hovered && hoveredIdx !== null && /* @__PURE__ */ jsxRuntimeExports.jsx(
30072
+ "div",
30073
+ {
30074
+ className: "absolute right-[52px] pointer-events-none",
30075
+ style: { top: Math.max(8, Math.min(hoverY - 28, railH - 80)), zIndex: 50 },
30076
+ children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
30077
+ "div",
30078
+ {
30079
+ className: "w-56 rounded-lg border shadow-lg overflow-hidden",
30080
+ style: { background: "var(--color-bg-elevated)", borderColor: "var(--color-border)" },
30081
+ children: [
30082
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "h-[3px]", style: { background: "var(--color-accent-soft)" } }),
30083
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "px-3 py-2", children: [
30084
+ hovered.time && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-[9px] t-text-muted block mb-1", children: hovered.time }),
30085
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-[11px] t-text leading-relaxed line-clamp-3", children: hovered.preview || "(empty)" })
30086
+ ] })
30087
+ ]
30088
+ }
30089
+ )
30090
+ }
30091
+ )
29947
30092
  ] });
29948
30093
  }
29949
30094
  function ChatMessages() {
@@ -30002,13 +30147,14 @@ function ChatMessages() {
30002
30147
  }, [scrollToMessageId]);
30003
30148
  return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative h-full", children: [
30004
30149
  /* @__PURE__ */ jsxRuntimeExports.jsx(SelectionBookmark, {}),
30005
- /* @__PURE__ */ jsxRuntimeExports.jsx(ChatTimeline, { messages }),
30150
+ /* @__PURE__ */ jsxRuntimeExports.jsx(ChatTimeline, { messages, scrollContainerRef }),
30006
30151
  /* @__PURE__ */ jsxRuntimeExports.jsxs(
30007
30152
  "div",
30008
30153
  {
30009
30154
  ref: scrollContainerRef,
30010
30155
  onScroll: handleScroll,
30011
- className: "overflow-y-auto h-full pr-[56px]",
30156
+ className: "overflow-y-auto h-full pr-[48px]",
30157
+ style: { scrollbarWidth: "none" },
30012
30158
  role: "log",
30013
30159
  "aria-label": "Chat messages",
30014
30160
  "aria-live": "polite",
@@ -31680,13 +31826,13 @@ function CenterPanel() {
31680
31826
  }
31681
31827
  return /* @__PURE__ */ jsxRuntimeExports.jsxs("main", { id: "main-content", className: "flex-1 flex flex-col min-w-0", children: [
31682
31828
  /* @__PURE__ */ jsxRuntimeExports.jsx(ViewSwitcher, {}),
31683
- showHero ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-1 flex items-center justify-center", children: /* @__PURE__ */ jsxRuntimeExports.jsx(HeroIdle, {}) }) : /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-1 min-h-0 px-6 pt-4 pb-2", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mx-auto h-full", style: { maxWidth: "48rem" }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ChatMessages, {}) }) }),
31684
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "px-6 pb-5", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mx-auto", style: { maxWidth: "48rem" }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ChatInput, {}) }) })
31829
+ showHero ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-1 flex items-center justify-center", children: /* @__PURE__ */ jsxRuntimeExports.jsx(HeroIdle, {}) }) : /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-1 min-h-0 px-6 pt-4 pb-2", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mx-auto h-full", style: { maxWidth: "64rem" }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ChatMessages, {}) }) }),
31830
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "px-6 pb-5", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mx-auto", style: { maxWidth: "64rem" }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ChatInput, {}) }) })
31685
31831
  ] });
31686
31832
  }
31687
31833
  const remarkPlugins = [remarkGfm];
31688
31834
  const LazyMilkdownMarkdownEditor = reactExports.lazy(async () => {
31689
- const mod = await __vitePreload(() => import("./MilkdownMarkdownEditor-2wg63TSu.js").then((n) => n.bL), true ? __vite__mapDeps([0,1]) : void 0, import.meta.url);
31835
+ const mod = await __vitePreload(() => import("./MilkdownMarkdownEditor-wtbKgEbm.js").then((n) => n.bL), true ? __vite__mapDeps([0,1]) : void 0, import.meta.url);
31690
31836
  return { default: mod.MilkdownMarkdownEditor };
31691
31837
  });
31692
31838
  const typeIcons = {
@@ -41154,7 +41300,7 @@ function UpdateBanner() {
41154
41300
  className: "w-full max-w-md mb-6 rounded-xl border t-border-subtle overflow-hidden",
41155
41301
  style: { background: "linear-gradient(135deg, rgba(99,102,241,0.12), rgba(168,85,247,0.10))" },
41156
41302
  children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "px-4 py-3 flex items-start gap-3", children: [
41157
- /* @__PURE__ */ jsxRuntimeExports.jsx(CircleArrowUp, { size: 18, className: "text-indigo-400 mt-0.5 shrink-0" }),
41303
+ /* @__PURE__ */ jsxRuntimeExports.jsx(CircleArrowUp, { size: 18, className: "t-text-accent-soft mt-0.5 shrink-0" }),
41158
41304
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1 min-w-0", children: [
41159
41305
  /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "text-[13px] font-medium t-text", children: [
41160
41306
  "v",
@@ -41167,14 +41313,14 @@ function UpdateBanner() {
41167
41313
  ] })
41168
41314
  ] }),
41169
41315
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mt-2 flex items-center gap-2", children: [
41170
- /* @__PURE__ */ jsxRuntimeExports.jsx("code", { className: "flex-1 text-xs font-mono px-2.5 py-1.5 rounded-md t-bg-surface t-text select-all truncate", children: command }),
41316
+ /* @__PURE__ */ jsxRuntimeExports.jsx("code", { className: "flex-1 text-xs font-mono px-2.5 py-1.5 rounded-md t-bg-surface t-text select-all", children: command }),
41171
41317
  /* @__PURE__ */ jsxRuntimeExports.jsx(
41172
41318
  "button",
41173
41319
  {
41174
41320
  onClick: handleCopy,
41175
41321
  className: "shrink-0 p-1.5 rounded-md t-bg-surface hover:opacity-80 transition-opacity",
41176
41322
  title: "Copy command",
41177
- children: copied ? /* @__PURE__ */ jsxRuntimeExports.jsx(Check, { size: 14, className: "text-green-400" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(Copy, { size: 14, className: "t-text-secondary" })
41323
+ children: copied ? /* @__PURE__ */ jsxRuntimeExports.jsx(Check, { size: 14, className: "t-text-success" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(Copy, { size: 14, className: "t-text-secondary" })
41178
41324
  }
41179
41325
  )
41180
41326
  ] })
@@ -1,7 +1,7 @@
1
- import { L as LRParser, E as ExternalTokenizer, C as ContextTracker } from "./index-j9e1ML36.js";
2
- import { s as styleTags, t as tags, a as LanguageSupport, L as LRLanguage, f as foldNodeProp, j as foldInside, i as indentNodeProp, c as continuedIndent } from "./MilkdownMarkdownEditor-2wg63TSu.js";
3
- import { defineCSSCompletionSource } from "./index-C0Czl4Cv.js";
4
- import "./index-DFnA5GRw.js";
1
+ import { L as LRParser, E as ExternalTokenizer, C as ContextTracker } from "./index-CJfHLqJM.js";
2
+ import { s as styleTags, t as tags, a as LanguageSupport, L as LRLanguage, f as foldNodeProp, j as foldInside, i as indentNodeProp, c as continuedIndent } from "./MilkdownMarkdownEditor-wtbKgEbm.js";
3
+ import { defineCSSCompletionSource } from "./index-DXSYlARx.js";
4
+ import "./index-Bnopm9R6.js";
5
5
  const indent = 168, dedent = 169, descendantOp = 170, InterpolationEnd = 1, InterpolationContinue = 2, Unit = 3, callee = 171, identifier = 172, VariableName = 4, queryIdentifier = 173, InterpolationStart = 5, newline = 174, blankLineStart = 175, eof = 176, whitespace = 177, LineComment = 6, Comment = 7, IndentedMixin = 8, IndentedInclude = 9, Dialect_indented = 0;
6
6
  const space = [
7
7
  9,
@@ -1,6 +1,6 @@
1
- import { L as LRParser } from "./index-j9e1ML36.js";
2
- import { s as styleTags, t as tags, a as LanguageSupport, L as LRLanguage, i as indentNodeProp, c as continuedIndent, f as foldNodeProp, j as foldInside } from "./MilkdownMarkdownEditor-2wg63TSu.js";
3
- import "./index-DFnA5GRw.js";
1
+ import { L as LRParser } from "./index-CJfHLqJM.js";
2
+ import { s as styleTags, t as tags, a as LanguageSupport, L as LRLanguage, i as indentNodeProp, c as continuedIndent, f as foldNodeProp, j as foldInside } from "./MilkdownMarkdownEditor-wtbKgEbm.js";
3
+ import "./index-Bnopm9R6.js";
4
4
  const jsonHighlighting = styleTags({
5
5
  String: tags.string,
6
6
  Number: tags.number,
@@ -1,4 +1,4 @@
1
- import { P as Parser, N as NodeSet, k as NodeType, D as DefaultBufferLength, l as NodeProp, T as Tree, I as IterMode } from "./MilkdownMarkdownEditor-2wg63TSu.js";
1
+ import { P as Parser, N as NodeSet, k as NodeType, D as DefaultBufferLength, l as NodeProp, T as Tree, I as IterMode } from "./MilkdownMarkdownEditor-wtbKgEbm.js";
2
2
  var define_process_env_default = {};
3
3
  class Stack {
4
4
  /**
@@ -1,6 +1,6 @@
1
- import { a as LanguageSupport, L as LRLanguage, i as indentNodeProp, h as delimitedIndent, f as foldNodeProp, j as foldInside, s as styleTags, t as tags } from "./MilkdownMarkdownEditor-2wg63TSu.js";
2
- import { L as LRParser } from "./index-j9e1ML36.js";
3
- import "./index-DFnA5GRw.js";
1
+ import { a as LanguageSupport, L as LRLanguage, i as indentNodeProp, h as delimitedIndent, f as foldNodeProp, j as foldInside, s as styleTags, t as tags } from "./MilkdownMarkdownEditor-wtbKgEbm.js";
2
+ import { L as LRParser } from "./index-CJfHLqJM.js";
3
+ import "./index-Bnopm9R6.js";
4
4
  const spec_Keyword = { __proto__: null, anyref: 34, dataref: 34, eqref: 34, externref: 34, i31ref: 34, funcref: 34, i8: 34, i16: 34, i32: 34, i64: 34, f32: 34, f64: 34 };
5
5
  const parser = /* @__PURE__ */ LRParser.deserialize({
6
6
  version: 14,
@@ -1,9 +1,9 @@
1
- import { E as EditorView, g as EditorSelection, a as LanguageSupport, p as parseMixed, e as syntaxTree, L as LRLanguage, s as styleTags, t as tags, i as indentNodeProp, h as delimitedIndent, f as foldNodeProp } from "./MilkdownMarkdownEditor-2wg63TSu.js";
2
- import { html } from "./index-CoEolmNf.js";
3
- import { L as LRParser, E as ExternalTokenizer, a as LocalTokenGroup } from "./index-j9e1ML36.js";
4
- import "./index-DFnA5GRw.js";
5
- import "./index-C0Czl4Cv.js";
6
- import "./index-BrQ_Y-LE.js";
1
+ import { E as EditorView, g as EditorSelection, a as LanguageSupport, p as parseMixed, e as syntaxTree, L as LRLanguage, s as styleTags, t as tags, i as indentNodeProp, h as delimitedIndent, f as foldNodeProp } from "./MilkdownMarkdownEditor-wtbKgEbm.js";
2
+ import { html } from "./index-Cvn9cLQy.js";
3
+ import { L as LRParser, E as ExternalTokenizer, a as LocalTokenGroup } from "./index-CJfHLqJM.js";
4
+ import "./index-Bnopm9R6.js";
5
+ import "./index-DXSYlARx.js";
6
+ import "./index-eO4trtHi.js";
7
7
  const interpolationStart = 1, commentTagStart = 2, tagStart = 3, text = 155, endrawTagStart = 4, rawText = 156;
8
8
  function wordChar(code) {
9
9
  return code >= 65 && code <= 90 || code >= 97 && code <= 122;
@@ -1,6 +1,6 @@
1
- import { L as LRLanguage, a as LanguageSupport, i as indentNodeProp, c as continuedIndent, f as foldNodeProp, s as styleTags, t as tags, b as ifNotIn, d as completeFromList, e as syntaxTree } from "./MilkdownMarkdownEditor-2wg63TSu.js";
2
- import { E as ExternalTokenizer, L as LRParser } from "./index-j9e1ML36.js";
3
- import "./index-DFnA5GRw.js";
1
+ import { L as LRLanguage, a as LanguageSupport, i as indentNodeProp, c as continuedIndent, f as foldNodeProp, s as styleTags, t as tags, b as ifNotIn, d as completeFromList, e as syntaxTree } from "./MilkdownMarkdownEditor-wtbKgEbm.js";
2
+ import { E as ExternalTokenizer, L as LRParser } from "./index-CJfHLqJM.js";
3
+ import "./index-Bnopm9R6.js";
4
4
  const whitespace = 36, LineComment = 1, BlockComment = 2, String$1 = 3, Number = 4, Bool = 5, Null = 6, ParenL = 7, ParenR = 8, BraceL = 9, BraceR = 10, BracketL = 11, BracketR = 12, Semi = 13, Dot = 14, Operator = 15, Punctuation = 16, SpecialVar = 17, Identifier = 18, QuotedIdentifier = 19, Keyword = 20, Type = 21, Bits = 22, Bytes = 23, Builtin = 24;
5
5
  function isAlpha(ch) {
6
6
  return ch >= 65 && ch <= 90 || ch >= 97 && ch <= 122 || ch >= 48 && ch <= 57;
@@ -1,9 +1,9 @@
1
- import { L as LRParser, E as ExternalTokenizer } from "./index-j9e1ML36.js";
2
- import { s as styleTags, t as tags, a as LanguageSupport, p as parseMixed, L as LRLanguage, i as indentNodeProp, c as continuedIndent, h as delimitedIndent, f as foldNodeProp, j as foldInside } from "./MilkdownMarkdownEditor-2wg63TSu.js";
3
- import { html } from "./index-CoEolmNf.js";
4
- import "./index-DFnA5GRw.js";
5
- import "./index-C0Czl4Cv.js";
6
- import "./index-BrQ_Y-LE.js";
1
+ import { L as LRParser, E as ExternalTokenizer } from "./index-CJfHLqJM.js";
2
+ import { s as styleTags, t as tags, a as LanguageSupport, p as parseMixed, L as LRLanguage, i as indentNodeProp, c as continuedIndent, h as delimitedIndent, f as foldNodeProp, j as foldInside } from "./MilkdownMarkdownEditor-wtbKgEbm.js";
3
+ import { html } from "./index-Cvn9cLQy.js";
4
+ import "./index-Bnopm9R6.js";
5
+ import "./index-DXSYlARx.js";
6
+ import "./index-eO4trtHi.js";
7
7
  const castOpen = 1, HeredocString = 2, interpolatedStringContent = 275, EscapeSequence = 3, afterInterpolation = 276, automaticSemicolon = 277, eof = 278, abstract = 4, and = 5, array = 6, as = 7, Boolean = 8, _break = 9, _case = 10, _catch = 11, clone = 12, _const = 13, _continue = 14, _default = 15, declare = 16, _do = 17, echo = 18, _else = 19, elseif = 20, enddeclare = 21, endfor = 22, endforeach = 23, endif = 24, endswitch = 25, endwhile = 26, _enum = 27, _extends = 28, final = 29, _finally = 30, fn = 31, _for = 32, foreach = 33, from = 34, _function = 35, global = 36, goto = 37, _if = 38, _implements = 39, include = 40, include_once = 41, _instanceof = 42, insteadof = 43, _interface = 44, list = 45, match = 46, namespace = 47, _new = 48, _null = 49, or = 50, print = 51, readonly = 52, _require = 53, require_once = 54, _return = 55, _switch = 56, _throw = 57, trait = 58, _try = 59, unset = 60, use = 61, _var = 62, Visibility = 63, _while = 64, xor = 65, _yield = 66;
8
8
  const keywordMap = {
9
9
  abstract,
@@ -1,9 +1,9 @@
1
- import { L as LRLanguage, a as LanguageSupport, p as parseMixed, s as styleTags, t as tags } from "./MilkdownMarkdownEditor-2wg63TSu.js";
2
- import { html } from "./index-CoEolmNf.js";
3
- import { javascriptLanguage } from "./index-BrQ_Y-LE.js";
4
- import { L as LRParser, a as LocalTokenGroup } from "./index-j9e1ML36.js";
5
- import "./index-DFnA5GRw.js";
6
- import "./index-C0Czl4Cv.js";
1
+ import { L as LRLanguage, a as LanguageSupport, p as parseMixed, s as styleTags, t as tags } from "./MilkdownMarkdownEditor-wtbKgEbm.js";
2
+ import { html } from "./index-Cvn9cLQy.js";
3
+ import { javascriptLanguage } from "./index-eO4trtHi.js";
4
+ import { L as LRParser, a as LocalTokenGroup } from "./index-CJfHLqJM.js";
5
+ import "./index-Bnopm9R6.js";
6
+ import "./index-DXSYlARx.js";
7
7
  const parser = /* @__PURE__ */ LRParser.deserialize({
8
8
  version: 14,
9
9
  states: "%pOVOWOOObQPOOOpOSO'#C_OOOO'#Cp'#CpQVOWOOQxQPOOO!TQQOOQ!YQPOOOOOO,58y,58yO!_OSO,58yOOOO-E6n-E6nO!dQQO'#CqQ{QPOOO!iQPOOQ{QPOOO!qQPOOOOOO1G.e1G.eOOQO,59],59]OOQO-E6o-E6oO!yOpO'#CiO#RO`O'#CiQOQPOOO#ZO#tO'#CmO#fO!bO'#CmOOQO,59T,59TO#qOpO,59TO#vO`O,59TOOOO'#Cr'#CrO#{O#tO,59XOOQO,59X,59XOOOO'#Cs'#CsO$WO!bO,59XOOQO1G.o1G.oOOOO-E6p-E6pOOQO1G.s1G.sOOOO-E6q-E6q",
@@ -1,6 +1,6 @@
1
- import { L as LRParser, E as ExternalTokenizer, C as ContextTracker } from "./index-j9e1ML36.js";
2
- import { s as styleTags, t as tags, E as EditorView, e as syntaxTree, g as EditorSelection, a as LanguageSupport, L as LRLanguage, i as indentNodeProp, f as foldNodeProp, aK as bracketMatchingHandle } from "./MilkdownMarkdownEditor-2wg63TSu.js";
3
- import "./index-DFnA5GRw.js";
1
+ import { L as LRParser, E as ExternalTokenizer, C as ContextTracker } from "./index-CJfHLqJM.js";
2
+ import { s as styleTags, t as tags, E as EditorView, e as syntaxTree, g as EditorSelection, a as LanguageSupport, L as LRLanguage, i as indentNodeProp, f as foldNodeProp, aK as bracketMatchingHandle } from "./MilkdownMarkdownEditor-wtbKgEbm.js";
3
+ import "./index-Bnopm9R6.js";
4
4
  const StartTag = 1, StartCloseTag = 2, MissingCloseTag = 3, mismatchedStartCloseTag = 4, incompleteStartCloseTag = 5, commentContent$1 = 36, piContent$1 = 37, cdataContent$1 = 38, Element$1 = 11, OpenTag = 13;
5
5
  function nameChar(ch) {
6
6
  return ch == 45 || ch == 46 || ch == 58 || ch >= 65 && ch <= 90 || ch == 95 || ch >= 97 && ch <= 122 || ch >= 161;
@@ -1,8 +1,8 @@
1
- import { L as LRParser, E as ExternalTokenizer, C as ContextTracker } from "./index-j9e1ML36.js";
2
- import { p as parseMixed, s as styleTags, t as tags, E as EditorView, e as syntaxTree, g as EditorSelection, a as LanguageSupport, L as LRLanguage, i as indentNodeProp, f as foldNodeProp, aK as bracketMatchingHandle } from "./MilkdownMarkdownEditor-2wg63TSu.js";
3
- import { cssLanguage, css } from "./index-C0Czl4Cv.js";
4
- import { typescriptLanguage, jsxLanguage, tsxLanguage, javascriptLanguage, javascript } from "./index-BrQ_Y-LE.js";
5
- import "./index-DFnA5GRw.js";
1
+ import { L as LRParser, E as ExternalTokenizer, C as ContextTracker } from "./index-CJfHLqJM.js";
2
+ import { p as parseMixed, s as styleTags, t as tags, E as EditorView, e as syntaxTree, g as EditorSelection, a as LanguageSupport, L as LRLanguage, i as indentNodeProp, f as foldNodeProp, aK as bracketMatchingHandle } from "./MilkdownMarkdownEditor-wtbKgEbm.js";
3
+ import { cssLanguage, css } from "./index-DXSYlARx.js";
4
+ import { typescriptLanguage, jsxLanguage, tsxLanguage, javascriptLanguage, javascript } from "./index-eO4trtHi.js";
5
+ import "./index-Bnopm9R6.js";
6
6
  const scriptText = 55, StartCloseScriptTag = 1, styleText = 56, StartCloseStyleTag = 2, textareaText = 57, StartCloseTextareaTag = 3, EndTag = 4, SelfClosingEndTag = 5, StartTag = 6, StartScriptTag = 7, StartStyleTag = 8, StartTextareaTag = 9, StartSelfClosingTag = 10, StartCloseTag = 11, NoMatchStartCloseTag = 12, MismatchedStartCloseTag = 13, missingCloseTag = 58, IncompleteTag = 14, IncompleteCloseTag = 15, commentContent$1 = 59, Element = 21, TagName = 23, Attribute = 24, AttributeName = 25, AttributeValue = 27, UnquotedAttributeValue = 28, ScriptText = 29, StyleText = 32, TextareaText = 35, OpenTag = 37, CloseTag = 38, Dialect_noMatch = 0, Dialect_selfClosing = 1;
7
7
  const selfClosers$1 = {
8
8
  area: true,
@@ -1,9 +1,9 @@
1
- import { E as EditorView, g as EditorSelection, a as LanguageSupport, p as parseMixed, e as syntaxTree, L as LRLanguage, s as styleTags, t as tags, i as indentNodeProp, h as delimitedIndent, f as foldNodeProp } from "./MilkdownMarkdownEditor-2wg63TSu.js";
2
- import { html } from "./index-CoEolmNf.js";
3
- import { L as LRParser, E as ExternalTokenizer } from "./index-j9e1ML36.js";
4
- import "./index-DFnA5GRw.js";
5
- import "./index-C0Czl4Cv.js";
6
- import "./index-BrQ_Y-LE.js";
1
+ import { E as EditorView, g as EditorSelection, a as LanguageSupport, p as parseMixed, e as syntaxTree, L as LRLanguage, s as styleTags, t as tags, i as indentNodeProp, h as delimitedIndent, f as foldNodeProp } from "./MilkdownMarkdownEditor-wtbKgEbm.js";
2
+ import { html } from "./index-Cvn9cLQy.js";
3
+ import { L as LRParser, E as ExternalTokenizer } from "./index-CJfHLqJM.js";
4
+ import "./index-Bnopm9R6.js";
5
+ import "./index-DXSYlARx.js";
6
+ import "./index-eO4trtHi.js";
7
7
  const interpolationStart = 1, tagStart = 2, endTagStart = 3, text = 180, endrawTagStart = 4, rawText = 181, endcommentTagStart = 5, commentText = 182, InlineComment = 6;
8
8
  function wordChar(code) {
9
9
  return code >= 65 && code <= 90 || code >= 97 && code <= 122;
@@ -1,6 +1,6 @@
1
- import { L as LRParser, E as ExternalTokenizer, a as LocalTokenGroup } from "./index-j9e1ML36.js";
2
- import { s as styleTags, t as tags$1, a as LanguageSupport, L as LRLanguage, i as indentNodeProp, c as continuedIndent, f as foldNodeProp, j as foldInside, e as syntaxTree, aw as NodeWeakMap, I as IterMode } from "./MilkdownMarkdownEditor-2wg63TSu.js";
3
- import "./index-DFnA5GRw.js";
1
+ import { L as LRParser, E as ExternalTokenizer, a as LocalTokenGroup } from "./index-CJfHLqJM.js";
2
+ import { s as styleTags, t as tags$1, a as LanguageSupport, L as LRLanguage, i as indentNodeProp, c as continuedIndent, f as foldNodeProp, j as foldInside, e as syntaxTree, aw as NodeWeakMap, I as IterMode } from "./MilkdownMarkdownEditor-wtbKgEbm.js";
3
+ import "./index-Bnopm9R6.js";
4
4
  const descendantOp = 122, Unit = 1, identifier$1 = 123, callee = 124, VariableName = 2, queryIdentifier = 125, queryVariableName = 3, QueryCallee = 4;
5
5
  const space = [
6
6
  9,
@@ -1,6 +1,6 @@
1
- import { L as LRParser, E as ExternalTokenizer, C as ContextTracker } from "./index-j9e1ML36.js";
2
- import { s as styleTags, t as tags, b as ifNotIn, e as syntaxTree, a as LanguageSupport, L as LRLanguage, i as indentNodeProp, h as delimitedIndent, f as foldNodeProp, j as foldInside, aw as NodeWeakMap, I as IterMode, d as completeFromList, av as snippetCompletion } from "./MilkdownMarkdownEditor-2wg63TSu.js";
3
- import "./index-DFnA5GRw.js";
1
+ import { L as LRParser, E as ExternalTokenizer, C as ContextTracker } from "./index-CJfHLqJM.js";
2
+ import { s as styleTags, t as tags, b as ifNotIn, e as syntaxTree, a as LanguageSupport, L as LRLanguage, i as indentNodeProp, h as delimitedIndent, f as foldNodeProp, j as foldInside, aw as NodeWeakMap, I as IterMode, d as completeFromList, av as snippetCompletion } from "./MilkdownMarkdownEditor-wtbKgEbm.js";
3
+ import "./index-Bnopm9R6.js";
4
4
  const printKeyword = 1, indent = 194, dedent = 195, newline$1 = 196, blankLineStart = 197, newlineBracketed = 198, eof = 199, stringContent = 200, Escape = 2, replacementStart = 3, stringEnd = 201, ParenL = 24, ParenthesizedExpression = 25, TupleExpression = 49, ComprehensionExpression = 50, BracketL = 55, ArrayExpression = 56, ArrayComprehensionExpression = 57, BraceL = 59, DictionaryExpression = 60, DictionaryComprehensionExpression = 61, SetExpression = 62, SetComprehensionExpression = 63, ArgList = 65, subscript = 238, String$1 = 71, stringStart = 241, stringStartD = 242, stringStartL = 243, stringStartLD = 244, stringStartR = 245, stringStartRD = 246, stringStartRL = 247, stringStartRLD = 248, FormatString = 72, stringStartF = 249, stringStartFD = 250, stringStartFL = 251, stringStartFLD = 252, stringStartFR = 253, stringStartFRD = 254, stringStartFRL = 255, stringStartFRLD = 256, FormatReplacement = 73, nestedFormatReplacement = 77, importList = 263, TypeParamList = 112, ParamList = 130, SequencePattern = 151, MappingPattern = 152, PatternArgList = 155;
5
5
  const newline = 10, carriageReturn = 13, space = 32, tab = 9, hash = 35, parenOpen = 40, dot = 46, braceOpen = 123, braceClose = 125, singleQuote = 39, doubleQuote = 34, backslash = 92, letter_o = 111, letter_x = 120, letter_N = 78, letter_u = 117, letter_U = 85;
6
6
  const bracketed = /* @__PURE__ */ new Set([
@@ -1,6 +1,6 @@
1
- import { L as LRParser, E as ExternalTokenizer, a as LocalTokenGroup, C as ContextTracker } from "./index-j9e1ML36.js";
2
- import { s as styleTags, t as tags, a as LanguageSupport, b as ifNotIn, d as completeFromList, L as LRLanguage, i as indentNodeProp, au as flatIndent, c as continuedIndent, h as delimitedIndent, f as foldNodeProp, j as foldInside, e as syntaxTree, av as snippetCompletion, aw as NodeWeakMap, I as IterMode } from "./MilkdownMarkdownEditor-2wg63TSu.js";
3
- import "./index-DFnA5GRw.js";
1
+ import { L as LRParser, E as ExternalTokenizer, a as LocalTokenGroup, C as ContextTracker } from "./index-CJfHLqJM.js";
2
+ import { s as styleTags, t as tags, a as LanguageSupport, b as ifNotIn, d as completeFromList, L as LRLanguage, i as indentNodeProp, au as flatIndent, c as continuedIndent, h as delimitedIndent, f as foldNodeProp, j as foldInside, e as syntaxTree, av as snippetCompletion, aw as NodeWeakMap, I as IterMode } from "./MilkdownMarkdownEditor-wtbKgEbm.js";
3
+ import "./index-Bnopm9R6.js";
4
4
  const insertedSemi = 177, space$1 = 179, identifier = 184, String = 12, closeParen$1 = 13, Number = 17, Rune = 20, closeBrace$1 = 25, closeBracket = 53, IncDecOp = 95, _return = 142, _break = 144, _continue = 145, fallthrough = 148;
5
5
  const newline = 10, carriageReturn = 13, space = 32, tab = 9, slash = 47, closeParen = 41, closeBrace = 125;
6
6
  const semicolon = new ExternalTokenizer((input, stack) => {
@@ -1,6 +1,6 @@
1
- import { L as LRParser, E as ExternalTokenizer } from "./index-j9e1ML36.js";
2
- import { s as styleTags, t as tags, a as LanguageSupport, L as LRLanguage, i as indentNodeProp, c as continuedIndent, f as foldNodeProp, j as foldInside } from "./MilkdownMarkdownEditor-2wg63TSu.js";
3
- import "./index-DFnA5GRw.js";
1
+ import { L as LRParser, E as ExternalTokenizer } from "./index-CJfHLqJM.js";
2
+ import { s as styleTags, t as tags, a as LanguageSupport, L as LRLanguage, i as indentNodeProp, c as continuedIndent, f as foldNodeProp, j as foldInside } from "./MilkdownMarkdownEditor-wtbKgEbm.js";
3
+ import "./index-Bnopm9R6.js";
4
4
  const closureParamDelim = 1, tpOpen = 2, tpClose = 3, RawString = 4, Float = 5;
5
5
  const _b = 98, _e = 101, _f = 102, _r = 114, _E = 69, Zero = 48, Dot = 46, Plus = 43, Minus = 45, Hash = 35, Quote = 34, Pipe = 124, LessThan = 60, GreaterThan = 62;
6
6
  function isNum(ch) {
@@ -1,9 +1,9 @@
1
- import { L as LRLanguage, a as LanguageSupport, p as parseMixed, s as styleTags, t as tags } from "./MilkdownMarkdownEditor-2wg63TSu.js";
2
- import { html } from "./index-CoEolmNf.js";
3
- import { javascriptLanguage } from "./index-BrQ_Y-LE.js";
4
- import { L as LRParser, E as ExternalTokenizer } from "./index-j9e1ML36.js";
5
- import "./index-DFnA5GRw.js";
6
- import "./index-C0Czl4Cv.js";
1
+ import { L as LRLanguage, a as LanguageSupport, p as parseMixed, s as styleTags, t as tags } from "./MilkdownMarkdownEditor-wtbKgEbm.js";
2
+ import { html } from "./index-Cvn9cLQy.js";
3
+ import { javascriptLanguage } from "./index-eO4trtHi.js";
4
+ import { L as LRParser, E as ExternalTokenizer } from "./index-CJfHLqJM.js";
5
+ import "./index-Bnopm9R6.js";
6
+ import "./index-DXSYlARx.js";
7
7
  const Text = 1, attributeContentSingle = 33, attributeContentDouble = 34, scriptAttributeContentSingle = 35, scriptAttributeContentDouble = 36;
8
8
  const text = /* @__PURE__ */ new ExternalTokenizer((input) => {
9
9
  let start = input.pos;
@@ -1,6 +1,6 @@
1
- import { L as LRParser, E as ExternalTokenizer, a as LocalTokenGroup, C as ContextTracker } from "./index-j9e1ML36.js";
2
- import { s as styleTags, t as tags, E as EditorView, e as syntaxTree, g as EditorSelection, a as LanguageSupport, b as ifNotIn, d as completeFromList, L as LRLanguage, i as indentNodeProp, au as flatIndent, c as continuedIndent, h as delimitedIndent, f as foldNodeProp, j as foldInside, aL as sublanguageProp, av as snippetCompletion, aE as defineLanguageFacet, aw as NodeWeakMap, I as IterMode } from "./MilkdownMarkdownEditor-2wg63TSu.js";
3
- import "./index-DFnA5GRw.js";
1
+ import { L as LRParser, E as ExternalTokenizer, a as LocalTokenGroup, C as ContextTracker } from "./index-CJfHLqJM.js";
2
+ import { s as styleTags, t as tags, E as EditorView, e as syntaxTree, g as EditorSelection, a as LanguageSupport, b as ifNotIn, d as completeFromList, L as LRLanguage, i as indentNodeProp, au as flatIndent, c as continuedIndent, h as delimitedIndent, f as foldNodeProp, j as foldInside, aL as sublanguageProp, av as snippetCompletion, aE as defineLanguageFacet, aw as NodeWeakMap, I as IterMode } from "./MilkdownMarkdownEditor-wtbKgEbm.js";
3
+ import "./index-Bnopm9R6.js";
4
4
  const noSemi = 316, noSemiType = 317, incdec = 1, incdecPrefix = 2, questionDot = 3, JSXStartTag = 4, insertSemi = 318, spaces = 320, newline = 321, LineComment = 5, BlockComment = 6, Dialect_jsx = 0;
5
5
  const space = [
6
6
  9,
@@ -1,5 +1,5 @@
1
- import { v as log$1, Z as selectSvgElement, w as configureSvgSize } from "./MilkdownMarkdownEditor-2wg63TSu.js";
2
- import "./index-DFnA5GRw.js";
1
+ import { v as log$1, Z as selectSvgElement, w as configureSvgSize } from "./MilkdownMarkdownEditor-wtbKgEbm.js";
2
+ import "./index-Bnopm9R6.js";
3
3
  var parser = function() {
4
4
  var o = function(k, v, o2, l) {
5
5
  for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)
@@ -1,7 +1,7 @@
1
- import { n as getAccDescription, m as setAccDescription, o as getAccTitle, q as setAccTitle, H as getDiagramTitle, J as setDiagramTitle, r as getConfig, u as select, w as configureSvgSize, M as clear$1 } from "./MilkdownMarkdownEditor-2wg63TSu.js";
2
- import { a as drawBackgroundRect$1, f as drawText$1, d as drawRect$1, g as getNoteRect } from "./svgDrawCommon-b86b1483-CjGKGyYF.js";
3
- import { a as arc } from "./arc-Bpvizsn8.js";
4
- import "./index-DFnA5GRw.js";
1
+ import { n as getAccDescription, m as setAccDescription, o as getAccTitle, q as setAccTitle, H as getDiagramTitle, J as setDiagramTitle, r as getConfig, u as select, w as configureSvgSize, M as clear$1 } from "./MilkdownMarkdownEditor-wtbKgEbm.js";
2
+ import { a as drawBackgroundRect$1, f as drawText$1, d as drawRect$1, g as getNoteRect } from "./svgDrawCommon-b86b1483-Dcml1adX.js";
3
+ import { a as arc } from "./arc-BqLtjO5D.js";
4
+ import "./index-Bnopm9R6.js";
5
5
  import "./path-Cp2qmpkd.js";
6
6
  var parser = function() {
7
7
  var o = function(k, v, o2, l) {
@@ -1,5 +1,5 @@
1
- import { a as baseFlatten, b as baseClone, c as baseIteratee, k as keys, d as baseFindIndex, e as baseEach, f as arrayMap, g as castFunction, h as baseForOwn, j as hasPath, l as castPath, t as toKey, m as baseGet, n as hasIn, o as toString, G as Graph, p as forEach, i as isUndefined, q as filter, v as values, r as reduce } from "./graph-B-Uy9LVb.js";
2
- import { b4 as toNumber, b5 as setToString, b6 as overRest, b7 as baseRest, b8 as isIterateeCall, b9 as keysIn, ba as eq, bb as isArrayLike, bc as isArray, bd as baseFor, be as baseAssignValue, bf as isSymbol, bg as identity, bh as isObject, bi as isIndex, bj as assignValue, bk as baseUnary, bl as constant, bm as merge } from "./MilkdownMarkdownEditor-2wg63TSu.js";
1
+ import { a as baseFlatten, b as baseClone, c as baseIteratee, k as keys, d as baseFindIndex, e as baseEach, f as arrayMap, g as castFunction, h as baseForOwn, j as hasPath, l as castPath, t as toKey, m as baseGet, n as hasIn, o as toString, G as Graph, p as forEach, i as isUndefined, q as filter, v as values, r as reduce } from "./graph-C5ywDmPQ.js";
2
+ import { b4 as toNumber, b5 as setToString, b6 as overRest, b7 as baseRest, b8 as isIterateeCall, b9 as keysIn, ba as eq, bb as isArrayLike, bc as isArray, bd as baseFor, be as baseAssignValue, bf as isSymbol, bg as identity, bh as isObject, bi as isIndex, bj as assignValue, bk as baseUnary, bl as constant, bm as merge } from "./MilkdownMarkdownEditor-wtbKgEbm.js";
3
3
  var INFINITY = 1 / 0, MAX_INTEGER = 17976931348623157e292;
4
4
  function toFinite(value) {
5
5
  if (!value) {
@@ -1,6 +1,6 @@
1
1
  import { a as array } from "./array-DgktLKBx.js";
2
2
  import { w as withPath, c as constant } from "./path-Cp2qmpkd.js";
3
- import { an as curveLinear } from "./MilkdownMarkdownEditor-2wg63TSu.js";
3
+ import { an as curveLinear } from "./MilkdownMarkdownEditor-wtbKgEbm.js";
4
4
  function x(p) {
5
5
  return p[0];
6
6
  }