@arbidocs/blocks 0.4.129 → 0.4.130

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 (173) hide show
  1. package/README.md +4 -3
  2. package/dist/agents/index.cjs +216 -216
  3. package/dist/agents/index.js +5 -5
  4. package/dist/calendar/CalendarPrint.d.ts +25 -0
  5. package/dist/calendar/booking-slots.d.ts +21 -0
  6. package/dist/calendar/index.cjs +381 -97
  7. package/dist/calendar/index.cjs.map +1 -1
  8. package/dist/calendar/index.d.ts +4 -0
  9. package/dist/calendar/index.js +277 -3
  10. package/dist/calendar/index.js.map +1 -1
  11. package/dist/calendar/print-layout.d.ts +16 -0
  12. package/dist/calendar/printCalendar.d.ts +6 -0
  13. package/dist/calls/composite-canvas.d.ts +52 -0
  14. package/dist/calls/index.cjs +376 -3
  15. package/dist/calls/index.cjs.map +1 -1
  16. package/dist/calls/index.d.ts +3 -0
  17. package/dist/calls/index.js +360 -5
  18. package/dist/calls/index.js.map +1 -1
  19. package/dist/calls/ringtone.d.ts +16 -0
  20. package/dist/calls/voice-levels.d.ts +32 -0
  21. package/dist/chat/ThreadVisualizer.d.ts +28 -0
  22. package/dist/chat/index.cjs +93 -77
  23. package/dist/chat/index.d.ts +2 -0
  24. package/dist/chat/index.js +2 -2
  25. package/dist/chat/open-document.d.ts +5 -1
  26. package/dist/chat/thread-diagram.d.ts +26 -0
  27. package/dist/{chunk-DQCYCEDR.js → chunk-2Q7FDZAY.js} +3 -3
  28. package/dist/{chunk-DQCYCEDR.js.map → chunk-2Q7FDZAY.js.map} +1 -1
  29. package/dist/{chunk-S7PSMMRG.js → chunk-444XKG46.js} +3 -3
  30. package/dist/{chunk-S7PSMMRG.js.map → chunk-444XKG46.js.map} +1 -1
  31. package/dist/{chunk-7423V6RM.cjs → chunk-4QIIDXLF.cjs} +8 -8
  32. package/dist/{chunk-7423V6RM.cjs.map → chunk-4QIIDXLF.cjs.map} +1 -1
  33. package/dist/{chunk-OYMWV45N.js → chunk-4RLCRFZS.js} +63 -13
  34. package/dist/chunk-4RLCRFZS.js.map +1 -0
  35. package/dist/{chunk-DZYAAL4H.cjs → chunk-4S5IDT5F.cjs} +231 -2
  36. package/dist/chunk-4S5IDT5F.cjs.map +1 -0
  37. package/dist/{chunk-CJBN5HIS.js → chunk-4UMXQPNA.js} +20 -8
  38. package/dist/chunk-4UMXQPNA.js.map +1 -0
  39. package/dist/{chunk-IBZJYCYM.js → chunk-66TA5IBN.js} +17 -25
  40. package/dist/chunk-66TA5IBN.js.map +1 -0
  41. package/dist/{chunk-OR4CO743.cjs → chunk-AAFX64WD.cjs} +3 -3
  42. package/dist/{chunk-OR4CO743.cjs.map → chunk-AAFX64WD.cjs.map} +1 -1
  43. package/dist/{chunk-MUMH3Z6K.cjs → chunk-ARDHLU73.cjs} +61 -11
  44. package/dist/chunk-ARDHLU73.cjs.map +1 -0
  45. package/dist/{chunk-TGWTLNXW.cjs → chunk-BIXHB4LV.cjs} +3 -2
  46. package/dist/{chunk-TGWTLNXW.cjs.map → chunk-BIXHB4LV.cjs.map} +1 -1
  47. package/dist/chunk-C4WSHRR6.cjs +166 -0
  48. package/dist/chunk-C4WSHRR6.cjs.map +1 -0
  49. package/dist/{chunk-ZAVEMQ37.cjs → chunk-DWZXSPMB.cjs} +3 -3
  50. package/dist/{chunk-ZAVEMQ37.cjs.map → chunk-DWZXSPMB.cjs.map} +1 -1
  51. package/dist/{chunk-5HFPRI3W.js → chunk-FUTMU4FR.js} +3 -3
  52. package/dist/{chunk-5HFPRI3W.js.map → chunk-FUTMU4FR.js.map} +1 -1
  53. package/dist/{chunk-5Y7JRY7Y.js → chunk-GDBDHOI4.js} +3 -3
  54. package/dist/{chunk-5Y7JRY7Y.js.map → chunk-GDBDHOI4.js.map} +1 -1
  55. package/dist/{chunk-TGJNPKST.js → chunk-GTCC2VAR.js} +3 -3
  56. package/dist/{chunk-TGJNPKST.js.map → chunk-GTCC2VAR.js.map} +1 -1
  57. package/dist/{chunk-3BJLNKOB.cjs → chunk-GZPTWHP5.cjs} +22 -10
  58. package/dist/chunk-GZPTWHP5.cjs.map +1 -0
  59. package/dist/{chunk-OUW6G4O2.cjs → chunk-HFGXA5CL.cjs} +4 -4
  60. package/dist/{chunk-OUW6G4O2.cjs.map → chunk-HFGXA5CL.cjs.map} +1 -1
  61. package/dist/{chunk-SWQX6CTT.cjs → chunk-JKB7WT7L.cjs} +2 -2
  62. package/dist/chunk-JKB7WT7L.cjs.map +1 -0
  63. package/dist/{chunk-S6BOINC4.cjs → chunk-OGBXV326.cjs} +7 -7
  64. package/dist/{chunk-S6BOINC4.cjs.map → chunk-OGBXV326.cjs.map} +1 -1
  65. package/dist/{chunk-DJM7DLCT.cjs → chunk-OPTBQSCV.cjs} +3 -3
  66. package/dist/{chunk-DJM7DLCT.cjs.map → chunk-OPTBQSCV.cjs.map} +1 -1
  67. package/dist/{chunk-GFYGYME3.js → chunk-OQ7RUNOC.js} +3 -3
  68. package/dist/{chunk-GFYGYME3.js.map → chunk-OQ7RUNOC.js.map} +1 -1
  69. package/dist/{chunk-NYHGG2IA.cjs → chunk-QDEODGXE.cjs} +5 -5
  70. package/dist/{chunk-NYHGG2IA.cjs.map → chunk-QDEODGXE.cjs.map} +1 -1
  71. package/dist/{chunk-6BTCDKCK.js → chunk-QYTYW74G.js} +4 -4
  72. package/dist/{chunk-6BTCDKCK.js.map → chunk-QYTYW74G.js.map} +1 -1
  73. package/dist/{chunk-A7NCSZAP.cjs → chunk-QZTNTP75.cjs} +17 -25
  74. package/dist/chunk-QZTNTP75.cjs.map +1 -0
  75. package/dist/{chunk-OB5F4577.cjs → chunk-R26BK7YL.cjs} +4 -4
  76. package/dist/{chunk-OB5F4577.cjs.map → chunk-R26BK7YL.cjs.map} +1 -1
  77. package/dist/{chunk-A2YAC22G.js → chunk-RI6DZA5X.js} +3 -3
  78. package/dist/{chunk-A2YAC22G.js.map → chunk-RI6DZA5X.js.map} +1 -1
  79. package/dist/{chunk-H2KQ6OSU.js → chunk-SZX44LCT.js} +230 -5
  80. package/dist/chunk-SZX44LCT.js.map +1 -0
  81. package/dist/{chunk-7QDX2CO4.cjs → chunk-TP6PLDNM.cjs} +4 -4
  82. package/dist/{chunk-7QDX2CO4.cjs.map → chunk-TP6PLDNM.cjs.map} +1 -1
  83. package/dist/{chunk-JLTXVW25.cjs → chunk-TT6XV6WM.cjs} +17 -17
  84. package/dist/{chunk-JLTXVW25.cjs.map → chunk-TT6XV6WM.cjs.map} +1 -1
  85. package/dist/{chunk-HSFLEVZY.js → chunk-UMIY4SQS.js} +6 -6
  86. package/dist/{chunk-HSFLEVZY.js.map → chunk-UMIY4SQS.js.map} +1 -1
  87. package/dist/{chunk-ECERC6TI.js → chunk-VHJHY7TT.js} +3 -3
  88. package/dist/{chunk-ECERC6TI.js.map → chunk-VHJHY7TT.js.map} +1 -1
  89. package/dist/{chunk-D3N67Q4D.js → chunk-W3VYZXNS.js} +3 -3
  90. package/dist/{chunk-D3N67Q4D.js.map → chunk-W3VYZXNS.js.map} +1 -1
  91. package/dist/{chunk-JK45LSIH.cjs → chunk-WXYQ66KC.cjs} +5 -5
  92. package/dist/{chunk-JK45LSIH.cjs.map → chunk-WXYQ66KC.cjs.map} +1 -1
  93. package/dist/{chunk-ZCF2JJFA.js → chunk-Y3KA6X7B.js} +3 -3
  94. package/dist/{chunk-ZCF2JJFA.js.map → chunk-Y3KA6X7B.js.map} +1 -1
  95. package/dist/{chunk-GYCQ3FNL.js → chunk-YBLIKTJK.js} +2 -2
  96. package/dist/chunk-YBLIKTJK.js.map +1 -0
  97. package/dist/chunk-YNIBUKV5.js +163 -0
  98. package/dist/chunk-YNIBUKV5.js.map +1 -0
  99. package/dist/citations/index.cjs +12 -11
  100. package/dist/citations/index.js +3 -2
  101. package/dist/collaboration/index.cjs +42 -42
  102. package/dist/collaboration/index.js +2 -2
  103. package/dist/connect/docx.cjs +7 -5
  104. package/dist/connect/docx.cjs.map +1 -1
  105. package/dist/connect/docx.js +6 -4
  106. package/dist/connect/docx.js.map +1 -1
  107. package/dist/connect/index.cjs +237 -194
  108. package/dist/connect/index.cjs.map +1 -1
  109. package/dist/connect/index.d.ts +1 -1
  110. package/dist/connect/index.js +190 -147
  111. package/dist/connect/index.js.map +1 -1
  112. package/dist/connection/ConnectedSettings.d.ts +46 -20
  113. package/dist/connection/ConnectionProvider.d.ts +5 -0
  114. package/dist/connection/mail/ConnectedMailComposer.d.ts +2 -3
  115. package/dist/connection/mail/ConnectedMailbox.d.ts +2 -3
  116. package/dist/connection/mail/MailComposerForm.d.ts +2 -3
  117. package/dist/connection/mail/index.d.ts +2 -2
  118. package/dist/connection/mail/mailbox.d.ts +1 -4
  119. package/dist/connection/mail/types.d.ts +0 -8
  120. package/dist/facts/fact-citations.d.ts +56 -0
  121. package/dist/facts/fact-table-column-resize.d.ts +18 -0
  122. package/dist/facts/index.cjs +197 -10
  123. package/dist/facts/index.cjs.map +1 -1
  124. package/dist/facts/index.d.ts +2 -0
  125. package/dist/facts/index.js +182 -6
  126. package/dist/facts/index.js.map +1 -1
  127. package/dist/files/index.cjs +4 -4
  128. package/dist/files/index.js +3 -3
  129. package/dist/home/index.cjs +20 -19
  130. package/dist/home/index.cjs.map +1 -1
  131. package/dist/home/index.js +5 -4
  132. package/dist/home/index.js.map +1 -1
  133. package/dist/index.cjs +485 -469
  134. package/dist/index.d.ts +2 -1
  135. package/dist/index.js +13 -13
  136. package/dist/provider/BlocksProvider.d.ts +39 -4
  137. package/dist/provider/dialogs.d.ts +31 -0
  138. package/dist/retrieval/index.cjs +5 -4
  139. package/dist/retrieval/index.js +3 -2
  140. package/dist/settings/MoreInfo.d.ts +25 -0
  141. package/dist/settings/PlanCard.d.ts +1 -1
  142. package/dist/settings/index.cjs +106 -252
  143. package/dist/settings/index.cjs.map +1 -1
  144. package/dist/settings/index.d.ts +1 -1
  145. package/dist/settings/index.js +71 -216
  146. package/dist/settings/index.js.map +1 -1
  147. package/dist/shell/index.cjs +48 -47
  148. package/dist/shell/index.js +4 -3
  149. package/dist/studio/index.cjs +15 -14
  150. package/dist/studio/index.cjs.map +1 -1
  151. package/dist/studio/index.js +7 -6
  152. package/dist/studio/index.js.map +1 -1
  153. package/dist/workflow-canvas/index.cjs +14 -14
  154. package/dist/workflow-canvas/index.js +6 -6
  155. package/dist/workspaces/index.cjs +3 -3
  156. package/dist/workspaces/index.js +2 -2
  157. package/node_modules/@arbidocs/coedit/package.json +1 -1
  158. package/package.json +9 -4
  159. package/dist/chunk-3BJLNKOB.cjs.map +0 -1
  160. package/dist/chunk-76JDDMSP.js +0 -31
  161. package/dist/chunk-76JDDMSP.js.map +0 -1
  162. package/dist/chunk-A7NCSZAP.cjs.map +0 -1
  163. package/dist/chunk-C54XEN5T.cjs +0 -34
  164. package/dist/chunk-C54XEN5T.cjs.map +0 -1
  165. package/dist/chunk-CJBN5HIS.js.map +0 -1
  166. package/dist/chunk-DZYAAL4H.cjs.map +0 -1
  167. package/dist/chunk-GYCQ3FNL.js.map +0 -1
  168. package/dist/chunk-H2KQ6OSU.js.map +0 -1
  169. package/dist/chunk-IBZJYCYM.js.map +0 -1
  170. package/dist/chunk-MUMH3Z6K.cjs.map +0 -1
  171. package/dist/chunk-OYMWV45N.js.map +0 -1
  172. package/dist/chunk-SWQX6CTT.cjs.map +0 -1
  173. package/dist/settings/FirmPool.d.ts +0 -82
