@marimo-team/frontend 0.21.1-dev94 → 0.21.1

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 (621) hide show
  1. package/dist/assets/{CellStatus-D0IfrfUM.js → CellStatus-CDSBsjjF.js} +1 -1
  2. package/dist/assets/{Combination-CBJmtdux.js → Combination-Cs9nbinQ.js} +1 -1
  3. package/dist/assets/ConnectedDataExplorerComponent-Buaffg3u.js +1 -0
  4. package/dist/assets/{ErrorBoundary-H5EQrcAX.js → ErrorBoundary-Ba0LbbH4.js} +1 -1
  5. package/dist/assets/{ImperativeModal-b5nJtLod.js → ImperativeModal-qEtcJ95s.js} +1 -1
  6. package/dist/assets/{JsonOutput-DjokO226.js → JsonOutput-DKXKGKvX.js} +11 -11
  7. package/dist/assets/LazyAnyLanguageCodeMirror-m8w66E4s.js +2 -0
  8. package/dist/assets/{MarimoErrorOutput-CimwFZPP.js → MarimoErrorOutput-az74f3Mp.js} +5 -5
  9. package/dist/assets/RenderHTML-DJ8khuob.js +1 -0
  10. package/dist/assets/{add-cell-with-ai-Bl1TJ3Bp.js → add-cell-with-ai-DUn4LN4W.js} +17 -17
  11. package/dist/assets/{add-connection-dialog-CIHDuGfD.js → add-connection-dialog-CBz0AUVX.js} +23 -23
  12. package/dist/assets/{agent-panel-DFVcMxMV.js → agent-panel-u83dsDsM.js} +3 -3
  13. package/dist/assets/{ai-model-dropdown-DxpOlTBW.js → ai-model-dropdown-DPTa_EpU.js} +4 -4
  14. package/dist/assets/{alert-dialog-DbQ_TZC7.js → alert-dialog-9WfvUF7e.js} +1 -1
  15. package/dist/assets/{any-language-editor-TJ9GwX4u.js → any-language-editor-DwQMnAM3.js} +1 -1
  16. package/dist/assets/apl-CWQZjEHB.js +1 -0
  17. package/dist/assets/{app-config-button-zy3OAtTs.js → app-config-button-rDu-lCIB.js} +1 -1
  18. package/dist/assets/{arc-CTRjCaaq.js → arc-BrTIAGt4.js} +1 -1
  19. package/dist/assets/{architecture-7HQA4BMR-Czl_30LW.js → architecture-7HQA4BMR-BewjmwdA.js} +1 -1
  20. package/dist/assets/{architectureDiagram-VXUJARFQ-COwARW7a.js → architectureDiagram-VXUJARFQ-DfMHHFZ3.js} +1 -1
  21. package/dist/assets/asciiarmor-YkqeOS7J.js +1 -0
  22. package/dist/assets/asn1-CXKIzj3m.js +1 -0
  23. package/dist/assets/{assertNever-CTRGz-ul.js → assertNever-DWSyoPEi.js} +1 -1
  24. package/dist/assets/{azure-Dy9N467C.js → azure-BTXHztTw.js} +1 -1
  25. package/dist/assets/{blockDiagram-VD42YOAC-bqSy8CKA.js → blockDiagram-VD42YOAC-CuEDwbg7.js} +1 -1
  26. package/dist/assets/brainfuck-BATyDEza.js +1 -0
  27. package/dist/assets/{button-BZAv3veu.js → button-Ej3vmCIF.js} +1 -1
  28. package/dist/assets/{c4Diagram-YG6GDRKO-B4dmQbDY.js → c4Diagram-YG6GDRKO-CD9uz7WG.js} +1 -1
  29. package/dist/assets/{cache-panel-BfUwEjmW.js → cache-panel-qIxnndwr.js} +1 -1
  30. package/dist/assets/{capabilities-B1-dYWS8.js → capabilities-D3x_db9Y.js} +1 -1
  31. package/dist/assets/{capitalize-DcpkQwJe.js → capitalize-BfkXNxmI.js} +1 -1
  32. package/dist/assets/{cell-editor-CSaoLcvI.js → cell-editor-DX7IcqNr.js} +14 -14
  33. package/dist/assets/{cell-link-CL9widoN.js → cell-link-Q_UEP94Z.js} +1 -1
  34. package/dist/assets/{cells-wT6clfi5.js → cells-fq1RMGX_.js} +67 -67
  35. package/dist/assets/channel-CkT8Qdo2.js +1 -0
  36. package/dist/assets/{chat-display-CWCYGDhk.js → chat-display-D_Fuuy6r.js} +1 -1
  37. package/dist/assets/{chat-panel-CYOmGmIc.js → chat-panel-BO-JoQSp.js} +2 -2
  38. package/dist/assets/{chunk-4BX2VUAB-DxZzAYWS.js → chunk-4BX2VUAB-DOQhLGwX.js} +1 -1
  39. package/dist/assets/chunk-55IACEB6-D0TKhzEY.js +1 -0
  40. package/dist/assets/{chunk-5FQGJX7Z-DEi7JZeU.js → chunk-5FQGJX7Z-CM1a_K7I.js} +2 -2
  41. package/dist/assets/{chunk-ABZYJK2D-DkAtI3pw.js → chunk-ABZYJK2D-D_Wumzom.js} +3 -3
  42. package/dist/assets/{chunk-ATLVNIR6-ChgKNkyQ.js → chunk-ATLVNIR6-BZ0lTgIn.js} +1 -1
  43. package/dist/assets/{chunk-B4BG7PRW-BYnYQ8Z8.js → chunk-B4BG7PRW-Dw1S6osV.js} +1 -1
  44. package/dist/assets/{chunk-CVBHYZKI-C-NWvPQL.js → chunk-CVBHYZKI-BmNXddyI.js} +1 -1
  45. package/dist/assets/{chunk-DI55MBZ5-DGkjCcnO.js → chunk-DI55MBZ5-Q63FTCPP.js} +1 -1
  46. package/dist/assets/{chunk-EXTU4WIE-wdzdLMEk.js → chunk-EXTU4WIE-CfkJ_R7W.js} +1 -1
  47. package/dist/assets/{chunk-FMBD7UC4-DuWsgzwj.js → chunk-FMBD7UC4-BF_CXOnN.js} +1 -1
  48. package/dist/assets/{chunk-HN2XXSSU-Bcaj5fRB.js → chunk-HN2XXSSU-BstCPYtG.js} +1 -1
  49. package/dist/assets/{chunk-JA3XYJ7Z-BWPXVwYA.js → chunk-JA3XYJ7Z-B41fGeoj.js} +1 -1
  50. package/dist/assets/{chunk-JZLCHNYA-CPBgHJG6.js → chunk-JZLCHNYA-D43EJxQw.js} +1 -1
  51. package/dist/assets/{chunk-MI3HLSF2-DqzZqBCh.js → chunk-MI3HLSF2-BceZdyTR.js} +1 -1
  52. package/dist/assets/{chunk-N4CR4FBY-forux6m9.js → chunk-N4CR4FBY-DCtw0-ni.js} +2 -2
  53. package/dist/assets/{chunk-QN33PNHL-CoAvIXQ4.js → chunk-QN33PNHL-CLA2rsaS.js} +1 -1
  54. package/dist/assets/{chunk-QXUST7PY-CjJQCNsV.js → chunk-QXUST7PY-De1DpbnL.js} +1 -1
  55. package/dist/assets/{chunk-QZHKN3VN-C5G6HcUv.js → chunk-QZHKN3VN-D3EIvP2i.js} +1 -1
  56. package/dist/assets/{chunk-S3R3BYOJ-Fevl0fI0.js → chunk-S3R3BYOJ-qrwvlUdq.js} +1 -1
  57. package/dist/assets/{chunk-TZMSLE5B-D1hA5isA.js → chunk-TZMSLE5B-C4KcThb0.js} +1 -1
  58. package/dist/assets/classDiagram-2ON5EDUG-BhMT_rTz.js +1 -0
  59. package/dist/assets/classDiagram-v2-WZHVMYZB-D-F4WEyb.js +1 -0
  60. package/dist/assets/{clike-DranGnQS.js → clike-C3ewt06X.js} +1 -1
  61. package/dist/assets/clojure-DSdxtK57.js +1 -0
  62. package/dist/assets/cmake-b6COJhkL.js +1 -0
  63. package/dist/assets/cobol-0au-d4Af.js +1 -0
  64. package/dist/assets/{code-block-37QAKDTI-qwBFemzY.js → code-block-37QAKDTI-D4FF4cnN.js} +1 -1
  65. package/dist/assets/coffeescript-CO6miDRN.js +1 -0
  66. package/dist/assets/{column-preview-UqRUB1pJ.js → column-preview-WsubyItX.js} +1 -1
  67. package/dist/assets/command-palette-Bez4BqJF.js +1 -0
  68. package/dist/assets/{command-DGKK2-4P.js → command-rfxSsiHU.js} +1 -1
  69. package/dist/assets/{common-D7Sae5Jl.js → common-BYwO983A.js} +1 -1
  70. package/dist/assets/commonlisp-ViswrHum.js +1 -0
  71. package/dist/assets/{components-U5Mj1xiO.js → components-Bpgzv_5_.js} +1 -1
  72. package/dist/assets/{components-CNlTaOLK.js → components-Ozq0825a.js} +1 -1
  73. package/dist/assets/{config-DeEqZTX7.js → config-3Aq84phF.js} +1 -1
  74. package/dist/assets/{context-CRmPPhx9.js → context-CIAP2NOh.js} +1 -1
  75. package/dist/assets/context-aware-panel-CfsfBlhO.js +3 -0
  76. package/dist/assets/{copy-BvFGCBvy.js → copy-YwM0Pd7v.js} +1 -1
  77. package/dist/assets/{copy-icon-HTFh4odu.js → copy-icon-BgmMM9Zg.js} +1 -1
  78. package/dist/assets/{cose-bilkent-S5V4N54A-CcpcHY0J.js → cose-bilkent-S5V4N54A-Bd5HJPaN.js} +1 -1
  79. package/dist/assets/{createReducer-DgaMD0B6.js → createReducer-Drh7NmIR.js} +1 -1
  80. package/dist/assets/crystal-BcOI1XlU.js +1 -0
  81. package/dist/assets/{css-NN_Gn5Zq.js → css-CCWfM5vT.js} +1 -1
  82. package/dist/assets/cypher-BKbuDk70.js +1 -0
  83. package/dist/assets/d-4fbeW9Dj.js +1 -0
  84. package/dist/assets/{dagre-6UL2VRFP-xpkP9laI.js → dagre-6UL2VRFP-BhMnPhuU.js} +1 -1
  85. package/dist/assets/{data-grid-overlay-editor-CwkmYIQf.js → data-grid-overlay-editor-kbv73SQ7.js} +1 -1
  86. package/dist/assets/{datasource-DIETDMi4.js → datasource-F9sJtuof.js} +2 -2
  87. package/dist/assets/{dates-BcvJrESI.js → dates-CHaNfieI.js} +1 -1
  88. package/dist/assets/{dependency-graph-panel-Cg4IqU-y.js → dependency-graph-panel-AOBcX2tP.js} +4 -4
  89. package/dist/assets/{diagram-PSM6KHXK-DkNkLK59.js → diagram-PSM6KHXK-Cr2t4zul.js} +1 -1
  90. package/dist/assets/{diagram-QEK2KX5R-pGiS0fXO.js → diagram-QEK2KX5R-DLU_hSO4.js} +1 -1
  91. package/dist/assets/{diagram-S2PKOQOG-ChyqkT53.js → diagram-S2PKOQOG-C7EkNAO3.js} +1 -1
  92. package/dist/assets/{dialog-DCGn-_Ip.js → dialog-CVN1lcMF.js} +1 -1
  93. package/dist/assets/diff-CV59_hp-.js +1 -0
  94. package/dist/assets/{dist-gMRZ7Vz0.js → dist-BTqMkf4j.js} +1 -1
  95. package/dist/assets/dist-BZeePkbd.js +1 -0
  96. package/dist/assets/{dist-CWEZ0LAs.js → dist-BhNN2V5a.js} +1 -1
  97. package/dist/assets/{dist-CnFjzKc0.js → dist-Br306776.js} +1 -1
  98. package/dist/assets/dist-Br4KMeY4.js +1 -0
  99. package/dist/assets/{dist-BuvaPNu6.js → dist-CblX3KGI.js} +1 -1
  100. package/dist/assets/dist-Cp60fE5Z.js +1 -0
  101. package/dist/assets/{dist-D9ffpjJP.js → dist-CsRbK9-Y.js} +1 -1
  102. package/dist/assets/{dist-DbaY2Em0.js → dist-DHw9sXeN.js} +1 -1
  103. package/dist/assets/{dist-D98wU_Qc.js → dist-DJBpXGro.js} +1 -1
  104. package/dist/assets/dist-DVbTmqCA.js +1 -0
  105. package/dist/assets/{dist-DQShu5gW.js → dist-Du0qZeXz.js} +1 -1
  106. package/dist/assets/{dist-jfGyouTb.js → dist-Tk70DR_I.js} +1 -1
  107. package/dist/assets/{dist-7pyxhBKl.js → dist-a0FfbvMD.js} +1 -1
  108. package/dist/assets/{dist-wJ27rvH6.js → dist-cfkfP0ni.js} +1 -1
  109. package/dist/assets/{dist-CcUQ6O5c.js → dist-e6Ho4upI.js} +1 -1
  110. package/dist/assets/{dist-B6ieTXLS.js → dist-pzQ9JG-p.js} +1 -1
  111. package/dist/assets/{dockerfile-D57iX-cx.js → dockerfile-ClV2Mqz8.js} +1 -1
  112. package/dist/assets/documentation-panel-D28MpqbI.js +1 -0
  113. package/dist/assets/{download-RVcmZh1N.js → download-B9_ToVd4.js} +4 -4
  114. package/dist/assets/{dropdown-menu-CJ-Wwa2I.js → dropdown-menu-DdPu5Kfu.js} +1 -1
  115. package/dist/assets/dtd-BAjS2EMD.js +1 -0
  116. package/dist/assets/dylan-CjAEbzAl.js +1 -0
  117. package/dist/assets/ecl-DegMF2Uo.js +1 -0
  118. package/dist/assets/{edit-page-CTVRcSta.js → edit-page-otS-QvnC.js} +7 -7
  119. package/dist/assets/eiffel-D_UXtJqE.js +1 -0
  120. package/dist/assets/elm-CV-6VdWh.js +1 -0
  121. package/dist/assets/{erDiagram-Q2GNP2WA-BXEF-1Zr.js → erDiagram-Q2GNP2WA-DqlEo_Us.js} +1 -1
  122. package/dist/assets/erlang-C3Vp1oq_.js +1 -0
  123. package/dist/assets/{error-banner-CAuK5DPN.js → error-banner-BRG6IPhC.js} +1 -1
  124. package/dist/assets/{error-panel-xO_Uo7Vu.js → error-panel-RRoj_iOR.js} +1 -1
  125. package/dist/assets/{es-2S6JXj4o.js → es-CzkousWe.js} +1 -1
  126. package/dist/assets/{esm-BjfXuxxx.js → esm-CBkHtTOV.js} +1 -1
  127. package/dist/assets/{esm-YHLEEu76.js → esm-DhTsVMLM.js} +1 -1
  128. package/dist/assets/factor-CBMQHXUW.js +1 -0
  129. package/dist/assets/{factor-CgxtRDfw.js → factor-CrpY0izf.js} +1 -1
  130. package/dist/assets/{field-9GctqEPJ.js → field-B1jGbQlH.js} +1 -1
  131. package/dist/assets/{file-explorer-panel-DclnBp04.js → file-explorer-panel-CB8vF5ob.js} +3 -3
  132. package/dist/assets/{file-icons-Br3viuqL.js → file-icons-CWLHDa1J.js} +1 -1
  133. package/dist/assets/floating-outline-BvQKiC0F.js +1 -0
  134. package/dist/assets/{flowDiagram-NV44I4VS-D2XAWm9D.js → flowDiagram-NV44I4VS-CQlIJ12H.js} +1 -1
  135. package/dist/assets/{focus-q8oYkLV6.js → focus-DYwTiH9-.js} +1 -1
  136. package/dist/assets/form-CrQYrsUC.js +2 -0
  137. package/dist/assets/formats-rhOJovGE.js +1 -0
  138. package/dist/assets/{formatting-CgyD0Rtn.js → formatting-B4ZCH3ol.js} +1 -1
  139. package/dist/assets/forth-C_TcrpRK.js +1 -0
  140. package/dist/assets/fortran-DOs2FQj2.js +1 -0
  141. package/dist/assets/{gallery-page-D6YeHwse.js → gallery-page-eRea0yic.js} +1 -1
  142. package/dist/assets/{ganttDiagram-JELNMOA3-xRC3owmu.js → ganttDiagram-JELNMOA3-B3EGIuZL.js} +1 -1
  143. package/dist/assets/gas-Cg-F3pmb.js +1 -0
  144. package/dist/assets/gherkin-CaXqq9kA.js +1 -0
  145. package/dist/assets/{gitGraph-G5XIXVHT-ChWZlkZO.js → gitGraph-G5XIXVHT-iDzw7G2X.js} +1 -1
  146. package/dist/assets/{gitGraphDiagram-V2S2FVAM-DVYTZhFd.js → gitGraphDiagram-V2S2FVAM-h5SlguJK.js} +1 -1
  147. package/dist/assets/{glide-data-editor-caCB-p9t.js → glide-data-editor-xt5xNZeV.js} +4 -4
  148. package/dist/assets/{globals-Bh7qAnqa.js → globals-BsV5fVR-.js} +1 -1
  149. package/dist/assets/groovy-DmxumoMi.js +1 -0
  150. package/dist/assets/haskell-BZ-cKqgz.js +1 -0
  151. package/dist/assets/haxe-x-4elm0t.js +1 -0
  152. package/dist/assets/{home-page-Cz5JcEtF.js → home-page-itW0tRmv.js} +2 -2
  153. package/dist/assets/{hooks-BOa-vQTI.js → hooks-CHx5dUUq.js} +1 -1
  154. package/dist/assets/{html-to-image-DBFAQbWm.js → html-to-image-BnSc-Wa0.js} +1 -1
  155. package/dist/assets/idl-DNkkzHKH.js +1 -0
  156. package/dist/assets/{index-CV-Vv3LK.js → index-0n92c_W7.js} +17 -17
  157. package/dist/assets/{index-CVpJvEAO.css → index-GjXovVsl.css} +1 -1
  158. package/dist/assets/{info-VBDWY6EO-cojUXphJ.js → info-VBDWY6EO-CPHm9IfG.js} +1 -1
  159. package/dist/assets/infoDiagram-HS3SLOUP-pzpClObZ.js +2 -0
  160. package/dist/assets/{input-C5eatTLl.js → input-CUwqpKjd.js} +1 -1
  161. package/dist/assets/javascript-B0uQ9oZ_.js +1 -0
  162. package/dist/assets/{journeyDiagram-XKPGCS4Q-DM3Og3fQ.js → journeyDiagram-XKPGCS4Q-BrdRi92v.js} +1 -1
  163. package/dist/assets/julia-DBflXO9b.js +1 -0
  164. package/dist/assets/{kanban-definition-3W4ZIXB7-Bysrkfnt.js → kanban-definition-3W4ZIXB7-B6WqgFqh.js} +1 -1
  165. package/dist/assets/katex-YDobqqVd.js +1 -0
  166. package/dist/assets/kiosk-mode-DNjEnIWb.js +1 -0
  167. package/dist/assets/{label-BuJDtc39.js → label-TNNaT1M9.js} +1 -1
  168. package/dist/assets/{layout-BOEBdVW9.js → layout-CwFtCyW8.js} +4 -4
  169. package/dist/assets/{line-BtYBewh-.js → line-BBSd2MUH.js} +1 -1
  170. package/dist/assets/{linear-FMI0WOL9.js → linear-BP9rwmWK.js} +1 -1
  171. package/dist/assets/{links-XdsYEk97.js → links-CIQwYQ48.js} +1 -1
  172. package/dist/assets/livescript-DRwwdQDY.js +1 -0
  173. package/dist/assets/logs-panel-BU1tNEVc.js +1 -0
  174. package/dist/assets/{loro_wasm_bg-Bs7jcPJg.js → loro_wasm_bg-MY7PmKYj.js} +1 -1
  175. package/dist/assets/lua-D_CRYz1e.js +1 -0
  176. package/dist/assets/{maps-CqKCrVZ8.js → maps-OKerBHH8.js} +1 -1
  177. package/dist/assets/{markdown-renderer-DwRjZSV8.js → markdown-renderer-MR9df58W.js} +5 -5
  178. package/dist/assets/mathematica-D28k0VAB.js +1 -0
  179. package/dist/assets/mbox-B74-q1nN.js +1 -0
  180. package/dist/assets/{menu-items-Z4F08mfP.js → menu-items-UxKrm8hS.js} +1 -1
  181. package/dist/assets/mermaid-4DMBBIKO-PoHnhmy8.js +1 -0
  182. package/dist/assets/{mermaid-ZYKil-Dz.js → mermaid-Djr3jUAB.js} +3 -3
  183. package/dist/assets/{mermaid-parser.core-C4Qn8zpN.js → mermaid-parser.core-DR82IMb2.js} +2 -2
  184. package/dist/assets/{mhchem-fkHDi4mW.js → mhchem-B98RQJ-y.js} +1 -1
  185. package/dist/assets/{mindmap-definition-VGOIOE7T-CIpQPwFO.js → mindmap-definition-VGOIOE7T-DAmJpbPM.js} +1 -1
  186. package/dist/assets/mirc-CW8yiVay.js +1 -0
  187. package/dist/assets/mllike-BwZpH7CZ.js +1 -0
  188. package/dist/assets/mode-AcL8c6qH.js +1 -0
  189. package/dist/assets/modelica-AhRO-ii8.js +1 -0
  190. package/dist/assets/mscgen-CJZUmlSk.js +1 -0
  191. package/dist/assets/{multi-map-x_GQgXMS.js → multi-map-Pp1P2DOX.js} +1 -1
  192. package/dist/assets/mumps-BTPWDvZ1.js +1 -0
  193. package/dist/assets/{name-cell-input-BhRgpz9L.js → name-cell-input-DVFEv_aO.js} +1 -1
  194. package/dist/assets/{nsis-nZ2JXCy5.js → nsis-BeaU1Q2K.js} +1 -1
  195. package/dist/assets/nsis-CuVPiHG5.js +1 -0
  196. package/dist/assets/ntriples-eNmSbiOL.js +1 -0
  197. package/dist/assets/{number-overlay-editor-B_1f1JIm.js → number-overlay-editor-D__AflXQ.js} +1 -1
  198. package/dist/assets/{numbers-BWhcwX6S.js → numbers-CYnquDho.js} +1 -1
  199. package/dist/assets/octave-BboqqX2Z.js +1 -0
  200. package/dist/assets/{ordinal-CzDPQmXB.js → ordinal-BjO5SoTk.js} +1 -1
  201. package/dist/assets/{outline-panel-BXMNkx0G.js → outline-panel-CP0oIuiU.js} +1 -1
  202. package/dist/assets/oz-eUT9rD_n.js +1 -0
  203. package/dist/assets/{packages-panel-CPHdKpTu.js → packages-panel-CzRELimG.js} +1 -1
  204. package/dist/assets/{packet-DYOGHKS2-bayfAAZm.js → packet-DYOGHKS2-0KdzLf9c.js} +1 -1
  205. package/dist/assets/panels-wTweRyIv.js +1 -0
  206. package/dist/assets/pascal-Bl9h-Ruv.js +1 -0
  207. package/dist/assets/perl-B1GdYx3j.js +1 -0
  208. package/dist/assets/{pie-VRWISCQL-Dh6PVhT_.js → pie-VRWISCQL-C6EIS9iq.js} +1 -1
  209. package/dist/assets/{pieDiagram-ADFJNKIX-DBOuifje.js → pieDiagram-ADFJNKIX-DbGIFRoq.js} +1 -1
  210. package/dist/assets/pig-CoZHWNtw.js +1 -0
  211. package/dist/assets/{popover-JNsSzROl.js → popover-BPGG2gPG.js} +1 -1
  212. package/dist/assets/powershell-B2p71KcT.js +1 -0
  213. package/dist/assets/{precisionRound-CCOoIlcP.js → precisionRound-BOmLQIKI.js} +1 -1
  214. package/dist/assets/process-output-CTVsT--B.js +1 -0
  215. package/dist/assets/properties-Cs9aaJGK.js +1 -0
  216. package/dist/assets/protobuf-DFCnQG_o.js +1 -0
  217. package/dist/assets/pug-BShaWOtD.js +1 -0
  218. package/dist/assets/{pug-D86EG76d.js → pug-v81J9ytZ.js} +1 -1
  219. package/dist/assets/puppet-4yIFv98Z.js +1 -0
  220. package/dist/assets/python-ByMRQ0aE.js +1 -0
  221. package/dist/assets/q-C7EgGttK.js +1 -0
  222. package/dist/assets/{quadrantDiagram-AYHSOK5B-DBXBUJRq.js → quadrantDiagram-AYHSOK5B-CLAtyple.js} +1 -1
  223. package/dist/assets/r-DpLLx5HE.js +1 -0
  224. package/dist/assets/{radar-ZZBFDIW7-BhZnV5PY.js → radar-ZZBFDIW7-IOV25h32.js} +1 -1
  225. package/dist/assets/{react-vega-BFWsPELq.js → react-vega-BZav_-2n.js} +1 -1
  226. package/dist/assets/react-vega-Da-Ps9UW.js +1 -0
  227. package/dist/assets/{readonly-python-code-Cyn1aSna.js → readonly-python-code-DH-1xZGq.js} +1 -1
  228. package/dist/assets/{renderShortcut-C3rk7kIN.js → renderShortcut-CnD1Dah5.js} +1 -1
  229. package/dist/assets/{requirementDiagram-UZGBJVZJ-AqfWr84z.js → requirementDiagram-UZGBJVZJ-DDDTB1LD.js} +1 -1
  230. package/dist/assets/rpm-DlCq0FVA.js +1 -0
  231. package/dist/assets/ruby-BGmSEBWH.js +1 -0
  232. package/dist/assets/run-page-FCvGnICa.js +1 -0
  233. package/dist/assets/{runs-COLNzLMC.js → runs-Bhy0tbWr.js} +1 -1
  234. package/dist/assets/{sankeyDiagram-TZEHDZUN-CzhgfkfD.js → sankeyDiagram-TZEHDZUN-DAWPOfBw.js} +1 -1
  235. package/dist/assets/sas-CFcv5xFe.js +1 -0
  236. package/dist/assets/scheme-BgRfkNY3.js +1 -0
  237. package/dist/assets/scratchpad-panel-k9lrm-rC.js +1 -0
  238. package/dist/assets/{secrets-panel-Bd4T4aNP.js → secrets-panel-B1Z-6dmz.js} +1 -1
  239. package/dist/assets/{select-Ch6m1k2G.js → select-CxT2Geqr.js} +1 -1
  240. package/dist/assets/{sequenceDiagram-WL72ISMW-CVS2bn-h.js → sequenceDiagram-WL72ISMW-D_qAidD2.js} +1 -1
  241. package/dist/assets/{session-CXChHxAw.js → session-BrEm7qNv.js} +1 -1
  242. package/dist/assets/session-panel-WhN0qilM.js +1 -0
  243. package/dist/assets/{share-DdWa0mV7.js → share-BdH_5I58.js} +1 -1
  244. package/dist/assets/shell-CKQz0rkv.js +1 -0
  245. package/dist/assets/sieve-D0P6XnTD.js +1 -0
  246. package/dist/assets/{slides-component-_XF5PFrZ.js → slides-component-Brm_TS4x.js} +1 -1
  247. package/dist/assets/smalltalk-Dcg9QwVr.js +1 -0
  248. package/dist/assets/snippets-panel-BCDHUuku.js +1 -0
  249. package/dist/assets/sparql-f01xs6VH.js +1 -0
  250. package/dist/assets/{spec-CYMZZDXr.js → spec-DbmSqx09.js} +1 -1
  251. package/dist/assets/{src-BkE2Cvg2.js → src-Bp_72rVO.js} +1 -1
  252. package/dist/assets/{state-BN6sGgkm.js → state-3V5UxC3B.js} +1 -1
  253. package/dist/assets/{state-CQzPalvd.js → state-CBmCYWFH.js} +1 -1
  254. package/dist/assets/{state-C7dZc7Rj.js → state-Ce7CVShi.js} +1 -1
  255. package/dist/assets/{stateDiagram-FKZM4ZOC-BsAKYqr2.js → stateDiagram-FKZM4ZOC-C7qgDrGA.js} +1 -1
  256. package/dist/assets/stateDiagram-v2-4FDKWEC3-CEqeIlM0.js +1 -0
  257. package/dist/assets/{step-vPM7ouyU.js → step-BkfKj3CL.js} +1 -1
  258. package/dist/assets/stylus-BjzHGGgo.js +1 -0
  259. package/dist/assets/swift-DOptU29u.js +1 -0
  260. package/dist/assets/{switch-BHXOZNHf.js → switch-CVKxYu_0.js} +1 -1
  261. package/dist/assets/tcl-vC8etUeQ.js +1 -0
  262. package/dist/assets/{terminal-D7RRO5NO.js → terminal-Cr7wbEjz.js} +1 -1
  263. package/dist/assets/textile-BfLqcKXP.js +1 -0
  264. package/dist/assets/{time-B-T70weq.js → time-D2GKc0U6.js} +1 -1
  265. package/dist/assets/{timeline-definition-IT6M3QCI-Dq8uw9c5.js → timeline-definition-IT6M3QCI-hd6uJKGs.js} +1 -1
  266. package/dist/assets/{toggle-AwCCScbH.js → toggle-RCwU-rnE.js} +1 -1
  267. package/dist/assets/toml-rX0_Isgp.js +1 -0
  268. package/dist/assets/{tooltip-CNmaER6z.js → tooltip-D9723Brr.js} +1 -1
  269. package/dist/assets/{tracing-D_eBhjGe.js → tracing-DUVd0jtl.js} +1 -1
  270. package/dist/assets/{tracing-panel-adLR9Xcg.js → tracing-panel-CuTxPn_x.js} +2 -2
  271. package/dist/assets/{tree-IqZcruNX.js → tree-Ch2-GuhG.js} +1 -1
  272. package/dist/assets/{treemap-GDKQZRPO-4PEl6J44.js → treemap-GDKQZRPO-BUa0eLeZ.js} +1 -1
  273. package/dist/assets/troff-C1lPb0WN.js +1 -0
  274. package/dist/assets/ttcn-D5dxusfs.js +1 -0
  275. package/dist/assets/ttcn-cfg-Dj2ybct-.js +1 -0
  276. package/dist/assets/turtle-BiTItqZm.js +1 -0
  277. package/dist/assets/useAddCell-YC7rpcmD.js +1 -0
  278. package/dist/assets/{useBoolean-COWWzCBr.js → useBoolean-m1e6E3Ao.js} +1 -1
  279. package/dist/assets/useCellActionButton-GUb2fXU8.js +1 -0
  280. package/dist/assets/{useDateFormatter-DOoVZUts.js → useDateFormatter-CpE7XQLs.js} +1 -1
  281. package/dist/assets/{useDeleteCell-CmX8_XRr.js → useDeleteCell-DRUDRiy0.js} +1 -1
  282. package/dist/assets/{useDependencyPanelTab-Dakjo7fJ.js → useDependencyPanelTab-nFVMlEx0.js} +1 -1
  283. package/dist/assets/useEventListener-Dy81QR4n.js +1 -0
  284. package/dist/assets/{useIframeCapabilities-DG-6GyGn.js → useIframeCapabilities-DTN9kFDq.js} +1 -1
  285. package/dist/assets/{useInstallPackage-CO3hLMle.js → useInstallPackage-C9V-on2J.js} +1 -1
  286. package/dist/assets/{useInterval-dbfNrGBa.js → useInterval-BJucVdV-.js} +1 -1
  287. package/dist/assets/{useLifecycle-CWjBWFMI.js → useLifecycle-DA9DjSPo.js} +1 -1
  288. package/dist/assets/useNotebookActions-ChLHy-0O.js +1 -0
  289. package/dist/assets/{useNumberFormatter-BXZcbTzH.js → useNumberFormatter-DbDKSvEd.js} +1 -1
  290. package/dist/assets/{usePress-alQ5Crny.js → usePress-BHGkpw8X.js} +1 -1
  291. package/dist/assets/useRunCells-5m6jCnyo.js +1 -0
  292. package/dist/assets/useSplitCell-DGD9smMq.js +1 -0
  293. package/dist/assets/{useTheme-CM9j8dgy.js → useTheme-BYXBU1of.js} +1 -1
  294. package/dist/assets/{tooltip-WkrsrB6k.js → utils-CdjCA1J8.js} +3 -3
  295. package/dist/assets/{utils-BvPM6Bro.js → utils-tNbLd14P.js} +1 -1
  296. package/dist/assets/vb-roE2hgal.js +1 -0
  297. package/dist/assets/vbscript-2s97682t.js +1 -0
  298. package/dist/assets/vega-component-CRbeDmeM.js +1 -0
  299. package/dist/assets/{vega-loader.browser-BJ9oKrvH.js → vega-loader.browser-CZV6_g2i.js} +1 -1
  300. package/dist/assets/velocity-D0YPg3VZ.js +1 -0
  301. package/dist/assets/verilog-Btszgjcd.js +1 -0
  302. package/dist/assets/vhdl-enS91NZh.js +1 -0
  303. package/dist/assets/webidl-DQMyFjhm.js +1 -0
  304. package/dist/assets/{write-secret-modal-s2JWi0j9.js → write-secret-modal-BCvuRAFb.js} +1 -1
  305. package/dist/assets/xquery-D5Jh9c_Z.js +1 -0
  306. package/dist/assets/{xychartDiagram-PRI3JC2R-d1PxDaUZ.js → xychartDiagram-PRI3JC2R-CXlUBSbQ.js} +1 -1
  307. package/dist/assets/yacas-CTzSIaAf.js +1 -0
  308. package/dist/assets/z80-Dt0hdUwP.js +1 -0
  309. package/dist/index.html +105 -103
  310. package/package.json +1 -1
  311. package/src/components/data-table/charts/lazy-chart.tsx +2 -0
  312. package/src/components/data-table/column-summary/column-summary.tsx +1 -0
  313. package/src/components/datasources/column-preview.tsx +1 -0
  314. package/src/components/editor/Output.tsx +2 -0
  315. package/src/components/editor/actions/useCellActionButton.tsx +38 -29
  316. package/src/components/editor/cell/code/cell-editor.tsx +9 -0
  317. package/src/components/editor/chrome/panels/context-aware-panel/context-aware-panel.tsx +6 -0
  318. package/src/components/editor/chrome/wrapper/__tests__/utils.test.ts +35 -0
  319. package/src/components/editor/chrome/wrapper/app-chrome.tsx +12 -14
  320. package/src/components/editor/chrome/wrapper/utils.ts +5 -1
  321. package/src/components/editor/header/status.tsx +19 -11
  322. package/src/components/editor/renderers/grid-layout/grid-layout.tsx +10 -3
  323. package/src/core/cells/cells.ts +6 -0
  324. package/src/core/cells/utils.ts +1 -0
  325. package/src/core/codemirror/__tests__/setup.test.ts +1 -0
  326. package/src/core/codemirror/cells/state.ts +1 -0
  327. package/src/core/codemirror/extensions.ts +20 -0
  328. package/src/core/codemirror/language/utils.ts +16 -1
  329. package/src/core/codemirror/reactive-references/__tests__/analyzer.test.ts +54 -0
  330. package/src/core/codemirror/reactive-references/analyzer.ts +14 -0
  331. package/src/core/dom/outline.ts +1 -1
  332. package/src/core/hotkeys/hotkeys.ts +8 -0
  333. package/src/css/md.css +4 -0
  334. package/src/plugins/core/sanitize-html.ts +50 -0
  335. package/src/plugins/core/sanitize.ts +3 -49
  336. package/src/plugins/impl/data-explorer/ConnectedDataExplorerComponent.tsx +6 -3
  337. package/src/plugins/impl/vega/__tests__/utils.test.ts +36 -0
  338. package/src/plugins/impl/vega/utils.ts +14 -0
  339. package/src/plugins/impl/vega/vega-component.tsx +6 -7
  340. package/src/plugins/impl/vega/vega.css +1 -1
  341. package/dist/assets/ConnectedDataExplorerComponent-CtWDfp3l.js +0 -1
  342. package/dist/assets/LazyAnyLanguageCodeMirror-Cqo8_z2X.js +0 -2
  343. package/dist/assets/RenderHTML-ncKzTdNN.js +0 -1
  344. package/dist/assets/apl-DtzrFS-s.js +0 -1
  345. package/dist/assets/asciiarmor-CjQ_xP8X.js +0 -1
  346. package/dist/assets/asn1-DzUeDjwC.js +0 -1
  347. package/dist/assets/brainfuck-B05LxEkk.js +0 -1
  348. package/dist/assets/channel-D0o4XAu5.js +0 -1
  349. package/dist/assets/chunk-55IACEB6-D_2W-dFX.js +0 -1
  350. package/dist/assets/classDiagram-2ON5EDUG-De_-Pd1f.js +0 -1
  351. package/dist/assets/classDiagram-v2-WZHVMYZB-cSqorU_0.js +0 -1
  352. package/dist/assets/clojure-CZ5Hrv4K.js +0 -1
  353. package/dist/assets/cmake-CRO8u_BT.js +0 -1
  354. package/dist/assets/cobol-YaQyb1sB.js +0 -1
  355. package/dist/assets/coffeescript-CDe5ZZrJ.js +0 -1
  356. package/dist/assets/command-palette-CQFQWyFs.js +0 -1
  357. package/dist/assets/commonlisp-Bvv3_QVI.js +0 -1
  358. package/dist/assets/context-aware-panel-DScGcWey.js +0 -3
  359. package/dist/assets/crystal-C1rgUhJo.js +0 -1
  360. package/dist/assets/cypher-DVGmFPtB.js +0 -1
  361. package/dist/assets/d-CxyOb1er.js +0 -1
  362. package/dist/assets/diff-Cu1ikL73.js +0 -1
  363. package/dist/assets/dist-Bt3repfY.js +0 -1
  364. package/dist/assets/dist-BxHluyex.js +0 -1
  365. package/dist/assets/dist-C_1SMU54.js +0 -1
  366. package/dist/assets/dist-e72BZHQB.js +0 -1
  367. package/dist/assets/documentation-panel-D5CHwsu6.js +0 -1
  368. package/dist/assets/dtd-BNxHLPn8.js +0 -1
  369. package/dist/assets/dylan-Bk7leKD1.js +0 -1
  370. package/dist/assets/ecl-DFa77eRU.js +0 -1
  371. package/dist/assets/eiffel-DF-wv1kH.js +0 -1
  372. package/dist/assets/elm-DK5nXI96.js +0 -1
  373. package/dist/assets/erlang-BkvzuZi_.js +0 -1
  374. package/dist/assets/factor-BmVitg1M.js +0 -1
  375. package/dist/assets/floating-outline-jCvD7_Ne.js +0 -1
  376. package/dist/assets/form-BEIQJWib.js +0 -2
  377. package/dist/assets/formats-DEgTLsde.js +0 -1
  378. package/dist/assets/forth-R__8Ih6T.js +0 -1
  379. package/dist/assets/fortran-bITPBTLl.js +0 -1
  380. package/dist/assets/gas-BbvsIpHC.js +0 -1
  381. package/dist/assets/gherkin-BfJ790F6.js +0 -1
  382. package/dist/assets/groovy-B9_Esdr4.js +0 -1
  383. package/dist/assets/haskell-DQ_w59wZ.js +0 -1
  384. package/dist/assets/haxe-Bunimo9Q.js +0 -1
  385. package/dist/assets/idl-BJmmgkar.js +0 -1
  386. package/dist/assets/infoDiagram-HS3SLOUP-DwcsyiRx.js +0 -2
  387. package/dist/assets/javascript-Be6GkklL.js +0 -1
  388. package/dist/assets/julia-VrX10QP7.js +0 -1
  389. package/dist/assets/katex-BubCv2pM.js +0 -1
  390. package/dist/assets/kiosk-mode-DWLXbf9i.js +0 -1
  391. package/dist/assets/livescript-QnZkA0KN.js +0 -1
  392. package/dist/assets/logs-panel-Q1OMBsBk.js +0 -1
  393. package/dist/assets/lua-Brlsyz3v.js +0 -1
  394. package/dist/assets/mathematica-CkvSnDCc.js +0 -1
  395. package/dist/assets/mbox-CI3Qi_ZP.js +0 -1
  396. package/dist/assets/mermaid-4DMBBIKO-AlJ6VDlN.js +0 -1
  397. package/dist/assets/mirc-DqiQAE_r.js +0 -1
  398. package/dist/assets/mllike-DhksFVh2.js +0 -1
  399. package/dist/assets/modelica-B9B8svZx.js +0 -1
  400. package/dist/assets/mscgen-Baihg9tB.js +0 -1
  401. package/dist/assets/mumps-CtKrS0yN.js +0 -1
  402. package/dist/assets/nsis-BmnMVrc-.js +0 -1
  403. package/dist/assets/ntriples-CJOExAbO.js +0 -1
  404. package/dist/assets/octave-KQtU50ha.js +0 -1
  405. package/dist/assets/oz-DpNDJdA6.js +0 -1
  406. package/dist/assets/panels-BfLG6GHU.js +0 -1
  407. package/dist/assets/pascal-DL1EmHpV.js +0 -1
  408. package/dist/assets/perl-KY2iZxe6.js +0 -1
  409. package/dist/assets/pig-JbIKR_a4.js +0 -1
  410. package/dist/assets/powershell-gllYeKkx.js +0 -1
  411. package/dist/assets/process-output-BXIvuDcK.js +0 -1
  412. package/dist/assets/properties-DgZAnyYl.js +0 -1
  413. package/dist/assets/protobuf-D2NIlliU.js +0 -1
  414. package/dist/assets/pug-8twC768a.js +0 -1
  415. package/dist/assets/puppet-DTiPvfrj.js +0 -1
  416. package/dist/assets/python-vVnxXYLn.js +0 -1
  417. package/dist/assets/q-Bg6_K_R8.js +0 -1
  418. package/dist/assets/r-Be_cW96e.js +0 -1
  419. package/dist/assets/react-vega-NitEaNxf.js +0 -1
  420. package/dist/assets/rpm-KwuwzD70.js +0 -1
  421. package/dist/assets/ruby-BXYAoUDA.js +0 -1
  422. package/dist/assets/run-page-lC8nyJai.js +0 -1
  423. package/dist/assets/sas-BK_aozmz.js +0 -1
  424. package/dist/assets/scheme-Cj5VR8rH.js +0 -1
  425. package/dist/assets/scratchpad-panel-B1HOh6tu.js +0 -1
  426. package/dist/assets/session-panel-3pPZOei4.js +0 -1
  427. package/dist/assets/shell-DU5g2Hb8.js +0 -1
  428. package/dist/assets/sieve-BjryQhS_.js +0 -1
  429. package/dist/assets/smalltalk-BH2zgl7j.js +0 -1
  430. package/dist/assets/snippets-panel-DVBJJk2i.js +0 -1
  431. package/dist/assets/sparql-BnlpNu1I.js +0 -1
  432. package/dist/assets/stateDiagram-v2-4FDKWEC3-D8tWrUpT.js +0 -1
  433. package/dist/assets/stylus-DKVDlNCy.js +0 -1
  434. package/dist/assets/swift-CvmEquCn.js +0 -1
  435. package/dist/assets/tcl-5gADzJuk.js +0 -1
  436. package/dist/assets/textile-DescY3Xo.js +0 -1
  437. package/dist/assets/toml-Cl1-FJpB.js +0 -1
  438. package/dist/assets/troff-DtRKKBXs.js +0 -1
  439. package/dist/assets/ttcn-CH218t1P.js +0 -1
  440. package/dist/assets/ttcn-cfg-D0A41keJ.js +0 -1
  441. package/dist/assets/turtle-BynyIhI_.js +0 -1
  442. package/dist/assets/useAddCell-ErFmQedu.js +0 -1
  443. package/dist/assets/useCellActionButton-DFS0hpsU.js +0 -1
  444. package/dist/assets/useEventListener-BGihH8bs.js +0 -1
  445. package/dist/assets/useNotebookActions-CtiT4Mzf.js +0 -1
  446. package/dist/assets/useSplitCell-CZQNZZ7B.js +0 -1
  447. package/dist/assets/vb-C0zeYR2e.js +0 -1
  448. package/dist/assets/vbscript-CTPmjxQY.js +0 -1
  449. package/dist/assets/vega-component-tdJ9PJ9x.js +0 -1
  450. package/dist/assets/velocity-Do0_UbF9.js +0 -1
  451. package/dist/assets/verilog-CNcKfWDg.js +0 -1
  452. package/dist/assets/vhdl-BQbO5X-W.js +0 -1
  453. package/dist/assets/webidl-Cp8jR_0D.js +0 -1
  454. package/dist/assets/xquery-Bak35NR-.js +0 -1
  455. package/dist/assets/yacas-gPkjfySO.js +0 -1
  456. package/dist/assets/z80-D3TsZ0mg.js +0 -1
  457. /package/dist/assets/{ImageComparisonComponent-CKIayHTu.js → ImageComparisonComponent-DvDPDgw3.js} +0 -0
  458. /package/dist/assets/{Inputs-BBPHhEky.js → Inputs-D5kI9GwB.js} +0 -0
  459. /package/dist/assets/{Plot-CRL8IC23.js → Plot-DQQQ-fLA.js} +0 -0
  460. /package/dist/assets/{SSRProvider-CwqN9FWV.js → SSRProvider-DC7ElCZZ.js} +0 -0
  461. /package/dist/assets/{alert-DkRmN0_B.js → alert-OQZHipbB.js} +0 -0
  462. /package/dist/assets/{apl-BgFiXauj.js → apl-CexVE068.js} +0 -0
  463. /package/dist/assets/{array-9XpbrfQ5.js → array-psg969PF.js} +0 -0
  464. /package/dist/assets/{asciiarmor-Bb9bgVRL.js → asciiarmor-DzdXFxI-.js} +0 -0
  465. /package/dist/assets/{asn1-BJZ-nDrD.js → asn1-lKNP6w4p.js} +0 -0
  466. /package/dist/assets/{asterisk-DIMri3P4.js → asterisk-Bjb62jej.js} +0 -0
  467. /package/dist/assets/{blob-DgooIGjS.js → blob-CObhN-9g.js} +0 -0
  468. /package/dist/assets/{brainfuck-JEXXY-xb.js → brainfuck-pTL_9bJ7.js} +0 -0
  469. /package/dist/assets/{bundle.esm-cfPbrCwe.js → bundle.esm-idScn0w0.js} +0 -0
  470. /package/dist/assets/{card-zDTDna9R.js → card-C-c-4jyF.js} +0 -0
  471. /package/dist/assets/{chunk-4F5CHEZ2-Cfs3LZOd.js → chunk-4F5CHEZ2-BGeTOmrq.js} +0 -0
  472. /package/dist/assets/{chunk-B2363JML-BpKywZ9V.js → chunk-B2363JML-Cmh9TPpj.js} +0 -0
  473. /package/dist/assets/{chunk-DR5Q36YT-OB6tC_dd.js → chunk-DR5Q36YT-SM9ZwAOv.js} +0 -0
  474. /package/dist/assets/{chunk-FRFDVMJY-7fBJ5sqD.js → chunk-FRFDVMJY-CUDE-MUX.js} +0 -0
  475. /package/dist/assets/{chunk-PL6DKKU2-BtJAQbOp.js → chunk-PL6DKKU2-DMqBvHTF.js} +0 -0
  476. /package/dist/assets/{chunk-SJTYNZTY-Ci4Tz7lH.js → chunk-SJTYNZTY-C9cwtT3h.js} +0 -0
  477. /package/dist/assets/{chunk-TQ3KTPDO-BRVTYZFE.js → chunk-TQ3KTPDO-CUyT9lNN.js} +0 -0
  478. /package/dist/assets/{chunk-UMXZTB3W-RJlVDk-Z.js → chunk-UMXZTB3W-Bt-_br31.js} +0 -0
  479. /package/dist/assets/{clear-button-CB0HP-a8.js → clear-button-DrIF5o__.js} +0 -0
  480. /package/dist/assets/{click-outside-container-BNVqwewc.js → click-outside-container-CagwJLiG.js} +0 -0
  481. /package/dist/assets/{clike-BqlNPeeg.js → clike-BCxd7pZ9.js} +0 -0
  482. /package/dist/assets/{clojure-DJJhEwde.js → clojure-CPAS-74L.js} +0 -0
  483. /package/dist/assets/{cmake-B0lAo26D.js → cmake-DMONEHtp.js} +0 -0
  484. /package/dist/assets/{cobol-CPAdfgtV.js → cobol-0rQGzjf0.js} +0 -0
  485. /package/dist/assets/{coffeescript-BOB8gS0Z.js → coffeescript-BHNUw4aR.js} +0 -0
  486. /package/dist/assets/{colors-D952IYju.js → colors-WO6MvCS3.js} +0 -0
  487. /package/dist/assets/{common-keywords-15xBKau4.js → common-keywords-D_14jCw0.js} +0 -0
  488. /package/dist/assets/{commonlisp-ju8ecBeu.js → commonlisp-Cjiyl45-.js} +0 -0
  489. /package/dist/assets/{crystal-rVZgODG1.js → crystal-CUMDisY2.js} +0 -0
  490. /package/dist/assets/{css-mQmF00YG.js → css-B6NFOUor.js} +0 -0
  491. /package/dist/assets/{cypher-BKJJTP3h.js → cypher-DcWJtLBw.js} +0 -0
  492. /package/dist/assets/{cytoscape.esm-Dr1GhgW1.js → cytoscape.esm-DuXIsNbY.js} +0 -0
  493. /package/dist/assets/{d-Bo-m8D8s.js → d-CpNp8oDv.js} +0 -0
  494. /package/dist/assets/{defaultLocale-CGfP-Ye3.js → defaultLocale-DK1MWd7f.js} +0 -0
  495. /package/dist/assets/{defaultLocale-CuYNS33t.js → defaultLocale-OkOxlkkM.js} +0 -0
  496. /package/dist/assets/{diff-BxRzIQ-d.js → diff-BCFJsGHX.js} +0 -0
  497. /package/dist/assets/{dist-BUnAm6Ws.js → dist-6FIAeDIu.js} +0 -0
  498. /package/dist/assets/{dist-BpWg9Ixw.js → dist-ASlWkGgG.js} +0 -0
  499. /package/dist/assets/{dist-CSqc_Sgb.js → dist-BR9zyVPH.js} +0 -0
  500. /package/dist/assets/{dist-BXRWfNwi.js → dist-COnmrAVZ.js} +0 -0
  501. /package/dist/assets/{dist-BCD52ijJ.js → dist-CVEvQ1Ex.js} +0 -0
  502. /package/dist/assets/{dist-OYpQaA59.js → dist-CcGcwrUD.js} +0 -0
  503. /package/dist/assets/{dist-CASixOSV.js → dist-CgC048vN.js} +0 -0
  504. /package/dist/assets/{dist-DzY1sWU4.js → dist-ClzRAVN-.js} +0 -0
  505. /package/dist/assets/{dist-BxbVYUpB.js → dist-D9Vhptds.js} +0 -0
  506. /package/dist/assets/{dist-D7ZgydNg.js → dist-DBPtheKQ.js} +0 -0
  507. /package/dist/assets/{dist-DRZEZXzR.js → dist-DbK_4_qo.js} +0 -0
  508. /package/dist/assets/{dist-E_zJdhI2.js → dist-DlTbNRBn.js} +0 -0
  509. /package/dist/assets/{dist-Ba1GjgCU.js → dist-DrceDAhM.js} +0 -0
  510. /package/dist/assets/{dist-CXKsxFgm.js → dist-DxrbvUBv.js} +0 -0
  511. /package/dist/assets/{dist-Dxx6LCxI.js → dist-OxxI-HeS.js} +0 -0
  512. /package/dist/assets/{dist-Cq-hSY2t.js → dist-mxGLXOFm.js} +0 -0
  513. /package/dist/assets/{dist-CazeD6DS.js → dist-sVuk6mkQ.js} +0 -0
  514. /package/dist/assets/{dtd-9_JVIcTk.js → dtd-D7nO7isU.js} +0 -0
  515. /package/dist/assets/{duckdb-keywords-CYQ5DEZJ.js → duckdb-keywords-CSySeB8R.js} +0 -0
  516. /package/dist/assets/{dylan-BnCJT9rR.js → dylan-qEhlQv4l.js} +0 -0
  517. /package/dist/assets/{ebnf-XMH6KY7E.js → ebnf-KJaLpQez.js} +0 -0
  518. /package/dist/assets/{ecl-EHfGJ0nT.js → ecl-cXHEjabG.js} +0 -0
  519. /package/dist/assets/{eiffel-B1ya3rXn.js → eiffel-CUTEIYa-.js} +0 -0
  520. /package/dist/assets/{elm-DTYW1E0x.js → elm-DOfGHeKn.js} +0 -0
  521. /package/dist/assets/{emotion-is-prop-valid.esm-lG8j6oqk.js → emotion-is-prop-valid.esm-D1keIaYa.js} +0 -0
  522. /package/dist/assets/{empty-state-qEnkddw9.js → empty-state-B_US46Us.js} +0 -0
  523. /package/dist/assets/{erlang-Ef5NK4Qi.js → erlang-B5R7Byby.js} +0 -0
  524. /package/dist/assets/{errors-0IrrdfSG.js → errors-Bfogio62.js} +0 -0
  525. /package/dist/assets/{esm-DAVeZ8YU.js → esm-CX-gNDKf.js} +0 -0
  526. /package/dist/assets/{extends-B9D0JO9U.js → extends-DRbCSry7.js} +0 -0
  527. /package/dist/assets/{fcl-DyFJAgkq.js → fcl-Cf241iHu.js} +0 -0
  528. /package/dist/assets/{forth-DlkCTYcI.js → forth-BjV8SV3p.js} +0 -0
  529. /package/dist/assets/{fortran-DwMj_oVI.js → fortran-CvNblcug.js} +0 -0
  530. /package/dist/assets/{gas-JJhY92kb.js → gas-D1YrZZUY.js} +0 -0
  531. /package/dist/assets/{gherkin-DLEuOFao.js → gherkin-CAUl7roi.js} +0 -0
  532. /package/dist/assets/{groovy-C89Qk13G.js → groovy-CnmCDhLm.js} +0 -0
  533. /package/dist/assets/{haskell-C_CbCt6A.js → haskell-qdBb4h_7.js} +0 -0
  534. /package/dist/assets/{haxe-CrpzcVEI.js → haxe-MQhLSFhI.js} +0 -0
  535. /package/dist/assets/{http-ySzAzH5W.js → http-_roNBajA.js} +0 -0
  536. /package/dist/assets/{icons-T5yQRjuT.js → icons-CrUXojcA.js} +0 -0
  537. /package/dist/assets/{idl-B6_fc1en.js → idl-CcZzcWCI.js} +0 -0
  538. /package/dist/assets/{init-DZ5TV86b.js → init-XMA8CWhh.js} +0 -0
  539. /package/dist/assets/{javascript-BaaG-Hd6.js → javascript-hE4QNtKl.js} +0 -0
  540. /package/dist/assets/{julia-DNoFsn7V.js → julia-BjrvvLkp.js} +0 -0
  541. /package/dist/assets/{katex-0Z75JF53.js → katex-rvFxOCU-.js} +0 -0
  542. /package/dist/assets/{kbd-wfpi3NfU.js → kbd-DvKpAc6K.js} +0 -0
  543. /package/dist/assets/{links-CoGM-Inf.js → links-DzgPOFJ-.js} +0 -0
  544. /package/dist/assets/{livescript-DiAZOLn0.js → livescript-B01pNEzu.js} +0 -0
  545. /package/dist/assets/{loro_wasm_bg-C5qfEYzW.js → loro_wasm_bg-CcIcmNa3.js} +0 -0
  546. /package/dist/assets/{lua-CvOqni3z.js → lua-BwfRgSM6.js} +0 -0
  547. /package/dist/assets/{marimo-icons-D5FuIsqO.js → marimo-icons-C_YDiXeg.js} +0 -0
  548. /package/dist/assets/{math-BkqINfbU.js → math-CeGhAAgQ.js} +0 -0
  549. /package/dist/assets/{mathematica-CFRE5rVx.js → mathematica-DLi5eijp.js} +0 -0
  550. /package/dist/assets/{mbox-B9UqFU9M.js → mbox-QweTYWJQ.js} +0 -0
  551. /package/dist/assets/{mirc-CLMssi9M.js → mirc-1J5TZ8Tf.js} +0 -0
  552. /package/dist/assets/{mllike-8SMJwcaT.js → mllike-DRzCrpbj.js} +0 -0
  553. /package/dist/assets/{modelica-yzbXhFaT.js → modelica-GZKavTLw.js} +0 -0
  554. /package/dist/assets/{mscgen-2jiNYYYD.js → mscgen-HMNaCHuy.js} +0 -0
  555. /package/dist/assets/{multi-icon-DpydcgWs.js → multi-icon-DEWnuZs2.js} +0 -0
  556. /package/dist/assets/{mumps-Bf7RyXk9.js → mumps-CzCxfP2m.js} +0 -0
  557. /package/dist/assets/{nginx-Cz_XvoTm.js → nginx-Dfd7l9Sj.js} +0 -0
  558. /package/dist/assets/{node-sql-parser-BRpb-iwO.js → node-sql-parser-BvUFblwL.js} +0 -0
  559. /package/dist/assets/{ntriples-CHdvKQK4.js → ntriples-DT57g_ZF.js} +0 -0
  560. /package/dist/assets/{objectWithoutPropertiesLoose-CboCOq4o.js → objectWithoutPropertiesLoose-DP4vAkvg.js} +0 -0
  561. /package/dist/assets/{octave-pHgy7YQ1.js → octave-CtuTaUjQ.js} +0 -0
  562. /package/dist/assets/{oz-B2RGFHuF.js → oz-BS8LEqKx.js} +0 -0
  563. /package/dist/assets/{panel-context-UZhylPLI.js → panel-context-BN0DQXiK.js} +0 -0
  564. /package/dist/assets/{pascal-CwbVUvc1.js → pascal-Db0ZEHQw.js} +0 -0
  565. /package/dist/assets/{path-MXGY7b8Y.js → path-CkIaQHJO.js} +0 -0
  566. /package/dist/assets/{perl-qu-5ZkuC.js → perl-DgJKzgyz.js} +0 -0
  567. /package/dist/assets/{pig-iG5hc5m3.js → pig-Dk6eYa40.js} +0 -0
  568. /package/dist/assets/{powershell-DVD15WIk.js → powershell-dW0qpS7j.js} +0 -0
  569. /package/dist/assets/{prop-types-C638SUfx.js → prop-types-RrUi-pOT.js} +0 -0
  570. /package/dist/assets/{properties-xtMba4e4.js → properties-oMha4ix2.js} +0 -0
  571. /package/dist/assets/{protobuf-Dpg2VGRe.js → protobuf-CfWJ4EtB.js} +0 -0
  572. /package/dist/assets/{puppet-Dzxmyijv.js → puppet-O2K_n-UM.js} +0 -0
  573. /package/dist/assets/{python-zk1sCR2K.js → python-qMKsSr4L.js} +0 -0
  574. /package/dist/assets/{q-kox9cJcs.js → q-ewn8d81Q.js} +0 -0
  575. /package/dist/assets/{r-DyYzVzIO.js → r-CqF-AjDv.js} +0 -0
  576. /package/dist/assets/{range-ClqUI25v.js → range-DNqFcYmr.js} +0 -0
  577. /package/dist/assets/{react-resizable-panels.browser.esm-DTuXFbj-.js → react-resizable-panels.browser.esm-DDRqG5ui.js} +0 -0
  578. /package/dist/assets/{request-registry-C4HbFS_V.js → request-registry-B-7cIM_I.js} +0 -0
  579. /package/dist/assets/{requests-C_ra5-07.js → requests-CP6q3-4O.js} +0 -0
  580. /package/dist/assets/{rpm-alFc50xb.js → rpm-BqLq138P.js} +0 -0
  581. /package/dist/assets/{ruby-DkQm_WRq.js → ruby-CQfbO3YY.js} +0 -0
  582. /package/dist/assets/{sas-DGSI29of.js → sas-BmpgVn6Q.js} +0 -0
  583. /package/dist/assets/{scheme-rBV9lbLs.js → scheme-rgyDg_wq.js} +0 -0
  584. /package/dist/assets/{shell-cLHcJFI_.js → shell-Dndk6Ld6.js} +0 -0
  585. /package/dist/assets/{sieve-DqVMcV-u.js → sieve-bGgktpLX.js} +0 -0
  586. /package/dist/assets/{simple-mode-XUC_EnZg.js → simple-mode-oMMOWqWz.js} +0 -0
  587. /package/dist/assets/{smalltalk-C-I-W4Ke.js → smalltalk-CU43LrKS.js} +0 -0
  588. /package/dist/assets/{solr-BAO4N63o.js → solr-CJeCgAfj.js} +0 -0
  589. /package/dist/assets/{sparql-kL9tmY4H.js → sparql-BycKC3X4.js} +0 -0
  590. /package/dist/assets/{spreadsheet-DWqd5foV.js → spreadsheet-BYYvgLKe.js} +0 -0
  591. /package/dist/assets/{sql-RBdzBYsM.js → sql-B5I6FC3m.js} +0 -0
  592. /package/dist/assets/{src-BnrQkOKh.js → src-CW27-Kjl.js} +0 -0
  593. /package/dist/assets/{stylus-Bhdrsm25.js → stylus-CePwhvgW.js} +0 -0
  594. /package/dist/assets/{swift-BnlacIgv.js → swift-CfgglXjR.js} +0 -0
  595. /package/dist/assets/{table-CKtrITeZ.js → table-BhH-Mm8O.js} +0 -0
  596. /package/dist/assets/{tcl-B27COR2l.js → tcl-D_gYSBm0.js} +0 -0
  597. /package/dist/assets/{textile-B6TglpCZ.js → textile-BEvFU9wV.js} +0 -0
  598. /package/dist/assets/{tiddlywiki-BsHUDwie.js → tiddlywiki-hmNzZkq6.js} +0 -0
  599. /package/dist/assets/{tiki-ZqBe4Kjv.js → tiki-BL1SzuSx.js} +0 -0
  600. /package/dist/assets/{timer-hW4GGuR0.js → timer-CPT_vXom.js} +0 -0
  601. /package/dist/assets/{toml-BsWxQYgm.js → toml-DGJRpV2e.js} +0 -0
  602. /package/dist/assets/{treemap-BY_mNGmB.js → treemap-Cf5pgJDk.js} +0 -0
  603. /package/dist/assets/{troff-BWLanNR_.js → troff-CUlohIux.js} +0 -0
  604. /package/dist/assets/{ttcn-cfg-CjyOoZVj.js → ttcn-cfg-DCxdE-sj.js} +0 -0
  605. /package/dist/assets/{ttcn-D0YGDh5r.js → ttcn-nuQ3wCdy.js} +0 -0
  606. /package/dist/assets/{turtle-Cvp2UT5f.js → turtle-B2N96QpC.js} +0 -0
  607. /package/dist/assets/{types-DBNA0l6L.js → types-BfP_kuAY.js} +0 -0
  608. /package/dist/assets/{useAsyncData-a8f2Q_nk.js → useAsyncData-D-4ifFXh.js} +0 -0
  609. /package/dist/assets/{useDebounce-DwTO_rGp.js → useDebounce-B0dx2Gp0.js} +0 -0
  610. /package/dist/assets/{useDeepCompareMemoize-BEmJ3M7I.js → useDeepCompareMemoize-yyiB9aJX.js} +0 -0
  611. /package/dist/assets/{vb-BhVsVWuo.js → vb-CBiIL_zx.js} +0 -0
  612. /package/dist/assets/{vbscript-DuoiXXmR.js → vbscript-B3Y69Iw0.js} +0 -0
  613. /package/dist/assets/{velocity-BKH9W8hw.js → velocity-B5BPA7FX.js} +0 -0
  614. /package/dist/assets/{verilog-CZQD9eTL.js → verilog-BwmYR8E3.js} +0 -0
  615. /package/dist/assets/{vhdl-D4SaV93K.js → vhdl-VXFnDy2U.js} +0 -0
  616. /package/dist/assets/{web-vitals-CpL_P378.js → web-vitals-BaMazlva.js} +0 -0
  617. /package/dist/assets/{webidl-CNBgKfWl.js → webidl-Bcmf9JWd.js} +0 -0
  618. /package/dist/assets/{ws-IPvpFhTG.js → ws-CBdPISJL.js} +0 -0
  619. /package/dist/assets/{xquery-BvBQzy0q.js → xquery-8pWKOyFY.js} +0 -0
  620. /package/dist/assets/{yacas-C9IPX04z.js → yacas-BFcwo3Cx.js} +0 -0
  621. /package/dist/assets/{z80-BZqsoEqX.js → z80-t3SBb7Lt.js} +0 -0
