@marimo-team/frontend 0.16.1 → 0.16.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/dist/assets/{ConnectedDataExplorerComponent-2wVcyvDj.js → ConnectedDataExplorerComponent-B5cPvWoQ.js} +1 -1
  2. package/dist/assets/{ImageComparisonComponent-D2j6i0hv.js → ImageComparisonComponent-CqR26LSv.js} +1 -1
  3. package/dist/assets/{VegaLite-BckFaf2D.js → VegaLite-DvQDATwI.js} +1 -1
  4. package/dist/assets/_baseEach--KDTwKbG.js +1 -0
  5. package/dist/assets/_baseMap-Cu3o-eyO.js +1 -0
  6. package/dist/assets/{_baseUniq-BKktIGQ1.js → _baseUniq-y7ZXnMo1.js} +1 -1
  7. package/dist/assets/{_createAggregator-C5CVY-0t.js → _createAggregator-ZcHkHPNJ.js} +1 -1
  8. package/dist/assets/{agent-panel-RGLNjkYe.js → agent-panel-B91RoLct.js} +6 -6
  9. package/dist/assets/{any-language-editor-DjuXwGCA.js → any-language-editor-CxfHcm5h.js} +1 -1
  10. package/dist/assets/{architectureDiagram-W76B3OCA-Dyj4ds_R.js → architectureDiagram-W76B3OCA-BQsvK8uR.js} +1 -1
  11. package/dist/assets/{between-horizontal-start-Dt2aKpPf.js → between-horizontal-start-BmYToIaM.js} +1 -1
  12. package/dist/assets/{blockDiagram-QIGZ2CNN-o-i7DDvN.js → blockDiagram-QIGZ2CNN-r3HgCj4w.js} +1 -1
  13. package/dist/assets/{c4Diagram-FPNF74CW-DGHEwWrx.js → c4Diagram-FPNF74CW-BJbPNt41.js} +1 -1
  14. package/dist/assets/channel-DFaEx1fu.js +1 -0
  15. package/dist/assets/{chat-panel-9alr8FS4.js → chat-panel-IoPMv8e2.js} +3 -3
  16. package/dist/assets/{chunk-4BX2VUAB-BJecb-Ri.js → chunk-4BX2VUAB-Dv4MZ9Hj.js} +1 -1
  17. package/dist/assets/{chunk-55IACEB6-CAATkc4w.js → chunk-55IACEB6-CM4AHquB.js} +1 -1
  18. package/dist/assets/{chunk-FMBD7UC4-DPuNbQ-f.js → chunk-FMBD7UC4-C_Zz0ENB.js} +1 -1
  19. package/dist/assets/{chunk-K7UQS3LO-C8TWVLiH.js → chunk-K7UQS3LO-DYSmiXYq.js} +1 -1
  20. package/dist/assets/{chunk-QN33PNHL-DiZZ09q4.js → chunk-QN33PNHL-QM4OPuQP.js} +1 -1
  21. package/dist/assets/{chunk-QZHKN3VN-BIUM7usu.js → chunk-QZHKN3VN-CfAsGyeB.js} +1 -1
  22. package/dist/assets/{chunk-TVAH2DTR-vGTArPBG.js → chunk-TVAH2DTR-6j_Cpjsi.js} +1 -1
  23. package/dist/assets/{chunk-TZMSLE5B-D2KRqp_x.js → chunk-TZMSLE5B-BHslFJQE.js} +1 -1
  24. package/dist/assets/{circle-play-cjeNez0N.js → circle-play-CK3UZRYQ.js} +1 -1
  25. package/dist/assets/classDiagram-KNZD7YFC-BsZtvV5O.js +1 -0
  26. package/dist/assets/classDiagram-v2-RKCZMP56-BsZtvV5O.js +1 -0
  27. package/dist/assets/{clear-button-C97JtAez.js → clear-button-C4fDVSv8.js} +1 -1
  28. package/dist/assets/clone-YBEvPE-s.js +1 -0
  29. package/dist/assets/command-palette-D7hOfvf6.js +1 -0
  30. package/dist/assets/{common-Du9rSOwD.js → common-D-lbuUwz.js} +1 -1
  31. package/dist/assets/{compile-CZXqyOxa.js → compile-DVQe1Mzk.js} +1 -1
  32. package/dist/assets/{cose-bilkent-S5V4N54A-CqUN5Y9b.js → cose-bilkent-S5V4N54A-D-IS7WC8.js} +1 -1
  33. package/dist/assets/{dagre-5GWH7T2D-RJqTI9DM.js → dagre-5GWH7T2D-lYu-tEWT.js} +1 -1
  34. package/dist/assets/{data-grid-overlay-editor-DZN0q1LV.js → data-grid-overlay-editor-C5peOCit.js} +1 -1
  35. package/dist/assets/datasources-panel-D3NA20uZ.js +1 -0
  36. package/dist/assets/{dependency-graph-panel-CEog_O7V.js → dependency-graph-panel-BGVYOfkV.js} +1 -1
  37. package/dist/assets/{diagram-N5W7TBWH-D-l4zZ9d.js → diagram-N5W7TBWH-BnvIuYUp.js} +1 -1
  38. package/dist/assets/{diagram-QEK2KX5R-CCOmBUt-.js → diagram-QEK2KX5R-DemedRK3.js} +1 -1
  39. package/dist/assets/{diagram-S2PKOQOG-C_I_9jnZ.js → diagram-S2PKOQOG-iiY7AuyH.js} +1 -1
  40. package/dist/assets/{documentation-panel-C1BtMZ3M.js → documentation-panel-C3dSwOSQ.js} +1 -1
  41. package/dist/assets/{edit-page-B-oevUZ9.js → edit-page-C5TsEeSo.js} +17 -17
  42. package/dist/assets/{ellipsis-vertical-BEb-J8z6.js → ellipsis-vertical-CazJl8M7.js} +1 -1
  43. package/dist/assets/{empty-state-C99UyDE3.js → empty-state-DW308mFO.js} +1 -1
  44. package/dist/assets/{erDiagram-AWTI2OKA-BePOLi5M.js → erDiagram-AWTI2OKA-6wQ8Ugg0.js} +1 -1
  45. package/dist/assets/{error-panel-Bs34jXFh.js → error-panel-D1VnJ1yP.js} +1 -1
  46. package/dist/assets/{file-explorer-panel-Ck6UL861.js → file-explorer-panel-0oVd4t-D.js} +1 -1
  47. package/dist/assets/{flowDiagram-PVAE7QVJ-BgjFu5l7.js → flowDiagram-PVAE7QVJ-C55IUWjm.js} +1 -1
  48. package/dist/assets/{ganttDiagram-OWAHRB6G-YOPb3XSV.js → ganttDiagram-OWAHRB6G-DmqCM6ME.js} +1 -1
  49. package/dist/assets/{gitGraphDiagram-NY62KEGX-CGhqaDTy.js → gitGraphDiagram-NY62KEGX-DBvhAeM_.js} +1 -1
  50. package/dist/assets/{glide-data-editor-9QUH6iso.js → glide-data-editor-CHNuHidQ.js} +11 -11
  51. package/dist/assets/{graph-DQQFGrho.js → graph-CG6BgUWQ.js} +1 -1
  52. package/dist/assets/{home-page-DRKpPCrF.js → home-page-dgivXuSR.js} +3 -3
  53. package/dist/assets/{index-SGLNXrGP.js → index-BTGpssVX.js} +1 -1
  54. package/dist/assets/{index-Aeo6WiK7.js → index-BYVZlBF8.js} +1 -1
  55. package/dist/assets/{index-CUFv_thQ.js → index-BelfnXwL.js} +1 -1
  56. package/dist/assets/{index-DdnKZNxM.js → index-BneyUujp.js} +1 -1
  57. package/dist/assets/{index-BJNCMUmG.js → index-C02SqeRj.js} +1 -1
  58. package/dist/assets/{index-aE43R74q.js → index-C7dtgr9A.js} +1 -1
  59. package/dist/assets/{index-C2MD0vgD.js → index-CAQvMTzM.js} +1 -1
  60. package/dist/assets/index-CGDMlQfO.css +1 -0
  61. package/dist/assets/index-CelXfcd8.js +580 -0
  62. package/dist/assets/{index-C_tkBKNO.js → index-Csd6QrCV.js} +1 -1
  63. package/dist/assets/{index-BAbIIxHU.js → index-CtPksxf0.js} +1 -1
  64. package/dist/assets/{index-2252nrk6.js → index-Cxyk7pt-.js} +1 -1
  65. package/dist/assets/{index-BW3k9Gss.js → index-DAZ-9ri2.js} +1 -1
  66. package/dist/assets/{index-ClzeQrN7.js → index-DONRrmA2.js} +1 -1
  67. package/dist/assets/{index-B8jXZ12t.js → index-Db36XTG_.js} +1 -1
  68. package/dist/assets/{index-BprjMYH5.js → index-DdIhdEVw.js} +1 -1
  69. package/dist/assets/{index-CFKO7WXI.js → index-M_pBKDSe.js} +1 -1
  70. package/dist/assets/{index-CfaDbEdi.js → index-_luCZMLM.js} +1 -1
  71. package/dist/assets/{index-BjgnbONl.js → index-mkubqy9-.js} +1 -1
  72. package/dist/assets/{index-C1ez98sk.js → index-sbO9UaUU.js} +1 -1
  73. package/dist/assets/{index-G5QZppK2.js → index-z4krxQ4j.js} +1 -1
  74. package/dist/assets/infoDiagram-STP46IZ2-wTALjfPc.js +2 -0
  75. package/dist/assets/{isEmpty-D-4c7sMv.js → isEmpty-CqX_YTIf.js} +1 -1
  76. package/dist/assets/{journeyDiagram-BIP6EPQ6-C94u3Mv3.js → journeyDiagram-BIP6EPQ6-Y5w_Tqe_.js} +1 -1
  77. package/dist/assets/{kanban-definition-6OIFK2YF-BEXYFzz7.js → kanban-definition-6OIFK2YF-DbXs5Rxi.js} +1 -1
  78. package/dist/assets/{layout-Bz2BJ2ru.js → layout-BCNPDACj.js} +1 -1
  79. package/dist/assets/{linear-D8s7K76e.js → linear-uO6UVhXt.js} +1 -1
  80. package/dist/assets/{links-BpXlz1GG.js → links-Drv7cJgN.js} +3 -3
  81. package/dist/assets/{logs-panel-DC7wpmPz.js → logs-panel-BEQ1eRUp.js} +1 -1
  82. package/dist/assets/{markdown-renderer-DRdSWR9X.js → markdown-renderer-Dmzbb00W.js} +3 -3
  83. package/dist/assets/{mermaid-Y3x4hmD0.js → mermaid-qRc4MXIj.js} +1 -1
  84. package/dist/assets/{mermaid.core-DzthE35Y.js → mermaid.core-CvvJtCRj.js} +4 -4
  85. package/dist/assets/min-DYUOb1RR.js +1 -0
  86. package/dist/assets/{mindmap-definition-Q6HEUPPD-DktvuLe1.js → mindmap-definition-Q6HEUPPD-G5NognM-.js} +1 -1
  87. package/dist/assets/{number-overlay-editor-BEfwI1IT.js → number-overlay-editor-DPr5sHFu.js} +1 -1
  88. package/dist/assets/{outline-panel-CdsnAy2w.js → outline-panel-gxQXvVi4.js} +1 -1
  89. package/dist/assets/{packages-panel-DiTA-d_D.js → packages-panel-B1T0VPlg.js} +1 -1
  90. package/dist/assets/{pieDiagram-ADFJNKIX-DQDNQ-de.js → pieDiagram-ADFJNKIX-DK9SHkfc.js} +1 -1
  91. package/dist/assets/{quadrantDiagram-LMRXKWRM-0kgIXc2-.js → quadrantDiagram-LMRXKWRM-D1DdWF8C.js} +1 -1
  92. package/dist/assets/{react-plotly-DJqqfM7c.js → react-plotly-CTwajqCb.js} +1 -1
  93. package/dist/assets/{requirementDiagram-4UW4RH46-B5rb0ypd.js → requirementDiagram-4UW4RH46-DnjDAypr.js} +1 -1
  94. package/dist/assets/{run-page-CFmLrv1R.js → run-page-CQY9im22.js} +1 -1
  95. package/dist/assets/{sankeyDiagram-GR3RE2ED-Dom7IlnF.js → sankeyDiagram-GR3RE2ED-B67Va-ER.js} +1 -1
  96. package/dist/assets/{scratchpad-panel-CuHWpHO8.js → scratchpad-panel-DlDfcDtW.js} +1 -1
  97. package/dist/assets/{secrets-panel-CfHc5YD0.js → secrets-panel-BDGyuGZA.js} +1 -1
  98. package/dist/assets/{sequenceDiagram-C3RYC4MD-PNJWXQbw.js → sequenceDiagram-C3RYC4MD-DiWgZPtN.js} +1 -1
  99. package/dist/assets/{slides-component-CJgaTRZ0.js → slides-component-DhpPRtQp.js} +1 -1
  100. package/dist/assets/{snippets-panel-B2EC1txM.js → snippets-panel-CLkBXhJ2.js} +1 -1
  101. package/dist/assets/{sortBy-DZnlX29-.js → sortBy-D4OG7w4O.js} +1 -1
  102. package/dist/assets/{state-CWict9RU.js → state-Dz_3JyED.js} +1 -1
  103. package/dist/assets/{stateDiagram-KXAO66HF-BE58aJnr.js → stateDiagram-KXAO66HF-ByF2AULw.js} +1 -1
  104. package/dist/assets/stateDiagram-v2-UMBNRL4Z-CtBJqosP.js +1 -0
  105. package/dist/assets/{storage-DRaR04wR.js → storage-Dr0CC44z.js} +6 -6
  106. package/dist/assets/{terminal-BX3Su5q7.js → terminal-BtdissBf.js} +1 -1
  107. package/dist/assets/{time-hUzZfpNE.js → time-DKdOTnQg.js} +1 -1
  108. package/dist/assets/{timeline-definition-XQNQX7LJ-CqQP9t51.js → timeline-definition-XQNQX7LJ-DzER9bf6.js} +1 -1
  109. package/dist/assets/{tracing-B10Q1n-L.js → tracing-Dpx5M-u3.js} +2 -2
  110. package/dist/assets/{tracing-panel-Du8WCnno.js → tracing-panel-hCjBkSER.js} +2 -2
  111. package/dist/assets/{trash-B81GTiv6.js → trash-C6Ko-g5q.js} +1 -1
  112. package/dist/assets/{tree-6vW2ogkh.js → tree-BHN2gcCF.js} +6 -6
  113. package/dist/assets/{treemap-75Q7IDZK-CdwDwwsz.js → treemap-75Q7IDZK-DR79Mhzt.js} +1 -1
  114. package/dist/assets/{variable-panel-D5qgJI7k.js → variable-panel-PFBCFz36.js} +1 -1
  115. package/dist/assets/{vega-component-DJaJWMJM.js → vega-component-Db6-uY4C.js} +1 -1
  116. package/dist/assets/{xychartDiagram-6GGTOJPD-WFtXqaM9.js → xychartDiagram-6GGTOJPD-DWzBP3tZ.js} +1 -1
  117. package/dist/index.html +2 -2
  118. package/package.json +3 -3
  119. package/src/__mocks__/requests.ts +1 -0
  120. package/src/components/data-table/__tests__/columns.test.tsx +38 -0
  121. package/src/components/data-table/cell-hover-template/feature.ts +1 -1
  122. package/src/components/data-table/cell-hover-template/types.ts +1 -1
  123. package/src/components/data-table/columns.tsx +21 -2
  124. package/src/components/data-table/renderers.tsx +16 -8
  125. package/src/components/data-table/schemas.ts +16 -0
  126. package/src/components/editor/Cell.tsx +2 -0
  127. package/src/components/editor/errors/sql-validation-errors.tsx +34 -0
  128. package/src/components/editor/output/ConsoleOutput.tsx +13 -1
  129. package/src/components/editor/output/MarimoErrorOutput.tsx +60 -1
  130. package/src/core/ai/context/providers/cell-output.ts +1 -18
  131. package/src/core/codemirror/language/__tests__/extension.test.ts +24 -0
  132. package/src/core/codemirror/language/__tests__/sql-validation.test.ts +133 -0
  133. package/src/core/codemirror/language/languages/sql/sql-mode.ts +20 -0
  134. package/src/core/codemirror/language/languages/sql/sql.ts +90 -3
  135. package/src/core/codemirror/language/languages/sql/validation-errors.ts +79 -0
  136. package/src/core/codemirror/language/panel/panel.tsx +8 -2
  137. package/src/core/codemirror/language/panel/sql.tsx +81 -4
  138. package/src/core/config/feature-flag.tsx +3 -1
  139. package/src/core/datasets/request-registry.ts +17 -1
  140. package/src/core/islands/bridge.ts +1 -0
  141. package/src/core/islands/main.ts +1 -0
  142. package/src/core/kernel/messages.ts +1 -0
  143. package/src/core/network/requests-network.ts +7 -0
  144. package/src/core/network/requests-static.ts +1 -0
  145. package/src/core/network/requests-toasting.ts +1 -0
  146. package/src/core/network/types.ts +2 -0
  147. package/src/core/wasm/bridge.ts +5 -0
  148. package/src/core/websocket/useMarimoWebSocket.tsx +4 -0
  149. package/src/plugins/core/registerReactComponent.tsx +23 -19
  150. package/src/plugins/impl/DataTablePlugin.tsx +11 -4
  151. package/src/plugins/impl/data-frames/DataFramePlugin.tsx +17 -5
  152. package/src/stories/dataframe.stories.tsx +2 -0
  153. package/src/utils/__tests__/dom.test.ts +167 -0
  154. package/src/utils/dom.ts +55 -0
  155. package/dist/assets/_baseEach-CvTX9w0Y.js +0 -1
  156. package/dist/assets/_baseMap-CtlwA90f.js +0 -1
  157. package/dist/assets/channel-Co6iMgWq.js +0 -1
  158. package/dist/assets/classDiagram-KNZD7YFC-BbJ0rY3y.js +0 -1
  159. package/dist/assets/classDiagram-v2-RKCZMP56-BbJ0rY3y.js +0 -1
  160. package/dist/assets/clone-BMP0PsTa.js +0 -1
  161. package/dist/assets/command-palette-B93Pjcky.js +0 -1
  162. package/dist/assets/datasources-panel-v7H3cR0p.js +0 -1
  163. package/dist/assets/index-C7CoaNFb.js +0 -578
  164. package/dist/assets/index-DadI618h.css +0 -1
  165. package/dist/assets/infoDiagram-STP46IZ2-CJLOpSAf.js +0 -2
  166. package/dist/assets/min-BBO3-1Hg.js +0 -1
  167. package/dist/assets/stateDiagram-v2-UMBNRL4Z-CdThjimL.js +0 -1