@@ -5,10 +5,10 @@ import { BlocksTooltipProvider } from './chunk-7XF5SFJ2.js';
5
5
  import { listOptionId } from './chunk-AA3PT6KR.js';
6
6
  import { speakerAccent, speakerDot } from './chunk-Z3AZ7Q5X.js';
7
7
  import { prefixedTestId, testIdOr } from './chunk-7F6CBP3Z.js';
8
- import { Globe, BookOpen, ChevronsUpDown, Search, SquareSlash, PenLine, Pin, X, Network, ArrowLeft, ArrowRight, Crown, Glasses, Zap, Sparkles, Check, Settings, Plus, Bot, Download, MessageCircleQuestion, Clock, Play, Pause, Loader2, MessageSquare, CheckCircle, Tag, AudioLines, User } from 'lucide-react';
8
+ import { Globe, BookOpen, ChevronsUpDown, Search, SquareSlash, Download, PenLine, Pin, X, Network, ArrowLeft, ArrowRight, Crown, Glasses, Zap, Sparkles, Check, Settings, Plus, Bot, MessageCircleQuestion, Clock, Play, Pause, Loader2, MessageSquare, CheckCircle, Tag, AudioLines, User } from 'lucide-react';
9
9
  import { cn, Button, HoverCardContent, Input, Badge, Tooltip, TooltipTrigger, TooltipContent, Popover, PopoverTrigger, PopoverContent, PassageCard, Tabs, TabsList, TabsTrigger, TabsContent } from '@arbidocs/react/ui';