@@ -41,7 +41,10 @@ import { hasOnlyOneCellAtom, useCellActions } from "@/core/cells/cells";
41
41
  import { type CellId, SETUP_CELL_ID } from "@/core/cells/ids";
42
42
  import type { CellData } from "@/core/cells/types";
43
43
  import { formatEditorViews } from "@/core/codemirror/format";
44
- import { toggleToLanguage } from "@/core/codemirror/language/commands";
44
+ import {
45
+ getCurrentLanguageAdapter,
46
+ toggleToLanguage,
47
+ } from "@/core/codemirror/language/commands";
45
48
  import { switchLanguage } from "@/core/codemirror/language/extension";
46
49
  import { MARKDOWN_INITIAL_HIDE_CODE } from "@/core/codemirror/language/languages/markdown";
47
50
  import {
@@ -235,35 +238,41 @@ export function useCellActionButtons({ cell, closePopover }: Props) {
235
238
  },
236
239
  hidden: isSetupCell,
237
240
  },
238
- {
239
- icon: <DatabaseIcon size={13} strokeWidth={1.5} />,
240
- label: "Convert to SQL",
241
- handle: () => {
242
- const editorView = getEditorView();
243
- if (!editorView) {
244
- return;
241
+ // We need to check this here because the user may have toggled the language
242
+ getCurrentLanguageAdapter(getEditorView()) === "sql"
243
+ ? {
244
+ icon: <PythonIcon />,
245
+ label: "View as Python",
246
+ hotkey: "cell.viewAsSQL",
247
+ handle: () => {
248
+ const editorView = getEditorView();
249
+ if (!editorView) {
250
+ return;
251
+ }
252
+ toggleToLanguage(editorView, "python", { force: true });
253
+ },
254
+ hidden: isSetupCell,
245
255
  }
246
- maybeAddMarimoImport({ autoInstantiate, createNewCell: createCell });
247
- switchLanguage(editorView, {
248
- language: "sql",
249
- keepCodeAsIs: false,
250
- });
251
- },
252
- hidden: isSetupCell,
253
- },
254
- {
255
- icon: <PythonIcon />,
256
- label: "Toggle as Python",
257
- handle: () => {
258
- const editorView = getEditorView();
259
- if (!editorView) {
260
- return;
261
- }
262
- maybeAddMarimoImport({ autoInstantiate, createNewCell: createCell });
263
- toggleToLanguage(editorView, "python", { force: true });
264
- },
265
- hidden: isSetupCell,
266
- },
256
+ : {
257
+ icon: <DatabaseIcon size={13} strokeWidth={1.5} />,
258
+ label: "Convert to SQL",
259
+ hotkey: "cell.viewAsSQL",
260
+ handle: () => {
261
+ const editorView = getEditorView();
262
+ if (!editorView) {
263
+ return;
264
+ }
265
+ maybeAddMarimoImport({
266
+ autoInstantiate,
267
+ createNewCell: createCell,
268
+ });
269
+ switchLanguage(editorView, {
270
+ language: "sql",
271
+ keepCodeAsIs: false,
272
+ });
273
+ },
274
+ hidden: isSetupCell,
275
+ },
267
276
  ],
