@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
@@ -952,6 +952,231 @@ function ThreadMapDiagram({
952
952
  }
953
953
  );
954
954
  }
955
+
956
+ // src/chat/thread-diagram.ts
957
+ var DIAGRAM_COLORS = {
958
+ userBg: "#f1f5f9",
959
+ // slate-100
960
+ assistantBg: "#ffffff",
961
+ stroke: "#cbd5e1",
962
+ // slate-300
963
+ strokeLight: "#e2e8f0",
964
+ // slate-200
965
+ text: "#334155"
966
+ // slate-700
967
+ };
968
+ function escapeLabel(text) {
969
+ 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;");
970
+ }
971
+ function buildThreadDiagram(threads) {
972
+ if (!threads || threads.length === 0) return null;
973
+ const allMessages = /* @__PURE__ */ new Map();
974
+ threads.forEach((thread) => {
975
+ thread.history.forEach((message) => {
976
+ allMessages.set(message.external_id, message);
977
+ });
978
+ });
979
+ const parentToChildren = /* @__PURE__ */ new Map();
980
+ threads.forEach((thread) => {
981
+ thread.history.forEach((message, index) => {
982
+ const messageId = message.external_id;
983
+ let parentId = message.parent_message_ext_id;
984
+ if (!parentId && index > 0) {
985
+ parentId = thread.history[index - 1].external_id;
986
+ console.warn(
987
+ `ThreadVisualizer: Message ${messageId} (${message.role}) missing parent_message_ext_id. Inferred parent: ${parentId}`
988
+ );
989
+ } else if (!parentId) {
990
+ parentId = null;
991
+ }
992
+ if (parentId && !allMessages.has(parentId)) {
993
+ if (index > 0) {
994
+ const fallbackParentId = thread.history[index - 1].external_id;
995
+ console.warn(
996
+ `ThreadVisualizer: Message ${messageId} has invalid parent ${parentId}. Using fallback: ${fallbackParentId}`
997
+ );
998
+ parentId = fallbackParentId;
999
+ } else {
1000
+ console.warn(
1001
+ `ThreadVisualizer: Message ${messageId} has invalid parent ${parentId} and no fallback. Using root.`
1002
+ );
1003
+ parentId = null;
1004
+ }
1005
+ }
1006
+ if (!parentToChildren.has(parentId)) parentToChildren.set(parentId, /* @__PURE__ */ new Set());
1007
+ parentToChildren.get(parentId)?.add(messageId);
1008
+ });
1009
+ });
1010
+ const branchPoints = /* @__PURE__ */ new Set();
1011
+ parentToChildren.forEach((children, parentId) => {
1012
+ if (children.size > 1 && parentId) branchPoints.add(parentId);
1013
+ });
1014
+ allMessages.forEach((message, id) => {
1015
+ if (message.is_branch_point) branchPoints.add(id);
1016
+ });
1017
+ const leafNodes = new Set(threads.map((thread) => thread.leaf_message_ext_id));
1018
+ let diagram = "graph TD\n";
1019
+ diagram += ` classDef user fill:${DIAGRAM_COLORS.userBg},stroke:${DIAGRAM_COLORS.stroke},color:${DIAGRAM_COLORS.text},stroke-width:1px,font-size:12px
1020
+ `;
1021
+ diagram += ` classDef assistant fill:${DIAGRAM_COLORS.assistantBg},stroke:${DIAGRAM_COLORS.strokeLight},color:${DIAGRAM_COLORS.text},stroke-width:1px,font-size:12px
1022
+ `;
1023
+ diagram += ` linkStyle default stroke:${DIAGRAM_COLORS.stroke},stroke-width:1px
1024
+ `;
1025
+ allMessages.forEach((message, id) => {
1026
+ const plain = (message.content || "").replace(/[*_~`#]/g, "");
1027
+ const shortened = plain.substring(0, 180).replace(/\n/g, " ");
1028
+ const content = escapeLabel(shortened) + (shortened.length < plain.length ? "..." : "");
1029
+ let label = `${message.role === "user" ? "User" : "Assistant"}: ${content}`;
1030
+ if (branchPoints.has(id)) label = `${label} \u{1F500}`;
1031
+ if (leafNodes.has(id)) label = `${label} \u{1F3C1}`;
1032
+ diagram += ` ${id}["${label}"]
1033
+ `;
1034
+ diagram += ` class ${id} ${message.role === "user" ? "user" : "assistant"}
1035
+ `;
1036
+ });
1037
+ parentToChildren.forEach((children, parentId) => {
1038
+ children.forEach((childId) => {
1039
+ if (parentId) diagram += ` ${parentId} --> ${childId}
1040
+ `;
1041
+ });
1042
+ });
1043
+ return diagram;
1044
+ }
1045
+ function threadForNode(threads, nodeId) {
1046
+ const messageId = nodeId.replace(/^flowchart-/, "").replace(/-\d+$/, "");
1047
+ if (threads.some((thread) => thread.leaf_message_ext_id === messageId)) return messageId;
1048
+ const containing = threads.find(
1049
+ (thread) => thread.history.some((msg) => msg.external_id === messageId)
1050
+ );
1051
+ return containing ? containing.leaf_message_ext_id : null;
1052
+ }
1053
+ var DEFAULT_THREAD_VISUALIZER_LABELS = {
1054
+ hint: "Click on a message to resume conversation thread.",
1055
+ hintMany: "This conversation has many threads. Click on a message to resume conversation thread."
1056
+ };
1057
+ var mermaidInitialized = false;
1058
+ var mermaidModule = null;
1059
+ async function getMermaid() {
1060
+ if (!mermaidModule) {
1061
+ mermaidModule = (await import('mermaid')).default;
1062
+ }
1063
+ if (!mermaidInitialized) {
1064
+ try {
1065
+ mermaidModule.initialize({
1066
+ startOnLoad: false,
1067
+ flowchart: { useMaxWidth: true, curve: "basis" },
1068
+ securityLevel: "loose"
1069
+ // Required for click interactivity
1070
+ });
1071
+ mermaidInitialized = true;
1072
+ } catch (error) {
1073
+ console.error("Error initializing Mermaid:", error);
1074
+ }
1075
+ }
1076
+ return mermaidModule;
1077
+ }
1078
+ function ThreadVisualizerView({
1079
+ threads,
1080
+ switchToThread,
1081
+ showHeader = true,
1082
+ showDownloadButton = true,
1083
+ className,
1084
+ labels
1085
+ }) {
1086
+ const svgContainerRef = react.useRef(null);
1087
+ const [isRendering, setIsRendering] = react.useState(true);
1088
+ const [renderError, setRenderError] = react.useState(null);
1089
+ const [svgContent, setSvgContent] = react.useState("");
1090
+ const renderingRef = react.useRef(false);
1091
+ const mermaidDiagram = react.useMemo(() => buildThreadDiagram(threads), [threads]);
1092
+ const handleNodeClick = react.useCallback(
1093
+ (nodeId) => {
1094
+ try {
1095
+ const threadId = threadForNode(threads, nodeId);
1096
+ if (threadId) switchToThread(threadId);
1097
+ } catch (error) {
1098
+ console.error("Error in thread navigation callback:", error);
1099
+ }
1100
+ },
1101
+ [threads, switchToThread]
1102
+ );
1103
+ const saveSvgAsFile = react.useCallback(() => {
1104
+ if (!svgContent) return;
1105
+ try {
1106
+ const blob = new Blob([svgContent], { type: "image/svg+xml" });
1107
+ const url = URL.createObjectURL(blob);
1108
+ const link = document.createElement("a");
1109
+ link.href = url;
1110
+ link.download = `thread-visualizer-${(/* @__PURE__ */ new Date()).toISOString().split("T")[0]}.svg`;
1111
+ document.body.appendChild(link);
1112
+ link.click();
1113
+ document.body.removeChild(link);
1114
+ URL.revokeObjectURL(url);
1115
+ } catch (error) {
1116
+ console.error("Failed to save SVG:", error);
1117
+ }
1118
+ }, [svgContent]);
1119
+ react.useEffect(() => {
1120
+ if (renderingRef.current || !mermaidDiagram) return;
1121
+ const renderDiagram = async () => {
1122
+ renderingRef.current = true;
1123
+ setIsRendering(true);
1124
+ setRenderError(null);
1125
+ setSvgContent("");
1126
+ try {
1127
+ const renderDiagramId = `mermaid-${Date.now()}-${Math.random().toString(36).substring(2, 9)}`;
1128
+ const mermaid = await getMermaid();
1129
+ const { svg } = await mermaid.render(renderDiagramId, mermaidDiagram);
1130
+ setSvgContent(svg);
1131
+ setIsRendering(false);
1132
+ } catch (error) {
1133
+ console.error("Error rendering mermaid diagram:", error);
1134
+ setRenderError(error instanceof Error ? error.message : String(error));
1135
+ setIsRendering(false);
1136
+ setSvgContent("");
1137
+ } finally {
1138
+ renderingRef.current = false;
1139
+ }
1140
+ };
1141
+ renderDiagram();
1142
+ }, [mermaidDiagram]);
1143
+ react.useEffect(() => {
1144
+ if (!svgContent || !svgContainerRef.current) return;
1145
+ const svgElement = svgContainerRef.current.querySelector("svg");
1146
+ if (!svgElement) return;
1147
+ svgElement.style.maxWidth = "100%";
1148
+ svgElement.style.height = "auto";
1149
+ svgElement.style.minHeight = "400px";
1150
+ const textElements = svgElement.getElementsByTagName("text");
1151
+ for (let i = 0; i < textElements.length; i++) {
1152
+ textElements[i].setAttribute("font-family", "system-ui, sans-serif");
1153
+ textElements[i].setAttribute("font-size", "12px");
1154
+ textElements[i].style.fontSize = "12px !important";
1155
+ }
1156
+ svgElement.querySelectorAll("g.node").forEach((element) => {
1157
+ const nodeId = element.getAttribute("id");
1158
+ if (!nodeId) return;
1159
+ element.style.cursor = "pointer";
1160
+ element.addEventListener("click", () => handleNodeClick(nodeId));
1161
+ });
1162
+ }, [svgContent, handleNodeClick]);
1163
+ const l = { ...DEFAULT_THREAD_VISUALIZER_LABELS, ...labels };
1164
+ const hint = showHeader ? threads.length > 5 ? l.hintMany : l.hint : void 0;
1165
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1166
+ ThreadMap,
1167
+ {
1168
+ hint,
1169
+ onSave: showDownloadButton && svgContent ? saveSvgAsFile : void 0,
1170
+ className,
1171
+ children: [
1172
+ (isRendering || !svgContent || !mermaidDiagram) && !renderError && /* @__PURE__ */ jsxRuntime.jsx(ThreadMapLoading, {}),
1173
+ renderError && /* @__PURE__ */ jsxRuntime.jsx(ThreadMapError, { message: renderError }),
1174
+ svgContent && !renderError && /* @__PURE__ */ jsxRuntime.jsx(ThreadMapDiagram, { svg: svgContent, diagramRef: svgContainerRef })
1175
+ ]
1176
+ }
1177
+ );
1178
+ }
1179
+ var ThreadVisualizer = react.memo(ThreadVisualizerView);
955
1180
  var LONG_PASTE_CHARACTER_LIMIT = 1e3;
956
1181
  var LONG_PASTE_LINE_LIMIT = 12;
957
1182
  function isLongPastedText(value) {
@@ -1872,6 +2097,7 @@ exports.DEFAULT_PENDING_ANSWER_BAR_LABELS = DEFAULT_PENDING_ANSWER_BAR_LABELS;
1872
2097
  exports.DEFAULT_PINNED_DOC_CHIP_LABELS = DEFAULT_PINNED_DOC_CHIP_LABELS;
1873
2098
  exports.DEFAULT_SLASH_MENU_LABELS = DEFAULT_SLASH_MENU_LABELS;
1874
2099
  exports.DEFAULT_THREAD_MAP_LABELS = DEFAULT_THREAD_MAP_LABELS;
2100
+ exports.DEFAULT_THREAD_VISUALIZER_LABELS = DEFAULT_THREAD_VISUALIZER_LABELS;
1875
2101
  exports.DraftingDocChip = DraftingDocChip;
1876
2102
  exports.LabelPinRow = LabelPinRow;
1877
2103
  exports.ModelAutoIcon = ModelAutoIcon;
@@ -1898,14 +2124,17 @@ exports.ThreadMap = ThreadMap;
1898
2124
  exports.ThreadMapDiagram = ThreadMapDiagram;
1899
2125
  exports.ThreadMapError = ThreadMapError;
1900
2126
  exports.ThreadMapLoading = ThreadMapLoading;
2127
+ exports.ThreadVisualizer = ThreadVisualizer;
1901
2128
  exports.TranscriptLine = TranscriptLine;
2129
+ exports.buildThreadDiagram = buildThreadDiagram;
1902
2130
  exports.flashMessage = flashMessage;
1903
2131
  exports.getParticipantTints = getParticipantTints;
1904
2132
  exports.hasMessageBody = hasMessageBody;
1905
2133
  exports.isLongPastedText = isLongPastedText;
2134
+ exports.threadForNode = threadForNode;
1906
2135
  exports.transcriptRuns = transcriptRuns;
1907
2136
  exports.useDismissibleCard = useDismissibleCard;
1908
2137
  exports.useLongPaste = useLongPaste;
1909
2138
  exports.useRecipientDraft = useRecipientDraft;
1910
- //# sourceMappingURL=chunk-DZYAAL4H.cjs.map
1911
- //# sourceMappingURL=chunk-DZYAAL4H.cjs.map
2139
+ //# sourceMappingURL=chunk-4S5IDT5F.cjs.map
2140
+ //# sourceMappingURL=chunk-4S5IDT5F.cjs.map