10
10
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
11
- import { memo, useId, useRef, useEffect, forwardRef, useMemo, useState, useCallback, Fragment as Fragment$1 } from 'react';
11
+ import { memo, useId, useRef, useEffect, forwardRef, useState, useMemo, useCallback, Fragment as Fragment$1 } from 'react';
12
12
  import DOMPurify from 'dompurify';
13
13
 
14
14
  // src/chat/participant-tints.ts
@@ -946,6 +946,231 @@ function ThreadMapDiagram({
946
946
  }
947
947
  );
948
948
  }
949
+
950
+ // src/chat/thread-diagram.ts
951
+ var DIAGRAM_COLORS = {
952
+ userBg: "#f1f5f9",
953
+ // slate-100
954
+ assistantBg: "#ffffff",
955
+ stroke: "#cbd5e1",
956
+ // slate-300
957
+ strokeLight: "#e2e8f0",
958
+ // slate-200
959
+ text: "#334155"
960
+ // slate-700
961
+ };
962
+ function escapeLabel(text) {
963
+ return text.replace(/"/g, "&quot;").replace(/'/g, "&apos;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/\[/g, "&#91;").replace(/\]/g, "&#93;").replace(/\(/g, "&#40;").replace(/\)/g, "&#41;").replace(/\{/g, "&#123;").replace(/\}/g, "&#125;");
964
+ }
965
+ function buildThreadDiagram(threads) {
966
+ if (!threads || threads.length === 0) return null;
967
+ const allMessages = /* @__PURE__ */ new Map();
968
+ threads.forEach((thread) => {
969
+ thread.history.forEach((message) => {
970
+ allMessages.set(message.external_id, message);
971
+ });
972
+ });
973
+ const parentToChildren = /* @__PURE__ */ new Map();
974
+ threads.forEach((thread) => {
975
+ thread.history.forEach((message, index) => {
976
+ const messageId = message.external_id;
977
+ let parentId = message.parent_message_ext_id;
978
+ if (!parentId && index > 0) {
979
+ parentId = thread.history[index - 1].external_id;
980
+ console.warn(
981
+ `ThreadVisualizer: Message ${messageId} (${message.role}) missing parent_message_ext_id. Inferred parent: ${parentId}`
982
+ );
983
+ } else if (!parentId) {
984
+ parentId = null;
985
+ }
986
+ if (parentId && !allMessages.has(parentId)) {
987
+ if (index > 0) {
988
+ const fallbackParentId = thread.history[index - 1].external_id;
989
+ console.warn(
990
+ `ThreadVisualizer: Message ${messageId} has invalid parent ${parentId}. Using fallback: ${fallbackParentId}`
991
+ );
992
+ parentId = fallbackParentId;
993
+ } else {
994
+ console.warn(
995
+ `ThreadVisualizer: Message ${messageId} has invalid parent ${parentId} and no fallback. Using root.`
996
+ );
997
+ parentId = null;
998
+ }
999
+ }
1000
+ if (!parentToChildren.has(parentId)) parentToChildren.set(parentId, /* @__PURE__ */ new Set());
1001
+ parentToChildren.get(parentId)?.add(messageId);
1002
+ });
1003
+ });
1004
+ const branchPoints = /* @__PURE__ */ new Set();
1005
+ parentToChildren.forEach((children, parentId) => {
1006
+ if (children.size > 1 && parentId) branchPoints.add(parentId);
1007
+ });
1008
+ allMessages.forEach((message, id) => {
1009
+ if (message.is_branch_point) branchPoints.add(id);
1010
+ });
1011
+ const leafNodes = new Set(threads.map((thread) => thread.leaf_message_ext_id));
1012
+ let diagram = "graph TD\n";
1013
+ diagram += ` classDef user fill:${DIAGRAM_COLORS.userBg},stroke:${DIAGRAM_COLORS.stroke},color:${DIAGRAM_COLORS.text},stroke-width:1px,font-size:12px
1014
+ `;
1015
+ diagram += ` classDef assistant fill:${DIAGRAM_COLORS.assistantBg},stroke:${DIAGRAM_COLORS.strokeLight},color:${DIAGRAM_COLORS.text},stroke-width:1px,font-size:12px
1016
+ `;
1017
+ diagram += ` linkStyle default stroke:${DIAGRAM_COLORS.stroke},stroke-width:1px
1018
+ `;
1019
+ allMessages.forEach((message, id) => {
1020
+ const plain = (message.content || "").replace(/[*_~`#]/g, "");
1021
+ const shortened = plain.substring(0, 180).replace(/\n/g, " ");
1022
+ const content = escapeLabel(shortened) + (shortened.length < plain.length ? "..." : "");
1023
+ let label = `${message.role === "user" ? "User" : "Assistant"}: ${content}`;
1024
+ if (branchPoints.has(id)) label = `${label} \u{1F500}`;
1025
+ if (leafNodes.has(id)) label = `${label} \u{1F3C1}`;
1026
+ diagram += ` ${id}["${label}"]
1027
+ `;
1028
+ diagram += ` class ${id} ${message.role === "user" ? "user" : "assistant"}
1029
+ `;
1030
+ });
1031
+ parentToChildren.forEach((children, parentId) => {
1032
+ children.forEach((childId) => {
1033
+ if (parentId) diagram += ` ${parentId} --> ${childId}
1034
+ `;
1035
+ });
1036
+ });
1037
+ return diagram;
1038
+ }
1039
+ function threadForNode(threads, nodeId) {
1040
+ const messageId = nodeId.replace(/^flowchart-/, "").replace(/-\d+$/, "");
1041
+ if (threads.some((thread) => thread.leaf_message_ext_id === messageId)) return messageId;
1042
+ const containing = threads.find(
1043
+ (thread) => thread.history.some((msg) => msg.external_id === messageId)
1044
+ );
1045
+ return containing ? containing.leaf_message_ext_id : null;
1046
+ }
1047
+ var DEFAULT_THREAD_VISUALIZER_LABELS = {
1048
+ hint: "Click on a message to resume conversation thread.",
1049
+ hintMany: "This conversation has many threads. Click on a message to resume conversation thread."
1050
+ };
1051
+ var mermaidInitialized = false;
1052
+ var mermaidModule = null;
1053
+ async function getMermaid() {
1054
+ if (!mermaidModule) {
1055
+ mermaidModule = (await import('mermaid')).default;
1056
+ }
1057
+ if (!mermaidInitialized) {
1058
+ try {
1059
+ mermaidModule.initialize({
1060
+ startOnLoad: false,
1061
+ flowchart: { useMaxWidth: true, curve: "basis" },
1062
+ securityLevel: "loose"
1063
+ // Required for click interactivity
1064
+ });
1065
+ mermaidInitialized = true;
1066
+ } catch (error) {
1067
+ console.error("Error initializing Mermaid:", error);
1068
+ }
1069
+ }
1070
+ return mermaidModule;
1071
+ }
1072
+ function ThreadVisualizerView({
1073
+ threads,
1074
+ switchToThread,
1075
+ showHeader = true,
1076
+ showDownloadButton = true,
1077
+ className,
1078
+ labels
1079
+ }) {
1080
+ const svgContainerRef = useRef(null);
1081
+ const [isRendering, setIsRendering] = useState(true);
1082
+ const [renderError, setRenderError] = useState(null);
1083
+ const [svgContent, setSvgContent] = useState("");
1084
+ const renderingRef = useRef(false);
1085
+ const mermaidDiagram = useMemo(() => buildThreadDiagram(threads), [threads]);
1086
+ const handleNodeClick = useCallback(
1087
+ (nodeId) => {
1088
+ try {
1089
+ const threadId = threadForNode(threads, nodeId);
1090
+ if (threadId) switchToThread(threadId);
1091
+ } catch (error) {
1092
+ console.error("Error in thread navigation callback:", error);
1093
+ }
1094
+ },
1095
+ [threads, switchToThread]
1096
+ );
1097
+ const saveSvgAsFile = useCallback(() => {
1098
+ if (!svgContent) return;
1099
+ try {
1100
+ const blob = new Blob([svgContent], { type: "image/svg+xml" });
1101
+ const url = URL.createObjectURL(blob);
1102
+ const link = document.createElement("a");
1103
+ link.href = url;
1104
+ link.download = `thread-visualizer-${(/* @__PURE__ */ new Date()).toISOString().split("T")[0]}.svg`;
1105
+ document.body.appendChild(link);
1106
+ link.click();
1107
+ document.body.removeChild(link);
1108
+ URL.revokeObjectURL(url);
1109
+ } catch (error) {
1110
+ console.error("Failed to save SVG:", error);
1111
+ }
1112
+ }, [svgContent]);
1113
+ useEffect(() => {
1114
+ if (renderingRef.current || !mermaidDiagram) return;
1115
+ const renderDiagram = async () => {
1116
+ renderingRef.current = true;
1117
+ setIsRendering(true);
1118
+ setRenderError(null);
1119
+ setSvgContent("");
1120
+ try {
1121
+ const renderDiagramId = `mermaid-${Date.now()}-${Math.random().toString(36).substring(2, 9)}`;
1122
+ const mermaid = await getMermaid();
1123
+ const { svg } = await mermaid.render(renderDiagramId, mermaidDiagram);
1124
+ setSvgContent(svg);
1125
+ setIsRendering(false);
1126
+ } catch (error) {
1127
+ console.error("Error rendering mermaid diagram:", error);
1128
+ setRenderError(error instanceof Error ? error.message : String(error));
1129
+ setIsRendering(false);
1130
+ setSvgContent("");
1131
+ } finally {
1132
+ renderingRef.current = false;
1133
+ }
1134
+ };
1135
+ renderDiagram();
1136
+ }, [mermaidDiagram]);
1137
+ useEffect(() => {
1138
+ if (!svgContent || !svgContainerRef.current) return;
1139
+ const svgElement = svgContainerRef.current.querySelector("svg");
1140
+ if (!svgElement) return;
1141
+ svgElement.style.maxWidth = "100%";
1142
+ svgElement.style.height = "auto";
1143
+ svgElement.style.minHeight = "400px";
1144
+ const textElements = svgElement.getElementsByTagName("text");
1145
+ for (let i = 0; i < textElements.length; i++) {
1146
+ textElements[i].setAttribute("font-family", "system-ui, sans-serif");
1147
+ textElements[i].setAttribute("font-size", "12px");
1148
+ textElements[i].style.fontSize = "12px !important";
1149
+ }
1150
+ svgElement.querySelectorAll("g.node").forEach((element) => {
1151
+ const nodeId = element.getAttribute("id");
1152
+ if (!nodeId) return;
1153
+ element.style.cursor = "pointer";
1154
+ element.addEventListener("click", () => handleNodeClick(nodeId));
1155
+ });
1156
+ }, [svgContent, handleNodeClick]);
1157
+ const l = { ...DEFAULT_THREAD_VISUALIZER_LABELS, ...labels };
1158
+ const hint = showHeader ? threads.length > 5 ? l.hintMany : l.hint : void 0;
1159
+ return /* @__PURE__ */ jsxs(
1160
+ ThreadMap,
1161
+ {
1162
+ hint,
1163
+ onSave: showDownloadButton && svgContent ? saveSvgAsFile : void 0,
1164
+ className,
1165
+ children: [
1166
+ (isRendering || !svgContent || !mermaidDiagram) && !renderError && /* @__PURE__ */ jsx(ThreadMapLoading, {}),
1167
+ renderError && /* @__PURE__ */ jsx(ThreadMapError, { message: renderError }),
1168
+ svgContent && !renderError && /* @__PURE__ */ jsx(ThreadMapDiagram, { svg: svgContent, diagramRef: svgContainerRef })
1169
+ ]
1170
+ }
1171
+ );
1172
+ }
1173
+ var ThreadVisualizer = memo(ThreadVisualizerView);
949
1174
  var LONG_PASTE_CHARACTER_LIMIT = 1e3;
950
1175
  var LONG_PASTE_LINE_LIMIT = 12;
951
1176
  function isLongPastedText(value) {
@@ -1830,6 +2055,6 @@ function transcriptRuns(items, speakerOf, timeOf, gapMs = 2 * 6e4) {
1830
2055
  return continued;
1831
2056
  }
1832
2057
 
1833
- export { AssistantToaster, BranchControls, ComposerAccessories, ComposerTools, ContextActionButton, ContextCheckRow, ContextPanelContent, ContextPanelFooter, ContextPanelTabs, ContextPickerList, ContextPickerRow, ContextSearchInput, ContextSelectList, ContextSelectRow, Conversation, ConversationBody, ConversationFilter, ConversationHeader, ConversationHeaderActions, ConversationHistoryPane, ConversationLoading, ConversationMain, ConversationRoot, ConversationSearchView, ConversationSettingsButton, DEFAULT_BRANCH_CONTROLS_LABELS, DEFAULT_CONVERSATION_LAYOUT_LABELS, DEFAULT_CONVERSATION_PARTS_LABELS, DEFAULT_CONVERSATION_SEARCH_LABELS, DEFAULT_DRAFTING_DOC_CHIP_LABELS, DEFAULT_LABEL_PIN_ROW_LABELS, DEFAULT_MODEL_PRICING_TIP_LABELS, DEFAULT_PENDING_ANSWER_BAR_LABELS, DEFAULT_PINNED_DOC_CHIP_LABELS, DEFAULT_SLASH_MENU_LABELS, DEFAULT_THREAD_MAP_LABELS, DraftingDocChip, LabelPinRow, ModelAutoIcon, ModelConfigureButton, ModelDot, ModelMenuDivider, ModelMenuMessage, ModelOption, ModelOptionLabel, ModelPickerPopover, ModelPickerTrigger, ModelPricingTip, ModelTierIcon, ModelTierOption, ModelTriggerContent, NewChatButton, NewPaChatButton, PaModeBadge, PendingAnswerBar, PinnedDocChip, ProvisionalTranscriptLine, SlashMenu, ThreadMap, ThreadMapDiagram, ThreadMapError, ThreadMapLoading, TranscriptLine, flashMessage, getParticipantTints, hasMessageBody, isLongPastedText, transcriptRuns, useDismissibleCard, useLongPaste, useRecipientDraft };
1834
- //# sourceMappingURL=chunk-H2KQ6OSU.js.map
1835
- //# sourceMappingURL=chunk-H2KQ6OSU.js.map
2058
+ export { AssistantToaster, BranchControls, ComposerAccessories, ComposerTools, ContextActionButton, ContextCheckRow, ContextPanelContent, ContextPanelFooter, ContextPanelTabs, ContextPickerList, ContextPickerRow, ContextSearchInput, ContextSelectList, ContextSelectRow, Conversation, ConversationBody, ConversationFilter, ConversationHeader, ConversationHeaderActions, ConversationHistoryPane, ConversationLoading, ConversationMain, ConversationRoot, ConversationSearchView, ConversationSettingsButton, DEFAULT_BRANCH_CONTROLS_LABELS, DEFAULT_CONVERSATION_LAYOUT_LABELS, DEFAULT_CONVERSATION_PARTS_LABELS, DEFAULT_CONVERSATION_SEARCH_LABELS, DEFAULT_DRAFTING_DOC_CHIP_LABELS, DEFAULT_LABEL_PIN_ROW_LABELS, DEFAULT_MODEL_PRICING_TIP_LABELS, DEFAULT_PENDING_ANSWER_BAR_LABELS, DEFAULT_PINNED_DOC_CHIP_LABELS, DEFAULT_SLASH_MENU_LABELS, DEFAULT_THREAD_MAP_LABELS, DEFAULT_THREAD_VISUALIZER_LABELS, DraftingDocChip, LabelPinRow, ModelAutoIcon, ModelConfigureButton, ModelDot, ModelMenuDivider, ModelMenuMessage, ModelOption, ModelOptionLabel, ModelPickerPopover, ModelPickerTrigger, ModelPricingTip, ModelTierIcon, ModelTierOption, ModelTriggerContent, NewChatButton, NewPaChatButton, PaModeBadge, PendingAnswerBar, PinnedDocChip, ProvisionalTranscriptLine, SlashMenu, ThreadMap, ThreadMapDiagram, ThreadMapError, ThreadMapLoading, ThreadVisualizer, TranscriptLine, buildThreadDiagram, flashMessage, getParticipantTints, hasMessageBody, isLongPastedText, threadForNode, transcriptRuns, useDismissibleCard, useLongPaste, useRecipientDraft };
2059
+ //# sourceMappingURL=chunk-SZX44LCT.js.map
2060
+ //# sourceMappingURL=chunk-SZX44LCT.js.map