268
277
 
269
278
  // Movement
@@ -163,6 +163,13 @@ const CellEditorInternal = ({
163
163
  }
164
164
  });
165
165
 
166
+ const afterToggleSQL = useEvent(() => {
167
+ maybeAddMarimoImport({
168
+ autoInstantiate,
169
+ createNewCell: cellActions.createNewCell,
170
+ });
171
+ });
172
+
166
173
  const aiEnabled = isAiEnabled(userConfig);
167
174
 
168
175
  const extensions = useMemo(() => {
@@ -173,6 +180,7 @@ const CellEditorInternal = ({
173
180
  cellActions: {
174
181
  ...cellActions,
175
182
  afterToggleMarkdown,
183
+ afterToggleSQL,
176
184
  onRun: handleRunCell,
177
185
  deleteCell: handleDelete,
178
186
  saveNotebook: saveOrNameNotebook,
@@ -267,6 +275,7 @@ const CellEditorInternal = ({
267
275
  handleRunCell,
268
276
  setAiCompletionCell,
269
277
  afterToggleMarkdown,
278
+ afterToggleSQL,
270
279
  setLanguageAdapter,
271
280
  showHiddenCode,
272
281
  saveOrNameNotebook,
@@ -5,6 +5,7 @@ import { useAtom } from "jotai";
5
5
  import { CrosshairIcon, PinIcon, PinOffIcon, XIcon } from "lucide-react";
6
6
  import type { PropsWithChildren } from "react";
7
7
  import { Panel, PanelResizeHandle } from "react-resizable-panels";
8
+ import { raf2 } from "@/components/editor/navigation/focus-utils";
8
9
  import { Button } from "@/components/ui/button";
9
10
  import { Toggle } from "@/components/ui/toggle";
10
11
  import { Tooltip } from "@/components/ui/tooltip";
@@ -151,6 +152,11 @@ const ResizableComponent = ({ children }: ResizableComponentProps) => {
151
152
  startingWidth: 400,
152
153
  minWidth: 300,
153
154
  maxWidth: 1500,
155
+ onResize: () => {
156
+ raf2(() => {
157
+ window.dispatchEvent(new Event("resize"));
158
+ });
159
+ },
154
160
  });
155
161
 
156
162
  return (
@@ -0,0 +1,35 @@
1
+ /* Copyright 2026 Marimo. All rights reserved. */
2
+
3
+ import { describe, expect, it, vi } from "vitest";
4
+ import { handleDragging } from "../utils";
5
+
6
+ describe("handleDragging", () => {
7
+ it("should dispatch a resize event after dragging ends", async () => {
8
+ const listener = vi.fn();
9
+ window.addEventListener("resize", listener);
10
+
11
+ handleDragging(false);
12
+
13
+ // raf2: wait two animation frames
14
+ await new Promise((resolve) => requestAnimationFrame(resolve));
15
+ await new Promise((resolve) => requestAnimationFrame(resolve));
16
+
17
+ expect(listener).toHaveBeenCalledTimes(1);
18
+
19
+ window.removeEventListener("resize", listener);
20
+ });
21
+
22
+ it("should not dispatch a resize event while dragging", async () => {
23
+ const listener = vi.fn();
24
+ window.addEventListener("resize", listener);
25
+
26
+ handleDragging(true);
27
+
28
+ await new Promise((resolve) => requestAnimationFrame(resolve));
29
+ await new Promise((resolve) => requestAnimationFrame(resolve));
30
+
31
+ expect(listener).not.toHaveBeenCalled();
32
+
33
+ window.removeEventListener("resize", listener);
34
+ });
35
+ });
@@ -17,6 +17,7 @@ import "./app-chrome.css";
17
17
  import { TooltipProvider } from "@radix-ui/react-tooltip";
18
18
  import { useAtom, useAtomValue } from "jotai";
19
19
  import { XIcon } from "lucide-react";
20
+ import useEvent from "react-use-event-hook";
20
21
  import { Button } from "@/components/ui/button";
21
22
  import { ReorderableList } from "@/components/ui/reorderable-list";
22
23
  import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs";
@@ -26,6 +27,7 @@ import { capabilitiesAtom } from "@/core/config/capabilities";
26
27
  import { getFeatureFlag } from "@/core/config/feature-flag";
27
28
  import { cn } from "@/utils/cn";
28
29
  import { ErrorBoundary } from "../../boundary/ErrorBoundary";
30
+ import { raf2 } from "../../navigation/focus-utils";
29
31
  import { ContextAwarePanel } from "../panels/context-aware-panel/context-aware-panel";
30
32
  import { PanelSectionProvider } from "../panels/panel-context";
31
33
  import { panelLayoutAtom, useChromeActions, useChromeState } from "../state";
@@ -147,6 +149,14 @@ export const AppChrome: React.FC<PropsWithChildren> = ({ children }) => {
147
149
  });
148
150
  }, [panelLayout.sidebar, capabilities]);
149
151
 
152
+ const emitResizeEvent = useEvent(() => {
153
+ // HACK: Unfortunately, we have to do this twice to make sure the
154
+ // panel is fully expanded before we dispatch the resize event
155
+ raf2(() => {
156
+ window.dispatchEvent(new Event("resize"));
157
+ });
158
+ });
159
+
150
160
  // sync sidebar
151
161
  useEffect(() => {
152
162
  if (!sidebarRef.current) {
@@ -162,13 +172,7 @@ export const AppChrome: React.FC<PropsWithChildren> = ({ children }) => {
162
172
  }
163
173
 
164
174
  // Dispatch a resize event so widgets know to resize
165
- requestAnimationFrame(() => {
166
- // HACK: Unfortunately, we have to do this twice to make sure it the
167
- // panel is fully expanded before we dispatch the resize event
168
- requestAnimationFrame(() => {
169
- window.dispatchEvent(new Event("resize"));
170
- });
171
- });
175
+ emitResizeEvent();
172
176
  }, [isSidebarOpen]);
173
177
 
174
178
  // sync panel
@@ -186,13 +190,7 @@ export const AppChrome: React.FC<PropsWithChildren> = ({ children }) => {
186
190
  }
187
191
 
188
192
  // Dispatch a resize event so widgets know to resize
189
- requestAnimationFrame(() => {
190
- // HACK: Unfortunately, we have to do this twice to make sure it the
191
- // panel is fully expanded before we dispatch the resize event
192
- requestAnimationFrame(() => {
193
- window.dispatchEvent(new Event("resize"));
194
- });
195
- });
193
+ emitResizeEvent();
196
194
  }, [isDeveloperPanelOpen]);
197
195
 
198
196
  // Auto-correct developer panel selection when the selected tab is no longer available
@@ -1,8 +1,12 @@
1
1
  /* Copyright 2026 Marimo. All rights reserved. */
2
2
 
3
+ import { raf2 } from "../../navigation/focus-utils";
4
+
3
5
  export function handleDragging(isDragging: boolean) {
4
6
  if (!isDragging) {
5
7
  // Once the user is done dragging, dispatch a resize event
6
- window.dispatchEvent(new Event("resize"));
8
+ raf2(() => {
9
+ window.dispatchEvent(new Event("resize"));
10
+ });
7
11
  }
8
12
  }
@@ -5,6 +5,7 @@ import { HourglassIcon, LockIcon, UnlinkIcon } from "lucide-react";
5
5
  import React from "react";
6
6
  import { Tooltip } from "@/components/ui/tooltip";
7
7
  import { notebookScrollToRunning } from "@/core/cells/actions";
8
+ import { onlyScratchpadIsRunningAtom } from "@/core/cells/cells";
8
9
  import { viewStateAtom } from "@/core/mode";
9
10
  import { type ConnectionStatus, WebSocketState } from "@/core/websocket/types";
10
11
  import { cn } from "@/utils/cn";
@@ -52,17 +53,24 @@ const LockedIcon = () => (
52
53
  </Tooltip>
53
54
  );
54
55
 
55
- const RunningIcon = () => (
56
- <Tooltip content="Jump to running cell" side="right">
57
- <div
58
- className={topLeftStatus}
59
- data-testid="loading-indicator"
60
- onClick={notebookScrollToRunning}
61
- >
62
- <HourglassIcon className="running-app-icon" size={30} strokeWidth={1} />
63
- </div>
64
- </Tooltip>
65
- );
56
+ const RunningIcon = () => {
57
+ const scratchpadOnly = useAtomValue(onlyScratchpadIsRunningAtom);
58
+ const tooltip = scratchpadOnly
59
+ ? "Scratchpad is running"
60
+ : "Jump to running cell";
61
+
62
+ return (
63
+ <Tooltip content={tooltip} side="right">
64
+ <div
65
+ className={topLeftStatus}
66
+ data-testid="loading-indicator"
67
+ onClick={scratchpadOnly ? undefined : notebookScrollToRunning}
68
+ >
69
+ <HourglassIcon className="running-app-icon" size={30} strokeWidth={1} />
70
+ </div>
71
+ </Tooltip>
72
+ );
73
+ };
66
74
 
67
75
  const NoiseBackground = () => (
68
76
  <>
@@ -158,12 +158,19 @@ export const GridLayoutRenderer: React.FC<Props> = ({
158
158
  compactType={null}
159
159
  preventCollision={true}
160
160
  rowHeight={layout.rowHeight}
161
- onLayoutChange={(cellLayouts) =>
161
+ onLayoutChange={(cellLayouts) => {
162
+ // Don't update state in read mode — the layout is static and
163
+ // updating triggers a re-render cycle that causes an infinite loop
164
+ // (React error https://react.dev/errors/185 Maximum update depth exceeded).
165
+ // https://github.com/marimo-team/marimo/issues/8644
166
+ if (isReading) {
167
+ return;
168
+ }
162
169
  setLayout({
163
170
  ...layout,
164
171
  cells: cellLayouts,
165
- })
166
- }
172
+ });
173
+ }}
167
174
  droppingItem={
168
175
  droppingItem
169
176
  ? {
@@ -1640,6 +1640,12 @@ export const cellsRuntimeAtom = atom((get) => get(notebookAtom).cellRuntime);
1640
1640
  export const notebookIsRunningAtom = atom((get) =>
1641
1641
  notebookIsRunning(get(notebookAtom)),
1642
1642
  );
1643
+ export const onlyScratchpadIsRunningAtom = atom((get) => {
1644
+ const { cellRuntime } = get(notebookAtom);
1645
+ return Object.entries(cellRuntime).every(
1646
+ ([id, rt]) => rt.status !== "running" || id === SCRATCH_CELL_ID,
1647
+ );
1648
+ });
1643
1649
  export const notebookQueuedOrRunningCountAtom = atom((get) =>
1644
1650
  notebookQueueOrRunningCount(get(notebookAtom)),
1645
1651
  );
@@ -11,6 +11,7 @@ export function notebookIsRunning(state: NotebookState) {
11
11
  (cell) => cell.status === "running",
12
12
  );
13
13
  }
14
+
14
15
  export function notebookQueueOrRunningCount(state: NotebookState) {
15
16
  return Object.values(state.cellRuntime).filter(
16
17
  (cell) => cell.status === "running" || cell.status === "queued",
@@ -45,6 +45,7 @@ function getOpts() {
45
45
  onRun: namedFunction("onRun"),
46
46
  deleteCell: namedFunction("deleteCell"),
47
47
  afterToggleMarkdown: namedFunction("afterToggleMarkdown"),
48
+ afterToggleSQL: namedFunction("afterToggleSQL"),
48
49
  } as unknown as CodemirrorCellActions,
49
50
  completionConfig: {
50
51
  activate_on_typing: false,
@@ -11,6 +11,7 @@ export interface CodemirrorCellActions extends CellActions {
11
11
  onRun: () => void;
12
12
  deleteCell: () => void;
13
13
  afterToggleMarkdown: () => void;
14
+ afterToggleSQL: () => void;
14
15
  saveNotebook: () => void;
15
16
  }
16
17
 
@@ -42,6 +42,26 @@ export function formatKeymapExtension(hotkeys: HotkeyProvider) {
42
42
  actions.afterToggleMarkdown();
43
43
  }
44
44
 
45
+ return response !== false;
46
+ },
47
+ },
48
+ {
49
+ key: hotkeys.getHotkey("cell.viewAsSQL").key,
50
+ preventDefault: true,
51
+ run: (ev) => {
52
+ const currentLanguage = getCurrentLanguageAdapter(ev);
53
+ const destinationLanguage =
54
+ currentLanguage === "sql" ? "python" : "sql";
55
+
56
+ const response = toggleToLanguage(ev, destinationLanguage, {
57
+ force: true,
58
+ });
59
+
60
+ if (response === "sql") {
61
+ const actions = ev.state.facet(cellActionsState);
62
+ actions.afterToggleSQL();
63
+ }
64
+
45
65
  return response !== false;
46
66
  },
47
67
  },
@@ -3,7 +3,11 @@
3
3
  import type { EditorState } from "@codemirror/state";
4
4
  import type { EditorView } from "@codemirror/view";
5
5
  import { replaceEditorContent } from "../replace-editor-content";
6
- import { languageAdapterState } from "./extension";
6
+ import {
7
+ languageAdapterFromCode,
8
+ languageAdapterState,
9
+ switchLanguage,
10
+ } from "./extension";
7
11
  import { languageMetadataField } from "./metadata";
8
12
 
9
13
  /**
@@ -35,6 +39,17 @@ export function updateEditorCodeFromPython(
35
39
  editor: EditorView,
36
40
  pythonCode: string,
37
41
  ): string {
42
+ const currentAdapter = editor.state.field(languageAdapterState);
43
+ const correctAdapter = languageAdapterFromCode(pythonCode);
44
+
45
+ // If the language type changed (e.g., markdown → python), switch adapters
46
+ if (correctAdapter.type !== currentAdapter.type) {
47
+ switchLanguage(editor, {
48
+ language: correctAdapter.type,
49
+ keepCodeAsIs: true,
50
+ });
51
+ }
52
+
38
53
  const languageAdapter = editor.state.field(languageAdapterState);
39
54
  const [code] = languageAdapter.transformIn(pythonCode);
40
55
  // Use replaceEditorContent which preserves cursor position when focused
@@ -1115,6 +1115,60 @@ class Foo:
1115
1115
  `);
1116
1116
  });
1117
1117
 
1118
+ test("should not highlight attribute access matching a for-loop variable", () => {
1119
+ // When `tool` is used as a for-loop variable, `mcp.tool` (attribute access)
1120
+ // should NOT have `tool` highlighted — it's a property, not a variable reference.
1121
+ expect(
1122
+ runHighlight(
1123
+ ["mcp", "client"],
1124
+ `
1125
+ @mcp.tool
1126
+ def roll_dice():
1127
+ pass
1128
+
1129
+ async with client:
1130
+ for tool in await client.list_tools():
1131
+ print(tool)
1132
+ `,
1133
+ ),
1134
+ ).toMatchInlineSnapshot(`
1135
+ "
1136
+ @mcp.tool
1137
+ ^^^
1138
+ def roll_dice():
1139
+ pass
1140
+
1141
+ async with client:
1142
+ ^^^^^^
1143
+ for tool in await client.list_tools():
1144
+ ^^^^^^
1145
+ print(tool)
1146
+ "
1147
+ `);
1148
+ });
1149
+
1150
+ test("should not highlight property name matching a global variable", () => {
1151
+ // `tool` is a global variable, but `mcp.tool` should not highlight `tool`
1152
+ // because it's a property access, not a variable reference.
1153
+ expect(
1154
+ runHighlight(
1155
+ ["mcp", "tool"],
1156
+ `
1157
+ @mcp.tool
1158
+ def roll_dice():
1159
+ pass
1160
+ `,
1161
+ ),
1162
+ ).toMatchInlineSnapshot(`
1163
+ "
1164
+ @mcp.tool
1165
+ ^^^
1166
+ def roll_dice():
1167
+ pass
1168
+ "
1169
+ `);
1170
+ });
1171
+
1118
1172
  test("class property self-reference", () => {
1119
1173
  expect(
1120
1174
  runHighlight(
@@ -462,6 +462,7 @@ export function findReactiveVariables(options: {
462
462
  ): boolean {
463
463
  return (
464
464
  allVariableNames.has(varName) &&
465
+ !isPropertyAccess(cursor) &&
465
466
  !isKeywordArgumentName(cursor) &&
466
467
  !isAssignmentTarget(cursor)
467
468
  );
@@ -529,6 +530,19 @@ function isAssignmentTarget(cursor: TreeCursor): boolean {
529
530
  return false;
530
531
  }
531
532
 
533
+ /** Checks whether a `VariableName` is a property access (e.g. `tool` in `mcp.tool`). */
534
+ function isPropertyAccess(cursor: TreeCursor): boolean {
535
+ // Check if the previous sibling is a "." node, which means this
536
+ // VariableName is a property access rather than a standalone variable.
537
+ // This handles both MemberExpression (e.g. `obj.attr`) and Decorator
538
+ // (e.g. `@mcp.tool`) where the parser emits flat sibling nodes.
539
+ const temp = cursor.node.cursor();
540
+ if (temp.prevSibling() && temp.name === ".") {
541
+ return true;
542
+ }
543
+ return false;
544
+ }
545
+
532
546
  /**
533
547
  * Checks if the syntax tree contains any syntax errors.
534
548
  * If there are errors, we shouldn't show reactive variable highlighting.
@@ -1,6 +1,6 @@
1
1
  /* Copyright 2026 Marimo. All rights reserved. */
2
2
 
3
- import { sanitizeHtml } from "@/plugins/core/sanitize";
3
+ import { sanitizeHtml } from "@/plugins/core/sanitize-html";
4
4
  import { invariant } from "@/utils/invariant";
5
5
  import { Logger } from "@/utils/Logger";
6
6
  import type { Outline, OutlineItem } from "../cells/outline";
@@ -142,6 +142,14 @@ const DEFAULT_HOT_KEY = {
142
142
  group: "Editing",
143
143
  key: "Mod-Shift-m",
144
144
  },
145
+ "cell.viewAsSQL": {
146
+ name: "Toggle SQL",
147
+ group: "Editing",
148
+ key: {
149
+ windows: "Alt-Shift-l",
150
+ main: "Mod-Shift-l",
151
+ },
152
+ },
145
153
  "cell.complete": {
146
154
  name: "Code completion",
147
155
  group: "Editing",
package/src/css/md.css CHANGED
@@ -41,6 +41,10 @@
41
41
  font-family: var(--heading-font);
42
42
  }
43
43
 
44
+ .markdown hr {
45
+ margin-block: 0.5rem;
46
+ }
47
+
44
48
  .markdown a {
45
49
  cursor: pointer;
46
50
  text-decoration: inherit;
@@ -0,0 +1,50 @@
1
+ /* Copyright 2026 Marimo. All rights reserved. */
2
+ import DOMPurify, { type Config } from "dompurify";
3
+
4
+ // preserve target=_blank https://github.com/cure53/DOMPurify/issues/317#issuecomment-912474068
5
+ const TEMPORARY_ATTRIBUTE = "data-temp-href-target";
6
+ DOMPurify.addHook("beforeSanitizeAttributes", (node) => {
7
+ if (node.tagName === "A") {
8
+ if (!node.hasAttribute("target")) {
9
+ node.setAttribute("target", "_self");
10
+ }
11
+
12
+ if (node.hasAttribute("target")) {
13
+ node.setAttribute(TEMPORARY_ATTRIBUTE, node.getAttribute("target") || "");
14
+ }
15
+ }
16
+ });
17
+
18
+ DOMPurify.addHook("afterSanitizeAttributes", (node) => {
19
+ if (node.tagName === "A" && node.hasAttribute(TEMPORARY_ATTRIBUTE)) {
20
+ node.setAttribute("target", node.getAttribute(TEMPORARY_ATTRIBUTE) || "");
21
+ node.removeAttribute(TEMPORARY_ATTRIBUTE);
22
+ if (node.getAttribute("target") === "_blank") {
23
+ node.setAttribute("rel", "noopener noreferrer");
24
+ }
25
+ }
26
+ });
27
+
28
+ /**
29
+ * This removes script tags, form tags, iframe tags, and other potentially dangerous tags
30
+ */
31
+ export function sanitizeHtml(html: string) {
32
+ const sanitizationOptions: Config = {
33
+ // Default to permit HTML, SVG and MathML, this limits to HTML only
34
+ USE_PROFILES: { html: true, svg: true, mathMl: true },
35
+ // Allow SVG <use> elements and their href attributes, which are needed
36
+ // for SVGs that reference <defs> (e.g., Matplotlib SVG output).
37
+ ADD_TAGS: ["use"],
38
+ ADD_ATTR: ["href", "xlink:href"],
39
+ // glue elements like style, script or others to document.body and prevent unintuitive browser behavior in several edge-cases
40
+ FORCE_BODY: true,
41
+ CUSTOM_ELEMENT_HANDLING: {
42
+ tagNameCheck: /^(marimo-[A-Za-z][\w-]*|iconify-icon)$/,
43
+ attributeNameCheck: /^[A-Za-z][\w-]*$/,
44
+ },
45
+ // This flag means we should sanitize such that is it safe for XML,
46
+ // but this is only used for HTML content.
47
+ SAFE_FOR_XML: !html.includes("marimo-mermaid"),
48
+ };
49
+ return DOMPurify.sanitize(html, sanitizationOptions);
50
+ }
@@ -1,10 +1,12 @@
1
1
  /* Copyright 2026 Marimo. All rights reserved. */
2
- import DOMPurify, { type Config } from "dompurify";
3
2
  import { atom, useAtomValue } from "jotai";
4
3
  import { hasRunAnyCellAtom } from "@/components/editor/cell/useRunCells";
5
4
  import { autoInstantiateAtom } from "@/core/config/config";
6
5
  import { getInitialAppMode } from "@/core/mode";
7
6
 
7
+ // Re-export so existing consumers don't break.
8
+ export { sanitizeHtml } from "./sanitize-html";
9
+
8
10
  /**
9
11
  * Whether to sanitize the html.
10
12
  * When running as an app or with auto_instantiate enabled
@@ -42,51 +44,3 @@ const sanitizeHtmlAtom = atom<boolean>((get) => {
42
44
  export function useSanitizeHtml() {
43
45
  return useAtomValue(sanitizeHtmlAtom);
44
46
  }
45
-
46
- // preserve target=_blank https://github.com/cure53/DOMPurify/issues/317#issuecomment-912474068
47
- const TEMPORARY_ATTRIBUTE = "data-temp-href-target";
48
- DOMPurify.addHook("beforeSanitizeAttributes", (node) => {
49
- if (node.tagName === "A") {
50
- if (!node.hasAttribute("target")) {
51
- node.setAttribute("target", "_self");
52
- }
53
-
54
- if (node.hasAttribute("target")) {
55
- node.setAttribute(TEMPORARY_ATTRIBUTE, node.getAttribute("target") || "");
56
- }
57
- }
58
- });
59
-
60
- DOMPurify.addHook("afterSanitizeAttributes", (node) => {
61
- if (node.tagName === "A" && node.hasAttribute(TEMPORARY_ATTRIBUTE)) {
62
- node.setAttribute("target", node.getAttribute(TEMPORARY_ATTRIBUTE) || "");
63
- node.removeAttribute(TEMPORARY_ATTRIBUTE);
64
- if (node.getAttribute("target") === "_blank") {
65
- node.setAttribute("rel", "noopener noreferrer");
66
- }
67
- }
68
- });
69
-
70
- /**
71
- * This removes script tags, form tags, iframe tags, and other potentially dangerous tags
72
- */
73
- export function sanitizeHtml(html: string) {
74
- const sanitizationOptions: Config = {
75
- // Default to permit HTML, SVG and MathML, this limits to HTML only
76
- USE_PROFILES: { html: true, svg: true, mathMl: true },
77
- // Allow SVG <use> elements and their href attributes, which are needed
78
- // for SVGs that reference <defs> (e.g., Matplotlib SVG output).
79
- ADD_TAGS: ["use"],
80
- ADD_ATTR: ["href", "xlink:href"],
81
- // glue elements like style, script or others to document.body and prevent unintuitive browser behavior in several edge-cases
82
- FORCE_BODY: true,
83
- CUSTOM_ELEMENT_HANDLING: {
84
- tagNameCheck: /^(marimo-[A-Za-z][\w-]*|iconify-icon)$/,
85
- attributeNameCheck: /^[A-Za-z][\w-]*$/,
86
- },
87
- // This flag means we should sanitize such that is it safe for XML,
88
- // but this is only used for HTML content.
89
- SAFE_FOR_XML: !html.includes("marimo-mermaid"),
90
- };
91
- return DOMPurify.sanitize(html, sanitizationOptions);
92
- }