@@ -0,0 +1,167 @@
1
+ /* Copyright 2024 Marimo. All rights reserved. */
2
+
3
+ import { describe, expect, test } from "vitest";
4
+ import { ansiToPlainText, parseHtmlContent } from "../dom";
5
+
6
+ describe("parseHtmlContent", () => {
7
+ test("strips HTML tags and returns plain text", () => {
8
+ const htmlString =
9
+ '<span style="color: red;">Error: Something went wrong</span>';
10
+ const result = parseHtmlContent(htmlString);
11
+ expect(result).toMatchInlineSnapshot(`"Error: Something went wrong"`);
12
+ });
13
+
14
+ test("handles ANSI color span tags", () => {
15
+ const htmlString =
16
+ '<span style="color:#d03050;">ERROR</span>: <span style="color:#8ad03a;">File not found</span>';
17
+ const result = parseHtmlContent(htmlString);
18
+ expect(result).toMatchInlineSnapshot(`"ERROR: File not found"`);
19
+ });
20
+
21
+ test("normalizes whitespace", () => {
22
+ const htmlString = "<span> Multiple \n\n spaces and \t tabs </span>";
23
+ const result = parseHtmlContent(htmlString);
24
+ expect(result).toMatchInlineSnapshot(`
25
+ " Multiple
26
+
27
+ spaces and tabs"
28
+ `);
29
+ });
30
+
31
+ test("handles empty HTML", () => {
32
+ const htmlString = "";
33
+ const result = parseHtmlContent(htmlString);
34
+ expect(result).toMatchInlineSnapshot(`""`);
35
+ });
36
+
37
+ test("handles plain text without HTML", () => {
38
+ const htmlString = "Simple error message";
39
+ const result = parseHtmlContent(htmlString);
40
+ expect(result).toMatchInlineSnapshot(`"Simple error message"`);
41
+ });
42
+
43
+ test("handles nested HTML elements", () => {
44
+ const htmlString =
45
+ '<div><span>Traceback:</span><pre><code> File "test.py", line 1\n print("hello"</code></pre></div>';
46
+ const result = parseHtmlContent(htmlString);
47
+ expect(result).toMatchInlineSnapshot(`
48
+ "Traceback: File "test.py", line 1
49
+ print("hello""
50
+ `);
51
+ });
52
+
53
+ test("handles complex ANSI-converted HTML with styles", () => {
54
+ const htmlString =
55
+ '<span style="background:#fff;color:#000"> File "</span><span style="background:#fff;color:#0000ff">test.py</span><span style="background:#fff;color:#000">", line </span><span style="background:#fff;color:#008000">1</span>';
56
+ const result = parseHtmlContent(htmlString);
57
+ expect(result).toMatchInlineSnapshot(`" File "test.py", line 1"`);
58
+ });
59
+ });
60
+
61
+ describe("ansiToPlainText", () => {
62
+ test("converts ANSI color codes to plain text", () => {
63
+ const ansiString = "\x1b[31mError:\x1b[0m Something went wrong";
64
+ const result = ansiToPlainText(ansiString);
65
+ expect(result).toMatchInlineSnapshot(`"Error: Something went wrong"`);
66
+ });
67
+
68
+ test("handles multiple ANSI color codes", () => {
69
+ const ansiString =
70
+ "\x1b[32mSUCCESS:\x1b[0m \x1b[34mOperation completed\x1b[0m successfully";
71
+ const result = ansiToPlainText(ansiString);
72
+ expect(result).toMatchInlineSnapshot(
73
+ `"SUCCESS: Operation completed successfully"`,
74
+ );
75
+ });
76
+
77
+ test("handles ANSI bold and color combinations", () => {
78
+ const ansiString =
79
+ "\x1b[1;31mBOLD RED ERROR:\x1b[0m \x1b[33mWarning message\x1b[0m";
80
+ const result = ansiToPlainText(ansiString);
81
+ expect(result).toMatchInlineSnapshot(`"BOLD RED ERROR: Warning message"`);
82
+ });
83
+
84
+ test("handles Python traceback with ANSI codes", () => {
85
+ const ansiString =
86
+ "\x1b[0;36m File \"\x1b[0m\x1b[0;32mtest.py\x1b[0m\x1b[0;36m\", line \x1b[0m\x1b[0;32m1\x1b[0m\x1b[0;36m, in \x1b[0m\x1b[0;35m<module>\x1b[0m\n\x1b[0;31mNameError\x1b[0m: name 'undefined_var' is not defined";
87
+ const result = ansiToPlainText(ansiString);
88
+ expect(result).toMatchInlineSnapshot(`
89
+ " File "test.py", line 1, in <module>
90
+ NameError: name 'undefined_var' is not defined"
91
+ `);
92
+ });
93
+
94
+ test("handles error messages with background colors", () => {
95
+ const ansiString =
96
+ "\x1b[41;37m CRITICAL ERROR \x1b[0m \x1b[31mSystem failure detected\x1b[0m";
97
+ const result = ansiToPlainText(ansiString);
98
+ expect(result).toMatchInlineSnapshot(
99
+ `" CRITICAL ERROR System failure detected"`,
100
+ );
101
+ });
102
+
103
+ test("handles complex stack trace with mixed formatting", () => {
104
+ const ansiString =
105
+ 'Traceback (most recent call last):\n \x1b[36mFile "\x1b[32m/path/to/file.py\x1b[36m", line \x1b[32m42\x1b[36m, in \x1b[35mfunction_name\x1b[0m\n \x1b[31mraise ValueError("Something went wrong")\x1b[0m\n\x1b[31mValueError\x1b[0m: Something went wrong';
106
+ const result = ansiToPlainText(ansiString);
107
+ expect(result).toMatchInlineSnapshot(`
108
+ "Traceback (most recent call last):
109
+ File "/path/to/file.py", line 42, in function_name
110
+ raise ValueError("Something went wrong")
111
+ ValueError: Something went wrong"
112
+ `);
113
+ });
114
+
115
+ test("handles empty string", () => {
116
+ const ansiString = "";
117
+ const result = ansiToPlainText(ansiString);
118
+ expect(result).toMatchInlineSnapshot(`""`);
119
+ });
120
+
121
+ test("handles plain text without ANSI codes", () => {
122
+ const ansiString = "Plain error message without colors";
123
+ const result = ansiToPlainText(ansiString);
124
+ expect(result).toMatchInlineSnapshot(
125
+ `"Plain error message without colors"`,
126
+ );
127
+ });
128
+
129
+ test("handles whitespace and newlines correctly", () => {
130
+ const ansiString =
131
+ "\x1b[31m Error: \x1b[0m\n\n \x1b[33m Warning \x1b[0m ";
132
+ const result = ansiToPlainText(ansiString);
133
+ expect(result).toMatchInlineSnapshot(`
134
+ " Error:
135
+
136
+ Warning"
137
+ `);
138
+ });
139
+
140
+ test("handles JavaScript error stack trace", () => {
141
+ const ansiString =
142
+ "\x1b[31mReferenceError\x1b[0m: \x1b[33mvariable\x1b[0m is not defined\n at \x1b[36mObject.<anonymous>\x1b[0m (\x1b[32m/path/to/script.js\x1b[0m:\x1b[33m5\x1b[0m:\x1b[33m1\x1b[0m)";
143
+ const result = ansiToPlainText(ansiString);
144
+ expect(result).toMatchInlineSnapshot(`
145
+ "ReferenceError: variable is not defined
146
+ at Object.<anonymous> (/path/to/script.js:5:1)"
147
+ `);
148
+ });
149
+
150
+ test("handles Rust panic with ANSI formatting", () => {
151
+ const ansiString =
152
+ "thread '\x1b[32mmain\x1b[0m' panicked at '\x1b[31massertion failed: `(left == right)`\x1b[0m'\n \x1b[36mleft\x1b[0m: `\x1b[33m5\x1b[0m`\n \x1b[36mright\x1b[0m: `\x1b[33m10\x1b[0m`";
153
+ const result = ansiToPlainText(ansiString);
154
+ expect(result).toMatchInlineSnapshot(`
155
+ "thread 'main' panicked at 'assertion failed: \`(left == right)\`'
156
+ left: \`5\`
157
+ right: \`10\`"
158
+ `);
159
+ });
160
+
161
+ test("handles mix of 8-bit and 256-color ANSI codes", () => {
162
+ const ansiString =
163
+ "\x1b[38;5;196mBright Red\x1b[0m and \x1b[38;5;46mBright Green\x1b[0m text";
164
+ const result = ansiToPlainText(ansiString);
165
+ expect(result).toMatchInlineSnapshot(`"Bright Red and Bright Green text"`);
166
+ });
167
+ });
@@ -0,0 +1,55 @@
1
+ /* Copyright 2024 Marimo. All rights reserved. */
2
+
3
+ import { AnsiUp } from "ansi_up";
4
+ import { Logger } from "./Logger";
5
+
6
+ // Create a shared AnsiUp instance
7
+ const ansiUp = new AnsiUp();
8
+
9
+ /**
10
+ * Extracts plain text content from HTML by removing all HTML tags and normalizing whitespace.
11
+ *
12
+ * @param htmlString The HTML string to parse
13
+ * @returns Plain text content with HTML tags removed and whitespace normalized
14
+ */
15
+ export function parseHtmlContent(htmlString: string): string {
16
+ try {
17
+ // Create a temporary DOM element to parse HTML
18
+ const tempDiv = document.createElement("div");
19
+ tempDiv.innerHTML = htmlString;
20
+
21
+ // Extract text content, removing HTML tags
22
+ const textContent = tempDiv.textContent || tempDiv.innerText || "";
23
+ const lines = textContent.split("\n");
24
+ return lines.map((line) => line.trimEnd()).join("\n");
25
+ } catch (error) {
26
+ Logger.error("Error parsing HTML content:", error);
27
+ // If parsing fails, return the original string
28
+ return htmlString;
29
+ }
30
+ }
31
+
32
+ /**
33
+ * Converts ANSI escape sequences to plain text by first converting to HTML and then stripping HTML tags.
34
+ * This is useful for console output that may contain ANSI color codes or formatting.
35
+ *
36
+ * @param ansiString String that may contain ANSI escape sequences
37
+ * @returns Plain text with ANSI codes removed and HTML stripped
38
+ */
39
+ export function ansiToPlainText(ansiString: string): string {
40
+ if (!ansiString) {
41
+ return "";
42
+ }
43
+
44
+ try {
45
+ // Convert ANSI escape sequences to HTML
46
+ const htmlString = ansiUp.ansi_to_html(ansiString);
47
+
48
+ // Strip HTML tags and return clean text
49
+ return parseHtmlContent(htmlString);
50
+ } catch (error) {
51
+ Logger.error("Error converting ANSI to plain text:", error);
52
+ // If conversion fails, return the original string
53
+ return ansiString;
54
+ }
55
+ }
@@ -1 +0,0 @@
1
- import{eL as y,eM as l,eN as w,aO as b,eO as O,eP as g,eQ as A,eR as B,cF as F,eS as G,cG as L,B as M,eT as N,A as P}from"./index-C7CoaNFb.js";function h(r){return r==r&&!w(r)}function j(r,e){return function(n){return n!=null&&n[r]===e&&(e!==void 0||r in Object(n))}}function Q(r){var e=(function(n){for(var t=b(n),u=t.length;u--;){var i=t[u],o=n[i];t[u]=[i,o,h(o)]}return t})(r);return e.length==1&&e[0][2]?j(e[0][0],e[0][1]):function(n){return n===r||(function(t,u,i,o){var a=i.length,c=a;if(t==null)return!c;for(t=Object(t);a--;){var f=i[a];if(f[2]?f[1]!==t[f[0]]:!(f[0]in t))return!1}for(;++a<c;){var s=(f=i[a])[0],v=t[s],m=f[1];if(f[2]){if(v===void 0&&!(s in t))return!1}else{var x=new y;if(!l(m,v,3,o,x))return!1}}return!0})(n,0,e)}}function R(r){return O(r)?G(g(r)):(function(e){return function(n){return F(n,e)}})(r)}function S(r){return typeof r=="function"?r:r==null?L:typeof r=="object"?M(r)?(e=r[0],n=r[1],O(e)&&h(n)?j(g(e),n):function(t){var u=A(t,e);return u===void 0&&u===n?B(t,e):l(n,u,3)}):Q(r):R(r);var e,n}function p(r,e){return r&&N(r,e,b)}var d,T=(d=p,function(r,e){if(r==null)return r;if(!P(r))return d(r,e);for(var n=r.length,t=-1,u=Object(r);++t<n&&e(u[t],t,u)!==!1;);return r});export{S as a,T as b,p as c};
@@ -1 +0,0 @@
1
- import{b as m}from"./_baseEach-CvTX9w0Y.js";import{A as s}from"./index-C7CoaNFb.js";function e(r,o){var a=-1,t=s(r)?Array(r.length):[];return m(r,function(n,f,i){t[++a]=o(n,f,i)}),t}export{e as b};
@@ -1 +0,0 @@
1
- import{U as r,C as s}from"./mermaid.core-DzthE35Y.js";const n=(a,o)=>r.lang.round(s.parse(a)[o]);export{n as c};
@@ -1 +0,0 @@
1
- import{s,c as t,a,C as o}from"./chunk-K7UQS3LO-C8TWVLiH.js";import{_ as i}from"./mermaid.core-DzthE35Y.js";import"./transform-D9VCJYws.js";import"./chunk-FMBD7UC4-DPuNbQ-f.js";import"./chunk-55IACEB6-CAATkc4w.js";import"./chunk-QN33PNHL-DiZZ09q4.js";import"./index-C7CoaNFb.js";import"./step-BwsUM5iJ.js";import"./isEmpty-D-4c7sMv.js";import"./timer-Bqd5yn_a.js";var e={parser:a,get db(){return new o},renderer:t,styles:s,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{e as diagram};
@@ -1 +0,0 @@
1
- import{s,c as t,a,C as o}from"./chunk-K7UQS3LO-C8TWVLiH.js";import{_ as i}from"./mermaid.core-DzthE35Y.js";import"./transform-D9VCJYws.js";import"./chunk-FMBD7UC4-DPuNbQ-f.js";import"./chunk-55IACEB6-CAATkc4w.js";import"./chunk-QN33PNHL-DiZZ09q4.js";import"./index-C7CoaNFb.js";import"./step-BwsUM5iJ.js";import"./isEmpty-D-4c7sMv.js";import"./timer-Bqd5yn_a.js";var e={parser:a,get db(){return new o},renderer:t,styles:s,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{e as diagram};
@@ -1 +0,0 @@
1
- import{b as n}from"./_baseUniq-BKktIGQ1.js";function o(r){return n(r,4)}export{o as c};
@@ -1 +0,0 @@
1
- import{a as nt,r as Rt,cn as Ut,aw as $t,co as zt,ax as Et,cp as It,cq as Pt,K as St,cr as Vt,cs as Kt,ct as Ot,cu as Tt,j as a,cv as vt,cw as Jt,cx as Lt,cy as Qt,cz as Wt,cA as Xt,bC as Ht,cB as At,cC as Ft,bm as Yt,bU as Zt,__tla as te}from"./index-C7CoaNFb.js";import{c as ee,u as oe,b as ie,__tla as le}from"./edit-page-B-oevUZ9.js";import{g as re}from"./links-BpXlz1GG.js";import{__tla as ae}from"./storage-DRaR04wR.js";import"./index-Aeo6WiK7.js";import"./index-CfaDbEdi.js";import"./index-BjgnbONl.js";import"./index-CUFv_thQ.js";import"./index-DdnKZNxM.js";import"./index-C_tkBKNO.js";import"./index-BJNCMUmG.js";import"./index-CFKO7WXI.js";import"./index-aE43R74q.js";import"./index-BAbIIxHU.js";import"./index-ClzeQrN7.js";import"./index-G5QZppK2.js";import"./index-C2MD0vgD.js";import"./apl-CXdQSnD-.js";import"./asciiarmor-D5V0T9Cu.js";import"./asn1-DWPaVWf6.js";import"./brainfuck-CtZaYBKt.js";import"./cobol-stawOqaz.js";import"./clike-BgBwzOhw.js";import"./clojure-DiuoqK-z.js";import"./css-ZjFoif2m.js";import"./cmake-DXn5xaP-.js";import"./coffeescript-BTDxI-eT.js";import"./commonlisp-vq6DHwts.js";import"./cypher-gJDei3ni.js";import"./python-DD-Q2bae.js";import"./crystal-CRzZ78HM.js";import"./d-BShv7fp-.js";import"./diff-UJJ5BM9S.js";import"./dtd-DI9Herc-.js";import"./dylan-DkEP81N9.js";import"./ecl-DPFc0Uaf.js";import"./eiffel-DR5c0IrL.js";import"./elm-DompmV0j.js";import"./erlang-BuqgqA5h.js";import"./factor-CFXhaUWb.js";import"./simple-mode-C3vEBAcb.js";import"./forth-POgR1ypr.js";import"./fortran-DL7KluxX.js";import"./mllike-3c2dg9RT.js";import"./gas-bV0CklSb.js";import"./gherkin-B6X1vGSW.js";import"./groovy-DnIzCrpZ.js";import"./haskell-CLQs6EAM.js";import"./haxe-D25e-2l-.js";import"./idl-pcmmZuaN.js";import"./javascript-BpzJj0-u.js";import"./jinja2-DhgKlfW7.js";import"./julia-DjdwvFuI.js";import"./livescript-HO6ttBFx.js";import"./lua-8DXOpKDz.js";import"./mirc-DkvFAiy5.js";import"./mathematica-IIbmv7SK.js";import"./modelica-DSrSSXCg.js";import"./mumps-zvxmGV4l.js";import"./mbox-z_N2Mo3d.js";import"./nsis-BvKfQ9lQ.js";import"./ntriples-BSwWqoLa.js";import"./octave-C4hdQ5Hf.js";import"./oz-qQq7irPq.js";import"./pascal-CafrKXZF.js";import"./perl-tdMlh9QA.js";import"./pig-CwGJVRC4.js";import"./powershell-D1ly3AHC.js";import"./properties-_nPj978X.js";import"./protobuf-B4y9do6W.js";import"./pug-BTvK5tSS.js";import"./puppet-Bc-yJKzi.js";import"./q-B0kTJ4cI.js";import"./r-BA4EbLKE.js";import"./rpm-DI_rRufH.js";import"./ruby-CR-u2WLS.js";import"./sas-Bqaci40L.js";import"./scheme-qjP0V5Ag.js";import"./shell-BLav31RL.js";import"./sieve-r025o_jW.js";import"./smalltalk-C7J3IyEP.js";import"./sparql-BRLJFz69.js";import"./stylus-Bdo_Aemu.js";import"./swift-B_XXVlXX.js";import"./verilog-B4LBqg_1.js";import"./tcl-B2fODqDH.js";import"./textile-BuVhTOzU.js";import"./toml-wcPdHu67.js";import"./troff-Ce85hlLp.js";import"./ttcn-BxnYHtq8.js";import"./ttcn-cfg-CKJxb-l2.js";import"./turtle-BkSuIpt-.js";import"./webidl-CGwyPRYs.js";import"./vb-BHgjm0DN.js";import"./vbscript-Dawdd5GZ.js";import"./velocity-BdD_26Jv.js";import"./vhdl-CWWH2SUo.js";import"./xquery-CVDBqZPY.js";import"./yacas-I8QjZlxf.js";import"./z80-D8p3gKXp.js";import"./mscgen-B2igx18G.js";import"./index-C1ez98sk.js";import"./trash-B81GTiv6.js";import"./_createAggregator-C5CVY-0t.js";import"./_baseEach-CvTX9w0Y.js";import{__tla as ne}from"./loro_wasm_bg-C1ks32Vm.js";let Dt,pe=Promise.all([(()=>{try{return te}catch{}})(),(()=>{try{return le}catch{}})(),(()=>{try{return ae}catch{}})(),(()=>{try{return ne}catch{}})()]).then(async()=>{function qt(){const e=nt.c(7);let s;e[0]===Symbol.for("react.memo_cache_sentinel")?(s=[],e[0]=s):s=e[0];const[r,x]=(function(m,h){const l=nt.c(11);let _;l[0]!==h?(_=new Ut(h),l[0]=h,l[1]=_):_=l[1];const u=_;let k;l[2]!==m||l[3]!==u?(k=()=>u.get(m),l[2]=m,l[3]=u,l[4]=k):k=l[4];const[b,C]=Rt.useState(k);let g;l[5]!==m||l[6]!==u?(g=w=>{C(w),u.set(m,w)},l[5]=m,l[6]=u,l[7]=g):g=l[7];const f=g;let y;return l[8]!==f||l[9]!==b?(y=[b,f],l[8]=f,l[9]=b,l[10]=y):y=l[10],y})("marimo:commands",s);let c,n;return e[1]!==r||e[2]!==x?(c=m=>{const h=(l=[m,...r],[...new Set(l)]);var l;x(h.slice(0,3))},e[1]=r,e[2]=x,e[3]=c):c=e[3],e[4]!==r||e[5]!==c?(n={recentCommands:r,addRecentCommand:c},e[4]=r,e[5]=c,e[6]=n):n=e[6],n}function kt(e){return e.dropdown!==void 0}function I(e,s=""){return e.flatMap(r=>r.label?kt(r)?I(r.dropdown,`${s+r.label} > `):{...r,label:s+r.label}:[])}function Bt(e){return!e.hidden}Dt=()=>{const e=nt.c(37),[s,r]=It(ee),x=Pt(),c=St(Vt),n=St(Kt);let m;e[0]!==c?(m={cell:c},e[0]=c,e[1]=m):m=e[1];let h=oe(m).flat();h=I(h);const l=(function(){const t=nt.c(73),[o,j]=$t(),[p,D]=zt(),{saveAppConfig:S,saveUserConfig:bt}=Et();let O;t[0]!==bt||t[1]!==j?(O=async d=>{await bt({config:d}).then(()=>{j(d)})},t[0]=bt,t[1]=j,t[2]=O):O=t[2];const i=O;let T;t[3]!==S||t[4]!==D?(T=async d=>{await S({config:d}).then(()=>{D(d)})},t[3]=S,t[4]=D,t[5]=T):T=t[5];const E=T;let J;if(t[6]!==p||t[7]!==o||t[8]!==E||t[9]!==i){let d,L,Q,W,X;t[11]!==p?(d=at=>at!==p.width,t[11]=p,t[12]=d):d=t[12],t[13]!==p||t[14]!==E?(L=at=>({label:`App config > Set width=${at}`,handle:()=>{E({...p,width:at})}}),t[13]=p,t[14]=E,t[15]=L):L=t[15],t[16]!==o||t[17]!==i?(Q={label:"Config > Set theme: dark",handle:()=>{i({...o,display:{...o.display,theme:"dark"}})}},t[16]=o,t[17]=i,t[18]=Q):Q=t[18],t[19]!==o||t[20]!==i?(W={label:"Config > Set theme: light",handle:()=>{i({...o,display:{...o.display,theme:"light"}})}},t[19]=o,t[20]=i,t[21]=W):W=t[21],t[22]!==o||t[23]!==i?(X={label:"Config > Set theme: system",handle:()=>{i({...o,display:{...o.display,theme:"system"}})}},t[22]=o,t[23]=i,t[24]=X):X=t[24];const gt=o.keymap.preset==="vim";let q,Y;t[25]!==o||t[26]!==i?(q=()=>{i({...o,keymap:{...o.keymap,preset:"vim"}})},t[25]=o,t[26]=i,t[27]=q):q=t[27],t[28]!==gt||t[29]!==q?(Y={label:"Config > Switch keymap to VIM",hidden:gt,handle:q},t[28]=gt,t[29]=q,t[30]=Y):Y=t[30];const ft=o.keymap.preset==="default";let B,Z,G;t[31]!==o||t[32]!==i?(B=()=>{i({...o,keymap:{...o.keymap,preset:"default"}})},t[31]=o,t[32]=i,t[33]=B):B=t[33],t[34]!==ft||t[35]!==B?(Z={label:"Config > Switch keymap to default (current: VIM)",hidden:ft,handle:B},t[34]=ft,t[35]=B,t[36]=Z):Z=t[36],t[37]!==o||t[38]!==i?(G=()=>{i({...o,completion:{...o.completion,copilot:!1}})},t[37]=o,t[38]=i,t[39]=G):G=t[39];const yt=o.completion.copilot!=="github";let tt,M;t[40]!==G||t[41]!==yt?(tt={label:"Config > Disable GitHub Copilot",handle:G,hidden:yt},t[40]=G,t[41]=yt,t[42]=tt):tt=t[42],t[43]!==o||t[44]!==i?(M=()=>{i({...o,completion:{...o.completion,copilot:"github"}})},t[43]=o,t[44]=i,t[45]=M):M=t[45];const _t=o.completion.copilot==="github";let et;t[46]!==M||t[47]!==_t?(et={label:"Config > Enable GitHub Copilot",handle:M,hidden:_t},t[46]=M,t[47]=_t,t[48]=et):et=t[48];const Ct=!o.display.reference_highlighting;let N,ot,R,it;t[49]!==o||t[50]!==i?(N=()=>{i({...o,display:{...o.display,reference_highlighting:!1}})},t[49]=o,t[50]=i,t[51]=N):N=t[51],t[52]!==Ct||t[53]!==N?(ot={label:"Config > Disable reference highlighting",hidden:Ct,handle:N},t[52]=Ct,t[53]=N,t[54]=ot):ot=t[54],t[55]!==o||t[56]!==i?(R=()=>{i({...o,display:{...o.display,reference_highlighting:!0}})},t[55]=o,t[56]=i,t[57]=R):R=t[57],t[58]!==o.display.reference_highlighting||t[59]!==R?(it={label:"Config > Enable reference highlighting",hidden:o.display.reference_highlighting,handle:R},t[58]=o.display.reference_highlighting,t[59]=R,t[60]=it):it=t[60];const jt=o.display.cell_output==="above";let U,lt;t[61]!==o||t[62]!==i?(U=()=>{i({...o,display:{...o.display,cell_output:"above"}})},t[61]=o,t[62]=i,t[63]=U):U=t[63],t[64]!==jt||t[65]!==U?(lt={label:"Config > Set cell output area: above",hidden:jt,handle:U},t[64]=jt,t[65]=U,t[66]=lt):lt=t[66];const xt=o.display.cell_output==="below";let $,rt;t[67]!==o||t[68]!==i?($=()=>{i({...o,display:{...o.display,cell_output:"below"}})},t[67]=o,t[68]=i,t[69]=$):$=t[69],t[70]!==xt||t[71]!==$?(rt={label:"Config > Set cell output area: below",hidden:xt,handle:$},t[70]=xt,t[71]=$,t[72]=rt):rt=t[72],J=[...re().filter(d).map(L),Q,W,X,Y,Z,tt,et,ot,it,lt,rt].filter(Bt),t[6]=p,t[7]=o,t[8]=E,t[9]=i,t[10]=J}else J=t[10];return J})();let _=ie();_=[...I(_),...I(l)];const u=_.filter(Gt),k=Ot.keyBy(u,Mt),{recentCommands:b,addRecentCommand:C}=qt();let g;e[2]!==b?(g=new Set(b),e[2]=b,e[3]=g):g=e[3];const f=g;let y,w;e[4]!==n||e[5]!==r?(y=t=>{Xt(n.getHotkey("global.commandPalette").key)(t)&&(t.preventDefault(),r(Nt))},e[4]=n,e[5]=r,e[6]=y):y=e[6],Tt(document,"keydown",y),e[7]!==C||e[8]!==n||e[9]!==x||e[10]!==r?(w=(t,o)=>{const j=x[t];if(!j)return null;const p=n.getHotkey(t);return a.jsxs(Ht,{disabled:o.disabled,onSelect:()=>{C(t),r(!1),requestAnimationFrame(()=>{j()})},value:p.name,children:[a.jsxs("span",{children:[p.name,o.tooltip&&a.jsx("span",{className:"ml-2",children:o.tooltip})]}),a.jsx(At,{children:a.jsx(Ft,{shortcut:p.key})})]},t)},e[7]=C,e[8]=n,e[9]=x,e[10]=r,e[11]=w):w=e[11];const wt=w;let P;e[12]!==C||e[13]!==n||e[14]!==r?(P=t=>{const{label:o,handle:j,props:p,hotkey:D}=t,S=p===void 0?{}:p;return a.jsxs(Ht,{disabled:S.disabled,onSelect:()=>{C(o),r(!1),requestAnimationFrame(()=>{j()})},value:o,children:[a.jsxs("span",{children:[o,S.tooltip&&a.jsxs("span",{className:"ml-2",children:["(",S.tooltip,")"]})]}),D&&a.jsx(At,{children:a.jsx(Ft,{shortcut:n.getHotkey(D).key})})]},o)},e[12]=C,e[13]=n,e[14]=r,e[15]=P):P=e[15];const z=P,pt=Wt;let v;e[16]===Symbol.for("react.memo_cache_sentinel")?(v=a.jsx(Yt,{placeholder:"Type to search..."}),e[16]=v):v=e[16];const mt=Qt;let H;e[17]===Symbol.for("react.memo_cache_sentinel")?(H=a.jsx(Zt,{children:"No results found."}),e[17]=H):H=e[17];const st=b.length>0&&a.jsxs(a.Fragment,{children:[a.jsx(vt,{heading:"Recently Used",children:b.map(t=>{const o=k[t];return Jt(t)?wt(t,{disabled:o==null?void 0:o.disabled,tooltip:o==null?void 0:o.tooltip}):o&&!kt(o)?z({label:o.label,handle:o.handleHeadless||o.handle,props:{disabled:o.disabled,tooltip:o.tooltip}}):null})}),a.jsx(Lt,{})]}),ct=vt,dt=n.iterate().map(t=>{if(f.has(t))return null;const o=k[t];return wt(t,{disabled:o==null?void 0:o.disabled,tooltip:o==null?void 0:o.tooltip})}),ht=u.map(t=>f.has(t.label)?null:z({label:t.label,handle:t.handleHeadless||t.handle,props:{disabled:t.disabled,tooltip:t.tooltip}}));let V;e[18]!==f||e[19]!==z?(V=t=>f.has(t.label)?null:z({label:`Cell > ${t.label}`,handle:t.handleHeadless||t.handle,props:{disabled:t.disabled,tooltip:t.tooltip}}),e[18]=f,e[19]=z,e[20]=V):V=e[20];const ut=h.map(V);let A,F,K;return e[21]!==ct||e[22]!==ht||e[23]!==ut||e[24]!==dt?(A=a.jsxs(ct,{heading:"Commands",children:[dt,ht,ut]}),e[21]=ct,e[22]=ht,e[23]=ut,e[24]=dt,e[25]=A):A=e[25],e[26]!==mt||e[27]!==A||e[28]!==H||e[29]!==st?(F=a.jsxs(mt,{children:[H,st,A]}),e[26]=mt,e[27]=A,e[28]=H,e[29]=st,e[30]=F):F=e[30],e[31]!==pt||e[32]!==s||e[33]!==r||e[34]!==F||e[35]!==v?(K=a.jsxs(pt,{open:s,onOpenChange:r,children:[v,F]}),e[31]=pt,e[32]=s,e[33]=r,e[34]=F,e[35]=v,e[36]=K):K=e[36],K};function Gt(e){return!e.hotkey}function Mt(e){return e.label}function Nt(e){return!e}});export{pe as __tla,Dt as default};
@@ -1 +0,0 @@
1
- import{a as V,T as M,b8 as Pe,b9 as De,j as n,ba as Le,bb as ae,av as se,bc as Ae,bd as ze,be as Ee,bf as ne,bg as Ve,d as F,ay as re,bh as oe,K as X,bi as le,bj as Be,bk as me,b as ce,bl as ie,a_ as Y,a2 as de,bm as Ke,bn as Me,bo as Oe,bp as Ge,bq as He,ax as Je,br as Re,bs as Ue,aB as Z,bt as We,bu as pe,bv as ue,bw as Q,bx as Xe,by as Ye,S as Ze,bz as he,bA as be,bB as xe,bC as ee,bD as Qe,bE as et,bF as tt,aI as at,bG as st,bH as fe,bI as nt,bJ as rt,bK as ot,bL as lt,C as mt,bM as ct,bN as it,bO as dt,__tla as pt}from"./index-C7CoaNFb.js";import{b as ut,d as ht,__tla as bt}from"./storage-DRaR04wR.js";import{P as xt}from"./empty-state-C99UyDE3.js";import{A as ge,__tla as ft}from"./edit-page-B-oevUZ9.js";import{s as je}from"./sortBy-DZnlX29-.js";import"./index-Aeo6WiK7.js";import"./index-CfaDbEdi.js";import"./index-BjgnbONl.js";import"./index-CUFv_thQ.js";import"./index-DdnKZNxM.js";import"./index-C_tkBKNO.js";import"./index-BJNCMUmG.js";import"./index-CFKO7WXI.js";import"./index-aE43R74q.js";import"./index-BAbIIxHU.js";import"./index-ClzeQrN7.js";import"./index-G5QZppK2.js";import"./index-C2MD0vgD.js";import"./apl-CXdQSnD-.js";import"./asciiarmor-D5V0T9Cu.js";import"./asn1-DWPaVWf6.js";import"./brainfuck-CtZaYBKt.js";import"./cobol-stawOqaz.js";import"./clike-BgBwzOhw.js";import"./clojure-DiuoqK-z.js";import"./css-ZjFoif2m.js";import"./cmake-DXn5xaP-.js";import"./coffeescript-BTDxI-eT.js";import"./commonlisp-vq6DHwts.js";import"./cypher-gJDei3ni.js";import"./python-DD-Q2bae.js";import"./crystal-CRzZ78HM.js";import"./d-BShv7fp-.js";import"./diff-UJJ5BM9S.js";import"./dtd-DI9Herc-.js";import"./dylan-DkEP81N9.js";import"./ecl-DPFc0Uaf.js";import"./eiffel-DR5c0IrL.js";import"./elm-DompmV0j.js";import"./erlang-BuqgqA5h.js";import"./factor-CFXhaUWb.js";import"./simple-mode-C3vEBAcb.js";import"./forth-POgR1ypr.js";import"./fortran-DL7KluxX.js";import"./mllike-3c2dg9RT.js";import"./gas-bV0CklSb.js";import"./gherkin-B6X1vGSW.js";import"./groovy-DnIzCrpZ.js";import"./haskell-CLQs6EAM.js";import"./haxe-D25e-2l-.js";import"./idl-pcmmZuaN.js";import"./javascript-BpzJj0-u.js";import"./jinja2-DhgKlfW7.js";import"./julia-DjdwvFuI.js";import"./livescript-HO6ttBFx.js";import"./lua-8DXOpKDz.js";import"./mirc-DkvFAiy5.js";import"./mathematica-IIbmv7SK.js";import"./modelica-DSrSSXCg.js";import"./mumps-zvxmGV4l.js";import"./mbox-z_N2Mo3d.js";import"./nsis-BvKfQ9lQ.js";import"./ntriples-BSwWqoLa.js";import"./octave-C4hdQ5Hf.js";import"./oz-qQq7irPq.js";import"./pascal-CafrKXZF.js";import"./perl-tdMlh9QA.js";import"./pig-CwGJVRC4.js";import"./powershell-D1ly3AHC.js";import"./properties-_nPj978X.js";import"./protobuf-B4y9do6W.js";import"./pug-BTvK5tSS.js";import"./puppet-Bc-yJKzi.js";import"./q-B0kTJ4cI.js";import"./r-BA4EbLKE.js";import"./rpm-DI_rRufH.js";import"./ruby-CR-u2WLS.js";import"./sas-Bqaci40L.js";import"./scheme-qjP0V5Ag.js";import"./shell-BLav31RL.js";import"./sieve-r025o_jW.js";import"./smalltalk-C7J3IyEP.js";import"./sparql-BRLJFz69.js";import"./stylus-Bdo_Aemu.js";import"./swift-B_XXVlXX.js";import"./verilog-B4LBqg_1.js";import"./tcl-B2fODqDH.js";import"./textile-BuVhTOzU.js";import"./toml-wcPdHu67.js";import"./troff-Ce85hlLp.js";import"./ttcn-BxnYHtq8.js";import"./ttcn-cfg-CKJxb-l2.js";import"./turtle-BkSuIpt-.js";import"./webidl-CGwyPRYs.js";import"./vb-BHgjm0DN.js";import"./vbscript-Dawdd5GZ.js";import"./velocity-BdD_26Jv.js";import"./vhdl-CWWH2SUo.js";import"./xquery-CVDBqZPY.js";import"./yacas-I8QjZlxf.js";import"./z80-D8p3gKXp.js";import"./mscgen-B2igx18G.js";import"./index-C1ez98sk.js";import"./trash-B81GTiv6.js";import"./links-BpXlz1GG.js";import"./_createAggregator-C5CVY-0t.js";import"./_baseEach-CvTX9w0Y.js";import{__tla as gt}from"./loro_wasm_bg-C1ks32Vm.js";import"./_baseMap-CtlwA90f.js";let Ne,jt=Promise.all([(()=>{try{return pt}catch{}})(),(()=>{try{return bt}catch{}})(),(()=>{try{return ft}catch{}})(),(()=>{try{return gt}catch{}})()]).then(async()=>{const _e=s=>{const e=V.c(8),{variableName:t,className:a}=s;let o;e[0]!==t?(o=()=>{const u=(function(f){const i=Le.get(ae)[f];if(i)return i.declaredBy[0]})(t);if(!u)return;const N=Pe(u);N&&De(N,t)},e[0]=t,e[1]=o):o=e[1];const c=o;let r,j;return e[2]!==a?(r=M("text-link opacity-80 hover:opacity-100 hover:underline",a),e[2]=a,e[3]=r):r=e[3],e[4]!==c||e[5]!==r||e[6]!==t?(j=n.jsx("button",{type:"button",onClick:c,className:r,children:t}),e[4]=c,e[5]=r,e[6]=t,e[7]=j):j=e[7],j},ye=se(s=>{const e=s(Ae),t=s(ae),a=s(ze);return je(e,o=>{if(!o.variable_name)return-1;const c=Object.values(t).find(j=>j.name===o.variable_name);if(!c)return 0;const r=a.inOrderIds.indexOf(c.declaredBy[0]);return r===-1?0:r})}),we=se(s=>{const e=new Map(s(Ee));for(const t of ne){const a=e.get(t);a&&(a.databases.length===0&&e.delete(t),a.databases.length===1&&a.databases[0].name===Ve&&a.databases[0].schemas.length===0&&e.delete(t))}return je([...e.values()],t=>ne.has(t.name)?1:0)}),ve=()=>{const s=V.c(32),[e,t]=F.useState(""),a=re(oe),o=X(ye),c=X(we);if(o.length===0&&c.length===0){let d;return s[0]===Symbol.for("react.memo_cache_sentinel")?(d=n.jsx(xt,{title:"No tables found",description:"Any datasets/dataframes in the global scope will be shown here.",action:n.jsx(ge,{children:n.jsxs(Y,{variant:"outline",size:"sm",children:["Add database or catalog",n.jsx(de,{className:"h-4 w-4 ml-2"})]})}),icon:n.jsx(ie,{})}),s[0]=d):d=s[0],d}const r=!!e.trim();let j,u,N,f,i,b,x,m,g,l;if(s[1]!==a?(j=d=>{a(d.length>0),t(d)},s[1]=a,s[2]=j):j=s[2],s[3]!==e||s[4]!==j?(u=n.jsx(Ke,{placeholder:"Search tables...",className:"h-6 m-1",value:e,onValueChange:j,rootClassName:"flex-1 border-r"}),s[3]=e,s[4]=j,s[5]=u):u=s[5],s[6]!==r?(N=r&&n.jsx("button",{type:"button",className:"float-right border-b px-2 m-0 h-full hover:bg-accent hover:text-accent-foreground",onClick:()=>t(""),children:n.jsx(Me,{className:"h-4 w-4"})}),s[6]=r,s[7]=N):N=s[7],s[8]===Symbol.for("react.memo_cache_sentinel")?(f=n.jsx(ge,{children:n.jsx("button",{type:"button",className:"float-right border-b px-2 m-0 h-full hover:bg-accent hover:text-accent-foreground",children:n.jsx(de,{className:"h-4 w-4"})})}),s[8]=f):f=s[8],s[9]!==u||s[10]!==N?(i=n.jsxs("div",{className:"flex items-center w-full",children:[u,N,f]}),s[9]=u,s[10]=N,s[11]=i):i=s[11],s[12]!==c||s[13]!==r||s[14]!==e){let d;s[16]!==r||s[17]!==e?(d=h=>n.jsx(Se,{connection:h,hasChildren:h.databases.length>0,children:h.databases.map(p=>n.jsx(Ce,{engineName:h.name,database:p,hasSearch:r,children:n.jsx($e,{schemas:p.schemas,defaultSchema:h.default_schema,defaultDatabase:h.default_database,engineName:h.name,databaseName:p.name,hasSearch:r,searchValue:e})},p.name))},h.name),s[16]=r,s[17]=e,s[18]=d):d=s[18],b=c.map(d),s[12]=c,s[13]=r,s[14]=e,s[15]=b}else b=s[15];return s[19]!==c.length||s[20]!==o.length?(x=c.length>0&&o.length>0&&n.jsxs(le,{children:[n.jsx(Be,{className:"h-4 w-4 text-muted-foreground"}),n.jsx("span",{className:"text-xs",children:"Python"})]}),s[19]=c.length,s[20]=o.length,s[21]=x):x=s[21],s[22]!==e||s[23]!==o?(m=o.length>0&&n.jsx(te,{tables:o,searchValue:e}),s[22]=e,s[23]=o,s[24]=m):m=s[24],s[25]!==b||s[26]!==x||s[27]!==m?(g=n.jsxs(Oe,{className:"flex flex-col",children:[b,x,m]}),s[25]=b,s[26]=x,s[27]=m,s[28]=g):g=s[28],s[29]!==i||s[30]!==g?(l=n.jsxs(Ge,{className:"border-b bg-background rounded-none h-full pb-10 overflow-auto outline-hidden",shouldFilter:!1,children:[i,g]}),s[29]=i,s[30]=g,s[31]=l):l=s[31],l},Se=s=>{const e=V.c(26),{connection:t,children:a,hasChildren:o}=s,c=t.name===He,r=c?"In-Memory":t.name,{previewDataSourceConnection:j}=Je(),[u,N]=F.useState(!1);let f;e[0]!==t.name||e[1]!==j?(f=async()=>{N(!0),await j({engine:t.name}),setTimeout(()=>N(!1),500)},e[0]=t.name,e[1]=j,e[2]=f):f=e[2];const i=f;let b,x,m;e[3]!==t.dialect?(b=n.jsx(Re,{className:"h-4 w-4 text-muted-foreground",name:t.dialect}),e[3]=t.dialect,e[4]=b):b=e[4],e[5]!==t.dialect?(x=Ue(t.dialect),e[5]=t.dialect,e[6]=x):x=e[6],e[7]!==x?(m=n.jsx("span",{className:"text-xs",children:x}),e[7]=x,e[8]=m):m=e[8];const g=r;let l,d,h,p,_;return e[9]!==g?(l=n.jsxs("span",{className:"text-xs text-muted-foreground",children:["(",n.jsx(_e,{variableName:g}),")"]}),e[9]=g,e[10]=l):l=e[10],e[11]!==i||e[12]!==c||e[13]!==u?(d=!c&&n.jsx(Z,{content:"Refresh connection",children:n.jsx(Y,{variant:"ghost",size:"icon",className:"ml-auto hover:bg-transparent hover:shadow-none",onClick:i,children:n.jsx(We,{className:M("h-4 w-4 text-muted-foreground hover:text-foreground",u&&"animate-[spin_0.5s]")})})}),e[11]=i,e[12]=c,e[13]=u,e[14]=d):d=e[14],e[15]!==b||e[16]!==m||e[17]!==l||e[18]!==d?(h=n.jsxs(le,{children:[b,m,l,d]}),e[15]=b,e[16]=m,e[17]=l,e[18]=d,e[19]=h):h=e[19],e[20]!==a||e[21]!==o?(p=o?a:n.jsx(Q,{content:"No databases available",className:"pl-2"}),e[20]=a,e[21]=o,e[22]=p):p=e[22],e[23]!==h||e[24]!==p?(_=n.jsxs(n.Fragment,{children:[h,p]}),e[23]=h,e[24]=p,e[25]=_):_=e[25],_},Ce=s=>{const e=V.c(25),{hasSearch:t,engineName:a,database:o,children:c}=s,[r,j]=F.useState(!1),[u,N]=F.useState(!1),[f,i]=F.useState(t);let b;f!==t&&(i(t),j(t)),e[0]!==r||e[1]!==u?(b=()=>{j(!r),N(!u)},e[0]=r,e[1]=u,e[2]=b):b=e[2];const x=`${a}:${o.name}`;let m;e[3]!==r?(m=n.jsx(xe,{isExpanded:r}),e[3]=r,e[4]=m):m=e[4];const g=u&&r?"text-foreground":"text-muted-foreground";let l,d;e[5]!==g?(l=M("h-4 w-4",g),e[5]=g,e[6]=l):l=e[6],e[7]!==l?(d=n.jsx(ie,{className:l}),e[7]=l,e[8]=d):d=e[8];const h=u&&r&&"font-semibold";let p,_,y,w;e[9]!==h?(p=M(h),e[9]=h,e[10]=p):p=e[10],e[11]!==o.name?(_=o.name===""?n.jsx("i",{children:"Not connected"}):o.name,e[11]=o.name,e[12]=_):_=e[12],e[13]!==p||e[14]!==_?(y=n.jsx("span",{className:p,children:_}),e[13]=p,e[14]=_,e[15]=y):y=e[15],e[16]!==b||e[17]!==y||e[18]!==x||e[19]!==m||e[20]!==d?(w=n.jsxs(ee,{className:"text-sm flex flex-row gap-1 items-center cursor-pointer rounded-none",onSelect:b,value:x,children:[m,d,y]}),e[16]=b,e[17]=y,e[18]=x,e[19]=m,e[20]=d,e[21]=w):w=e[21];const v=r&&c;let S;return e[22]!==w||e[23]!==v?(S=n.jsxs(n.Fragment,{children:[w,v]}),e[22]=w,e[23]=v,e[24]=S):S=e[24],S},$e=s=>{const e=V.c(20),{schemas:t,defaultSchema:a,defaultDatabase:o,engineName:c,databaseName:r,hasSearch:j,searchValue:u}=s;if(t.length===0){let i;return e[0]===Symbol.for("react.memo_cache_sentinel")?(i=n.jsx(Q,{content:"No schemas available",className:"pl-6"}),e[0]=i):i=e[0],i}let N,f;if(e[1]!==r||e[2]!==o||e[3]!==a||e[4]!==c||e[5]!==j||e[6]!==t||e[7]!==u){let i;e[9]!==u?(i=m=>!u||m.tables.some(g=>g.name.toLowerCase().includes(u.toLowerCase())),e[9]=u,e[10]=i):i=e[10];const b=t.filter(i);let x;e[11]!==r||e[12]!==o||e[13]!==a||e[14]!==c||e[15]!==j||e[16]!==u?(x=m=>n.jsx(ke,{databaseName:r,schema:m,hasSearch:j,children:n.jsx(te,{tables:m.tables,searchValue:u,sqlTableContext:{engine:c,database:r,schema:m.name,defaultSchema:a,defaultDatabase:o}})},m.name),e[11]=r,e[12]=o,e[13]=a,e[14]=c,e[15]=j,e[16]=u,e[17]=x):x=e[17],N=b.map(x),e[1]=r,e[2]=o,e[3]=a,e[4]=c,e[5]=j,e[6]=t,e[7]=u,e[8]=N}else N=e[8];return e[18]!==N?(f=n.jsx(n.Fragment,{children:N}),e[18]=N,e[19]=f):f=e[19],f},ke=s=>{const e=V.c(23),{databaseName:t,schema:a,children:o,hasSearch:c}=s,[r,j]=F.useState(c),[u,N]=F.useState(!1),f=`${t}:${a.name}`;if(be(a.name))return o;let i,b;e[0]!==r||e[1]!==u?(i=()=>{j(!r),N(!u)},e[0]=r,e[1]=u,e[2]=i):i=e[2],e[3]!==r?(b=n.jsx(xe,{isExpanded:r}),e[3]=r,e[4]=b):b=e[4];const x=u&&r&&"text-foreground";let m,g;e[5]!==x?(m=M("h-4 w-4 text-muted-foreground",x),e[5]=x,e[6]=m):m=e[6],e[7]!==m?(g=n.jsx(dt,{className:m}),e[7]=m,e[8]=g):g=e[8];const l=u&&r&&"font-semibold";let d,h,p;e[9]!==l?(d=M(l),e[9]=l,e[10]=d):d=e[10],e[11]!==a.name||e[12]!==d?(h=n.jsx("span",{className:d,children:a.name}),e[11]=a.name,e[12]=d,e[13]=h):h=e[13],e[14]!==i||e[15]!==b||e[16]!==g||e[17]!==h||e[18]!==f?(p=n.jsxs(ee,{className:"text-sm flex flex-row gap-1 items-center pl-5 cursor-pointer rounded-none",onSelect:i,value:f,children:[b,g,h]}),e[14]=i,e[15]=b,e[16]=g,e[17]=h,e[18]=f,e[19]=p):p=e[19];const _=r&&o;let y;return e[20]!==_||e[21]!==p?(y=n.jsxs(n.Fragment,{children:[p,_]}),e[20]=_,e[21]=p,e[22]=y):y=e[22],y},te=s=>{const e=V.c(24),{tables:t,sqlTableContext:a,searchValue:o}=s,{addTableList:c}=me(),[r,j]=F.useState(!1),[u,N]=F.useState(!1);let f,i;e[0]!==c||e[1]!==a||e[2]!==t.length||e[3]!==r?(f=async()=>{if(t.length===0&&a&&!r){j(!0),N(!0);const{engine:l,database:d,schema:h}=a,p=await ut.request({engine:l,database:d,schema:h});if(!(p!=null&&p.tables))throw N(!1),new Error("No tables available");c({tables:p.tables,sqlTableContext:a}),N(!1)}},e[0]=c,e[1]=a,e[2]=t.length,e[3]=r,e[4]=f):f=e[4],e[5]!==a||e[6]!==t.length||e[7]!==r?(i=[t.length,a,r],e[5]=a,e[6]=t.length,e[7]=r,e[8]=i):i=e[8];const{isPending:b,error:x}=ce(f,i);if(b||u){let l;return e[9]===Symbol.for("react.memo_cache_sentinel")?(l=n.jsx(pe,{message:"Loading tables...",className:"pl-12"}),e[9]=l):l=e[9],l}if(x){let l;return e[10]!==x?(l=n.jsx(ue,{error:x,className:"pl-12"}),e[10]=x,e[11]=l):l=e[11],l}if(t.length===0){let l;return e[12]===Symbol.for("react.memo_cache_sentinel")?(l=n.jsx(Q,{content:"No tables found",className:"pl-9"}),e[12]=l):l=e[12],l}let m,g;if(e[13]!==o||e[14]!==a||e[15]!==t){let l;e[17]!==o?(l=p=>!o||p.name.toLowerCase().includes(o.toLowerCase()),e[17]=o,e[18]=l):l=e[18];const d=t.filter(l);let h;e[19]!==o||e[20]!==a?(h=p=>n.jsx(Te,{table:p,sqlTableContext:a,isSearching:!!o},p.name),e[19]=o,e[20]=a,e[21]=h):h=e[21],m=d.map(h),e[13]=o,e[14]=a,e[15]=t,e[16]=m}else m=e[16];return e[22]!==m?(g=n.jsx(n.Fragment,{children:m}),e[22]=m,e[23]=g):g=e[23],g},Te=s=>{const e=V.c(64),{table:t,sqlTableContext:a,isSearching:o}=s,{addTable:c}=me(),[r,j]=F.useState(!1),[u,N]=F.useState(!1),f=t.columns.length>0;let i,b;e[0]!==c||e[1]!==r||e[2]!==a||e[3]!==t.name||e[4]!==f||e[5]!==u?(i=async()=>{if(r&&!f&&a&&!u){N(!0);const{engine:q,database:U,schema:Ie}=a,W=await ht.request({engine:q,database:U,schema:Ie,tableName:t.name});if(!(W!=null&&W.table))throw new Error("No table details available");c({table:W.table,sqlTableContext:a})}},e[0]=c,e[1]=r,e[2]=a,e[3]=t.name,e[4]=f,e[5]=u,e[6]=i):i=e[6],e[7]!==r||e[8]!==f?(b=[r,f],e[7]=r,e[8]=f,e[9]=b):b=e[9];const{isFetching:x,isPending:m,error:g}=ce(i,b),l=X(Xe),d=Ye(),{createNewCell:h}=Ze(),p=he();let _;e[10]!==p||e[11]!==l||e[12]!==h||e[13]!==d||e[14]!==a||e[15]!==t?(_=()=>{Qe({autoInstantiate:l,createNewCell:h,fromCellId:d}),p((()=>{if(t.source_type==="catalog"){const q=a!=null&&a.database?`${a.database}.${t.name}`:t.name;return`${t.engine}.load_table("${q}")`}if(a)return fe({table:t,columnName:"*",sqlTableContext:a});switch(t.source_type){case"local":return`mo.ui.table(${t.name})`;case"duckdb":case"connection":return fe({table:t,columnName:"*",sqlTableContext:a});default:return nt(t.source_type),""}})())},e[10]=p,e[11]=l,e[12]=h,e[13]=d,e[14]=a,e[15]=t,e[16]=_):_=e[16];const y=_;let w;e[17]!==t.num_columns||e[18]!==t.num_rows?(w=()=>{const q=[];return t.num_rows!=null&&q.push(`${t.num_rows} rows`),t.num_columns!=null&&q.push(`${t.num_columns} columns`),q.length===0?null:n.jsx("div",{className:"flex flex-row gap-2 items-center pl-6 group-hover:hidden",children:n.jsx("span",{className:"text-xs text-muted-foreground",children:q.join(", ")})})},e[17]=t.num_columns,e[18]=t.num_rows,e[19]=w):w=e[19];const v=w;let S;e[20]!==g||e[21]!==x||e[22]!==m||e[23]!==a||e[24]!==t?(S=()=>{if(m||x)return n.jsx(pe,{message:"Loading columns...",className:"pl-12"});if(g)return n.jsx(ue,{error:g,className:"pl-12"});const q=t.columns;return q.length===0?n.jsx(Q,{content:"No columns found",className:"pl-12"}):q.map(U=>n.jsx(qe,{table:t,column:U,sqlTableContext:a},U.name))},e[20]=g,e[21]=x,e[22]=m,e[23]=a,e[24]=t,e[25]=S):S=e[25];const D=S;let I;e[26]!==r||e[27]!==o||e[28]!==t.source_type||e[29]!==t.type?(I=()=>{if(t.source_type==="local")return;const q=t.type==="table"?et:tt;return n.jsx(q,{className:"h-3 w-3",strokeWidth:r||o?2.5:void 0})},e[26]=r,e[27]=o,e[28]=t.source_type,e[29]=t.type,e[30]=I):I=e[30];const L=I,A=a?`${a.database}.${a.schema}.${t.name}`:t.name,z=a&&(be(a.schema)?"pl-9":"pl-12"),E=(r||o)&&"font-semibold";let C,$,k,P,B,K,T,J,O,G,H,R;return e[31]!==z||e[32]!==E?(C=M("rounded-none group h-8 cursor-pointer",z,E),e[31]=z,e[32]=E,e[33]=C):C=e[33],e[34]!==r?($=()=>j(!r),e[34]=r,e[35]=$):$=e[35],e[36]!==L?(k=L(),e[36]=L,e[37]=k):k=e[37],e[38]!==t.name?(P=n.jsx("span",{className:"text-sm",children:t.name}),e[38]=t.name,e[39]=P):P=e[39],e[40]!==k||e[41]!==P?(B=n.jsxs("div",{className:"flex gap-2 items-center flex-1",children:[k,P]}),e[40]=k,e[41]=P,e[42]=B):B=e[42],e[43]!==v?(K=v(),e[43]=v,e[44]=K):K=e[44],e[45]!==y?(T=at.stopPropagation(()=>y()),e[45]=y,e[46]=T):T=e[46],e[47]===Symbol.for("react.memo_cache_sentinel")?(J=n.jsx(st,{className:"h-3 w-3"}),e[47]=J):J=e[47],e[48]!==T?(O=n.jsx(Z,{content:"Add table to notebook",delayDuration:400,children:n.jsx(Y,{className:"group-hover:inline-flex hidden",variant:"text",size:"icon",onClick:T,children:J})}),e[48]=T,e[49]=O):O=e[49],e[50]!==r||e[51]!==$||e[52]!==B||e[53]!==K||e[54]!==O||e[55]!==C||e[56]!==A?(G=n.jsxs(ee,{className:C,value:A,"aria-selected":r,forceMount:!0,onSelect:$,children:[B,K,O]}),e[50]=r,e[51]=$,e[52]=B,e[53]=K,e[54]=O,e[55]=C,e[56]=A,e[57]=G):G=e[57],e[58]!==r||e[59]!==D?(H=r&&D(),e[58]=r,e[59]=D,e[60]=H):H=e[60],e[61]!==G||e[62]!==H?(R=n.jsxs(n.Fragment,{children:[G,H]}),e[61]=G,e[62]=H,e[63]=R):R=e[63],R},qe=s=>{var B,K;const e=V.c(48),{table:t,column:a,sqlTableContext:o}=s,[c,r]=F.useState(!1),j=X(oe),u=re(rt);j&&c&&r(!1),u(c?T=>new Set([...T,`${t.name}:${a.name}`]):T=>(T.delete(`${t.name}:${a.name}`),new Set(T)));const N=he(),{columnsPreviews:f}=ot();let i;e[0]!==a.name||e[1]!==t.primary_keys?(i=((B=t.primary_keys)==null?void 0:B.includes(a.name))||!1,e[0]=a.name,e[1]=t.primary_keys,e[2]=i):i=e[2];const b=i;let x;e[3]!==a.name||e[4]!==t.indexes?(x=((K=t.indexes)==null?void 0:K.includes(a.name))||!1,e[3]=a.name,e[4]=t.indexes,e[5]=x):x=e[5];const m=x;let g;e[6]!==N?(g=T=>{N(T)},e[6]=N,e[7]=g):g=e[7];const l=g,d=Fe,h=c?"font-semibold":"";let p;e[8]!==a.name||e[9]!==h?(p=n.jsx("span",{className:h,children:a.name}),e[8]=a.name,e[9]=h,e[10]=p):p=e[10];const _=p,y=`${t.name}.${a.name}`,w=`${t.name}.${a.name}`;let v;e[11]!==c?(v=()=>r(!c),e[11]=c,e[12]=v):v=e[12];const S=o?"pl-14":"pl-7";let D,I,L,A,z,E,C,$,k,P;return e[13]!==S?(D=M("flex flex-row gap-2 items-center flex-1",S),e[13]=S,e[14]=D):D=e[14],e[15]!==a.type||e[16]!==_?(I=n.jsx(lt,{columnName:_,dataType:a.type}),e[15]=a.type,e[16]=_,e[17]=I):I=e[17],e[18]!==b?(L=b&&d({tooltipContent:"Primary key",content:"PK"}),e[18]=b,e[19]=L):L=e[19],e[20]!==m?(A=m&&d({tooltipContent:"Indexed",content:"IDX"}),e[20]=m,e[21]=A):A=e[21],e[22]!==D||e[23]!==I||e[24]!==L||e[25]!==A?(z=n.jsxs("div",{className:D,children:[I,L,A]}),e[22]=D,e[23]=I,e[24]=L,e[25]=A,e[26]=z):z=e[26],e[27]!==a.name?(E=n.jsx(Z,{content:"Copy column name",delayDuration:400,children:n.jsx(Y,{variant:"text",size:"icon",className:"group-hover:opacity-100 opacity-0 hover:bg-muted text-muted-foreground hover:text-foreground",children:n.jsx(mt,{tooltip:!1,value:a.name,className:"h-3 w-3"})})}),e[27]=a.name,e[28]=E):E=e[28],e[29]!==a.external_type?(C=n.jsx("span",{className:"text-xs text-muted-foreground",children:a.external_type}),e[29]=a.external_type,e[30]=C):C=e[30],e[31]!==z||e[32]!==E||e[33]!==C||e[34]!==y||e[35]!==w||e[36]!==v?($=n.jsxs(ee,{className:"rounded-none py-1 group cursor-pointer",value:w,onSelect:v,children:[z,E,C]},y),e[31]=z,e[32]=E,e[33]=C,e[34]=y,e[35]=w,e[36]=v,e[37]=$):$=e[37],e[38]!==a||e[39]!==f||e[40]!==l||e[41]!==c||e[42]!==o||e[43]!==t?(k=c&&n.jsx("div",{className:"pl-10 pr-2 py-2 bg-(--slate-1) shadow-inner border-b",children:n.jsx(ct,{children:n.jsx(it,{table:t,column:a,onAddColumnChart:l,preview:f.get(o?`${o.database}.${o.schema}.${t.name}:${a.name}`:`${t.name}:${a.name}`),sqlTableContext:o})})}),e[38]=a,e[39]=f,e[40]=l,e[41]=c,e[42]=o,e[43]=t,e[44]=k):k=e[44],e[45]!==$||e[46]!==k?(P=n.jsxs(n.Fragment,{children:[$,k]}),e[45]=$,e[46]=k,e[47]=P):P=e[47],P};function Fe(s){const{tooltipContent:e,content:t}=s;return n.jsx(Z,{content:e,delayDuration:100,children:n.jsx("span",{className:"text-xs text-black bg-gray-100 dark:invert rounded px-1",children:t})})}Ne=()=>{const s=V.c(1);let e;return s[0]===Symbol.for("react.memo_cache_sentinel")?(e=n.jsx(ve,{}),s[0]=e):e=s[0],e}});export{jt as __tla,Ne as default};